Q&A

  • FileStream.CopyFrom에 대해서~~
   MemoryStream의 내용을 FileStream으로 한꺼번에 복사하는것이 아니라,
  
   클라이언트에서 사이즈 2048씩 받아서 옮기려고 합니다.

   그런데 mStream의 내용이 fStream으로 붙여쓰기가 안되네요..

   아래처럼 코딩했는데 어떻게 해야하는지  도움 부탁드립니다.


  while (fStream.Size > 12345) do
   begin
      mStream.Position := 0;
      fStream.Seek(0, soFromEnd);
      fStream.CopyFrom(mStream, 2048);
  end;
1  COMMENTS
  • Profile
    보들레르 2002.01.22 04:08
    간단한 예제를 동봉합니다.

    그럼~ 항상 즐거운 프로그래밍 하시길~~


    function StreamFileCopy( const sourcefilename, targetfilename: String ): String;
    var
        S,T: TFileStream;
        SS:String;
    Begin
      SS:= ExctractFileName(targetfilename) + '복사하려는 파일이 이미 존재합니다. 덮어쓰시겠습니까?';
      if FileExists(targetfilename) then
        if Application.MessageBox(SS,'경고', MB_YESNO+MB_ICONQUESTION)=id_No then
        begin
          Result:='복사취소';
          Exit;
        end;

        Result := '';
        S := TFileStream.Create( sourcefilename, fmOpenRead );
        try try
          T := TFileStream.Create( targetfilename, fmOpenWrite or fmCreate );
        except
          Result := '파일 오픈에러';//SE_CreateError;
        end;
          try try
            T.CopyFrom(S, S.Size ) ;
          except
            Result := '파일 복사에러';//SE_CopyError;
          end;
          finally
            T.Free;
          end;
        finally
          S.Free;
        end;
    End;

    procedure TForm1.Button1Click(Sender: TObject);
    var S: String;
    begin
      S:=  StreamFileCopy(Edit1.Text, Edit2.Text);
      if S <> '' then ShowMessage(S)
      else ShowMessage('파일 복사가 완료되었습니다');
    end;