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

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

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

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

Сообщение terrika » 19.03.2010 17:54:52

Я написал вот такой код:
Код: Выделить всё
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... Отлично работает при копировании каталогов...
Может, не подходит этот код или я где-то допустил ошибку?
terrika
незнакомец
 
Сообщения: 4
Зарегистрирован: 11.01.2010 15:12:16

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

Сообщение Padre_Mortius » 20.03.2010 18:34:07

Если версия lazarus 0.9.26 и выше и в искомой папке используются имена файлов и папок с кирилицей, то необходимо сделать приведение кодировок из UTF-8 к системной и наоборот с помощью команд SysToUTF8 и UTF8ToSys
Padre_Mortius
энтузиаст
 
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

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

Сообщение terrika » 21.03.2010 04:16:12

Да, у меня Лазарь стоит 0.9.28.2 бета...
И у меня все каталоги и файлы на английском языке...
terrika
незнакомец
 
Сообщения: 4
Зарегистрирован: 11.01.2010 15:12:16


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 45

Рейтинг@Mail.ru
cron