![]() |
Bilder als Ressource laden
Hi,
wie kann ich meine GIF-Images im Programm laden, sodass ich keinen Extraordner dafür brauche und sie direkt geladen werden? |
Ich muss dazu sagen, dass meine ImageList keine .gif-Dateien unterstützt! ;)
Muss also irgendwie anders gemacht werden... |
Re: Bilder als Ressource laden
TBitmap hat Funktionen, um es aus ener Ressource zu laden ;)
Laden:
Delphi-Quellcode:
.rc-Datei:
LoadFromResourceName (HInstance, 'Maske');
Code:
Maske RCDATA "icons/bild.XXX"
|
Re: Bilder als Ressource laden
Hallo,
um GIF anzuzeigen such mal nach der Unit GifImage. Florian |
Hi,
es soll ja im Programm sein, ohne, dass ich es im Ordner habe. Also praktisch nur die .exe-Datei und dort sind die Bilder drin gespeichert. |
Re: Bilder als Ressource laden
Hi,
wenn du es einem TImage zuweist, wird es automatisch in einer Resource gespeichert. Wenn du es manuell machen willst, dann kannst du es auch so in einem Ressource ablegen. Du hast dann zwar am Anfang erstmal die .rc- bzw. .res-Datei, aber die wird am Ende durch den Linker mit in die Exe gepackt. Aber wie gesagt benötigst du eine zusätzliche Unit für GIF-Bilder. Chris |
:gruebel: :gruebel: :gruebel:
:wiejetzt: |
Zitat:
Wenn du im OI deinem Image ein Bitmap zuweist, kümmert sich Delphi um die Speicherung, sonst musst du eben eine Ressourcendatei benutzen. Aber auf beiden Wegen hast du letztendlich nur eine Echse. |
Hi,
ich verstehe aber nicht wie das gehn soll. :roll: Ich nix schlau! :zwinker: ..mein Delphi unterstützt immernoch kein GIF, wie oft noch? :angel2: |
Hi,
Zitat:
Zitat:
|
Re: Bilder als Ressource laden
Und wie oft sollen wir dir sagen, dass du dich nach eine entsprechenden Komponente umgucken sollst? Zum Beispiel
![]() |
Wo soll'n diese Unit sein? In meiner Bibliothek finde ich nichts.
|
Re: Bilder als Ressource laden
Hi,
im Internet. Google wirst du hoffentlich kennen: ![]() Ansonsten kannst du auch dem Link von Luckie folgen, der dir sogar schon direkt das richtige Suchwort gibt. Wir haben dir jetzt genügend Hinweise gegeben, versuch also bitte mal mit ein wenig Eigeninitiative dir die Komponente/Unit zu suchen. Und wenn dir das zu stressig ist: du kannst auch andere Dateiformate verwenden (JPEG oder BMP), die (fast) direkt von Delphi unterstützt werden. Chris |
Meine Güte, ich habe TGIFImage doch!!!!
Aber es ist doch sinnlos 6 Komponenten draufzumachen. Ich will nicht, dass das Programm zu groß wird. Gibt's keine andere Möglichkeit, die Pics ins Proggie einzubinden? |
Re: Bilder als Ressource laden
Hi,
natürlich. Über Ressourcen. Dazu gibt es genügend Sources in der DP und oben gibt's sogar auch einen. Das Problem ist nur dein Format. Egal, was du damit machen willst: du weißt nicht, ob das wirklich funktioniert, da GIF einen eigenen Kompressionsalgorithmus verwendet. Also: über Ressourcen-Dateien einbinden. Fertig. Verwenden im Programm ist dann eine andere Sache (und eben dafür wirst du eine neue Komponenten brauchen). Chris |
Re: Bilder als Ressource laden
doch es gibt Möglichkeiten. Diese wurde bereits auch aufgezeigt.
Und zwar handelt es sich um Ressource-Dateien. Einfach eine neue Datei erstellen mit der Endung rc und dann "Project->Add To Project" und diese Datei auswählen. Die Ressourcendatei ist dann so aufgebaut
Code:
dein Gifimage sollte dann noch mindestens die Möglichkeit haben von einem Stream zu laden.
NameFuerDieRessource1 RessourcenTyp "Dateiname der Datei die in die Exe mit rein soll1"
NameFuerDieRessource2 RessourcenTyp "Dateiname der Datei die in die Exe mit rein soll2" Und an die Ressourcen kommst du dann mit TRessourceStream heran |
Also kann ich auch gleich einfach 6 Komponenten nehmen(?) Versteh ich das richtig?
|
Re: Bilder als Ressource laden
wenn du komponenten auf dein Formular setzt dann werden die zugewiesen Bilder in der DFM-Ressource gespeichert. Wenn du selbst eine Ressourcendatei anlegst wird die Ressource außerhalb davon angelegt und du kannst beliebig darauf zugreifen (wird also nicht direkt in deine Anzeigekomponente geladen).
Der vorteil von der manuellen Ressourceneinbindung ist das du nur eine Anzeigekomponente brauchst und später dann entscheiden kannst welche von den eingebunden Dateien gerade angezeigt werden soll |
Zitat:
mfg Christian P.S.: Ich kenn TGifImage nicht, aber IMHO sollte eigentlich eine Komponente reichen. |
Re: Bilder als Ressource laden
Von was für 6 Komponenten redest du eigentlich die ganze Zeit? Inxstallier dir eine Komponente, zum Beispiel TGifImage, mit der das TImage um die Fähigkeit Gif's anzuzeigen erweitert wird und dann stellst du das anzuzeigende Image entweder im OI ein oder lädst es über die Resource, wie es hier schon mehrfach beschrieben wurde.
|
Hi,
Zitat:
Entweder verstehe ich dich nicht ganz, oder du verstehst nicht, was ich versuche dir mitzuteilen. :gruebel: Chris |
Das versteh ich ja, aber meine Befehlshilfe funktioniert nicht, wenn ich Strg + Leertaste im Programm drücke (compilieren tut er's aber).
Deshalb komme ich atm nicht weiter.. |
Doch, doch, Ihr versteht das schon. Nur ich bin etwas dämlich glaub ich, ich verstehe wie Ihr es meint, aber weiß es nicht umzusetzen. ;)
Naja, ist ja auch schon spät.. :roll: |
Zitat:
mfg Christian |
Re: Bilder als Ressource laden
gibt es bei deinem TGifImage keine Methode "LoadFromStream"? Wenn doch sollte es doch kein Problem geben.
|
Weiß ich ja nicht, ich kann die Befehlshilfe (Strg + Leertaste) nicht aufrufen. ;)
Aber ich glaub ich bin einfach zu dämlich für die ganze Sache, am besten wir lassen das hier, sonst werdet Ihr nur noch mehr sauer, weil ich so schwer von Begriff bin! ;) |
Re: Bilder als Ressource laden
Tipp doch einfach mal LoadFromStream, halt die Maus darüber und schau ob der ToolTip kommt, oder kompiliere nach dem du die Methode geschrieben hast, dann erkennst du an der Fehlermeldung ob es die Methode gibt.
|
Normal kommt die Befehlshilfe schon, wenn ich einfach nur Strg + Leertaste klicke ... dann sollte er normal Sachen wie Self usw. anzeigen!
Er macht aber gar nichts, egal was ich tue. :roll: Und btw: Ich glaube, LoadFromFile lädt das Bild nur aus dem Drdner. Aber ich möchte, dass es im Programm drinne ist, damit ich die GIF's löschen kann! |
Re: Bilder als Ressource laden
deswegen sollst du auch schauen ob es LoadFromStream gibt
|
Ja, gibt es!
Es erfordert die Parameter (Stream: TStream)! Wie geht's weiter? |
Re: Bilder als Ressource laden
du musst jetzt deine Ressource einbinden (das beispiel mit dem RC was ich oben geschrieben hab).
Dann gehts so
Delphi-Quellcode:
var LStream: TResourceStream;
begin LStream := TResourceStream.Create(HInstance, 'NameOfYourRessource', 'YourResType'); LStream.Position := 0; YourGifImage.LoadFromStream(LStream); LStream.Free; end; |
Mein Bild, was ich einbinden will befindet sich von der Project1.exe aus gesehn im Ordner data\images\1.gif!
Wie geht das dann? |
Re: Bilder als Ressource laden
dann geht es so
Datei erstellen namens "irgendwas.rc" Inhalt dieser Datei
Code:
Dann in Delphi: "Project->Add To Project" und diese Datei auswählen
MyGifRes1 RC_Data "data\images\1.gif"
zum Laden des Gif-Images:
Delphi-Quellcode:
var LStream: TResourceStream;
begin LStream := TResourceStream.Create(HInstance, 'MyGifRes1', 'RC_DATA'); LStream.Position := 0; YourGifComponent.LoadFromStream(LStream); LStream.Free; |
Das funktioniert nicht wirklich.
Hab's so gemacht, aber er greift irgendwie nicht auf die Daten in der irgendwas.rc zu, warum auch immer?! :roll: |
:wall:
Hab's vergessen dem Projekt hinzuzufügen - nun funktioniert's! :) Danke.. Aber wie mache ich das, wenn ich jetzt mehrere Bilder haben will? Muss ich dafür jedes Mal eine .rc-Datei machen oder geht das auch irgendwie in einer? |
Re: Bilder als Ressource laden
einfach mehrere Zeilen ;)
Also z.B.
Code:
MyGifRes1 RC_Data "data\images\1.gif"
MyGifRes2 RC_Data "data\images\2.gif" MyGifRes3 RC_Data "data\images\3.gif" |
Und wie mach ich das dann, dass ich die Bilder löschen kann und sie trotzdem im Programm gespeichert sind?
Muss ich die nur einmal laden oder wie? Ich check das nicht ganz.. |
Hab's jetzt gemacht und er hat 'ne .res-Datei erstellt.
Nun funktioniert's auch ohne Bilder - vielen Dank für Eure Hilfe! :) :thumb: |
Re: Bilder als Ressource laden
du musst die Bilder ja nicht löschen, in der fertigen Exe-Datei werden die Bilder direkt aus der Exe genutzt. Behalte die Orignalbilder lieber falls sich daran mal was leicht ändert, nicht das dein Projekt dann nicht mehr kompilierbar ist nur weil du die Dateien weg gelöscht hast.
|
Hi,
wird sich nichts dran ändern, ist ein Galgenmännchen! :mrgreen: Außerdem war's ja meine Aufgabe die Bilder so einzubinden, damit ich sie nicht mehr speichern muss. ;) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:02 Uhr. |
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