![]() |
String in drei teilen
ich habe einen string der so aussieht "test|test1|test2" nun will ich daraus 3 strings machen die dann so ausehen "test", "test1", "test2". weiß jeman wie dass funktioniert
|
AW: String in drei teilen
|
AW: String in drei teilen
in einem php scribt sieht dass so aus
Code:
wie sieht dass in delphi aus.
$ausgabe = stripslashes($ausgabe);
$zerlegen = explode("|", $ausgabe); |
AW: String in drei teilen
Lösung per Stringliste
Delphi-Quellcode:
sl.Strings[0] enthält dann 'test1';
var
sl: TStrings; ... begin sl := TStringlist.Create; sl.Delimiter := '|'; sl.DelimitedText := 'test|test1|test2'; ... sl.Free; |
AW: String in drei teilen
Zitat:
|
AW: String in drei teilen
Entweder eine StringListe wie von mkinzler schon genannt oder Du bastelt Dir eine eigene Funktion:
z.B.
Delphi-Quellcode:
Aufruf:
procedure ExplodeString(DelimitedString : String; VAR Part1, Part2, Part3 : String);
begin (* Erster Teil *) Part1 := copy(DelimitedString, 1, Pos('|', DelimitedString)-1); (* Zweite Teil *) DelimitedString := Delete(DelimitedString, 1, Pos('|', DelimitedString)); Part2 := copy(DelimitedString, 1, Pos('|', DelimitedString)-1); (* Dritter Teil*) Part3 := copy(DelimitedString, Pos('|', DelimitedString)+1, Length(DelimitedString)); end;
Delphi-Quellcode:
end;
VAR GanzerString, Teil1, Teil2, Teil3 : String;
[...] GanzerString := 'ErsterTeil|ZweiterTeil|DritterTeil'; ExplodeString(GanzerString, Teil1, Teil2, Teil3); ShowMessage(Teil1); ShowMessage(Teil2); ShowMessage(Teil3); [/DELPHI] ... Ungetestet! |
AW: String in drei teilen
Zitat:
|
AW: String in drei teilen
scrat1979 ich habe dein code mal ausprobiert da der von mkinzler nicht funktioniert hatt aber es kommen folgende fehlermeldungen:
[Error] Unit2.pas(30): Incompatible types: 'String' and 'Integer' [Error] Unit2.pas(32): Incompatible types: 'String' and 'procedure, untyped pointer or untyped parameter' [Fatal Error] Project2.dpr(5): Could not compile used unit 'Unit2.pas' |
AW: String in drei teilen
Wobei die Funktion nicht auf 3 Parts begrenzt sein sollte :)
Schöner wäre eine while-do Schleife und als Result ein dynamisches Array :) |
AW: String in drei teilen
Na wie wäre es mal mit selber testen ?
|
AW: String in drei teilen
Zitat:
Delphi-Quellcode:
Klappt problemlos.
procedure TForm1.btn1Click(Sender: TObject);
var sl: TStringlist; // oder auch TStrings begin sl := TStringlist.Create; sl.Delimiter := '|'; sl.DelimitedText := 'test|test1|test2'; ShowMessage(sl.Strings[0]); // zeigt test an sl.Free; end; |
AW: String in drei teilen
Was funktioniert denn bei mkinzlers Code nicht? Das ist einer der einfachsten drei- bis vierzeiler für Delphi.
Sherlock |
AW: String in drei teilen
Früher (ältere Delphiversionen) gab es keine Möglichkeit einen Delimiter zu setzen.
Explode(9 aus der CodeLib sollte aber funktionieren |
AW: String in drei teilen
dass heißst ich muß erst einmal die länge des strings ermittelln und dann eis abziehen kippt es da nich eine einfachere methode
|
AW: String in drei teilen
Du solltest allgemein den Umgang mit Pos und Copy lernen. Darauf bauen solche Dinge nunmal auf und du wirst immer wieder vor solchen Problemen stehen.
|
AW: String in drei teilen
Zitat:
|
AW: String in drei teilen
is ja komisch ich habe den code von mkinzler erneut in delphi eingegeben und jetzt funktioniert es plötzlich
|
AW: String in drei teilen
nichts für ungut aber ich hab da eher den anschein das dir generell das verständniss
für einige grundfunktionen fehlt, vielleicht mal ein paar kleine tutorials durchlesen hilft meistens schon enorm. Ich sag nicht das ich alles kann allerdings kann man viel durch tutorials lernen. Gibt glaub ich sogar nen thread hier im forum wo verschiedene tutorials aufgelistet werden. Wie gesagt ist nciht böse gemeint aber an vielen deiner beiträge merkt man schon das dir da was fehlt. Mfg Capa |
AW: String in drei teilen
Zitat:
|
AW: String in drei teilen
Zitat:
|
AW: String in drei teilen
Zitat:
Delphi-Quellcode:
Edit: getestet mit D2010
procedure TForm1.Button1Click(Sender: TObject);
var sl: TStrings; begin sl := TStringlist.Create; sl.Delimiter := '|'; sl.DelimitedText := 'test0|test1|test2'; ShowMessage(sl[0]+'+'+sl[1]+'+'+sl[2]); sl.Free; end; Edit2: Sorry, vergesst es, ist ja schon geklärt, ich hatte das Browserfenster ne Weile offen und nicht aktualisiert :D |
AW: String in drei teilen
Aber dann bitte so:
Delphi-Quellcode:
Bei Delphi-Versionen < 2006 hat man auf diese Weise aber Kummer, da sie StrictDelimiter noch nicht kennen. Das bedeutet, dass dort zusätzlich zum Delimiter auch Leerzeichen als Trenner verwendet werden. In dem Fall muss man sich anders behelfen.
procedure TForm1.Button1Click(Sender: TObject);
var sl: TStrings; begin sl := TStringlist.Create; try sl.Delimiter := '|'; sl.StrictDelimiter := true; //erst ab Delphi 2006 sl.DelimitedText := 'test0|test1|test2'; ShowMessage(sl[0]+'+'+sl[1]+'+'+sl[2]); finally sl.Free; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:38 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