Reputation: 1
I am programming on Lazarus and this happens:
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls;
type
TRaum = class
Beschreibung: String;
Norden, Sueden, Westen, Osten: TRaum;
procedure setAusgaenge(nord, ost, sued, west: TRaum);
end;
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Edit1: TEdit;
Memo1: TMemo;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
Computerraum, Flur, Lehrerzimmer, Abstellkammer: TRaum;
aktuellerRaum: TRaum;
public
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TRaum }
procedure TRaum.setAusgaenge(nord, ost, sued, west: TRaum);
begin
Norden := nord;
Osten := ost;
Sueden := sued;
Westen := west;
end;
{ TForm1 }
procedure TForm1.FormCreate(Sender: TObject);
begin
Computerraum := TRaum.Create;
Flur := TRaum.Create;
Lehrerzimmer := TRaum.Create;
Abstellkammer := TRaum.Create;
Computerraum.Beschreibung := 'Sie stehen im Computerraum.';
Flur.Beschreibung := 'Sie betreten einen Flur mit drei Türen.';
Lehrerzimmer.Beschreibung := 'Das ist das Lehrerzimmer.';
Abstellkammer.Beschreibung := 'Das ist eine Abstellkammer, sie ist leer.';
Flur.setAusgaenge(Lehrerzimmer, Abstellkammer, Computerraum, nil);
Computerraum.setAusgaenge(Flur, nil, nil, nil);
Abstellkammer.setAusgaenge(nil, nil, nil, Flur);
Lehrerzimmer.setAusgaenge(nil, nil, Flur, nil);
aktuellerRaum := Flur;
Memo1.Lines.Add(aktuellerRaum.Beschreibung);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
Eingabe: string;
begin
Eingabe := Edit1.Text;
if Eingabe = 'Norden' then
begin
if aktuellerRaum.Norden <> nil then
begin
aktuellerRaum := aktuellerRaum.Norden;
Memo1.Lines.Add(aktuellerRaum.Beschreibung);
end
else
begin
Memo1.Lines.Add('Es gibt keinen Ausgang nach Norden.');
end;
end
else if Eingabe = 'Osten' then
begin
if aktuellerRaum.Osten <> nil then
begin
aktuellerRaum := aktuellerRaum.Osten;
Memo1.Lines.Add(aktuellerRaum.Beschreibung);
end
else
begin
Memo1.Lines.Add('Es gibt keinen Ausgang nach Osten.');
end;
end
else if Eingabe = 'Sueden' then
begin
if aktuellerRaum.Sueden <> nil then
begin
aktuellerRaum := aktuellerRaum.Sueden;
Memo1.Lines.Add(aktuellerRaum.Beschreibung);
end
else
begin
Memo1.Lines.Add('Es gibt keinen Ausgang nach Süden.');
end;
end
else if Eingabe = 'Westen' then
begin5
if aktuellerRaum.Westen <> nil then
begin
aktuellerRaum := aktuellerRaum.Westen;
Memo1.Lines.Add(aktuellerRaum.Beschreibung);
end
else
begin
Memo1.Lines.Add('Es gibt keinen Ausgang nach Westen.');
end;
end
else
begin
Memo1.Lines.Add('Ungültige Eingabe.');
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Memo1.Lines.Text := 'Hallo, willkommen im Textadventure';
end;
end.
When I try to put in Edit1 the attribute "Norden" and click then on button 1, it shows a violation error. It says that something is wrong with line 79.
Upvotes: 0
Views: 35