Hi,
habe mir folgendes kleines Programm gebastelt, das bisher noch überhaupt nichts tut und nur eine Grundlage ist.
Delphi-Quellcode:
type
TCharacter = class(TObject)
Name: string;
MinDmg: integer;
MaxDmg: integer;
Armor: integer;
HP: Integer;
Description: string;
constructor Create(iMinDmg, iMaxdmg, iArmor, iHP: integer; iDescription: string);
end;
TPlayer = class(TObject)
Name: string;
CharacterNumber: integer;
Characters:Array of TCharacter;
constructor Create(iName: string);
end;
var
PlayerIni: TIniFile;
Players: Array of TPlayer;
implementation
{$R *.dfm}
constructor TCharacter.Create(iMinDmg, iMaxdmg, iArmor, iHP: integer; iDescription: string);
begin
inherited create;
MinDmg := iMinDmg;
MaxDmg := iMaxDmg;
Armor := iArmor;
HP := iHP;
Description := iDescription;
end;
constructor TPlayer.Create(iName: string);
begin
inherited create;
Name := iName;
end;
procedure LoadPlayer(Name: string);
var
x: integer;
begin
PlayerIni := TIniFile.Create(ExtractFilePath(ParamStr(0)));
try
SetLength(Players, Length(Players) + 1);
Players[Length(Players)] := TPlayer.Create(Name);
For x := 1 to PlayerIni.ReadInteger(Name, 'CharacterNumber', 0) do
begin
ShowMessage('');
end;
except
ShowMessage('Fehler beim Lesen!');
end;
x := 0;
end;
procedure TfMain.FormShow(Sender: TObject);
begin
SetLength(Players, 0);
SetLength(Characters, 0);
end;
end.
(formen und so rausgekürzt)
Über einen Button führe ich jetzt die LoadPlayer-Prozedur aus. Klappt auch - aber nur 2x! Sobald die Länge des Arrays auf 3 erhöht werden soll, gibts eine EAccessViolation bei 00401BFA, schreiben von Adresse 0045B82C. Sehr sinnloser Weise jedoch nur manchmal, nicht immer, und völlig ohne Regelmäßigkeit und Schema!
Hat jemand eine Idee, woran das liegen könnte?
Danke!
mfg
fortuneNext