AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

VBA Script in Delphi umsetzen

Ein Thema von BUllweih · begonnen am 3. Dez 2013 · letzter Beitrag vom 4. Dez 2013
 
Benutzerbild von himitsu
himitsu

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

AW: VBA Script in Delphi umsetzen

  Alt 4. Dez 2013, 08:46
Delphi-Quellcode:
  For i := 1 To length(Data) do
   begin
     lCRC32 := (((lCRC32 shr 32) And $FFFFFF) Xor
       Crc32Table1[(lCRC32 and $FF) xor Ord(Data[i])]);
   end;
Dann solltest du dringend mal das VBScript reparieren.

((lCRC32 shr 32) And $FFFFFF) ist immer 0, denn lCRC32 ist 32 Bit und wenn man da den Inhalt um 32 Bit verschiebt, dann ist es leer, womit ein Großteil des CRCs verloren geht.
Vermute ich zwar weniger, aber scheint hier nahezuliegen, also im Problemfall könnte SHR auf die 32 allergisch reagieren und da eine Verschiebung von 0 machen.

Wie sieht es damit aus?
Delphi-Quellcode:
  For i := 1 To length(Data) do
   begin
     lCRC32 := ((lCRC32 And $FFFFFF) Xor
       Crc32Table1[(lCRC32 and $FF) xor Ord(Data[i])]);
   end;

[edit]
Das VBS ist Schrott und rechnet falsch.
Das liegt an der fehlerhaften Klammersetzung
Code:
  For i = 1 To Len(Data)
      lCRC32 = (((lCRC32 And &HFFFFFF00 \ &H100) And &HFFFFFF) Xor _
      Crc32Table((lCRC32 And &HFF) Xor AscW(Mid(Data, i, 1))))
Das, was ich schon profezeit hatte. Bei (lCRC32 And &HFFFFFF00 \ &H100) wird zuerst / und dann AND aufgelöst.
Also (lCRC32 And (&HFFFFFF00 \ &H100)) , bzw. (lCRC32 And &H00FFFFFF) , statt dem beabsichtigten ((lCRC32 And &HFFFFFF00) \ &H100) .



Entweder du reparierst die defekte VBS-Funktion oder du solltest diese Funktion umbenennen und im Delphi dann eine "gleich" falsch rechnende Funktion verwenden.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 4. Dez 2013 um 08:56 Uhr)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:10 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz