Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Pascal - Come usare windres
Forum - Pascal - Come usare windres

Avatar
Ocentral (Normal User)
Pro


Messaggi: 86
Iscritto: 25/12/2009

Segnala al moderatore
Postato alle 16:55
Lunedì, 22/02/2010
Vorrei sapere come usare  windres per creare file risorse.

PM Quote
Avatar
Phi (Member)
Expert


Messaggi: 241
Iscritto: 30/12/2009

Segnala al moderatore
Postato alle 16:56
Martedì, 23/02/2010
Ecco come usarlo in Free Pascal
Le risorse sono file che si aggiungono all'eseguibile.
Per creare celle risorse servono si crea un file *.rc e su in esso si scrive l'elenco dei file in questo modo:
NOMERISORSE TIPORISORSE “<percorso file>”
NOMERISORSE TIPORISORSE “<percorso file>”
  ….
ad esempio potrò creare un file “esempio.rc”, scrivendoci:

FILE1 TESTO “testo.txt”

per aggiungere il file testo.txt col nome FILE1 e col tipo TESTO.
Poi sposterò i file nella directory del compilatore;
aprirò il Prompt dei Comandi;
cambierò la directory di lavoro (usando il comando “cd”) andando alla directory del compilatore, nel mio computer io scrivo  la riga di comando “ cd C:\FPC\2.2.0\bin\i386-win32 ”;
eseguo windres.exe con questa riga di comando:
  “windres  <nome file *.rc> <nome file *.rc ma con estensione .res>”,
nell'esempio scriverò “windres esempio.rc esempio.res”
Sposto il file *.res(nel nostro caso esempio.res) nella cartella dove ho il programma.
Aggiungerò al testo pascal del programma questa direttiva :
  {$R <nome file *.res>} nel nostro caso  {$R esempio.res}
Questa direttiva è in genere posta all'inizio del programma o dopo l'implementazione di una unit.

Per accedere al file posso usare questo codice:
RA ed RB sono LONGINT
P è POINTER, solitamente PCHAR
RA:=FindResource(HInstance, '<NOMERISORSA>', '<TIPO RISORSA>');
if RA<>0 then begin
RB:=LoadResource(HInstance, RA);
if RB<>0 then begin
  P := LockResource(RB);
  if Assigned(P) then begin
         ….
      lavori con P
         ….
   end;
  UnlockResource(RB);
end;
FreeResource(RA);
end;

Per esempio noi scriveremo  
FindResource(HInstance, 'FILE1', 'TESTO');

Free Pascal tratta in modo diverso questi tipo di risorse:
ICON, STRINGTABLES, BITMAPS, VERSION INFORMATION
Per le icone, come avrai notato nei miei programmi aggiungono l'icona all'eseguibile.
Version Information premettono di indicare la versione che potrà poi essere visualizzata cliccando su proprietà. Il testo che segue è un esempio:

1 VERSIONINFO
FILEVERSION 4, 0, 3, 17
PRODUCTVERSION 3, 0, 0, 0
FILEFLAGSMASK 0
FILEOS 0x40000
FILETYPE 1
{
BLOCK "StringFileInfo"
{
BLOCK "040904E4"
{
VALUE "CompanyName", "Free Pascal"
VALUE "FileDescription", "Free Pascal version information extractor"
VALUE "FileVersion", "1.0"
VALUE "InternalName", "Showver"
VALUE "LegalCopyright", "GNU Public License"
VALUE "OriginalFilename", "showver.pp"
VALUE "ProductName", "Free Pascal"
VALUE "ProductVersion", "1.0"
}
}
}

Imposta la verisione 4.3.0.17, la descrizione Free Pascal version information extractor , ecc.
Non so come usare gli altri tipi.

PM Quote
Avatar
Ocentral (Normal User)
Pro


Messaggi: 86
Iscritto: 25/12/2009

Segnala al moderatore
Postato alle 17:07
Mercoledì, 24/02/2010
grazie

PM Quote
Avatar
Phi (Member)
Expert


Messaggi: 241
Iscritto: 30/12/2009

Segnala al moderatore
Postato alle 18:39
Giovedì, 25/02/2010
Prego

P.S. Guarda che non mi infastidisci.

PM Quote
Avatar
Helias (Normal User)
Newbie


Messaggi: 1
Iscritto: 15/04/2010

Segnala al moderatore
Postato alle 20:52
Giovedì, 15/04/2010
Ma windres non è per Windows? non esiste un altro programma che fa lo stesso per linux?

PM Quote