Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Array grösse 2GB (https://www.delphipraxis.net/81394-array-groesse-2gb.html)

fgb 26. Nov 2006 13:58


Array grösse 2GB
 
Moin,

wenn ich diese Typdeklartionen verwende bekomm ich diese Fehlermeldung:
E2100 Datentyp zu groß: 2 GB überschritten.
Nun die Frage ob ich das irgendwie umgehen kann?

Delphi-Quellcode:
MAXDATEIEN = 100;
MAXUNTERPRO = 10;
MAXPROJEKTE = 100;

TGroesse = 0..MAXDATEIEN;
TProzent = 0..100;

TAuswUP=array[0..MAXPROJEKTE,0..MAXDATEIEN,0..MAXUNTERPRO] of TProzent;

TDateiErken = Record
Gleichheit: TProzent;
UnterprogrammeGleich: 0..MAXUNTERPRO;
UnterProAnzahl: 0..MAXUNTERPRO;
HauptGleich: 0..MAXDATEIEN;
UP: TAuswUP;
End;

TAuswDatei = array[0..MAXDATEIEN] of TDateiErken;
TAuswProjekt = array[0..MAXPROJEKTE] of TAuswDatei;

TAuswertung = array[TGroesse] of TAuswProjekt;

mirage228 26. Nov 2006 14:04

Re: Array grösse 2GB
 
Hi,

Du könntest eines der folgendenden Sachen machen. ;)
  • Du änderst die Größe deiner Konstanten
  • Du überdenkst Dein Programm-Design, sodass Du nicht mehr so viele und so große Arrays benötigst
  • Du verwendest dynamische Arrays
  • Du verwendest Listen (TObjectList, TList)
  • Du verwendest OOP (Klassen) in Kombination mit Listen
  • ...

Möglicherweise ist die Lösung Deines Problems eine Kombinations aus einzelnen Punkten, aber ohne Dein Problem bzw. Dein Programm konkret zu kennen, lässt sich da nichts genaues zu sagen.

mfG
mirage228

SirThornberry 26. Nov 2006 14:07

Re: Array grösse 2GB
 
im übrigen wird bei
Delphi-Quellcode:
array[0..MAXDATEIEN]
für MAXDATEIEIN + 1 Speicherplätze reserviert. In dem fall also 101.

fgb 26. Nov 2006 14:21

Re: Array grösse 2GB
 
Aber wenn ich Dynamische Array und Listen verwende komm ich ja Sppätestens wein ich wieder soviele Elmente habe an eine Gleiches Speicherproblem oder?
Bloss dann brauch ich 2 Gb Memory Speicher oder?
Und braucht eine Liste nicht sogar mehr Speicher?

hoika 26. Nov 2006 14:34

Re: Array grösse 2GB
 
Hallo,

statische Arrays werden also zusammenhängender Speicherbereich erstellt,
da ist wohl bei Delphi Schluss (genauer bei Windows).
Mit TList werden kleine Häppchen angefordert,
es wird ausserdem immer nur so viel Speicher benutzt,
wie gerade benötigt wird.

Es können 4Mrd Listeneinträge erstellt werden,
wenn dir das zu wenig ist, was hast du vor ??? ;)

Jedes Programm kann 2 Gig Speicher anfordern,
ändern kann man das max. auf 3 GIG (Bootparameter von Windows).


Heiko

fgb 26. Nov 2006 14:41

Re: Array grösse 2GB
 
Ok dann werd ich wohl Listen benutzten, immer noch besser als das zwischen zuspeichern in Dateien. Wahr auch winw Idee von mir.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:36 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