question stupide [Delphi] - Programmation
Marsh Posté le 20-03-2002 à 20:59:50
Normalemment elle fonctionne... Tu l'utilises comment ? Elle te renvoie quoi ?
Marsh Posté le 20-03-2002 à 21:02:36
C bô les réponses rapides
J'ai peut-être fait une erreur de syntaxe ...
Tu peux me la donner stp
Marsh Posté le 20-03-2002 à 21:12:35
Aratorn a écrit a écrit : C bô les réponses rapides J'ai peut-être fait une erreur de syntaxe ... Tu peux me la donner stp |
F1 ?
Marsh Posté le 20-03-2002 à 21:13:52
The CopyFile function copies an existing file to a new file.
BOOL CopyFile(
LPCTSTR lpExistingFileName, // pointer to name of an existing file
LPCTSTR lpNewFileName, // pointer to filename to copy to
BOOL bFailIfExists // flag for operation if file exists
);
Parameters
lpExistingFileName
Points to a null-terminated string that specifies the name of an existing file.
lpNewFileName
Points to a null-terminated string that specifies the name of the new file.
bFailIfExists
Specifies how this operation is to proceed if a file of the same name as that specified by lpNewFileName already exists. If this parameter is TRUE and the new file already exists, the function fails. If this parameter is FALSE and the new file already exists, the function overwrites the existing file and succeeds.
Return Values
If the function succeeds, the return value is nonzero.
If the function fails, the return value is zero. To get extended error information, call GetLastError.
Remarks
Security attributes for the existing file are not copied to the new file.
File attributes (FILE_ATTRIBUTE_*) for the existing file are copied to the new file. For example, if an existing file has the FILE_ATTRIBUTE_READONLY file attribute, a copy created through a call to CopyFile will also have the FILE_ATTRIBUTE_READONLY file attribute. For further information on file attributes, see CreateFile.
See Also
CreateFile, MoveFile
Marsh Posté le 20-03-2002 à 21:23:55
Merci Poire
Bon, ben ça marche si je fais :
CopyFile(
'c:\toto\a.txt', 'c:\plustoto\a.txt', True
);
mais si je fais :
CopyFile(
StringGrid.Cells[2,1]+StrinGrid.Cells[1,1], 'c:\plustoto\a.txt', True
);
Avec dans la cellule 1,1 un nom et dans la 2,1 un chemin, il me répond "Types incompatible String et PChar"
[jfdsdjhfuetppo]--Message édité par Aratorn--[/jfdsdjhfuetppo]
Marsh Posté le 20-03-2002 à 21:34:29
CopyFile(
PChar(StringGrid.Cells[2,1]+StrinGrid.Cells[1,1]), 'c:\plustoto\a.txt', True
);
fais un cast !
Marsh Posté le 20-03-2002 à 23:24:52
Bon bhen j'étais pas là pour la suite de la réponse... j'étais absorbé dans ce que je faisais (du Delphi justement), puis après HFR était en panne
Marsh Posté le 21-03-2002 à 03:50:20
[SDF]Poire a écrit a écrit : F1 ? |
Trop dur! T'es fou toi!
Marsh Posté le 21-03-2002 à 07:55:27
JWhy a écrit a écrit : CopyFile( PChar(StringGrid.Cells[2,1]+StrinGrid.Cells[1,1]), 'c:\plustoto\a.txt', True ); |
Fait aussi un PChar sur ce paramètre parce-que si ta chaine contient un espace, tu cours droit dans le mur...
(en effet, le convertiseur fera 'C:\Mes Documents \toto.txt'->'C:\Mes'
Marsh Posté le 21-03-2002 à 10:03:00
Ciler a écrit a écrit : Fait aussi un PChar sur ce paramètre parce-que si ta chaine contient un espace, tu cours droit dans le mur... (en effet, le convertiseur fera 'C:\Mes Documents \toto.txt'->'C:\Mes' |
Le PChar est nécessaire pour quand on a des + car il s'agit de plus chaînes concaténées, mais ça n'a rien à voir avec le contenu des chaînes
Marsh Posté le 21-03-2002 à 13:08:55
antp a écrit a écrit : Le PChar est nécessaire pour quand on a des + car il s'agit de plus chaînes concaténées, mais ça n'a rien à voir avec le contenu des chaînes |
Puis-je te suggérer d'essayer de déplacer un fichier d'un disque vers un autre avec par exemple le BUFilesUtils...
Tu obtiendra un splendide échec dû à ce que je mentionne plus haut, car comme l'a dit Poire, la fonction CopyFile prend des chaines à zéro terminal en paramètre (des PChar quoi). Et si tu lui met un string, c'est le compilo quifait la conversion, et il la fait très mal puisqu'il flingue les noms longs...
Marsh Posté le 21-03-2002 à 13:58:13
Espace <> Zéro de fin de chaîne
À la limite que tu dois obligé de rajouter des " " autout du nom dans la chaîne je comprendrais...
Marsh Posté le 21-03-2002 à 15:03:27
antp a écrit a écrit : Espace <> Zéro de fin de chaîne À la limite que tu dois obligé de rajouter des " " autout du nom dans la chaîne je comprendrais... |
Je te l'accorde, espace<>null... Sauf que si tu essaye le truc que je tesuggère, tu verra que les noms avec espace provoquent une exception (ou alors mon système est buggé). Moi non plus je ne comprend pas pourquoi, mais l'expérience est impossible à nier !
Marsh Posté le 21-03-2002 à 15:15:34
antp a écrit a écrit : Espace <> Zéro de fin de chaîne À la limite que tu dois obligé de rajouter des " " autout du nom dans la chaîne je comprendrais... |
Oui, ca a rien a voir l'espace et la fin de chaîne, faut se calmer les gars... Tu as totalement raison antoine, il FAUT foutre le path entre "" quand c'est un nom long.
Sinon t'as qu'a le transformer en nom 8.3 avant, mais bon, si tu le fais correctement y a pas de problème.
Pour info, cette fonction est la même depuis Windows 3.11, ils ont juste rajouté le support des noms longs moyennant le "
Marsh Posté le 21-03-2002 à 15:18:06
Tiens c'est toujours après que quelqu'un ait quoté un de mes posts que je vois les fautes:
"...à la limite que tu dois obligé..."
Marsh Posté le 20-03-2002 à 20:58:30
mais je la pose quand même :
Comment on fait pour copier un fichier simplement.
Il y a bien la fonction CopyFile, mais il semble qu'elle ne marche pas.
Un peu d'aide svp