| Exibir mensagem anterior :: Exibir próxima mensagem |
| Autor |
Mensagem |
oiselcroo Novato

Registrado: Domingo, 19 de Fevereiro de 2017 Mensagens: 29
|
Enviada: Dom Fev 19, 2017 2:04 pm Assunto: Ajuda converte vb em delphi |
|
|
tenho esta função em vb6 e estou precisando converter ela pra delphi, comecei agora no delphi, desde ja agradeço a atenção de todos
Public Function CriptSenha(Psenha As String) As Variant
Const MIN_ASC = 32
Const MAX_ASC = 126
Const NUM_ASC = MAX_ASC - MIN_ASC + 1
Chave = 2001 ''qualquer nº para montar o algorítimo da criptografia
Dim Offset As Long
Dim str_len As Integer
Dim i As Integer
Dim ch As Integer
'3873092
to_text = ""
Offset = NumericPassword(Chave)
Rnd -1
Randomize Offset
str_len = Len(Psenha)
For i = 1 To str_len
ch = Asc(Mid$(Psenha, i, 1))
If ch >= MIN_ASC And ch <= MAX_ASC Then
ch = ch - MIN_ASC
Offset = Int((NUM_ASC + 1) * Rnd)
ch = ((ch + Offset) Mod NUM_ASC)
ch = ch + MIN_ASC
'novo
'to_text = to_text & Chr$(ch)
If Chr$(ch) = "'" Then
to_text = to_text & "´"
Else
to_text = to_text & Chr$(ch)
End If
End If
Next i
CriptSenha = to_text
End Function |
|
| Voltar ao Topo |
|
 |
strak2012 Colaborador


Registrado: Segunda-Feira, 13 de Janeiro de 2014 Mensagens: 1518 Localização: Maceió - AL
|
Enviada: Dom Fev 19, 2017 11:23 pm Assunto: |
|
|
Existe alguns promenores no codigo postado
1º - quem é NumericPassword
2º - rnd() é o mesmo de random() no delphi contudo no delphi não se chama random sem argumento tal como no vb.
Em todos os caso fica algo parecido com isso arqui:
| Código: | Function CriptSenha(Psenha : String) : String;
Const MIN_ASC = 32
Const MAX_ASC = 126
Const NUM_ASC = MAX_ASC - MIN_ASC + 1
var
Chave, i,x, ch : Integer;
Offset:longint;
//3873092
Chave := 2001; //qualquer nº para montar o algorítimo da criptografia
Offset := NumericPassword(Chave); // <- quem é NumericPassword
//rnd := -1; // delphi não permite este comando para isso é usado o randseed(); logo a seguir
x :=256; // possivel falha na compatibilidade do random no vb e delphi esteja em achar x sastifatorio para ambas lingaguem
result := "";
randseed(Offset); // subistituto do randomize(Offset) do vb
For i := 1 To length(Psenha) do
begin
ch := ord(Psenha[i]);
If (ch >= MIN_ASC) And (ch <= MAX_ASC) Then
ch := ch - MIN_ASC ;
Offset := (NUM_ASC + 1) * Random(x); // rnd em vb pode ser chamado sem argumento em delphi não
ch := ((ch + Offset) Mod NUM_ASC);
ch := ch + MIN_ASC;
// novo
// result := result + Chr(ch);
If Chr(ch) = "'"
Then result := result + "´"
Else result := result + Chr$(ch);
end;
end; |
resolvendo as duas questões levantada logo no inicio quanto a NumericPassword e rnd todo resto estar ok. _________________ Tudo podemos quando tudo sabemos! |
|
| Voltar ao Topo |
|
 |
oiselcroo Novato

Registrado: Domingo, 19 de Fevereiro de 2017 Mensagens: 29
|
Enviada: Seg Fev 20, 2017 10:46 am Assunto: |
|
|
Chave := 2001; //qualquer nº para montar o algorítimo da criptografia
Offset := NumericPassword(Chave) = 3873092 |
|
| Voltar ao Topo |
|
 |
|