Hallo Experten,
bevor ich da jetzt noch Wochen grübel, hab ich beschlossen doch mal jemanden zu fragen, der sich mit sowas auskennt. Und das Google-Orakel liefert dazu ausnahmsweise auch keine befriedigenden Antworten.
Also, ich will ein Bytearray nach einem String durchsuchen und mir die jeweilige Position zurückliefern lassen. Dafür hab ich folgende Methode geschrieben:
Der auskommentierte Text war mal Testweise ob das was an der Sache ändert, aber das Ergebnis ist genau das Gleiche. Und zwar habe ich folgende Strings (u.a.) getestet, die sind auch ganz sicher jeweils nur einmal in der Textdatei vorhanden:
String am Anfang (Zeile 6) der in den buffer eingelesenen Textdatei zum testen:
"GarageDisplayFlags=" -> richtige Position
Eigentlich gesuchter String in der Textdatei:
"PhysicalModelFile=" ->nicht gefunden
"PhysicalM" -> richtige Position
"PhysicalMo" -> nicht gefunden
"alModelFile=" -> falsche Position (vollkommen anderer Text wird gefunden)
"calModelFile=" -> richtige Position
"icalModelFile=" -> falsche Position
"sicalModelFile="-> falsche Position
String am Ende der Textdatei:
"SlowReboundRange"-> falsche Position
"SlowReboundRange=" -> falsche Position
Letzte Zeile der Textdatei:
"BrakeGlow"-> richtige Position
"BrakeGlow="-> falsche Position
Was soll das denn bitte???
Wo muss ich den Fehler suchen, wenn mir das vielleicht einer sagen könnte...?
Danke schonmal!
bevor ich da jetzt noch Wochen grübel, hab ich beschlossen doch mal jemanden zu fragen, der sich mit sowas auskennt. Und das Google-Orakel liefert dazu ausnahmsweise auch keine befriedigenden Antworten.
Also, ich will ein Bytearray nach einem String durchsuchen und mir die jeweilige Position zurückliefern lassen. Dafür hab ich folgende Methode geschrieben:
Code:
int CLeoEditor::findPos(String^ search, array<unsigned char>^ buffer) { array<Char>^ seaToArr = search->ToCharArray(); /*array<unsigned char>^ seaToArr = gcnew array<unsigned char>(search->Length); for(int i=0; i<search->Length; i++){ seaToArr[i] = search[i]; }*/ for(int i=0; i < buffer->Length; i++) { if(buffer[i] == seaToArr[0]){ for(int j=0; j < seaToArr->Length; j++){ if(buffer[i++] == seaToArr[j]){ if(j == seaToArr->Length-1) return i; } } } } return 0; }
String am Anfang (Zeile 6) der in den buffer eingelesenen Textdatei zum testen:
"GarageDisplayFlags=" -> richtige Position
Eigentlich gesuchter String in der Textdatei:
"PhysicalModelFile=" ->nicht gefunden
"PhysicalM" -> richtige Position
"PhysicalMo" -> nicht gefunden
"alModelFile=" -> falsche Position (vollkommen anderer Text wird gefunden)
"calModelFile=" -> richtige Position
"icalModelFile=" -> falsche Position
"sicalModelFile="-> falsche Position
String am Ende der Textdatei:
"SlowReboundRange"-> falsche Position
"SlowReboundRange=" -> falsche Position
Letzte Zeile der Textdatei:
"BrakeGlow"-> richtige Position
"BrakeGlow="-> falsche Position
Was soll das denn bitte???
Wo muss ich den Fehler suchen, wenn mir das vielleicht einer sagen könnte...?
Danke schonmal!
Comment