Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Porque XC = Inteiro


Marcos Augusto

Pergunta

ola pessoal

estou aqui pra saber c um erro q acontece comigo aconteceu com alguém

tenho o delphi 2009

eu coloquei em um form 1 botao e 2 edits e coloquei o seguinte comando no botao

procedure TForm1.Button1Click(Sender: TObject);

var

i : Integer;

begin

i := StrToInt(Edit1.Text);

Edit2.Text := IntToStr(i);

end;

so que se eu colocar a letra xc ele converte a letra em numero "12" que é estranho, pode ser meio esquisido porque onde vou usar o xc mas eu tava fazendo um banco de dados que num campo integer tinha 12 e quando digitei "xc" pra localizar veio isso

e não é so o xc

xcc = 204

xccc = 3276

e por ai vai

c alguém tiver alguma esplicacao para isso gostaria muito de saber ou como contornar esse bug

Grato Marcos Augusto

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0
procedure TForm1.Button1Click(Sender: TObject);

var

i : Integer;

begin

i := StrToInt(Edit1.Text);

Edit2.Text := IntToStr(i);

end;

so que se eu colocar a letra xc ele converte a letra em numero "12" que é estranho, pode ser meio esquisido porque onde vou usar o xc mas eu tava fazendo um banco de dados que num campo integer tinha 12 e quando digitei "xc" pra localizar veio isso

e não é so o xc

xcc = 204

xccc = 3276

e por ai vai

c alguém tiver alguma esplicacao para isso gostaria muito de saber ou como contornar esse bug

Amigo, isso não é bug ... veja o help do delphi

Converts a string that represents an integer (decimal or hex notation) to a number.

Unit

Sysutils

Category

type conversion routines

function StrToInt(const S: string): Integer;

Description

StrToInt converts the string S, which represents an integer-type number in either decimal or hexadecimal notation, into a number. If S does not represent a valid number, StrToInt raises an EConvertError exception.

Descrição

StrToInt converte a string S que ou representa um número inteiro para decimal ou anotação de numero hexadecimal. Se S não representar um número válido, StrToInt eleva uma exceção de EConvertError

então quando voce digita XC ( valor hexadecimal ) no edit ele converte para 12 ( valor para decimal )

Colocando o simbolo $ antes do numero, será uma representação hexadecimal, sem o simbolo, será uma representação decimal.

exemplo:

Converter inteiro para hexadecimal:

Label1.Caption := IntToHex(StrToInt(Edit1.Text),8);

Converter hexadecimal para inteiro:

Label1.Caption:=IntToStr(StrToInt('$'+Edit1.Text));

No seu caso ficaria:

procedure TForm1.Button1Click(Sender: TObject);
var
i : Integer;
begin
   i := StrToInt('$'+Edit1.Text);
   Edit2.Text := IntToStr(i);
end;
mas para contornar esse tipo de coisa , ou seja , não deixar o edit aceitar letras, ficaria assim:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if (Key <> #8) then // backspace
  begin
     if (key in ['-'] = true) and (length(edit1.Text) = 0) then exit;

     if (key in ['0'..'9',',','.'] = false) then
        begin
          Key := #0;
        end;
  end;
end;

abraço

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      651,9k
×
×
  • Criar Novo...