Autor Beitrag
Swordooo
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 119

W2K, Windows XP Professional
Delphi 2005 Personal, Delphi 7 Personal
BeitragVerfasst: Mi 20.08.08 12:16 
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)

ausblenden 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:
ausblenden 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.):
ausblenden 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 user profile iconNarses: Topic aus Dateizugriff verschoben am Mi 20.08.2008 um 14:14
Swordooo Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 119

W2K, Windows XP Professional
Delphi 2005 Personal, Delphi 7 Personal
BeitragVerfasst: 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 user profile iconNarses: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
EE-Regisseur
Beiträge: 5248
Erhaltene Danke: 2

WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
BeitragVerfasst: Do 21.08.08 10:13 
RC_DATA ist ein Typ für alle anderen Dinge, außer CURSOR, ICON, WAVE, BITMAP, etc.

_________________
"Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
elundril
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3747
Erhaltene Danke: 123

Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
BeitragVerfasst: Do 21.08.08 10:16 
user profile iconGTA-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

_________________
This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
Swordooo Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 119

W2K, Windows XP Professional
Delphi 2005 Personal, Delphi 7 Personal
BeitragVerfasst: 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?
matze
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 4613
Erhaltene Danke: 24

XP home, prof
Delphi 2009 Prof,
BeitragVerfasst: Mo 25.08.08 21:02 

_________________
In the beginning was the word.
And the word was content-type: text/plain.
Max312
Hält's aus hier
Beiträge: 5



BeitragVerfasst: 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:
ausblenden 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 user profile iconNarses: Delphi-Tags hinzugefügt
Xion
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
Beiträge: 1952
Erhaltene Danke: 128

Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
BeitragVerfasst: So 14.02.10 16:16 
Ich hab zwar keine Ahnung davon (ich verwende Ordner statt res Dateien :D) aber da steht doch

ausblenden Delphi-Quelltext
1:
BitBtn1.Glyph.LoadFromResourceName(hinstance, 'bild1');					

Jetzt brauchst du nur
ausblenden 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
ausblenden Quelltext
1:
bild1 BITMAP "C:\Delphi Projekte\SDI SSYC\Data\Skin\button_beenden.bmp"					

_________________
a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
Max312
Hält's aus hier
Beiträge: 5



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10123
Erhaltene Danke: 1227

W2k .. W7pro .. W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: So 14.02.10 23:27 
Moin!

user profile iconMax312 hat folgendes geschrieben Zum zitierten Posting springen:
"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

_________________
There are 10 types of people - those who understand binary and those who don´t.