Thema: Delphi String Konvertierung

Einzelnen Beitrag anzeigen

HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
961 Beiträge
 
Delphi 6 Professional
 
#15

AW: String Konvertierung

  Alt 27. Feb 2018, 08:56
Hmm..

Hab auch noch ein bischen probiert:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  S: AnsiString;
  B: WideString;
  i : integer;
begin
  // LowerCase, da HexToBin nur mit Kleinbuchstaben arbeitet
  S := LowerCase(Edit1.Text);

  // WideString
  SetLength(B, (Length(S) div 4)); // 4 HexChars = 1 WideChar

  // Cast nach PChar, da D6 hier PChar erwartet!
  HexToBin(PChar(S), PChar(B), Length(S) div 2);

  // EndianSwap
  // for i := High(B) downto Low(B) do // High/Low Geht unter D6 nicht mit WideString!!
  for i := Length(B) downto 1 do
    Word(B[i]) := Swap(Word(B[i]));

  Edit2.Text := B;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  S: AnsiString;
  B: Array of WideChar;
  i : integer;
begin
  // LowerCase, da HexToBin nur mit Kleinbuchstaben arbeitet
  S := LowerCase(Edit1.Text);

  // Bei Array ein Zeichen mehr wg PWideChar
  SetLength(B, (Length(S) div 4) + 1); // 4 HexChars = 1 WideChar

  // Cast nach PChar, da D6 hier PChar erwartet!
  HexToBin(PChar(S), PChar(B), Length(S) div 2);

  // EndianSwap
  for i := High(B) downto Low(B) do
    Word(B[i]) := Swap(Word(B[i]));

  Edit2.Text := PWideChar(B);
end;
Eine Version mit WideString und eine mit einem Array WideChar.

Wie ist HexToBin eigendlich unter Unicode-Versionen von Delphi aufgebaut?
  Mit Zitat antworten Zitat