GARANTIR DESCONTO

Fórum Ord #329678

19/09/2006

0

ola pessoal.... alguem poderia me explicar como q funciona a funcao (ord)????

em q momentos usa - la???

e o (Xor);;;

tipow alguem saberia me explicar o codigo do procedimento abaixo:


procedure TForm1.Button1Click(Sender: TObject);

var

  i:Integer;

begin


  S := edit1.text;

  For i:=1 to ord(s[0]) do

  c[i] := 23 Xor c[i];

  Label1.Caption := s;

end;



Output

Output

Responder

Posts

19/09/2006

Output

A duvida ta nas seguinte linhas:


For i:=1 to [color=red:6ca06e7b10]ord(s[0])[/color:6ca06e7b10] do

c[i] := [color=darkred:6ca06e7b10]23 Xor c[i];[/color:6ca06e7b10]


Responder

Gostei + 0

19/09/2006

Massuda

Na forma mais genérica, Ord() retorna qual a ordem de um valor dentro de uma sequencia. No seu exemplo, ele retorna o equivalente ao código numérico de uma determinada letra.

Já o Xor é um operador lógico que faz a operação XOR bit-a-bit entre dois valores.

O código que você postou deve ser antigo (Delphi 1 ou Turbo Pascal). Este tipo de codificação usando Ord()...
For i:=1 to ord(s[0]) do
...serve para percorrer os caracteres de uma string [b:2f0d2ecc57]se e somente se[/b:2f0d2ecc57] a string for do tipo ShortString (até 256 caracteres). Se você tentar usar isso com uma AnsiString o resultado pode não ser o esperado. Ao invés de usar isso, use...
For i:=1 to Length(S) do



Responder

Gostei + 0

19/09/2006

Marco Salles

massuda , sei que seu conhecimento , se expande muito alem dos limites desse tópico. portanto não considere este post , como nada a mais do que um observação

Código: For i:=1 to ord(s[1]) do ...serve para percorrer os caracteres de uma string se e somente se a string for do tipo ShortString (até 256 caracteres).


não entendi... Para mim , serve para executar um loop de 1 ate o valor
equivalente ao código numérico de uma determinada letra. Esta letra é o sera a primeira letra da String S[1]

Agora , poderia ter a AnsiString S em sua definição , caractyeres que não são aceitos , ou que não tem seu valor retornado pela função Ord ????

Mas na prática usando o nosso teclado , não consigo imaginar esta situação... Se pensarmos em outra linguagem , ai poderemos ter problemas com o retorno da função. Seria esta procedencia de sua colocação amigo massuda

Por exemplo , um caracter Japones :?:


Responder

Gostei + 0

19/09/2006

Massuda

[quote:39ee0db021=´Marco Salles´]Para mim , serve para executar um loop de 1 ate o valor equivalente ao código numérico de uma determinada letra.[/quote:39ee0db021]Sim. É exatamente o que o [b:39ee0db021]for[/b:39ee0db021] está fazendo.

Mas atente para o detalhe que o código está Ord(S[[b:39ee0db021]0[/b:39ee0db021]]) e S é provavelmente uma string. Normalmente, os caracteres dentro de uma string são indexados de 1 até o tamanho da string.

No caso de uma string do tipo ShortString (ou nos tempos do Delphi/Turbo Pascal, quando toda string era ShortString) a posição ZERO era usada internamente pelo compilador para armazenar o tamanho da string (esse era um dos motivos para o tamanho de uma string ShortString ser limitado a 255 caracteres).

Algumas pessoas costumavam otimizar o acesso ao tamanho da string usando Ord(S[0]) ao invés de Length(S); na verdade, dá na mesma e hoje em dia nem faz mais sentido esse tipo de otimização.


Responder

Gostei + 0

19/09/2006

Output

Massuda,, talvez vez vc pode me ajudar,,,, eu levantei a questao em outros topicos,, me deram uma dikas mah naum consegui entender direito...

eu qria fazer o seguinte.
um sistema funciona por 30 dias,, dai bummmm,,, trava e gera um codigo aleatorio....

o cliente me passa esse codigo e eu faço uma especie de desincriptacao onde por essa desincriptacao consigo ver o nome do cliente onde esta instalado o sistema e tals....

dai gero uma otra chave q determino por mais qto tempo o sistema vai fuincinar ate vencer....

vc poderia me ajudar nesssa/?


Responder

Gostei + 0

19/09/2006

Marco Salles

[b:e4425ea11a]citação de maasuda[/b:e4425ea11a]
Mas atente para o detalhe que o código está Ord(S[0]) e S é provavelmente uma string. Normalmente, os caracteres dentro de uma string são indexados de 1 até o tamanho da string.


pensei que fosse erro de digitação... Tanto é que corrigi

[b:e4425ea11a]citação de marco salles[/b:e4425ea11a]
Código: For i:=1 to ord(s[1]) do



Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar