AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Die Delphi-IDE Delphi .RES Resourcen - grundsaetzliche Funktionsweise
Thema durchsuchen
Ansicht
Themen-Optionen

Delphi .RES Resourcen - grundsaetzliche Funktionsweise

Ein Thema von hzzm · begonnen am 19. Jun 2019 · letzter Beitrag vom 27. Jun 2019
Antwort Antwort
hzzm

Registriert seit: 8. Apr 2016
103 Beiträge
 
Delphi 10 Seattle Professional
 
#1

Delphi .RES Resourcen - grundsaetzliche Funktionsweise

  Alt 19. Jun 2019, 13:09
Wie kann ich mir die Funktionsweise der Delphi Resourcen grundsaetzlich vorstellen, wenn ich eine Bild-Datei daraus lade:
Delphi-Quellcode:
var
  LPng: TPngImage;
begin
  LPng := TPngImage.Create;
  LPng.LoadFromResourceName(HInstance, AImageName);
end;
Wird hier die Datei von der Festplatte aus Speicherbereichen der .exe geladen, oder werden die Resourcen beim Laden mit {$R *.res} bereits in den Arbeitsspeicher geladen?

http://docs.embarcadero.com/products...efile_xml.html
oder
http://docwiki.embarcadero.com/RADSt...ces_and_Images
erklaeren leider nicht die grundsaetzliche Funkntionsweise
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

AW: Delphi .RES Resourcen - grundsaetzliche Funktionsweise

  Alt 19. Jun 2019, 13:22
Eingebundene .res Dateien werden in die .exe einkompiliert und da die exe komplett in den Speicher geladen wird, werden die Resource in der .exe auch aus dem Speicher geladen.
{$R *.res} macht zur Laufzeit übrigens gar nichts, bzw. es existiert gar nicht mehr. Das ist nur ein Hinweis für den Compiler diese Datei schon beim Kompilieren in die .exe mit einzubinden.
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Redeemer

Registriert seit: 19. Jan 2009
Ort: Kirchlinteln (LK Verden)
1.021 Beiträge
 
Delphi 2009 Professional
 
#3

AW: Delphi .RES Resourcen - grundsaetzliche Funktionsweise

  Alt 19. Jun 2019, 21:09
Die EXE wird immer komplett in den Speicher geladen?
Janni
2005 PE, 2009 PA, XE2 PA
  Mit Zitat antworten Zitat
peterbelow

Registriert seit: 12. Jan 2019
Ort: Hessen
678 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Delphi .RES Resourcen - grundsaetzliche Funktionsweise

  Alt 20. Jun 2019, 12:07
Die EXE wird immer komplett in den Speicher geladen?
Nein, nicht wirklich. Windows verwendet hier seine virtuelle Speicherverwaltung: Die Datei wird (wie ein memory mapped file) mit einem Speicherbereich im Addressraum des Prozesses verknüpft. Der ist in Seiten fester Größe aufgeteilt, und wenn auf eine Addresse zugegriffen wird wird die Seite (wenn noch nicht geschehen) aus der Datei in den physischen Arbeitsspeicher geladen. Es werden also aus einer Programmdatei (oder DLL) nur die Teile geladen, die auch verwendet werden.
Peter Below
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

AW: Delphi .RES Resourcen - grundsaetzliche Funktionsweise

  Alt 20. Jun 2019, 14:23
http://michael-puff.de/Programmierun...nagement.shtml
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
hzzm

Registriert seit: 8. Apr 2016
103 Beiträge
 
Delphi 10 Seattle Professional
 
#6

AW: Delphi .RES Resourcen - grundsaetzliche Funktionsweise

  Alt 27. Jun 2019, 14:37
Vielen Dank an alle fuer die nuetzlichen Informationen!

Da die Antworten aber so detailiert sind, stellt sich mir weiterhin die Frage:

Wenn ich alle Bild-Resourcen (.png's) beim Programmstart aus den Resourcen in eine Feldvariable TImageList o.ae. lade, laden diese dann beim Anfragen der Bilddaten beim ersten mal schneller als mit LoadFromResourceName?

Die EXE wird immer komplett in den Speicher geladen?
Nein, nicht wirklich. Windows verwendet hier seine virtuelle Speicherverwaltung: Die Datei wird (wie ein memory mapped file) mit einem Speicherbereich im Addressraum des Prozesses verknüpft. Der ist in Seiten fester Größe aufgeteilt, und wenn auf eine Addresse zugegriffen wird wird die Seite (wenn noch nicht geschehen) aus der Datei in den physischen Arbeitsspeicher geladen. Es werden also aus einer Programmdatei (oder DLL) nur die Teile geladen, die auch verwendet werden.
Also werden die .RES-Inhalte vor Erst-Verwendung direkt in den RAM geladen, weil aufgrund der ASM-Zugriffe klar wird, dass sie spaeter eh gelesen werden, oder landen sie erst in der Pagefile und beim Erstzugriff dann im RAM?
  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 22:56 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz