// 컴파일 되게 하기 위해서...다음 함수를 구라로 정의
procedure RemoveFileDocKind(aValue: Integer);
begin
end;
// 컴파일 되게 하기 위해서 다음 상수들을 구라로 정의
const dkHwp = 100;
const dkWord = 101;
const dkExcel = 102;
// 리팩토링한 GetFileFilter 함수
function GetFileFilter:String;
type
TDocType = Record
comObject : TGUID;
className : String;
filter : string;
dockKind : integer;
end;
const
noGuid = '{00000000-0000-0000-0000-000000000000}';
docTypes : array[0..2] of TDocType = (
(comObject:noguid; className:'WORD.Application'; filter:'MS-Word(*.doc)|*.doc|'; dockKind:dkWord),
(comObject:noguid; className:'Excel.Application'; filter:'MS-Excel(*.xls)|*.xls|'; dockKind:dkExcel),
(comObject:'{26319A34-0ADB-4F04-8EFD-4E6679644879}'; filter:'HWP Document(*.hwp)|*.hwp|'; dockKind:dkHwp )
);
var
checkVal:OleVariant;
I: Integer;
begin
Result := 'Image All(*.jpg;*.jpeg;*.gif;*.png;*.bmp;*.pcx;*.tif;*.tiff;*.psd;*.pdd)|*.jpg;*.jpeg;*.gif;*.png;*.bmp;*.pcx;*.tif;*.tiff;*.psd;*.pdd|';
for I := Low(docTypes) to High(docTypes) do
begin
try
if GuidToString(docTypes[i].comObject) = noGuid then
checkVal := CreateOleObject(docTypes[i].ClassName)
else
checkVal := CreateComObject(docTypes[i].comObject);
checkVal := Unassigned;
Result := Result + docTypes[i].filter;
except
RemoveFileDocKind(docTypes[i].dockKind);
end;
end;
Result := Result + 'Adobo PDF File(*.pdf)|*.pdf|PostScript(*.ps)|*.ps|Encapsulated PostScript(*.eps)|*.eps|';
end;
|
역시 프로그램에는 정답이 없는것 같습니다.
고수와 하수는 코드 하나 차이라고 하더니 간단한 함수 하나를 만들때도 한번 더 생각하면 더 간결하고 좋은 코드가 나온다는것을 배우고 갑니다.
앞으로도 기회가 되면 이런 좋은 글 많이 올려주세요^^
그럼 오늘도 좋은하루되세요^^