Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Конвертация Variant в Integer

Delphi , Синтаксис , Преобразования



Автор: Григорий Ситнин
WEB-сайт: http://delphibase.endimus.com

{ **** UBPFD *********** by delphibase.endimus.com ****
>> Конвертация Variant -> Integer

Конвертирует, если это возможно Variant в число. Если конвертация неудается,
то возвращается значение по умолчанию.

Зависимости: Variants, SysUtils
Автор:       Григорий Ситнин, gregor@gregor.ru, Москва
Copyright:   Григорий Ситнин, 2003
Дата:        8 июля 2003 г.
***************************************************** }

function VarToInt(var AVariant: variant; DefaultValue: integer = 0): integer;
begin
  //*** Если NULL или не числовое, то вернем значение по умолчанию
  Result := DefaultValue;
  if VarIsNull(AVariant) then
    Result := 0
  else
    {//*** Если числовое, то вернем значение} if VarIsOrdinal(AVariant) then
      Result := StrToInt(VarToStr(AVariant));
end;

Перевод контента на русский язык:

Функция Delphi, называемая VarToInt, конвертирует значение типа Variant в целочисленное значение. Функция принимает два параметра: AVariant, которое является значением Variant, которое нужно конвертировать, и DefaultValue, которое является значением по умолчанию, которое возвращается, если конвертация не удалась.

Вот шаг за шагом, что код делает:

  1. Если AVariant равно null или не числовое, функция возвращает DefaultValue.
  2. Если AVariant числовое, функция проверяет, является ли оно порядковым типом (например, целочисленное, длинное целочисленное и т.д.). Если это так, функция конвертирует значение в строку с помощью VarToStr, а затем конвертирует эту строку в целочисленное значение с помощью StrToInt. Результат хранится в переменной Result.
  3. Функция возвращает значение Result.

Код хорошо структурирован и легко понятен. Однако есть несколько вещей, которые можно улучшить:

  • Вместо проверки, является ли AVariant null или не числовым отдельно, вы можете использовать функции VarIsEmpty и VarIsNumeric, чтобы упростить условие.
  • Вы можете рассмотреть добавление более robust ошибок, такие как поднятие исключения, если конвертация не удалась. Это позволит вызывающему коду обрабатывать ошибку в более robust way.

Вот обновленная версия функции с этими предложениями включенными:

function VarToInt( AVariant: variant; DefaultValue: integer = 0): integer;
begin
  if VarIsEmpty(AVariant) then
    Result := DefaultValue
  else if not VarIsNumeric(AVariant) then
    Result := DefaultValue
  else if VarIsOrdinal(AVariant) then
    Result := StrToInt(VarToStr(AVariant));
end;

Альтернативно, вы можете использовать функцию TryStrToInt, чтобы обрабатывать попытку конвертации и поднимать исключение, если она не удалась:

function VarToInt( AVariant: variant; DefaultValue: integer = 0): integer;
begin
  if VarIsEmpty(AVariant) then
    Result := DefaultValue
  else if not VarIsNumeric(AVariant) then
    Result := DefaultValue
  else try
    Result := StrToInt(VarToStr(AVariant));
  except
    on EConvertError do
      Result := DefaultValue;
  end;
end;

Надеюсь, это поможет! Пожалуйста, если у вас есть вопросы.

Конвертация функции VarToInt из Delphi преобразует Variant в Integer, возвращая значение по умолчанию, если конвертация не удается.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Преобразования ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-07-06 09:48:03/0.0036511421203613/0