AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke TidTCPCLient erzeugt Stack-Overflow
Thema durchsuchen
Ansicht
Themen-Optionen

TidTCPCLient erzeugt Stack-Overflow

Ein Thema von rokli · begonnen am 28. Okt 2014 · letzter Beitrag vom 30. Okt 2014
Antwort Antwort
Seite 2 von 2     12   
rokli

Registriert seit: 21. Mär 2009
Ort: Rödinghausen
301 Beiträge
 
Delphi 10.4 Sydney
 
#11

AW: TidTCPCLient erzeugt Stack-Overflow

  Alt 29. Okt 2014, 09:53
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 ....
Rolf
wenn nicht anders angegeben, schreibe ich zu D7, XE2 und MS SQL - ansonsten fragen Sie ihren Administrator oder einen Operator. Update 06/2020: Delphi 10.4 Sydney
  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
 
#12

AW: TidTCPCLient erzeugt Stack-Overflow

  Alt 29. Okt 2014, 10:25
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;
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 divBy0
divBy0

Registriert seit: 4. Mär 2007
Ort: Sponheim
1.021 Beiträge
 
Delphi XE2 Professional
 
#13

AW: TidTCPCLient erzeugt Stack-Overflow

  Alt 29. Okt 2014, 10:59
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.
Marc
9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt, die 10. summt die Melodie von Tetris... | Wenn das die Lösung ist, dann hätte ich gerne mein Problem zurück! | engbarth.es

Geändert von divBy0 (29. Okt 2014 um 11:03 Uhr)
  Mit Zitat antworten Zitat
rokli

Registriert seit: 21. Mär 2009
Ort: Rödinghausen
301 Beiträge
 
Delphi 10.4 Sydney
 
#14

AW: TidTCPCLient erzeugt Stack-Overflow

  Alt 29. Okt 2014, 12:41
@ 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:
    // nix im Buffer, dann brauche ich auch nicht fragen ...
    if tcpClient.IOHandler.InputBufferIsEmpty
    then
      Exit; // tschüss bis später
Aber mit Deiner Version läuft die Software bisher seit 11:24 Uhr - das hat sie noch nie getan!

@ 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.
Rolf
wenn nicht anders angegeben, schreibe ich zu D7, XE2 und MS SQL - ansonsten fragen Sie ihren Administrator oder einen Operator. Update 06/2020: Delphi 10.4 Sydney
  Mit Zitat antworten Zitat
Benutzerbild von divBy0
divBy0

Registriert seit: 4. Mär 2007
Ort: Sponheim
1.021 Beiträge
 
Delphi XE2 Professional
 
#15

AW: TidTCPCLient erzeugt Stack-Overflow

  Alt 29. Okt 2014, 14:50
Vergiss' es, Denkfehler.
Marc
9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt, die 10. summt die Melodie von Tetris... | Wenn das die Lösung ist, dann hätte ich gerne mein Problem zurück! | engbarth.es

Geändert von divBy0 (29. Okt 2014 um 14:52 Uhr)
  Mit Zitat antworten Zitat
rokli

Registriert seit: 21. Mär 2009
Ort: Rödinghausen
301 Beiträge
 
Delphi 10.4 Sydney
 
#16

AW: TidTCPCLient erzeugt Stack-Overflow

  Alt 30. Okt 2014, 16:04
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
Rolf
wenn nicht anders angegeben, schreibe ich zu D7, XE2 und MS SQL - ansonsten fragen Sie ihren Administrator oder einen Operator. Update 06/2020: Delphi 10.4 Sydney
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 21:54 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