반응형
var
SP : TPointer;
n : integer;
ST : TMemoryStream;
IconHeader : Cardinal;
jpgHeader : int64;
EmfHeader : ^DWord;
WmfHeader : ^LongInt;
begin
IconHeader := $00010000;
jpgHeader := $464a1000e0ffd8ff;
EmfHeader := Pointer(SP + $28);
WmfHeader := Pointer(SP + n);
ST := TMemorystream.Create;
ST.LoadFromFile(파일네임);
SP := ST.Memory;
n := 0 ; // 요 n은 Paradox DB에서 BMP를 읽을 때
// 8byte헤더가 또 따라 붙습니다.
//비트맵은 파일 첫 두글자가 BM입니다.
if AnsiStrLIComp((SP+n),Pchar('BM'),2) = 0 then begin
bitmap 처리
end
else if AnsiStrLIComp((SP+n),@jpgheader,8) = 0 then begin
jpg 처리
end
else if AnsiStrLIComp((SP+n),Pchar('GIF'),3) = 0 then
GIF 처리
else if (EmfHeader^ = ENHMETA_SIGNATURE) then begin //EMF
Emf 처리
end
else if WmfHeader^ = LongInt($9AC6CDD7) then //WMF
Wmf 처리
else if AnsiStrLIComp((SP+n),@IconHeader,4) = 0 then
Icon 처리 ;
SP : TPointer;
n : integer;
ST : TMemoryStream;
IconHeader : Cardinal;
jpgHeader : int64;
EmfHeader : ^DWord;
WmfHeader : ^LongInt;
begin
IconHeader := $00010000;
jpgHeader := $464a1000e0ffd8ff;
EmfHeader := Pointer(SP + $28);
WmfHeader := Pointer(SP + n);
ST := TMemorystream.Create;
ST.LoadFromFile(파일네임);
SP := ST.Memory;
n := 0 ; // 요 n은 Paradox DB에서 BMP를 읽을 때
// 8byte헤더가 또 따라 붙습니다.
//비트맵은 파일 첫 두글자가 BM입니다.
if AnsiStrLIComp((SP+n),Pchar('BM'),2) = 0 then begin
bitmap 처리
end
else if AnsiStrLIComp((SP+n),@jpgheader,8) = 0 then begin
jpg 처리
end
else if AnsiStrLIComp((SP+n),Pchar('GIF'),3) = 0 then
GIF 처리
else if (EmfHeader^ = ENHMETA_SIGNATURE) then begin //EMF
Emf 처리
end
else if WmfHeader^ = LongInt($9AC6CDD7) then //WMF
Wmf 처리
else if AnsiStrLIComp((SP+n),@IconHeader,4) = 0 then
Icon 처리 ;
반응형