Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Größenbeschränkung eines array of record (https://www.delphipraxis.net/147272-groessenbeschraenkung-eines-array-record.html)

Sternkucker 4. Feb 2010 22:33


Größenbeschränkung eines array of record
 
Hallo liebe Forenmitglieder,

ich bin auf ein Phänomen gestoßen, das ich mir nicht erklären kann. Ich habe in einer Klasse ein array of record:

Delphi-Quellcode:
type TDice = class
  private
    Z: array of record
         A, B, C : double;
         D, E, F : array of integer;
         G, H, I : integer;
         J, K, L : boolean;
         M      : String;
       end;
(...)
Funktioniert soweit einwandfrei. Wenn ich nun eine Variable N hinzufüge (egal welchen Types), bekomme ich beim Create der Klasse im Hauptprogramm (MyDice := TDice.Create) eine Schutzverletzung ("EAccessViolation"). 12 Variablen gehen, bei der 13. klappt es nicht mehr. Ich habe mit den Variablennamen und Typen herumgespielt, das scheint irrelevant zu sein. Ich verwende Delphi 2010.

Hat jemand eine Idee, woran das liegen könnte?

Uwe Raabe 5. Feb 2010 07:31

Re: Größenbeschränkung eines array of record
 
Ich habe das hier mal mit einem N: Integer ausprobiert, aber keinerlei Probleme feststellen können...

Probier doch mal, den Record als eigenen Typ zu deklarieren und beim Klassenfeld dann diesen Typ zu benutzen. Du kannst auch noch eine Stufe weiter gehen und das array of record als eigenen Typ deklarieren. Wenn du diese Typen nicht außerhalb der Klasse brauchst, kannst du sie auch inenrhalb der Klasse deklarieren.

himitsu 5. Feb 2010 07:40

Re: Größenbeschränkung eines array of record
 
Hier ebenfalls kein Problem.

(D2010 mit allen Updates)

[edit]
probier es mal mit 14 ... vielleicht ist 13 ja deine Unglückszahl? :lol:

Luckie 5. Feb 2010 07:44

Re: Größenbeschränkung eines array of record
 
Könnte es sein, dass der String eventuell Probleme bereitet?

Sternkucker 5. Feb 2010 09:28

Re: Größenbeschränkung eines array of record
 
Danke, habe die Lösung gefunden. PC neu starten hat geholfen! Standby und Ruhezustand, sowie Delphi öffnen+schließen waren ohne Wirkung geblieben - da hatte ich schon an mir bzw. meinem Delphi gezweifelt. Seit dem Reboot klappt es.

Ich vermute, dass irgendwelche Relikte im Speicher festgehängt sind. Da ich momentan viel Teste, habe ich es mit den .free etc nicht so genau genommen. Auch die array-Grenzen sind schon böse strapaziert worden...

Pardon, dass ihr eure Zeit für so einen Unsinn geopfert habt, ich werde in Zukunft immer neu starten vor ich hier poste :?

Neutral General 5. Feb 2010 09:54

Re: Größenbeschränkung eines array of record
 
Zitat:

Zitat von Sternkucker
Pardon, dass ihr eure Zeit für so einen Unsinn geopfert habt, ich werde in Zukunft immer neu starten vor ich hier poste :?

Besser wäre es wenn du deinen Speicher nicht misshandeln würdest ;)

himitsu 5. Feb 2010 09:57

Re: Größenbeschränkung eines array of record
 
Dennoch sollte Windows den Speicher freigeben, wenn das Programm beendet wird, selbst wenn man .Free vergißt (zumindestens seit WinNT).

Neutral General 5. Feb 2010 10:02

Re: Größenbeschränkung eines array of record
 
Ja klar, aber er scheint es ja doch irgendwie geschafft zu haben was kaputt zu machen :mrgreen:


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:10 Uhr.

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