Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi vb function zu delphi konvertieren (https://www.delphipraxis.net/25039-vbulletin-function-zu-delphi-konvertieren.html)

endeffects 30. Jun 2004 09:52


vb function zu delphi konvertieren
 
hallo =),

ich möchte gerne eine vb funktion zu delphi konvertieren
und bekomm nun allerdings ständig fehlermeldungen
vom compiler mit denen ich nichts anfangen kann

Code:
function calccrc(strng: string; lenstr: integer): integer;
var
  crc, ch, i, j: integer;
begin
  for i:= 0 to lenstr -1 do
    ch:= Ord(Copy(strng, i +1, 1));
    for j:= 0 to 7 do
      if ((crc Xor ch) And 1) Then
        crc:= (int((crc /2)) Xor 40961)
      else
        crc:= Int(crc / 2);
      end;
        ch:= Int(ch / 2);
    end;
  end;
  result:= crc;
end;
in der zeile: "ch:= Ord(Copy(strng, i +1, 1));" heißt
es z.b. inkompatible typen

in "if ((crc Xor ch) And 1) Then"
Ausdruck muss Boolean sein

crc:= (int((crc /2)) Xor 40961)
Operation ist auf Operantentyp nicht anwendbar

crc:= Int(crc / 2);
inkompatible typen Integer und extented

usw. hat jemand beim überfliegen meines versuches in
delphi vielleicht ein paar gundsetzliche fehler gefunden?

die orginal funktion:

Code:
Function CALCCRC(strng$, lenstr)
Dim crc As Long
Dim ch As Long
Dim i As Long
Dim j As Long

For i = 0 To lenstr - 1
  ch = Asc(Mid(strng$, i + 1, 1))
    For j = 0 To 7
      If ((crc Xor ch) And 1) Then
        crc = (Int((crc / 2)) Xor 40961)
      Else
        crc = Int(crc / 2)
      End If
      ch = Int(ch / 2)
    Next j
   Next i
CALCCRC = crc
End Function

sakura 30. Jun 2004 09:57

Re: vb function zu delphi konvertieren
 
Code:
function calccrc(strng: string[color=#ff0009][s]; lenstr: integer[/s][/color]): integer;
var
  crc, ch, i, j: integer;
begin
  [color=#ff0009]CRC := 0;[/color]
  for i := [color=#ff0009]1 to Length(Strng)[/color] do
    ch := [color=#ff0009]Ord(strng[I]);[/color]
    for j := 0 to 7 do
      if ((crc Xor ch) And 1)[color=#ff0009] <> 0[/color] Then
        crc:= ([color=#ff0009]Trunc(crc /2)[/color] Xor 40961)
      else
        crc:= [color=#ff0009]Trunc(crc /2)[/color];
      end;
        ch:= [color=#ff0009]Trunc(crc /2)[/color];
    end;
  end;
  result:= crc;
end;
Das sollte es sein ;)

...:cat:...

endeffects 30. Jun 2004 10:06

Re: vb function zu delphi konvertieren
 
oh das ging aber schnell, dankeschön =)

und es scheint auch schon fast zu funktionieren *gg*
aber in der zeile "ch:= Trunc(crc /2);"
meckert der compiler noch einmal:
"Dekleration erwartet, aber Bezeichner 'ch' gefunden"

Ich denke mal das das end if auf der vb funktion
noch nicht richtig umgesetzt ist

sakura 30. Jun 2004 10:17

Re: vb function zu delphi konvertieren
 
Ich sehe gerade, daß Dir die Pascal-Syntax noch gar nicht liegt, da fehlen ein paar begins

Code:
function calccrc(strng: string): integer;
var
  crc, ch, i, j: integer;
begin
  CRC := 0;
  for i := 1 to Length(Strng) do
  [color=#ff0000]begin[/color]
    ch := Ord(strng[I]);
    for j := 0 to 7 do
    [color=#ff0000]begin[/color]
      if ((crc Xor ch) And 1) <> 0 Then
        crc:= (Trunc(crc /2) Xor 40961)
      else
        crc:= Trunc(crc /2)[s][color=#ff0000];[/color][/s]
      end;
      ch:= Trunc(crc /2);
    end;
  end;
  result:= crc;
end;
:!: Beachte das durchgestrichene Semikolon nach der Else-Anweisung ;)

...:cat:...

endeffects 30. Jun 2004 10:31

Re: vb function zu delphi konvertieren
 
nun meckert er nur noch an der Stelle
"result:= crc;" und meint "Deklaration
erwartet, aber Bezeichner 'result' gefunden" :gruebel:

sakura 30. Jun 2004 10:35

Re: vb function zu delphi konvertieren
 
Args, die VBler :wall:

Okay, kurzer Exkurs in die If-Then-Else Welt von Pascal ;)

In der Regeln geht mit jedem END ein BEGIN (es gibt wenige Ausnahmen). Du hast getippt:
Delphi-Quellcode:
if ..... then
   Anweisung
else
   Anweisung
end;
Hier hast Du ein END ohne BEGIN. Es gibt zwei Möglichkeiten. Da Du nur eine Anweisung je Zweig hast, lasse die BEGIN-END Blöcke weg (heutzutage manchmal abwertend beurteilt)
Delphi-Quellcode:
if .... then
  Anweisung
else
  Anweisung;
oder Du schreibst schöne Blöcke. Ist imho besser zu lesen.
Delphi-Quellcode:
if .... then
BEGIN
  Anweisung(en);
END
else
BEGIN
  Anweisung(en);
END;
...:cat:...

Smokey 30. Jun 2004 10:37

Re: vb function zu delphi konvertieren
 
dann hast du vor dem result := crc ein end; zuviel.

vermutlich genau an der stelle wo sakura dein ; durchgestrichen hat und nen end hingeklemmt hat :wink:

<edit> oh das end war ja schon da. Also dein fehler, aber mit Sakuras if-then lektion bekommste das schon hin 8) <edit>

Generalissimo 30. Jun 2004 10:39

Re: vb function zu delphi konvertieren
 
Zitat:

Zitat von sakura
Ich sehe gerade, daß Dir die Pascal-Syntax noch gar nicht liegt, da fehlen ein paar begins

Code:
function calccrc(strng: string): integer;
var
  crc, ch, i, j: integer;
begin
  CRC := 0;
  for i := 1 to Length(Strng) do
  begin
    ch := Ord(strng[I]);
    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)[color=#ff0000];[/color]
      [s][color=#ff0000]end;[/color][/s]
      ch:= Trunc(crc /2);
    end;
  end;
  result:= crc;
end;

ein end; zuviel

Generalissimo 30. Jun 2004 10:40

Re: vb function zu delphi konvertieren
 
verdammt, zulangsam gewesen :stupid:

sakura 30. Jun 2004 10:41

Re: vb function zu delphi konvertieren
 
Man seid ihr alle fix :roll: :mrgreen:

...:cat:...


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:59 Uhr.
Seite 1 von 2  1 2      

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