AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein trennen von Strings ( escape des trennzeichens )
Thema durchsuchen
Ansicht
Themen-Optionen

trennen von Strings ( escape des trennzeichens )

Ein Thema von Arnulf · begonnen am 4. Mär 2007 · letzter Beitrag vom 4. Mär 2007
Antwort Antwort
Arnulf

Registriert seit: 28. Okt 2004
Ort: Wien
271 Beiträge
 
#1

trennen von Strings ( escape des trennzeichens )

  Alt 4. Mär 2007, 13:04
Hallo
Im Prinzip will ich strings/streams whatever über tcp sockets schicken.
Jetzt hab ich mir ein eigenes Protokoll zusammmengebastelt.

der einfachheit halber hab ich chr(0) bzw. #0 als trennzeichen benutzt.

in meiner send routine cipher ich den string und escape alle möglichen #0 ( mach daraus ein #0#0 )zeichen die vorkommen.
hänge dann ein #0 als trenner an und verschicke das.

aufgrund meines cipherns kann ich aber nicht garantieren, das nicht am anfang des strings auch ein #0 steht.
jetzt könnte es also passieren, das so etwas verschickt wird:

verschickt werden soll:
Zitat:
"string1" "#0string2"
also schaut das mit escape so aus:
Zitat:
"string1#0" "#0#0string2#0".
das würde in einem blöden fall, wenn diese beiden zusammenkommen und die sockets die nachricht zusammenfassen bei mir dann aber so herauskommen

Zitat:
"string1#0#0#0" "string2#0"
gibt es dazu irgendwelche ideen?.

lg
Arnulf
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: trennen von Strings ( escape des trennzeichens )

  Alt 4. Mär 2007, 13:30
Hallo Arnulf,

auf der Ebene der Textdaten kannst du problemlos mit Terminator- und Delimiterzeichen arbeiten - wobei ich nicht unbedingt NUL verwenden würde sondern eher STX, ETX und RS. Nach dem Verschlüsseln hast du binäre Datenpakete, wenn ich dich richtig verstehe. Ich würde das als eine weitere Kommunikationsschicht mit eigenem Protokoll betrachten und eine Längeninformation voranstellen.

Grüße vom marabu
  Mit Zitat antworten Zitat
Arnulf

Registriert seit: 28. Okt 2004
Ort: Wien
271 Beiträge
 
#3

Re: trennen von Strings ( escape des trennzeichens )

  Alt 4. Mär 2007, 13:44
servus marabu

Zitat:
Ich würde das als eine weitere Kommunikationsschicht mit eigenem Protokoll betrachten und eine Längeninformation voranstellen.
Darüber könnte ich natürlich nachdenken - aber bisher hab ichs mir leicht gemacht .....
alldering müssten die längeninformationen dann eine konstante länge haben also 10 zeichen integer oder sowas und das unkodiert, das würde das problem natürlich lösen.

aber als delimiter #0#1 zu verwenden würde vermutlich auch gehen.

hat mir gerade ein freund empfohlen..
lg
Arnulf
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: trennen von Strings ( escape des trennzeichens )

  Alt 4. Mär 2007, 14:21
NUL ist als Steuerzeichen selbstverständlich möglich, aber da dieses Zeichen von (und nicht nur von) Delphi bereits intern als Terminator für Zeichenketten verwendet wird, bedarf es dann einer erhöhten Aufmerksamkeit bei der Handhabung. Nur deshalb würde ich auf dieses Zeichen auf der Textebene verzichten.

Die Längeninformation musst du nicht als zehnstellige Zeichenkette voranstellen, es genügen auch DWORD oder QWORD. Wenn du dein Protokoll so aufbaust, dass zuerst ein Byte die Längeninformation ankündigt (0: keine Längeninfo, sondern zeichenterminierter Text; 4: DWORD mit Längeninfo und nachfolg binäre Daten), dann machst du es dir sicher noch leichter als bisher.

Und wenn du einen String aufbaust, der ein JPG-File darstellen soll, dann drückst du die Performanz gewaltig, wenn du jedes Zeichen einzeln hinzufügst. StringReplace() oder eine Vorberechnung der resultierenden Länge ist da deutlich schneller: klick

Freundliche Grüße
  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 09:21 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