Ошибка при копировании директории

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
terrika
незнакомец
Сообщения: 4
Зарегистрирован: 11.01.2010 14:12:16

Ошибка при копировании директории

Сообщение terrika »

Я написал вот такой код:

Код: Выделить всё

unit Unit1; 

{$mode objfpc}{$H+}

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, FileUtil, LResources,
  Forms, Controls, Graphics, Dialogs, StdCtrls;

type

  { TForm1 }

  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    procedure Button1Click(Sender: TObject);

  private
    { private declarations }
  public
    { public declarations }
  end;

var
  Form1: TForm1;

implementation


procedure CopyFolder(src, dest: string);
var
  sts: integer;
  SR: TSearchRec;
begin
   sts := FindFirst(src + '*.*', faAnyFile, SR);
   while sts = 0 do
   begin
     if (SR.Name <> '.') and (SR.Name <> '..') then
     begin
     Application.ProcessMessages;
     if pos('.', SR.Name) = 0 then
     begin
       {I-}
       MkDir(dest + SR.Name);
       {I+}
       CopyFolder(src + SR.Name + '\', dest + SR.Name + '\');
     end
     else
       CopyFile(PChar(src + SR.Name), PChar(dest + SR.Name), True);
     end;
     sts := FindNext(SR);
   end;
   FindClose(SR);
end;





{ TForm1 }

procedure TForm1.Button1Click(Sender: TObject);
begin
  mkdir(edit3.Text+edit2.Text);
  copyfolder(edit1.Text+'\'+edit2.Text+'\', edit2.Text + '\');

end;

initialization
  {$I unit1.lrs}

end.


При тестировании программы выскакивается вот такое сообщение:
Project project1.exe raised exception class 'RunError(123)'

Этот код пашет в Дельфи 6 и 8... Отлично работает при копировании каталогов...
Может, не подходит этот код или я где-то допустил ошибку?
Padre_Mortius
энтузиаст
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Сообщение Padre_Mortius »

Если версия lazarus 0.9.26 и выше и в искомой папке используются имена файлов и папок с кирилицей, то необходимо сделать приведение кодировок из UTF-8 к системной и наоборот с помощью команд SysToUTF8 и UTF8ToSys
terrika
незнакомец
Сообщения: 4
Зарегистрирован: 11.01.2010 14:12:16

Сообщение terrika »

Да, у меня Лазарь стоит 0.9.28.2 бета...
И у меня все каталоги и файлы на английском языке...
Ответить