AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

DynArray Fehler beim Length erhöhen

Ein Thema von fortuneNext · begonnen am 21. Jun 2008 · letzter Beitrag vom 21. Jun 2008
Antwort Antwort
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
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
16.999 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: DynArray Fehler beim Length erhöhen

  Alt 21. Jun 2008, 22:56
Delphi-Quellcode:
  SetLength(Players, Length(Players) + 1);
  Players[Length(Players)] := TPlayer.Create(Name);
Dynamische Arrays sind 0-Basierend:

Erhöhung von 0 -> 1 Players
  Players[Length(Players)] := TPlayer.Create(Name); Length(Players) = 1
aber nur Players[0] gültig

Besser

  Players[High(Players)] := TPlayer.Create(Name);
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#3

Re: DynArray Fehler beim Length erhöhen

  Alt 21. Jun 2008, 22:58
PS: PlayerIni wird nicht frei gegeben.
Thomas
  Mit Zitat antworten Zitat
fortuneNext

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

Re: DynArray Fehler beim Length erhöhen

  Alt 21. Jun 2008, 23:28
Ahhh, erstes war der Fall Hatte mir schon Gedanken drüber gemacht, aber hab wohl doch nen Denkfehler gemacht
Und danke für den Free Hinweis, ich hatts wirklich vergessen
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
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:42 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf