![]() |
Teilstring aus String mit Copy & Pos
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.
Delphi-Quellcode:
Mein bisheriger Code, den ich über die Suche gefunden habe, liefert kein Ergebnis. (Der Teilstring ist leer.)
ClientSocket1.Socket.SendText('Client Online -> '+GetUserName+' am PC: '+trim(ComputerName)+' -> Am '+DatetoStr(Date)+' um '+TimetoStr(Time)+' Uhr!');
Delphi-Quellcode:
PS: Vielen Dank im vorraus :-D
Teilstring:=Trim(Copy(Socket.ReceiveText, Pos('>', Socket.ReceiveText) + 1, Pos('<', Socket.ReceiveText) - Pos('>', Socket.ReceiveText) - 1));
|
Re: Teilstring aus String mit Copy & Pos
![]() 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... |
Re: Teilstring aus String mit Copy & Pos
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.
Delphi-Quellcode:
procedure TForm1.ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
|
Re: Teilstring aus String mit Copy & Pos
Zitat:
Delphi-Quellcode:
Ich zähle dort 4 Aufrufe von Socket.ReceiveText. Stimmst du da mit mir überein?
Teilstring:=Trim(Copy(Socket.ReceiveText, Pos('>', Socket.ReceiveText) + 1, Pos('<', Socket.ReceiveText) - Pos('>', Socket.ReceiveText) - 1));
|
Re: Teilstring aus String mit Copy & Pos
Aso das meinst du, ja klar stimme ich da mit dir überein.
|
Re: Teilstring aus String mit Copy & Pos
Zitat:
|
Re: Teilstring aus String mit Copy & Pos
Das Problem hat sich schon geklärt, aber trotzdem vielen Dank. :-D
Delphi-Quellcode:
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));
|
Re: Teilstring aus String mit Copy & Pos
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:33 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