Ansistring Durchsuchen
-
Hallo,
Also ich habe jetzt einen Text als AnsiString vorliegen. In dem Gibt es folgenden aufbaue:
<table> <irgendein code> <tr> <td>Name</td> <td>Wert1</td> <td>Wert2</td> </tr> <tr> <td>Name2</td> <td>Wert1</td> <td>Wert2</td> </tr> usw....Jetzt möhcte ich daraus den Namen und die zugehörenden Werte Auslesen. Habe schon gesucht , aber entweder die falschen begriffe oder es gibt noch nix in der richtung^^
wäre um jede hilfe dankbar!
gruß
Scub
-
AnsiString
Methoden Pos und SubString helfen dir.
-
Ok, danke hat damit geklappt allerdings hab ich einen fehler den ich net rausbekomme, hoffe jemand versteht meinen code und sieht villeicht sogar noch den fehler ^^
for(int i=0;i<2;i++){ find1 = antwort.Pos("fliess11px-grey"); antwort = antwort.Delete(1,find1+16); } find2 = antwort.Pos("</table>"); antwort = antwort.Delete(find2,antwort.Length()); int trennab=0; int arraydurchlauf=0; double spos=0; while(trennab==0) { spos=antwort.Pos("</tr>"); if(spos!=0){ usercode[arraydurchlauf][0]=antwort.SubString(4,spos); arraydurchlauf++; antwort = antwort.Delete(4,spos +4);}else{trennab=1;} } trennab=0; arraydurchlauf=0; spos=0; double sposs=0; //while(trennab==0) //{ //if(arraydurchlauf<2){ Label2->Caption= usercode[0][1]; spos=usercode[arraydurchlauf][0].Pos("left:10px;"); sposs=usercode[arraydurchlauf][0].Pos("</td>"); usercode[arraydurchlauf][1]=usercode[arraydurchlauf][0].SubString(spos+5,sposs -1); usercode[arraydurchlauf][0]=usercode[arraydurchlauf][0].Delete(1,sposs +4); spos=usercode[arraydurchlauf][0].Pos("width:90px;"); sposs=usercode[arraydurchlauf][0].Pos("</td>"); usercode[arraydurchlauf][2]=usercode[arraydurchlauf][0].SubString(spos+5,sposs)-1; usercode[arraydurchlauf][0]=usercode[arraydurchlauf][0].Delete(1,sposs+4); spos=usercode[arraydurchlauf][0].Pos("width:110px;"); sposs=usercode[arraydurchlauf][0].Pos("</td>"); usercode[arraydurchlauf][3]=usercode[arraydurchlauf][0].SubString(spos+5,sposs-1); usercode[arraydurchlauf][0]=usercode[arraydurchlauf][0].Delete(1,sposs+4); //arraydurchlauf++; //} //else{trennab=1;} //} Label2->Caption= usercode[0][1];
-
sry hab was vergessen, lauf Borland taucht der fehler in Zeile 36/37 auf und lautet:
Project Project1.exe raised exception class EVariantTypeCastError with message 'Could not convert variant of type (String) into type (Double)'. Processed stopped.
Also wenn ich den fehler richtig verstehe dann will er nen String in eine Double Variable übergeben óder umgekehrt. Aber ich weiß nicht wieso er das will?
gruß
Scub
-
Problem is nun um 5 uhr und 4 Bier später gelößt^^
Falls jemand ähnlich probleme haben sollte:
Pos Duchsucht den String nur nach dem ersten Zeichen, also wenn ich z. b schreibe:
Ansistring string1="Der ermöglicht das"
string1.Pos("ermöglicht");
liefert dann 2 Zurück, weil dnur der erste Buchstabe von ermöglicht also "e" zählt welcher in "Der" vorkommt!
gruß
Scub
-
scub2 schrieb:
Pos Duchsucht den String nur nach dem ersten Zeichen [...]
Das war wohl mindestens ein Bier zuviel.

Pos gibt die Stelle im AnsiString zurück, an der der gesuchte Teilstring beginnt. BeiAnsiString string1="Der ermöglicht das"; int x = string1.Pos("ermöglicht");ist x also 5.
-
außerdem ist das mit dem delete auch nicht so elegant gelöst.
Mit Pos und SubStr hast du alle Werkzeuge, die du zum zerlegen brauchst.
Ohne irgendwas löschen zu müssen.
-
Ok, vielen dank das macht die sache einfacher.
Ne war kein Bier zuviel^^ hatte in irgendeinem Forum über Google gelesen das Pos nur ein Zeichen suchen kann.
nochmals danke.
gruß
Scub