Entwickler-Ecke
Delphi Tutorials - Tutorial zu Ressourcen
Swordooo - Mi 20.08.08 12:16
Titel: Tutorial zu Ressourcen
Da mich einiger meiner Freunde, die auch Programmieren, immer wieder Fragen, wie man Res-Dateien (Ressourcen) erstellt, habe ich mir mal die Mühe gemacht und ein kleines Tutorial dazu geschrieben.
Schritt 1)
Der Übersicht zuliebe erstellst du dir einen Ordner, in dem alle deine *.rc und *.res Dateien "gelagert" werden.
Schritt 2)
Wenn du den Ordner erstellt hast, klickst du auf "Extras" -> "Ordneroptionen..." -> "Ansicht". Nun suchst du nach dem Eintrag "Erweiterungen bei bekannten Dateitypen ausblenden". Wenn erforderlich, entfernst du davor den Haken. Nun werden alle Datei-Endungen angezeigt.
Schritt 3)
Du klickst in den erstellten Ordner auf eine freie Fläche und dann auf "Neu" und dann auf "Textdukoment". Benenne die Datei so: DEINNAME.rc (DEINNAME ist variabel).
Schritt 4)
In dir *.rc Datei schreibst du nun folgendes: (Bsp: Du willst ein Bild (*.bmp) in die Ressource laden)
Quelltext
1: 2:
| bild1 BITMAP "C:\Delphi Projekte\SDI SSYC\Data\Skin\button_beenden.bmp" bild2 BITMAP "C:\Delphi Projekte\SDI SSYC\Data\Skin\button_beenden_move.bmp" |
...usw.
Die Bedeutung ist folgende:
Name Dateityp "Pfad" (eigendlich ganz einfach)
Schritt 5)
Speicher es ab und klicke dann auf "Start" -> "Ausführen" unde gebe "cmd" (ohne "") ein. Drücke Enter!
Es erscheint die Eingabeaufforderung (CMD).
Schritt6)
Nun "wandelst du deine *.rc Datei in eine *.res Datei um, die du dann in dein Projekt einbinden kannst.
Dazu gebe folgendes ein:
brc32.exe "Pfad, in dem deine *.rc Datei liegt" (wenn es mit brc32.exe nicht funktioniert, dann nehme bitte brcc32.exe)
Drücke darauf Enter.
Nun solte in dem Verzeichnis, wo du deine *.rc liegt auch eine *res liegen.
Schritt 7)
Binde nun deine *.res in ein Projekt ein, in dem du folgendes in den Projekt schreibst:
Schreibe unter diese Zeile {$R *.dfm} diese Zeile {$R NameDerResDatei.res}. Also so:
Delphi-Quelltext
1: 2:
| {$R *.dfm} {$R NameDerResDatei.res} |
Nun ist deine Datei fertig in des Projekt eingebunden.
Schritt 8)
Um jetzt etwas aus deiner Ressource zu laden, mache die hier (Bsp.):
Delphi-Quelltext
1: 2:
| BitBtn1.Glyph.LoadFromResourceName(hinstance, 'bild1'); BitBtn2.Glyph.LoadFromResourceName(hinstance, 'bild2'); |
...usw...
So das war mein Tutorial und ich hoffe es gefällt und hilft euch weiter.
MfG Swordooo
Moderiert von Narses: Topic aus Dateizugriff verschoben am Mi 20.08.2008 um 14:14
Swordooo - Mi 20.08.08 12:21
Aber eine Frage habe ich selber noch:
Welche Dateitypen gibt es in Ressourcen alle.
Ich kenn nur BITMAP und WAVE. Könnte jemand mal alle aufschrieben, wär echt nett.
Und kann man eine *.Res in einem laufenden Programm irgendwie erstellen, wie z.B. mit *.txt-Dateien (SaveToFile(xxx);)??
MfG
---
Moderiert von Narses: Beiträge zusammengefasst---
Also ich meine auch das, was man in die RC schreibt, wie zB. bla BITMAP "xxx".
Hier ist BITMAP der DateiTyp. Welche gibt es alle?
MfG Swordooo
GTA-Place - Do 21.08.08 10:13
RC_DATA ist ein Typ für alle anderen Dinge, außer CURSOR, ICON, WAVE, BITMAP, etc.
elundril - Do 21.08.08 10:16
GTA-Place hat folgendes geschrieben: |
RC_DATA ist ein Typ für alle anderen Dinge, außer CURSOR, ICON, WAVE, BITMAP, etc. |
kann man auch sagen was dieses etc. genau ist? Gibts vielleicht nen link wo alle typen aufgelistet stehen?
lg elundril
Swordooo - Fr 22.08.08 19:14
Zitat: |
Gibts vielleicht nen link wo alle typen aufgelistet stehen? |
:D :lol:
Das war ja auch meine Frage xD!
Weiß das wer?
Max312 - So 14.02.10 16:00
Hallo,
Ich weiß der Thread is schon nen paar Tage alt, aber ich dachte das is der beste Ort das zu schreiben:
Nämlich versuche ich Bilder in meine .Exe einzubinden. Ich bin auch schon (dank des tollen tutorials) soweit gekommen, dass ich eine .res-Datei mit allen meinen Bildern erstellen kann und diese Bilder auch in meinem Programm aufrufen kann.
Allerdings würde ich gerne noch einen Schritt weiter gehen. Nämlich würde ich die Bilder gerne mit einer Variable aufrufen.
Zum Verständnis...
vorher habe ich das so gemacht:
Delphi-Quelltext
1:
| Karte1.Picture.loadfromfile(fileref); |
"Karte1" ist meine Bildobjekt, habe ein kartenspiel, bei dem sich das angezeigte Bild halt immer ändert
"fileref" ist die variable(string), die den Namen der Bilddatei beinhaltet und wird durch eine Funktion je nach Spielsituation entsprechend verändert.
Das klappte bisher auch wunderbar, nur dass ich immer 70 Bilddateien mit der .exe mitgeben muss, was nervig ist. Weswegen ich mich für eine Einbindung durch resourcen entschieden habe.
Versteht ihr, was ich vorhabe? Könnt ihr mir helfen?
mfg
Max
Moderiert von Narses: Delphi-Tags hinzugefügt
Xion - So 14.02.10 16:16
Ich hab zwar keine Ahnung davon (ich verwende Ordner statt res Dateien :D) aber da steht doch
Delphi-Quelltext
1:
| BitBtn1.Glyph.LoadFromResourceName(hinstance, 'bild1'); |
Jetzt brauchst du nur
Delphi-Quelltext
1:
| BitBtn1.Glyph.LoadFromResourceName(hinstance, fileref); |
schreiben, wobei natürlich jetzt fileref keinen Dateinamen mehr beinhaltet, sondern den Namen, der in du in der Res Datei angegeben hast
Quelltext
1:
| bild1 BITMAP "C:\Delphi Projekte\SDI SSYC\Data\Skin\button_beenden.bmp" |
Max312 - So 14.02.10 16:51
jo, so hatte ich es auch versucht.
Hatte allerdings nich geklappt.
Jetz habe ich es glaube ich gelöst:
Man muss dann diese Variable(fileref) als "Pansichar" definieren. Ebenso natürlich die Funktion, die fileref ändert.
Dann scheint geht es.
Narses - So 14.02.10 23:27
Moin!
Max312 hat folgendes geschrieben : |
"Karte1" ist meine Bildobjekt, habe ein kartenspiel, bei dem sich das angezeigte Bild halt immer ändert
[...]
Könnt ihr mir helfen? |
Der Ansatz mit einer Resource ist schon nicht schlecht, aber hier gibt es vermutlich auch die - wesentlich einfachere - Möglichkeit, eine TImageList zu verwenden (wenn die Bilder alle gleich groß sind, was bei einem Kartenspiel vermutlich der Fall ist). :idea:
cu
Narses
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!