Autor Beitrag
Henry
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 619

WinXP Prof. SP3
D6 Prof.
BeitragVerfasst: Mi 31.07.02 18:18 
Hallo,

gibt es eine Möglichkeit eine Textdatei direkt in einen String zu laden
und nach der Bearbeitung wieder in eine Datei zu speichern?
Möglichst so einfach wie man es mit z.B. einem TMemo machen kann.

Also wie:
ausblenden Quelltext
1:
2:
3:
Memo1.lines.SaveFromFile('datei.txt');
//und
Memo1.lines.SaveToFile('datei2.txt');

Dann kann ich mir ein TMemo sparen denn ich brauche es in diesem Fall nicht im Programm
danke für die Hilfe.

_________________
mfg Henry
GPF
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 85



BeitragVerfasst: Mi 31.07.02 18:28 
Verwende einfach folgenden Code (ohne Fehlerbehandlung; Datei muß beim Lesen existieren, etc..):

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
procedure SaveStringToFile(Filename, SaveString: string);
var fs:TFileStream;
begin
  fs:=TFileStream.Create(Filename, fmCreate or fmShareExclusive  );
  fs.Write(SaveString[1], Length(SaveString));
  fs.Free; 
end;

procedure LoadStringFromFile(Filename: string; var LoadString: string);
var fs:TFileStream;
begin
  fs:=TFileStream.Create(filename, fmOpenRead or fmShareDenyNone);
  SetLength(LoadString, fs.Size);
  fs.Read(LoadString[1], fs.Size);
  fs.Free;
end;
Henry Threadstarter
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 619

WinXP Prof. SP3
D6 Prof.
BeitragVerfasst: Mi 31.07.02 18:33 
Danke!
Werde es gleich mal ausprobieren

_________________
mfg Henry
Henry Threadstarter
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 619

WinXP Prof. SP3
D6 Prof.
BeitragVerfasst: Mi 31.07.02 22:02 
Habe es Probiert.
Funktioniert super, War genau das was ich brauchte.

Danke nochmal

_________________
mfg Henry
GPF
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 85



BeitragVerfasst: Do 01.08.02 04:49 
Sorry, ein kleiner Fehler hat sich eingeschlichen.
Probleme verursacht die Read-Zeile in der Ladeprozedur wenn die Streamgröße (bzw. hier Stringgröße) 0 Bytes groß ist. In diesem Fall ist nämlich LoadString[1] ungültig.
Die korrigierte Fassung lautet dann wie folgt:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
procedure LoadStringFromFile(Filename: string; var LoadString: string); 
var fs:TFileStream; 
begin 
  fs:=TFileStream.Create(filename, fmOpenRead or fmShareDenyNone); 
  SetLength(LoadString, fs.Size); 
  if fs.size>0 then   //Diese Abfrage mußte noch rein
    fs.Read(LoadString[1], fs.Size); 
  fs.Free; 
end;
wwerner
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 185



BeitragVerfasst: Do 01.08.02 06:42 
Könntet Ihr diesen Tip in die FAQ eintragen?

_________________
Gruß

Wolfgang

----------
zu hause ist es doch am schönsten
Tino
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Veteran
Beiträge: 9839
Erhaltene Danke: 45

Windows 8.1
Delphi XE4
BeitragVerfasst: Do 01.08.02 08:37 
wwerner hat folgendes geschrieben:
Könntet Ihr diesen Tip in die FAQ eintragen?
Klar kann man das machen! Aber dafür gibt es extra die Sparte Neue Einträge / Hinweise / etc. :shock:. Da kannst Du solche Beiträge gerne einfach hinein posten. Ich hab das jetzt aber schon gemacht :-D

FAQ Eintrag

Gruß
TINO