Autor Beitrag
Danny87
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 688

Windows 10 Pro 64bit
Sprachen: HTML, PHP, JavaScript, Delphi || IDE: RAD Studio 10.1 Berlin Starter, WeBuilder
BeitragVerfasst: Do 21.09.06 13:02 
Hey Leute,

da ich nicht will, dass mein Spiel von jedem X-Beliebigen gemoddet werden kann, möchte ich die Bilder
gerne in einer DLL oder so speichern, damit man sie nicht mehr mit einem Grafikprogram öffnen kann.
Ausserdem möchte ich in so einer Datei ganze Image-Sets ablegen.
Gibt es da möglichkeiten?
Ich habe leider absolut keine Ahnung, wie ich das machen soll... :-/
Waäre cool, wenn ihr mir ein paar Tips geben könntet wonach ich suchen kann und/oder womit ich mich
beschäftigen muss um das zu realisieren (wenn das überhaupt geht).


Gruss
Daniel
Nemesis II
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 49



BeitragVerfasst: Do 21.09.06 13:59 
bei kleinen Sachen mache ich das über die Resource-Funktion, da bleiben die Dateien in der Anwendung erhalten, ohne dll

öffne Texteditor > Eingabe:
ResName1 ResTYPE1 ResFileName1
ResName2 ResTYPE2 ResFileName2
...
ResNameX ResTYPEX ResFileNameX

ResName1 = Name der Datei zum identifizieren bei Delphi
ResTYPE1 = Der Typ der Recource Datei: WAVE, AVI, RCDATA (geeignet für Bilder oder andere Dateien), CURSOR
ResFileName1 = komplette Pfad der zu einbindenden Datei

speichere den Text als (*.RC) Datei

öffne Resource Compiler BRC32.exe (C:\Programme\Borland\BDS\3.0\Bin) bzw. schiebe die (*.RC) Datei darüber

es wurde eine (*.RES) Datei erstellt

kopiere (*.RES) Datei zum Project Ordner in Eigene Dateien

(*.RES) Datei in Delphi verlinken:
ausblenden Delphi-Quelltext
1:
2:
3:
implementation
{$R *.dfm}
{$R Namer der Datei.RES}


RESOURCE-DATEI aufrufen für Video:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure TForm1.Button1Click(Sender: TObject);
begin
with Animate1 do begin
ResName := 'ResName1';
ResHandle := hInstance;
Active := TRUE;
end;
end;


RESOURCE-DATEI aufrufen für WAVE:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
uses mmsystem;
...
procedure TForm1.Button1Click(Sender: TObject);
var
hFind, hRes: THandle;
Song: PChar;
begin
hFind:=FindResource(HInstance, 'ResName2''WAVE');
if hFind<>0 then begin
hRes:=LoadResource(HInstance, hFind);
if hRes<>0 then begin
Song:=LockResource(hRes);
if Assigned(Song) then
SndPlaySound(Song, snd_ASync or snd_Memory);
UnlockResource(hRes);
end;
FreeResource(hFind);
end;
end;



RESOURCE-DATEI aufrufen für MP3:
ausblenden Delphi-Quelltext
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:
procedure TForm1.Button1Click(Sender: TObject);
var
rStream: TResourceStream;
fStream: TFileStream;
fname: string;
begin
{this part extracts the mp3 from exe}
fname:=ExtractFileDir(Paramstr(0))+'Intro.mp3';
rStream := TResourceStream.Create
(hInstance, 'Intro', RT_RCDATA);
try
fStream := TFileStream.Create(fname, fmCreate);
try
fStream.CopyFrom(rStream, 0);
finally
fStream.Free;
end;
finally
rStream.Free;
end;
{this part plays the mp3}
MediaPlayer1.Close;
MediaPlayer1.FileName:=fname;
MediaPlayer1.Open;
end;



RESOURCE-DATEI aufrufen für CURSOR:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
const crMyCursor = 1;
begin
Screen.Cursors[crMyCursor] := LoadCursor(hInstance,PChar ('ResName vom Cursor'));
Form1.Cursor := crMyCursor;
end;
Danny87 Threadstarter
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 688

Windows 10 Pro 64bit
Sprachen: HTML, PHP, JavaScript, Delphi || IDE: RAD Studio 10.1 Berlin Starter, WeBuilder
BeitragVerfasst: Do 21.09.06 14:46 
nee, soll ja dynamisch austauschbar sein.
hab mir das auch schon mit res überlegt, aber die werden ja beim compilieren in den code includet und sind somit nicht dynamisch austauschbar.

//EDIT: oder irre ich mich da?
wulfskin
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1349
Erhaltene Danke: 1

Win XP
D5 Pers (SSL), D2005 Pro, C, C#
BeitragVerfasst: Do 21.09.06 20:28 
user profile iconDanny87 hat folgendes geschrieben:
nee, soll ja dynamisch austauschbar sein.
Ja, das wird so einfach dann nicht gehen.
Ich würde sie mit einem einfachen Algorithmus verschlüsseln und das Problem wäre gelöst...

_________________
Manche antworten um ihren Beitragszähler zu erhöhen, andere um zu Helfen.
Danny87 Threadstarter
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 688

Windows 10 Pro 64bit
Sprachen: HTML, PHP, JavaScript, Delphi || IDE: RAD Studio 10.1 Berlin Starter, WeBuilder
BeitragVerfasst: Do 21.09.06 22:02 
dann hätte ich aber jedes bild einzeln, aber ich brauch ja ganze imagesets.
jakobwenzel
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1889
Erhaltene Danke: 1

XP home, ubuntu
BDS 2006 Prof
BeitragVerfasst: Fr 22.09.06 07:08 
Würds denn nich gehen, die ganzen Bilder, ... als Resource in ne DLL einzubinden und dann von da zu laden?

_________________
I thought what I'd do was, I'd pretend I was one of those deaf-mutes.
Danny87 Threadstarter
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 688

Windows 10 Pro 64bit
Sprachen: HTML, PHP, JavaScript, Delphi || IDE: RAD Studio 10.1 Berlin Starter, WeBuilder
BeitragVerfasst: Fr 22.09.06 12:27 
hmm....das muss ich mal ausprobieren.
meld mich dann nochmal :-)
Danny87 Threadstarter
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 688

Windows 10 Pro 64bit
Sprachen: HTML, PHP, JavaScript, Delphi || IDE: RAD Studio 10.1 Berlin Starter, WeBuilder
BeitragVerfasst: Fr 22.09.06 12:53 
Entweder mach ich was falsch oder .... nee, ich mach was falsch...

So stehts in der DLL:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
{$R Untitled1.res}

procedure test(var image : TImage; HInstance : cardinal); stdcall;
begin
image.Picture.Bitmap.LoadFromResourceName(HInstance,'Bitmap1');
end;


aber wenn ich aus dem Programm die Prozedur "test" aufrufe bringt er mir ne Fehlermeldung, dass die
Ressource Bitmap1 nicht gefunden werden konnte.

Ich hab mal 2 Screenshots angehängt. Einer von der res-Datei (im Imageeditor geöffnet) und der andere von der Fehlermeldung.
Einloggen, um Attachments anzusehen!
Danny87 Threadstarter
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 688

Windows 10 Pro 64bit
Sprachen: HTML, PHP, JavaScript, Delphi || IDE: RAD Studio 10.1 Berlin Starter, WeBuilder
BeitragVerfasst: Mo 25.09.06 14:26 
Kann mir wirklich keiner sagen, was ich falsch mache und/oder wies richtig geht? :cry: :wink: