EDSCampino Geschrieben 31. März 2010 Geschrieben 31. März 2010 Guten Morgen, Ich hab da So ein kleines Problem. ich Soll hier eine resourcen datei Duplizieren und diese dann abändern. eingelsen ist die alte Resourcen datei, und die liste mit den Strings die abgeändert werden sollen, beides in jeweils ein Stringarray. alles gut und schön. jetzt will ich durch die Liste durchgehen und immer wenn der string der geändert werden soll auftaucht soll dieser durch den Neuen String ersetzt werden. for(k=0;k<j;k=k+2) { ListeNeu = ZeilenListe.GetAt(k+1); ListeAlt = ZeilenListe.GetAt(k); while(m<ZeilenRes.GetCount()) { CString Res = ZeilenRes.GetAt(m); ListeNeu.Delete(0,3); ListeAlt.Delete(0,3); int n = Res.Replace((LPCTSTR)ListeAlt,(LPCTSTR)ListeNeu); if (n!=0) //DEBUG ANFANG { n++; }//DEBUG ENDE m++; } }[/PHP] Also im Prinzip eine SUCHEN und Ersetzten geschichte. Trotzdem wenn ich das so aufrufe Ersetzt er mir nichts!! Programierumgebung: VS 2005 Ich hoffe ihr Könnt mir weiter helfen =) Danke im vorraus=)
Klotzkopp Geschrieben 31. März 2010 Geschrieben 31. März 2010 Dein String Res ist eine Kopie des jeweiligen Listeneintrags. Wenn du Res änderst, änderst du an den Strings in der Liste ZeilenRes gar nichts. Die Variable m solltest du wieder zurücksetzen, wenn du einmal durch die Ressourcenliste durch bist.
EDSCampino Geschrieben 31. März 2010 Autor Geschrieben 31. März 2010 for(k=0;k<j;k=k+2) { ListeNeu = ZeilenListe.GetAt(k+1); ListeAlt = ZeilenListe.GetAt(k); ListeNeu.Delete(0,3); ListeAlt.Delete(0,3); while(m<ZeilenRes.GetCount()) { CString Res = ZeilenRes.GetAt(m); int n = Res.Replace((LPCTSTR)ListeAlt,(LPCTSTR)ListeNeu); if (n!=0) { n++; } ZeilenResViz.Add((LPCTSTR) Res); m++; } m=0; } Hab die Aktuelle res in ein Neues Array geschrieben und m auf 0 zurück gesetzt es passiert trotzdem nichts leider danke schon mal für Die Hilfe
Klotzkopp Geschrieben 31. März 2010 Geschrieben 31. März 2010 Hab die Aktuelle res in ein Neues Array geschrieben und m auf 0 zurück gesetzt es passiert trotzdem nichts leiderWas genau passiert nicht? Sind die Strings in der Liste nicht geändert? Und was sollen diese Casts auf LPCTSTR bewirken? Mach die bitte mal raus.
EDSCampino Geschrieben 31. März 2010 Autor Geschrieben 31. März 2010 so hab die casts rausgenommen, in dem ZeilenResViz steht jetzt genau das selbe wie im ZeilenRes und es steht in ListeAlt und ListeNeu aufjedenfall der wert was ersetzt werden sollund in was ersetzt werden soll, laut debugger
Klotzkopp Geschrieben 31. März 2010 Geschrieben 31. März 2010 und es steht in ListeAlt und ListeNeu aufjedenfall der wert was ersetzt werden sollund in was ersetzt werden soll, laut debuggerAber kommt das, was in ListeAlt steht, in den durchsuchten Strings vor? Wenn du einen Breakpoint auf n++ legst, wird der angelaufen?
EDSCampino Geschrieben 31. März 2010 Autor Geschrieben 31. März 2010 ja das kommt da oft drin vor und der breakpoint wird nicht angelaufen
Klotzkopp Geschrieben 31. März 2010 Geschrieben 31. März 2010 und der breakpoint wird nicht angelaufenDann ist der Suchstring auch nicht drin. Gib doch mal ein Beispiel für Res, ListeAlt und ListeNeu, wo deiner Meinung nach etwas ersetzt werden sollte. Wir können das ja ohne konkrete Daten nicht nachvollziehen.
EDSCampino Geschrieben 31. März 2010 Autor Geschrieben 31. März 2010 Res BEGIN MENUITEM "freies holz Fläche", ID_TOOLS_HOLZFREI_FLAECHE MENUITEM "freies holz Fläche erster Punkt", ID_TOOLS_HOLZFREI_FL1 MENUITEM "freies holz Fläche zweiter Punkt", ID_TOOLS_HOLZFREI_FL2 MENUITEM "freies holz erster Punkt", ID_TOOLS_HOLZFREI_PKT1 MENUITEM "freies holz zweiter Punkt", ID_TOOLS_HOLZFREI_PKT2 MENUITEM "freies holz positionieren", ID_TOOLS_HOLZFREI_POSITION END Liste A: steht für das Wort das ersetzt werden soll und V: steht für das wort in das ersetzt werden soll A: freies holz V: Volumen A: IDR_TEXT1 V: IDR_TEXT2
Klotzkopp Geschrieben 31. März 2010 Geschrieben 31. März 2010 Folgender Code funktioniert bei mir: CString ListeAlt = "A: freies holz"; CString ListeNeu = "V: Volumen"; ListeNeu.Delete(0,3); ListeAlt.Delete(0,3); CString Res = " MENUITEM \"freies holz Fläche\", ID_TOOLS_HOLZFREI_FLAECHE"; int n = Res.Replace(ListeAlt,ListeNeu); [/code] Bei dir auch?
EDSCampino Geschrieben 31. März 2010 Autor Geschrieben 31. März 2010 (bearbeitet) Bei mir Leider nicht ;-( er ersetzt immer noch nichts =/ auch nicht wenn ich es hart codiert im code mache also entweder ich hab nen brett vorm kopf oder ich mach was grundlegendes Falsch Bearbeitet 31. März 2010 von EDSCampino
Klotzkopp Geschrieben 31. März 2010 Geschrieben 31. März 2010 Bei mir Leider nichtAuch nicht in einem komplett neuen Programm?
EDSCampino Geschrieben 6. April 2010 Autor Geschrieben 6. April 2010 so Problem gelöst, auf der Rechten seite von ListeAlt und ListeNeu stand noch ein \r\n das man nciht direkt gesehen hat weg getrimmt und nun klappt es =)
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden