Delphi-PRAXiS
Seite 3 von 3     123   

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)

Ralf Kaiser 23. Okt 2007 18:29

Re: String zerlegen; Trenner
 
Zitat:

Zitat von KPBecker
Als Trenner habe ich '|' gesetzt, aber das Blank wird auch als (zusätzlicher) Trenner interpretiert.
(It's not a bug, it's a feature ???)

Es ist wirklich ein Feature!

Ab D2006 gibt es ein zusätzliches Property in TStringList: "StrictDelimiter: boolean".

Wenn das true ist wurd nur noch der Delimiter als Trenner benutzt, ansonsten zählen auch Whitespaces als Trenner.

Voreinstellung ist dabei false, so verhält sich die TStringList so wie es vor D2006 immer üblich war (also Zeilenvorschübe und Whitspaces als zusätzliche Trenner)

Ciao,
Ralf

Edit: Oops, zweite Seite des Threads nicht gesehen, da wird ja schon von StrictDelimiter gesprochen, sorry.

Muetze1 23. Okt 2007 23:20

Re: String zerlegen; Trenner
 
Naja, eher wurde ein damaliger Bug mit einer neuen Eigenschaft abwärtskompatibel gefixt.

OldGrumpy 24. Okt 2007 07:08

Re: String zerlegen; Trenner
 
Zitat:

Zitat von KPBecker
Die Frage war nach einer Delphi-eigenen Funktion (die aber auch funktionieren sollte).

Die Antwort von marabu ist wohl ziemlich untergegangen, die Stringlist funktioniert sehr wohl, nur sind die Defaultwerte für manche Eigenschaften sehr unglücklich gewählt. So ist zum Beispiel StrictDelimiter standardmäßig auf False gesetzt, was zu unerwarteten Ergebnissen führt:

Zitat:

Zitat von Delphi Hilfe
Use this property to specify whether the Delimiter is the only value used within the DelimitedText property. If set to True, individual strings in DelimitedText are separated only by the character that is the value of Delimiter. If set to False, individual strings in DelimitedText can be separated by a space, a non-printable character, or the character that is the value of Delimiter.

EDIT: Da war ich wohl etwas langsam *gähn* Noch viel zu früh und der Kaffee wirkt auch noch nicht ;)

SirThornberry 24. Okt 2007 08:39

Re: String zerlegen; Trenner
 
Zitat:

Zitat von KrasserChecker
Ich frage mich ja, warum immer alles so umständlich sein muß :gruebel:
Es geht doch nur darum, einen Text der an allen Vorkommen von ; aufzutrennen.
Da die Stringliste hier ja tatsächlich nicht so recht mit "DelimitedText" funktioniert machen wir es doch einfach(!) selbst:
Delphi-Quellcode:
procedure SplitString(iTextToSplit: string; iDelimiter: Char; ioSL: TStrings);
begin
  ioSL.Clear;

  ioSL.Text := StringReplace(iTextToSplit, iDelimiter, sLineBreak, [rfReplaceAll]);
end;

warum so kompliziert - ganz einfach. Weil deine Funktion fehlerhafte Ergebnisse liefert :-D
Hab ich folgenden Text
Zitat:

Überschrift1

Text1
##
Überschrift2

Text2
so würden bei deinem Beispiel Überschrift1 und Text1 nicht mehr zusammen sein weil auch die #13#10 wie üblich interpretiert werden.
Bei dir hätte die Stringlist dann also 6 oder 7 einträge und nicht 2 wie gewünscht (für jeden Abschnitt einen Stringlist eintrag)

Luckie 24. Okt 2007 09:13

Re: String zerlegen; Trenner
 
Auf Matze scheint irgendwie niemand zu hören-. Also hier noch mal: Explode

Warum nicht auf bewährtes zurückgreifen?

3_of_8 24. Okt 2007 11:29

Re: String zerlegen; Trenner
 
Du meinst wohl eher auf mich?

Luckie 24. Okt 2007 11:36

Re: String zerlegen; Trenner
 
Zitat:

Zitat von 3_of_8
Du meinst wohl eher auf mich?

Ups. :duck:

KPBecker 24. Okt 2007 16:04

Re: String zerlegen; Trenner
 
Hallo, Delphi-Praktiker,

marabu und Ralf haben die Lösung (für mein Problem) genannt:
Den 'StrictDelimiter' hatte ich übersehen.

Daß man in ähnliche Probleme noch deutlich mehr Aufwand stecken kann, ist unbenommen. Ein schönes Beispiel wurde von shmia genannt: Delimiter, die in eingerahmtem ("...") Text enthalten sind, dort aber nicht als Trenner gelten sollen. ...

Vielen Dank,
Klaus-Peter


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:51 Uhr.
Seite 3 von 3     123   

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