Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Zeichenroutine frisst zuviel Speicher (https://www.delphipraxis.net/15304-zeichenroutine-frisst-zuviel-speicher.html)

ak1 26. Jan 2004 17:36

Re: Zeichenroutine frisst zuviel Speicher
 
@Dizziy, das ist eine beeindruckende Rechnung, komischerweise lassen sich die Bilder, welche nur halb so gross sin, anzeigen. Und 40GB hat die Auslagerungsdatei bestimmt nicht ;-) ....ich werde das Bild zerhacken, weil es anders wohl nicht geht.


Gruß

dizzy 26. Jan 2004 18:05

Re: Zeichenroutine frisst zuviel Speicher
 
Ach du K***, hab mich da voll vertan an einer Stelle... Ich hab' die Kilobytes vergessen :\

Also heisst es:

718.248.960 Bit = 89.781.120 Byte = 87.677 kB = 85,62 MB

Mal für 32Bit-Bitmaps:
957.665.280 Bit = 119.708.160 Byte = 116.902,5 kB = 114,2 MB


Dann sieht das nicht mehr nach so viel aus :mrgreen: :roll: :oops:
Aber trotz alle dem nicht gerade klein, und je nach dem was alles im Hintergrund mitläuft, und wieviel RAM dann noch über ist, können auch 100MB einem in die Suppe spucken.

Aber es kann grundsätzlich nicht schaden, solche Riesenausgaben wie beschrieben zu unterteilen.


gruss,
dizzy

Gandalfus 26. Jan 2004 18:45

Re: Zeichenroutine frisst zuviel Speicher
 
selbst wenn das unter XP läuft unter 98 geht das mit so grossen Bildern niemals. Das Bild muss zerteilt werden wie das jetzt in deinem Fall geht kann man ohne code nicht sagen.

Delphi-Quellcode:
ich würde das in etwa so machen:

type
  TBildteil = object;
  puplic
    width,height: integer;
    left,top: integer;
    Bild: TBitmap;
    constructor create;
    destructor destroy; override;
  end;

[..]

constructor TBildteil.create;
begin
  inherited;
  Bild := TBItmap.create;;
end;

destructor TBildteil.destroy;
begin
  Bild.free;
  inherited;
end;


var
  Bildteil : array [0..2,0..2] of TBildteil;

[..]
for x:=0 to 2 do
begin
  for y:=0 to 2 do
  begin
    Bildteil[x,y] := TBildteil.create;
    Bildteil.left := x;
    Bildteil.top := y;
  end;
end;

Bildteil[0,0].bild.asign(BIldteil1)
....


zeichnen:
for x:=0 to 2 do
begin
  for y:=0 to 2 do
  begin
    //hab im Moment keien Zeit mehr
  end;
end;
mfg

ak1 26. Jan 2004 18:47

Re: Zeichenroutine frisst zuviel Speicher
 
@Dizzi und Co.

ich hab aus einem andern forum einen interessanten Link zum Thema bekommen:
http://www.efg2.com/Lab/Graphics/VeryLargeBitmap.htm

Es liegt wohl weder an Delphi, sondern vielmehr an Windows, welches Probleme mit grossen bildern hat. Da kann der speicher nur bedingt etwas ausrichten, da ja in meinem Fall 512 MB hätten ausreichen müssen...aber lest selbst.

dizzy 26. Jan 2004 20:21

Re: Zeichenroutine frisst zuviel Speicher
 
Hat ja keiner gesagt, dass es an Delphi läge ;)
Die Seite kannte ich sogar schon - diesen Artikel hab ich mir zu meiner Schande aber noch nie angesehen - sehr hilfreiches Zeug da!

Aber das zeigt ja noch deutlicher, dass man auf jeden Fall splitten sollte, wenn das Programm auch noch auf älteren Rechnern lauffähig sein soll. Wahrscheinlich liegst du mit deiner Bildgröße mit im oberen Drittel (Wertemäßig, nicht der Position nach gesehen) der dort gezeigten Tabelle.

Danke aber für den Hinweis. Wer weiss, ob man nicht ganz fix selber vor dem gleichen Problemchen steht... :)


gruss,
dizzy


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:23 Uhr.
Seite 2 von 2     12   

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