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:
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 *)
Der Fehler tritt in der
Unit TSpiel auf mit der Meldung:
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:
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;
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.
MfG