Bonjour,

J'avais lancé un sujet dans le forum Delphi pour avoir une aide quant à la copie d'un répertoire ainsi que tout son contenu (sous-répertoires inclus).

On m'a renvoyé vers le FAQ qui répondait à cette question. Par contre, ayant découvert Lazarus, j'ai essayé d'utiliser la fonction CopyFolder :
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
function CopyFolder(FromFld, ToFld: string): boolean;
var fos: TSHFileopStruct;
begin
// il faut supprimer les antislashs de fin sinon vous aurez droit à un message d'erreur
  FromFld := ExcludeTrailingPathDelimiter(Trim(FromFld));
  ToFld := ExcludeTrailingPathDelimiter(Trim(ToFld));
 
  FillChar(fos, SizeOf(fos),0);
  with fos do
  begin
    wFunc := FO_COPY;
    pFrom := PChar(FromFld+#0);
    pTo   := PChar(ToFld+#0);
    fFlags := FOF_SILENT or FOF_NOCONFIRMATION or FOF_NOCONFIRMMKDIR;
  end;
  Result := ShFileOperation(fos)=0;
end;
Elle ne fonctionne pas (alors qu'elle fonctionne parfaitement sous Delphi) et me renvoie cette erreur :
Unit1.pas(30,3) Hint: Local variable "fos" does not seem to be initialized
Unit1.pas(38,32) Error: Incompatible type for arg no. 1: Got "_SHFILEOPSTRUCTA", expected "LPSHFILEOPSTRUCTW"
Unit1.pas(46) Fatal: There were 1 errors compiling module, stopping
Est-ce que quelqu'un aurait une idée ?

Merci d'avance.

Lohot