Einzelnen Beitrag anzeigen

dominikkv

Registriert seit: 30. Sep 2006
Ort: Gundelfingen
1.109 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Schreib-/Leserechte auf CSIDL_COMMON_APPDATA

  Alt 8. Dez 2007, 16:51
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
Dominik
Wer anderen eine Grube gräbt, hat ein Gruben-Grab-Gerät!
  Mit Zitat antworten Zitat