AnsiString --> TStringList
-
Ich lese ein AnsiString aus ner Datei, diesen möchte ich am ";" splitten und in eine TStringList speichern
Jemannt ne Idee??
MfG
mnhg
-
Klar. Kuck Dir die Methoden von AnsiString an und blätter in der FAQ und nutz die Suchfunktion... Gleiche 3 Ideen auf einmal... wo gibts denn sowas sonst noch...
-
-
neu = AnsiReplaceStr(";", "\n", alt); StringList->Text = neu;
Fertig.
-
-
Nein, ich ersetze die ";" durch einen Zeilenumbruch. Weist man das dann der Text-Eigenschaft einer TStringList zu, behandelt sie diesen einen String wie mehrere Zeilen und man kann sie ganz normal über Strings[Index] auslesen. Ist einfach krüzer so. Mach' ich selber andauernd...
-
Hmm...
wenn ich Splitte dann möchte ich den Rest auch nicht...
aber das ist natürlich auch eine Idee die ich mir merke, die kann man gut
brauchen wenn man ihn "zerhacken" will diesen AnsiSund kürzer als wie 'Pos()' thx
-
mnhg schrieb:
Ich lese ein AnsiString aus ner Datei, diesen möchte ich am ";" splitten und in eine TStringList speichern
Hört sich für mich aber eher so an, als ob er _alles_ möchte.
-
also wenn du in einem string einen teilstring hast, der am anfang und am ende mit einem ";" gekennzeichnet ist, dann haett ich eventuell etwas fuer dich.
AnsiString GetSubStr(int x,AnsiString buf,AnsiString z) { AnsiString tmp; char *c=buf.c_str(); int istart=0,iend=0,count=0,i=0; while(*(c+count)!='\0' && i<=x) if(*(c+count++)==';') { i++; if(i==x) istart=count; else if(i>x) { iend=count; break; } } tmp=buf.SubString(istart+1,iend-istart-1); ShowMessage("Ausgabe: "+tmp); return tmp; }
c=ist das z-te vorkommen eines teilstrings in dem string, falls es mehrere geben sollte.
buf=ist der gesammte string;
z=das trennzeichen. in deinem fall ";"Meep Meep
-
Praktisch, wenn x, buf und z so für sich selbst sprechen
Außerdem find ich's immer klasse, wenn Leute fertige Lösungen posten, die dem Frager nur bedingt weiterhelfen...
Besser fände ich: er sagt, welches Problem er hat und was er schon versucht hat. Vielleicht scheiterte es ja nur an einer Kleinigkeit. Das jemand aber in der Lage ist, sich Gratisinformationen erstmal selber zu besorgen, setze ich aber voraus. Soweit ich informiert bin, hat der BCB ab V1.0 eine ganz ordentliche Hilfe dabei... Wenn man dann ggf. daraus zitiert und etwas frägt, was man nicht versteht, dann is das auch ok. Aber einfach gar nicht kucken oder sich ein Programm schrittweise von der Community programmieren lassen find ich ziemlich schwach... Wozu dann noch Bücher, Kurse und eigene Kreativität?
-
MeepMeep:
Das ist nicht dein Ernst oder? Hast du das selbst geschrieben oder irgendwo rauskopiert?
Peinlich ist es so oder so, und nicht nur, weil es voll am Thema vorbeigeht.Zum Einlesen in die StringList: ab BCB6 bieten sich hier die TStringList-Member Delimiter und DelimitedText an.
-
hallo Jansen
ich hab das so verstanden, das er in einem string eine passage hat, die am anfang und am ande mit ";" gekennzeichnet ist.
aus der BCB Hilfe:
Mit Delimiter können Sie das Trennzeichen ermitteln oder festlegen, das von der Eigenschaft DelimitedTextverwendet wird. DelimitedText führt alle Strings im TStrings-Objekt zu einem String zusammen, in dem die einzelnen Strings durch das in Delimiter festgelegte Zeichen voneinander getrennt sind
wie kann man mit Delimiter und DelimitedText sagen, das man nur den teilstring der mit ";" eingeschlossen ist, in die TStringList einfuegen will ? und wenns mehrere solcher teilstrings gibt, nur einen bestimmten ?
hab den paar zeilen uebrigens selbst geschrieben. auch wenn es schlechter code ist, finde ich es nicht sehr angenehm, wenn man es so vor die nase geknallt bekommt.
schliesslich hat jeder mal klein angefangen, oder bist du mit deinen kenntnissen schon auf die welt gekommen ?
tut mir leid, das ich mich vorher nicht genau informiert hatte, das man keine fertigen code-snippets posten darf.
Meep Meep
-
Jansen (und ich) wollte Dich nicht beleidigen. Aber es ging aber darum, einen AnsiString in eine TStringList zu packen, in der Abschnitte mit ";" getrennt sind.
Ich sagte auch nicht, daß es verboten ist, Code-Schnippsel zu posten. Aber was hilft es einem Frager, ihm einfach einen Codeabschnitt vorzuknallen, den er nicht versteht? Basic's muß jeder Programmierer lernen. Da kann man sich nicht durchmogeln. Und falls doch, so wird man nie ein einigermaßen guter Programmierer... Von Analyse mal ganz zu schwiegen...
-
Danke
5min nach dem Senden drücken ist mr selber ne Lösung eingefallen
Trotzdem Danke
MfG
mnhg
-
Ja und, wie lautet deine Lösung? Es gehört zum guten Ton, sowas mitzuteilen, ausserdem ist ja noch das Rätsel zu klären, was genau du denn einlesen wolltest (einen String zwischen zwei ';' oder mehrere, durch ';' getrennte Strings).
-
Läuft doch aufs selbe raus
neu = AnsiReplaceStr(";", "\n", alt); StringList->Text = neu;
oder
neu = AnsiReplaceStr(";", ";\n", alt); StringList->Text = neu;
MfG
mnhg