AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi VB Code zu Delphi - Probleme mit Bytearray
Thema durchsuchen
Ansicht
Themen-Optionen

VB Code zu Delphi - Probleme mit Bytearray

Ein Thema von mrhyde · begonnen am 1. Feb 2008 · letzter Beitrag vom 3. Feb 2008
Antwort Antwort
mrhyde

Registriert seit: 3. Jan 2008
4 Beiträge
 
Delphi 2006 Professional
 
#1

VB Code zu Delphi - Probleme mit Bytearray

  Alt 1. Feb 2008, 19:29
Hi Zusammen,

kann mir jemand folgendes in Delphi umcoden?
Unter VB läuft das Problemlos.
Hab schon alles mögliche unter Delphi probiert komm aber nicht richtig klar mit dem Bytearray in Delphi.


Delphi-Quellcode:
Public Sub crc()
    Dim mask, j, n, crc As Integer
    Dim bt(24) As Byte
    Dim crct As String
    
    z = 0
    crc = -1 ' crc mit $ffff initalisieren
For n = 1 To Len(TextBox1.Text) Step 2
j = Mid(TextBox1.Text, n, 2)
'je 2 Zeichen filtern
        z = z + 1 'Zaehler für Bytearray
bt(z) = CByte("&H" & j)

crc = crc Xor bt(z)
For j = 1 To 8
mask = 0
If crc / 2 <> Int(crc / 2) Then mask = &HA001
crc = Int(crc / 2) And &H7FFF: crc = crc Xor mask
Next j
Next n

TextBox2.Text = crc
' crc anzeigen
End Sub
Wär echt cool wenn das jemand übernehmen könnte - damit ich mal ein Beispiel habe.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: VB Code zu Delphi - Probleme mit Bytearray

  Alt 1. Feb 2008, 19:36
Ganz blöd würde ich sagen, das ist ein Array[1..24] of byte. Ohne Gewähr!
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
mrhyde

Registriert seit: 3. Jan 2008
4 Beiträge
 
Delphi 2006 Professional
 
#3

Re: VB Code zu Delphi - Probleme mit Bytearray

  Alt 2. Feb 2008, 14:34
Erstmal danke DeddyH für deine Antwort.

Ja, das mit dem Array hab ich auch schon probiert, nur das Problem ist, dass ich wie im VB Besipiel 2 Zeichen in 1 Byte quetschen muss.
Ich weiss nicht wie es VB intern funktioniert, weil ja die Typkonvertierung der Variablen dort autom. geschieht - auf jedenfalls geht es dort. Nur wenn ich das Ganze in Delphi umschreiben möchte, dann bringt er mir einen Fehler.

Anbei mal mein Delphi Code:

Delphi-Quellcode:
procedure ByteCrc(data:byte;var crc:word);
var i:BYTE;
Begin
    for i:=0 to 7 do
    begin
    if (( data and $01) xor ( crc and $0001) <> 0 ) then
        begin
        crc:=crc shr 1; //1 Pos nach rechts schieben
        crc:=crc xor $A001;
        end
    else crc:=crc shr 1;
    data:=data shr 1;
    end;
end;

function StringCrc(s:shortstring):word;
var len,i:integer;
begin
    result:=0;
    len:=length(s);
    for i:=1 to len do
      if i mod 2 = 0 then //alle 2 Zeichen
        ByteCrc(ord(s[i]),result); // CRC Byteweise bilden << Hier sollten 2 Zeichen als Byte der Prozedur ByteCRC übergeben werden.
end;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var s:shortstring;
    h:word;
begin
    s:=edit1.Text;

    h:=StringCrc(s);
    Edit2.Text:=IntToHex(h,4);

end;
Ich weiss es hört sich komisch an mit 2 Zeichen in einem Byte, aber in VB funktionierts.
Vielleicht weisst jemand weiter.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: VB Code zu Delphi - Probleme mit Bytearray

  Alt 2. Feb 2008, 15:26
Herzlich willkommen in der Delphi-PRAXiS, mrhyde.

Ich würde den VB-Code nicht direkt übersetzen. Was du benötigst ist eine Funktion zur Polynomdivision und eine Funktion zur Wandlung von Hex-Code in Bytes.

Vielleicht interessiert dich dieser Thread: klick

Freundliche Grüße auch an drjekyll
  Mit Zitat antworten Zitat
mrhyde

Registriert seit: 3. Jan 2008
4 Beiträge
 
Delphi 2006 Professional
 
#5

Re: VB Code zu Delphi - Probleme mit Bytearray

  Alt 2. Feb 2008, 16:05
Irgendwie komm ich da nicht recht klar damit,
habe etwas mit den Besipielen herumgespielt und es jedoch nicht geschafft aus

00057E0440404040

den CRC: F1CA zu erlangen.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#6

Re: VB Code zu Delphi - Probleme mit Bytearray

  Alt 2. Feb 2008, 18:13
Hallo,

mit den CRC-Werten ist das so eine Sache - es gibt ein paar Freiheitsgrade, wie z.B. die Initialisierung des Schieberegisters und die Invertierung des Ergebnisses. Die Kenntnis des Polynoms reicht einfach nicht aus. Du hast wahrscheinlich den negierten Wert 0E35 erhalten.

So wirst du dann glücklich:

ShowMessage(IntToHex(ModbusCRC16(s, $FFFF), 4)); Freundliche Grüße
  Mit Zitat antworten Zitat
mrhyde

Registriert seit: 3. Jan 2008
4 Beiträge
 
Delphi 2006 Professional
 
#7

Re: VB Code zu Delphi - Probleme mit Bytearray

  Alt 3. Feb 2008, 11:40
Hey marabu du bist der Beste

Hab das 'not' übersehen - thx hast mir sehr geholfen!
  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 01:18 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