Autor Beitrag
Therion
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Mi 04.03.09 00:09 
Hallo

Ich habe ein Problem in meinem Programm.
Um es kurz und übersichtlich zu halten, habe ich hier ein Beispiel gebastelt, dass das Problem zeigt.

Habe einfach eine Formularanwendung mit einem SaveDialog erstellt und zwei Buttons hinzugefügt die folgende Funktionen haben:
Button1 öffnet den SaveDialog und hilft eine Datei zum Schreiben zu erzeugen.
Button2 öffnet eine im Programordner existierte Datei zum lesen

Nun zum Problem.
Ich starte das Programm. Ich kann ohne Probleme auf Button2 klicken und die Datei mit Namen 'text' öffnen. Das Problem entsteht erst nachdem ich mit dem SaveDialog eine Datei außerhalb meines Programm-Ordners abspeichere. Danach führt nämlich der Klick des Buttons2 zum Fehler und das Programm findet die existierte Datei mit Namen 'text' nicht mehr.

Hier mein Kode:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure TForm1.Button1Click(Sender: TObject);
var
  datei: textFile;
begin
  if saveDialog1.Execute then
    begin
      assignFile(datei, saveDialog1.FileName);
      rewrite(datei);
      closeFile(datei);
    end;
end;

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure TForm1.Button2Click(Sender: TObject);
var
  datei: textfile;
begin
  assignFile(datei,'text');
  reset(datei);
  closeFile(datei);
end;



Kann jemand Ahnung wo der Hacken ist????

Gruß
Arthur

Moderiert von user profile iconmatze: Delphi-Tags hinzugefügt
Moderiert von user profile iconmatze: Überflüssige Zeilenumbrüche entfernt
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 04.03.09 00:35 
Der Haken ist, dass du ohne Angabe eines Verzeichnisses nicht im Programmordner sondern im aktuellen Verzeichnis suchst. Und das wird zum Beispiel durch die Dialoge verändert.
Genauer habe ich das hier geschrieben:
www.delphi-library.d...ewtopic.php?p=499701
Therion Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Mi 04.03.09 09:44 
Danke schön ;-)
the-kecks
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 157
Erhaltene Danke: 1

Windows Vista Home Premium 64Bit
Delphi 7 Ent.
BeitragVerfasst: Do 05.03.09 20:58 
besser finde ich geht es so:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
var
DeineStrL : TStringlist;
begin
DeineStrL:=TStringlist.Create;
DeineStrL.LoadFromFile('C:\DeinVerzeichnis\text.txt');
DeineStrL.add('text');
DeineStrL.SaveToFile('C:\DeinVerzeichnis\text.txt');
DeineStrL.free;
end;

oder falls du überschreiben willst
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
var
DeineStrL : TStringlist;
begin
DeineStrL:=TStringlist.Create;
DeineStrL.add('text');
DeineStrL.SaveToFile('C:\DeinVerzeichnis\text.txt');
DeineStrL.free;
end;


mfg

Moderiert von user profile iconNarses: Code- durch Delphi-Tags ersetzt
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 05.03.09 21:12 
Nur dass du mit einer TStringList die gesamte Datei erst in den Arbeitsspeicher lädst. Das passiert mit der anderen Methode nicht. ;-)