StartprogrammingusingObjectPascal:CopyFilesUsingTFileStream: Difference between revisions

From 흡혈양파의 번역工房
Jump to navigation Jump to search
(SPOP TFileStream을사용한파일복사 페이지 추가)
 
(번역수정)
 
(One intermediate revision by the same user not shown)
Line 1: Line 1:
===TFileStream을 사용한 파일 복사===
==TFileStream을 사용한 파일 복사==


이 예제에서는 ''TFileStream'' 형식을 사용하여 파일을 복사하려고 합니다.
이 예제에서는 ''TFileStream'' 형식을 사용하여 파일을 복사하려고 합니다.


이를 수행하려면 새 프로그램을 만들고 메인 폼에 이 구성요소를 놓습니다.
이를 실행하려면 새 프로그램을 만들고 메인 폼에 이 구성요소를 놓습니다.
 
<syntaxhighlight lang="text">
<syntaxhighlight lang="text">
TButton, TOpenDialog, TSaveDialog
TButton, TOpenDialog, TSaveDialog
</syntaxhighlight>
</syntaxhighlight>


단추의 OnClick 이벤트에 대해 다음 코드를 작성합니다.
 
Button 의  OnClick 이벤트에 대해 다음 코드를 작성합니다.
 
<syntaxhighlight lang="pascal">
<syntaxhighlight lang="pascal">
procedure TfmMain.Button1Click(Sender: TObject);
procedure TfmMain.Button1Click(Sender: TObject);
Line 32: Line 35:
</syntaxhighlight>
</syntaxhighlight>


이 방법은 객체지향 파일을 사용한다는 점을 제외하면 비형식화 된 파일을 사용하는 것과 매우 유사합니다.


또한 파일을 복사하는 더욱 간단한 방법을 사용합니다.
이 방법은 객체지향 파일을 사용한다는 점을 제외하면 비형식적 파일을 사용하는 것과 매우 유사합니다.
 
 
또한 파일을 복사하는 더욱 간단한 방법도 사용할 수 있습니다.
 
<syntaxhighlight lang="pascal">
<syntaxhighlight lang="pascal">
procedure TfmMain.Button1Click(Sender: TObject);
procedure TfmMain.Button1Click(Sender: TObject);
Line 52: Line 58:
</syntaxhighlight>
</syntaxhighlight>


우리가 원본 파일의 크기(SourceF.size)를 ''CopyFrom'' 메서드에 넘겨주었기 때문에 이것은 전체 파일 내용을 대상 파일로 복사합니다.
 
우리가 원본 파일의 크기(SourceF.size)를 '''''CopyFrom''''' 메서드에 넘겨주었기 때문에 이것은 전체 파일 내용을 대상 파일로 복사합니다.
 
 
[[Category:StartprogrammingusingObjectPascal]]
[[Category:StartprogrammingusingObjectPascal]]

Latest revision as of 11:31, 4 April 2013

TFileStream을 사용한 파일 복사

이 예제에서는 TFileStream 형식을 사용하여 파일을 복사하려고 합니다.

이를 실행하려면 새 프로그램을 만들고 메인 폼에 이 구성요소를 놓습니다.

TButton, TOpenDialog, TSaveDialog


Button 의 OnClick 이벤트에 대해 다음 코드를 작성합니다.

procedure TfmMain.Button1Click(Sender: TObject);
var
    SourceF, DestF: TFileStream;
    Buf: array [0 .. 1023] of Byte;
    NumRead: Integer;
begin
    if OpenDialog1.Execute and SaveDialog1.Execute then
    begin
        SourceF:= TFileStream.Create(OpenDialog1.FileName, fmOpenRead);
        DestF:= TFileStream.Create(SaveDialog1.FileName, fmCreate);
        while SourceF.Position < SourceF.Size do
        begin
            NumRead:= SourceF.Read(Buf, SizeOf(Buf));
            DestF.Write(Buf, NumRead);
        end;
        SourceF.Free;
        DestF.Free;
        ShowMessage('Copy finished');
    end;
end;


이 방법은 객체지향 파일을 사용한다는 점을 제외하면 비형식적 파일을 사용하는 것과 매우 유사합니다.


또한 파일을 복사하는 더욱 간단한 방법도 사용할 수 있습니다.

procedure TfmMain.Button1Click(Sender: TObject);
var
    SourceF, DestF: TFileStream;
begin
    if OpenDialog1.Execute and SaveDialog1.Execute then
    begin
        SourceF:= TFileStream.Create(OpenDialog1.FileName, fmOpenRead);
        DestF:= TFileStream.Create(SaveDialog1.FileName, fmCreate);
        DestF.CopyFrom(SourceF, SourceF.Size);
        SourceF.Free;
        DestF.Free;
        ShowMessage('Copy finished');
    end;
end;


우리가 원본 파일의 크기(SourceF.size)를 CopyFrom 메서드에 넘겨주었기 때문에 이것은 전체 파일 내용을 대상 파일로 복사합니다.