Autor Beitrag
ak
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 240

Suse Windows 9 XP
D6 Professional
BeitragVerfasst: Mo 26.01.04 11:09 
Hallo Leute,

ich habe eine sehr umfangreiche Zeichenroutine, welche aus den Daten einer Datenbank eine Zeichnung erstellt. Diese Zeichnung wird auf einem TImage über Canvas. realisiert. In dieser Zeichenroutine sind unter anderem eine Menge "Textout", "MoveTo", "LineTo" und CopyRect-Anweisungen drin. Diese Zeichenroutine, welche ich nicht erstellt habe, aber verändern muss, frisst auf schwachen Rechnern zuviel Speicher und bringt mir dann entsprechende Meldungen (Zuwenig Speicher für diese Operation). Wie könnte ich das umgehen?

_________________
Gruß AK
Raphael O.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1596


VS 2013
BeitragVerfasst: Mo 26.01.04 15:09 
bist du sicher, dass es an dem Zeichnen und nicht an der Datenbank(auslesung) liegT?
ak Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 240

Suse Windows 9 XP
D6 Professional
BeitragVerfasst: Mo 26.01.04 15:33 
Das ist schwer zu sagen, wie könnte man das herausfinden?

In einem anderen Board wurde mir empfohlen ansatt eines Timage eine Paintbox zu nehmen, was aber auf schwachen Rechnern ebenfalls zu einer Fehlermeldung, über zu wenig Arbeitsspeicher führt.

Gruß

_________________
Gruß AK
Motzi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2931

XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
BeitragVerfasst: Mo 26.01.04 15:41 
Es würde vielleicht helfen, wenn du ein bisschen Code der Zeichenroutine zeigen würdest.. eine Fehleranalyse ohne Code ist nicht ganz leicht, und nicht jeder hat eine Glaskugel zu Hause stehen.. ;)

_________________
gringo pussy cats - eef i see you i will pull your tail out by eets roots!
ak Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 240

Suse Windows 9 XP
D6 Professional
BeitragVerfasst: Mo 26.01.04 16:02 
Hallo Motzi,

diese Routine ist zu umfangreich und verzweigt um sie hier zu posten. Ich denke, dass es da auch Standardtips geben muss um so etwas speichersparender hinzukriegen. Wie Paintbox anstatt TImage, was aber erstmal nichts gebracht hat.

_________________
Gruß AK
Keldorn
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 2266
Erhaltene Danke: 4

Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
BeitragVerfasst: Mo 26.01.04 16:13 
was soll denn das hier werden? du diskuttierst in 2 Foren und gibts nicht alle Infos.

www.delphipraxis.com...1caa92c5664323159824

dort steht zum Bsp, daß du mit großen bitmaps arbeitest, das fehlt hier. Und ohne Code wirds eh schwierig.

gugg mal auf www.efg2.com dort gibt es einen Artikel über LargeBitmaps, was für probleme entstehen können (hängt teilweise auch vom Betriebssystem ab, wenn ich mich recht erinnere).

edit: www.efg2.com/Lab/Gra.../VeryLargeBitmap.htm

Mfg Frank

_________________
Lükes Grundlage der Programmierung: Es wird nicht funktionieren.
(Murphy)
Raphael O.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1596


VS 2013
BeitragVerfasst: Mo 26.01.04 16:41 
schauen obs an der Datenbank liegt: einfach mal das zeichnen weglassen....
oder mal zeichnen ohne Daten aus der Datenbank...
dann müsste man sehn, wo der Fehler liegt...
ak Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 240

Suse Windows 9 XP
D6 Professional
BeitragVerfasst: Mo 26.01.04 16:41 
Hallo Keldorn,

dass ich ein TImage benutze steht in den Beiträgen über dir sehr wohl drin, zum Quellcode kann ich nur sagen, dass ich ihn nicht rausgeben kann.

Übrigens:

das Bild ist ca. 1,5 Bildschirme hoch und 4,14 Meter breit (scrollbar), da es sich um geographische Daten handelt, die in einem korrekten Maaßstab angezeigt werden, kann ich die Breite ziemlich genau angeben.

Auf einem Athlon 2000 mit 512mb Ram reicht der Speicher für dieses Bild auch nicht.

Das ist aber das grösste Bild, welches in einer anderen Version das Programms in zwei Teile aufgeteilt wird.

Gruß

@Fiji-Fighter: Das es an der Datenbank liegt, kann ich ausschließen.

_________________
Gruß AK
Raphael O.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1596


VS 2013
BeitragVerfasst: Mo 26.01.04 16:44 
na klasse... dann liegt der Fehler ja nicht an den Linetos sondern an dem riesigen Bild :D
hast da das alels in einer jpg oder bmp datei?
du könntest immer nur den Teil laden der gerade angezeigt ist -> für jede Bildschirmbreite ein Image, dann hast du maximal zwei bildschirmbreiten geladen, was noch klappen müsste...
Keldorn
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 2266
Erhaltene Danke: 4

Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
BeitragVerfasst: Mo 26.01.04 16:48 
ak hat folgendes geschrieben:
Hallo Keldorn,

dass ich ein TImage benutze steht in den Beiträgen über dir sehr wohl drin, zum Quellcode kann ich nur sagen, dass ich ihn nicht rausgeben kann.

ich habe überhaupt nichts von einem TImage geschrieben ;)
Zitat:

das Bild ist ca. 1,5 Bildschirme hoch und 4,14 Meter breit (scrollbar), da es sich um geographische Daten handelt, die in einem korrekten Maaßstab angezeigt werden, kann ich die Breite ziemlich genau angeben.

dann lies dir den efg-beitrag durch

allerdings stellt sich für mich die Frage, ob du hier nicht einen aufbaufehler hast. Zeichne nur den ausschnitt, den du auf dem Bildschirm ausgibst und nicht alles. deine Bitmap muß ja riesig sein - kein Wunder, das das solange dauert. oder schreib deine Ausgaben so, daß du dein Bild kacheln kannst und immer nur teilbereiche zeichnest. (wurde dir ja auch schon empfohlen)

Mfg Frank

_________________
Lükes Grundlage der Programmierung: Es wird nicht funktionieren.
(Murphy)
ak Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 240

Suse Windows 9 XP
D6 Professional
BeitragVerfasst: Mo 26.01.04 17:06 
Hallo Keldorn,

der Link ist wirklich interessant, ich denke mir wird dann wohl nichts anderes übrig bleiben, als das Bild zu zerteilen, da es selbst bei 8bit zu viel für den Arbeitsspeicher ist.

Wenn jemand eine andere Idee hat, ich bin gespannt.

Gruß

_________________
Gruß AK
umpani
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 389



BeitragVerfasst: Mo 26.01.04 19:48 
Hallo,

ich habe es zwar selbst nich nicht probiert, aber ist es wirklich notwendig, mit einem bitmap zu arbeiten?
Schau mal bei Torry.net nach, ob es da nicht was für Meta-Dateien gibt,
Dort werden nicht die Pixel gespeichert, sondern nur die Vektoren der Linien,

Gruß Umpani

_________________
Lernen, ohne zu denken, ist eitel; denken, ohne zu lernen, ist gefährlich. Konfuzius