Thema: Delphi Probleme mit PChar

Einzelnen Beitrag anzeigen

Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.429 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Probleme mit PChar

  Alt 29. Apr 2014, 10:00
Alle "PChar" durch "PAnsiChar" und alle "String" durch AnsiString" ersetzen:
Delphi-Quellcode:
function Base16ToStr(Value: PAnsiChar; Len: Integer): AnsiString;
var
   D: PByte;
   V: Byte;
   S: PAnsiChar;
begin
{...usw.}
Edit: Das geht natürlich auch übersichtlicher.
Delphi-Quellcode:
function HexValue(AValue: AnsiChar): Byte;
begin
  case AValue of
    '0'..'9': Result := Ord(AValue) - Ord('0');
    'A'..'F': Result := Ord(AValue) - Ord('A') + 10;
    'a'..'f': Result := Ord(AValue) - Ord('a') + 10;
  else
    raise Exception.Create('ungültiges Zeichen');
  end;
end;

function Base16ToStr(Value: PAnsiChar; Len: Integer): AnsiString;
var
  v: Byte;
  i: Integer;
begin
  Result := '';
  if Value = nil then
    Exit;

  if Len < 0 then Len := StrLen(Value);

  if Odd(Len) then
    raise Exception.Create('ungerade Anzahl für halbe Byte');

  SetLength(Result, Len div 2);
  for i := 1 to Length(Result) do
  begin
    v := HexValue(Value^) shl 4;
    Inc(Value);
    v := v or HexValue(Value^);
    Inc(Value);
    Result[i] := AnsiChar(v);
  end;
end;

Geändert von Blup (29. Apr 2014 um 10:28 Uhr)
  Mit Zitat antworten Zitat