jeng - Mo 24.08.15 13:08
Titel: String in Array aufteilen.
Hallo,
Ich habe folgendes Problem.
Ich möchte gerne von einem String (Länge 131bytes inclusieve #$05#$01) in einzelne arrays von 8 byte länge aufteilen.
so sollte es aussehen MyStrArray[0]: 00,11,22,33,44,55,66,77
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| begin scan := #$05#$01; Sock.SendString(scan); X := Sock.RecvPacket(500); Position := (length(X) -2) div 8; Setlength(MyStrArray, Position); count := -1;
for iFor := 0 to Length(X) do begin n:=0; repeat count := count +1; MyStrArray[count] := StringToHex(X[n]); inc(n,8) until n>Length(X); end; |
Narses - Di 25.08.15 12:55
Moin!
jeng hat folgendes geschrieben : |
Ich möchte gerne von einem String (Länge 131bytes inclusieve #$05#$01) in einzelne arrays von 8 byte länge aufteilen. |
Da du nicht genau darauf eingehst, welche Delphi-Version, welche Variablen-Deklaration und welche Komponenten du verwendest, gibt es hier etwas Unklarheit, wie man da ran gehen soll.
Sofern du Delphi >= D2k9 verwendest, dann sind generische Strings Unicode, und hier ist ein Zeichen nicht gleich einem Byte (diese Strings sind also nicht binary-safe). :idea: Weiterhin hast du bei den Indy-Komponenten >= 10 bei Strings ein Encoding zu beachten, und das dürfte im Default UTF8 sein (und nicht ANSI), hier kannst du also auch keine binary-safe-Strings verwenden (tust du´s trotzdem, kann es "Verfälschungen" der übertragenen Daten geben). :shock:
Fazit: Sofern du das tust, was ich vermute, dann darfst du gar keine Strings verwenden, sondern nur Byte-Arrays (weil du Binärdaten übertragen willst). :les: :think:
cu
Narses