Newsgroup: it.comp.lang.delphi
Titolo: Percorso eseguibile

Buongiorno a tutti!
Sto lavorando su un programma in Delphi3 che gestisce un magazzino.
Devo creare una funzione che alla fine dell'anno mi consente di fare
una 'storicizzazione' dei movimenti registrati durante l'anno.
In pratica dovrei creare una cartella che ha per nome l'anno appena
concluso e contenente una copia degli archivi, in questo modo poi posso
svuotare le tabelle e lavorarci nel nuovo anno.
Nel fare questo però mi sono bloccato in un punto:
La cartella con lo storico deve trovarsi nello stesso percorso in cui
si trova l'eseguibile.
Dato che questo percorso potrebbe non essere sempre lo stesso, dovrei
fare in modo che l'eseguibile controlli qual è  questo percorso e poi
lo utilizzi per fare la copia.
Ma.......come? 
Grazie!
Stefano M.

hai dato un occhio alle property di TApplication?
AS

Sull'OnCreate inserisci:
Percorso := ExtractFilePath(ExpandFileName(ParamStr(0)));
ParamStr(0) 		ritorna la path e il nome dell'eseguibile
ExpandFileName 		espande la path (se la chiamata e' relativa)
ExtractFilePath		ritorna la directory
Bye,
David

Perfetto!
Grazie mille David! ;-)
Stefano M.

Ciao
Perchè no "ExtractPathFile( application.Exename ) ?
Io lo uso e non ho mai avuto problemi ... (non vorrei per c...o o altro).
Andrea

Va benissimo pure quello. Era solo una sicurezza. Nom mi ricordavo se il 
Delphi 3 andava bene.

Ho un problemino con questa procedura.
E' il codice che ho scritto nell'evento che corrisponde al click del
bottone:
procedure TWnArchiviostorico.SbElaboraClick(Sender: TObject);
var
  PSorgente, PDestinazione: string;
  Rec: TSearchRec;
begin
  PSorgente := ExtractFilePath(Application.ExeName) + '\Arc';
  PDestinazione := ExtractFilePath(Application.ExeName) + '\Storico';
  FindFirst(PSorgente, faAnyFile, Rec);
  CopyFile(PChar(PSorgente), PChar(PDestinazione), True);
  if FindNext(Rec) = 0 then CopyFile(PChar(PSorgente),
PChar(PDestinazione), False)
    else
      FindClose(Rec)
end;
Quello che voglio è creare una semplice cartella in PDestinazione
contenenet la copia dei file che si trovano in PSorgente.
Però non ottengo praticamente niente!
Secondo me c'è qualcosa che non quadra...................avrò
sbagliato qualcosa??

Innanzi tutto occhio all'uscita di ExtractFilePath, nel senso che su 
WinXP e Win98 l'ultimo carattere č '\' mentre su Win2000 viene omesso.
Detto questo FindFirst vuole il nome del file (o parte di esso) da 
ricercare; quindi il codice:
FindFirst(PSorgente, faAnyFile, Rec);
dovrebbe diventare
FindFirst(PSorgente+'\*.*', faAnyFile, Rec);
Poi, FindFirst e FindNext riportano anche le directory quindi occhio 
alla copia delle stesse e, dulcis in fundo, la procedura
CopyFile(PChar(PSorgente), PChar(PDestinazione), True); copia l'intera 
cartella o solo un file? in quanto se solo un file psorgente puta ad una 
cartella completa.
Perchč non usi le API di Windows ? Ed in particolare ShFileOperation. E' 
piů comodo.

Non le ho mai usate.
Dove posso trovare una buona guida?

Help di WinAPI in Delphi,
Google.... i primi 3:
http://members.tripod.com/~delphipower/SHFileOperation.htm
http://delphi.about.com/cs/adptips2001/a/bltip0201_3.htm
http://www.swissdelphicenter.ch/torry/showcode.php?id=152

Sei stato davvero gentilissimo!
Grazie!
Stefano M.