2013-05-02 34 views
5

Başlıkta olduğu gibi bir şey var mı?Kayıt türleri için ileriye yönelik bildirimler

PFNReaderTranslatedDispatch = function(var msg: TMsg): BOOL; stdcall; 
PFNReaderScroll = function(var prmi: TReaderModeInfo; dx, dy: integer): BOOL; stdcall; 
TReaderModeInfo = record 
    cbSize: DWord; 
    hWnd: THandle; 
    fFlags: DWord; 
    prc: PRect; 
    pfnScroll: PFNReaderScroll; 
    fFlags2: PFNReaderTranslatedDispatch; 
    lParam: DWord; 
end; 
PReaderModeInfo = ^TReaderModeInfo; 

Delphi bilenler bariz sorunu göreceksiniz: Daha önce ben karşılaşmadım an API structure dönüştürme kısmen bu yapmaya çalışıyor ve içine bir şey çalıştırmak ediyorum. Bu konuda nasıl çalışırsın? Gerçekten de

PFNReaderTranslatedDispatch = function(var msg: TMsg): BOOL; stdcall; 
PReaderModeInfo = ^TReaderModeInfo; 
PFNReaderScroll = function(prmi: PReaderModeInfo; dx, dy: integer): BOOL; stdcall; 
TReaderModeInfo = record 
    cbSize: DWord; 
    hWnd: THandle; 
    fFlags: DWord; 
    prc: PRect; 
    pfnScroll: PFNReaderScroll; 
    fFlags2: PFNReaderTranslatedDispatch; 
    lParam: DWord; 
end; 

, açıkça bir (yan-değer) işareti parametresi ile bir var parametre reaplce olabilir:

cevap

9

bu en basit çözüm olduğunu düşünüyorum. Ve TReaderModeInfo'dan önce PReaderModeInfo bildiren bir sorun yoktur.

+0

Teşekkürler! Şimdi uygulamak için! – Glenn1234

+0

Tek yol bu, bu senaryo için de bir kez bir çözüm aradım. Ve sadece işaretçi sürümünü kullanmayı düşünüyorsanız uygulanır. –

+0

Sadece bir not, açık bir işaretçi olmadan işlevi çağırmak önemlidir eğer 'prmi 'bir' var 'parametresi de yapmak mümkün olmalıdır. Elbette tip güvenliğinizi kaybedersiniz, bu yüzden bunu kendim yapmamam gerekir, ancak diğerleri bu yüzden burada belirtilmiş olduğundan emin olabilirler. – hvd