Autor Beitrag
roka6803
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 50


Delphi 5 Ent. & Delphi 7
BeitragVerfasst: Mi 27.10.04 14:31 
Hallo an Alle,

bin relativ neu bei Delphi und habe gerade begonnen einen Skill-Kalkulator zu programmieren. Mein Projekt hat bereits vier Formen und frisst rund 4.9 MB Ram. Nun würde ich gerne wissen ob es möglich ist das zu reduzieren auf ein Minimum den am Ende (wenn es je fertig werden sollte *g*) hat das Projekt rund 30 bis 35 Formen bei 400-450 eingefügten Jpegs.

Natürlich werde ich alle eingebundenen Files in eine *.res schreiben aber ich habe die Befürchtung, dass die RAM-nutzung meines PRojekts bzw. der fertigen EXE am Ende mit steigender ANzahl Formen in die Höhe schiesst und möchte
dies nun verhindern! Aber wie?

MfG Roka
jojo-sp
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 317

Windows XP Prof, Vista Ultimate & Home Premium, Windows 7
Delphi 7 Enterprise, Delphi 2009
BeitragVerfasst: Mi 27.10.04 14:43 
Wenn du Bilder in Delphi auf ein image lädst, liegen diese Bilder im Arbeitsspeicher und füllen ihn daher.
Da ich aus deiner Beschreibung nicht ganz schlau geworden bin, habe ich auch keine Lösung parat.

_________________
Ist der Ruf erst ruiniert, lebts sich gänzlich ungeniert...
Wilhelm Busch (1832 - 1908)
roka6803 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 50


Delphi 5 Ent. & Delphi 7
BeitragVerfasst: Mi 27.10.04 18:25 
hallo jojo,

vielen dank für diesen hinweis. auf alle fälle habe ich das mit dem *res dingens probiert bringt nichts. mein zweiter versuch bestand darin die pics dynamisch in jede form zu laden (über formcreate) usw.. habe dann aber festgestellt, dass die exe dann noch mehr ram frisst. hast du ne ahnung wieso ?
F34r0fTh3D4rk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Mi 27.10.04 19:34 
vielleicht sollten die bilder nur dann geladen werden,wenn sie gebraucht
werden bzw wenn sie sichtbar sind, ansonsten sollten sie wieder raus.
Aton
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 125

Windows XP
D7 Enterprise
BeitragVerfasst: Do 28.10.04 10:00 
Hast du schon probiert unter "Projekt/Optionen/Formulare" die Formulare verfügbar zu machen? Dann werden sie nicht automatisch erzeugt, und du kannst sie bei Bedarf mit

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
  Form1 := TForm1.Create(Self);
  try
    Form1.ShowModal;
  finally
    Form1.Release;
  end;


im RAM erzeugen.

Gruß Jens.

Moderiert von user profile iconTino: Code- durch Delphi-Tags ersetzt.
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6393
Erhaltene Danke: 147

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Do 28.10.04 10:12 
imho sind die Bilder aber immer noch in der EXE drin.
Ich würde bei der großen Zahl von Bildern, überhaupt keine Bilder direkt einbinden. Die Bilder sollten als separate Dateien zur Laufzeit geladen werden.
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 28.10.04 10:35 
jasocul hat folgendes geschrieben:
imho sind die Bilder aber immer noch in der EXE drin.

Worum geht es jetzt? Um die Größe der Exe-Datei oder den Speicherbedarf im Arbeitsspeicher, wenn sie läuft?
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6393
Erhaltene Danke: 147

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Do 28.10.04 11:13 
ich bin mit der speicherbelastung einer exe nicht so gut vertraut, aber wird die nicht zu 100% in den Speicher geladen? Wenn dann die Bilder direkt in der exe hinterlegt sind, dann wird der Speicher doch auch entsprechend belastet, oder?
Erklär mal Luckie. Ich lerne gern was dazu.
Moritz M.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1672



BeitragVerfasst: Do 28.10.04 11:18 
Eine EXE wird beim Start komplett in den RAM geladen. Deswegen ist es empfehlenswert die Bilder und Resourcen auszulagern.

Gruß
jojo-sp
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 317

Windows XP Prof, Vista Ultimate & Home Premium, Windows 7
Delphi 7 Enterprise, Delphi 2009
BeitragVerfasst: Do 28.10.04 11:33 
Musst du denn für jedes Image ne eigene Form haben? Wäre es nicht einfacher alle Bilder die in einem Ordner sind, in einer stringlist mit der Pfadangabe zu speichern und bei Bedarf dieses auf dem Image in "Form1" darzustellen?

_________________
Ist der Ruf erst ruiniert, lebts sich gänzlich ungeniert...
Wilhelm Busch (1832 - 1908)
Moritz M.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1672



BeitragVerfasst: Do 28.10.04 11:35 
Nein, wieso? Du lädst das Image aus einer externen Datei in ein TImage o.Ä.
jojo-sp
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 317

Windows XP Prof, Vista Ultimate & Home Premium, Windows 7
Delphi 7 Enterprise, Delphi 2009
BeitragVerfasst: Do 28.10.04 11:40 
Meine Frage war falsch Formuliert: Wozu müssen es denn so viele Forms sein?

_________________
Ist der Ruf erst ruiniert, lebts sich gänzlich ungeniert...
Wilhelm Busch (1832 - 1908)
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 28.10.04 12:23 
Nein, eine Anwendung wird nicht komplett in den Speicher geladen. Die Teile, die nicht gebraucht werden, werden erst nachgeladen, wenn sie gebraucht werden. Es sei denn man hebelt das Speichermanagment von Windows mit Exe-Packern oder der Gleichen aus.
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6393
Erhaltene Danke: 147

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Do 28.10.04 12:46 
@Luckie:
Da scheint es verschiedene Ansichten zu geben (siehe Moritz).
Hast du eine Quelle, wo man sich informieren kann?
Oder wollen wir da mal in einem eigenen Topic diskutieren?
roka6803 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 50


Delphi 5 Ent. & Delphi 7
BeitragVerfasst: Do 28.10.04 13:12 
Hallo Leute,

also wie ich das verstanden habe werden alle benutzen formen in den speicher geschrieben. mein problem ist jetzt aber das ich die formen wenn ich sie schliesse nur hide und nicht ganz schliesse um die dort gemachten einstellungen in edits o.ä. zu behalten und nicht verloren gehen.

Wenn ich die formen zu den berechnungen schliesse ist zawr der speicher entlastet aber die daten sind weg. Wie kann ich also eine form schliessen, sodass der speicher entlastet wird die eingegebenen informationen aber erhalten bleiben um auch in anderen formen verfügbar zu sein.

p.s. : die größe der exe ist erstmal unwichtig

_________________
Signatur? Was ist das? Brauch ich nicht...
AndyB
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1173
Erhaltene Danke: 14


RAD Studio XE2
BeitragVerfasst: Do 28.10.04 13:28 
roka6803 hat folgendes geschrieben:
nur hide und nicht ganz schliesse um die dort gemachten einstellungen in edits o.ä. zu behalten und nicht verloren gehen.

Da würde ich sagen, dass du ein falsches Design hast. Man sollte die Daten und die Oberfläche voneinander trennen und nicht die Daten in der Oberfläche halten. Dann passiert einem sowas schon gleich gar nicht.

_________________
Ist Zeit wirklich Geld?
Motzi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2931

XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
BeitragVerfasst: Do 28.10.04 13:35 
jasocul hat folgendes geschrieben:
@Luckie:
Da scheint es verschiedene Ansichten zu geben (siehe Moritz).
Hast du eine Quelle, wo man sich informieren kann?
Oder wollen wir da mal in einem eigenen Topic diskutieren?

Alle EXE und DLL-Files werden von Windows als MMF (Memory Mapped Files) geladen. Dh. es wird immer nur der gerade benötigte Teil der Datei von der Festplatte in den Arbeitsspeicher gemappt...

_________________
gringo pussy cats - eef i see you i will pull your tail out by eets roots!
F34r0fTh3D4rk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Do 28.10.04 15:52 
müssen die ganzen bilder denn in die exe rein ?
ich mein, DAS wird ne exe :)
roka6803 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 50


Delphi 5 Ent. & Delphi 7
BeitragVerfasst: Do 28.10.04 16:53 
das proggy ist als Diablo 2 Skill Calculator gedacht (und zwar für alle Charakterklassen!!!).
die bilder stellen die "Skills" eines Charakters dar sodass man diese aus dem Spiel heraus wiedererkennen kann.
und da pro Charakterklasse an die 30 solcher Skillbilder anfallen summiert sich das ganze schon ein bisschen hoch.

aber meine letzte Frage war vielleicht ein bisschen zu kompliziert gestellt. wie kann ich die in einer Form eingegebenen Daten aus edits, usw. sichern wenn ich die form "close"???

MfG Robin

ps die bilder werden jetzt bereits dynamisch geladen und liegen nicht mehr in der exe!!!

_________________
Signatur? Was ist das? Brauch ich nicht...
F34r0fTh3D4rk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Fr 29.10.04 15:00 
ey das prog brauch ich auch !!!

Also Leute, ranhalten witr müssen ihm helfen !!! :)