Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi sowas wie Trim für TStrings? (https://www.delphipraxis.net/45351-sowas-wie-trim-fuer-tstrings.html)

Gambit 4. Mai 2005 16:32


sowas wie Trim für TStrings?
 
Hi,
ich habe hier ne Komponente, die den Inhalt einer Stringliste in HTML-Strings konvertiert. Übergeben werden TStrings in meinem Falle RichEdit.Lines.

Leider schreibt mir die Konvertierung immer am Schluss noch ein
mit rein, was wohl am Cursor im RichEdit Feld liegt.
Aber sowas wie Trim für TStrings gibts wohl nicht, oder?

Gruß

Gambit

Treffnix 4. Mai 2005 16:34

Re: sowas wie Trim für TStrings?
 
Ich verstehe dein Problem nicht genau. Warum wird ein
eingefügt? Ist am Ende der Liste ein Leerzeichen zuviel? Dann macht doch Trim( TStrings.Text )

Gambit 4. Mai 2005 16:41

Re: sowas wie Trim für TStrings?
 
sobald ich etwas in das RichEdit reinschreibe und sei es auch nur ein Leerzeichen wird bei der Konvertierung hinter dem Text ein
angefügt, warum weiß ich auch nicht.

die Funktion aus den Jedis sieht so aus:

Delphi-Quellcode:
JvStringListToHtml.ConvertToHTMLStrings(RichEdit.Lines, aList);
Delphi-Quellcode:
Trim(RichEdit.Lines.text);
nützt da nix

muss ichs wohl nach der Konvertierung manuell rausschmeißen...

Treffnix 4. Mai 2005 16:51

Re: sowas wie Trim für TStrings?
 
Zitat:

Zitat von Gambit
muss ichs wohl nach der Konvertierung manuell rausschmeißen...

Zum Beispiel...

Aber wo ist denn das Problem. Ansonsten schau halt in die Komponente, auf welches Zeichen die reagieren. Vermutlich CRLF. Aber das ist ja eigentlich auch nicht falsch.
entspricht doch mehr oder weniger dem Zeilenende im Richedit.

Gambit 4. Mai 2005 16:57

Re: sowas wie Trim für TStrings?
 
ich brauche wohl noch etwas Verständnis zu einem RichEdit. Warum gibt mir zB. bei einem einzigen Buchstaben im RichEdit die Funktion

Delphi-Quellcode:
showMessage(IntToStr(length(aList.Text)));
die Zahl 7 zurück, nachdem ich die Lines aus dem RichEdit in die Stringliste kopiert habe?

bigg 4. Mai 2005 17:18

Re: sowas wie Trim für TStrings?
 
Sollte doch so funktionieren:

Delphi-Quellcode:

procedure TrimStrings(const Strings: TStrings);
var i: Integer;
begin for i := 0 to Strings.Count -1 do
Strings[i] := Trim(Strings[i]);
end;
PS: Text muß immer wieder neu generiert werden, daher
dürfte die einfache Variante auch die langsamste sein.

Die obengenannte Version kann man sicherlich noch etwas optimieren.
(nicht getestet...)

SirThornberry 4. Mai 2005 18:48

Re: sowas wie Trim für TStrings?
 
das abschließende "
" ergibt sich weil die Routine für "TStrings.Text" in einer schleife die zeilen hintereinander hängt und mit #13#10 abschließt:
Delphi-Quellcode:
result := '';
for i := 0 to Stringliste.Count - 1 do
  result := result + Stringliste.Strings[i] + #13#10;
dadurch wird eben selbst bei einer einzelnen zeile oder eben einem einzelnen buchstaben noch ein #13#10 angehängt. Du müsstest also die routine selbst schreiben
Delphi-Quellcode:
result := '';
for i := 0 to Stringliste.Count - 1 do
  result := result + Stringliste.Strings[i] + #13#10;
if Stringliste.Count > 0 then //es kann nur was entfernt werden wenn was da ist
  SetLength(result, length(Result) - 2)); //damit wird das letzte #13#10 entfernt

Gambit 4. Mai 2005 20:02

Re: sowas wie Trim für TStrings?
 
wo hast du die Routine denn jetzt hergenommen? Aber es stimmt schon, in dem Source von Jedi lautet der Teil so:

Delphi-Quellcode:
for I := 0 to Source.Count - 1 do
      Destination.Add(Source[I] + HTMLLineBreak);
ist ja im Prinzip das Gleiche. Verstehe jetzt nur nicht, warum die deine Lösung da jetzt nicht mit eingebaut haben? Wahrscheinlich, weil es auch ziemlich egal ist, ob am Ende noch ein
kommt oder nicht...

SirThornberry 4. Mai 2005 20:39

Re: sowas wie Trim für TStrings?
 
ich hab die jedies nicht, deswegen war das eher geraten. schreib doch einfach den von den jedies damit das mit abgeändert wird in der nächsten version. und da du die sourcen hast kannst du es bei dir auch einfach ändern.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:05 Uhr.

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