![]() |
String "beschneiden"
'loha Folks,
ich suche nach einer Möglichkeit Strings nach meinen wünschen zu "beschneiden". Über den COM-Port werden dauernd Nachrichten verchickt und vom Empfänger wieder zurückgesendet. Nun kommen die Strings aber nicht so an, wie sie abgeschickt wurden. Ein Beispiel: 'T040404018B1010203040506B6' wird verschickt 'Z'#$D'T040404018B1010203040506B6'#$D kommt zurück. Es ist aber auch möglich, dass Konstrukte wie #$D#$D#$D#7#$D'Z'#$D'T040404018B1010203040506B6'#$ D ankommen. Das Ziel wäre nun den ankommenden String so zu beschneiden, dass alles zwischen dem letzten und dem vorletzten Anführungszeichen ('), abgeschnitten wird, damit die Messages verglichen und bei Fehlern oder ähnlichem gegebenenfalls erneut verschickt werden können. Haut mich, aber ich sehe den Weg nicht, wie das gemacht wird. Grüsse hirnstroem |
Re: String "beschneiden"
Hallo,
die Positionen der Hochkommas ermitteln, und dann per Copy ... Heiko |
Re: String "beschneiden"
Hallo,
Du könntest erst mal mit ![]() ![]() Grob sähe das so aus:
Delphi-Quellcode:
Dabei gehe ich aber davon aus, dass am Ende des Strings nur noch Steuerzeichen vorkommen.
function ProcessString(const Source): String;
var S: String; C: Integer; begin S := Trim(Source); C := Length(S); while (C > 0) do begin if S[C] < #32 then begin Result := Copy(S, C + 1, MaxInt); Exit; end; Dec(C); end; Result := ''; end; @hoika: Die Hochkommas stammen von der IDE und trennen nur die Steuerzeichen von den druckbaren Zeichen. //Edit: Fehler korrigiert. Gruß xaromz |
Re: String "beschneiden"
Tschamoi xaromz,
Trim hilft mir unheimlich. Vielen Dank! Gruss hirnstroem |
Re: String "beschneiden"
Zitat:
lass es doch einfach die Funktion Pos erledigen:
Delphi-Quellcode:
Gruss Reinhard
if Pos (SendeString,EmpfangsString) > 0 then { Senden erfolgreich }
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:12 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