como escrever este codifo em 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

Respostas

20/01/2006

Edilcimar

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


Responder Citar

20/01/2006

Caninha51

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.


Responder Citar

20/01/2006

Pereiramarcos

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


Responder Citar

20/01/2006

Pereiramarcos

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:


Responder Citar

20/01/2006

Xandyr

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 ;


Responder Citar

20/01/2006

Martins

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?


Responder Citar

21/01/2006

Pereiramarcos

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:


Responder Citar

23/01/2006

Pereiramarcos

como fazer isso ???


Responder Citar

23/01/2006

Edilcimar

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


Responder Citar

23/01/2006

Emerson

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

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

  Result := cPsw;
end;



Responder Citar

23/01/2006

Aroldo Zanela

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&93;)-40;
for nCont := 1 to nLenPsw do
Result := Result + Chr( Ord( cKey&91;nCont+2&93; ) - nLenPsw * nCont )
end;



Responder Citar

23/01/2006

Pereiramarcos

Obrigado a todos, funcinou perfeitamente...

testei o algoritmo do Aroldo


Obrigadooooooooo

:P


Responder Citar