![]() |
AW: TidTCPCLient erzeugt Stack-Overflow
Vielen Dank TiGü, hatte mich aber schon für EurekaLog entschieden - muß ich nur noch installieren.
Das Ändern des Disconect / Connect in die if Sequenz hat nichts gebracht ... nun werde ich versuchen, ob EurekaLog was heraus bringt! .. und ich muss dringend was essen :roll: .... |
AW: TidTCPCLient erzeugt Stack-Overflow
Probiere er einmal das hier aus:
Delphi-Quellcode:
procedure TForm1.timScanTimer( Sender: TObject );
begin timScan.Enabled := false; // Timer anhalten try // nix im Buffer, dann brauche ich auch nicht fragen ... if tcpClient.IOHandler.InputBufferIsEmpty then Exit; // tschüss bis später tag := 5; Inc( intLine ); // Durchläufe zählen Label1.Caption := IntToStr( intLine ); // Durchläufe anzeigen // Application.ProcessMessages; tcpClient.IOHandler.CheckForDisconnect( ); // ist die Verbindung noch da? strLine := tcpClient.IOHandler.ReadLn; // Inhalt nach Zwischenvariable tcpClient.Disconnect; // Client abschalten try if strLine <> '' then begin // ein Barcode wurde erkannt memLog.Lines.Add( TimeToStr( now( ) ) + strLine ); // Barcode in Memo schreiben strLine := ''; // Zwischenvariable leeren end; finally tcpClient.Connect; // und Client wieder anschalten end; finally timScan.Enabled := true; // Timer wieder starten end; end; |
AW: TidTCPCLient erzeugt Stack-Overflow
Eigentlich sollte wirklich TIdTCPServer das Richtige für die Anwendung sein. Der Barcodescanner schickt in der Regel einfach den gelesenen Barcode als Zeichenkette. Im OnExecute wird einfach gewartet bis Daten kommen und fertig.
Du verwechselt da Client und Server. Wenn deine Anwendung der Client ist, sollte das in etwa so ablaufen: Anwendung (Client) -> Scanner (Server) : Neue Daten? Scanner (Server) -> Anwendung (Client) : Barcode123 Also, sollte der Scanner wirklich der Server sein, dann müsste deine Anwendung die Daten anfragen. Du machst aber nichts anderes, als zyklisch den Empfangspuffer zu fragen, ob eine neue Zeichenkette angekommen ist. |
AW: TidTCPCLient erzeugt Stack-Overflow
@ Sir Rufo
Ich danke Euch für die Mühe! Die folgende Sequenz musste ich herausnehmen, da damit gar keine Daten mehr ankamen.
Delphi-Quellcode:
Aber mit Deiner Version läuft die Software bisher seit 11:24 Uhr - das hat sie noch nie getan!
// nix im Buffer, dann brauche ich auch nicht fragen ...
if tcpClient.IOHandler.InputBufferIsEmpty then Exit; // tschüss bis später @ divBy0 Die Vorgabe, dass der Scanner der Server ist, stammt aus Konfiguration des Scanners. Und daher habe ich einen Client verwendet. Um den Scanner zum Client zu machen, muss ich mir die Konfiguration des Scanners ansehen. Wenn das ginge, könnte ich einen neuen Test programmieren, bei dem meine Software als Server fungiert. |
AW: TidTCPCLient erzeugt Stack-Overflow
Vergiss' es, Denkfehler.
|
AW: TidTCPCLient erzeugt Stack-Overflow
Hallo noch einmal!
Ich bedanke mich bei Sir Rufo, und allen Anderen, die mir wertvolle Tipps gegeben haben! Leider kann ich das Projekt nicht zu Ende bringen - ob wohl es schon super gut lief! Vielen Dank Beste Grüße Rolf |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:10 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