bin gerade dabei mich mit der Einbindung von PortAudio zu beschäftigen. Einiges geht schon, habe aber noch ein Problem.
Die Biblitheken für Portaudio sind ja in C geschrieben und so wird meine Funktion so deklariert:
Code: Alles auswählen
function audioCallback( ...) : CInt32; cdecl;
implementation
function audioCallback( ...) : CInt32; cdecl;
var
...
begin
{berechnungen}
result:= 0;
end;
Code: Alles auswählen
//* Record some audio. -------------------------------------------- */
err:= Pa_OpenDefaultStream( pStream,2, 2,
PA_SAMPLE_TYPE,
SAMPLE_RATE,
FRAMES_PER_BUFFER,
{$ifdef FPC}
PPaStreamCallback( @audioCallback),
{$ELSE}
@audioCallback,
{$ENDIF}
nil );
Nun wollte ich Daten aus der Berechnung im Form1 in einer Paintbox grafisch darstellen.
Da die Funktion nicht Bestandteil von Form1 ist klappt dies natürlich nicht so.
Nun dachte ich, steckst die Funktionsdeklaration einfach zu denen in Form1 und so könnte ich in der Funktion auf die Paintbox zugreifen.
Code: Alles auswählen
TForm1.function audioCallback( ...) : CInt32; cdecl;
Nun gibt es Konflikte mit der falschen Variablendeklaration.
Gibt es einen einfachen Weg die Daten aus der Funktion in ein Objekt von Form1 zu übertragen, oder muss ich mich da mit der Datensynchronisation zwischen Threats beschäftigen. Ist mir leider noch ein Brief mit sieben Siegeln

Gruß Bernd