Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Frage zu WriteLn (https://www.delphipraxis.net/24753-frage-zu-writeln.html)

Pseudemys Nelsoni 25. Jun 2004 16:06


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?

Chewie 25. Jun 2004 16:10

Re: Frage zu WriteLn
 
Wie hast du die Datei geöffnet? Bedenke: Mit Reset hast du nur Lesezugriff!

Pseudemys Nelsoni 25. Jun 2004 16:12

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

Luckie 25. Jun 2004 16:13

Re: Frage zu WriteLn
 
Append wäre eine Möglichkeit.

GuenterS 25. Jun 2004 16:14

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

Pseudemys Nelsoni 25. Jun 2004 16:15

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?

Chewie 25. Jun 2004 16:49

Re: Frage zu WriteLn
 
Entscheid dich für eines. Also nur Append oder Reset.
Und zum Zurücksetzen des Dateizeigers nutzt du Seek.

Luckie 25. Jun 2004 16:50

Re: Frage zu WriteLn
 
Seek dürfte in Textdateien nicht gehen. Die kann man nur zeilenweise einlesen und zeilenweise schreiben.

Pseudemys Nelsoni 25. Jun 2004 16:55

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?

Chris1986 25. Jun 2004 16:59

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 12:32 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz