Einzelnen Beitrag anzeigen

fortuneNext

Registriert seit: 11. Aug 2007
Ort: Neuss
133 Beiträge
 
Delphi 7 Enterprise
 
#1

DynArray Fehler beim Length erhöhen

  Alt 21. Jun 2008, 22:50
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
Tim
"Hilfe & Support konnte nicht geöffnet werden. Bitte öffnen sie Hilfe & Support, um das Problem zu beheben."
"No Keyboard found. Press F1 to continue."
  Mit Zitat antworten Zitat