como escrever este codifo em delphi

Delphi

20/01/2006

galera estou migrando meu siostemasem clipper para delphi


FUNCTION UNCRIPT(cKey)
LOCAL nCont, cPsw := ´´, nLenPsw := ASC(cKey)-40

FOR nCont = 1 TO nLenPsw
cPsw += CHR( ASC( SUBS( cKey, nCont+2, 1 ) ) - nLenPsw * nCont )
NEXT nCont

RETURN cPsw


preciso mas desta
obrigado


Pereiramarcos

Pereiramarcos

Curtidas 0

Respostas

Edilcimar

Edilcimar

20/01/2006

len->length
chr->char
asc->ord
subs->copy


GOSTEI 0
Caninha51

Caninha51

20/01/2006

Creio q neste caso ´chr´ vai ser ´chr´ mesmo, pois oq ele quer eh retornar o caractére da tabela ascii correspondente ao inteiro passado.


GOSTEI 0
Pereiramarcos

Pereiramarcos

20/01/2006

e isso mesmo
eu voucolocar este codigo em uma unit Ufuncoes.


GOSTEI 0
Pereiramarcos

Pereiramarcos

20/01/2006

acho melhor voltar para o clipper, impressionante nao funciona :oops:

este codigo

function UNCRIPT(cKey:string):string ;
var
nCont :integer ;
cPsw :string ;
nLenPsw:Int64;
BEGIN
nLenPsw := ord(cKey)-40 ;
FOR nCont:=1 TO nLenPsw do
cPsw := cPsw + CHR(ord(copy(cKey,[nCont]+2,1))-(nLenPsw*[nCont])) ;

END;


:cry:


GOSTEI 0
Xandyr

Xandyr

20/01/2006

acho melhor voltar para o clipper, impressionante nao funciona :oops: este codigo function UNCRIPT(cKey:string):string ; var nCont :integer ; cPsw :string ; nLenPsw:Int64; BEGIN nLenPsw := ord(cKey)-40 ; FOR nCont:=1 TO nLenPsw do cPsw := cPsw + CHR(ord(copy(cKey,[nCont]+2,1))-(nLenPsw*[nCont])) ; END; :cry:


Cara tem um erro aqui ´ord(cKey)´
eu não entendi o q tu ta querendo fazer, mas o cKey é uma string e não um caracter pra ti converter assim... se vc quiser pegar o tamanho da string o correto seria:
nLenPsw := length(cKey)-40 ;


GOSTEI 0
Martins

Martins

20/01/2006

acho melhor voltar para o clipper, impressionante nao funciona :oops: este codigo function UNCRIPT(cKey:string):string ; var nCont :integer ; cPsw :string ; nLenPsw:Int64; BEGIN nLenPsw := ord(cKey)-40 ; FOR nCont:=1 TO nLenPsw do cPsw := cPsw + CHR(ord(copy(cKey,[nCont]+2,1))-(nLenPsw*[nCont])) ; END; :cry:


Vc está migrando uma função de criptografia de Clipper para Delphi, e o q não está dando certo, quais os erros apresentados pela sua função?


GOSTEI 0
Pereiramarcos

Pereiramarcos

20/01/2006

obrigado a todos blz,
estou tentando migrar meu sistema em DBF, que esta feito em clipper para Delphi com TADS que aceita indices NTX. nao esta facil não....

quanto a esta pequena funcao ja estou a dois dias, como esta agora :



function TFrmSenha.uncript(cKey: string): string;
var
nCont :integer ;
cPsw :string ;
nLenPsw:integer;
letra :char;
BEGIN
letra:=copy(cKey,1,1); nLenPsw := ord(letra) - 40 ;
FOR nCont:=1 TO nLenPsw do
cPsw := cPsw + CHR(ord(copy(cKey,nCont+2,1))- nLenPsw*nCont) ;
end;


1 linha apos o begin esta dando incompatibles type char and string, pq ?

eu quero pegar o decimal do primeiro caracter e diminuir de 40 é so isso
:cry:


GOSTEI 0
Pereiramarcos

Pereiramarcos

20/01/2006

como fazer isso ???


GOSTEI 0
Edilcimar

Edilcimar

20/01/2006

tempo : string;
temp := ´´
For I := 1 to Length(palavraaserdecodificada) do
Temp := Temp + Chr(Ord(palavraaserdecodificada[I]) - 40);


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

20/01/2006

tente assim:
function TFrmSenha.Uncript(cKey: string): string;
var
  nCont, nLenPsw: integer;
  cPsw: string;
  letra: char;
begin
  letra := copy(cKey,1,1)[1];
  nLenPsw := ord(letra) - 40;

  for nCont := 1 to nLenPsw do
    cPsw := cPsw + chr(ord(copy(cKey,nCont+2,1)[1]) - nLenPsw * nCont);

  Result := cPsw;
end;



GOSTEI 0
Aroldo Zanela

Aroldo Zanela

20/01/2006

Colega,

Passa uma palavra criptografada para a gente testar o algoritmo:

function UnCript(cKey: String): String;
var nLenPsw , nCont: SmallInt;
begin
nLenPsw := Ord(cKey[1])-40;
for nCont := 1 to nLenPsw do
Result := Result + Chr( Ord( cKey[nCont+2] ) - nLenPsw * nCont )
end;



GOSTEI 0
Pereiramarcos

Pereiramarcos

20/01/2006

Obrigado a todos, funcinou perfeitamente...

testei o algoritmo do Aroldo


Obrigadooooooooo

:P


GOSTEI 0
POSTAR