AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Teilstring aus String mit Copy & Pos
Thema durchsuchen
Ansicht
Themen-Optionen

Teilstring aus String mit Copy & Pos

Ein Thema von Tim-94 · begonnen am 14. Jul 2009 · letzter Beitrag vom 14. Jul 2009
Antwort Antwort
Benutzerbild von Tim-94
Tim-94

Registriert seit: 3. Jul 2008
Ort: Hamburg
132 Beiträge
 
Delphi 10.3 Rio
 
#1

Teilstring aus String mit Copy & Pos

  Alt 14. Jul 2009, 19:58
Hi, mein jetziges Problem ist folgendes:
Ich möchte einen Teilstring aus einem Hauptstring auslesen. Ich habe schon viel gesucht und auch gefunden, aber ich komme mit Copy & Pos nicht so ganz klar.

In dem folgenden Beispiel möchte ich den Text ab GetUserName bis einschließlich ComputerName in eine Variable einlesen.

ClientSocket1.Socket.SendText('Client Online -> '+GetUserName+' am PC: '+trim(ComputerName)+' -> Am '+DatetoStr(Date)+' um '+TimetoStr(Time)+' Uhr!'); Mein bisheriger Code, den ich über die Suche gefunden habe, liefert kein Ergebnis. (Der Teilstring ist leer.)
Teilstring:=Trim(Copy(Socket.ReceiveText, Pos('>', Socket.ReceiveText) + 1, Pos('<', Socket.ReceiveText) - Pos('>', Socket.ReceiveText) - 1)); PS: Vielen Dank im vorraus
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#2

Re: Teilstring aus String mit Copy & Pos

  Alt 14. Jul 2009, 20:04
Delphi-Referenz durchsuchenTCustomWinSocket.ReceiveText

Mit jedem Aufruf dieser Methode wird alles bisher empfangene dir zurück gegeben und der Empfangspuffer entsprechend geleert. Damit ergibt sich beim darauffolgenden Aufruf innerhalb deiner Zeile, dass der Rückgabewert höchstwahrscheinlich leer ist, da er noch nichts neues empfangen hat.

Das ganze ist so natürlich recht dumm für dich, aber wir können das umstellen, nur dann bräuchte ich eine Idee von dir woher ich wissen kann wann ich dir alte Daten zurück gebe und wann neue? Also alle 4 Aufrufe immer die zuletzt empfangenen Daten? Oder immer alle Daten? Oder niemals die empfangenen Daten löschen? Dann ist die Frage, ob es dir noch Spass macht mit einer 200 MB Stringvariablen zu arbeiten nach dem dein Chat mal 4 Stunden lief...
  Mit Zitat antworten Zitat
Benutzerbild von Tim-94
Tim-94

Registriert seit: 3. Jul 2008
Ort: Hamburg
132 Beiträge
 
Delphi 10.3 Rio
 
#3

Re: Teilstring aus String mit Copy & Pos

  Alt 14. Jul 2009, 20:08
Diese Prozedur habe ich innerhalb der Prozedur ClientSocket1Read (siehe Quellcode) eingefügt, also müsste somit der Socket.ReceiveText nicht leer sein, da diese Prozedur ja nur ausgeführt wird, wenn der Socket was empfängt.

procedure TForm1.ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#4

Re: Teilstring aus String mit Copy & Pos

  Alt 14. Jul 2009, 20:13
Zitat von Tim-94:
Diese Prozedur habe ich innerhalb der Prozedur ClientSocket1Read (siehe Quellcode) eingefügt, also müsste somit der Socket.ReceiveText nicht leer sein, da diese Prozedur ja nur ausgeführt wird, wenn der Socket was empfängt.
Das du sie dort eingefügt hast, habe ich voraus gesetzt. Aber mein Einwand hast du auch nicht verstanden. Also zählen wir in der folgenden Zeile doch mal die Anzahl der Aufrufe:

Teilstring:=Trim(Copy(Socket.ReceiveText, Pos('>', Socket.ReceiveText) + 1, Pos('<', Socket.ReceiveText) - Pos('>', Socket.ReceiveText) - 1)); Ich zähle dort 4 Aufrufe von Socket.ReceiveText. Stimmst du da mit mir überein?
  Mit Zitat antworten Zitat
Benutzerbild von Tim-94
Tim-94

Registriert seit: 3. Jul 2008
Ort: Hamburg
132 Beiträge
 
Delphi 10.3 Rio
 
#5

Re: Teilstring aus String mit Copy & Pos

  Alt 14. Jul 2009, 20:16
Aso das meinst du, ja klar stimme ich da mit dir überein.
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#6

Re: Teilstring aus String mit Copy & Pos

  Alt 14. Jul 2009, 20:22
Zitat von Tim-94:
Aso das meinst du, ja klar stimme ich da mit dir überein.
Daraus folgt, dass der erste Aufruf die Daten liefert und die Wahrscheinlichkeit hoch ist, dass die folgenden Aufrufe nur leere Strings liefern, da noch nichts neues empfangen wurde...
  Mit Zitat antworten Zitat
Benutzerbild von Tim-94
Tim-94

Registriert seit: 3. Jul 2008
Ort: Hamburg
132 Beiträge
 
Delphi 10.3 Rio
 
#7

Re: Teilstring aus String mit Copy & Pos

  Alt 14. Jul 2009, 20:32
Das Problem hat sich schon geklärt, aber trotzdem vielen Dank.

ShowMessage(Copy(Log.Lines[Log.Lines.Count-1], Pos('>', Log.Lines[Log.Lines.Count-1]) + 1, Pos('<', Log.Lines[Log.Lines.Count-1]) - Pos('>', Log.Lines[Log.Lines.Count-1]) - 1));
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#8

Re: Teilstring aus String mit Copy & Pos

  Alt 14. Jul 2009, 20:59
Zitat von Tim-94:
Das Problem hat sich schon geklärt, aber trotzdem vielen Dank. :-D

ShowMessage(Copy(Log.Lines[Log.Lines.Count-1], Pos('>', Log.Lines[Log.Lines.Count-1]) + 1, Pos('<', Log.Lines[Log.Lines.Count-1]) - Pos('>', Log.Lines[Log.Lines.Count-1]) - 1));
Langsamer kann der auch schon nicht mehr programmiert werden. Schonmal was von lokalen Variablen gehört?
  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 10:51 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