IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Delphi Discussion :

[Radstudio 12]Erreur conversion procedure copie de D7 a D12


Sujet :

Langage Delphi

  1. #1
    Membre éclairé
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2002
    Messages
    394
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2002
    Messages : 394
    Par défaut [Radstudio 12]Erreur conversion procedure copie de D7 a D12
    Bonjour

    J'ai sortie une ancienne procedure qui existait en D7 et je desirais la corriger pour l'utiliser en Radstudio 12 et a la ligne de lpFileOp.pFrom:=TabFrom j'ai un erreur sur Tabfrom
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    procedure copier(Handle:HWND;Source,Cible:String);
    var
      lpFileOp:TSHFileOpStructA;
      TabFrom:array[0..255] of char;
      i:integer;
     
    begin
         For i:=0 to length(Source)-1 do TabFrom[i]:=Source[i+1];
         TabFrom[length(Source)]:=#0;// pFrom peut contenir plusieurs noms de fichier. Les noms doivent être séparés par le caractère #0.
         TabFrom[length(Source)+1]:=#0;// d'après mes essais, le dernier nom de fichier doit être suivi de deux caractères #0.
     
        {-----préparation du paramètre lpFileOp qui sera passé en paramètre à SHFileOperation -----}
         lpFileOp.Wnd:=handle;
         lpFileOp.wFunc:=FO_COPY; // l'action sera une copie
         lpFileOp.pFrom:=TabFrom; // contient le ou les fichiers /dossiers à recopier
         lpFileOp.pTo:=PAnsiChar(Cible);   // ce vers quoi on recopie
         lpFileOp.fFlags:=FOF_ALLOWUNDO;   // préserve la possibilité d'annuler la copie
                                  // + FOF_RENAMEONCOLLISION; //si le fichier cible existe déjà, il le copie sous un nom du style copie (1) de..
         { fin de la préparation du paramètre lpFileOp}
     
         SHFileOperation(lpFileOp); // procède à la copie
    end;
    Merci de votre aide

    Mario

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 499
    Billets dans le blog
    65
    Par défaut
    Bonjour,

    sans "analyser" le code, je dirais que c'est l'erreur classique du passage de ANSI à UTF8 (donc bien ante D12)
    Remplacer les déclarations de String par ANSIString et Char par ANSIChar devrait résoudre ce "hic" (il me semble qu'il existe aussi des directives de compilation mais je déconseillerai)

    en "analysant"
    Si je comprends bien l'objectif, il s'agit de faire une copie de 1 à n fichiers à partir d'une liste en passant par l'API Windows, un peu comme ce que propose Nono40
    Perso, étant désormais plus "FMX et multi OS" (et un peu anti API) j'utiliserai les routines contenues dans System.IOUtils
    en exemple, non testé, je me trompe peut-être du tout au tout
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    // Array of string est un dynamic array
    procedure TForm2.copiefichiers(destinationdir: string;
      const listefichiers: Array of String);
    var fichier : String; // chemin complet d'un fichier
    begin
     for fichier in listefichiers do
       TFile.Copy(fichier,Tpath.Combine(destinationdir,fichier),true);
    end;
    Dynamic arrays :
    https://blog.marcocantu.com/blog/201...delphixe7.html
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

Discussions similaires

  1. Erreur 7415 Procédure Stockée et OLE DB MS.JET 4.0
    Par yoopee dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 19/07/2006, 15h20
  2. erreur compilation procedure
    Par lazzeroni dans le forum Oracle
    Réponses: 1
    Dernier message: 30/06/2006, 12h49
  3. erreur dans procédure
    Par new_wave dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 03/01/2006, 17h25
  4. Erreur avec procédure LockWorkStation ...
    Par simonseztech dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 16/08/2004, 16h33
  5. [VB.NET] Erreur conversion de code c=>vb (opendialogfile)
    Par hirochirak dans le forum Windows Forms
    Réponses: 19
    Dernier message: 02/06/2004, 17h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo