5 dicas para converter String em Integer no Pascal/Delphi

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,Codeserá 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