Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Stringliste trennt immer Leerzeichen? (https://www.delphipraxis.net/180563-stringliste-trennt-immer-leerzeichen.html)

Mattze 29. Mai 2014 15:09

Delphi-Version: 7

Stringliste trennt immer Leerzeichen?
 
Hallo,

folgendes Problem:
Ich habe Stringlist.commatext einen String zugewiesen.
Nun wird der aber nicht nur nach Kommata zerlegt, sondern auch und dazu nach dem Leerzeichen.
Beispiel:
String:
XYZ,ABC DEF,GHI
Stringlist:
XYZ
ABC
DEF
GHI

Das will ich so natürlich nicht, sondern nur nach dem Komma separiert.

Ist dieses "falsche" Verhalten der Stringlist normal? Bzw. wie kann man das verhindern?

(Das funktioniert bei Delimitertext mit (oder ohne) vorher gesetztem Delimiter auch so! Da ist es mir zuerst aufgefallen!)

Gruß
Mattze

Aviator 29. Mai 2014 15:12

AW: Stringliste trennt immer Leerzeichen?
 
Du musst die Teilstrings in doppelte Anführungszeichen
Delphi-Quellcode:
'"XYZ","Blub blub"'
setzen. Delphi-Referenz durchsuchenTStringList.DelimitedText So ist es zumindest bei einen StringGrid.

mkinzler 29. Mai 2014 15:21

AW: Stringliste trennt immer Leerzeichen?
 
Bei neueren Delphiversionen gibt es die Eigenschaft StrictDelimiter

Mattze 29. Mai 2014 15:42

AW: Stringliste trennt immer Leerzeichen?
 
Hallo,

die "Gänsefüsschen" wären natürlich die normale Variante. Dumm nur, dass ich das ja mache, um den String in "Einzelstrings" zu zerlegen, also gar nicht weiß, wo ich die Dingerchens einfügen soll.
Ich habe aber noch eine Variante gefunden, die bei langen Strings sicher auch sehr langwierig ist. Bei mir geht das aber noch.
1. s:=stringreplace(s,' ','€€€',[rfReplaceAll]);
3. sl.delimiter:=';';
2. sl.delimitedtext:=s;
4. Verarbeitung für jeden String in sl zuerst
s:=stringreplace(s,'€€€',' ',[rfReplaceAll]) für jeden String in sl;

Gruß
Mattze

Perlsau 29. Mai 2014 16:07

AW: Stringliste trennt immer Leerzeichen?
 
Wieso folgst du nicht einfach mal dem Hinweis von mkinzler: StrictDelimiter? Damit wäre dein Problem nämlich sofort gelöst.

himitsu 29. Mai 2014 16:29

AW: Stringliste trennt immer Leerzeichen?
 
Oder Delphi-Referenz durchsuchenSplitString

Perlsau 29. Mai 2014 16:31

AW: Stringliste trennt immer Leerzeichen?
 
Den kannte ich auch noch nicht :thumb:

himitsu 29. Mai 2014 16:46

AW: Stringliste trennt immer Leerzeichen?
 
Für eine For-In-Schleife ist das praktischer.

Mattze 29. Mai 2014 17:22

AW: Stringliste trennt immer Leerzeichen?
 
Hallo, alle miteinander!

@Perlsau: Wiswo liest Du nicht einfach richtig? Dann wäre Dir sicher aufgefallen, dass ich Delphi 7 habe und da gibt es noch keinen StrictDelimiter!

SplitString werde ich mal probieren, obwohl es eigentlich nicht nötig ist.
Wie gesagt, bei mir geht es schnell genug.
Aber ohne den ganzen Überbau der Tstringlist wäre es auch nicht zu verachten.
Allerdings kann man dann nicht so schön einfach sortieren...
Ach ja... <Stöhn! Grins!>


Gruß
Mattze

himitsu 29. Mai 2014 17:50

AW: Stringliste trennt immer Leerzeichen?
 
Falls D7 SplitString nicht kennt, da gab es auch einzelne Funktionen für, falls man es nicht selber machen möchte.

Perlsau 29. Mai 2014 18:55

AW: Stringliste trennt immer Leerzeichen?
 
Zitat:

Zitat von Mattze (Beitrag 1260712)
@Perlsau: Wiswo liest Du nicht einfach richtig? Dann wäre Dir sicher aufgefallen, dass ich Delphi 7 habe und da gibt es noch keinen StrictDelimiter!

Das hat mit richtig oder falsch lesen nichts zu tun, sondern damit, daß ich kein D7 habe und somit auch nicht wissen kann, daß dort noch kein StrictDelimiter existiert. Davon abgesehen hättest du bereits mkinzler mitteilen können, daß sein Tipp bei dir nichts nützt.

Popov 29. Mai 2014 20:29

AW: Stringliste trennt immer Leerzeichen?
 
Zitat:

Zitat von Mattze (Beitrag 1260689)
Ist dieses "falsche" Verhalten der Stringlist normal? Bzw. wie kann man das verhindern?

Das ist leider normal. Ich glaube das steht auch so in der Hilfe, also das Komma zwar das Trennzeichen ist, aber Leerzeichen in Anführungszeichen kommen.

mkinzler 29. Mai 2014 21:06

AW: Stringliste trennt immer Leerzeichen?
 
Das ist kein Fehler, sonder as-designed. Deshalb wurde ja später der StrictDelimiter eingeführt, wenn man dieses Verhalten nicht will.

EWeiss 29. Mai 2014 23:13

AW: Stringliste trennt immer Leerzeichen?
 
Zitat:

Zitat von Perlsau (Beitrag 1260726)
Zitat:

Zitat von Mattze (Beitrag 1260712)
@Perlsau: Wiswo liest Du nicht einfach richtig? Dann wäre Dir sicher aufgefallen, dass ich Delphi 7 habe und da gibt es noch keinen StrictDelimiter!

Das hat mit richtig oder falsch lesen nichts zu tun, sondern damit, daß ich kein D7 habe und somit auch nicht wissen kann, daß dort noch kein StrictDelimiter existiert. Davon abgesehen hättest du bereits mkinzler mitteilen können, daß sein Tipp bei dir nichts nützt.

Warum? War doch ersichtlich.
Zitat: @mkinzler
Zitat:

Bei neueren Delphiversionen gibt es die Eigenschaft StrictDelimiter
tja und D7 gehört sicherlich nicht dazu.

gruss

BUG 29. Mai 2014 23:54

AW: Stringliste trennt immer Leerzeichen?
 
Es macht imho wenig Sinn, jetzt noch weiter darauf herum zureiten :wink:
Das Problem ist gelöst und spätere Leser des Themas haben eine weitere Lösung für neuere Delphi-Versionen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:09 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