Oppure

Loading
22/02/10 15:55
Ocentral
Vorrei sapere come usare windres per creare file risorse.
aaa
23/02/10 15:56
Phi
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.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.
aaa
24/02/10 16:07
Ocentral
grazie
aaa
25/02/10 17:39
Phi
Prego

P.S. Guarda che non mi infastidisci.
aaa
15/04/10 18:52
Helias
Ma windres non è per Windows? non esiste un altro programma che fa lo stesso per linux?
aaa