Italian community of Lazarus and Free Pascal

Programmazione => Generale => Topic aperto da: guest621 - Giugno 06, 2012, 12:27:37 am

Titolo: Estrarre risorsa .lrs
Inserito da: guest621 - Giugno 06, 2012, 12:27:37 am
Ciao a tutti, ho creato un file risorsa di lazarus (.lrs), l'ho inizializzato nel programma, ho compilato e il file risorsa viene perfettamente integrato nel .exe, però vorrei creare un programma che appena lo avvio estragga il file di risorsa (.mp3) su un percorso nel PC, ho cercato su internet, ma ci sono discussioni solo su file .res. Grazie mille.
Titolo: Re:Estrarre risorsa .lrs
Inserito da: Stilgar - Giugno 06, 2012, 12:31:36 am
E che problema c'è?
I file ".res" sono una "collezione" di risorse.
Come estrai un BMP e poi lo usi, puoi estrarre anche un XML o altro tipo di file.
Titolo: Re:Estrarre risorsa .lrs
Inserito da: guest621 - Giugno 06, 2012, 12:38:37 am
E che problema c'è?
I file ".res" sono una "collezione" di risorse.
Come estrai un BMP e poi lo usi, puoi estrarre anche un XML o altro tipo di file.

Ma io ho un file .lrs non un file .res
Titolo: Re:Estrarre risorsa .lrs
Inserito da: Stilgar - Giugno 06, 2012, 12:43:36 am
I file res e lrs vengono linkati all'interno dell'eseguibile.
Come "lavori" un res (file per windows) lavori un lrs.
Un LoadCursor, se ne frega se hai linkato un file .o, .bin o altro.
Interessa solo trovare un cursore da restituirti ;)
Titolo: Re:Estrarre risorsa .lrs
Inserito da: xinyiman - Giugno 06, 2012, 08:07:23 am
Ciao Stoker quando hai capito come fare ti andrebbe di buttare giù due righe e un esempio sull'argomento? Così lo pubblichiamo!  ;)
Titolo: Re:Estrarre risorsa .lrs
Inserito da: guest621 - Giugno 06, 2012, 08:58:16 am
Ciao Stoker quando hai capito come fare ti andrebbe di buttare giù due righe e un esempio sull'argomento? Così lo pubblichiamo!  ;)

Si, ho capito, questo è il codice:

Codice: [Seleziona]
uses
    LResources

var
   Stream: TLazarusResourceStream;

begin
  Stream := nil;
  try
    //carica la risorsa di lazarus
    Stream := TLazarusResourceStream.Create('nomefile', nil);
    //salva il file nel percorso desiderato
    Stream.SaveToFile('distinazione');
   finally
     Stream.Free;
   end;

Dopo il codice per utilizzare la risorsa mettete la risorsa .lrs ovviamente:

Codice: [Seleziona]
initialization
{$I miarisorsa.lrs}

Per creare la risorsa, andate nella cartella lazarus\tools e cliccate su lazres.lpi, quando il progetto è stato aperto, compilate e nella cartella di lazarus ci sarà un file lazres.exe, adesso create una cartella e metteteci dentro lazres.exe, create un file .bat con scritto:

Codice: [Seleziona]
lazres nomerisorsa.lrs nomefile

salvate e mettete il file .bat nella cartella di lazres.exe insieme al file che volete come risorsa, quindi avviate il file .bat e avrete la risorsa bella e pronta, non vi resta che mettere la risorsa (.lrs) nella cartella del progetto e seguire quello detto all'inizio.