![]() |
AW: VBA Script in Delphi umsetzen
Hallo,
Also wenn ich aus
Delphi-Quellcode:
mache
For i := 1 To length(Data) do
begin lCRC32 := (((lCRC32 shr 8) And $FFFFFF) Xor Crc32Table1[(lCRC32 and $FF) xor Ord(Data[i])]); end;
Delphi-Quellcode:
bekomme ich das Ergebnis was auch VB bringt.
For i := 1 To length(Data) do
begin lCRC32 := (((lCRC32 shr 32) And $FFFFFF) Xor Crc32Table1[(lCRC32 and $FF) xor Ord(Data[i])]); end; MfG Michael |
AW: VBA Script in Delphi umsetzen
Wenn ich mich nicht täusche, müsste das aber
Delphi-Quellcode:
entsprechen, oder?
For i := 1 To length(Data) do
begin lCRC32 := Crc32Table1[(lCRC32 and $FF) xor Ord(Data[i])]; end; |
AW: VBA Script in Delphi umsetzen
Wenn ich das tue bekomme ich wieder kompletten Käse gegenüber VB raus.:shock:
|
AW: VBA Script in Delphi umsetzen
Dann habe ich wohl einen Denkfehler gemacht. Aber sehr merkwürdig, das Ganze :gruebel:
|
AW: VBA Script in Delphi umsetzen
Zitat:
Delphi-Quellcode:
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.
((lCRC32 shr 32) And $FFFFFF)
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:
Das, was ich schon profezeit hatte. Bei
For i = 1 To Len(Data)
lCRC32 = (((lCRC32 And &HFFFFFF00 \ &H100) And &HFFFFFF) Xor _ Crc32Table((lCRC32 And &HFF) Xor AscW(Mid(Data, i, 1))))
Delphi-Quellcode:
wird zuerst / und dann AND aufgelöst.
(lCRC32 And &HFFFFFF00 \ &H100)
Also
Delphi-Quellcode:
, bzw.
(lCRC32 And (&HFFFFFF00 \ &H100))
Delphi-Quellcode:
, statt dem beabsichtigten
(lCRC32 And &H00FFFFFF)
Delphi-Quellcode:
.
((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. |
AW: VBA Script in Delphi umsetzen
Was bräuchte man denn, um als VBA-Laie das überhaupt zu testen und zu debuggen?
Eine normale Office-Installation? Irgendwas von einem aktuellen Visual Studio aus? |
AW: VBA Script in Delphi umsetzen
Im Prinzip reicht ein Texteditor und eine Textdatei mit der Dateiendung .vbs ;-)
Ansonsten ja, eine Office-Installation reicht... Oder eben ein Visual Studio 6.0 für VB6 (alles was danach kam ist .NET und nicht mit diesem Code kompatibel) |
AW: VBA Script in Delphi umsetzen
Ich habe die Scripte von diesen Panel in Excel eingebaut und Teste dort alles.
|
AW: VBA Script in Delphi umsetzen
Ob/wie man VBScripts debuggen kann, weiß ich auch nicht,
aber das Rechenergebnis kann man hiermit testen ![]() So wie es aussieht, sollte es eine ganz normale CRC32-Implementierung werden, mit dem Polynom $4C11DB7, aber sie wurde im VBScript fehlerhaft implementiert. Zumindestens wenn ich mir die ersten Ergebnisse des Delphi-Codes ansehe. Denn die Webseite liefert das selbe Ergebnis wie
Delphi-Quellcode:
.
testuser->B9851374
Wenn das VBScript korrekt gewesen wäre, hätte man hier garnichts neuentwickeln müssen, da viele fertige CRC32-Funktionen für Delphi schon mit diesem Polynom arbeiten oder dieses öfters einstellbar ist. |
AW: VBA Script in Delphi umsetzen
Zitat:
Dachte es sei eine ganz normale CRC32 Funktion, war aber Leider auf dem Holzweg. Aber da diese Vermurkste Version schon in so vielen Panels verbaut ( Programmiert ) ist, muss ich wohl oder übel das etwas andere Model in Delphi einbinden um nicht alles Plattformen updaten zu müssen. ( Was bei der Menge und Standorte nicht geht ) Also erst mal vielen Dank für die großartige Hilfe Eurer Seits. MfG Michael aka Bulli |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:16 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