Inkluder filer

Tags:    delphi

Jeg har et program som består af 2 filer. En exe fil og en lyd .s3m fil. Hvordan kan jeg inkludere .s3m filen i min exe fil, så den ikke ligger ved siden af. (s3m filen er noget musik som bruges som baggrundsmusik i programmet)
Og vil også gerne vide hvordan jeg gør dette også med andre filtyper.



3 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 2 karma
Sorter efter stemmer Sorter efter dato
Du kan gemme filen i en .res fil. Du skal bare extracte den før den kan bruges.









-------------------------------------------------------
Jonas (Decko)
-------------------------------------------------------



Jeg har et program som består af 2 filer. En exe fil og en lyd .s3m fil. Hvordan kan jeg inkludere .s3m filen i min exe fil, så den ikke ligger ved siden af. (s3m filen er noget musik som bruges som baggrundsmusik i programmet)
Og vil også gerne vide hvordan jeg gør dette også med andre filtyper.


Først skal filen ind i exe-filen. Lav en simpel tekst fil (notepad e.l.) der kun består af én linje:

ETNAVN RCDATA "minfil.s3m"

ETNAVN er ressourcens navn (som du giver det), og RCDATA er ressourcetypen. I anførselstegnene står selvfølgelig navnet på filen der skal inkluderes.

Gem filen med typen .RC. Altså f.eks. som "minfil.RC"

Det du har lavet er et ressource script. Det skal kompileres med Borland's Resource Compiler, BRCC32.EXE. Åbn et dos-vindue og giv kommandoen
BRCC32 minfil.RC

(Det er nemmest hvis det hele ligger i samme mappe).

Resultatet af ovenstående skulle gerne være en ressource-fil (*.RES), i dette tilfælde minfil.RES.

Så skal du ind i det program du er ved at lave. I programkoden lige efter {$R *.DFM} tilføjer du

{$R minfil.RES}

Når programmet nu kompileres vil ressourcefilen blive inkluderet i exe-filen. (Flyt på forhånd minfil.RES til projektmappen så Delphi kan finde den).

Nu er der bare tilbage at finde ud af hvordan programmet kan bruge den inkluderede fil.

Der er mange muligheder men pointen med RCDATA er at man kan hente ressourcen som en stream.
Altså f.eks.

implementation

{$R *.dfm}
{$R minfil.RES} // Din ressourcefil

procedure TForm1.Button1Click(Sender: TObject);
var
ressource: TResourceStream;
Begin
ressource := TResourceStream.Create( hinstance, 'ETNAVN', RT_RCDATA );
try
ressource.Position := 0;
// gør det du nu vil med streamen
// f.eks. kan du gemme den som en fil:
ressource.savetofile('C:\\dervarjeg.s3m');
// eller hvad du nu har brug for

finally
ressource.free;
end;
end;






okay.. men hvordan gør jeg så det?



t