![]() |
filecreate produziert e/a-32
Ich habe ein recht simples Problem bei dem einfach nicht weiterkomme:
Ich will einfach nur an eine Datei (die es vielleicht nicht gibt) eine Zeile anhängen. Wenn ich mit
Delphi-Quellcode:
sicher gehen will, dass die Datei existiert und dann mit
if fileexists('Termine.txt')= false then
filecreate('Termine.txt');
Delphi-Quellcode:
versuche, was uz schreiben bekomme ich E/A 32. :drunken:
assignfile(Datei, 'Termine.txt');
append(Datei); writeln(datei,'Uhrzeit: '+datetimetostr(now)); closefile(Datei); Ich seh einfach nicht den Fehler :wall: Kann mir da vielleicht jemand einen Tipp geben?? :roll: |
Re: filecreate produziert e/a-32
Es ist auch nicht dein Fehler:
Zitat:
|
Re: filecreate produziert e/a-32
Dieser andere Prozess kann ja nur das filecreate sein, oder? Aber wie soll ich das denn sonst machen?
Tox |
Re: filecreate produziert e/a-32
Ich glaube, was Chewie meint, ist, dass das File von einem anderen Prozess (Programm) verwendet wird :gruebel:
|
Re: filecreate produziert e/a-32
probiere es doch mal so!
Delphi-Quellcode:
assignfile(Datei, 'Termine.txt'); //assignfile geht auch wenn die datei nicht existiert!
if fileexists('Termine.txt') then append(Datei) else reset(Datei); writeln(datei,'Uhrzeit: '+datetimetostr(now)); closefile(Datei); |
Re: filecreate produziert e/a-32
Wenn ich aber das ganze ein zweites mal mache, und somit nicht das filecreate aufrufe, habe ich keine Probleme;
Die Termine.txt, kann ja beim ersten mal nicht von einem anderen Programm bearbeitet werden, einfach weil es sie dann noch nicht gibt. Denn wenn ein anderes Programm sie bearbeiten würde, hätte ich ja ein positives Fileexists; Danke Toxman |
Re: filecreate produziert e/a-32
hast du meinen Beitrag gesehen?
|
Re: filecreate produziert e/a-32
Den hab ich grad ausprobiert:
Fehlermeldung, dass die Datei nicht gefunden wurde. Hast du ihn mal ausprobiert? Ich weiss langsam nicht mehr wo ich suchen soll Danke |
Re: filecreate produziert e/a-32
probiere mal statt reset -> rewrite
näheres kannst du in der OH nachlesen! mit rewrite funktionierts! :wink: |
Re: filecreate produziert e/a-32
Danke, so funzts. Ich weiss aber immer noch nicht genau, warum meine erste Idee nicht funktioniert. Bei append finde ich keinen HInweis darauf, dass schon was in der Datei stehen muss, o.Ä.
Hast du da eine Idee? Toxman |
Re: filecreate produziert e/a-32
Evtl. wartet Delphi bei "FileCreate" nicht auf dessen Fertigstellung (ist ne API-Fkt.), und geht einfach wieter im Code, und die Datei ist noch nicht "ganz fertig" wenn du schon reinschreiben willst. Aber bei "rewrite" wartet er schon. Klingt zumindest danach!
|
Re: filecreate produziert e/a-32
Zitat:
Delphi-Quellcode:
constructor TTypedFile.Create(Filename : string);
var Data : TRecord; begin AssignFile(f, Filename); { if exits open it } if FileExists(Filename) then begin //FileMode := fmShareExclusive; Reset(f); end { if not rewrite it } else begin {$I-} Rewrite(f); if IOResult <> 0 then begin RaiseLastOSError; {$I+} CloseFile(f); exit; end; FillChar(Data, sizeof(Data), #0); Data.Index := 0; { write the first emtpy record with the MaxID-Value } write(f, Data); end; { get the number of records } FRecordsCount := FileSize(f); end; |
Re: filecreate produziert e/a-32
was hälst du von FileClose?
Delphi-Quellcode:
filecreate(); übergibt das handle der erstellten datei und mit fileclose kannste dann die spezielle datei schließen. :-D
procedure TForm1.Button1Click(Sender: TObject);
var k: integer; begin k:=filecreate('Termine.txt'); FileClose(k); end; antwort kommt ein bisschen spät, aber ich hatte das selbe prob und deswegen hier mal für alle meine mitstreiter :P |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:21 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz