Q&A

  • 화일을 열어 보려면???
EXE 파일을 열어 보려고 하거든요...

메모장은 아니고... 노트패드에서 EXE파일을 열면...

이상한 문자가... 화면 가득 나오잖아요...

저도 이렇게 구현하고 싶은데...

화일을 열어서 보면... 달랑... 한줄만나오니...

심지어는 델파이에 포함된 예제 중 메모장 처럼 구현한 것들을

봐도 제가 구현 한 것 처럼 달랑... 짧게 나오니...



EXE파일의 내용을 볼 수 있게 하려면... 어떻게 해야 할지...

알려주셨으면 합니다...



1  COMMENTS
  • Profile
    구창민 1999.10.14 10:35
    구민오 wrote:

    > EXE 파일을 열어 보려고 하거든요...

    > 메모장은 아니고... 노트패드에서 EXE파일을 열면...

    > 이상한 문자가... 화면 가득 나오잖아요...

    > 저도 이렇게 구현하고 싶은데...

    > 화일을 열어서 보면... 달랑... 한줄만나오니...

    > 심지어는 델파이에 포함된 예제 중 메모장 처럼 구현한 것들을

    > 봐도 제가 구현 한 것 처럼 달랑... 짧게 나오니...

    >

    > EXE파일의 내용을 볼 수 있게 하려면... 어떻게 해야 할지...

    > 알려주셨으면 합니다...

    >



    음.. 문제점이 있는 작업이라 생각되네요..



    실행화일은 대부분 파일크기가 크고, 때론 엄청나게 큰

    화일도 있을수 있습니다.

    더군다나 Memo 컴포넌트는 Load 할수있는 한계가 있습니다.

    당연히 읽어올수도 없겠지요.



    말씀하신 한줄달랑 나오는 것은 파일에 NULL문자가 있기 때문입니다.

    델파이의 스트링형은 NULL이후로는 아무것도 표기하지 않지요.

    이건 RichEdit 역시 마찬가지입니다.



    RichEdit로 파일사이즈가 큰 파일을 읽어올수는 있겠지만,

    Load하는데에만도 시간이 엄청걸릴듯 하네요..



    자꾸 답답한 소리만 드려서 죄송한데요,



    실제 테스트 해보시구 확인하시고 싶으시면,

    LoadFromFile 메소드로는 안되구요.



    Char형 배열을 동적으로 생성하신뒤 파일을 몽땅 읽어서

    배열에 저장하구, NULL이 문자인 경우 다른문자로 표현하고,

    RichEdit에 Load해 보세요.



    음.. 의사코드를 조금적어보면..

    var F: TFileStream;

    S: String;

    begin

    F:= TFileStream.Create('파일명.exe', fmOpenRead);

    F.ReadBuffer(동적배열, F.Size{파일크기});

    for ...1 to F.Size do

    begin

    if 동적배열[i] <> #0 then S:= S + 동적배열[i]

    else NULL인 경우처리;

    end;

    RichEdit1.Text:= SS;

    ...

    음..이런 형태면 되지 않을까 싶습니다.



    작은 실행화일로 테스트 해보시면 금방 결과를 아실수 있을 것입니다.



    참고로, 일전에 많은 파일을 열고 닫고하는 작업을 해본적이 있습니다.

    몇백메가 되는 파일들도 소켓으로 전송하는 작업이었지요.

    사용자는 개발자가 고생하며 소비한 시간은 절대 모르며,(알려 하지도 않습니다)

    기다리는 시간에 짜증을 내게 됩니다.



    실행화일의 경우 특정 형태로 보이게끔

    프로젝트 수주를 받은곳을 설득하심이..^^;



    그럼.. 즐거운 프로그래밍 되시기 바랍니다.