BYTE-Array in String umwandeln?
-
Hallo Leute,
ich habe ein Array, in dem einzelne Bytes stehen. Dieses möchte ich gern in einen AnsiString umwandeln. Aus dem Netz habe ich folgendes:
BYTE ReadArray[9]; AnsiString csROCode =""; csROCode.Format("0x%X 0x%X 0x%X 0x%X 0x%X 0x%X 0x%X 0x%X",ReadArray[1],ReadArray[2],ReadArray[3],ReadArray[4], ReadArray[5],ReadArray[6],ReadArray[7],ReadArray[8]);
Als Fehler bekomme ich beim Compilieren:
[BCC32 Fehler] E2034 Konvertierung von 'int' nach 'const TVarRec *' nicht möglich
Wie bekomme ich jetzt dieses Bytes in einen String???
Danke...
-
versuche es mal damit:
BYTE ReadArray[9]; AnsiString csROCode; csROCode.sprintf("0x%X 0x%X 0x%X 0x%X 0x%X 0x%X 0x%X 0x%X", (int)ReadArray[1],(int)ReadArray[2],(int)ReadArray[3],....
Format erwartet als zweiten Parameter einen TVarRec, deshalb die Fehlermeldung.
-
versuch es mal damit:
BYTE ReadArray[9]; AnsiString csROCode =""; csROCode.Format("0x%X 0x%X 0x%X 0x%X 0x%X 0x%X 0x%X 0x%X", ARRAYOFCONST((ReadArray[1],ReadArray[2],ReadArray[3],ReadArray[4], ReadArray[5],ReadArray[6],ReadArray[7],ReadArray[8])) );
Das Makro ARRAYOFCONST sollte das TVarRec erstellen.
MfG Stephan
-
@_Stefan_:
Leider bleibt mein AnsiString nach dieser Methode leer (NULL), aber es wir zumindest compiliert.@j.halder:
das mit sprintf() funktioniert soweitNur bekomme ich bei einigen Werten nicht den korrekten Wert angezeigt.
Beispiel: Mein Array hat die Werte0xFB 0x75 0x0E 0x43 0x00 0x01 0x04 0xE0
Nach der Formatierung bekomme ich allerdings nur
0xFB 0x75 0xE 0x43 0x0 0x1 0x4 0xE0
Es werden immer die 0 (Nullen) nach einem 'x' nicht übernommen?
-
Dir ist klar, dass 0x0 und 0x00 derselbe Wert ist? Du hast also nur ein Darstellungsproblem.
0x%02X
-
Ja, ist mir bekannt
Aber es ist ja nicht NUR 0x00 (00=0), sondern es gibt ja auch noch 0x04! Dieser wird als 0x4 dargestellt?
Mit 0x%02X wird alles so dargestellt wie gewünscht
Danke
-
torsten_156 schrieb:
es gibt ja auch noch 0x04! Dieser wird als 0x4 dargestellt?
Was auch derselbe Wert ist...
-
Ja natürlich... Ich Trot...
Danke