Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Konvertierung Byte in String
tinewww - Mi 13.09.06 13:59
Titel: Konvertierung Byte in String
Hallo,
habe eine Funktion, die mir einen Wert als array [] of byte zurückliefert. Für die weitere Verarbeitung möchte ich diesen Wert aber in eine Stringvariable umwandeln. Gibt es dafür eine Funktion? Oder wie kann ich das sonst machen?
Chryzler - Mi 13.09.06 14:04
Eine Möglichkeit wäre (warscheinlich nicht die Beste) in einer Schleife das ganze Array zu durchlaufen und jedes Byte nacheinander in einen String einzufügen (mittels Chr)
wulfskin - Mi 13.09.06 14:22
Hallo,
versuchs so, kann dir aber net garantieren, dass es funktioniert, hab Delphi nicht vor mir:
Delphi-Quelltext
1: 2: 3: 4:
| SetLength(S, Length(A) * SizeOf(Byte)); Move(@S[1], A, Length(S)); |
Gruß Hape!
delfiphan - Do 14.09.06 00:10
wulfskin: Fast, anders rum; und Move nimmt keine Pointer.
Statt A würde ich A[0] (bzw. A[Low(A)] für die, die's ganz genau haben wollen; nur für statische Arrays relevant) schreiben, damit's auch bei den dynamischen Arrays klappt. Das @S[1] sollte man noch ersetzen durch Pointer(S)^ bzw. wenn schon S[1], aber das generiert iirc einen Overhead (da der String als Referenz übergeben wird, wird eine Kopie des Strings angefertigt wird, falls der Referenzzeiger grössergleich 2 ist). PChar(S)^ kreiert auch unnötigen Overhead, da das nur bei leeren Strings einen Unterschied macht und bei statischen Arrays keine Grösse 0 gibt (bzw. bei dynamischen Arrays schon, aber dann wird sowieso nichts kopiert und Move macht nichts).
Sowas wie Move(A[Low(A)], Pointer(S)^, Length(S)); wäre eine Lösung. Wenn du sowieso dynamische Arrays hast, dann aus Leserlichkeitsgründen Low(A) durch 0 ersetzen und falls du auf Pointers verzichten willst statt Pointer(S)^ einfach S[1].
;)
wulfskin - Do 14.09.06 08:03
Danke phan,
hatte wie gesagt kein Delphi vor mir (jaja, immer diese Ausreden) ;)!
Gruß Hape!
tinewww - Do 14.09.06 10:36
Vielen Dank! Mit dieser Move - Operation hat das gut funktioniert!!! :D :D :D
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!