Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi Probleme mit array of Record Type (https://www.delphipraxis.net/161134-probleme-mit-array-record-type.html)

Seren200018 18. Jun 2011 15:58

Probleme mit array of Record Type
 
Ich habe folgenden Code
Delphi-Quellcode:
TMvpdataarray = array of TMvp;
Tchardataarray = array of Tchardata;
TMvp und Tchardata sind records

Diese habe ich nun zur besseren Übergabe erstellt und in eine Klasse eingebunden.

Delphi-Quellcode:
TRagnarokDataclass = class

    private
      Addresses : Tdatalocation;
      pmvpstracked : integer;
      proinfocus : integer;

    public
      Mvpdata : Tmvpdataarray;
      Chardata : Tchardataarray;
      basestep : integer;
      jobstep : integer;
      constructor create(var popupmenu : Tpopupmenu);
      procedure updatechar;
      procedure LoadInis(var popupmenu : Tpopupmenu);
      procedure SaveInis;
      property mvpstracked : integer read pmvpstracked;
      property roinfocus : integer read proinfocus;

  end;
Wenn ich nun versuche Setlength oder zeromemory auf Mvpdata und Chardata anzuwenden erhalte ich eine EAccessviolation. Kennt jemand den Grund dafür und einen Weg das zu umgehen?
Hier mal der Code beispielhaft für beides!
Delphi-Quellcode:
  setlength(Chardata,0);
  zeromemory(@Mvpdata,Sizeof(Mvpdata));

himitsu 18. Jun 2011 16:04

AW: Probleme mit array of Record Type
 
SetLength sollte funkionieren, wenn nicht, dann hast du irgendwo in deinem Code einen Fehler und hast die Arrayverwaltung zerschossen.

ZeroMemory: Du weißt aber, daß dynamische Arrays aus einem Zeiger auf dessen Daten bestehn?
Egal, wenn es sogar bei deinem falschen ZeroMemory-Aufruf knallt, dann stimmt ebenfalls in deinem Code etwas nicht.

Vermutung: Ist dein Objekt überhaut ordentlich erstellt worden?

Seren200018 18. Jun 2011 16:12

AW: Probleme mit array of Record Type
 
Oh gott *facepalm*

Du hast recht. Ich hatte tatsächlich einen fehler im Aufruf!
Vielen dank für den Hinweis =)


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:41 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz