지금 emf 파일에서 텍스트를 추출하는 프로그램을 만들고 있는데요...
문제는 emf 안에 test가 유니코드로 되어 있네요...
그것을 보이게 만들어야 하는데....
ansi -> 유니 코드로는 쉬운데...
이건 문제네요...
참고 하시라고...emf 파일 하나 첨부 했습니다...
흑... 실력이 딸려서.,..
좀 도와 주십시요...
부탁 드립니다...
다음은 소스입니다..
procedure TForm1.Button1Click(Sender: TObject);
var
i : integer;
emf_file : Tfilestream;
emfh : TEnhMetaHeader;
emfr : TEnhMetaRecord;
aaa : array [0..99] of WIDEchar;
ccc : array [0..4090] of char;
ddd : widestring;
aaa11 : TEMREXTTEXTOUT;
kkk : TEMRTEXT;
al : tstringlist;
begin
if od1.Execute then
begin
al := TStringList.Create;
emf_file := Tfilestream.Create(od1.FileName,fmOpenRead);
emf_file.Position:=0;
emf_file.Read(emfh,sizeof(TEnhMetaHeader));
emf_file.Position := emfh.offDescription;
emf_file.Read(aaa,(emfh.nDescription *2) );
emf_file.Read(emfr,sizeof(TEnhMetaRecord));
emf_file.Read(ccc,emfr.nsize - 12);
for i:=0 to emfh.nRecords-1 do
begin
emf_file.Read(emfr,sizeof(TEnhMetaRecord));
begin
if emfr.itype = EMR_EXTTEXTOUTW then
begin
emf_file.Position := emf_file.Position -12;
emf_file.Read(aaa11,sizeof(TEMREXTTEXTOUT));
kkk:=aaa11.emrtext;
emf_file.Read(ccc,emfr.nsize - (sizeof(TEMREXTTEXTOUT)));
// 여기서 넘어온 값 CCC 가 유니코드...
// 여기서 부터가 문제.....
{
ddd:=ccc;
showmessage(ddd);
}
// TntMemo1.Lines.Add(ccc);
end else
emf_file.Read(ccc,emfr.nsize - 12);
end;
end;
emf_file.Free;
end;
end;