5 dicas para converter String para Integer em Pascal / Delphi / Lazarus

strtoint in pascal delphi lazarus

Fala galera da programação, tudo beleza?

Uma das coisas mais comuns na programação é a conversão de dados, e uma das conversões mais comuns é de Texto para Inteiro (String para Integer).

Em pascal há várias formas de fazer isso e hoje vamos conhecer 5 formas que podem lhe ajudar em seus códigos.

 

1 – Função StrToInt

A função StrToInt converte uma string para um inteiro em Pascal, é a função mais básica de utilizar. Aqui está um exemplo de como usá-la:

{

Criado pelo Professor Giovani Da Cruz

}
program Conversao;

uses
  SysUtils;

var
  numeroString: string;
  numeroInteiro: integer;
begin
  numeroString := '123';
  numeroInteiro := StrToInt(numeroString);
  
  Writeln('Numero Convertido: ', NumeroInteiro);
end.

Utilize ela quando você tem certeza que a string a ser convertida contém um número válido.

 

2 – Função StrToIntDef

O StrToIntDef é uma abordagem muito útil para converter uma string para um inteiro em Pascal, especialmente quando você precisa lidar com casos em que a string pode não representar um número válido. Aqui está como você pode usar o StrToIntDef:

{

Criado pelo Professor Giovani Da Cruz

}
program Conversao;

uses
  SysUtils;

var
  numeroString: string;
  numeroInteiro: integer;
begin
  // Conversão normal
  numeroString := '123';
  numeroInteiro := StrToIntDef(numeroString, 0); 
  WriteLn('NúmeroConvertido: ', numeroInteiro);
  
  // Conversão com erro
  numeroString := 'xxx';
  numeroInteiro := StrToIntDef(numeroString, 0); 
  WriteLn('NúmeroConvertido: ', numeroInteiro);
end.

O StrToIntDef converte a string para um inteiro, mas se a string não for um número válido, ele retorna um valor padrão especificado como segundo argumento. Isso é útil para lidar com entradas do usuário ou quando você precisa de um valor padrão se a conversão falhar.

Portanto, você pode usar o StrToIntDef sempre que precisar converter uma string para um inteiro e desejar fornecer um valor padrão em caso de falha na conversão.

 

3 – Função Val

A função Val em Pascal é usada para converter uma string em um tipo numérico, como integer, real, double etc. O nome Val é uma abreviação de “value” (valor), o que indica que a função é usada para atribuir um valor à variável.

A assinatura da função Val é a seguinte:

procedure Val(S: string; var V; var Code: Integer);
  • S: É a string que você deseja converter.
  • V: É a variável para a qual você deseja atribuir o valor convertido.
  • Code: É uma variável de saída que indica se a conversão foi bem-sucedida ou não. Se a conversão falhar, Code será diferente de zero, indicando o motivo do erro.

A função Val funciona analisando a string S e atribuindo seu valor convertido à variável V. Aqui está um exemplo simples:

{

Criado pelo Professor Giovani Da Cruz

}
program ExemploErroConversaoVal;

var
  numeroString: string;
  numeroInteiro: integer;
  codigoErro: integer;

begin
  numeroString := '123'; // número válido
  Val(numeroString, numeroInteiro, codigoErro);

  if codigoErro <> 0 then
    writeln('Erro de conversão: ', codigoErro)
  else
    writeln('Valor inteiro convertido: ', numeroInteiro);
 
  //--------------------------------------------- 
 
  numeroString := 'abc'; // String que não representa um número válido
  Val(numeroString, numeroInteiro, codigoErro);

  if codigoErro <> 0 then
    writeln('Erro de conversão: ', codigoErro)
  else
    writeln('Valor inteiro convertido: ', numeroInteiro);
end.

Neste exemplo, a string numeroString contém ‘123’ que é um número válido e ‘abc’, que não é um número válido. Portanto, ao chamar a função Val para converter esta string em um inteiro, ocorrerá um erro de conversão com o ‘abc’ e codigoErro será diferente de zero. O programa exibirá a mensagem de erro indicando o motivo do erro.

 

4 – Função SScanf

A função SScanf em Pascal, disponível na unidade sysutils, é uma função poderosa que permite fazer análises de strings com base em um formato especificado, muito semelhante à função scanf em C. Ela analisa a string de entrada de acordo com o formato especificado e atribui os valores extraídos às variáveis correspondentes.

A assinatura da função SScanf é a seguinte:

function SScanf(const S: string; const Format: string; Args: array of const): Integer;
  • S: É a string que você deseja analisar.
  • Format: É uma string que especifica o formato da string de entrada e como os valores devem ser interpretados.
  • Args: É uma lista de argumentos onde os valores extraídos serão armazenados.

A função retorna o número de valores extraídos com sucesso e atribuídos às variáveis correspondentes.

O parâmetro Format pode conter especificadores de formato, como %d para números inteiros, %f para números de ponto flutuante, %s para strings, %c para caracteres, etc. Assim como no scanf em C, você pode usar espaços em branco na string de formato para indicar espaços em branco na string de entrada.

Aqui está um exemplo simples de uso da função SScanf para extrair um número inteiro de uma string:

{

Criado pelo Professor Giovani Da Cruz

}
program ExemploSScanf;

uses
  sysutils;

var
  numeroString: string;
  numeroInteiro: integer;
  numValores: integer;

begin
  numeroString := '123';
  numValores := SScanf(numeroString, '%d', [@numeroInteiro]);
  
  writeln('Número de valores extraídos: ', numValores);
  writeln('Número inteiro extraído: ', numeroInteiro);
end.

Neste exemplo, a função SScanf analisa a string numeroString usando o formato %d, que indica um número inteiro. O valor inteiro extraído é armazenado na variável numeroInteiro. O número de valores extraídos com sucesso é armazenado em numValores, que deve ser 1 neste caso. O programa então imprime esses valores na tela.

 

5- Usando o ToInteger de uma variável String

Este código são class helpers que nas novas versões de Delphi e Lazarus disponibilizam. Aqui tem um exemplo compilado em Lazarus 2.2.6. Disponível na unidade sysutils.

{

Criado pelo Professor Giovani Da Cruz

}
program Project1;

uses
  SysUtils; // Necessário estar declarado

var
  S : String;
  I : Integer;
begin
  S := '250';

  I := S.ToInteger;
  Writeln('O valor de I e: ', I);

  Readln;
end.

Pode ser que dependendo da dos versão de Delphi ou Lazarus está opção não esteja disponível.

 

 

Beleza pessoal? Espero que o artigo possa ajudar em seus códigos.

 

Dúvidas ou sugestões? Deixe o seu comentário!

 

Um abraço e até o próximo post. Valeu!

 

#Pascal #Delphi #Lazarus #DesenvolvimentoDeSoftware #GiovaniDaCruz

  • Publicado por Giovani Da Cruz
  • 20 views
  • 0 comentarios
  • 18 de fevereiro de 2024

 

Está gostando do conteúdo?
Considere pagar um cafezinho para nossa equipe!

 

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Posts Relacionados a Categoria Delphi

Continue aprendendo

Aumente o seu conhecimento
Copiando o Registro Atual entre TClientDataSets em Delphi de Forma Genérica
18 de maio de 2024
Explorando Variáveis Inline no Delphi: Uma Abordagem Aprofundada
13 de maio de 2024
Como simular uma tecla ser pressionada em Delphi e Lazarus?
12 de maio de 2024
Utilizando TParallel.For da Biblioteca de Programação Paralela em Delphi
6 de maio de 2024
Detecção de formatos gráficos em Delphi
19 de abril de 2024
Imagens e Fotos em Delphi e Lazarus (TImage e TDBImage)
4 de abril de 2024
Enviando Arquivos em Delphi Utilizando REST API: Uma Abordagem Prática
1 de março de 2024
Como gravar um valor no registro do Windows em Delphi, Lazarus, Pascal
27 de janeiro de 2024