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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.12.2014, 01:12   #1
kisloid222
Новичок
Джуниор
 
Регистрация: 25.12.2014
Сообщений: 1
По умолчанию Альтернатива копированию файлов

Доброго времени суток, возник вопрос. Требуется найти альтернативу копирования файла, то есть процедуры CopyFile.
Надумал только одно, создать файл путем AssigenFile и скопировать содержимое файла который нужно скопировать в переменную как обычный текстовый файл и вставить в созданный (путем AssigenFile ) файл, но сохранить с тем же расширением который и был начально взятый файл.
Как правильно написать?


P.S. Прошу даже Не спрашивайте зачем такое извращение)))
kisloid222 вне форума Ответить с цитированием
Старый 25.12.2014, 08:34   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

AssignFile + BlockRead/BlockWrite - это "классика"! Пример копирования был в хелпе на BlockRead() Turbo Pascal'я.

Но в современной Delphi рекомендую использовать TFileStream


Нескромный вопрос - а чем не устроила функция из WinAPI?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 25.12.2014, 10:54   #3
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,434
По умолчанию

Цитата:
Нескромный вопрос - а чем не устроила функция из WinAPI?
....и делает она тоже самое...
Человек_Борща вне форума Ответить с цитированием
Старый 25.12.2014, 11:03   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

OFFTOP

Видимо нужно копирование сопровождать красочными звуковыми и цветовыми эффектами. По концу шоу монитор разлетается вдребезги, клавиатура подпрыгивает вверх на пол-метра, мышь убегает вместе с ковриком. Занавес

До делу - прогрессбар захотелось прицепить?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 25.12.2014 в 11:08.
Аватар вне форума Ответить с цитированием
Старый 26.12.2014, 09:42   #5
SLAUR
Пользователь
 
Регистрация: 16.10.2014
Сообщений: 51
По умолчанию

Код:
Procedure fmR;  begin FileMode:=0 end;
Procedure fmRW; begin FileMode:=2 end;

Function MyCreateDir(Dir:String):Boolean;
Var I,L:Integer;
    CurDir:String;
begin
  IF ExcludeTrailingBackslash(Dir) = '' then exit;
  Dir := IncludeTrailingBackslash(Dir);
  L:=Length(Dir);
  FOR I:=1 TO L do
  begin
    CurDir := CurDir + Dir[I];
    IF Dir[I] = '\' then
    begin
      IF not DirectoryExists(CurDir) then
        IF Not CreateDir(CurDir) then Exit;
    end;
  end;
  Result := True;
end;




Function CopyFil(fIn,fOut:String):boolean;
var F1,F2:file ; p:pointer ; w:integer ;
const BufCopyF=32000;
procedure ErrCop;
   begin
    {$I-}Close(F2){$I+};if IOResult<>0 then;
    {$I-}Close(F1){$I+};if IOResult<>0 then;
    {$I-}Erase(F2){$I+};if IOResult<>0 then;
   end;
begin
Result:=False;
if not Fileexists(fIn) then Exit;
if fIn=fOut then EXIT;
MyCreateDir(ExtractFilePath(fout));
FileSetAttr(fOut,0);
fmR;
Assign(F1,fIn);{$I-}Reset(F1,1); {$I+}
if IOResult<>0 then EXIT;
fmRW;
Assign(F2,fOut);{$I-}Rewrite(F2,1);{$I+}
if IOResult<>0 then
if FileExists(fOut) then
begin {$I-}Rewrite(F2,1);{$I+} if IOResult<>0 then EXIT;
end else EXIT;
GetMem(p,BufCopyF);
While not Eof(f1) do
begin
{$I-}BlockRead(f1,p^,BufCopyF,w);{$I+}if IOResult<>0 then begin ErrCop ;EXIT;end;
{$I-}BlockWrite(f2,p^,w);{$I+}if IOResult<>0 then begin ErrCop;EXIT;end;
end;
FreeMem(p,BufCopyF);
{$I-}FileSetDate(TFileRec(f2).Handle,
         FileGetDate(TFileRec(f1).Handle)); {$I+};if IOResult<>0 then EXIT;
{$I-}Close(f2){$I+};if IOResult<>0 then EXIT;
{$I-}Close(f1){$I+};if IOResult<>0 then EXIT;
CopyFil:=True;
end;

Последний раз редактировалось Stilet; 26.12.2014 в 10:10.
SLAUR вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Макрос по копированию latana Microsoft Office Excel 0 11.07.2012 17:53
Задание по копированию строк, strncpy McToNy Помощь студентам 0 03.06.2012 16:45
доработка макроса по копированию данных Nick31 Microsoft Office Excel 1 16.05.2012 10:31
Макрос по копированию строки, в зависимости от даты Feller Microsoft Office Excel 2 02.11.2011 19:30
Вопрос по копированию файлов Arsti Помощь студентам 2 29.01.2010 11:12