![]() |
String anhand eines Trennzeichens zerlegen
hallo zusammen,
ich habe einen String der durch folgendem delimeter getrennt ist: Wert1|Wert2 Das steht alles in einem kompleten String. es geling mir nicht, warum auch immer, nicht diese beiden werte zu trennen. ich habs versucht mit
Delphi-Quellcode:
ich habe leider in sTemp immer noch den kompletten zugewiesenen String, was mache ich falsch?
sTemp ist der komplette String, als Beispiel sTemp := "test|Test1"
s1 := Copy(sTemp,0, Pos('|',sTemp) - 1 ); Delete(sTemp,0, Pos('|',sTemp) + 1); // um den ersten Teil abzuschneiden s2 := sTemp; // um den Rest zuzuweisen |
AW: Verzweifelte Frage ;-)
1. Ganz blöder Titel des Posts!
2. Welche Delphi-Version? (bzw. welche Target-Platform) |
AW: String anhand eines Trennzeichens zerlegen
Zitat:
![]() |
AW: String anhand eines Trennzeichens zerlegen
Ich habe den Titel kurzerhand angepasst. Und ja, die Bitte ist grundsätzlich vorhanden, dass Ihr einen inhaltlich aussagekräftigen Titel wählt.
|
AW: String anhand eines Trennzeichens zerlegen
Sorry das der Titel "Blöd" war :-( ich arbeite mit Delphi 10.1 Berlin:cry:
|
AW: Verzweifelte Frage ;-)
Du kannst deinen ersten Post bearbeiten und unten rechts auf [Erweitert], da lässt sich dann auch der Titel ändern. :zwinker:
Die Delphiversion kannst in deinem Profil angeben und auch in einigen Unterforen oben nochmal auswählen (links neben dem Titel), falls es abweichend ist. Zitat:
(außer wenn man für iOS/Android kompilert, denn da ist
Delphi-Quellcode:
der Standard)
{$ZEROBASEDSTRINGS ON}
In etwas neuen Delphis kann man aber auch über den StringHelper arbeiten, der ist überall mit 0 indiziert. ![]() außerdem
PS:
Delphi-Quellcode:
S := 'aaa|bbb';
S1 := GetShortHint(S); S2 := GetLongHint(S); ![]() |
AW: String anhand eines Trennzeichens zerlegen
Mein Problem ist das das delete überhaupt nichts bewirkt :-( Der erste Teil wird nicht abgeschnitten
|
AW: String anhand eines Trennzeichens zerlegen
Oder wenn es ein anderer Trenner als | ist, z.B. das Semikolon:
Delphi-Quellcode:
S := 'aaa;bbb';
N := Pos(';',S); S1 := (Copy(S,1,N-1)); Delete(S,1,N); S2 := S |
AW: String anhand eines Trennzeichens zerlegen
Zitat:
|
AW: String anhand eines Trennzeichens zerlegen
Mit den korrekten Werten für 1-basierte Strings sollte es gehen:
Delphi-Quellcode:
Etwas komfortabler geht es aber so:
s1 := Copy(sTemp, 1, Pos('|', sTemp) - 1);
Delete(sTemp, 1, Pos('|', sTemp)); // um den ersten Teil abzuschneiden s2 := sTemp; // um den Rest zuzuweisen
Delphi-Quellcode:
// arr: TArray<string>;
arr := sTemp.Split(['|']); s1 := arr[0]; s2 := arr[1]; |
AW: String anhand eines Trennzeichens zerlegen
Vielen Dank euch allen!!
|
AW: String anhand eines Trennzeichens zerlegen
Hallo,
StringList und Delimiter. Nicht ebend schnell, funktioniert aber. |
AW: String anhand eines Trennzeichens zerlegen
Gibt auch noch String.Split:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var s: String; strParts: TArray<String>; begin s := 'Hallo|Welt'; strParts := s.Split(['|']); end; |
AW: Verzweifelte Frage ;-)
Zitat:
|
AW: String anhand eines Trennzeichens zerlegen
Wieso benutzt du nicht einfach Split() ? Wieso immer so kompliziert.
|
AW: Verzweifelte Frage ;-)
Zitat:
Dankesehr für den Link, was es nicht alles gibt :thumb: |
AW: String anhand eines Trennzeichens zerlegen
|
AW: String anhand eines Trennzeichens zerlegen
Wieso kramst du eine Split-Funktion aus 2011 raus, obwohl es eine in der VCL gibt? :stupid:
|
AW: String anhand eines Trennzeichens zerlegen
Zitat:
Nicht jede VCL Version unterstützt Split. Informiere dich doch besser mal. :stupid: Zudem kann man sich hier die variable aSplit: TSplitStrArray; sparen wenn man anstelle dieser direkt Result übergibt. Auch wenn er sie mit Delphi 10.1 nicht benötigt kann sie vielleicht jemand anderes gebrauchen. Zudem ist es interessant wie man so etwas programmatisch lösen kann als immer nur vorgekautes zu verwenden besonders was Anfänger betrifft. |
AW: String anhand eines Trennzeichens zerlegen
Zitat:
|
AW: String anhand eines Trennzeichens zerlegen
Zitat:
Wann oder wie lange programmierst du schon mit Delphi und gestehst Anfängern nicht zu zu lernen? Seltsame Weltanschauung Nebenbei habe ich herausgelesen das er lernen möchte wie man einen String zerlegt. Mit der VCL Split Funktion tut er es definitiv nicht. Ja ist einfach aber nicht hilfreich. |
AW: String anhand eines Trennzeichens zerlegen
Danke nochmals allen für die Antworten!!! der String kann jedoch folgendermaßen aussehen: Beispiel A|1|B|2|C|3 etc. Ich benötige immer die erste Bez. inkl den hinter der Pipe stehenden Wert, danach den nächsten usw. Deshalb dachte ich mir es wäre gut den String auseinander zu nehmen oder?
|
AW: String anhand eines Trennzeichens zerlegen
Guck dir doch mal Split an und vergiss das mit GetShortHint und GetLongHint.
|
AW: String anhand eines Trennzeichens zerlegen
Ich steh grad ein wenig auf dem "Schlauch", hast Du vlt ein Beispiel für mich? und Danke für die Antwort!!
|
AW: String anhand eines Trennzeichens zerlegen
Die beiden extrahierten Werte sollen in ein Object geschrieben werden, ohne Pipe....
|
AW: String anhand eines Trennzeichens zerlegen
Delphi-Quellcode:
var
s: string; BezeichnerUndWerte: TArray<string>; begin s := 'A|1|B|2|C|3'; BezeichnerUndWerte := s.Split.Split(['|'])); {* Ergebnisse: BezeichnerUndWerte[0] > A BezeichnerUndWerte[1] > 1 BezeichnerUndWerte[2] > B BezeichnerUndWerte[3] > 2 BezeichnerUndWerte[4] > C BezeichnerUndWerte[5] > 3 *} end; |
AW: String anhand eines Trennzeichens zerlegen
Ich danke Dir für die Antwort, genau das habe ich gesucht!!!
|
AW: String anhand eines Trennzeichens zerlegen
Die Antwort dazu stand schon am Ende auf der ersten Seite.
|
AW: String anhand eines Trennzeichens zerlegen
Das stimmt, ich hab sie nur nicht gleich richtig verstanden ;-( dennoch vielen Dank!!
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:41 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