Newsgroup: it.comp.lang.delphi
Titolo: Rebus

Come mai con WindowsXP non riesco a creare una sottodirectory (Ancona)
partendo dalla directory in cui risiede il file eseguibile (crea solo le
directory esterne,tipo BariEsterno),mentre sotto Windows98 tutto funziona
perfettamente?
 {$I-}
    mypath:= ExtractFilePath(Application.ExeName);
    Chdir(IncludeTrailingPathDelimiter(MyPath));
               MkDir('c: \Ancona\');
                 MkDir('c:\BariEsterno\');
  if IOResult <> 0 then
    MessageDlg('Non posso creare la directory', mtWarning, [mbOk], 0);
Grazie mille per l'aiuto,nei giorni scorsi le ho provate tutte seguendo i
vostri suggerimenti ma niente da fare,da come ho capito con il codice di cui
sopra WindowXP non riesce a entrare nella directory corrente..
Pero' all'avvio del programma mi legge correttamente dove risiede il file
eseguibile,altrimenti non partirebbe!!
Paolo

 funziona perfettamente?
Io credo che il codice che hai scritto sia errato, prima di tutto perché la
ChDir è una funzione abbastanza inutile in Win, secondariamente perché prima
ottieni la dir della tua applicazione e poi non te ne fai un beneamato fico
secco.
Allora, mettiamo che la tua app sia in C:\Programmi\Pippo, e tu voglia
creare una sottodirectory Ancona.
Il codice semplicemente sarà:
    sMyPath := ExtractFilePath(Application.ExeName);
// sMyPath a questo punto conterrà 'C:\Programmi\Pippo\'
    MkDir(sMyPath + 'Ancona');
il quale, appunto, crea la directory C:\Programmi\Pippo\Ancona.
Penso che così non dovresti più avere problemi.
--
Jax

Ti ringrazio per la risposta,ora funziona tutto.
Un'altra richiesta:
Come devo dichiarare in un DataModule la riga di codice:
ExtractFilePath(Application.ExeName);
se il codice e' all'interno di una form non mi richiede nulla,
ho provato con
var
Application: variant;
ma non funziona
Grazie per la risposta
Paolo

 Application: variant;
Siccome è martedì e non lunedì sarò buono, ma non più di tanto :)
Paternale: non è bello usare oggetti senza sapere cosa sono: l'help recita a
questo proposito "The global variable Application, of type TApplication, is
in every VCL- or CLX-based application.".
Questo non significa che sia una cosa astratta, al limite del divino, ma
comunque è un oggetto di un certo tipo (TApplication), e come tale deve
essere definito da qualche parte, in qualche unit (e se vedi nell'help di
TApplication noterai che è definita nella unit Forms).
Se quella determinata unit non è inclusa nella clausola uses, ovviamente il
codice in quella unit non vedrà Application.
Nel tuo caso specifico, un DataModule ha, per default, solo due unit usate:
SysUtils e Classes. Essendo la variabile Application in Forms, da un
DataModule non riesci a usarla se prima non metti "Forms" nell'elenco delle
uses.
Scusa se sono stato un po' cervellotico e complicato, avrei potuto anche
dirti solo "includi Forms nella clausola uses del DataModule", ma alla
prossima difficoltà di questo tipo saresti stato punto e a capo.
--
Jax
====
Chi sa ascoltare non soltanto è simpatico a tutti, ma dopo un po'
finisce con l'imparare qualcosa. (Wilson Mizner)

prossima difficoltà di questo tipo saresti stato punto e a capo.
Papa' Jax.... ;-D
-- 
Morde. 
(
mo...@despammed.com
)

 Papa' Jax.... ;-D
Presto lo sarò veramente... papà di un pappagallino!!! (uhm, forse è meglio
nonno)
Speriamo bene ^____^
--
Jax
====
La vita non è niente senza l'amicizia. (Cicerone)