Einzelnen Beitrag anzeigen

Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.735 Beiträge
 
Delphi 2007 Professional
 
#11

AW: Probleme mit RtlRunEncodeUnicodeString

  Alt 24. Sep 2015, 08:39
Auch gehen würde folgendes (normale Stringkonstanten landen nicht in der read-only Section bzw. werden bei Zuweisung vermutlich umkopiert):
Delphi-Quellcode:
var
  Source: WideString;
  UnicodeString: UNICODE_STRING;
  Hash: UCHAR;
begin
  Source := 'TestString'#0;
  RtlInitUnicodeString(@UnicodeString, @Source[1]);
  Hash := 0;
  RtlRunEncodeUnicodeString(@Hash, @UnicodeString);
Dann aber nicht vergessen vorher per Hand eine #0 an den Source String anzuhängen.
Die #0 fügt Delphi (AFAIK ) schon automatisch an verwaltete Strings an. Und statt @Source[1] lieber den passenden Cast nehmen:
Delphi-Quellcode:
var
  Source: WideString;
  UnicodeString: UNICODE_STRING;
  Hash: UCHAR;
begin
  Source := 'TestString';
  RtlInitUnicodeString(@UnicodeString, PWideChar(Source));
  Hash := 0;
  RtlRunEncodeUnicodeString(@Hash, @UnicodeString);
  RtlRunDecodeUniCodeString(Hash, @UnicodeString);
end.
Uli Gerhardt
  Mit Zitat antworten Zitat