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!!


Anmelden zum Antworten