Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Eigene Datentypen beschraenkungen (https://www.delphipraxis.net/80596-eigene-datentypen-beschraenkungen.html)

fgb 11. Nov 2006 22:00


Eigene Datentypen beschraenkungen
 
Gibt es Speicher maessig irgend welche Beschraekungen.
z.B. Das man nicht unendliche viele Array die ebenfalls Records und Array enthalten benutzten kann?

Ich hab jetzt um Beispiel 4 Array die jeweils 0..100 elemente enthalten in eine Record Datentyp geschatelt.

Gibt es wenn das nicht geht, vileicht moeglichkeiten das zu umgehen?

Ist es effizenter eine eigene Klasse statt ein Record zu benutzten?

Bernhard Geyer 11. Nov 2006 22:05

Re: Eigene Datentypen beschraenkungen
 
Sicherlich. Jeder Prozess darf unter eine 32-Bit-Windows maximal 2 GB Speicher allokieren. Unter eine 64-Windows ist es möglich für eine 32-Bit-Programm 3 GB zu Allokieren.

Klassen sind fast immer besser zu verwenden wenn es darum geht diverse Funktionen für diese Strukturen bereitzustellen. Klasseninten darfst du trotzdem Records verwenden.

fgb 11. Nov 2006 22:13

Re: Eigene Datentypen beschraenkungen
 
Kann ich auch feststellen wie viel Speicher ich alloziert habe?

EDatabaseError 11. Nov 2006 22:44

Re: Eigene Datentypen beschraenkungen
 
die imho einfachste methode ist alle daten reinzufüllen und dann mal im taskmanager schauen wie viel man verbraucht (unter prozesse die eigene anwendung suchen vllt. noch ein paar häkchen setzen)

tobi

Christian Seehase 12. Nov 2006 00:28

Re: Eigene Datentypen beschraenkungen
 
Moin Zusammen,

Zitat:

Zitat von Bernhard Geyer
Jeder Prozess darf unter eine 32-Bit-Windows maximal 2 GB Speicher allokieren.

Sollte mehr erforderlich sein, könnte man sich, u.U., noch mit Memory Mapped Files behelfen, wobei dann die Handhabung, und wohl auch die Performance leiden werden.

fgb 13. Nov 2006 14:43

Re: Eigene Datentypen beschraenkungen
 
Bim mir tritt das Problem ja eigentlich immer auf wenn ich den Datentyp an eine Procedure übergebe bzw. als Rückgabewert einer Funktion geht es gar nicht. Ich bekomme dann immer die fehlermeldung das der Stack überglaufen sei. Deswegen komm mir jetzt die Vermutung auf das der Datentyp zwar genung Speicher hat, aber der Datentyp für Proceduren und Funktion zugross ist. Kann das sein und was kann man dagegen tun?

marabu 13. Nov 2006 15:16

Re: Eigene Datentypen beschraenkungen
 
Hi,

Funktionsparameter, welche auf dem Stack übergeben werden, unterliegen natürlich den konfigurierten Beschränkungen. Schaue dazu mal in den Projektoptionen auf der Seite "Linker".

Grüße vom marabu

fgb 13. Nov 2006 15:26

Re: Eigene Datentypen beschraenkungen
 
Danke marabu das Klappt Prima!

Wie hoch darf ich die Stack Grösse den einstellen und was für Nachteil hat das (bzw. Probleme könne auftreten)?

r2c2 13. Nov 2006 17:01

Re: Eigene Datentypen beschraenkungen
 
Folgender Thread könnte helfen: http://forum.dsdt.info/viewtopic.php?t=26632

Ich würde aber vorschlagen, wenn du wirklich so große Parameter hast, pack die aufn Heap. Und das geht am einfachsten, wenn du Klassen draus machst...

mfg

Christian


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