Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.12.2010, 13:43   #1
Volkogriz
Форумчанин
 
Аватар для Volkogriz
 
Регистрация: 11.10.2007
Сообщений: 384
Вопрос Ошибка при Копирование файлов

Доброе время суток!
Деловтом что при копирывание файлов создаётся один и тот-же файл сразными именами Вот код;
Код:
Procedure FileCopy(Const SourceFileName, TargetFileName: String);
Var
S,T   : TFileStream;
Begin
S := TFileStream.Create(sourcefilename, fmOpenRead );
try
T := TFileStream.Create(targetfilename, fmOpenWrite or fmCreate);
try
T.CopyFrom(S, S.Size ) ;
FileSetDate(T.Handle, FileGetDate(S.Handle));
finally
T.Free;
end;
finally
S.Free;
end;
end;

function GetFiles(Path:String; Full: Boolean = true):TStrings;
   Var Rec:TSearchRec; TMP:TStrings;ls: String;i: integer;
begin
  Result:=TStringList.Create;
  if Path[Length(Path)]<>'\' Then Path:=Path+'\';
  if FindFirst(Path+'\*.*',faAnyFile,Rec)=0 then
    begin
     if (Rec.Name<>'.')and(Rec.Name<>'..') then
       if (Rec.Attr and faDirectory) <> 0 then
       begin
       TMP:=GetFiles(Path+Rec.Name,True);
       Result.AddStrings(TMP);
       TMP.Free;
       end
       else
       Result.Add(Path+Rec.Name);
       Result.Add(Path);
     while FindNext(Rec)=0 do
       begin
        if (Rec.Name<>'.')and(Rec.Name<>'..') then
         if (Rec.Attr and faDirectory) <> 0 then begin
         TMP:=GetFiles(Path+Rec.Name,True);
         Result.AddStrings(TMP);
         TMP.Free;
         end else Result.Add(Path+Rec.Name);
         //Result.Add(Path);
       end;
    end;
if not Full then
  for i:=0 to Result.Count-1 do
   begin
     ls := Result[i];
     Delete(ls,1,Length(Path));
     Result[i] := ls;
   end;
 SysUtils.FindClose(Rec);
end;

procedure PatchString;
var
NamePatch,IFPatch:TStringList;
Patch:String;
g,r,i:integer;
begin
Patch:= '\';
IFPatch:=TStringList.Create;
NamePatch:=TStringList.Create;
NamePatch.LoadFromFile(Pchar(extractfilepath(Application.ExeName))+ 'Name.dat');
IFPatch.Assign(GetFiles(Pchar(extractfilepath(Application.ExeName))));
for i:=1 to IFPatch.count-1 do for g:=1 to NamePatch.count-1 do
FileCopy(IFPatch.Strings[i],Form1.Edit2.Text + Patch + NamePatch.Strings[g]);
r:=15;
if i>r then
Form1.ProgressBar1.Min:=0;
Form1.ProgressBar1.Position:=r;
Form1.ProgressBar1.Max:=i;
begin
IFPatch.Clear;
end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
PatchString;
end;
В файле Name.dat содержатся имена копируемых файлов!
Как это исправеть не как немогу догодаться,
Хотя понял причину!!!
Зарание благодарен.
С уважениенм,
Volkogriz!
Не количеством плюсов измеряется репутация человека...!

Последний раз редактировалось Volkogriz; 06.12.2010 в 14:48.
Volkogriz вне форума Ответить с цитированием
Старый 06.12.2010, 13:50   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

И в чем же причина?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.12.2010, 13:59   #3
Volkogriz
Форумчанин
 
Аватар для Volkogriz
 
Регистрация: 11.10.2007
Сообщений: 384
По умолчанию

Причина втом что программа берёт первый файл и копирует его несколько раз с именами находяшимися в файле Name.dat.
И удолитворившесь тем что все файлы наместе блогополучно заканчивает процесс копирования!
Как зделать так чтобы программа взела первый файл и скопировала его с именем первой строки в файле Name.dat, потом другой скапировала со вторым именем и тд и тп...
Не количеством плюсов измеряется репутация человека...!
Volkogriz вне форума Ответить с цитированием
Старый 06.12.2010, 15:25   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ага... Ну тогда:
Во-первых: NamePatch.Strings[g] - ничего не смущает? по-моему тут уместно не g а i
Во-вторых: Мне кажется что сложновато код написан... ИМХО его можно упростить...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.12.2010, 15:33   #5
Volkogriz
Форумчанин
 
Аватар для Volkogriz
 
Регистрация: 11.10.2007
Сообщений: 384
По умолчанию

Спс!!
Я разобрался с вашей помощью!
Код какой смог написать
Не количеством плюсов измеряется репутация человека...!
Volkogriz вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Копирование файлов при поступлении Jack_Inc Работа с сетью в Delphi 1 25.03.2010 10:18
Копирование файла при помощи OpenDialog (ошибка) sashahttp Win Api 3 02.02.2010 20:06
Ошибка при открытие файлов Darh Microsoft Office Word 2 14.01.2010 16:58
Ошибка при архивировании файлов eda Microsoft Office Excel 2 10.07.2009 17:28
Копирование файлов при помощи потоков Aleshin Помощь студентам 0 25.04.2009 14:00