Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente bannato
    Registrato dal
    Mar 2007
    Messaggi
    190

    VB6 Errore chiusura con stile XP @

    salve a tutti...

    ho un problema, che spero mi potete aiutare a risolvere...

    nel collegamento suggerito da «MItaly»...
    ho imparato come "trasformare" l'aspetto dei programmi "scritti" in VisualBasic6 con lo stile di WindowsXP;
    realizzare un file con estensione ".manifest"
    il nome del file è il nome del programma associato (esempio "Prova.exe.manifest")
    inserire all'interno del file:


    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
    <assemblyIdentity
    version="1.0.0.0"
    processorArchitecture="X86"
    name="CompanyName.ProductName.YourApp"
    type="win32"
    />
    <description>Your application description here.</description>
    <dependency>
    <dependentAssembly>
    <assemblyIdentity
    type="win32"
    name="Microsoft.Windows.Common-Controls"
    version="6.0.0.0"
    processorArchitecture="X86"
    publicKeyToken="6595b64144ccf1df"
    language="*"
    />
    </dependentAssembly>
    </dependency>
    </assembly>


    all'inteno del programma inserite la libreria "Common Controls 6.0 " e
    l'evento "Form_Initialize"


    Private Declare Function InitCommonControls Lib "Comctl32.dll" () As Long

    Private Sub Form_Initialize()
    Dim x As Long
    x = InitCommonControls
    End Sub

    ...precisazioni nel collegamento
    http://www.alessioluffarelli.it/guid...windows_xp.php
    ringrazio «MItaly» per queste informazioni

    ma ora... ho un errore con la memoria...

    ogni volta che "chiudo" il programma tramite il comando END mi appare l'errore,
    qualsiasi sia l'applicazione realizzata in VisualBasic6...

    Come potrei risolvere?...
    GRAZIE

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    NON usare l'istruzione END per chiudere un programma ma passa sempre dal Form_Unload del tuo form di partenza.

    Se hai allocato memoria o istanziato oggetti, ricordati di liberarli dalla memoria.

  3. #3
    Quoto completamente quanto detto da oregon. L'istruzione End funzionava correttamente in GWBASIC o in QuickBasic, ma in VB è assolutamente da evitare, dal momento che End effettua uno shutdown brusco dell'applicazione, senza eseguire alcun codice di pulizia (non viene richiamato alcun Class_Terminate, per esempio).
    Amaro C++, il gusto pieno dell'undefined behavior.

  4. #4
    Utente bannato
    Registrato dal
    Mar 2007
    Messaggi
    190

    Errore chiusuara StileXP... @

    carissimi «MItaly» & «oregon»

    Ho sostituito tutti i codici "END" con il corrispondente "CALL Form_Unload()"...
    ma restituisce sempre l'errore di memoria;

    Se elimino il file "Cronometro.EXE.manifest" associato all'applicazione
    NON mi presenta più l'errore....

    Io desidererei impiegare lo STILE WindowsXP ma....
    Come posso risolvere l'errore?

    ..."Errore di memoria" nell'immagine ALLEGATA...
    Immagini allegate Immagini allegate

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480

    Re: Errore chiusuara StileXP... @

    Originariamente inviato da tuono_2000
    carissimi «MItaly» & «oregon»

    Ho sostituito tutti i codici "END" con il corrispondente "CALL Form_Unload()"...
    E chi ti ha detto di farlo?

    Ti ho solo detto di non usare la END ... ma non devi chiamare esplicitamente la Unload al suo posto! Quella sara' chiamata quando si chiude il form con il pulsante o si usa la Unload Me

    ma restituisce sempre l'errore di memoria;

    Se elimino il file "Cronometro.EXE.manifest" associato all'applicazione
    NON mi presenta più l'errore....

    Io desidererei impiegare lo STILE WindowsXP ma....
    Come posso risolvere l'errore?

    ..."Errore di memoria" nell'immagine ALLEGATA...
    Quale versione di VB6 e SP hai?

    Quale versione di librerie Comctl32.dll ?

    Hai fatto una prova con un progetto vuoto (solamente con il manifest e con la Init dei controlli)?

  6. #6
    Utente bannato
    Registrato dal
    Mar 2007
    Messaggi
    190

    continua errore... @

    caro «oregon»

    mi hai suggerito TU di eliminare l'istruzione END.... :master:
    che istruzione dovrei utilizzare per chiudere l'intero programma?
    Originariamente inviato da oregon
    NON usare l'istruzione END per chiudere un programma ma passa sempre dal Form_Unload del tuo form di partenza.

    Se hai allocato memoria o istanziato oggetti, ricordati di liberarli dalla memoria.
    io, in questo programma, NON ho "occupato" memoria aggiuntiva;
    il mio Visual Basic 6 è la versione ENTERPRISE;
    Il mio PersonaComputer utilizza Windows XP Professional ServicePack1;

    per la versione di librerie Comctl32.dll come lo verifico?

    Certo che ho provato, solo successivamente al problema,
    a realizzare un ProgettoNuovo; con l'istruzione END mi ripropone l'errore...

    P.S.
    L'unica istruzione, che conosco, che permetta di chiudere il programma, in qualsiasi condizione si trovi è END... :berto:
    GRAZIE

  7. #7
    Utente di HTML.it L'avatar di LMondi
    Registrato dal
    Sep 2004
    Messaggi
    1,291
    Ciao Tuono_2000,
    leggi questo articolo che tratta l'argomento in generale, può darsi che la soluzione sia adatta al tuo caso.
    LM

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480

    Re: continua errore... @

    Originariamente inviato da tuono_2000
    caro «oregon»

    mi hai suggerito TU di eliminare l'istruzione END.... :master:
    che istruzione dovrei utilizzare per chiudere l'intero programma?
    Non ci capiamo ... IO ti ho detto di non usare la END ma NON ti ho detto di sostituirla con alcunche' ... tanto meno ti ho detto di usare al suo posto una "CALL Form_Unload()"...

    Se devi terminare il programma, lo deve fare l'utente tramite il tasto Chiudi oppure devi scrivere esplicitamente Unload Me ... ma bisogna stare attenti a non eseguire altro dopo ...

    SE mostri il pezzo di codice in cui vorresti inserire la END allora ti dico meglio ....

    io, in questo programma, NON ho "occupato" memoria aggiuntiva;
    il mio Visual Basic 6 è la versione ENTERPRISE;
    LEGGI nel menu di aiuto (?) di VB le Informazioni su ... in cui trovi i valori esatti di versione del VB ... in particolare, ti ripeto, dicci quale SP hai installato ...

    per la versione di librerie Comctl32.dll come lo verifico?
    Come per un qualsiasi file di Windows ... sul file, tasto destro, proprieta', versione ...

    Certo che ho provato, solo successivamente al problema,
    a realizzare un ProgettoNuovo; con l'istruzione END mi ripropone l'errore...
    Sicuramente non hai il VB aggiornato ...

    P.S.
    L'unica istruzione, che conosco, che permetta di chiudere il programma, in qualsiasi condizione si trovi è END... :berto:
    GRAZIE
    No ... la END e' una istruzione che devi dimenticare ... usa la Unload Me ...

  9. #9
    Utente bannato
    Registrato dal
    Mar 2007
    Messaggi
    190

    Eclisse problema.. @

    salve a tutti...

    caro «oregon»
    l'istruzione END la impegherò ancora...
    Oltre al fatto che è, per me molto comoda, e anche l'unica funzione che "Chiude Tutto"....

    Per le versioni; che mi hai richiesto:
    VisualBasic6Enterprise; Versione 8176; VBA Retail 6.0.8169; Forms3 11.0.5601;
    WindowsXPproServicePack1; Versione 5.1 (build: 2600.XPsp1.020828-1920);
    il file "comctl32.dll" in "windows\system32\"; versione file 5.82.2800.1106;

    Grandissimo «LMondi»
    con il tuo Link ho risolto TUTTO... speriamo che duri...


    Per risolvere ho inserito nel Progetto questo:
    codice:
    all'inteno del programma inserite la libreria "Common Controls 6.0 ", DUE Funzioni e DUE eventi:
    
    Private Declare Sub InitCommonControls Lib "comctl32.dll" ()
    Private Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" ( ByVal lpLibFileName As String) As Long
    Private Declare Function FreeLibrary Lib "kernel32" ( ByVal hLibModule As Long) As Long
    Private m_hMod As Long
    
    Private Sub Form_Initialize()
        m_hMod = LoadLibrary("shell32.dll")
        InitCommonControls
    End Sub
    
    Private Sub Form_Unload(Cancel As Integer)
        FreeLibrary m_hMod
    End Sub  
    
    
    ...precisazioni nel collegamento
    http://www.maurorossi.net/pagine/tips/tips018.htm
    grazie ancora a TUTTI...

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480

    Re: Eclisse problema.. @

    Originariamente inviato da tuono_2000
    caro «oregon»
    l'istruzione END la impegherò ancora...
    Oltre al fatto che è, per me molto comoda, e anche l'unica funzione che "Chiude Tutto"....
    Allora non hai capito ... e' proprio l'istruzione che "lascia tutto aperto" ... ma non voglio convincerti per forza ... fai come vuoi ...

    Per le versioni; che mi hai richiesto:
    VisualBasic6Enterprise; Versione 8176; VBA Retail 6.0.8169; Forms3 11.0.5601;
    Come pensavo ... il tuo VB NON e' aggiornato ... devi installare il Service Pack 6 ... lo scarichi dal sito microsoft ...

    WindowsXPproServicePack1; Versione 5.1 (build: 2600.XPsp1.020828-1920);
    Beh ... non capisco perche' non lo aggiorni al Service Pack 2 ...

    il file "comctl32.dll" in "windows\system32\"; versione file 5.82.2800.1106;
    Anche questo e' vecchio ... la versione piu' recente e' 5.82.2900.2982 e penso che installando il SP6 di VB6 lo aggiorni ...

    Grandissimo «LMondi»
    con il tuo Link ho risolto TUTTO...
    Guarda che devi comunque aggiornare tutto il sistema ... se vuoi naturalmente ... perche' il codice originale che hai mostrato, non ha problemi ...

    speriamo che duri...
    Con il sistema e il VB non aggiornati non durera' ... soprattutto quando e se arriverai a gestire i db ...

    In ogni caso, se non ti fidi, non fare assolutamente nulla di quello che ti ho detto ...

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.