Variable

Résolu
AEC1 Messages postés 98 Date d'inscription mercredi 31 octobre 2007 Statut Membre Dernière intervention 24 décembre 2012 - 12 août 2009 à 20:37
AEC1 Messages postés 98 Date d'inscription mercredi 31 octobre 2007 Statut Membre Dernière intervention 24 décembre 2012 - 15 août 2009 à 13:34
Bonjour,
Je rencontre un souci pour passer le contenu d'une variable 'la lettre d'un disque' saisie dans un TEdit et de la récupérée dans une chaine
afin de copier le fichier en question vers le bon lecteur. Voici ce que j'ai fait, mais aucune copie se réalise.

var
LEC : String;

procedure TForm1.Edit4Change(Sender: TObject);
begin // Entrer la lettre du lecteur choisi pour la sauvegarde
LEC := Edit4.Text;
end;

procedure TForm1.BitBtn2Click(Sender: TObject);
begin // Sauvegarde du Fichier tables de la base de données
CopyFile('c:\Trafic\Trafic.db','LEC'+':\Trafic.db',false);

C'est cette dernière ligne de commande qui est fausse, mais je n'arrive pas à la corrigée.

Merci pour votre aide, amitiées...
AEC1

9 réponses

Guillemouze Messages postés 991 Date d'inscription samedi 25 octobre 2003 Statut Membre Dernière intervention 29 août 2013 6
12 août 2009 à 21:04
enleve les apostrophe autour de LEC
3
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
13 août 2009 à 04:02
Bravo Guillemouze pour ta perspicacité je l'aurai probablement cherché longtemps

Cordialement, Bacterius !
3
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
13 août 2009 à 09:56
uses ShellApi;

function CopyFile(const SrcFile, DstFile: String): boolean;
var
SHFOP : ShellApi._SHFILEOPSTRUCT;
begin
SHFOP.Wnd := 0;
SHFOP.wFunc := ShellApi.FO_COPY;
SHFOP.pFrom := PChar(SrcFile);
SHFOP.pTo := PChar(DstFile);
SHFOP.fFlags := FOF_SILENT;
SHFOP.fAnyOperationsAborted := false;
SHFOP.hNameMappings := nil;
SHFOP.lpszProgressTitle := nil;
result :ShellApi.SHFileOperation(SHFOP) 0;
end;

ou

function CopyFile(const SrcFile, DstFile): boolean;
begin
result := windows.CopyFile(PChar(SrcFile), PChar(DstFile), false);
end;
3
AEC1 Messages postés 98 Date d'inscription mercredi 31 octobre 2007 Statut Membre Dernière intervention 24 décembre 2012
13 août 2009 à 05:51
Merci les amis pour votre réponse rapide, mais le problème persiste sur cette ligne que voici modifiée comme vous le dites:
CopyFile('c:\Trafic\Trafic.db',LEC+':\Trafic.db',false);
Maintenant, le curseur se positionne après la dernière virgule de la ligne et me signal une incompatibilité entre String et PChar.
Pourtant il me semblait que ce fut plus simple que cela.
Merci, dans le cas ou vous auriez une autre idée sur le sujet, ce qui m'arrange mieux que de définir dans cette ligne un lecteur attitré et donc de devoir copiée celle-ci autant de fois que je suppose de lecteurs de disques disponibles. Cela n'est pas très logique surtout ne connaissant pas à l'avance sur lequel je doit réaliser celle-ci.
Amitiés...
AEC1
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
AEC1 Messages postés 98 Date d'inscription mercredi 31 octobre 2007 Statut Membre Dernière intervention 24 décembre 2012
14 août 2009 à 05:43
Merci pour cette réponse qui me semble très précise, mais la difficulté que je rencontre c'est que je ne connait absolument rien à ce type de code si ce n'est un peut sur l'api Windows et PChar. Maintenant cela mérite quelques explications et comment je peut utilisé cela dans mon source, sachant que j'avais prévu une variable "LEC" venant de la saisie dans un Edtit, d'une lettre correspondant à un lecteur de disque afin que je puisse orienté ma sauvegarde.
CopyFile('c:\Trafic\Trafic.db',LEC+':\Trafic.db',false);
A l'origine je sauvegardé directement sur un lecteur défini,
CopyFile('c:\Trafic\Trafic.db','A:\Trafic.db',false);
mais bien sur il peut arrivé de devoir le faire sur un autre lecteur.
Je suis désolé mais mes connaissances sont limités quand à utilisé le code proposé. Merci encore si vous pouviez m'en dire un peut plus ou me proposé quelque chose de plus simple si cela est possible, j'en serais heureux.
Amitiés.
AEC1
0
Guillemouze Messages postés 991 Date d'inscription samedi 25 octobre 2003 Statut Membre Dernière intervention 29 août 2013 6
14 août 2009 à 09:09
c'est vrai que la reponse de foxi est un peu compliquée. Il te suffit juste de faire :
CopyFile(PChar('c:\Trafic\Trafic.db'), PChar(LEC+':\Trafic.db'),false); 
0
AEC1 Messages postés 98 Date d'inscription mercredi 31 octobre 2007 Statut Membre Dernière intervention 24 décembre 2012
14 août 2009 à 16:33
Merci cher ami,
je ne suis peut-être pas un pro, mais là c'est une chose dont par ailleurs la syntaxe m'a toujours posée quelques problèmes.
Merci encore pour le coup de main et je vais essayé cela tout de suite. Merci .
AEC1
0
AEC1 Messages postés 98 Date d'inscription mercredi 31 octobre 2007 Statut Membre Dernière intervention 24 décembre 2012
14 août 2009 à 21:13
Voilà, j'ai fait la modif. et cela fonctionne bien jusqu'à avoir 10 fichiers sur 13 qui sont sauvegardés. Dont voici le code:
LEC:=Edit4.Text;
CopyFile(PChar('c:\Trafic\Trafic.db'),PChar(LEC+':\Trafic.db'),false);
CopyFile(PChar('c:\Trafic\Trafic.px'),PChar(LEC+':\Trafic.px'),false);
CopyFile(PChar('c:\Trafic\Trafic.tv'),PChar(LEC+':\Trafic.tv'),false);
CopyFile(PChar('c:\Trafic\Trafic.fam'),PChar(LEC+':\Trafic.fam'),false);
CopyFile(PChar('c:\Trafic\Stations.db'), PChar(LEC+':\Stations.db'),false);
CopyFile(PChar('c:\Trafic\Stations2.db'), PChar(LEC+':\Stations2.db'),false);
CopyFile(PChar('c:\Trafic\Stations2.px'), PChar(LEC+':\Stations2.px'),false);
CopyFile(PChar('c:\Trafic\Relais.db'), PChar(LEC+':\Relais.db'),false);
CopyFile(PChar('c:\Trafic\Relais.mb'), PChar(LEC+':\Relais.mb'),false);
CopyFile(PChar('c:\Trafic\Relais.px'), PChar(LEC+':\Relais.px'),false);
CopyFile(PChar('c:\Trafic\Pays.db'), PChar(LEC+':\Pays.db'),false);
CopyFile(PChar('c:\Trafic\Pays.mb'), PChar(LEC+':\Pays.mb'),false);
CopyFile(PChar('c:\Trafic\Pays.px'), PChar(LEC+':\Pays.px'),false);
Donc je ne saisi pas pourquoi il me manque trois fichiers ? Est-ce qu'au moment de la sauvegarde il ne peut pas en faire plus?
Cela est bien bizard. Ou est-qu'il y à plus simple pour sauvegarder un groupe de fichiers?
Je ne vois pas ou se trouve l'éventuelle erreur. Merci encore et amitiés.
AEC1
0
AEC1 Messages postés 98 Date d'inscription mercredi 31 octobre 2007 Statut Membre Dernière intervention 24 décembre 2012
15 août 2009 à 13:34
Salut f0xi,
merci pour ton aide, mais j'ai compris un peu tard que le problème n'en est pas un réellement.
Il se trouve que la sauvegarde est faite sur une clé USB et que celle-ci était pleine et donc les trois fichiers restants dont un de 12 Mo ne sont pas passés. Voila mais sinon cela fonctionne maintenant très bien.
Je remercie tous ceux qui m'ont aidés même si pour certains cela est simple.
Amitiés à tous et à très bientôt.
AEC1
0
Rejoignez-nous