AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Dynamisches Array Grenze?

Ein Thema von EWeiss · begonnen am 28. Mär 2012 · letzter Beitrag vom 29. Mär 2012
Antwort Antwort
Benutzerbild von isilive
isilive

Registriert seit: 15. Okt 2008
Ort: Österreich
192 Beiträge
 
Delphi 2009 Professional
 
#1

AW: Dynamisches Array Grenze?

  Alt 28. Mär 2012, 21:58
Hab gestern dynamische Arrays gebraucht. Da war Schluss bei 33 Mio. Elementen und einem theoretischen Ramverbrauch von Arraycount x Elementsize(40 Bytes) = 1,3GB. Grösser ging dann nicht mehr. Win7 32bit, kein 3GB Switch aktiviert.
Stefan
Jedoch kann die referenzbasierte Implementierung des Standard-Objektmodells in Kombination mit den komplexen syntaktischen Dereferenzierungsregeln bei einer objektorientierten API wie ein Stolperstein wirken.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#2

AW: Dynamisches Array Grenze?

  Alt 28. Mär 2012, 22:01
Hab gestern dynamische Arrays gebraucht. Da war Schluss bei 33 Mio. Elementen und einem theoretischen Ramverbrauch von Arraycount x Elementsize(40 Bytes) = 1,3GB. Grösser ging dann nicht mehr. Win7 32bit, kein 3GB Switch aktiviert.
Das ist auch nicht mein problem.. Danke schön
Habe ja schon festgestellt woran es liegt CreateDIBSection gibt mir nicht die korrekte anzahl an pixel

gruss
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Dynamisches Array Grenze?

  Alt 29. Mär 2012, 01:27
Im MSDN reiten die für hSection so auf NULL herum, dann würde die API auch den Speicher reservieren. Wenn nicht NULL, dann muss man den Speicher selber bereitstellen.

Also evtl. so?
hDirectBitmap := CreateDIBSection(hDirectDC, bmInfo, DIB_RGB_COLORS, Pointer(Pixels), NULL, 0);
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#4

AW: Dynamisches Array Grenze?

  Alt 29. Mär 2012, 02:10
Das werd ich mal testen Danke.
Nur wo ist NULL deklariert .. hmm OK in Variants

Leider nicht
Zitat:
Erste Gelegenheit für Exception bei $7715B9BC. Exception-Klasse EVariantTypeCastError mit Meldung 'Variante des Typs (Null) konnte nicht in Typ (Int64) konvertiert werden'. Prozess DimmedTest.exe (344)
Zitat:
dann muss man den Speicher selber bereitstellen.
Wenn ich jetzt wüßte wie, bezogen auf diese function, dann wäre es ja gut

EDIT:
Sieht so aus
Zitat:
If hSection is not NULL, it must be a handle to a file mapping object created by calling the CreateFileMapping function.
Mein Problem das ich aber habe verfüge nur über ein HBitmap und lade keine Datei.
Könnte den hFile parameter mit INVALID_HANDLE_VALUE befüllen aber ob es damit getan ist?
Warum stellt Delphi den Parameter NULL zur verfügung wenn es nicht damit umgehen kann.
Oder ich bin einfach zu

In C++ sieht es so aus
Code:
HBITMAP hBitmap = CreateDIBSection(hDC, (BITMAPINFO*)&bmi, DIB_RGB_COLORS,(void**)&ppvBits , NULL, 0);
Anders hab ich es auch nicht, abgesehen von "NULL"
Hab mit CreateDIBSection schon viel gemacht aber das schlägt dem Fass den Boden aus.

gruss

Geändert von EWeiss (29. Mär 2012 um 04:32 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.415 Beiträge
 
Delphi 12 Athens
 
#5

AW: Dynamisches Array Grenze?

  Alt 29. Mär 2012, 08:11
Zitat:
Nur wo ist NULL deklariert .. hmm OK in Variants
Fast, das NULL ist Variants ist ein Variant mit dem Wert NULL,
aber das hat mit diesem NULL nichts gemeinsam.

nil oder 0, je nach dem, ob der Parameter als Zeigertyp oder als ordinaler Typ deklariert ist.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.490 Beiträge
 
Delphi 12 Athens
 
#6

AW: Dynamisches Array Grenze?

  Alt 29. Mär 2012, 08:14
Das ist in erster Linie ein Problem des Grafiktreibers.
Je nach Grafikkarte und Hersteller kann auch schon bei 1024x768 Schluss sein.
Allgemein kann man sich nicht darauf verlassen das man größere geräteabhängige Bitmaps erzeugen kann, als die maximal darstellbar Auflösung der Hardware hergibt.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#7

AW: Dynamisches Array Grenze?

  Alt 29. Mär 2012, 13:22
Das ist in erster Linie ein Problem des Grafiktreibers.
Je nach Grafikkarte und Hersteller kann auch schon bei 1024x768 Schluss sein.
Wäre es ein Grafikkarten problem dann würde diese Abfrage fehlschlagen.
Delphi-Quellcode:
  ClientDC := GetWindowDC(ParentHandle);
  if (GetDeviceCaps(ClientDC, RASTERCAPS) and RC_PALETTE = RC_PALETTE) then
  begin
    Result := False;
    exit;
  end;
Zumal bei einer Grafikkarte Gforce gtx 460 1GB (GPU Ram)eingestellter Auflösung von 1920x1200
8GB ram / Speicher kein Problem sein dürfte.

Zitat:
Allgemein kann man sich nicht darauf verlassen das man größere geräteabhängige Bitmaps erzeugen kann, als die maximal darstellbar Auflösung der Hardware hergibt.
Tue ich auch nicht wenn überhaupt dann die aktuelle größe des Desktop.

Außerdem habe ein programm in C++ getestet ohne Bildmanipulation und dort wird der Speicher
bzw.. die richtige anzahl von Pixeln auf meinem System ohne Probleme verwaltet.

Zitat:
nil oder 0, je nach dem, ob der Parameter als Zeigertyp oder als ordinaler Typ deklariert ist.
Jo und das habe ich ja also 0 für Cardinal.

gruss

Geändert von EWeiss (29. Mär 2012 um 13:48 Uhr)
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.077 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: Dynamisches Array Grenze?

  Alt 29. Mär 2012, 15:01
Hau doch mal den ganzen Quelltext von der DLL raus, sonst kann doch keiner richtig debuggen.
Sonst stocheren wir hier nur so rum und das Problem ist vielleicht ganz woanderes.
  Mit Zitat antworten Zitat
Antwort Antwort


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 23:26 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