Einzelnen Beitrag anzeigen

Newa

Registriert seit: 10. Dez 2011
5 Beiträge
 
#6

AW: Codeschnipsel von GO zu Delphi übersetzen.

  Alt 21. Okt 2015, 09:52
Also,
im Grunde sind alle Probleme behoben. Byte.join setzt einfach nur einen String zusammen und setzt "" als Delimiter. Genau da lag das Problem. Das hab ich überlesen. Ich habe also einen inkorrekten string gehashed.
shl 32 versetzt die bytes nach links um einen Uint64 erhalten. Das klappt soweit. Ich muss mich mehr mit den Typen wie int,uint,dword auseinandersetzen. Da hab ich deutlich nachhole Bedarf.

Gelöst hab ich das nun wie oben im Beispiel von TiGü beschrieben.

Code:
function TForm1.HashIt(PathWithQuotesAndNameString : string) : string;
var
   //Hash: IdHashCRC.TIdHashCRC32;
   HashedValue: DWord;
   top111: UInt64;
   Hex : string;
begin
   result := 'NO HASH';
   //PathWithQuotesAndNameString := '"C:\Program Files\Games\Fifa 14\fifa14.exe"FIFA 14';
   CalcStringCRC32(PathWithQuotesAndNameString, HashedValue);
   top111 := HashedValue or $80000000;
   top111 := top111 shl 32 or $02000000;
   result := IntToStr(top111);
end;

// Ergibt im Beispiel result = 10849726566762545152
Code ist hier in FreePascal so lauffähig und funktioniert.

Danke TiGü

Ps. In XE3 nutze ich das Firemonkey Framework. Könnte da der Fehler in IntToStr(top111) mit den negativen Werten liegen?

Geändert von Newa (21. Okt 2015 um 09:57 Uhr)
  Mit Zitat antworten Zitat