Autor |
Beitrag |
Johnson
      
Beiträge: 30
|
Verfasst: Di 23.05.06 22:32
hi,
ich habe schon tage verbracht um herrauszufinden, wie man dateien in eine ressoucendatei bekommt.
habe schon gute erklährungen gefunden, wie man diese erstelt, doch nicht wie man dateien da rein bekommt.
ich will da bilder rein tun und später dann noch lieder, doch wie geht das?
|
|
DelphiAnfänger
      
Beiträge: 112
Win XP, Firefox 2.0, IE6
Delphi 5 Prof., Delphi 2005 PE
|
Verfasst: Di 23.05.06 22:38
für Bilder:
- du erstellst eine RC datei die folgendermaßen aussieht:
Quelltext 1: 2: 3:
| BILD1 RCDATA "Bild1.jpg" BILD2 RCDATA "Bild2.jpg" ... |
- kopier die Datei "brcc32.exe" aus deinem Delphi/Bin verzeichnis in das verzeichnis in dem deine rc datei und die bilder sind
- führe im cmd folgenden Befehl aus (in dem Verzeichnis in dem die bilder und die rc datei liegt): BRCC32 BILDER.RC
- jetzt müsstest du eine BILDER.res Datei haben
- jetzt schreibst du in deinem Projekt(Unit1)
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| var Form1: TForm1;
implementation
{$R *.DFM} {$R BILDER.RES} |
- die Bilder kannst du folgendermaßen aufrufen:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| procedure TForm1.Bild1laden; var Bild: TJPEGImage; resstream: TResourceStream; begin Bild := TJPEGImage.Create; resstream := tresourceStream.Create(hInstance, 'BILD1', RT_RCDATA); Bild.LoadFromStream(resstream); Bildbezeichner.Picture.Assign(bild); bild.free; resstream.free; end; |
- in deinem Projekt wenn das Bild angezeigt werden soll einfach die procedur Bild1laden aufrufen
hier nochmal ein Beispiel für eine unit die beim klicken auf Button1 Bild1 anzeigt und beim klick auf Button2 Bild2 :
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, JPEG;
type TForm1 = class(TForm) Bild1: TImage; Bild2: TImage; Button1: TButton; Button2: TButton; procedure Button1Click(Sender: TObject); procedure Bild1laden; procedure Bild2laden; procedure Button2Click(Sender: TObject); private public end;
var Form1: TForm1;
implementation
{$R *.DFM} {$R BILDER.RES}
procedure TForm1.Button1Click(Sender: TObject); begin Bild2.Picture:=nil; Bild1laden; end;
procedure TForm1.Button2Click(Sender: TObject); begin Bild1.picture:=nil; Bild2laden; end;
procedure TForm1.Bild1laden; var Bild: TJPEGImage; resstream: TResourceStream; begin Bild := TJPEGImage.Create; resstream := tresourceStream.Create(hInstance, 'BILD1', RT_RCDATA); Bild.LoadFromStream(resstream); Bild1.Picture.Assign(bild); bild.free; resstream.free; end;
procedure TForm1.Bild2laden; var Bild: TJPEGImage; resstream: TResourceStream; begin Bild := TJPEGImage.Create; resstream := tresourceStream.Create(hInstance, 'BILD2', RT_RCDATA); Bild.LoadFromStream(resstream); Bild2.Picture.Assign(bild); bild.free; resstream.free; end;
end. |
angahängt noch ein beispiel für bilder. Sounds weiß ich nicht wie man es macht
EDIT:falsches highlight entfernt
Einloggen, um Attachments anzusehen!
|
|
fidionael
      
Beiträge: 232
Win XP SP2, Ubuntu 6.06
Delphi 7 PE, Delphi 3 Prof
|
Verfasst: Di 23.05.06 23:16
Zumindest mit WAV-Sounds sieht es genauso aus, mit anderen Formaten habe ich in Delphi bisher nicht gearbeitet.
Resource-Datei mit Wave-Files 1:
| START_SOUND WAVE hallo.wav |
Bei der Benutzung von Sounds ist es wichtig, dass die MMSystem unter Uses eingetragen ist, sonst funktioniert es nicht. Außerdem könnte es sich als sinnvoll herausstellen, vor Abspielen des Sounds zu überprüfen, ob überhaupt eine Soundkarte existiert, da das Programm sonst jedes Mal, wenn ein Sound abgespielt werden soll eine entsprechende Fehlermeldung ausgibt, was doch vor allem im Spieleentwicklungsbereich sehr nervig werden kann.
Benutzung von Sounds in Resource 1: 2: 3: 4: 5: 6: 7:
| uses MMSystem;
if WaveOutGetNumDevs>0 then PlaySound(pchar('START_SOUND'),hInstance, SND_ASYNC or SND_NODEFAULT or SND_RESOURCE); |
Zu deiner Frage, wie man Dateien in eine Resource-Datei reinkriegt, allgemein: Die habe ich doch schon detailliert und Schritt für Schritt in diesem Thread beantwortet (inkl. Beispielanwendung)...
Naja, ich hoffe nun ist es angekommen 
|
|
Johnson 
      
Beiträge: 30
|
Verfasst: Mi 24.05.06 11:02
hallo,
also das ist mir soweit klar (wie man das in delphi aufruft.), doch was ich noch nicht richtig verstehe ist folgende zeile:
Delphi-Quelltext 1: 2: 3:
| BILD1 RCDATA "Bild1.jpg" BILD2 RCDATA "Bild2.jpg" .... |
also ich kopiere mir meine (probeweise) zwei bilder in einen ordner, dann erstelle ich ein textdokument mit namen test.rc .
dann kopiere ich die brcc32.exe aus den verzeichnis in meins.
starte cmd und gebe BRCC32 Test.RC ein.
dann erstellt der mir ne res datei, doch das is doch irgendwie falsch oder?
denn egal wieviele bilder ich drin habe, die res datei is immer gleich groß.
und außerdem weiß der pc doch gar nich dass er alle dateien da mit rein machen soll.
könnt ihr mir das bitte nochmal erklähren?
(wenn ihr die ruhe dazu habt ) 
|
|
_frank_
      
Beiträge: 343
Erhaltene Danke: 1
Win XP
Delphi 3 Prof / Turbo Delphi Explorer
|
Verfasst: Mi 24.05.06 11:36
Zum Erstellen kann ich dir mein Programm RFE ( rfe.sf.net ) empfehlen.
Zum Einbinden findest du auf www.fw-web.de/units.htm an 7. Position die resload.zip, dort findest du Beispiele, wie du verschiedene Resourcentypen einbindest.
Gruß Frank
|
|
DelphiAnfänger
      
Beiträge: 112
Win XP, Firefox 2.0, IE6
Delphi 5 Prof., Delphi 2005 PE
|
Verfasst: Mi 24.05.06 15:26
in der test.rc musst du statt "Bild1.jpg" den namen des bildes schreiben. Wenn dein bild schon im jpg format ist ansonsten musst du es umwandeln du kannst das zwar auch mit bitmaps machen aber die sind viel größer deswegen nehm ich immer JPG's
|
|
fidionael
      
Beiträge: 232
Win XP SP2, Ubuntu 6.06
Delphi 7 PE, Delphi 3 Prof
|
Verfasst: Mi 24.05.06 23:43
Hallo,
okay ich versuche es nochmal ganz langsam zu erklären mit der Erstellung einer Resource-Datei:
Zunächst erstellst du eine Datei mit der Endung .rc. Diese Datei wird nachher von brcc32 zu einer .res-Datei kompiliert.
In der rc-Datei spezifizierst du die Dateien, die du deinem Programm einbinden möchtest. Dafür musst du deiner Datei einen eindeutigen Resourcennamen geben, entweder in Form einer ID (also einer Zahl), oder einem Namen. Darauf folgt die Information, um welchen Typus Datei es sich handelt und schließlich der Datei-Name. Die entsprechende Datei muss natürlich unter angegebenen Pfad auch vorhanden sein.
Beispiel-Resource-Datei: beispiel.rc 1: 2: 3: 4: 5:
| 101 BITMAP bild1.bmp 102 BITMAP bild2.bmp
201 WAVE sound1.wav 202 WAVE sound2.wav |
Nachdem du diese Datei erstellt und gespeichert hast, kommt das Programm brcc32 ins Spiel, welches deine Datei ausliest und zu einer .res-Datei kompiliert, welche deine Dateien beinhaltet.
Diese .res-Datei kannst du dann zu deinem Programm auf folgende Weise hinzubinden:
Beispielanwendung 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;
type TForm1 = class(TForm) end;
var Form1: TForm1;
implementation
{$R *.DFM} {$R beispiel.res}
end. |
Schau dir eventuell auch mal die Beispielanwendung an, die ich im oben genannten Thread für dich geschrieben habe; da ist auch alles gut zu sehen. Falls es dann immer noch nicht klappt, sollten wir uns vielleicht mal einen Chat aussuchen, oder von mir aus auch ein Telefonat führen, denn es wird doch mühsam immer das gleiche zu schreiben und dann kann man vermutlich besser analysieren, wo denn genau das Problem liegt  Sollte hierauf Bedarf bestehen, schreibe mir einfach eine PM...
|
|
|