AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi TBytes in String umwandeln und umgekehrt mit Indy 10
Thema durchsuchen
Ansicht
Themen-Optionen

TBytes in String umwandeln und umgekehrt mit Indy 10

Ein Thema von Alex_ITA01 · begonnen am 10. Aug 2007 · letzter Beitrag vom 13. Aug 2007
Antwort Antwort
Alex_ITA01

Registriert seit: 22. Sep 2003
1.123 Beiträge
 
Delphi 12 Athens
 
#1

TBytes in String umwandeln und umgekehrt mit Indy 10

  Alt 10. Aug 2007, 15:24
Hallo zusammen,
ich habe folgendes Problem.

Ich schicke von einem "TIdTCPClient" ein Array of Byte (TBytes) an einen Server mit dem Befehl:

TCPClient.IOHandler.WriteLn(BytesToString(TCPSendMsg)); Da ich anscheind beim Server kein Array of Byte empfangen kann, wandel ich es beim Client vorher in ein String um.
Diesen String lese ich beim Server ein:

Delphi-Quellcode:
with AContext.Connection.IOHandler do
begin
  InputMsg := ReadLn ('', 1000);
end;
Jetzt liegt mir das array of Bytes als String vor aber ich brauche wieder ein array.
Wie bekomme ich das hin? Gibt es eine umkehrfunktion zu BytesToString?

Danke im voraus.
MFG Alex
Let's fetz sprach der Frosch und sprang in den Mixer
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: TBytes in String umwandeln und umgekehrt mit Indy 10

  Alt 10. Aug 2007, 15:32
ein String ist indirekt auch ein Array of Byte. Es stehen eben mehrere bytes hintereinander.

Dementsprechend genügt es das Ziel (Array oder String) auf die benötigte Speichergröße mit SetLength zu setzen und dann mit move den Speicher einfach zu kopieren.

Array zu String:
Delphi-Quellcode:
SetLength(DeinString, Length(DeinArray));
move(DeinArray[0], DeinString[1], Length(DeinArray));
String zu Array
Delphi-Quellcode:
SetLength(DeinArray, Length(DeinString));
move(DeinString[1], DeinArray[0], Length(DeinString));
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Alex_ITA01

Registriert seit: 22. Sep 2003
1.123 Beiträge
 
Delphi 12 Athens
 
#3

Re: TBytes in String umwandeln und umgekehrt mit Indy 10

  Alt 10. Aug 2007, 15:38
Stimmt, da war ja was
Danke, geht
Let's fetz sprach der Frosch und sprang in den Mixer
  Mit Zitat antworten Zitat
marabu

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

Re: TBytes in String umwandeln und umgekehrt mit Indy 10

  Alt 10. Aug 2007, 18:21
Hallo,

wenn keine Null-Werte im Byte-Array vorkommen, dann macht Delphi das alles selbständig:

Delphi-Quellcode:
type
  TIdBytes = array of Byte;

var
  a: TIdBytes;
  s: string;

begin
  s := String(a);
  a := TIdBytes(s);
end;
Wenn aber Null-Werte vorkommen, dann kann eine Wandlung von String in Array und zurück - egal wie man es macht - zu hässlichen Fehlern führen.

Zitat von Alex:
... Da ich anscheind beim Server kein Array of Byte empfangen kann, wandel ich es beim Client vorher in ein String um. ...
ReadBytes() sieht für mich so aus, wie eine Methode zum Empfangen eines Array of Byte. Und wenn es das nicht gäbe, so wäre die client-seitige Wandlung in einen String auch nicht nötig. Eigentlich geht es immer nur darum, ob man den Daten eine Größenangabe voraus schickt oder einen Delimiter hinten anstellt.

Grüße vom marabu
  Mit Zitat antworten Zitat
Alex_ITA01

Registriert seit: 22. Sep 2003
1.123 Beiträge
 
Delphi 12 Athens
 
#5

Re: TBytes in String umwandeln und umgekehrt mit Indy 10

  Alt 13. Aug 2007, 13:57
Hallo Marabu,
also ReadBytes finde ich nicht im Server. Wo hast du das gesehen?
MFG Alex
Let's fetz sprach der Frosch und sprang in den Mixer
  Mit Zitat antworten Zitat
marabu

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

Re: TBytes in String umwandeln und umgekehrt mit Indy 10

  Alt 13. Aug 2007, 14:04
Hallo Alex,

ReadBytes() ist eine Methode von TIdIoHandler - wie die von dir verwendete Methode ReadLn() auch.

Freundliche Grüße
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#7

Re: TBytes in String umwandeln und umgekehrt mit Indy 10

  Alt 13. Aug 2007, 14:04
Zitat von Alex_ITA01:
Hallo Marabu,
also ReadBytes finde ich nicht im Server. Wo hast du das gesehen?
MFG Alex
Hi,
da der marabu sich irgendwie immer Gedanken macht, bevor er was postet, kannst Du eigentlich immer davon ausgehen, dass er sich auf das von Dir verwendete Beispiel bezieht (oder explizit sagt, wo Du welche Funktion findest). Deshalb einfach mal beim TIdIOHandler nachschauen (den Du oben benutzt), der kennt ReadBytes laut Indy10-Doku.

Gruß Der Unwissende

[edit]
kein roter Kasten, hm, hast Du es halt doppelt
[/edit]
  Mit Zitat antworten Zitat
Alex_ITA01

Registriert seit: 22. Sep 2003
1.123 Beiträge
 
Delphi 12 Athens
 
#8

Re: TBytes in String umwandeln und umgekehrt mit Indy 10

  Alt 13. Aug 2007, 14:15
Hallo,
ich teste auch meistens die Sachen die mir gepostet werden und wie ihr im Screenshot seht, gibt es KEIN ReadBytes.
Daher wollte ich wisse, woher ihr diese Funktion habt?!

MFG Alex
Miniaturansicht angehängter Grafiken
test_186.jpg  
Let's fetz sprach der Frosch und sprang in den Mixer
  Mit Zitat antworten Zitat
Alex_ITA01

Registriert seit: 22. Sep 2003
1.123 Beiträge
 
Delphi 12 Athens
 
#9

Re: TBytes in String umwandeln und umgekehrt mit Indy 10

  Alt 13. Aug 2007, 14:17
Mein Fehler. Sorry
Die Funktion gibt es

Danke nochmals.
MFG Alex
Let's fetz sprach der Frosch und sprang in den Mixer
  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 06:34 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