Mahlzeit
,
danke für die Antworten. Die Lösung für mein erstes Problem, was DeddyH geschrieben hat, wende ich jetzt auch an, nur habe ich kleine Schwierigkeiten.
Ich habe das ganze mal an einem Beispiel ausprobiert.
Delphi-Quellcode:
unit Schach;
interface
uses
system.generics.collections,
Dialogs,
system.sysutils;
type
TSchachfigur =
class
Reichweite: integer;
procedure setreichweite();
function InString():
string;
virtual;
end;
type
TSchachBauer =
class(TSchachfigur)
Form:
string;
procedure setform();
function InString():
string;
override;
end;
type
TSchachSpringer =
class(TSchachfigur)
Position: integer;
procedure setposition();
function InString():
string;
override;
end;
type
Tschachspiel =
class
fschachfiguren: Tobjectlist<TSchachfigur>;
constructor create;
end;
implementation
function TSchachbauer.InString:
string;
begin
result := Form;
end;
procedure TSchachBauer.setform;
begin
Form := '
kantig';
end;
constructor Tschachspiel.create;
var
I: integer;
temp: TSchachfigur;
begin
fschachfiguren := Tobjectlist<TSchachfigur>.create;
temp := TSchachBauer.create;
fschachfiguren.add(temp);
temp := TSchachSpringer.create;
fschachfiguren.add(temp);
for I := 0
to fschachfiguren.Count - 1
do
begin
showmessage(fschachfiguren[I].InString);
end;
end;
function TSchachSpringer.InString:
string;
begin
result := IntToStr(Position);
end;
procedure TSchachSpringer.setposition;
begin
Position := 1;
end;
function TSchachfigur.InString:
string;
begin
result := IntToStr(Reichweite);
end;
procedure TSchachfigur.setreichweite;
begin
Reichweite := 7;
end;
end.
Ich habe versucht das ganze anhand eines Schachspieles zu probieren, bevor ich mir mein eigentliches Programm ganz zerlege.
Aber ich bekomme in der Messagebox einmal nichts und dann einmal "0". Woran liegt das?
So wie das Programm aufgebaut ist, ist auch mein eigentliches Programm.
Gruß
Jan
Edit: Ich konnte das Problem gerade eben selber lösen, indem ich nicht den Umweg über die Set-Procedure gemacht habe. Aber wie geht das mit dieser?
UND bei der Ausgabe wird nicht der Wert von Schachfigur ausgegeben. Wie bekomme ich es hin, dass dieser dann auch ausgegeben wird?