對於Pascal來說,我相對較新,雖然我對語言有一個公正的理解,但仍然有些東西我不知道如何實現。我遇到了這個問題,在我花了幾個小時在網上尋找類似的案例之後,我沒有發現任何東西。我希望這個問題是公平的,因爲,老實說,我不知道如何解決這個問題。關於免費Pascal的程序
這是事情。
我有一個應用程序動態創建文本框(在這種情況下,文本編輯),並將它們添加到面板顯示。事情是,我需要對新創建的元素執行一些程序。我添加了一個新的程序在我的應用程序(這是僅用於解釋目的):
procedure Demo_Procedure(i: integer, a: String);
然後我繼續「開發」我的程序表中的「執行」部分下方。現在
procedure Demo_Procedure(i: integer, a: String);
begin
ShowMessage(a, ' ' ,i);
end;
,我的動態創建的元素我嘗試設置「OnKeyDow」事件來運行我的新程序(這是什麼我不知道A-如果可以做到或B-如何做到這一點)
NewlyButton.OnClick:= Demo_Procedure(5, 'Hi');
我得到不同的錯誤取決於我怎樣調用我的程序。例如:
如果我不喜歡這樣寫道:Demo_Procedures(5,「你好」),它說:
Error: Incompatible types: got "untyped" expected "procedure variable type of procedure(TObject,var Word,TShiftState) of object;Register>"
現在,研究圍繞我發現一些人把一個「@」之前調用方法,唯一的區別是這次不是說「無類型」,而是說它得到了「過程變量類型的過程(AnsiString,LongInt)」對象「並且它期望與之前一樣(過程(TObject,var> Word,Tshift ...等)
任何人都可以幫我在這裏?我真的很失落,所以任何幫助將不勝感激。在此先感謝:)
只能分配一個「方法」中,「對象」的一個過程。見[methods](http://www.freepascal.org/docs-html/ref/refse30.html#refsu26.html)。 – 2014-09-03 21:23:13
在Object Pascal中沒有可用的內置語言構造,它可以簡單地創建'lambda'函數,這些函數又可以用作第一類公民以及其他'...對象'函數。你試圖抓住的東西可能是[GoF命令模式](http://delphipterns.blog.com/2011/03/28/command/) – xmojmr 2014-09-04 04:08:29