Q&A

  • 확장자만 보고 읽는 바보같은 델파이 = 델파이 속이기
안녕하세요.



델파이 한테 그림파일을 읽으라고 하면



확장자를 확인하여 파일을 읽기 때문에



그래픽 뷰어를 제대로 만들 수가 없습니다.



예를 들면 형식이 원래 jpg인 파일의 확장자를



act로 바꿔서 읽게 하면 에러가 나더군요..



델파이를 속이는 방법의 코드 좀 가르쳐 주세요...



여러분들은 이 문제를 어떻게 해결하셨는지..





3  COMMENTS
  • Profile
    노을 2000.08.02 08:12
    안녕하세요 노 을 입니다.



    일반적으로 널리 퍼진 File들은 그 앞에 Header라는 것을 넣습니다.



    그 목적은 여러가지 일 수 있지만..



    저 같은 경우도 그렇고..



    예를 들면...



    HWP File 같은 경우..



    HWP Document File V3.00



    이라는 Header 가 들어있죠..



    Type 로 볼경우 저렇게 보입니다..



    V3.00 바로 뒤에는 Char(26) 이 추가 되어 있어 그 뒤의 글자들은 보이지



    않게 되어있죠 ^^..



    Dos 시절 TYPE 로 볼때 어디에 쓰는 File인지 알 수 있게 하려고 넣은



    것이죠 ... ^^..



    또한 Load시 이것을 확인하여 이 File 인지 알 수 도 있죠 ^^..



    그럼 BMP 와 JPG 의 구별법은..



    한번 직접 TYPE로 보시길..



    BMP File은 BMP File끼리...



    JPG File은 JPG File끼리



    공통되는 것이 있을 겁니다...



    일단 간단히 보니..



    BMP의 경우는 첫 2BYTE가 BM 이라는 글자로 되어 있더군요..

    JPG의 경우는 6BYTE 뒤 부터 즉 7BYTE 부터..

    (흐미 --;.. 아까 실수 했네요.. 7byte뒤가 아니라 7byte 부터였군요 ^^..

    수정했어여~~)



    JFIF 라는 글자가 있구요..



    저걸로 구분할 수 있을 겁니다.



    FileStream등을 이용해 저것을 확인후.. 확장자 바꾸어 임시



    File로 만든뒤에.. 읽어드리세요..



    도움 되시길 바랍니다..



    꾸벅..



    (역시 가장 좋은 방법은 그 그림 File의 형식에 대한 자료를 수집해

    공부하는 것이겠죠? ^^.. )



    꼭대기에 오르지 못한이에겐 꿈이 있기에 행복하다

    늘 푸르고 큰 꿈을 가지고 살아가는 사나이 노 을











  • Profile
    최용일 2000.08.02 05:33
    안녕하세요. 최용일입니다.



    이건 델파이뿐만 아니라 모든 프로그램이 다 그렇습니다. 일부 프로그램은 이런것들도



    처리를 해주는 것도 있지만... 텍스트 파일의 확장자를 .exe로 바꾸고 실행해보세요.



    메모장에서 읽히나... 델파이가 바보같은게 아니라 코딩을 잘못해서 그런것입니다.



    .exe로 확장자를 바꾼 텍스트파일을 실행할때 메모장에서 읽힌다면 델파이가 바보같겠지만..



    괜히 델파이 탓하지 마세요...



    간단하게 LoadFromStream메소드를 사용하면 확장자에 상관이 없이 읽힙니다. 물론 형식이



    맞아야 제대로 보이겠죠...



    ^^ 항상 즐코하세요.



    초보 wrote:

    > 안녕하세요.

    >

    > 델파이 한테 그림파일을 읽으라고 하면

    >

    > 확장자를 확인하여 파일을 읽기 때문에

    >

    > 그래픽 뷰어를 제대로 만들 수가 없습니다.

    >

    > 예를 들면 형식이 원래 jpg인 파일의 확장자를

    >

    > act로 바꿔서 읽게 하면 에러가 나더군요..

    >

    > 델파이를 속이는 방법의 코드 좀 가르쳐 주세요...

    >

    > 여러분들은 이 문제를 어떻게 해결하셨는지..

    >

    >

  • Profile
    4master 2000.08.02 05:23
    초보 wrote:

    > 안녕하세요.

    >

    > 델파이 한테 그림파일을 읽으라고 하면

    >

    > 확장자를 확인하여 파일을 읽기 때문에

    >

    > 그래픽 뷰어를 제대로 만들 수가 없습니다.

    >

    > 예를 들면 형식이 원래 jpg인 파일의 확장자를

    >

    > act로 바꿔서 읽게 하면 에러가 나더군요..

    >

    > 델파이를 속이는 방법의 코드 좀 가르쳐 주세요...

    >

    > 여러분들은 이 문제를 어떻게 해결하셨는지..

    >

    >

    제 생각에는 불러드릴 확장자가 일정한 거면. 그림에 넣기 전에 act -> jpg로 바꾸어 주면 될꺼라 생각하거든요.

    var

    filename:String;

    posofchar:integer;

    begin

    ...

    filename:=pictureopendialog.filename;(맞나?)

    if strpos(pchar(filename),'.act') <> nil then

    begin

    posofchar:=pos('.act',filename);

    delete(filename,posofchar,length('.act'));

    insert('.jpg',filename,length(filename)+1);

    end;

    위의 것이 맞나? 그냥 끄적대서...

    확장자를 무시하는 거에 대해서는 모르겠네요.

    그다음 그림컴포넌트에 filename을 삽입하면 될겁니다.

    수고하세요.