Delphi-PRAXiS
Seite 3 von 4     123 4      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   VBA Script in Delphi umsetzen (https://www.delphipraxis.net/177872-vba-script-delphi-umsetzen.html)

BUllweih 3. Dez 2013 14:06

AW: VBA Script in Delphi umsetzen
 
Im VBA Script darf ich ja nix ändern. So ist das in ca. 200 Touchpanels programmiert.

Ich Versuche nur dieses Script in Delphi zu portieren um die Passwortvergabe
über das Programm zu ermöglichen.

Die Firma die das Programm mal in VB geschrieben hat existiert nicht mehr.
Das Prog ist defekt und läuft nicht mehr. (keine Quellen ausser das blöde Script)
Und ich habe kein VB sondern nur Delphi.

Jetzt versuche ich das Prog in Delphi umzusetzen.

Medium 3. Dez 2013 14:10

AW: VBA Script in Delphi umsetzen
 
Dennoch kannst du doch im Script die Änderung mal machen, um zu sehen ob dann die Ausgabe "gleich falsch" wie in Delphi ist. Dann lässt sich das umgekehrt lösen.

BUllweih 3. Dez 2013 14:18

AW: VBA Script in Delphi umsetzen
 
Habe die DIM als long deklariert und die Ausgabe ist noch genauso wie vorher.
Langsam drehe ich mit dem VB durch.:pale::pale:

Klaus01 3. Dez 2013 14:30

AW: VBA Script in Delphi umsetzen
 
..da die CRD32 Tabelle statisch ist, d.h. unabhängig von den übergebenen Daten,
kannst Du diese aus dem VBA Programm abspeichern und im Delphi-Programm einlesen
und verwenden.

Ist nicht das Gelbe vom Ei - aber sollte funktionieren.

Grüße
Klaus

BUllweih 3. Dez 2013 14:45

AW: VBA Script in Delphi umsetzen
 
Das habe ich jetzt mal gemacht und die Tabelle mit den Werten vom VBA Script gefüttert.

Das Lustigste ist das es immer noch nicht geht.

Delphi-Quellcode:
var
  Form1: TForm1;
  Crc32Table           : array[0..255] of integer =
  (0,1996959894,-301047508,-1727442502,124634137,1886057615,-379345611,-1637575261,249268274,2044508324,-522852066,
-1747789432,162941995,2125561021,-407360249,-1866523247,498536548,1789927666,-205950648,-2067906082,450548861,
1843258603,-187386543,-2083289657,325883990,1684777152,-43845254,-1973040660,335633487,1661365465,-99664541,
-1928851979,997073096,1281953886,-715111964,-1570279054,1006888145,1258607687,-770865667,-1526024853,901097722,
1119000684,-608450090,-1396901568,853044451,1172266101,-589951537,-1412350631,651767980,1373503546,-925412992,
-1076862698,565507253,1454621731,-809855591,-1195530993,671266974,1594198024,-972236366,-1324619484,795835527,
1483230225,-1050600021,-1234817731,1994146192,31158534,-1731059524,-271249366,1907459465,112637215,-1614814043,
-390540237,2013776290,251722036,-1777751922,-519137256,2137656763,141376813,-1855689577,-429695999,1802195444,
476864866,-2056965928,-228458418,1812370925,453092731,-2113342271,-183516073,1706088902,314042704,-1950435094,
-54949764,1658658271,366619977,-1932296973,-69972891,1303535960,984961486,-1547960204,-725929758,1256170817,
1037604311,-1529756563,-740887301,1131014506,879679996,-1385723834,-631195440,1141124467,855842277,-1442165665,
-586318647,1342533948,654459306,-1106571248,-921952122,1466479909,544179635,-1184443383,-832445281,1591671054,
702138776,-1328506846,-942167884,1504918807,783551873,-1212326853,-1061524307,-306674912,-1698712650,62317068,
1957810842,-355121351,-1647151185,81470997,1943803523,-480048366,-1805370492,225274430,2053790376,-468791541,
-1828061283,167816743,2097651377,-267414716,-2029476910,503444072,1762050814,-144550051,-2140837941,426522225,
1852507879,-19653770,-1982649376,282753626,1742555852,-105259153,-1900089351,397917763,1622183637,-690576408,
-1580100738,953729732,1340076626,-776247311,-1497606297,1068828381,1219638859,-670225446,-1358292148,906185462,
1090812512,-547295293,-1469587627,829329135,1181335161,-882789492,-1134132454,628085408,1382605366,-871598187,
-1156888829,570562233,1426400815,-977650754,-1296233688,733239954,1555261956,-1026031705,-1244606671,752459403,
1541320221,-1687895376,-328994266,1969922972,40735498,-1677130071,-351390145,1913087877,83908371,-1782625662,
-491226604,2075208622,213261112,-1831694693,-438977011,2094854071,198958881,-2032938284,-237706686,1759359992,
534414190,-2118248755,-155638181,1873836001,414664567,-2012718362,-15766928,1711684554,285281116,-1889165569,
-127750551,1634467795,376229701,-1609899400,-686959890,1308918612,956543938,-1486412191,-799009033,1231636301,
1047427035,-1362007478,-640263460,1088359270,936918000,-1447252397,-558129467,1202900863,817233897,-1111625188,
-893730166,1404277552,615818150,-1160759803,-841546093,1423857449,601450431,-1285129682,-1000256840,1567103746,
711928724,-1274298825,-1022587231,1510334235,755167117);


implementation

{$R *.dfm}

Function Skr_CRC32(Data :String) : String;
function Hex(data: longint; width: word): string;
  (* pads with leading zeroes to reach specified width; use width=0 for tight fit *)
  const
    HexChars: array[0..$F] of char = '0123456789ABCDEF';
  var
    txt: string;
  begin
    txt := '';
    repeat
      insert(HexChars[data and $F],txt,1);
      data := data shr 4;
    until data=0;
    while length(txt) < width do
      insert('0',txt,1);
    Hex:= txt;
  end;

var
  i, iBit              : integer ;
  lCRC32                : integer;
  txt                  : string;
begin
  lCRC32 := $FFFFFFFF;
  For i := 1 To length(Data) do
   begin

      lCRC32 := ((lCRC32 shr 8) And $FFFFFF) Xor
       Crc32Table[(lCRC32 and $FF) xor Ord(Data[i])];

   end;
  result := Hex(lCRC32 Xor $FFFFFFFF,8);
end;

himitsu 3. Dez 2013 14:55

AW: VBA Script in Delphi umsetzen
 
Zitat:

Zitat von BUllweih (Beitrag 1238371)
Das Lustigste ist das es immer noch nicht geht.

Es gibt ein Problem in der Berechnung der Tabelle und vermutlich das gleiche "Problem" gibt es auch in der CRC-Berechnung.

Meine Vermutlung liegt, erfahrungsgemäß, bei der Vorzeichenbehandlung.

Die Berechnungen selber liesen sich ja "leicht" übersetzen, aber dann müssen hier auch vergleichbare Typen (Anzahl der Bits, mit oder ohne Vorzeichen) und vergleichbare Rechenoperationen vorhanden sein.

ShortInt($FF aka -1) div 2 = $00 (0)
Byte($FF aka 255) div 2 = $7F (127)

ShortInt($F0 aka -16) div 2 = $F8 (-8)
Byte($F0 aka 240) div 2 = $78 (120)




Delphi-Quellcode:
Hex(123456789, 8);
liefert in delphi und VB auch das selbe Ergebnis?

BUllweih 3. Dez 2013 15:00

AW: VBA Script in Delphi umsetzen
 
Ja, ergibt ein VB und Delphi das selbe.

baumina 3. Dez 2013 15:15

AW: VBA Script in Delphi umsetzen
 
Welche Delphi-Version setzt du ein? Ich frage wegen Unicode.

x000x 3. Dez 2013 16:01

AW: VBA Script in Delphi umsetzen
 
Zitat:

Zitat von BUllweih (Beitrag 1238361)
String = karlos
Vom VBA
Code:
0 77073096 EE0E612C 990951BA 76DC419 706AF48F ...
Von Delphi
Code:
00000000 77073096 EE0E612C 2D02EF8E 076DC419 ...

Also wenn ich mit der geposteten Version von DeddyH die CRC Table erstelle, dann habe ich die gleichen Werte wie du in der obigen Ausgabe (die lt. deinem Kommentar ja von VBA stammen). Also der erste Teil der Funktion scheint dann doch zu passen?! Nur wie kommst du auf diese seltsamen Delphi-Ausgaben :?:

<EDIT>
Nochmal eine Frage ... Sicherheitshalber:
Zitat:

Zitat von BUllweih (Beitrag 1238355)
test -> 7A635C01
hugo ->6A0D2BDA
karlos -> F1BFB3B6
inge -> FEB506DD

Sind das die Werte die das VBA erzeugt oder die Werte die dein Delphi-Programm erzeugt?
</EDIT>

BUllweih 3. Dez 2013 16:44

AW: VBA Script in Delphi umsetzen
 
Ich setze Delphi 6 ein.
Und ja die Ausgaben waren vom VB Script.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:04 Uhr.
Seite 3 von 4     123 4      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz