當嘗試一個沒有文檔的新組件時,我需要通過它的方法,屬性和事件來試圖找出它可以做什麼。通過IDE的Object Inspector執行此操作有點繁瑣。獲取對象的方法,屬性和事件列表?
是否有一個實用程序以更易讀的格式顯示此列表?
謝謝。
當嘗試一個沒有文檔的新組件時,我需要通過它的方法,屬性和事件來試圖找出它可以做什麼。通過IDE的Object Inspector執行此操作有點繁瑣。獲取對象的方法,屬性和事件列表?
是否有一個實用程序以更易讀的格式顯示此列表?
謝謝。
有RTTI ...
看一下將用於C++ Builder的支持所產生的.HPP。它類似於德爾福單元的接口部分。
(當然,如果你有源代碼,這是沒有意義的,從你的問題出發,我認爲你不需要) – 2009-09-11 08:25:36
當我想知道什麼是可以做的,我閱讀源代碼。類聲明將包含所有方法和屬性的簡潔列表,除非有很多繼承。定義會告訴你想要的方法。
另一件事是聲明一個你感興趣的類型的變量,輸入它的名字和句點,然後按Ctrl +空格來讓Class Completion顯示你能做的所有事情。
+1。我一直傾向於UTSL方法。 – 2009-09-10 19:04:22
您可以使用GExperts附帶的類瀏覽器。
我還建議使用IDE或ModelMaker構建模型圖。它有助於看到視覺關係。
感謝您的提示,但是當打開類瀏覽器時,除了雙擊右窗格中的對象並將其發送到實例創建的行外,沒有什麼可以做的了。 我認爲類瀏覽器會顯示一個對象提供的方法,屬性和事件列表。 – Gulbahar 2009-10-22 07:56:58
在奧比萬克諾比不朽的語言 - 「使用來源」。
閱讀和理解組件(或任何東西)的源代碼以理解它的功能和功能是沒有替代的。
源代碼是Lingua Franca的編程。
我剛使用代碼完成。如果你無法弄清楚組件在屬性和方法的名稱上做了什麼,那麼它可能設計得很差,而且最好不要使用它。另外,既然你問了這個問題,我猜你沒有來源。如果你不這樣做,我再也不會使用這個組件。你只爲自己儲存麻煩。
正如其他人所說,使用來源。另外一個UML工具也會有所幫助。 但是,如果你不想使用它,你可以使用這個程序(你需要德爾福2010年這一點,並且一定要RTTI添加到您的「用途」條款):
procedure DumpProps(aObject: TObject; aList: TStringList);
var
RttiContext: TRttiContext;
RttiType: TRttiType;
I: Integer;
n: integer;
props: TArray<TRttiProperty>;
begin
aList.Clear; //it must be <> nil
RttiType := RttiContext.GetType(aObject.ClassType);
props:=RttiType.GetProperties;
with aList do
begin
Append('');
Append('==========');
Append('Begin Dump');
Append('----------');
for I := Low(props) to High(props) do
begin
try
Append(props[i].Name+': '); //odd construction to see if the Getter blows
n:=Count-1;
Strings[n]:=Strings[n]+props[i].GetValue(aObject).AsString;
except
on E: Exception do
Strings[n]:=Strings[n]+' >>> ERROR! <<< '+E.Message;
end;
end;
end;
end;
以上即可在運行時使用,或者如果您構建菜單向導,則可以在設計時收集信息。
HTH
我認爲他正在設計時尋找信息。 – 2009-09-10 17:01:54
@Mason Wheeler ......嗯......你的意思是簡單地猜測一個組件在做什麼? – smok1 2009-09-10 17:08:29
看起來他正在尋找像Object Inspector這樣的東西,但是「更具可讀性」 – 2009-09-10 17:43:39