![]() |
TMemo: Text mit festem Zeilenumbruch speichern
Problem:
Ich möchte eine Textdatei öffnen, nach ca. 70 Zeichen einen harten Zeilenumbruch haben und dann wieder (mit den harten Zeilenumbrüchen natürlich) speichern. Lösung: Ein Memo mit WordWrap, als Font Courier New (feste Zeichenbreite). Breite von 70 Zeichen ermitteln und Memo.Width auf diesen Wert setzen. Textdatei in das Memo laden. Die Zeilen des Memo (einzeln/zeilenweise) in eine Stringlist kopieren und die Stringlist dann speichern. Da davon nix zu sehen sein soll, ist das Memo unsichtbar. Funzt problemlos. Frage: Geht das noch irgendwie "eleganter" oder mit weniger Aufwand mit den Standardkomponenten von Delphi5? Schönen Vatertag noch! [edit=sakura] [Klammern ersetzt] Mfg, sakura[/edit] |
Re: [TMemo] Text mit festem Zeilenumbruch speichern
geht auch einfacher (ungetestet):
Delphi-Quellcode:
var LStr, LStr2: String;
LPos: Integer; LStream: TStream; begin LStream := TFileStream.Create(YourFilename, fmCreate); LStr := StringReplace(Memo1.Text, #13#10, '', [rfReplaceAll]); LPos := 1; while (LPos <= length(LStr)) do begin LStr2 := copy(LStr, LPos, 70) + #13#10; LStream.Write(LStr2[1], length(LStr2)); inc(LPos, 70); end; LStream.Free; |
Re: [TMemo] Text mit festem Zeilenumbruch speichern
Nö, so geht's *eben* nicht, denn der "feste Zeilenumbruch" soll keine harten Returns mitten in Wörter reindonnern, sondern Wörter zusammenhalten :shock:
Sorry :mrgreen: Edit: Daher mein "Umweg" mit einem Memo mit WordWrap, das Memo sorgt dafür, daß die Wörter "zusammengehalten" werden. Danke trotzdem! |
Re: [TMemo] Text mit festem Zeilenumbruch speichern
achso *g* stand das im ersten Beitrag auch schon? Dann überarbeit ich das ganze halt nochma
|
Re: [TMemo] Text mit festem Zeilenumbruch speichern
Zitat:
Verschwende doch BITTE Deine Zeit nicht mit einem Problem, das bereits gelöst ist! Ich will nur wissen, ob's eine bessere Lösung gibt! mfg |
Re: [TMemo] Text mit festem Zeilenumbruch speichern
Ich hoffe diesmal hat sich kein Fehler eingeschlichen
Delphi-Quellcode:
Aufruf wie folgt:
procedure WriteTextToFile(AMaxLineChars: Integer; AText, AFilename: String);
var LStr, LToWrite, LLastPart: String; LPos: Integer; LStream: TStream; begin LStream := TFileStream.Create(AFilename, fmCreate); LStr := StringReplace(AText, #13#10, '', [rfReplaceAll]); LToWrite := ''; while (LStr <> '') do begin LPos := Pos(' ', LStr); if LPos = 0 then begin LLastPart := LStr; LStr := ''; end else begin LLastPart := copy(LStr, 1, LPos - 1); LStr := copy(LStr, LPos + 1, length(LStr)); end; if LToWrite = '' then LToWrite := LLastPart else begin if length(LToWrite + ' ' + LLastPart) > AMaxLineChars then begin LToWrite := LToWrite + #13#10; LStream.Write(LToWrite[1], length(LToWrite)); LToWrite := LLastpart; end else LToWrite := LToWrite + ' ' + LLastPart; end; end; if LToWrite <> '' then LStream.Write(LToWrite[1], length(LToWrite)); LStream.Free; end;
Delphi-Quellcode:
WriteTextToFile(70, Memo1.Text, YourFilename);
|
Re: [TMemo] Text mit festem Zeilenumbruch speichern
Nö, ist es wieder nicht :wall: :wall: :wall:
Verschwende Deine Zeit BITTE BITTE BITTE nicht mit Problemen, die bereits gelöst sind. Bei meiner ursprünglichen Frage geht's *wirklich* nur um die "Eleganz" oder die "Vereinfachung" des bereits gelösten Problems!!! mfg :oops: |
Re: [TMemo] Text mit festem Zeilenumbruch speichern
JFI - Just For Information
Bei diesem Memo-Zeilenumbruch-Quatsch gehts darum, den Text einer RichEdit-Komponente irgendwie auf den harten Zeilenumbruch bei 70 Zeichen einer Memo-Komponente umzuformatieren. Es geht mir dabei nur um das Signieren/Verschlüsseln mit GnuPG. Die aktuelle Version von "Phoenix Mail 2003" kann das bereits mit zusätzlichen "AddOns" halbwegs verwirklichen. Der Betreiber der deutschen Homepage von "Phoenix Mail 2003" ist jedoch alles Andere als "KOMPETENT"!!! :drunken: |
Re: [TMemo] Text mit festem Zeilenumbruch speichern
Eine brauchbare Antwort wäre mir lieber als das wohlmeinende Herumgewurschtel von SirThornberry!
Doof, nett und unbeleckt bin ich notfalls selbst! mfg |
Re: [TMemo] Text mit festem Zeilenumbruch speichern
ich hab den von mir zuletzt geposteten source natürlich auch getestet und er macht eigentlich genau das was du fragst (sofern ich das verstanden hab). Anstelle von Memo1.Text natürlich den Text aus deiner Datei
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:41 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