Zitat von
mirage228:
Ja wenn beim Beenden die Stelle gar nicht augeführt wird, wo tritt dann der Fehler genau auf?
Das frage ich mich ja auch...
Auf jedenfall kommt der Fehler
nach Application.Terminate, aber
vor MainForm.FormDestroy.
Zitat von
mirage228:
Wird vielleicht CloseFile() für ein ungültiges "f" aufgerufen?
Was meinst du mit ungültig? F ist so deklariert:
Delphi-Quellcode:
type
TString8 = String[8];
TString100 = String[100];
TVersion = record
Name: TString100;
Version: TString8;
Datum: TDateTime;
end;
// ...
function CheckUpdates: Boolean;
var F: File of TVersion;
A: TVersion;
begin
result := False;
if FileExists(VerFile) then
try
assignFile(f, VerFile);
reset(f);
read(f, A);
finally
closeFile(f);
end else
A.Version := '0.0.0.0';
// usw...
Nach den CloseFile wird die Prozedure abgebrochen!, allerdings kommt keine Fehlermeldung... die kommt dann bei Programmende.
Zitat von
mirage228:
Was sagt der CallStack?
Den Delphi-Debugger kann ich nicht benutzen da ich Delphi mit Adminrechten ausführe (und da kommt der Fehler nicht!), aber der CallStack von madExcept sagt dass ich bei genau dieser procedur bin (sogar mit Linienangabe, eben auf closeFile(f)
Code:
Main ($cfc):
005e8336 +0ba MyProg.exe uStuff 152 +8 CheckUpdates
005e1bcc +4ec MyProg.exe uOptionen 415 +79 LoadProgFromFile
005e88fc +1cc MyProg.exe uStuff 238 +42 AfterCreate
005f9e07 +0ff MyProg.exe MyProg 48 +15 initialization
762b19ef +00c kernel32.dll BaseThreadInitThunk
Zitat von
mirage228:
Weil bei dem Ordner hat man auf jeden Fall normalerweise Lese und Schreibrechte!
Genau, eine andere Datei die ganau im gleichen Ordner liegt wird auch bei Programmstart mit AssignFile etc gelesen, ohne Fehler!
Achja: die Fehlermeldung heißt jetzt EInOutError: I/O error 103.
Danke schonmal für deine Hilfe