Array
(
)

como escrever este codifo em delphi

Pereiramarcos
   - 20 jan 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


Edilcimar
   - 20 jan 2006

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


Caninha51
   - 20 jan 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.


Pereiramarcos
   - 20 jan 2006

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


Pereiramarcos
   - 20 jan 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;





Xandyr
   - 20 jan 2006


Citação:
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;




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 ;


Martins
   - 20 jan 2006


Citação:
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;




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?


Pereiramarcos
   - 21 jan 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



Pereiramarcos
   - 23 jan 2006

como fazer isso ???


Edilcimar
   - 23 jan 2006

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


Emerson
   - 23 jan 2006

tente assim:
#Código

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;



Aroldo Zanela
   - 23 jan 2006

Colega,

Passa uma palavra criptografada para a gente testar o algoritmo:

#Código


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;



Pereiramarcos
   - 23 jan 2006

Obrigado a todos, funcinou perfeitamente...

testei o algoritmo do Aroldo


Obrigadooooooooo

:P