AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Callbackfunktion in Klasse

Ein Thema von Eichhoernchen · begonnen am 16. Okt 2006 · letzter Beitrag vom 16. Okt 2006
 
Eichhoernchen

Registriert seit: 22. Apr 2004
Ort: Hagen
322 Beiträge
 
Turbo Delphi für Win32
 
#1

Callbackfunktion in Klasse

  Alt 16. Okt 2006, 10:01
Hey,
ich bin gerade dabei etwas mit Klassen rumzuexperimentieren, nun hab ich aber ein Problem:
Eine MMSystem Funktion will ne Callbackfunktion haben, soweit ist das ja nicht schwer, dass alles klappt wenn
ich die Callbackfunktion aus der Klasse auslager, wenn ich die Funktion z.B. als protected in die Klasse aufnehme, kann ich sie
nicht als Callbackfunktion nutzen.

Ich zeig euch mal was ich meine:

So klappt es:
Delphi-Quellcode:
procedure midiInCallback(aMidiInHandle: PHMIDIIN; aMsg: Cardinal; aData, aMidiData, aTimeStamp: integer);
begin
{...}
end;

function TSysEx.Open(const device: integer): integer;
begin
  Result := midiInOpen(@fHandle, device, Cardinal(@midiInCallback), device, CALLBACK_FUNCTION);
  {...}
end;
Da das ganze aber eine Klasse werden soll, denke ich sollte die Callbackfunktion auch in die Klasse rein, von daher hab ich das hier versucht:

Delphi-Quellcode:
  TSysEx = class(TObject)
  private
    fHandle: THandle;
    {...}
  protected
    procedure midiInCallback(aMidiInHandle: PHMIDIIN; aMsg: cardinal; aData, aMidiData, aTimeStamp: integer);
  public
    {...}
    function Open(const device: integer): integer;
    {...}
  published
    {...}
  end;


 {...}
procedure TSysEx.midiInCallback(aMidiInHandle: PHMIDIIN; aMsg: cardinal; aData, aMidiData, aTimeStamp: integer);
begin
  {...}
end;


function TSysEx.Open(const device: integer): integer;
begin
  Result := midiInOpen(@fHandle, device, Cardinal(@Self.midiInCallback), device, CALLBACK_FUNCTION);
  {...}
end;
Jetzt gibt der Compiler aber einen Fehler aus: [Pascal Fehler] midi.pas(103): E2036 Variable erforderlich Aber ich versteh nicht, warum das nicht klappt... gibt es da einen Trick?
Die SuFu hab ich schon bemüht, hab auch nen paar Ergebnisse gehabt, da wurde was von asm Tricks gesagt...
aber verstanden hab ich das nicht so ganz, wo genau das Problem bei der Sache liegt und wie es genau zu lösen ist.


Danke für die Antworten

Eichhoernchen
Jan
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:49 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz