Ord
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:
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
Curtidas 0
Respostas
Output
19/09/2006
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]
For i:=1 to [color=red:6ca06e7b10]ord(s[0])[/color:6ca06e7b10] do
c[i] := [color=darkred:6ca06e7b10]23 Xor c[i];[/color:6ca06e7b10]
GOSTEI 0
Massuda
19/09/2006
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()......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...
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
For i:=1 to Length(S) do
GOSTEI 0
Marco Salles
19/09/2006
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
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 :?:
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 :?:
GOSTEI 0
Massuda
19/09/2006
[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.
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.
GOSTEI 0
Output
19/09/2006
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/?
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/?
GOSTEI 0
Marco Salles
19/09/2006
[b:e4425ea11a]citação de maasuda[/b:e4425ea11a]
pensei que fosse erro de digitação... Tanto é que corrigi
[b:e4425ea11a]citação de marco salles[/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
GOSTEI 0