Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#9

Re: [done] DEC class xy not found

  Alt 11. Mai 2010, 17:30
Mir ist nix bekannt, warum 'Z' nicht gehn sollte.


Das müßte auch gehn,
Delphi-Quellcode:
uses ... {$if CompilerVersion >= 20.0}, AnsiStrings{$IFEND};

class function TDECObject.Identity: LongWord;
var
  Signature: AnsiString; // using ANSI to keep backward compatibility
begin
  // create signature ('Z' * n + 'TDECCLASSNAME')
  Signature := StringOfChar('Z', 256 - Length(Classname))
    + UpperCase(AnsiString(ClassName));
  // calc crc for signature
  Result := CRC32(IdentityBase, Signature[1], Length(Signature));
end;
wobei es so wohl korrekter wäre
Delphi-Quellcode:
uses ... {$IF CompilerVersion >= 20.0}, AnsiStrings{$IFEND};

class function TDECObject.Identity: LongWord;
var
  Signature: AnsiString; // using ANSI to keep backward compatibility
begin
  // create signature ('Z' * n + 'TDECCLASSNAME')
  Signature := StringOfChar('Z', 256 - Length(Classname))
    {$IF CompilerVersion >= 20.0}
      + UpperCase(UTF8Encode(ClassName));
    {$ELSE}
      + UpperCase(ClassName);
    {$IFEND}
  // calc crc for signature
  Result := CRC32(IdentityBase, Signature[1], Length(Signature));
end;
PS: AnsiStrings muß natürlich die letze Unit sein, bzw. zumindestens nach SysUtils stehen.

Warum Emba aber auch soein krankes Spiel mit den AnsiVersionen und mit den Namen der UnicodeVersionen spielen mußte.

function AnsiUpperCase(const S: string): string; ist doch wohl das Krankeste.



Und ich weiß grade nicht, ob im DEC eine *.INC für die CompilerVersionen enthalten ist.
$2B or not $2B
  Mit Zitat antworten Zitat