Registriert seit: 29. Jun 2019
3 Beiträge
|
2-Dimensionales Array Access Violation
29. Jun 2019, 10:24
Moin!
Ich versuche momentan ein CLI Schach zu basteln, stoße aber beim Versuch den Feldern Figuren (Strings) zuzuweisen auf eine Access Violation.
Meine Idee ist es eig. über das Zweidimensionales Array Feld das Spielbrett (8 mal 8 Felder) darzustellen.
Hat wer eine Idee was ich falsch mache
P_Schach:
Delphi-Quellcode:
uses
System.SysUtils,
Types in ' Types.pas',
Var Brett: TBrett;
begin
try
{ TODO -oUser -cConsole Main : Code hier einfügen }
Brett:= TBrett.Create;
Brett.IniField;
Writeln(Brett.Render);
Readln;
except
on E: Exception do
Writeln(E.ClassName, ' : ', E. Message);
end;
end.
Types.Pas
Delphi-Quellcode:
unit Types;
interface
type
TFeld = class
private
FBesetzt: Boolean;
FFigur: String;
FFeld: Integer;
published
property Feld: Integer read FFeld write FFeld;
property Figur: String read FFigur write FFigur;
property Besetzt: Boolean read FBesetzt write FBesetzt;
end;
type
TBrett = class
private
Feld: array [1 .. 8, 1 .. 8] of TFeld;
public
procedure IniField;
function Render: String;
end;
implementation
procedure TBrett.IniField;
var
i, n: Integer;
begin
n := 0;
i := 0;
Feld[1, 1].Figur := ' T:W'; // Bei dieser Zeile tritt die Access Violation auf.
Feld[2, 1].Figur := ' P:W';
Feld[3, 1].Figur := ' L:W';
Feld[4, 1].Figur := ' D:W';
Feld[5, 1].Figur := ' K:W';
Feld[6, 1].Figur := ' L:W';
Feld[7, 1].Figur := ' P:W';
Feld[8, 1].Figur := ' T:W';
for i := 1 to 8 do
Feld[i, 2].Figur := ' B:W';
for i := 1 to 2 do
for n := 1 to 8 do
Feld[n, i].Besetzt := True;
Feld[1, 8].Figur := ' T:S';
Feld[2, 8].Figur := ' P:S';
Feld[3, 8].Figur := ' L:S';
Feld[4, 8].Figur := ' D:S';
Feld[5, 8].Figur := ' K:S';
Feld[6, 8].Figur := ' L:S';
Feld[7, 8].Figur := ' P:S';
Feld[8, 8].Figur := ' T:S';
for i := 1 to 8 do
Feld[i, 7].Figur := ' B:S';
for i := 7 to 8 do
for n := 1 to 8 do
Feld[n, i].Besetzt := True;
end;
function TBrett.Render;
const
leer = #13#10;
var
n, i: Integer;
begin
Render := ' ';
for i := 1 to 8 do
begin
for n := 1 to 8 do
begin
Render := Render + Feld[n, i].Figur
end;
Render := Render + leer;
end;
end;
end.
|
|
Zitat
|