Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi TMemo: Text mit festem Zeilenumbruch speichern (https://www.delphipraxis.net/45386-tmemo-text-mit-festem-zeilenumbruch-speichern.html)

new4toms 5. Mai 2005 09:19


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]

SirThornberry 5. Mai 2005 09:28

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;

new4toms 5. Mai 2005 09:41

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!

SirThornberry 5. Mai 2005 09:45

Re: [TMemo] Text mit festem Zeilenumbruch speichern
 
achso *g* stand das im ersten Beitrag auch schon? Dann überarbeit ich das ganze halt nochma

new4toms 5. Mai 2005 10:01

Re: [TMemo] Text mit festem Zeilenumbruch speichern
 
Zitat:

Zitat von SirThornberry
achso *g* stand das im ersten Beitrag auch schon? Dann überarbeit ich das ganze halt nochma

Es stand da nicht "ausdrücklich" drin! Da es um Textdateien geht, könnte man es aber wohl vermuten :oops:

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

SirThornberry 5. Mai 2005 10:32

Re: [TMemo] Text mit festem Zeilenumbruch speichern
 
Ich hoffe diesmal hat sich kein Fehler eingeschlichen
Delphi-Quellcode:
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;
Aufruf wie folgt:
Delphi-Quellcode:
WriteTextToFile(70, Memo1.Text, YourFilename);

new4toms 5. Mai 2005 13:22

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:

new4toms 5. Mai 2005 14:01

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:

new4toms 5. Mai 2005 18:59

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

SirThornberry 5. Mai 2005 19:10

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:48 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz