Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 15.06.2010, 11:10
Аватар для Crack502
Crack502 Crack502 вне форума
Начинающий
 
Регистрация: 05.01.2010
Сообщения: 125
Репутация: 10
Вопрос запись из файла в файл

Как записать содержимое из файла в файл? Например,
из text1.txt в text2.txt.
Второй вопрос:
Как записать тоже самое, только код: из 123.exe в 456.exe?
__________________
Вот раньше, года этак в 60-е, было всё классно - sex, drugs & rock'n'roll. А сейчас? Suxx, bugs & plug'n'play...
Ответить с цитированием
  #2  
Старый 15.06.2010, 11:20
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Код:
  WinExec('cmd /c copy "c:\Downloads\text1.txt" "c:\Downloads\text2.txt"', SW_SHOW);
Код:
  WinExec('cmd /c copy "c:\Downloads\123.exe" "c:\Downloads\456.exe"', SW_SHOW);
Ответить с цитированием
  #3  
Старый 15.06.2010, 17:05
roamer roamer вне форума
Активный
 
Регистрация: 15.04.2009
Сообщения: 369
Репутация: 93
По умолчанию

Несколько возможных вариантов (попадались в разные времена в разных местах).

Код:
function CopyFile0(fnFrom,fnTo : String): Boolean;
Const
  RecS = 32768;
Var
  Ok99 : Boolean;
  F1,F2 : file;
  NumRead, NumWritten: Integer; 
  Buf : array[1..RecS] of byte;
  i : word;
begin
  Result:=FALSE;
  fnFrom:=Trim(fnFrom);
  fnTo:=Trim(fnTo);
  if (length(fnFrom)>0) and (length(fnTo)>0) then begin
     if AnsiUpperCase(fnFrom)<>AnsiUpperCase(fnTo) then begin
        AssignFile(F1,fnFrom);
        FileMode := 0;
        {$I-} reset(F1,1) {$I+};
        Ok99:=(IoResult=0);
        TRY                
           if Ok99 then begin
              TRY
                AssignFile(F2,fnTo);
                FileMode := 2;
                rewrite(F2,1);
                repeat
                  BlockRead(F1, Buf, SizeOf(Buf), NumRead);
                  BlockWrite(F2, Buf, NumRead, NumWritten);
                until (NumRead = 0) or (NumWritten <> NumRead);
                Result:=TRUE;
              FINALLY
                {$I-} CloseFile(F2) {$I+};
                Ok99:=(IoResult=0);
              END;
           end;
        FINALLY
          {$I-} CloseFile(F1) {$I+};
          Ok99:=(IoResult=0);
        END;
     end;
  end;
end;
    

function CopyFile1(fnFrom, fnTo : String;NotRewrite : BOOLEAN): Boolean;
Var
  Err : LongInt;
  cFrom,cTo : array[0..1023] of Char;
begin
  Result:=FALSE;
  fnFrom:=trim(fnFrom);
  fnTo:=trim(fnTo);
  if (length(fnFrom)>0) and (length(fnTo)>0) then begin
     if AnsiUpperCase(fnFrom)<>AnsiUpperCase(fnTo) then begin
        StrPCopy(cFrom,fnFrom);
        StrPCopy(cTo,fnTo);
        if WinProcs.CopyFile(cFrom,cTo,NotRewrite) then begin
           Result:=TRUE;
        end
        else begin
           Err:=GetLastError;
        end;
     end;            
  end;            
end;


function CopyFile2(fnFrom, DirTo : string) : boolean;
//Если каталога DirTo не существует, Windows выдаст запрос на его создание
var
  F : TShFileOpStruct;
begin
  Result:=false;                              
  fnFrom:=Trim(fnFrom);
  if length(fnFrom)>0 then begin                                                         
     DirTo:=Trim(DirTo);
     F.Wnd := 0;
     F.wFunc := FO_COPY;
     fnFrom:=fnFrom+#0;
     F.pFrom:=pchar(fnFrom);
     DirTo:=DirTo+#0;
     F.pTo:=pchar(DirTo);
     F.fFlags := FOF_ALLOWUNDO or FOF_NOCONFIRMATION;
     Result:=ShFileOperation(F) = 0;
  end;
end;

                                        

//Этот вариант был в режиме проверки.
//Не помню - довел его до ума или нет.                                                                                      
function CopyFile3(fnFrom, fnTo : string) : boolean;
var
  FromFile, ToFile: File;
  Ok99 : boolean;
begin
  Result:=FALSE;
  fnFrom:=Trim(fnFrom);
  fnTo:=Trim(fnTo);
  if (length(fnFrom)>0) and (length(fnTo)>0) then begin
     if AnsiUpperCase(fnFrom)<>AnsiUpperCase(fnTo) then begin
        AssignFile(FromFile, fnFrom);
        AssignFile(ToFile, fnTo);
        {$I-} Reset(FromFile) {$I+};
        Ok99:=(IoResult=0);
        try
          Rewrite(ToFile);
          try
            if LZCopy(TFileRec(FromFile).Handle, TFileRec(ToFile).Handle)<0 then begin
               //raise Exception.Create('Error using LZCopy');
            end
            else begin
               Result:=TRUE;
            end;
          finally
            {$I-} CloseFile(ToFile) {$I+};
            Ok99:=(IoResult=0);
          end;
        finally
          {$I-} CloseFile(FromFile) {$I+};
          Ok99:=(IoResult=0);
        end;
     end;
  end;
end;
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 08:08.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025