AGB  ·  Datenschutz  ·  Impressum  







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

Visual Basic zu Delphi

Ein Thema von skoschke · begonnen am 23. Feb 2023 · letzter Beitrag vom 24. Feb 2023
Antwort Antwort
skoschke

Registriert seit: 6. Jan 2009
523 Beiträge
 
Delphi 10.4 Sydney
 
#1

Visual Basic zu Delphi

  Alt 23. Feb 2023, 10:53
Hallo,

ich will eine procedure aus einem Visual Basic Projekt nach Delphi umsetzen, aber diese zeile kann ich nicht interpretieren...
Kann mir bitte jemand weiterhelfen?

Delphi-Quellcode:
procedure addCrc16(var crc: Integer; ch: Char);
const
  crc16tab: array [0 .. 255] of Integer = ($0, $1189, $2312, $329B, $4624,
    $57AD, $6536, $74BF, $8C48, $9DC1, $AF5A, $BED3, $CA6C, $DBE5, $E97E, $F8F7,
    $1081, $108, $3393, $221A, $56A5, $472C, $75B7, $643E, $9CC9, $8D40, $BFDB,
    $AE52, $DAED, $CB64, $F9FF, $E876, $2102, $308B, $210, $1399, $6726, $76AF,
    $4434, $55BD, $AD4A, $BCC3, $8E58, $9FD1, $EB6E, $FAE7, $C87C, $D9F5, $3183,
    $200A, $1291, $318, $77A7, $662E, $54B5, $453C, $BDCB, $AC42, $9ED9, $8F50,
    $FBEF, $EA66, $D8FD, $C974, $4204, $538D, $6116, $709F, $420, $15A9, $2732,
    $36BB, $CE4C, $DFC5, $ED5E, $FCD7, $8868, $99E1, $AB7A, $BAF3, $5285, $430C,
    $7197, $601E, $14A1, $528, $37B3, $263A, $DECD, $CF44, $FDDF, $EC56, $98E9,
    $8960, $BBFB, $AA72, $6306, $728F, $4014, $519D, $2522, $34AB, $630, $17B9,
    $EF4E, $FEC7, $CC5C, $DDD5, $A96A, $B8E3, $8A78, $9BF1, $7387, $620E, $5095,
    $411C, $35A3, $242A, $16B1, $738, $FFCF, $EE46, $DCDD, $CD54, $B9EB, $A862,
    $9AF9, $8B70, $8408, $9581, $A71A, $B693, $C22C, $D3A5, $E13E, $F0B7, $840,
    $19C9, $2B52, $3ADB, $4E64, $5FED, $6D76, $7CFF, $9489, $8500, $B79B, $A612,
    $D2AD, $C324, $F1BF, $E036, $18C1, $948, $3BD3, $2A5A, $5EE5, $4F6C, $7DF7,
    $6C7E, $A50A, $B483, $8618, $9791, $E32E, $F2A7, $C03C, $D1B5, $2942, $38CB,
    $A50, $1BD9, $6F66, $7EEF, $4C74, $5DFD, $B58B, $A402, $9699, $8710, $F3AF,
    $E226, $D0BD, $C134, $39C3, $284A, $1AD1, $B58, $7FE7, $6E6E, $5CF5, $4D7C,
    $C60C, $D785, $E51E, $F497, $8028, $91A1, $A33A, $B2B3, $4A44, $5BCD, $6956,
    $78DF, $C60, $1DE9, $2F72, $3EFB, $D68D, $C704, $F59F, $E416, $90A9, $8120,
    $B3BB, $A232, $5AC5, $4B4C, $79D7, $685E, $1CE1, $D68, $3FF3, $2E7A, $E70E,
    $F687, $C41C, $D595, $A12A, $B0A3, $8238, $93B1, $6B46, $7ACF, $4854, $59DD,
    $2D62, $3CEB, $E70, $1FF9, $F78F, $E606, $D49D, $C514, $B1AB, $A022, $92B9,
    $8330, $7BC7, $6A4E, $58D5, $495C, $3DE3, $2C6A, $1EF1, $F78);

begin
  crc := (crc >> 8) Xor crc16tab((crc Xor CByte(Asc(ch))) And &HFF) ; <----- das hier kann ich nicht umsetzen!
end;
Danke
Ciao
Stefan
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#2

AW: Visual Basic zu Delphi

  Alt 23. Feb 2023, 11:00
>> = shr und &HFF dürfte $FF sein.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.641 Beiträge
 
#3

AW: Visual Basic zu Delphi

  Alt 23. Feb 2023, 13:56
Mal ChatGPT gefragt:

Zitat von Phoenix:
This code block is visual basic:

begin
crc := (crc >> 8) Xor crc16tab((crc Xor CByte(Asc(ch))) And &HFF);
end;

Please translate this to Delphi code.
Zitat von ChatGPT:
Sure! Here is the equivalent Delphi code for the provided Visual Basic code block:
Code:
crc := (crc shr 8) xor crc16tab[(crc xor Byte(Ord(ch))) and $FF];
Assuming crc is a 16-bit unsigned integer variable, and crc16tab is an array of 256 16-bit unsigned integers.

Note that shr is the Delphi equivalent of the >> right-shift operator in Visual Basic. Byte(Ord(ch)) is used to convert the ASCII character ch to a byte value, which is required by the crc16tab array. The $FF hexadecimal value is used to perform a bitwise AND operation with the byte value, ensuring that only the lower 8 bits are used in the computation.
Irgendwie cool. Und erschreckend. Ich habe ihm die Tabelle ja nicht mitgegeben, aber das Ding "rät" das es die Tabelle sein muss.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Visual Basic zu Delphi

  Alt 23. Feb 2023, 14:19
crc16tab hätte dann aber auch eine Funkltion sein können,
denn dann wäre die ( richtig gewesen.

Das ist ein CRC16.
Warum ist das dann ein Integer und kein Word?

Und sicherheitshalber hier ein AnsiChar benutzen, denn bei Unicode knallt es sonst schnell mal stimmt das Ergebnis nicht.
[edit] AND übersehn, wobei man stattdessen auch einfach nach Byte casten könnte und der innere Cast optimiert sich dann weg.
$2B or not $2B

Geändert von himitsu (23. Feb 2023 um 14:26 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Visual Basic zu Delphi

  Alt 23. Feb 2023, 14:20
[deleted]
$2B or not $2B
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.960 Beiträge
 
Delphi 12 Athens
 
#6

AW: Visual Basic zu Delphi

  Alt 23. Feb 2023, 17:52
Warum nicht eine der vielen bereits vorhandenen CRC16 Implementierungen für Delphi benutzen?
z. B. https://github.com/MHumm/DelphiEncryptionCompendium
enthält auch welche in https://github.com/MHumm/DelphiEncry...rce/DECCRC.pas

Grüße
TurboMagic
  Mit Zitat antworten Zitat
Benutzerbild von dummzeuch
dummzeuch

Registriert seit: 11. Aug 2012
Ort: Essen
1.623 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#7

AW: Visual Basic zu Delphi

  Alt 23. Feb 2023, 18:15
Warum nicht eine der vielen bereits vorhandenen CRC16 Implementierungen für Delphi benutzen?
z. B. https://github.com/MHumm/DelphiEncryptionCompendium
enthält auch welche in https://github.com/MHumm/DelphiEncry...rce/DECCRC.pas
Das setzt voraus, dass die Berechnung in VB korrekt ist.
Aber gut, könnte man ja, wenn man Testdaten hat, ausprobieren.

(Ich hatte das schon mehrfach, dass jemand eine angebliche Standard-Funktion in VB programmiert hat, und dabei die Umsetzung verhauen hatte ohne es zu merken. Da es um den Zugriff auf in VB erzeugte Daten ging, musste ich die fehlerhafte Funktion dann in Delphi nachprogrammieren. )
Thomas Mueller
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Visual Basic zu Delphi

  Alt 23. Feb 2023, 18:32
Joar, die Berechnungsweise ist ja meistens die Selbe.
Man braucht dann nur noch rauszufinden wie Polynomial/InitialVector und Finalization aussehen, womit da gerechnet wird.

OK, solche Probleme nicht inbegriffen.
Wir wissen auch nicht, wie VB vorher aussah, aber der Integer liefert hier garantiert (bei mehr als 2 Durchläufen) ein "falsches" Ergebnis ... 16 Bit zu viel.
$2B or not $2B

Geändert von himitsu (23. Feb 2023 um 18:35 Uhr)
  Mit Zitat antworten Zitat
skoschke

Registriert seit: 6. Jan 2009
523 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: Visual Basic zu Delphi

  Alt 24. Feb 2023, 08:10
Vielen herzlichen Dank!

Ciao
Stefan
  Mit Zitat antworten Zitat
Antwort Antwort


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 12:13 Uhr.
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