You are currently browsing the archives for the Files e Directory category.

Annunci

Linkedin


Archive for the ‘Files e Directory’ Category

giovedì, novembre 5, 2009 @ 10:11 AM admin

Estrarre un file a runtime dalla propria applicazione può essere molto utile, alcuni esempi possono essere: dopo un’istallazione estrarre dall’eseguibile file di configurazione preformattati, estrarre sempre dopo l’installazione dll o eseguibili che dovrebbero essere caricati di default in un sistema, estrarre immagini che poi vengono caricate ad esempio su un servizio web (per evitare che il cliente le cambi).

1) Creare un file .rc (es. risorse.rc)

2) Compilare il file con la lista dei file da includere di seguito un esempio con un file eseguibile (identificativo tipo nomefile.estensione):

FILE1 EXEFILE c:\test.exe

3) Salvare il file .rc ed includerlo nel progetto della nostra applicazione.

4) Compilando il progetto l’eseguibile risulterà più pesante in quanto includerà anche i file aggiuntivi specificati nel .rc

5) Estrarre i file per poterli utilizzare tramite questa funzione:

function EstraiRisorse(tipo,nome, destinazione: string): Boolean;

var

Risorsa: TResourceStream;

begin

Result := False;

Risorsa := TResourceStream.Create(Hinstance, nome, PChar(tipo));

try

risorsa.SavetoFile(destinazione);

Result := True;

finally

risorsa.Free;

end;

end;

Sempre seguendo l’esempio possiamo richiamare la funzione in questo modo:

if EstraiRisorse(’EXEFILE’,'FILE1′,’c:\dir\test.exe’) then

showmessage(’File estratto correttamente’);

Consiglio di comprimere i file prima dell’inclusione per evitare di appesantire troppo l’eseguibile.

Compatibile con:
  • Windows XP: SI
  • Windows VISTA: SI
  • Windows 7: DA TESTARE
martedì, novembre 3, 2009 @ 06:11 PM admin

Per verificare se una directory è vuota possiamo usare la seguente funzione che restituisce 1 se la directory è vuota e 0 se non lo è:

function Directory_Vuota(Dir: string): Boolean;

var

SR: TSearchRec;

count: Integer;

begin

Result := False;

FindFirst(IncludeTrailingPathDelimiter(Dir) + ‘*’, faAnyFile, SR);

for count := 1 to 2 do

if (SR.Name = ‘.’) or (SR.Name = ‘..’) then

Result := FindNext(SR) <> 0;

FindClose(SR);

end;


Potete scaricare i sorgenti e l’eseguibile di esempio da qui: Directory_Vuota

Compatibile con:
  • Windows XP: SI
  • Windows VISTA: SI