Thema: Delphi Probleme mit PChar

Einzelnen Beitrag anzeigen

Walter Landwehr

Registriert seit: 28. Mär 2006
Ort: 32816 Schieder-Schwalenberg
397 Beiträge
 
Delphi 10.4 Sydney
 
#1

Probleme mit PChar

  Alt 29. Apr 2014, 10:47
Delphi-Version: XE2
Hallo,

ich habe vor Jahren in D6 oder D2007 folgende Function erstellt.

Delphi-Quellcode:
function Base16ToStr(Value: PChar; Len: Integer): String;
var
   D: PByte;
   V: Byte;
   S: PChar;
begin
   Result := '';
   if Value = nil then Exit;
   if Len < 0 then Len := StrLen(Value);
   SetLength(Result, (Len +1) div 2);
   D := PByte(Result);
   S := PChar(Value);
   while Len > 0 do
   begin
      V := Byte(UpCase(S^));
      Inc(S);
      if V > Byte('9') then D^ := V - Byte('A') + 10
         else D^ := V - Byte('0');
      V := Byte(UpCase(S^));
      Inc(S);
      D^ := D^ shl 4;
      if V > Byte('9') then D^ := D^ or (V - Byte('A') + 10)
         else D^ := D^ or (V - Byte('0'));
      Dec(Len, 2);
      Inc(D);
   end;
   SetLength(Result, PChar(D) - PChar(Result));
end;
Nun habe ich versucht Pchar durch PWideChar oder PAnsiChar zu ersetzen. Leider bringt mir die Function eine völlig anderes Ergebnis als unter D2007.

Was muß ich verändern um wieder das Ergebnis wie unter D2007 zu erreichen?

Hat jemand einen Tipp.

Vielen Dank im voraus.
Walter Landwehr
Mfg

Walter
  Mit Zitat antworten Zitat