Autor Beitrag
Neverlord
Hält's aus hier
Beiträge: 2



BeitragVerfasst: So 07.12.03 23:31 
Hallo allerseits ...

Ich hab ein "kleines" Problem in einem Programm:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
procedure AppendFile(Filename, SaveString: string); overload;
var F: TextFile;
begin
  if not FileExists(Filename) then
    FileCreate(Filename);
  AssignFile(F, Filename);
  Append(F);
  WriteLn(F, SaveString);
  CloseFile(F);
end;


liefert mir einen E/A Fehler 32, sobald der Compiler Append(F); ausführen will ...
Die Procedure ist overload, aber in allen anderen Varianten funktioniert der Quellcode so problemlos.
Hier noch die andern Varianten:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
procedure AppendFile(Filename: string; SaveArr: TArrOfStr); overload;
var F: TextFile; i: integer;
begin
  if not FileExists(Filename) then
    FileCreate(Filename);
  AssignFile(F, Filename);
  Append(F);
  for i := 0 to Length(SaveArr)-1 do
    WriteLn(F, SaveArr[i]);
  CloseFile(F);
end;

procedure AppendFile(Filename: string; SaveArr: TVokabelArray); overload;
var F: TextFile; i: integer;
begin
  if not FileExists(Filename) then
    FileCreate(Filename);
  AssignFile(F, Filename);
  Append(F);
  for i := 0 to Length(SaveArr)-1 do
    WriteLn(F, SaveArr[i].DateiEintrag);
  CloseFile(F);
end;



Normalerweise benutze ich Kylix, aber beim portieren des Programms (Delphi5) hänge ich jetzt an diesem komischen Fehler, den ich einfach nicht nachvollziehen kann!

Jemand eine Idee? Bin dankbar für jede Hilfe, und wenn mir nur jemand sagt was der E/A-Fehler 32 überhaupt ist!
Die Online Hilfe führt den nicht auf und auch ne Suche danach blieb erfolglos.
Neverlord Threadstarter
Hält's aus hier
Beiträge: 2



BeitragVerfasst: So 07.12.03 23:59 
Ok ... ich weiß jetzt woran es lag. FileCreate() arbeitet wohl etwas anders unter Kylix.
Bei Delphi wird ein Datei-Handle zurück gegeben und der Fehler E/A 32 ist wohl sowas in der Art "Datei bereits geöffnet" ...

Die Funktion funktioniert also nur wenn die Datei bereits existiert, deshalb hats einmal geklappt und einmal nicht. :roll:

Wenn ich mit FileClose() direkt das Handle wieder schließe das mir FileCreate() liefert funktioniert es wie es soll ...

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
  {$IFDEF LINUX}
    if not FileExists(Filename) then
      FileCreate(Filename);
  {$ELSE}
    if not FileExists(Filename) then
      FileClose(FileCreate(Filename));
  {$ENDIF}




Naja, nichts für ungut, vielleicht ist der Thread ja nicht ganz so sinnlos und irgendjemand hat man irgendwann das gleiche Problem. :wink: