AccessViolations(AVs). Früher dachte ich mal wenn Delphi nix anderes einfällt kommt diese nichtssagende Exception und treibt den Programmierer damit in den Wahnsinn… *grins*
Hierbei handelt es sich um einen Zugriff auf einen Speicherbereich auf den man nicht zugreifen darf. Sehen wir uns einmal die Meldung genauer an, so erhalten wir mehrere Informationen:
Im Projekt ist eine Exception der Klasse EAccessViolation mit der Meldung 'Zugriffsverletzung bei Adresse 00000005. Lesen von Adresse 00000005' aufgetreten. Fehlerklasse, Adresse und Vorgang. Fehlerklasse ist soweit schon mal klar. Zugriffsverletzung bei Adresse... - Windows - Fachinformatiker.de. Zugriffsverletzung. Jo. Vorgang wird schon schwieriger: in diesem Fall: Lesen. Man kann also auf unterschiedliche Art den Zugriff verletzen: lesend und schreibend. Diese Information sagt uns also etwas über die Art der Zugriffsverletzung, sozusagen die "Mordwaffe"(Dolch oder Pistole, Lesen oder Schreiben). Kommen wir nun zu Adresse (*shock*): Hier wird (als Hex-Code) die Speicheradresse angegeben, auf die unberechtigterweise zugegriffen wurde.
- Delphi zugriffsverletzung bei adresse email
- Delphi zugriffsverletzung bei adresse du concours
- Delphi zugriffsverletzung bei adresse suivante
Delphi Zugriffsverletzung Bei Adresse Email
Hallo,
ich brauche mal wieder eure Hilfe. Ich habe hier eine hübsche Zugriffsverletzung bei Adresse 00000000 'Lesen von Adresse 00000000' wenn ich im Code einer Klasse auf ein klasseneigenes TImage-Objekt zugreifen möchte. Also so ungefähr:
Delphi-Quellcode:
TKlasse = class
private
Bild: TImage;
public
procedure MachWas;
end;
//...
procedure chWas;
begin
//... := 20; //Hier rührt der Fehler her
Normalerweise würde man sagen "Ganz klar, kein Objekt instanziert", aber:
constructor (AOwner: TComponent);
Bild:=;
Jetzt kommt's aber noch doller:
Wenn ich genau das gleiche, was ich mit diesem TImage-Objekt mache, mit einem anderen - nennen wir es Bild2 - mache, dann kommt kein Fehler. Und mit genau das gleiche meine ich ALLES gleich machen, d. h. cocy & paste bei allen Sachen für Bild im Code und auf Bild2 geändert. Jetzt weis ich nicht mehr, wo ich noch nach dem Fehler suchen soll... Wenn ich die Stelle oben auskommentiere, gibts keinen Fehler mehr. Delphi zugriffsverletzung bei adresse suivante. Umbenennen des ersten TImage-Objekts auf irgendwas anderes bringt auch nix.
Delphi Zugriffsverletzung Bei Adresse Du Concours
Registriert seit: 10. Feb 2015
75 Beiträge
Delphi 10 Seattle Professional
Zugriffsverletzung bei Adresse ' ' in Modul
24. Apr 2015, 09:37
Delphi-Quellcode:
function RegPath: String;
begin
Result:= ExtractFileName(ChangeFileExt(ParamStr(0), ' '));
end;
procedure SaveFormSettings(frmKonfig: TfrmKonfig);
var
RegIni: TRegIniFile;
RegIni:= (RegPath);
try
RegIni. WriteInteger(' Form ', ' Color ', );
finally;
procedure LoadFormSettings(frmkonfig: TfrmKonfig);
try:= adInteger(' Form ', ' Color ', );
was habe ich falsch gemacht? Zitat
Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1. 275 Beiträge
Delphi 10. Delphi zugriffsverletzung bei adresse email. 2 Tokyo Enterprise
AW: Zugriffsverletzung bei Adresse ' ' in Modul
24. Apr 2015, 09:42
RegPath liefert sicher keinen vollständigen Dateinamen inkl. Pfad. Aber das kannst dir ja auch ganz einfach im Debugger anzeigen lassen. Hinter dir gehts abwärts und vor dir steil bergauf! (Wolfgang Ambros)
Online
Registriert seit: 9. Apr 2006
1. 620 Beiträge
Delphi 5 Professional
24. Apr 2015, 10:42
Zu schreiben, wo der Fehler genau auftritt.
Delphi Zugriffsverletzung Bei Adresse Suivante
B. die Lines-Eigenschaft von Memos oder auch Strings) können Exceptions auftreten. Der wohl häufigste heißt:
Im Projekt ist eine Exception der Klasse EStringListError mit der Meldung 'Listenindex überschreitet das Maximum (5)' aufgetreten. Diese und ähnliche Fehler weisen darauf hin, dass man auf einen nicht vorhandenen Listeneintrag zugreifen will. Sind in einer Listbox z. nur 3 Einträge und man will auf den 4. zugreifen, dann ist man gerade dabei, Mist zu bauen. Sowas ist – insbesondere bei Programmieranfängern – schnell passiert. Insbesondere die Tatsache, dass Programmierer die komische Angewohnheit haben mit der 0 anzufangen zu zählen, ist für manchen etwas ungewohnt. So hat der erste Eintrag einer Listbox den Index 0 und der letzte Count -1(! ). Bei Strings wiederum ist es wieder anders. Delphi zugriffsverletzung bei adresse du concours. Das erste Zeichen eines Strings hat – historisch bedingt – den Index 1 und somit das letzte den Index Length(string). Bei so gut wie allem anderen ist aber die 0 die erste Zahl…
Zugriffsverletzungen
Kommen wir nun zu meinen Lieblings-Exceptions: Den Zugriffsverletzungen bzw. engl.
Das entspräche dann so ungefähr der Stelle der Verwundung: Kopf, Herz…
Um einen solchen Fehler nun zu beheben, müssen wir etwas Kriminalkommissar spielen: Wir kennen die Leiche, die Mordwaffe und Art und Stelle der Verletzung. Nur wo steckt der Täter? Das ist manchmal gar nicht so einfach zu ermitteln, denn eine AV kann viele verschiedene Ursachen haben und diese können auch noch lange zurückliegen. Hier mal eine kurze – natürlich unvollständige – Liste der möglichen Ursachen:
Bereichsüberschreitung: Je nachdem um welche Art von "Array" es sich handelt, kann ein Zugriff auf ein nicht existierendes Element statt zu einer "Index überschreitet das Maximum" oder einer ähnlichen Meldung auch zu einer AccessViolation führen. Fehlerbehandlung |. Zugriff auf noch nicht oder nicht mehr vorhandene Komponenten
Zugriff auf einen nil-Pointer
Zugriff auf einen Pointer, der irgendwo ins Nirwana zeigt
…
Manchmal führen diese Aktionen auch noch nicht direkt zur AV. Man schreibt dann einfach mal so im Speicher rum. Wenn der adressierte Speicherbereich weder zum Code-Teil gehört, noch zu dem Bereich, der noch nicht zur Anwendung zugewiesen wurde, kann man – vorerst – ohne Probleme darin herumschreiben.