AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Resource löschen

Ein Thema von Amateurprofi · begonnen am 10. Jun 2021 · letzter Beitrag vom 12. Jun 2021
Antwort Antwort
Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.077 Beiträge
 
Delphi XE2 Professional
 
#1

Resource löschen

  Alt 10. Jun 2021, 09:47
Ich binde in meine Programme gelegentlich .res Dateien ein, die Daten enthalten, die man normalerweise aus einer Datei einliest.
Beim Start des Programms, genauer im FormCreate der MainForm werden diese Daten dann aus der Resource gelesen und in entsprechenden Datenarrays gespeichert.
Danach wird die Resource nicht nehr benötigt und könnte aus dem Speicher entfernt werden.
Ich habe gesucht und "DeleteResource" gefunden, aber das scheint etwas anderes zu sein.
Frage: Kann man zur Laufzeit eine Resource löschen? (mit dem Ziel den Speicherbedarf des Programms zu senken)
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat
Benutzerbild von dummzeuch
dummzeuch

Registriert seit: 11. Aug 2012
Ort: Essen
1.623 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

AW: Resource löschen

  Alt 10. Jun 2021, 11:19
Frage: Kann man zur Laufzeit eine Resource löschen? (mit dem Ziel den Speicherbedarf des Programms zu senken)
Ich mag mich täuschen, aber soweit ich weiss, werden Ressourcen nur auf Anforderung in den Speicher geladen. D.h. der Speicherverbrauch ändert sich durch ihr reines Vorhanden sein nicht.
Thomas Mueller
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#3

AW: Resource löschen

  Alt 10. Jun 2021, 15:56
Nein, im Programm-Speicher (virtueller Speicher) sind die immer geladen vorhanden,
aber Windows hat die Möglichkeiten bei solchen Sektionen Ungenutztes (wo länger nicht drauf zugegriffen wurde) zu entladen, aus dem physischen RAM.
Das geht dann auch nicht in die Auslagerungsdatei, da Windows das beim nächsten Zugriff einfach aus der Datei (DLL/EXE/BPL) laden/wiederherstellen kann.


Bei der Verwendung könnte man sich auch das Array sparen und direkt einen Zeiger auf die Ressouce nutzen.



Für dich wäre eventuell eine Ressourcen-DLL das passende, wenn es "viele" Daten sind.
Über LoadLibraryEx+LOAD_LIBRARY_AS_DATAFILE kann man soeine DLL laden (wobei nicht der InitCode der DLL ausgeführt wird) und nach Benutzung dann einfach wieder FreeLibrary.
$2B or not $2B

Geändert von himitsu (10. Jun 2021 um 16:02 Uhr)
  Mit Zitat antworten Zitat
Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.077 Beiträge
 
Delphi XE2 Professional
 
#4

AW: Resource löschen

  Alt 11. Jun 2021, 16:09
aber Windows hat die Möglichkeiten bei solchen Sektionen Ungenutztes (wo länger nicht drauf zugegriffen wurde) zu entladen, aus dem physischen RAM.
Weißt du auch wie?

Ich habe nach so etwas wie "FreeResource(ResName:String)" oder "RemoveResource(ResName:String)" gesucht.
Kurz gesagt, ich habe die Winapi.Windows nach "Resource" (und nicht als ganzes Word) durchsucht.
gefunden habe ich "FreeResource" aber auch den Hinweis
Zitat:
[This function is obsolete and is only supported for backward compatibility with 16-bit Windows. For 32-bit Windows applications, it is not necessary to free the resources loaded using LoadResource. If used on 32 or 64-bit Windows systems, this function will return FALSE.]
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#5

AW: Resource löschen

  Alt 12. Jun 2021, 12:20
Das macht Windows von alleine, wenn es mehr Platz im Speicher braucht, für Anderes.
$2B or not $2B
  Mit Zitat antworten Zitat
Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.077 Beiträge
 
Delphi XE2 Professional
 
#6

AW: Resource löschen

  Alt 12. Jun 2021, 12:49
Das macht Windows von alleine, wenn es mehr Platz im Speicher braucht, für Anderes.
Oh, das ist ja mal was Positives
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  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 02:18 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