TThread.Queue hängt bei procedure

Alle Fragen zur Netzwerkkommunikation
Antworten
JCnutz
Beiträge: 2
Registriert: Mi 9. Okt 2024, 11:32
OS, Lazarus, FPC: Win11 , MacOS (L 3.7.0 FPC 3.2.2)
CPU-Target: 64Bit, Apple M1

TThread.Queue hängt bei procedure

Beitrag von JCnutz »

Hallo ich schreibe grade einen kleinen Chat.

Dazu benötige ich folgenden Aufruf:

Code: Alles auswählen

TThread.Queue(
procedure // Hier bleibt der Compiler stehen
begin
//mach irgendwas...
end

);

Bei dem Schlüsselwort procedure bekomme ich den Fehler: Illegal expression.
Ich habe jetzt 3 Wochen gegoogelt, habe aber nichts zu dem Thema gefunden.
Ich habe das schon mal in Delphi probiert da klappt es reibungslos. Jetzt ist die Frage wie mache ich das mit Lazarus

Vielen Dank schon mal im Voraus!

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6514
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: TThread.Queue hängt bei procedure

Beitrag von af0815 »

Soweit ich deinen Code verstehe - anonyme Funktionen/Proceduren gibt es in FPC IMHO (noch) nicht.

Wenn dann ganz klassisch definieren und dem TThread sagen, welche Procedure er im Thread ausführen soll.

https://wiki.freepascal.org/Multithread ... n_Tutorial
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

JCnutz
Beiträge: 2
Registriert: Mi 9. Okt 2024, 11:32
OS, Lazarus, FPC: Win11 , MacOS (L 3.7.0 FPC 3.2.2)
CPU-Target: 64Bit, Apple M1

Re: TThread.Queue hängt bei procedure

Beitrag von JCnutz »

Hallo af0815,
vielen Dank für den Hinweis.

Ich werde es mal auf diese Weise versuchen.
Trotzdem bin ich für jeden weiteren Tip oder alternative Dankbar.

LG

Benutzeravatar
theo
Beiträge: 10699
Registriert: Mo 11. Sep 2006, 19:01

Re: TThread.Queue hängt bei procedure

Beitrag von theo »

af0815 hat geschrieben: Mi 6. Nov 2024, 10:51 Soweit ich deinen Code verstehe - anonyme Funktionen/Proceduren gibt es in FPC IMHO (noch) nicht.
Ist nicht im trunk schon was da?
https://forum.lazarus.freepascal.org/in ... 468.0.html

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6514
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: TThread.Queue hängt bei procedure

Beitrag von af0815 »

theo hat geschrieben: Mi 6. Nov 2024, 11:38
af0815 hat geschrieben: Mi 6. Nov 2024, 10:51 Soweit ich deinen Code verstehe - anonyme Funktionen/Proceduren gibt es in FPC IMHO (noch) nicht.
Ist nicht im trunk schon was da?
Ich werde einen Erstposter sicher nicht an den fpc-trunk verweisen. Nicht wenn er schon 3 Wochen nach einer Lösung "gegoogelt" hat.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
theo
Beiträge: 10699
Registriert: Mo 11. Sep 2006, 19:01

Re: TThread.Queue hängt bei procedure

Beitrag von theo »

af0815 hat geschrieben: Mi 6. Nov 2024, 13:02 Ich werde einen Erstposter sicher nicht an den fpc-trunk verweisen. Nicht wenn er schon 3 Wochen nach einer Lösung "gegoogelt" hat.
:lol:

Naja, die "drei Wochen googlen" halte ich für leicht übertrieben, aber ich verstehe.

Ich meinte mehr so allgemein, bin da auch nicht auf dem Laufenden.

Benutzeravatar
Zvoni
Beiträge: 171
Registriert: Fr 5. Jul 2024, 08:26
OS, Lazarus, FPC: Windoof 10 Pro (Laz 2.2.2 FPC 3.2.2)
CPU-Target: 32Bit
Wohnort: BW

Re: TThread.Queue hängt bei procedure

Beitrag von Zvoni »

af0815 hat geschrieben: Mi 6. Nov 2024, 10:51 Soweit ich deinen Code verstehe - anonyme Funktionen/Proceduren gibt es in FPC IMHO (noch) nicht.
Jein
https://forum.lazarus.freepascal.org/in ... 468.0.html
Further RTL enhancements like the declaration of TProc<> or the addition of a TThread.Queue() that takes a function reference will come in the near future now that the basics on the compiler side are done.
Das ist von Mai 2022
Ein System sie alle zu knechten, ein Code sie alle zu finden,
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.

Warf
Beiträge: 2080
Registriert: Di 23. Sep 2014, 17:46
OS, Lazarus, FPC: Win10 | Linux
CPU-Target: x86_64

Re: TThread.Queue hängt bei procedure

Beitrag von Warf »

Bezüglich anonymer Funktionen muss man dazu sagen, die sind eigentlich nur Syntaktischer Zucker (können absolut nichts mehr was verschachtelte Funktionen nicht auch können), das tatsächlich relevante Feature sind Funktionsreferenzen und capturing.
Der Hauptaufwand, neben den Bugs die noch existieren, ist also das überall wo bisher Methodenpointer genommen wurde, das auf Funktionsreferenzen geändert wird.

Die Umstellung der RTL auf Function References ist schon recht weit im Trunk, also TThread.Queue nimmt mittlerweile function references. Wie der Stand in Lazarus und der LCL weiß ich nicht.
Langer Rede kurzer Sinn, was der Threadersteller hier versucht würde in Trunk, mit den entsprechenden ModeSwitches funktionieren, zumindest Konzeptionell. Das gesagt, Funktionsreferenzen und Capturing haben nach wie vor eine ganze Reihe an Bugs die noch nicht ganz Ausgebügelt sind.
Daher wäre ich vorsichtig Leute auf Trunk zu verweisen für die Nutzung von den neuen Features, denn sie sind noch recht instabil, und am Ende des Tages ists vermutlich deutlich einfacher, es einfach auf die Altmodische weise mit Methodenpointern zu machen, statt sich mit Internalerrors und Crashes rumschlagen zu müssen

marcov
Beiträge: 1102
Registriert: Di 5. Aug 2008, 09:37
OS, Lazarus, FPC: Windows ,Linux,FreeBSD,Dos (L trunk FPC trunk)
CPU-Target: 32/64,PPC(+64), ARM
Wohnort: Eindhoven (Niederlande)

Re: TThread.Queue hängt bei procedure

Beitrag von marcov »

Est ist nicht eine "Umstellung", aber nur eine extra optioneller Overload.

Antworten