Array
(
)

Converter VB -gt; Delphi Não Funciona

Sremulador
   - 14 mar 2006

Bem amigos tenho este código em Vb e gostaria de transformar para delphi até qu eu tentei porem nao fucionou, trata-se de um código para dígito verificador, sera que alguem ajuda ae

#Código

Visual Basic
Private Function Confere_DV(ByVal pCodigo As String) As Boolean
Dim bDv As Integer, _
tDig As String, _
bFator As Byte, _
bIdx As Integer, _
iTot As Integer

bFator = 1
iTot = 0
For bIdx = 15 To 1 Step -1
bFator = (bFator + 1)
tDig = Mid$(pCodigo, bIdx, 1)
iTot = iTot + (Val(tDig) * bFator)
If bFator >= 9 Then bFator = 1
Next

bDv = Right(CStr((iTot * 10) Mod 11), 1)

If bDv <> Val(Mid$(pCodigo, 16, 1)) Then
Confere_DV = False
Else
Confere_DV = True
End If
End Function


Código que eu transformei

#Código
Function Confere_DV(pCodigo: String): Boolean;
var
tDig: String;
bIdx, iTot, bDv, bFator: Integer;
begin
bFator := 1;
iTot := 0;
For bIdx := 1 To 15 do begin
Inc(bFator);
tDig := Copy(pCodigo, bIdx, 1);
iTot := iTot + (StrToInt(tDig) * bFator);
If bFator >= 9 Then bFator := 1;
end;
bDv := StrToInt(RightStr((IntToStr((iTot * 10) mod 11)), 1));

If bDv <> StrToInt(Copy(pCodigo, 16, 1)) Then
Result:= False
Else
Result:= True;



Obrigado amigos...


Massuda
   - 14 mar 2006

O loop original eo loop que você fez estão diferentes...
Citação:
For bIdx = 15 To 1 Step -1
...
For bIdx := 1 To 15 do begin
...o original era do fim para o começo enquanto o seu está do contrário; experimente mudar para...#Código

For bIdx := 15 DownTo 1 do begin