Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   Conway's Game Of Life (GoL); auch noch von mir (https://www.delphipraxis.net/140594-conways-game-life-gol-%3B-auch-noch-von-mir.html)

Lumpiluk 22. Sep 2009 20:51

Re: Conway's Game Of Life (GoL); auch noch von mir
 
Zitat:

Zitat von HalloDu
Ich gehe mal davon aus, dass du die Werte in einem dynamischen Array speicherst. Wenn du nun die Größe des Arrays mit SetLength bestimmst, wird dafür Speicher reserviert. Wenn nun der Array zu groß wird, muss nun zu viel Speicher reserviert werden, was zu deiner Fehlermeldung führt.

Es geht ja ums Zoomen, heißt: der Array bleibt gleich groß.

himitsu 22. Sep 2009 20:57

Re: Conway's Game Of Life (GoL); auch noch von mir
 
Die Fehlermeldung komm ja, wenn nicht genug Speicher verfügbar "war",
also es wird dann kein Speicher mehr reserviert und im Taskmanager kann man da garnichts erkennen.

Debugge doch einfach mal die entsprechenden Stellen und schau wo/wann es genau "knallt".

Medium 22. Sep 2009 21:19

Re: Conway's Game Of Life (GoL); auch noch von mir
 
Diese Meldung ist mir ab und an begegnet, wenn ich mit GDI Ressourcen etwas großzügig wurde. Erstellst du evtl. oft und schnell hintereinander Bitmaps o.ä. neu? Wenn ja, versuch mal immer nur ein Mal zu erstellen, und dann immer wieder neu befüllen, statt schnellles Spiel aus .Free und .Create.

Lumpiluk 22. Sep 2009 21:26

Re: Conway's Game Of Life (GoL); auch noch von mir
 
Problem mehr oder weniger gelöst: Habe jetzt die Image-/PaintBox-Größe auf 3000 Pixel beschränkt. Bei mir kam immer erst danach der Fehler.

.free und .create habe ich hier selber eigentlich garnicht verwendet (ist wie gesagt ein älteres Programm, das ich bearbeitet habe und damals kannte ich das noch nicht so).

Medium 23. Sep 2009 00:54

Re: Conway's Game Of Life (GoL); auch noch von mir
 
Aha! Okay, das heisst dass dein Bitmap (oder wo auch immer du drauf zeichnest) einfach riesig geworden ist. Das erklärt das auch, da diese seitens Windows gewissen Grenzen unterworfen sind. Die "saubere" lösung wäre hier PaintBox/Bitmap/Image selbst auch wirklich nur genau so groß zu halten wie den tatsächlich sichtbaren Bereich, aber nur das hinein zu zeichnen was man gerade sehen soll. Das heisst dass du das Scrolling nicht "faul" (überspitzt gesagt) den Steuerelementen überlassen, sondern das selbst in die Hand nehmen solltest. Das wäre auch der übliche Weg bei allen möglichen grafischen Angelegenheiten. (Auch bei Direct3D z.B. wird mittels teilweise sehr aufwendigen Methoden im Vorfeld bestimmt welche Elemente man überhaupt sehen wird, bevor sie an DX zum Zeichnen geschickt werden. Auf lange Sicht zahlt sich das generell mächtig aus, in Ressourcensparsamkeit und oft auch Geschwindigkeit.)

Lumpiluk 23. Sep 2009 12:27

Re: Conway's Game Of Life (GoL); auch noch von mir
 
Schade, das hört sich ziemlich aufwändig zu programmieren an...
Ich stell mir das jetzt so vor:
Ich hol das Image und die PaintBox aus der ScrollBox raus und mache unten und rechts je eine ScrollBar hin. Dann müsste ich wahrscheinlich den Maximalwert der ScrollBars immer an den Array anpassen, etwas davon abziehen, damit man plötzlich nicht garnichts mehr sieht und im OnPaint nur ab deren Positionen zeichnen. Mit irgendeinem Anderen Regler könnte man dann die Zellengröße bestimmen... Ist das so im Ansatz richtig?

Heute werde ich aber höchstwahrscheinlich wegen der Schule keine Zeit mehr dafür haben. Mal sehen, wie das Wochenende aussieht.

xZise 25. Sep 2009 01:14

Re: Conway's Game Of Life (GoL); auch noch von mir
 
Also so wie ich das gelesen habe stimmt das ;)

Also wenn du nur die Pixel X=10-20 und y=5-15 sehen kannst, dann zeichnest du nur diese Pixel, aber rechnest natürlich immer mit allen Pixeln!

MfG
xZise

Lumpiluk 25. Sep 2009 17:08

Re: Conway's Game Of Life (GoL); auch noch von mir
 
So, erstmal großes Dankeschön an alle! Die eigene 'ScrollBox' dürfte soweit fertig sein und funktioniert bei mir bis jetzt wunderbar :-D .
Zwischenzeitlich habe ich sogar noch Zeit gefunden, das Schnellstartmenü etwas zu erweitern und in beide Menüs eigene kleine Icons einzufügen.
Ich hoffe, es gefällt euch!


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