Autor Beitrag
September
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 19



BeitragVerfasst: Di 22.03.05 14:52 
Was ist denn hier bitte falsch dran?

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure TForm1.Button1Click(Sender: TObject);
var gb:textfile;
begin
assignfile(gb,'C:\Dokumente und Einstellungen\Stefanie\Desktop\Delphi Projektordner\Gästebuch\gb.txt');
{$I-}reset(gb); {$I+};
if ioresult<>0 then rewrite(gb);
write(gb,Memo1.text);                          //hier bleibt es hängen
closefile(gb);


Und ich bekomme die Meldung I/O Error 105 (was mich wundert, weil es die gb.txt schon gibt).

Moderiert von user profile iconraziel: Code- durch Delphi-Tags ersetzt.
Sprint
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 849



BeitragVerfasst: Di 22.03.05 15:08 
Arbeite besser mit Stream's.

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:
24:
25:
26:
procedure TForm1.Button1Click(Sender: TObject);
const
  FileName = 'C:\Gaestebuch.txt';
var
  Stream: THandleStream;
  Handle: Integer;
begin

  if FileExists(FileName) then
    Handle := FileOpen(FileName, fmOpenReadWrite)
  else
    Handle := FileCreate(FileName);

  if Handle <> -1 then
  begin
    Stream := THandleStream.Create(Handle);
    try
      Stream.Seek(0, soFromEnd);
      Memo1.Lines.SaveToStream(Stream);
    finally
      Stream.Free;
      CloseHandle(Handle);
    end;
  end;

end;

_________________
Ciao, Sprint.
September Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 19



BeitragVerfasst: Di 22.03.05 15:15 
Danke ;), das funktioniert wunderbar, aber für den Anfang wäre mir meine "billige" Variante erst mal lieber. Bei deiner Variante werde ich erst mal die Befehle/Begriffe nachschlagen gehen.
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6395
Erhaltene Danke: 149

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Di 22.03.05 15:27 
Proiber doch mal:
ausblenden Delphi-Quelltext
1:
Memo1.lines.SavetoFile('C:\Dokumente und Einstellungen\Stefanie\Desktop\Delphi Projektordner\Gästebuch\gb.txt');					

1. Du überschreibst deine Datei in jedem Fall. Somit würde obige Variante einfacher sein.
2. Write funktioniert iirc bei Textdateien nicht, sondern writeln.
3. Willst du die Daten anhängen, benötigst du appendfile. Ich glaube zumindest, dass es so heißt.
September Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 19



BeitragVerfasst: Di 22.03.05 16:09 
Hallo,
nein, ich überschreibe meine Datei nicht in jedem Fall.
Mit dieser Zeile :

{$I-}reset(gb); {$I+};

überprüfe ich, ob die gb.txt Datei vorhanden ist. Ist sie Vorhanden, dann bleibt ioresult=0, ist sie nicht vorhanden wird es auf 1 gesetzt.
Ist also ein Fehler, dass heißt, die gb.txt existiert noch nicht, aufgetreten, dann tritt folgendes in Kraft

if ioresult<>0 then rewrite(gb);

und eine gb.txt wird erstellt.

Das "ln" habe ich bereits angehängt, hab ich auch gemerkt, hat aber nichts daran geändert. Und zu letzterem : Ich will einfach nur den Text in die Datei schreiben. Mh, vielleicht müsste ich dazu erstmal das auslesen was drin steht und den rest dann dazu addieren :?. Aber das ändert ja nichts daran, dass er es erst gar nicht reinschreiben will.
wdbee
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 628
Erhaltene Danke: 1



BeitragVerfasst: Di 22.03.05 16:11 
So wie es Reset fürs Lesen und Rewrite für Schreiben gibt, gibt es auch Append fürs Anhängen!

// Edit: Reicht nicht das schon aus:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
AssignFile(F,...)
try
  try 
    Append(F);
  except
    Rewrite(F)
  end;
  ...
except
  CloseFile(F);
end;
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6395
Erhaltene Danke: 149

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Di 22.03.05 16:14 
Delphi-Hilfe schreibt zu Reset:
Zitat:
Bei einer Textdatei ist F nach dem Öffnen schreibgeschützt.
September Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 19



BeitragVerfasst: Di 22.03.05 16:44 
Schreibgeschützt :shock: ... na dann ist ja alles klar.