![]() |
Re: vb function zu delphi konvertieren
also ich hab die schleifen nu schon mehrmals durchgezählt
da ist meines dafürhaltens kein end; zu viel *gg ich hab vorher halt überwiegend mit php gearbeitet, da mußte man auf solche dinge keine rücksicht nehmen tut mir leid sakura *gg*, das ist erst mein 5ter Tag mit Delphi |
Re: vb function zu delphi konvertieren
Zitat:
Zitat:
...:cat:... |
Re: vb function zu delphi konvertieren
Zitat:
Delphi-Quellcode:
PS: FPU = floating processing unit = Flieskomma-Prozessor, könnte man auch zu den Akronymen aufnehmen
crc:= crc div 2;
// alternativ kann man auch um ein Bit nach rechts schieben crc := crc shr 1; |
Re: vb function zu delphi konvertieren
Zitat:
...:cat:... |
Re: vb function zu delphi konvertieren
ihr seid einfach viel zu schnell *gg*,
also ersteinmal danke euch allen für die rasche hilfe, an der funktion selbst meckert der compiler nun auf jeden fall nicht mehr *gg* wenn ich allerdings mit showmessage(calccrc('123456)'); über ein onclick verfahren die funktion aufrufe dann heißt es an dieser stelle inkompatible typen: 'string' und 'integer', aber: calccrc(strng: string):integer; übergeben wird doch strng als string und ausgegeben werden soll eine integer zahl (crc die als solche definiert ist) |
Re: vb function zu delphi konvertieren
eben.
Deine funktion liefert nen Integer zurück und Showmessage erwartet nen String. Also musst du dein Resultat von integer nach String konvertieren (mit intToStr() ) Die gemütlichen php Zeiten bei denen Datentypen relativ egal waren sind nun vorbei :twisted: |
Re: vb function zu delphi konvertieren
du bist soooo fies *gg*
also nocheinmal sehr vielen lieben Dank für die Hilfe =)) |
Re: vb function zu delphi konvertieren
Zitat:
...:cat:... |
Re: vb function zu delphi konvertieren
na hoffentlich dauert das nicht zu lange *gg
irgendwo steckt allerdings noch der wurm drin, die funktion schaut bei mir nun so aus:
Code:
showmessage(intToStr(calccrc('123'))); müßte eigentlich
function calccrc(strng: string): integer;
var crc, ch, i, j: integer; begin CRC := 0; for i := 1 to Length(Strng)-1 do begin ch := Ord(strng[i]); //hier hab ich geprüft ob ch und crc die richtigen werte haben //für ch ist das der fall, crc liefert allerdings andere werte for j := 0 to 7 do begin if ((crc Xor ch) And 1) <> 0 Then crc:= (Trunc(crc /2) Xor 40961) else crc:= Trunc(crc /2); ch:= Trunc(crc /2); end; end; result:= crc; end; den wert 17812 liefern, erhalten tu ich aber 47105 meine funktionierende php lösung sah damals so aus:
Code:
allerdings hatte ich auch hier ewig mit der
$packetlen = strlen($packet)-1;
for ($i=$packetlen; $i > 0; $i--) { $ch = ord(substr($packet, $h++, 1)); for($j=0; $j <= 7; $j++) { if (($crc ^ $ch) & 1) { $crc = ($crc / 2) ^ 40961; } else { $crc = $crc / 2; } $ch = $ch / 2; } } return $crc; inneren for schleife gekämpft bis ich letztendlich den richtigen wert zurückgegeben bekommen habe |
Re: vb function zu delphi konvertieren
Der Unterschied:
Code:
function calccrc(strng: string): integer;
var crc, ch, i, j: integer; begin CRC := 0; for i := 1 to Length(Strng)-1 do begin ch := Ord(strng[i]); //hier hab ich geprüft ob ch und crc die richtigen werte haben //für ch ist das der fall, crc liefert allerdings andere werte for j := 0 to 7 do begin if ((crc Xor ch) And 1) <> 0 Then crc:= (Trunc(crc /2) Xor 40961) else crc:= Trunc(crc /2); ch:= Trunc([color=#ff0000]crc[/color] /2); end; end; result:= crc; end;
Code:
...:cat:...
$packetlen = strlen($packet)-1;
for ($i=$packetlen; $i > 0; $i--) { $ch = ord(substr($packet, $h++, 1)); for($j=0; $j <= 7; $j++) { if (($crc ^ $ch) & 1) { $crc = ($crc / 2) ^ 40961; } else { $crc = $crc / 2; } $ch = [color=#ff0000]$ch[/color] / 2; } } return $crc; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:51 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