Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   FreePascal Problem mit Timer -> wird aktiviert, aber nicht ausgeführt (https://www.delphipraxis.net/199834-problem-mit-timer-wird-aktiviert-aber-nicht-ausgefuehrt.html)

Julian M. 24. Feb 2019 16:04

Problem mit Timer -> wird aktiviert, aber nicht ausgeführt
 
Hallo,

folgendes Problem:
Ich aktiviere einen TImer, dieser ist danach auch enabled, jedoch führt er sein OnTimer Event nicht aus.
Die Ursache muss in der Methode liegen, aus der ich den Timer aktiviere.

Delphi-Quellcode:
procedure stallsync(lw1, lw2, status:LONGWORD; ptr: pointer); stdcall;
begin
  Form1.timer1.enabled := status = 0; // 0 = stall 1= resume
end;


BASS_ChannelSetSync(stream, BASS_SYNC_STALL, 0, @stallsync, nil);
BASS_ChannelPlay(stream,false);
Stallsync wird von der Bass.dll aufgerufen, wenn der Internetradio stream unterbrochen wurde oder fortgesetzt wird (ich simuliere es durch ziehen des Ethernetkabels)
Leider wird der Timer nicht ausgeführt, obwohl die Enabled-Eigenschaft nach überprüfung eindeutig gesetzt wird.
Wenn ich den timer anderweitig aktivieren, funktioniert es hingegen.

Freue mich über Hilfe,

Gruß Julian

Uwe Raabe 24. Feb 2019 17:15

AW: Problem mit Timer -> wird aktiviert, aber nicht ausgeführt
 
Kann es sein, daß der Aufruf aus der DLL in einem anderen Thread erfolgt? Dann müsstest du das in den VCL-Thread synchronisieren.

Welche Delphi-Version?

Julian M. 24. Feb 2019 18:07

AW: Problem mit Timer -> wird aktiviert, aber nicht ausgeführt
 
Sorry, vergessen: ich benutze Freepascal/Lazarus.

Leider weiß ich nicht genau, welcher Thread es ist, welcher die Prozedur stallsync aufruft. Es müsste der Thread sein, in dem auch BASS_ChannelSetSync aufgerufen wird, oder?

Edit: Habe es nun mit dem Mainthread synchronisiert und es funkioniert, danke!!

Gruß,
Julian

Delphi.Narium 25. Feb 2019 09:37

AW: Problem mit Timer -> wird aktiviert, aber nicht ausgeführt
 
Schau Dir mal die Beispielprogramme zur BASS.dll an, da gibt es auch Routinen zur Synchronisierung. Das musst Du analog dazu implementieren.

Oder arbeite diese (http://www.gausi.de/memp-1.html) Anleitung durch, dort solltest Du (annähernd) alle Fragen rund um die Bass.dll und deren Nutzung beantwortet bekommen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:11 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