Entwickler-Ecke
Sonstiges (Delphi) - Fehler: Access Violation...
pupu - Sa 04.11.06 23:03
Titel: Fehler: Access Violation...
hi
ich habe folgende zeile an der die fehlermeldung:
"Access violation at address 00463E7F in module 'Code.exe'. Write of address 00000304."
kommt...
"liste" is vom Typ TStringlist und in "liste" wurde zuvor der inhalt einer Textdatei geladen...
Nun kommt aber dieser Fehler...
1. Was hat die Zeile mit Access Violation zu tun?
2. Was kann ich in zukunft mit "Access Violation"s anfangen?
3. Was gibt es prinzipiell für möglichkeiten, dass so ein Fehler auftritt in verbindung mit Tmemo und Tstringlist?
Narses - So 05.11.06 00:50
Moin!
So ein (Laufzeit-)Fehler ist nichts, was man allgemein und für immer beheben kann.
Aufgrund der Adresse rate ich mal, dass zu dem Zeitpunkt, zu dem die Zeile ausgeführt wird, entweder in Mem1 oder in Liste ein NIL drin steht (sprich: das Objekt nicht initialisiert ist).
Warum das passiert, kann ich dir ohne den restlichen Quelltext nicht sagen. Und was man allgemein dagegen tun kann: keine Programmierfehler machen. :mrgreen: ;)
cu
Narses
pupu - So 05.11.06 01:01
hmmm
Hätt ja sein können dass "Access Violation" was bestimmtes ausdrücken soll...
Also wenn ich liste[0] ma watche (Strg+Alt+W) steht da genau das drin was drin stehn soll...nämlich die erste zeile aus der textdatei.
Und in das Memo1 soll ja was reingeschrieben werden also is doch egal was drinsteht und initialisiert is es denk ich ma ^^ zumindest is es auf der Form und so ;) oder was is genau mit initialisiert gemeint?
Den ganzen text kann ich kaum posten weil das irgendwie dann alles sein kann ;)
ich poste mal hier die prozedur in der liste initialisiert wird mit dazu
Also das ganze:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34:
| procedure TForm1.ffnen1Click(Sender: TObject); var liste:TStringlist; begin if Form1.oeffnen.Execute then begin liste:=TStringlist.Create; liste.LoadFromFile(oeffnen.filename); if liste[liste.count-1]<>'ja' then passwortcheck(true,liste) else begin Application.CreateForm(TForm4, Form4); Form4.Showmodal; end; end; end;
procedure TForm1.passwortcheck(valid:boolean; liste:TStringlist); var n:integer; begin with Form4 do begin memo1.Text:=liste[0]; if valid then begin combobox1.itemindex:=strtoint(liste[liste.count-4]); case combobox1.itemindex of 0: spinedit1.value:=strtoint(liste[liste.count-2]); 1: spinedit1.Value:=-strtoint(liste[liste.count-2]); 3: ed_muster.text:=liste[liste.count-2]; end; end; checkmodus(valid); end; end; |
in Zeile 23 hört er dann auf :?
den sinn dahinter versteht man erst wenn man das pogramm kennt...hab aber kb das jetzt zu erklären (zumahl das irrelevant is ;) )
Narses - So 05.11.06 01:06
Moin!
Nur aufgrund dieser Zeile kann ich dir nicht mehr sagen, wo der Fehler herkommen könnte; das sind IMHO schon alle Möglichkeiten, da der Code ja nicht gerade als "komplex" zu bezeichnen ist... :D
Fazit: Mehr Code. ;)
cu
Narses
Narses - So 05.11.06 01:09
Moin!
Da haben wir´s doch schon: du greifst auf Form4 zu, obwohl es noch gar nicht initialisiert ist (das kommt ja erst später). Fazit: genau der Fehler, den ich aufgezeigt habe: Memo1 enthält ein NIL. :D
cu
Narses
pupu - So 05.11.06 01:33
-.- ich hasse solche fehler die so offensichtlich sind und man schaut die ganze zeit dran vorbei
edit: ok ich glaub ich muss was an meinen "with-do" gewohnheiten ändern ;) sonst kommts nur zu komplikationen...
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!