線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:918
推到 Plurk!
推到 Facebook!

將事件指向自定義的過程問題。

答題得分者是:hagar
cxg
中階會員


發表:116
回覆:192
積分:76
註冊:2004-02-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-06-19 12:01:45 IP:222.35.xxx.xxx 未訂閱
我定義了一個過程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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-06-19 12:11:56 IP:202.39.xxx.xxx 未訂閱
要把 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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-06-19 12:49:45 IP:222.35.xxx.xxx 未訂閱
我這樣時過,是沒問題。但我要把他做成DLL中的函數,那應該怎麽做呢?謝謝!
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-06-19 12:56:24 IP:202.39.xxx.xxx 未訂閱
繼承一個 TObject,不知行否?
type
  TMyObject = class
    PROCEDURE CSpVoiceStartStream(Sender: TObject; StreamNumber: Integer; StreamPosition: OleVariant);
  end;    
cxg
中階會員


發表:116
回覆:192
積分:76
註冊:2004-02-12

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-06-19 13:38:54 IP:222.35.xxx.xxx 未訂閱
引言: 繼承一個 TObject,不知行否?
type
  TMyObject = class
    PROCEDURE CSpVoiceStartStream(Sender: TObject; StreamNumber: Integer; StreamPosition: OleVariant);
  end;    
謝謝版主,已經成功了。
系統時間:2024-05-18 13:28:31
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!