générateur de noms de fichier unique [Delphi] - Delphi/Pascal - Programmation
Marsh Posté le 29-05-2002 à 23:06:55
Beh tu le fais toi même.... 
tu essayes 'monfichier.000' 
tu fais un FileExist('monfichier.000' s'il existe tu incrémentes l'extention ('monfichier.001'
 s'il existe tu incrémentes l'extention ('monfichier.001' et tu recommences ....
 et tu recommences .... 
 
  
 
Marsh Posté le 29-05-2002 à 23:07:06
GetTempFileName  
 
Ok c'est une API pour dans le répertoire temporaire mais t'as pas été très précis non plus   
 
Marsh Posté le 29-05-2002 à 23:07:58
9s d'écart ehe   
 
Marsh Posté le 29-05-2002 à 23:08:34
| [SDF]Poire a écrit a écrit  : Beh tu le fais toi même.... tu essayes 'monfichier.000' tu fais un FileExist('monfichier.000'  s'il existe tu incrémentes l'extention ('monfichier.001'  et tu recommences .... | 
 
 
Ouai et si tu as 15.000 fichiers déjà présent, tu pleures   
  
 
Fous la date/heure/secondes dans le nom du fichier à la limite, t'as peu de chance de te faire avoir 
Marsh Posté le 29-05-2002 à 23:08:52
| [SDF]Poire a écrit a écrit  : 9s d'écart ehe   | 
 
 
Le temps de retrouver le nom de la fonction   
 
Marsh Posté le 29-05-2002 à 23:09:39
UINT GetTempFileName( 
 
    LPCTSTR lpPathName,	// address of directory name for temporary file  
    LPCTSTR lpPrefixString,	// address of filename prefix  
    UINT uUnique,	// number used to create temporary filename  
    LPTSTR lpTempFileName  // address of buffer that receives the new filename  
   );  
  
 
on peut spécifier le répertoire, non ? 
Marsh Posté le 29-05-2002 à 23:10:36
Je connaissais la fonction en C mais G T pas sur de l'API et flemme de chercher.....   (En + ça aurait été trop long
 (En + ça aurait été trop long   )
 ) 
 
Le truc D chiffres C juste une id y a d'aut moyens.... 
  
 
Marsh Posté le 29-05-2002 à 23:22:19
| antp a écrit a écrit  : UINT GetTempFileName( LPCTSTR lpPathName, // address of directory name for temporary file LPCTSTR lpPrefixString, // address of filename prefix UINT uUnique, // number used to create temporary filename LPTSTR lpTempFileName // address of buffer that receives the new filename ); on peut spécifier le répertoire, non ? | 
 
 
Ah ouai tiens    
  
 
Bon benh alors, le problème est réglé    
 
Marsh Posté le 30-05-2002 à 13:48:25
Oki, merci...... 
Mais l'aide API de windows semble erronée...... 
l'argument driveletter  semble être en fait le préfixe !!!?? 
 
Qq'un a t'il un exemple ? 
Marsh Posté le 30-05-2002 à 14:00:29
qu'est-ce que tu appelles driveletter  
 
Marsh Posté le 30-05-2002 à 15:48:17
| antp a écrit a écrit  : qu'est-ce que tu appelles driveletter   | 
 
 
Doit pas avoir la même aide que nous   
  
 
Au fait: 
 
When Windows shuts down, temporary files whose names have been created by this function are not automatically deleted.  
 
 
  
 
Marsh Posté le 30-05-2002 à 21:07:55
'fectivement je regardais la syntaxe de la version 2.x des API... 
 
J'ai mis à jour ma doc qui correspond à la syntaxe fournie par antp... 
 
Mais ça marche pô !!!!!, j'ai pourtant l'impression de bien tout mettre les pointeurs qui vont bien: 
 
J'ai ça (dans result et buf1)'G:\delphi5\Delphi\Projects\Èóh' 
 
en codant ça: 
    Pdir,Ppref:PChar; 
    dir,pref:string; 
    Buf1: array [0..50] of Char; 
    result:string; 
begin 
        Buf1[0] := #$00; 
        dir:='C:\'; 
        pref:='D7_2CD'; 
        Pdir:=Addr(dir); 
        Ppref:=Addr(pref); 
        gettempfilename(Pdir,Ppref,2,Buf1); 
        SetString(Result, Buf1, StrLen(Buf1)); 
end; 
 
Ah bah pourquoi ? 
Marsh Posté le 30-05-2002 à 22:28:18
| QI130 a écrit a écrit  : J'ai mis à jour ma doc qui correspond à la syntaxe fournie par antp... | 
 
 
Euh, tu veux une étoile que tu fous son pseudo en gras?   
 
[jfdsdjhfuetppo]--Message édité par Zion le 30-05-2002 à 22:28:30--[/jfdsdjhfuetppo]
Marsh Posté le 30-05-2002 à 22:29:11
Y a zion qui est jaloux ![[:youpi] [:youpi]](https://forum-images.hardware.fr/images/perso/youpi.gif) 
 
Marsh Posté le 30-05-2002 à 22:44:12
| antp a écrit a écrit  : Y a zion qui est jaloux ![[:youpi] [:youpi]](https://forum-images.hardware.fr/images/perso/youpi.gif)  | 
 
lol 
pour un copié collé de la doc ?  
   
   
 
Marsh Posté le 31-05-2002 à 10:21:39
Nan nan, pas d'étoile, on n'est pas dans le Michelin !!!!! 
 
Juste me dire ce qui déconne dans mon coding... 
Marsh Posté le 31-05-2002 à 10:59:02
utilise cette fontion 
 
function TempFilename(const SDir,SPref: String): String; 
var 
  Buffer: array[0..MAX_PATH] of Char; 
begin 
  StrPCopy(buffer,SDir); 
  GetTempFileName(Buffer,pchar(Sref),0,Buffer); 
  SetString(Result, Buffer, StrLen(Buffer)); 
end; 
 
comme il est bien indiqué dans l'aide, seul les 3 premiers caractères de ta chaine prefixe seront utilisés, dans ton cas 'D7_' 
Marsh Posté le 31-05-2002 à 16:07:47
Nickel ! 
 
Thanx 
Marsh Posté le 29-05-2002 à 23:02:48
tout est dans le sujet....
Je sais que ça existe dans d'autres langages (ObjectRexx) mais sous Delphi ?
---------------
Il n'y a pas de bonne réponse à une mauvaise question.