![]() |
Frage zu WriteLn
hi (mal wieder) :\
ich habe folgendermassen versucht WriteLn zu benutzen:
Delphi-Quellcode:
while not EOF(hFile) do
begin ReadLN(hFile, txt); if txt = 'hi' then exit; end; WriteLN(hFile, 'hi'); ich bekomme "Runtime Error 105" was für: "Das bisherige Besitzrecht dieser Semaphore ist beendet" steht. Was heisst das? |
Re: Frage zu WriteLn
Wie hast du die Datei geöffnet? Bedenke: Mit Reset hast du nur Lesezugriff!
|
Re: Frage zu WriteLn
oh, dachte lese und schreibe zugriff, hmmm.
Wenn ich aber rewrite benutze wird die alte datei gelöscht und neu angelegt oder? das möchte ich aber nicht =(...was benutz ich denn da? Ich möchte aus ihr lesen können und auch schreiben |
Re: Frage zu WriteLn
Append wäre eine Möglichkeit.
|
Re: Frage zu WriteLn
kannst öffnen mit was Du willst *g*
reset kannste lesen rewrite löscht das ganze und nur schreibzugriff append löscht nicht hängt an aber auch nur schreibzugriff |
Re: Frage zu WriteLn
hallo luckie,
danke ^^ da der dateizeiger bei append ja ans ende gesetzt wird wollte ich noch fragen mit welcher funktion ich die position ändere? Seek() kann ich nicht nehmen :\ EDIT: wenn ich reset() durch Append() ersetze bekomme ich den runtime error "104" (Zur Zeit einer Unterbrechung (Interrupt) kann keine exklusive Semaphore angefordert werden. ) wieso denn nun schon wieder :roll: nun gehts, hab innerhalb der geöffneten datei Reset UND append benutzt (ist das schlimm?) BTW: irgendwie funktioniert WriteLN nicht richtig...eigentlich sollte damit ja eine NEUE zeile eingefpgt werden... es wird aber einfach an das ende der letzten zeile angehängt, wieso das? Code ist bis jetzt so:
Delphi-Quellcode:
AssignFile(hFile, string(buf));
Reset(hFile); while not EOF(hFile) do begin ReadLN(hFile, txt); if txt = 'hi' then exit; end; Append(hFile); WriteLN(hFile, 'hi'); CloseFile(hFile); fehler drin? |
Re: Frage zu WriteLn
Entscheid dich für eines. Also nur Append oder Reset.
Und zum Zurücksetzen des Dateizeigers nutzt du Seek. |
Re: Frage zu WriteLn
Seek dürfte in Textdateien nicht gehen. Die kann man nur zeilenweise einlesen und zeilenweise schreiben.
|
Re: Frage zu WriteLn
hallo chewie,
also es scheint aber mit beidem zu gehen (also reset und append) wenn ich erst closefile nach reset() nehme und dann mit append() weiter mache funktionierts genauso. Das problem ist jetzt eigentlich das ich meinen text nicht in eine NEUE zeile bekomme, weisst du wie ich das anstellen könnte? sagen wir mal so sieht meine textdatei aus: 1 2 3 4 5 mein code soll folgendes(mit dem beispiel"6") tun: - prüfen ob "6" bereits irgendwo ist - wenn nicht dann die "6" in eine neue Zeile packen aber irgendwie sieht nach dem schreiben meine datei dann so aus: 1 2 3 4 56 ich könnte ja vielleicht "#13#10" verwenden...aber dann wäre das eventuell auch falsch weil es ja auch sein KANN das bereits nach der 5 eine neue zeile war... wie kann ich das prüfen ob eine leere zeile bereits drin ist und wenn nicht ggf. erstellen? |
Re: Frage zu WriteLn
Hi
Warum lädst du die Datei (wenn es wirklich nur eine Textdatei ist) nicht in eine Stringlist und speicherst sie anschließend wieder? MfG Christian |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:32 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