Italian community of Lazarus and Free Pascal

Programmazione => Generale => Topic aperto da: phil2000 - Marzo 13, 2018, 12:14:46 am

Titolo: Spostare un file senza modificare data creazione
Inserito da: phil2000 - Marzo 13, 2018, 12:14:46 am
L' unico modo che 'mi pare' esista per spostare un file in Pascal da una directory all' altra (stessa partizione) è:

Codice: [Seleziona]
If RenameFile(PathCompleta1,PathCompleta2) then...

Il codice funziona benissimo... peccato che nel frattempo si modifica la data di creazione, che diventa quella attuale, mentre io per una serie di controlli ho bisogno che resti quella che era.

In VB.NET, per dire, la funzione 'MOVE' sposta i files senza effettuare alcuna modifica agli attributi dei files, ma se non erro non vedo funzioni analoghe in Pascal.

Qualche idea?
Titolo: Re:Spostare un file senza modificare data creazione
Inserito da: bonmario - Marzo 13, 2018, 08:02:01 am
Se parliamo di Windows, guardando i sorgenti, mi sembra di capire che RenameFile alla fine va a richiamare una funzione del sistema operativo, quindi mi sembra strano quel comportamento.
Codice: [Seleziona]
function MoveFileW(lpExistingFileName:LPCWSTR; lpNewFileName:LPCWSTR):WINBOOL; external 'kernel32' name 'MoveFileW';
Può essere che partenza e destinazione sono su 2 dischi formattati in maniera differente?

P.S. Su Linux anni fa' mi sono scritto questo appunto:
RenameFileUTF8 fa anche la move, ma non funziona in linux se sorgente e destinazione sono su partizioni diverse.

Ciao, Mario
Titolo: Re:Spostare un file senza modificare data creazione
Inserito da: xinyiman - Marzo 22, 2018, 04:21:03 pm
Ciao, onestamente c'è poco da consigliare. Se il comando si comporta così non saprei cosa indicarti sul comando stesso. Però se vuoi puoi sempre lanciare un comando esterno per fare quel lavoro: guarda questa pagina

http://wiki.freepascal.org/Executing_External_Programs

e poi lanci il comando di move del sistema operativo. Così dovrebbe fare quello che vuoi tu. O almeno penso
Titolo: Re:Spostare un file senza modificare data creazione
Inserito da: bonmario - Marzo 22, 2018, 04:41:00 pm
Ci sarebbe anche un'altra possibilità:
- ti salvi la data prima di spostare il file
- lo sposti
- forzi la data con quella che avevi salvato prima dello spostamento

Ciao, Mario