GetClassListFromBinFile() 함수와 RegisterComponentFromList()함수를 알아볼 시간입니다.
procedure GetClassListFromBinFile(BinFile: String ; ClassList: TStringList);
Var
MemStream : TMemoryStream;
StringStream : TStringStream;
SrcStrignList : TStringList;
Begin
MemStream := TMemoryStream.Create;
MemStream.LoadFromFile(BinFile);
StringStream := TStringStream.Create;
ObjectBinaryToText(MemStream, StringStream);
FreeAndNil(MemStream);
SrcStrignList := TStringList.Create;
SrcStrignList.Text := StringStream.DataString;
FreeAndNil(StringStream);
ClassList.Clear;
ClassList.Duplicates := dupIgnore;
GetClassListFromString(SrcStrignList.Text, ClassList);
FreeAndNil(SrcStrignList);
End;
이 함수는 Bin함수를 불러와 TMemoryStream에 담고
TMemoryStream을 Text로 변환하여 TStringStream에 저장합니다.
그리고 TStringStream을 TStringList에 담으면
TStringList에는 여러분이 만든 Skin의 DFM파일과 같은 내용이 저장됩니다.
그것을 다시 TStringList로 저장한 후에 한 줄 씩 읽어가며
Skin에서 사용된 객체들을 ClassList라는 TStringList에 저장해줍니다.
이렇게 하면 ClassList에는 스킨에서 사용된 객체들의 이름이 저장되어 있을 것입니다.
그런데 이 과정을 또 별도의 함수로 만들었습니다.
GetClassListFromString(SrcStrignList.Text, ClassList);
이 함수가 바로 그것인데요.
이 함수는 다음 글에서 보여드리겠습니다.
|