EAccessVilation bloss wo ?
-
Ich weiss echt nicht was an dem Code falsch ist die ... heist das ich darunter das gleiche bloss mit ner Zahl höher setze(so zusagen codekürzung :D).
Er gibt mir nen EAccessVilation raus mit 00000140 als Adresse.
Keine Ahnung weshalb er das macht sieht einer nen Fehler.-----*.h----- public: TComboBox* cb_namelist[4]; TComboBox* cb_vornamelist[4]; TComboBox* cb_datumlist[4]; -----*.cpp----- cb_namelist[0]=cb_name1; int j = 0; ... cb_vornamelist[0]=cb_vorname1; ... cb_datumlist[0]=cb_datum1; ... TComponent *comp1; ... for(int i=0;i<this->ComponentCount;i++) { comp1 = this->Components[i]; ... AnsiString aClass1 = comp1->ClassName(); ... if((aClass1=="TComboBox") && (3>j)) { cb_namelist[j] = ((TComboBox *)(comp1)); cb_namelist[j]->Clear(); cb_namelist[j]->Text = "Name"; cb_vornamelist[j] = ((TComboBox *)(comp2)); cb_vornamelist[j]->Clear(); cb_vornamelist[j]->Text = "Vorname"; ... Query_select2->SQL->Clear(); Query_select2->SQL->Add("SELECT mitglieder.Name, mitglieder.Vorname, mitglieder.Geb_Datum FROM test.mitglieder"); Query_select2->Open(); test = "*"; cb_namelist[j]->Items->Add(test); for (int i=0; i<Query_select2->RecordCount; i++) { if(cb_namelist[j]->Items->IndexOf(Query_select2->FieldByName("Name")->AsString) == -1) cb_namelist[j]->Items->Add(Query_select2->FieldByName("Name")->AsString); if(cb_vornamelist[j]->Items->IndexOf(Query_select2->FieldByName("Vorname")->AsString) == -1) cb_vornamelist[j]->Items->Add(Query_select2->FieldByName("Vorname")->AsString); ... Query_select2->Next(); } j++; } }@edit: so hab den code berichtigt :). Aber ist immer noch ein EA in modul rtl60.bpl

-
Wahrscheinlich hast du mehr als vier Komponenten auf deinem Formular.
Es ist ungeschickt (wenn auch erlaubt) in einer verschachtelten Schleife den gleichen Variablennamen (i) zu verwenden.
-
*G* wieso hab ich da TImage *arg*
@edit:
gut jetzt gibt er mir nur noch hier nen Fehler(auch nen EA Fehler):
cb_namelist[i]->Items->Add(test);@edit2:
boar nach dem ich das mal auskommentiert habe. Habe ich einen EA Fehler auf der Adresse 00000001 <-- mensch erste Adresse sowas hatte ich noch nie
tja einmal ist immer das erst mal
-
Hallo,
wenn Dein Codeschnipsel auch nicht viel Aussagekraft hat, ist es doch simple. Die Ursache einer Zugriffsverletzung liegt meistens in Operationen mit undefinierten Zeigern. Alle Zeiger müssen vor der Benutzung definiert sein, und die Adressen müssen auch Sinn ergeben. Du hast da, wahrscheinlich hast Du Dir etwas dabei gedacht, Felder mit Zeigern auf Comboboxen, und greifst auf diese via Laufschleifen zu. Das sogar gleich in zwei Schleifen. Was ist wenn i größer als 3 wird? Hast Du Dir schon mal darüber Gedanken gemacht? Ich denke, dann löst sich auch Dein Problem.Schöne Grüße aus Berlin
Volker
-
stimmt hast recht er schaut jede Componente durch da ist es logisch das i schnell auf über 4 steigt da ich mehr als nur die Comboboxen drauf habe.
jetzt hab ich einen anderen Fehler *G*. Dieses mal ein EA Fehler in einen Modul rtl60.bpl (wo für ist den das modul da?)
-
keiner ne Idee mmh ach ja noch so neben bei an etwas anderen ausser an diesem Code liegt es nicht. Wenn ich ihn auskommentier dann funzt alles.
-
Hallo,
eigentlich wäre es schön, wenn Du Dir selber ein paar Gedanken mehr machen würdest, und zum Beispiel die Code- Zeile, die den Fehler erzeugst, bestimmst, anstatt zu warten, dass man Dir Lösungen auf dem Tablett bringt. Und Deine Aussage, dass es nur die Codezeilen sind, die den Fehler erzeugen, die Du kopiert hast, und Du alle anderen auskommentiert hast, ist mit Sicherheit falsch. Dann frage ich mich, wo Variablen wie Query_select2, test, com2, aClass2 udn aClass3 herkommen? Und ich frage mich immer noch, warum Du die Verarbeitung machst, wenn der Klassenname einer Deine aus dem nichts auftauchenden Komponenten TImage (bzgl aClass2 und aClass3) ist. Durch das logische "Oder" muss ja nur einer der 3 Komponenten, deren Namen Du (in dem Quelltext den man ja nicht braucht) herausgesucht hast, TImage ist. Und dann zählst Du das j immer noch unkontrolliert hoch, es kann also immer noch größer werden.Übrigens, der C++ - Builder hat einen sehr huten Debugger, damit kann ma´n die Programme im Einzelschrittmodus durchlaufen, und sich die Variableninhalte ansehen, um so genau zu sehen, was das Programm alles unerwartetes anstellt
.Schöne Grüße aus Berlin
Volker
-
so jetzt funktioniert alles weiter gehts hier mit dem gleichen skript: http://www.c-plusplus.net/forum/viewtopic.php?p=505451#505451