Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi String zerlegen; Trenner (https://www.delphipraxis.net/102107-string-zerlegen%3B-trenner.html)

KPBecker 23. Okt 2007 15:46


String zerlegen; Trenner
 
Hallo, Delphi-Praktiker,

ich erinnere mich, daß es für Stringlists die Möglichkeit gibt, Substrings anhand eines Trenners zu extrahieren. (SirThornberry erwähnt das auch in einem Beitrag vom 17.07.2004)

Bloß: Ich finde diese Funktion nicht.
Wie heißt das Ding ?

Betste Grüße
Klaus-Peter

Phoenix 23. Okt 2007 15:48

Re: String zerlegen; Trenner
 
Du musst den .Delimiter setzen (Trennzeichen) und sagst dann Liste.DelimitedText := 'Dein;Text'.
Den Rest macht die Liste von alleine.

Allerdings habe ich die Erfahrung gemacht, dass die TStringList auch gerne bei sonstigen Trennern wie Leerzeichen, Kommas, Semikola im Text trennt, auch wenn in Delimiter was anderes festgelegt war.

SirThornberry 23. Okt 2007 15:49

Re: String zerlegen; Trenner
 
hier ist das ding:
http://www.delphipraxis.net/internal...=205244#205244

mkinzler 23. Okt 2007 15:53

Re: String zerlegen; Trenner
 
Delphi-Quellcode:
var
  sl: TStrings;
...
begin
   sl := TStringList.Create;
   ...
   sl.delimiter := '<Trennzeichen>';
   sl.DelimitedText := '<Text>';
   s1 := sl.Strings[0]; //1. Teilstring
   s2 := sl.Strings[1]; //2. Teilstring
...
Aber Achtung: Leerzeichen führen zusätzlich zur Trennung

KPBecker 23. Okt 2007 15:56

Re: String zerlegen; Trenner
 
Zitat:

Zitat von SirThornberry

Das ist die Eigenentwicklung von Dir, die ich zitierte.
Frage: Wie heißt die Delphi-eigene Funktion, auf die Du dort hinweist ?

Den Tip von Sebastian schaue ich mir an.

Klaus-Peter

Phoenix 23. Okt 2007 15:59

Re: String zerlegen; Trenner
 
Das ist genau das. Und mein Tip ist das gleiche, was mKinzler mit Beispielcode geliefert hat.
Delimiter setzen, Text zuweisen, fertig. Aber das geht glaub ich erst seit Delphi 5.

KPBecker 23. Okt 2007 16:25

Re: String zerlegen; Trenner
 
Hallo,

im Prinzip ist Alles prima, der Tip von mkinzler und Sebastian läuft, aber ...

Sebastian hat leider recht:
Als Trenner habe ich '|' gesetzt, aber das Blank wird auch als (zusätzlicher) Trenner interpretiert.
(It's not a bug, it's a feature ???)

1. Was soll der Unsinn (der es doch wohl ist) ?
2. Kann man das sl.DelimitedText:= <Text> trotzdem zu sinnvollem Laufen bringen ?

Klaus-Peter

Apollonius 23. Okt 2007 16:28

Re: String zerlegen; Trenner
 
Eine reichlich arme Lösung wäre ein davorgesetztes StringReplace, das die Leerzeichen entweder ganz entfernt, wenn sie nicht benötigt werden, oder aber die Leerzeichen in wenig genutzte Symbole verwandelt, falls du sie brauchst. Du solltest im letzteren Fall allerdings noch über die Strings iterieren und die Ersetzung wieder rückgängig machen, sofern dann keine neue Trennung durchgeführt wird. Wie gesagt, reichlich arm.

KPBecker 23. Okt 2007 16:32

Re: String zerlegen; Trenner
 
Hallo, Philip,

die Eleganz läßt, wie du richtig sagst, dabei sicher zu wünschen übrig.
Man könnte dann fast diese Funktion wieder selbst schreiben.

Klaus-Peter

Apollonius 23. Okt 2007 16:37

Re: String zerlegen; Trenner
 
Wo wir schon dabei sind: Warum machst du das eigentlich nicht? Eine einfache while-Schleife mit einem PosEx-Aufruf im Innern sollte dafür doch ausreichen...


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:24 Uhr.
Seite 1 von 3  1 23      

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