TBytes nach char* oder ähnlich
-
Ich verwende eine Indy UDO Komponente mit dem Prototyp:
void __fastcall TForm1::IdUDPServer1UDPRead(TObject *Sender, TBytes AData, TIdSocketHandle *ABinding)
weis mit jemand einen Rat wie ich die TBytes in irgendwas anderes (wie char*) konvertieren kann?
An die Länge komm ich mit AData.Length ran, aber wie an die Daten?
-
Hallo,
Dafür scheint die Klasse TEncoding mit deren Methode GetString zuständig zu sein.
[url]http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/delphivclwin32/!!OVERLOADED_GetString_SysUtils_TEncoding.html[/url]
-
Hier die Definition:
typedef System::DynamicArraySystem::Byte TBytes;In einer TBytes-Variablen (AData) sind also Daten vom Typ BYTE(unsigned char) gespeichert.[code="cpp"]
Der Zugriff erfolgt über den operator[].
z.B.: AData[3]->Zugriff auf das BYTE an Index-Position 3.
Die Umwandlung nach char * kann z.B. erfolgen:char * TByteNachChar(TBytes AData)
{
int max=AData.Length;
char *buffer;
try
{
buffer= new char[max];
for(i=0;i<max;i++) buffer[i]=AData[i];
}
catch(...)
{
//allgemeine Fehlerbehandlung
buffer=NULL;
}
return buffer;
}Nach Benutzung Freigabe durch delete [] nicht vergessen!!