![]() |
Re: Eine Datei in 3 Memos laden
wie wäre es denn, wenn du den Text in eine Variable lädst.
und dann sollte folgendes gehen:
Delphi-Quellcode:
(ungetestet !!)
var text,textM1,textM2,textM2:string;
i:integer; begin i:=pos('[/\Memo1/\]',text); textM1 := copy(text,1,i); delete(text,1,i + 10); i:=pos('[/\Memo2/\]',text); textM2 := copy(text,1,i); delete(text,1,i + 10); textM3 := text; den 3. seperator kannst du ja weglassen, denn dann kann ja nurnoch was für das letzte memo kommen... ist nur ein lösungs ansatz, hoffe das ich helfen konnte. hibbert |
Re: Eine Datei in 3 Memos laden
aber wenn da auch zeilentrennzeichen sind?
ich würde meine methode oben zum laufen bringen :mrgreen: |
Re: Eine Datei in 3 Memos laden
Danke, ich werde auch dies mal ausprobieren...
@glkgereon: Ja, aber wie... |
Re: Eine Datei in 3 Memos laden
hm wieso machsts nich mit ner ini-Datei?
|
Re: Eine Datei in 3 Memos laden
Zitat:
Delphi-Quellcode:
so in etwa (ungetestet).
//speichern
var ini: TIniFile; begin ini := TIniFile.create; try ini.loadfromfile('...'); ini.writestring('Memos', 'Memo1', memo1.lines.DelimitedText); ini.writestring('Memos', 'Memo2', memo2.lines.DelimitedText); ini.writestring('Memos', 'Memo3', memo3.lines.DelimitedText); finally ini.free; end; end; //laden var ini: TIniFile; begin ini := TIniFile.create; try ini.loadfromfile('...'); memo1.lines.delimitedtext := ini.readstring('Memos', 'Memo1', ''); memo2.lines.delimitedtext := ini.readstring('Memos', 'Memo2', ''); memo3.lines.delimitedtext := ini.readstring('Memos', 'Memo3', ''); finally ini.free; end; end; Aenogym |
Re: Eine Datei in 3 Memos laden
Unter Win9x ist die größe von Ini-Dateien auf 32Kb begrenzt, dann müsstest du, falls es größere Datenmengen sind, eine passende Komponente, wie TBigIniFile nehmem.
Aber es geht auch als Textdatei:
Delphi-Quellcode:
Aufruf:
procedure WriteMemos(AMemo1, AMemo2, AMemo3: TMemo; const AFilename: String);
var SL: TStrings; begin SL := TStringList.Create; try SL.AddStrings(AMemo1.Lines); SL.Add('[/\Memo/\]'); SL.AddStrings(AMemo2.Lines); SL.Add('[/\Memo/\]'); SL.AddStrings(AMemo3.Lines); SL.SaveToFile(AFilename); finally SL.Free; end; end; procedure ReadMemos(AMemo1, AMemo2, AMemo3: TMemo; const AFilename: String); var SL: TStrings; i, Memo: Integer; begin AMemo1.Clear; AMemo2.Clear; AMemo3.Clear; SL := TStringList.Create; try SL.LoadFromFile(AFilename); Memo := 1; for i := 0 to SL.Count - 1 do begin if SL[i] = '[/\Memo/\]' then begin Inc(Memo); Continue; end; case Memo of 1: AMemo1.Lines.Add(SL[i]); 2: AMemo2.Lines.Add(SL[i]); 3: AMemo3.Lines.Add(SL[i]); end; end; finally SL.Free; end; end;
Delphi-Quellcode:
Ich sage nicht, dass es die beste Lösung ist, aber sie funktioniert ;)
WriteMemos(Memo1, Memo2, Memo3, 'c:\test.txt');
// und ReadMemos(Memo1, Memo2, Memo3, 'c:\test.txt'); MfG Pr0g |
Re: Eine Datei in 3 Memos laden
Hey,
ihr seid klasse. Ich werde alles mal probieren. Aber auf die Idee mit der Ini-Datei hätte ich auch kommen können. Außerdem ist das Ziel-OS WinXP, so dass ich mit der größe keine Probs bekomme. Danke an alle. Falls wir uns nicht mehr lesen sollten, wünsche ich euch einen guten Rutsch in 2005! Bye |
Re: Eine Datei in 3 Memos laden
Moin DJ-SPM,
vor kurzem hatte ich hier mal eine Methode gepostet, wie man mehrere TRichEdit in eine Datei schreiben, und sie getrennt wieder auslesen kann. Das funktioniert natürlich auch mit TMemo. ![]() |
Re: Eine Datei in 3 Memos laden
Hi chris,
meinst du diesen Code:
Delphi-Quellcode:
Wenn ja, kannst du mir kurz sagen, wo die Seperatoren sind, also, wie der Code funzt?
// schreiben
var iLen : integer; fs : TFileStream; ms : TMemoryStream; begin ms := TMemoryStream.Create; fs := TFileStream.Create(....,fmCreate); try ms.Clear; RichEdit1.Lines.SaveToStream(ms); iLen := ms.Position; fs.Write(iLen,4); fs.CopyFrom(ms,0); finally FreeAndNil(fs); FreeAndNil(ms); end; end; // lesen var iLen : integer; fs : TFileStream; ms : TMemoryStream; begin ms := TMemoryStream.Create; fs := TFileStream.Create('c:\temp\riform.txt',fmOpenRead); try fs.Read(iLen,4); ms.Clear; ms.CopyFrom(fs,iLen); ms.Position := 0; RichEdit1.Lines.LoadFromStream(ms); finally FreeAndNil(fs); FreeAndNil(ms); end; end; Danke |
Re: Eine Datei in 3 Memos laden
Moin DJ-SPM,
nein, ich meinte den Code davor. Das was Du da gepostet hast ist nur erforderlich, wenn man die, in einem Memo ja nicht vorhandenen, Formatierungen mit speichern will. Das Prinzip bleibt aber gleich. Wie ich in dem genannten Thread weiter oben beschrieben hatte: Es wird erst die Länge gespeichert, dann der Inhalt. Bei Auslesen liest man dann also die Länge ein, reserviert sich in einem Buffer entsprechend Platz, und liest ein. Das Beispiel bezieht sich nur auf eine Datei, aber in einer Schleife gehen dann auch mehrere. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:01 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