Domanda

Ok, la mia applicazione fa tutto ciò che si suppone debba fare e fa sempre la stessa cosa, quindi non è come se i test fossero andati così tanto.

va in crash "a volte" " non sempre. lo fa quando passo con il mouse sopra un file nella finestra di dialogo Apri file che ho emesso di recente. non immediatamente aspetta da circa mezzo secondo a un secondo, e so che è quando openfiledialog visualizza dati come la dimensione del file e quando è stato creato e che tipo di documento è .. (standard) informazioni al passaggio del mouse .. la cosa è che sta usando "opendialog" e non ho scritto questo codice quindi questo errore non è di mia competenza, vero ?????? se è come ,, se non è come / cosa posso fare per fermarlo ..

il tipo di errore è una violazione di "accesso all'indirizzo" bla ...

la finestra di dialogo del file aperto non ha filtri ed è esattamente come si trova nel vassoio componenti e si arresta in modo anomalo dopo che chiamo " opendialog.execute "

Inizialmente pensavo che potesse ancora scrivergli, ma poi è continuato dopo che ho fermato l'app aprendo qualsiasi nuovo file fino a quando l'ultimo non aveva completato il processo di salvataggio.

come ho detto, non succede nemmeno al 100% tutto il tempo, e non è specifico per la macchina .. si arresta in modo anomalo su 3 PC Windows XP diversi.

AIUTO !!

Ulteriori; risultati posso aprire ed eseguire il file e tutto va bene purché non crei un suggerimento per far apparire un file che ho creato.

È stato utile?

Soluzione

Rilascia un componente TApplicationEvent sul modulo e aggiungi un gestore eventi per l'evento OnHint . Quindi inserisci un punto di interruzione e vedi se riesci a romperlo prima che si blocchi (come hai detto, sembra che si blocchi durante il tentativo di visualizzare il suggerimento). Quindi puoi compilare con debug DCU e tracciarlo e vedere su cosa sta andando in crash.

Suppongo che tu abbia ancora un handle di file con un blocco esclusivo sul file forse. Controlla le maniglie dei file e assicurati di chiuderle correttamente. Cosa succede se si tenta di aprire uno di quei file dal blocco note mentre il programma è in esecuzione?

Il comportamento intermittente potrebbe essere correlato a un percorso di codice diverso in una condizione di errore che porta a un handle di file trapelato.

Buona fortuna!

Altri suggerimenti

La finestra di dialogo file aperto è sostanzialmente un'istanza di explorer. Ciò significa che viene caricata anche ogni estensione shell installata. Un problema con questo è che una volta che usi la finestra di dialogo open-file, ogni estensione della shell usa anche il tuo stack per memorizzare variabili / indirizzi di ritorno, ... Se il tuo stack non è abbastanza grande, questo può portare a crash.

Prova ad aumentare le dimensioni della tua applicazione.

La violazione di accesso molto probabilmente non è affatto correlata alla finestra di dialogo aperta. Ti consiglio vivamente di cercare nel tuo codice e assicurarti di non sovrascrivere i limiti di memoria, se stai usando il controllo dinamico degli array e assicurati di non accedere a un elemento al di fuori del suo limite; la stessa cosa se si sta allocando manualmente la memoria.

Se non stai già utilizzando FastMM, utilizzalo. Ha alcuni buoni controlli di integrità della memoria.

Ti propongo di allegare un debugger al processo e di scoprire esattamente cosa causa l'arresto anomalo del programma. Questo dovrebbe iniziare ...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top