Explode
-
Hallo
Du hast nicht berücksichtigt, das bei AnsiString (und nur bei AnsiString) die Elemente (also die chars) nicht von 0 bis Length() -1 gezählt werden, sondern von 1 bis Length().
Und das betrifft auch die AnsiString-Methoden.bis bald
akari
-
Und was genau soll ich jetzt machen?^^ (Bin heute n bisschen dumm)
-
Du mußt als Untergrenze für deine Methodenaufrufe den richtigen Wert angeben - "sestring[apos] = (sstring.SubString(1,pos));"
-
"Im Projekt explode.exe ist eine Exception der Klasse EAccessViolation aufgetreten. Meödung:'Zugriffsverletzung bei Adresse 004207ED.
Lesen von Adresse FFFFFFF6.' Prozeß wurde angehalten. Fortfahren mit Einzelschritt oder Start."Geht nicht^^
-
Beim Delete() mußt du das vermutlich genauso machen.
(kleiner Tip: Klick mal auf "Einzelschritt" und schau dir genauer an, was das Programm macht)
-
Hab ich^^
for(pos=1;pos>-1;) { pos=sstring.Pos("."); if(pos!=-1) sestring[apos] = (sstring.SubString(1,pos)); sstring.Delete(1,pos); apos++; }Und das mit einzelschritt wieß ich net wie geht
-
Da fehlen noch Klammern beim if
if(pos!=-1) { sestring[apos] = (sstring.SubString(1,pos)); sstring.Delete(1,pos); }Wegen Debugging schau mal hier rein
http://www.junix.ch/bcb/help/debug.html
-
klappt immer noch nicht^^
-
AnsiString fangen immer bei 1 an, d.h.
if(pos > 0)ist hier notwendig
-
und beim for auch
for (pos = 1; pos > 0;)oder bei
for (pos = 1; pos > -1;)belassen?
-
Warum nimmst du da überhaupt eine for-Schleife?
Das hier sollte auch gehen. sestring muß dabei ein Array der Größe >=limit sein.apos = 0; while(((pos = sstring.Pos(".")) > 0) && (apos < limit)) { sestring[apos++] = (sstring.SubString(1,pos)); sstring.Delete(1,pos); }