AGB  ·  Datenschutz  ·  Impressum  







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

Problem mit TImage

Ein Thema von calibra301 · begonnen am 29. Jun 2016 · letzter Beitrag vom 29. Jun 2016
Antwort Antwort
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

AW: Problem mit TImage

  Alt 29. Jun 2016, 09:12
Erst mal in die Doku schauen Delphi-Referenz durchsuchenTThread.Synchronize / Delphi-Referenz durchsuchenTThread.Queue, das sollte die Frage beantworten.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
calibra301

Registriert seit: 20. Mär 2009
97 Beiträge
 
Delphi XE8 Professional
 
#2

AW: Problem mit TImage

  Alt 29. Jun 2016, 09:45
Da reichts bei mir dann wohl nicht...
Auc das was ich an Code-Beispielen ergoogelt hab leuchtet mir nicht ein.

Hab wie gesagt die Server-Komponente einfach aufs Form gepackt und die Funktion OnUDPRead benutzt..

Aus dem Quelltext:
Delphi-Quellcode:
procedure TForm1.ServerUDPRead(AThread: TIdUDPListenerThread;
  const AData: TIdBytes; ABinding: TIdSocketHandle);
var i:Integer;
    Buffer:TIDBytes;
    Settings:TMySettings;
begin
....

end;
Der Rest spielt sich alles unter "TForm1.xxx" ab.

Gruss
Calli
( der nun mal weiterwühlt.. )
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Problem mit TImage

  Alt 29. Jun 2016, 09:53
Ein simples Beispiel wäre z.B. das hier:
Delphi-Quellcode:
procedure TForm1.ServerUDPRead(AThread: TIdUDPListenerThread;
  const AData: TIdBytes; ABinding: TIdSocketHandle);
var i:Integer;
    Buffer:TIDBytes;
    Settings:TMySettings;
begin
  
  TThread.Synchronize( nil,
    procedure
    begin
      Edit1.Text := Length( AData );
    end );

end;
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
calibra301

Registriert seit: 20. Mär 2009
97 Beiträge
 
Delphi XE8 Professional
 
#4

AW: Problem mit TImage

  Alt 29. Jun 2016, 10:11
Brmpf...

habs nur abgeändert auf
Delphi-Quellcode:
begin

   TThread.Synchronize( nil,
     procedure
     begin
       i := Length( AData );
     end );

end;
und vor dem i:=Length... nen Breakpoint gesetzt.
Send ich nun was per UDP MÜSSTE er da doch anhalten...tut er aber nicht...

EDIT: Bei der Serverkomponente ist Threaded Event:=true;

Gruss
Calli

Geändert von calibra301 (29. Jun 2016 um 10:48 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.811 Beiträge
 
Delphi 12 Athens
 
#5

AW: Problem mit TImage

  Alt 29. Jun 2016, 10:44
Kurze Zwischenfrage zum Verständnis: Wieso ist die VCL-Ereignisbehandlungsroutine der UDP-Komponente als eigener Thread zu bewerten? Das klingt in meinen Ohren falsch.

Edith sah eben, es geht um Indy... carry on. Schön ist es dennoch nicht.

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: Problem mit TImage

  Alt 29. Jun 2016, 11:04
Kurze Zwischenfrage zum Verständnis: Wieso ist die VCL-Ereignisbehandlungsroutine der UDP-Komponente als eigener Thread zu bewerten? Das klingt in meinen Ohren falsch.

Edith sah eben, es geht um Indy... carry on. Schön ist es dennoch nicht.
Mit INDY hat das nur nebensächlich etwas zu tun. Der Thread-Kontext in dem die Methoden aufgerufen werden wird nicht durch die Klasse festgelegt, sondern durch den Aufrufer der Methode.

Eine Server Komponente (idR für eine Verbindung zu 1+ Clients) läuft entweder sehr schlecht oder pro Client-Verbindung in einem Thread. Ob die Komponente jetzt von INDY oder wem auch immer ist, ist dabei egal
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.811 Beiträge
 
Delphi 12 Athens
 
#7

AW: Problem mit TImage

  Alt 29. Jun 2016, 11:16
Ich will den Thread nicht "hijacken" man möge mich also bremsen/zurechtweisen/strafen.
In diesem Beispiel geht es um UDP. Je nach Komponente ist die Implementierung eines UDP-Servers Multithreading in Eigenverantwortung (zB Indy) oder in Komponentenverantwortung (zB ICS). Nach meinem Verständnis der VCL ist letzteres eher der "Delphi-way". Das "blutige" ist weggekapselt, der Entwickler muss sich keine Gedanken darum machen. Darum mein "ach, es ist ja Indy".

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
Antwort Antwort


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 01:14 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz