sporatischer Fehler mit TreeView Select
-
Hallo,
habe ein Programm das Passwörter speichert und man diese dann über das treeview anzeigen lassen kann.
Es funktioniert auch alles wunderbar, nur manchmal kommt ein Fehler beim erzeugen eines neuen Passworts, und zwar genau dann wenn dieses selctieren möchte...
Und diese Fehlermeldung kommt während der Laufzeit komischerweise nur sporatisch.Fehlermeldung:
Projekt ProjektKeySafe.exe raised exception class EAccessViolation with message 'Access violation at address 004763D3 in module 'ProjektKeySafe.exe'. Read of address 0000003'. Process stopped. Use Step or Run to continue.
Hier der Codeausschnitt:
//zuvor wird bezeichnung, benutzer, passwort in die list eingefügt (also das neue Passwort) void TKeySafeForm::select_tree_bez(string bez) { refresh_tree(); for(int i = 0; i < TKeys->Items->Count; i++) { if(TKeys->Items->Item[i]->Text == bez.c_str()) TKeys->Items->Item[i]->Selected = true; //<-------hier Fehler } } //hiermit wird treeview gelöscht und aus der list alles wieder reingeschrieben void TKeySafeForm::refresh_tree() { key_list = KEYS.Get_Keylist(); it_key = key_list.begin(); TKeys->Items->Clear(); TTreeNode *P1 = TKeys->Items->AddChild(NULL,"Betriebssysteme"); TTreeNode *P2 = TKeys->Items->AddChild(NULL,"E- Mail`s"); TTreeNode *P3 = TKeys->Items->AddChild(NULL,"Foren"); TTreeNode *P4 = TKeys->Items->AddChild(NULL,"Internetportale"); TTreeNode *P5 = TKeys->Items->AddChild(NULL,"Spiele"); TTreeNode *P6 = TKeys->Items->AddChild(NULL,"Webserver"); for(it_key; it_key!=key_list.end(); ++it_key) { if((*it_key).art == "Betriebssysteme") { TKeys->Items->AddChild(P1, (*it_key).bezeichnung.c_str()); } if((*it_key).art == "E- Mail`s") { TKeys->Items->AddChild(P2, (*it_key).bezeichnung.c_str()); } if((*it_key).art == "Foren") { TKeys->Items->AddChild(P3, (*it_key).bezeichnung.c_str()); } if((*it_key).art == "Internetportale") { TKeys->Items->AddChild(P4, (*it_key).bezeichnung.c_str()); } if((*it_key).art == "Spiele") { TKeys->Items->AddChild(P5, (*it_key).bezeichnung.c_str()); } if((*it_key).art == "Webserver") { TKeys->Items->AddChild(P6, (*it_key).bezeichnung.c_str()); } } }
Bei <-------hier Fehler kommt dann die Fehlermeldung beim debuggen.
Ich weiß nicht mehr weiter, da er nichts markieren will was es nicht gibt...Hoffe es kann mir hier einer weiterhelfen.
MfG
Gustl
-
Ich weiß das refresh_tree(); keine elegante Lösung ist, um es mal vorsichtig auszudrücken, aber ist der erste Versuch mit TreeView.
Wäre wirklich klasse wenn mir da wer einen Schubs in die richtige Richtung geben könnte. Bin ja gewollt den Fehler zu beheben, aber habe leider keine Ahnung wo ich da angreifen soll, in meinen Augen sollte es so funktionieren...
Leider kann man hier keine Anhänge hochladen, sonst würde ich das Programm zum testen hochladen.
Gruß
Gustl
-
Hast Du mal geschaut ob andere Teile deiner Anwendung undefiniertes Verhalten erzeugen könnten?
-
Ich denke nicht das andere Teile undefiniertes Verhalten aufweisen, zumndest habe ich soetwas nicht bewusst gemacht.
Aber er hat ja einen zugriffsfehler genau dort wo er das neu eingegebene Passwort dann nach dem einbinden in dem tree selektieren möchte... dort kommt manchmal ein fehler... obwohl er ja nicht außerhalb vom TKey->Count zugreifen KANN, da das ganze ja in der Schleife passiert.
Ich weiß nicht mehr weiter...
-
Hat keiner ne Idee woran das liegen könnte? Ich komm einfach nicht mehr weiter... *seufz*
-
Hallo
Debugger benutzen, um die eigentliche Ursache einzugrenzen (bisher hast du vermutlich nur den Auslöser).
Ansonsten kannst du dein Projekt bei einem beliebigen Freehoster hochladen und hier dann verlinken.
bis bald
akari