GARANTIR DESCONTO

Fórum Hexadecimal #293417

27/08/2005

0

Olá pessoal beleza?
Estou com uma duvida, como eu faço para pegar um valor em hexa e voltar ao valor original em AScii?

Exemplo:
A pessoa digita no edit1 a palavra ´Delphi´ e eu retorno ´44656C706869´ no edit2.

Como eu faço isso ao contrario?

Exemplo:
A pessoa digita no edit1 o valor ´44656C706869´ e eu retorno ´Delphi´ no edit2.



estou usando uma função q eu peguei aqui no forum:

function TForm1.MyStrToHex(Texto: String): string; 
var 
Tamanho,i : integer; 
PalavraHex : String; 
begin 
Tamanho := Length(Texto); 
for i := 1 to Tamanho do begin 
PalavraHex:= PalavraHex + IntToHex(Ord(Texto[i]),1)+ ´ ´;
end; 
Result := PalavraHex; 
end;


Aguardo uma ajuda!


Cyber

Cyber

Responder

Posts

27/08/2005

Marco Salles

A pergunta que não quer calar ???

Qual a função inversa de InttoHex :?: :?: :?: Eu não me preocupei com isto , mas certamente alguem deve saber..

Mas Enquanto a resposta não vem Tem que fazer esta Inversa no braço

Exemplo: A pessoa digita no edit1 a palavra ´Delphi´ e eu retorno ´44656C706869´ no edit2. Como eu faço isso ao contrario?


[b:925d66ac11]Primeiro para verificar a função abaixo altere o conteuto de sua chamada[/b:925d66ac11]
:arrow:
[b:925d66ac11]//Chamada Inicial ao Meotodo MyStrToHex[/b:925d66ac11]
procedure TForm1.Button1Click(Sender: TObject);
begin
edit2.text:=Form1.MyStrToHex(Edit1.text);
Edit1.Text:=´´;
Button1.Enabled:=false;
Button2.Enabled:=true;
end;



[color=blue:925d66ac11]//************************************************[/color:925d66ac11]
function Correspondencia(caracter:Char):String;
begin
  if caracter=´A´ then
    result:=´10´
  else
     if caracter=´B´ then
        result:=´11´
      else
        if caracter=´C´ then
           result:=´12´
        else
          if caracter=´D´ then
             result:=´13´
     else
        if caracter=´E´ then
           result:=´14´
        else
          if caracter=´F´ then
             result:=´15´;
end;


function TransformarHexadecialDecimal(NumHex:string):string;
begin
if (NumHex[1] in [´A´..´F´]) then
 result:=inttostr(16*strtoint(Correspondencia(NumHex[1])))
else
  result:=inttostr(16*strtoint((NumHex[1])));
if (NumHex[2] in [´A´..´F´]) then
  result:=inttostr(strtoint(result) + (strtoint(Correspondencia(NumHex[2]))))
else
  result:=inttostr(strtoint(result) + (strtoint(NumHex[2])))
end;


Function TForm1.Inversa(Texto:String):STRING;
var
Tamanho,i : integer;
PalavraHex : string;
begin
result:=´´;
Tamanho := Length(Texto);
i:=1;
While i  <= Tamanho do
  begin
    palavraHex:=(Copy(texto,i,2));
    result:=result+char(Ord(strtoint(TransformarHexadecialDecimal(palavraHex))));
    i:=i+3;
  end;
end;


procedure TForm1.Button2Click(Sender: TObject);
begin
Edit1.text:=Inversa(Edit2.text);
Edit2.Text:=´´;
Button1.Enabled:=True;
Button2.Enabled:=False;
end;


[b:925d66ac11]Posso garantir duas coisas a voce Cyber[/b:925d66ac11]

1) Este processo funciona bem , desde que voce não mexa na formatação que aparece no edit 1 e neM chame a função inversa de algo que não EXISTE.... Falo isto porque a formatação original separa com um espaço os numeros ´44656C706869´ ficando assim : ´44 65 6C 70 68 69´... Obedeci esta formatação para Retornar a palavra Delphi...


:P :P :P :P :P
2)A Outra coisa que garanto a voce é que apos eu ter desenvolvido este algebrismo todo , com certeza ira aparecer alguem que vai fornecer a inversa de InttoHex Ou alguem ira apresentar uma maneira bem mais fácil de calcular esta Inversa...


[b:925d66ac11]No fim espero que voce tenha entendido os passos que tentei passar aqui[/b:925d66ac11].


Responder

Gostei + 0

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

Aceitar