Parsen, wie geht das ?
-
Wie kann man eigentlich parsen ?
Also z.B. wenn ich im CString sowas stehen habe:"IP-Adresse . . . . .: 123.234.112.1"
Und nun würde ich gerne nur den Wert 123.234.112.1
(also die IP-Adresse) auslesen.
Ich weiß man kann irgendwie bis/zu Zeichen xy suchen und dann
den ermittelten Wert als Ergebnis übernehmen.
Aber wie macht man das nun genau ?Hintergrund:
Ich brauche die Internet-IP um sie auf einer Website in der IP-Börse
zu veröffentlichen(FTP-Upload der Datei-> ip.html).
-
Benutz doch einfach ReverseFind(':') und dann Mid
-
Aber das als Parsen zu bezeichnen ist schon eine Beleidigung
-
Juhu !
Danke MaStah, es geht.
Ich habe nur eins nicht bedacht. Ich habe mehrere ":" im
CString und muß nun ab dem 3ten ":" erst den Wert rausschreiben.
Wie setze ich die Startposition für ReverseFind(':') ?Wenn Du mir da nochmal helfen kannst bin ich happy
-
ReverseFind kennt keine Startposition. Find schon, aber die Funktion parst von vorne nach hinten, also genau anders herum als ReverseFind. Aber wenn die IP immer am Ende steht dürfte ReverseFind OK sein. Andernfalls nimm Find und gib eine Startposition an...
-
Ehm, ist ne blode Idee, aber wenn du erst MakeReverse machst und dann Find und nachher wieder MakeReverse kannst du über Find auch ein ReverseFind mit Startposition machen aber das ist eigentlich Blödsinn!
-
Ok, habe das jetzt so gelöst:
CString stringa; CString body; CString werte; int w = 1; CStdioFile File; File.Open("c:\\myip.txt", CFile::modeRead,NULL); while(File.ReadString(stringa)){ w=w++; if (w==7) { body = stringa; } } int anz2=body.ReverseFind(':'); werte=body.Mid(anz2+1); MessageBox(werte,"Internet-IP:");
Somit hab ich dann die aktuelle Internet-IP des Adapter 0.
Myip.txt wurde via "ipconfig /batch myip.txt" angelegt.
Keine Ahnung, ob das nu sauber gecoded isaber es läuft
Lutzy
-
die Zeile "w=w++;" ist niedlich
-
Original erstellt von CodeWalker:
die Zeile "w=w++;" ist niedlichJa, das ist sie. BTW: "++w;" reicht (kürzer und schneller)
-
ne. ++w; und w=w++; ist nicht wirklich das selbe
-
IMO ist w=w++; gleichbedeutend mit w=w; w+=1; und das kann man gleich als w++; schreiben ... in diesem Kontext wäre auch ++w; möglich .