Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi IdTelnet mit ConsoleApp (https://www.delphipraxis.net/196725-idtelnet-mit-consoleapp.html)

myicq 12. Jun 2018 23:17

IdTelnet mit ConsoleApp
 
Hallo alle,

ich möchte gern under eine Console App Daten aus eine Scanner auslesen (industrieller 2D scanner, nicht office-Pagescanner.) Scanner ist Host, ich verbinde mit Telnet.

Geht unter test mit VCL ohne issues.

Problem ist: wie mache ich eine Event-Procedure für "OnDataAvailable" in Console-App ?

Mein Versuch soweit:

Delphi-Quellcode:
program project_console_scanner;

{$APPTYPE CONSOLE}

uses
  SysUtils,
  // ----------- telnet stuff
  IdBaseComponent, IdComponent,
  IdTCPConnection, IdTCPClient, IdTelnet;


var
  IdTelnet1   : TIdTelnet;

{-- read the scanner data --}
procedure dataavail(Buffer: String);
...

{--- main program ---}
begin
   idtelnet1 := tIDTelnet.create;

   IdTelnet1.OnDataAvailable := dataavail;  // <<<< geht nicht. "Incompatible types: 'method pointer and regular procedure' "

end.
ich habe auch versucht, wie online gelesen eine class zu erstellen:
Delphi-Quellcode:
class mytelnet
public
   procedure read(buffer: string);
end;

...
IdTelnet1.OnDataAvailable := mytelnet.dataavail;   // wrong type

ist das überhaupt möglich ? Ich übersehe bestimmt irgendwas.

Danke.

Klaus01 13. Jun 2018 07:50

AW: IdTelnet mit ConsoleApp
 
.. the procedure dataavail needs to be part (a method) of a class.

The signature of the event is different then your dataavail procedure:
http://www.e-iter.net/Knowledge/Indy9/007838.html

Best regards
Klaus

TiGü 13. Jun 2018 08:08

AW: IdTelnet mit ConsoleApp
 
Wie soll das kompilieren?

Delphi-Quellcode:
class mytelnet
public
   procedure read(buffer: string);
end;

...
IdTelnet1.OnDataAvailable := mytelnet.dataavail; // wrong type
Versuchs mal so:

Delphi-Quellcode:
TMyTelnet = class
public
   procedure DataAvail(Sender: TIdTelnet; const Buffer: String);
end;

...
var
  mytelnet: TMyTelnet;
begin
  mytelnet := TMyTelnet.Create;  
  IdTelnet1.OnDataAvailable := mytelnet.dataavail;
Doku:
http://www.e-iter.net/Knowledge/Indy9/007834.html#0004
http://www.e-iter.net/Knowledge/Indy9/007838.html

himitsu 13. Jun 2018 09:31

AW: IdTelnet mit ConsoleApp
 
Arbeitet Indy nicht viel mit Messages?

In der VCL behandelt das die VCL, und in der Console mußt du dann eben regelmäßig die anfallenden Windows-Messages abfragen und verarbeiten.
Ebenso Dinge wie z.B. Synchronize und Queue bei den Threads würde das betreffen.


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