Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    119

    [VB6] Compatibilità Win98 - Error:"Type Mismatch"

    Salve,

    ho il seguente problema:
    Ho realizzato una piccola applicazione in vb6 (con windows XP), perfettamente funzionante in win Xp, ma ho la necessità di installarla su un pc molto vecchio in cui è presente windows 98, e al massimo regge windows 2000.

    L'applicazione però non gira nè su win98 nè su win2k, l'errore che si presenta immediatamente è "Type Mismatch".

    Vorrei sapere:
    -C'è qualche aggiornamento che posso provare ad installare per risolvere il problema?
    -Esiste un modo per testare la compatibilità tramite magari Visual Studio?

    -L'alternativa che mi è venuta in mente è di installarmi win2k su un hard disk di riserva che ho per provare a fare da lì il debug (con Visual Studio), ma mi sembra di sparare alle mosche con il cannone...

    Avete qualche suggerimento?

    Grazie.

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Al 99% non e' un problema di compatibilita' tra SO ma semplicemente un problema di rappresentazione di Date/Orari/Valute che nel sistema di destinazione sono diverse rispetto a quelle del sistema origine.

    Se nelle prime funzioni (nel Form_Load) c'e' qualcosa del genere, il problema e' quello ... mostra il codice che hai nel Form_Load o nel Main ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    119
    Sì, nel form load imposto il nome di un file in base alla funzione "Now()".

    Purtroppo non ho ora con me precisamente la versione che ho compilato, ma c'è qualcosa del genere:

    codice:
    ThisMachineNow = Environ("COMPUTERNAME") & " " & Format(Now, "dd-mmm-yy")
    
    FilStatistics = App.Path & "\StatLog " & ThisMachineNow & ".log"
    Environ$ ho scoperto che crea problemi, perchè "computername" non è una variabile d'ambiente in win98 (giusto?), quindi l'ho già eliminato.

    Ho però una rudimentale funzione che mi restituisce il giorno della settimana in base all'ora estratta da Now()..(ho la necessità di mantenere nel nome del file di log il giorno in cui inizio ad utilizzare il programma, è un'applicazione che gestisce una cassa, spero sia chiaro..)

    Appena ho la possibilità posto il codice.

    Comunque in generale le date e le ore creano problemi? Come mai?
    Ci sono accorgimenti standard da adottare?

    Grazie mille.

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da Dexter1983
    ... Appena ho la possibilità posto il codice.
    Ok ... cerca di identificare precisamente la linea di codice in cui avviene l'errore ... puoi aiutarti inserendo qualche MsgBox tra le istruzioni della Form_Load per capire quando avviene l'errore ...

    Comunque in generale le date e le ore creano problemi? Come mai?[/quote]

    Sì ... perche' le conversioni tra i vari formati (italiano, anglosassone) e le diverse lingue (per i nomi dei giorni, mesi) possono, in certi casi, creare problemi di conversione ...

    Ma ancora di piu' i problemi di valuta ... se utilizzi il simbolo dell'euro in un sistema in cui viene considerata la Lira o il Dollaro, allora puoi avere problemi ...

    Ci sono accorgimenti standard da adottare?
    In genere evito di fidarmi delle impostazioni del sistema per date/valuta ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    119
    dunque..

    ritorno con il codice (la prima parte che da errore)
    codice:
    ...
        dayNow = Left(Now, 2)
        monthNow = Mid(Now, 4, 2)
        yearNow = Mid(Now, 7, 4)
        
        NowNumeric = CLng(yearNow & monthNow & dayNow)
    ...
    questo codice su xp funziona bene, pur essendo discutibilissimo come stile..
    Su win2k e win98 invece le cose vanno subito malissimo.

    La particolarità è che su xp la funzione Now() per quel che riguarda la data restituisce sempre una stringa tipo "dd/mm/yyyy" di 10 caratteri.
    Su win2k e win98 invece la data è di lunghezza variabile da 8 a 10 caratteri, poichè i valori del giorno e del mese da 0 a 9 vengono riportati senza lo zero (es. 5 anzichè 05).

    Clng restituisce quindi "Tipo non corrispondente" perchè vengono passate le peggio cose con monthNow ecc..

    Devo quindi rivedermi almeno tutte le volte che uso Now() nel codice.

    Comunque, scoperto l'inghippo, ho deciso di sparare alle mosche con il cannone e ho installato win2k per fare il debug comodamente...

    Spero sia utile a chi come me non lo sapeva.

    Grazie.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.