Q&A

  • 메모리에 파일 생성?


Socket을 사용하여 Stream을 전송하려 합니다.

->파일을 전송합니다.



문제는 디스크에 있는 파일을 전송하는 것이 아니라

프로그램내에서 파일을 만들고 그 파일을 전송합니다.

그렇게 되면 직접적으로 디스크에 파일을 만들필요 없이

메모리에 직접쓰는게 더 효과적이라고 생각이 듭니다.



문제는 Socket.SendStream(xxx);를 하려고 하는데



메모리에 직접 파일처럼 사용하는 방법은 없을까요?



선배님들의 답변 부탁드립니다.

1  COMMENTS
  • Profile
    김진호 2001.06.10 02:25
    손경덕 wrote:

    >

    > Socket을 사용하여 Stream을 전송하려 합니다.

    > ->파일을 전송합니다.

    >

    > 문제는 디스크에 있는 파일을 전송하는 것이 아니라

    > 프로그램내에서 파일을 만들고 그 파일을 전송합니다.

    > 그렇게 되면 직접적으로 디스크에 파일을 만들필요 없이

    > 메모리에 직접쓰는게 더 효과적이라고 생각이 듭니다.

    >

    > 문제는 Socket.SendStream(xxx);를 하려고 하는데

    >

    > 메모리에 직접 파일처럼 사용하는 방법은 없을까요?

    >

    > 선배님들의 답변 부탁드립니다



    TmemoryStream 쓰시면 되겠네여..





    type

    Header = record

    Ver : Byte;

    FileLength : DWORD;

    Data : Array [0..1023] of Char;

    end;

    var

    aa : TMemoryStream;

    cc, bb : Header;



    begin

    bb.Ver = 1;

    bb.FileLength = 1024;



    Move(Test, bb.Data, Sizeof(Test));



    AA.Write('이건연습입니다.', Length('이건연습입니다.'));

    AA.Write(bb, Sizeof(Header));

    //만일 15번째 바이트 부터 읽고 싶다면..

    //'이건연습입니다.'를 건너뛰고..

    AA.Position := 15;

    AA.Read(cc, Sizeof(Header));

    end;



    Position 이란 메소드는 현재 메모리상에 위치 입니다.

    즉 포인터가 되겠죠..

    이곳에 원하는 위치에 값만 대입해주면. 화일보다 더 쉽게 읽고 쓸수 있습니다.

    원하시는 내용인가는 모르겠습니다만..



    그럼..