將事件指向自定義的過程問題。 |
答題得分者是:hagar
|
cxg
中階會員 發表:116 回覆:192 積分:76 註冊:2004-02-12 發送簡訊給我 |
我定義了一個過程CSpVoiceStartStream如下,在LOAD_VOICE中把CSpVoice的事件OnStartStream指向自定義的過程CSpVoiceStartStream,編譯時提示如下錯誤信息:
[Error] FUN_CUSTOM.pas(70): Incompatible types: method pointer and regular procedure。 請問我應該怎樣處理,謝謝! VAR
CSpVoice : TSpVoice;
READING : BOOLEAN; PROCEDURE CSpVoiceStartStream(Sender: TObject; StreamNumber: Integer; StreamPosition: OleVariant); implementation PROCEDURE CSpVoiceStartStream(Sender: TObject;
StreamNumber: Integer; StreamPosition: OleVariant);
begin
READING := TRUE;
end; PROCEDURE LOAD_VOICE;
BEGIN
CSpVoice := TSpVoice.Create( NIL);
CSpVoice.OnStartStream := CSpVoiceStartStream;
END;
|
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
要把 PROCEDURE CSpVoiceStartStream(Sender: TObject; StreamNumber: Integer; StreamPosition: OleVariant); 宣告成物件的 method, 例子是宣告為 TForm1 的 method:
unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs; type TForm1 = class(TForm) PROCEDURE CSpVoiceStartStream(Sender: TObject; StreamNumber: Integer; StreamPosition: OleVariant); private { Private declarations } public { Public declarations } end; var Form1: TForm1; CSpVoice : TSpVoice; READING : BOOLEAN; implementation {$R *.DFM} { TForm1 } procedure TForm1.CSpVoiceStartStream(Sender: TObject; StreamNumber: Integer; StreamPosition: OleVariant); begin READING := TRUE; end; PROCEDURE LOAD_VOICE; BEGIN CSpVoice := TSpVoice.Create( NIL); CSpVoice.OnStartStream := CSpVoiceStartStream; END; end. |
cxg
中階會員 發表:116 回覆:192 積分:76 註冊:2004-02-12 發送簡訊給我 |
|
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
|
cxg
中階會員 發表:116 回覆:192 積分:76 註冊:2004-02-12 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |