AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

String "beschneiden"

Ein Thema von hirnstroem · begonnen am 1. Nov 2006 · letzter Beitrag vom 1. Nov 2006
Antwort Antwort
hirnstroem

Registriert seit: 21. Sep 2005
297 Beiträge
 
Delphi 2006 Professional
 
#1

String "beschneiden"

  Alt 1. Nov 2006, 14:12
'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
inde deus abest
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: String "beschneiden"

  Alt 1. Nov 2006, 14:15
Hallo,

die Positionen der Hochkommas ermitteln,
und dann per Copy ...

Heiko
Heiko
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#3

Re: String "beschneiden"

  Alt 1. Nov 2006, 14:19
Hallo,

Du könntest erst mal mit Delphi-Referenz durchsuchenTrim die Steuerzeichen links und rechts abschneiden. Dann gehst Du von hinten durch den String und suchst das erste Steuerzeichen. Jetzt musst Du nur noch den String mit Delphi-Referenz durchsuchenCopy zurechschneiden.
Grob sähe das so aus:
Delphi-Quellcode:
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;
Dabei gehe ich aber davon aus, dass am Ende des Strings nur noch Steuerzeichen vorkommen.

@hoika: Die Hochkommas stammen von der IDE und trennen nur die Steuerzeichen von den druckbaren Zeichen.

//Edit: Fehler korrigiert.

Gruß
xaromz
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
hirnstroem

Registriert seit: 21. Sep 2005
297 Beiträge
 
Delphi 2006 Professional
 
#4

Re: String "beschneiden"

  Alt 1. Nov 2006, 14:30
Tschamoi xaromz,

Trim hilft mir unheimlich. Vielen Dank!

Gruss
hirnstroem
inde deus abest
  Mit Zitat antworten Zitat
Reinhard Kern

Registriert seit: 22. Okt 2006
772 Beiträge
 
#5

Re: String "beschneiden"

  Alt 1. Nov 2006, 14:42
Zitat von hirnstroem:
'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
Hallo,

lass es doch einfach die Funktion Pos erledigen:

if Pos (SendeString,EmpfangsString) > 0 then { Senden erfolgreich } Gruss Reinhard
  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 13:16 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