![]() |
EAccessViolation bei privaten Variablen? Ratlos! :(
Guten Tag liebe Community!
Ich muss für meine Facharbeit eine Simulation schreiben, die das Thema "Frauenversteher" umfasst. Zunächst habe ich 3 Units. Das Formular, das Spiel, den Kandidaten. Programm: Delphi 5.
Delphi-Quellcode:
TYPE TKandidat = Class
PRIVATE Nummer: Integer; Punkte: Integer; PUBLIC CONSTRUCTOR Create(pNummer: Integer); FUNCTION GibNummer: Integer; FUNCTION GibPunkte: Integer; PROCEDURE Aktualisierung(pPunkte: Integer); END; (* TKandidat *)
Delphi-Quellcode:
Der Fehler tritt in der Unit TSpiel auf mit der Meldung:
TYPE TSpiel = Class
PRIVATE Speicher: ARRAY[1..3] OF TKandidat; AnzahlKandidaten: Integer; Gewinnlimit: Integer; Frage, Antwort, Ende: Boolean; Runde: Integer; PUBLIC CONSTRUCTOR Create(pAnzahl, pPunkte: Integer); PROCEDURE Schnelldurchlauf(pKandidat, pPunkte: Integer); FUNCTION Ausgabe: String; FUNCTION Wahrscheinlichkeit(pAnzahl, pPunkte: Integer): String; END; (* TSpiel *) CONSTRUCTOR TSpiel.Create(pAnzahl, pPunkte: Integer); VAR Zaehler: Integer; BEGIN Runde := 0; Ende := False; Gewinnlimit := pPunkte; AnzahlKandidaten := pAnzahl; //Frage := False; FOR Zaehler := 1 TO pAnzahl DO Speicher[Zaehler] := TKandidat.Create(Zaehler); END; (* CSTR *) Im Projekt ... ist eine Exception der EAccessViolation aufgetreten. Meldung: 'Zugriffsverletzung bei Adresse: 00441AAB in Modul ... Schreiben von Adresse 0000001C'. ... So wird der Konstruktor etc aufgerufen:
Delphi-Quellcode:
Ich habe mir alles schon hunderte Male angeguckt und auch gegooglet, aber ich werde seit Stunden nicht fündig! Ich hoffe ihr könnt mir etwas behilflich sein.
PROCEDURE TFrauenversteher.BtStartClick(Sender: TObject);
VAR AnzKandidat, Gewinnlimit: Integer; BEGIN AnzKandidat := StrToInt(EdKandidaten.Text); Gewinnlimit := StrToInt(EdPunkte.Text); IF (AnzKandidat < 1) OR (Gewinnlimit < 1) THEN LbAusgabe.Caption := 'Bitte geben Sie Daten über 0 an.' ELSE BEGIN Spiel.Create(AnzKandidat, Gewinnlimit); Spiel.Schnelldurchlauf(AnzKandidat, Gewinnlimit); // LbAusgabe.Caption := Spiel.Ausgabe END; (* ELSE *) END; MfG |
AW: EAccessViolation bei privaten Variablen? Ratlos! :(
Delphi-Quellcode:
So habt ihr das bestimmt nicht gelernt.
Spiel.Create(AnzKandidat, Gewinnlimit);
|
AW: EAccessViolation bei privaten Variablen? Ratlos! :(
Du greifst vermutlich auf einen Bereich deines Arrays Speicher zu das nicht existent ist. Wie hoch ist denn pAnzahl?
|
AW: EAccessViolation bei privaten Variablen? Ratlos! :(
@ringli:
pAnzahl ist maximal 3.. |
AW: EAccessViolation bei privaten Variablen? Ratlos! :(
Schau Dir nocheinmal die Zeile an, welche Luckie beriets moniert hatte.
Zitat:
|
AW: EAccessViolation bei privaten Variablen? Ratlos! :(
Okay nun läuft das Programm so fehlerfrei.
Delphi-Quellcode:
Jedoch bekomme ich bei "Spiel.Schnelldurchlauf(AnzKandidat, Gewinnlimit)" immer noch einen EAccessViolation Fehler.. Direkt in der ersten Zeile:
TSpiel.Create(AnzKandidat, Gewinnlimit);
//Spiel.Schnelldurchlauf(AnzKandidat, Gewinnlimit); //LbAusgabe.Caption := Spiel.Ausgabe;
Delphi-Quellcode:
PROCEDURE TSpiel.Schnelldurchlauf(pKandidat, pPunkte:Integer);
VAR Zaehler, Nummer: Integer; AktKandidat: TKandidat; BEGIN WHILE NOT Ende DO |
AW: EAccessViolation bei privaten Variablen? Ratlos! :(
Deine Variable "Spiel" ist nicht initialisiert.
Schau Dir nochmals die Zeile aus Post #2 und #5 an. |
AW: EAccessViolation bei privaten Variablen? Ratlos! :(
Delphi-Quellcode:
Möööööp. Auch so habt ihr es nicht gelernt. Und bevor du weiter rumprobierst, werfe doch bitte mal einen Blick in ein OOP Tutorial oder Buch dazu.
TSpiel.Create(AnzKandidat, Gewinnlimit);
//Spiel.Schnelldurchlauf(AnzKandidat, Gewinnlimit); |
AW: EAccessViolation bei privaten Variablen? Ratlos! :(
Delphi-Quellcode:
Bei
Spiel := TSpiel.Create(AnzKandidat, Gewinnlimit);
Zitat:
|
AW: EAccessViolation bei privaten Variablen? Ratlos! :(
Problem gelöst. Dankeschön an alle! Vor lauter Bäume sieht man manchmal den Wald nicht. :|
MfG |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:43 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz