Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как узнать тип данных из строки 
V
    Опции темы
MadCoder
Дата 23.1.2009, 12:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 478
Регистрация: 24.8.2007
Где: Москва

Репутация: 1
Всего: 2



Здравствуйте!

Подскажите, импортирую данные в текстовом формате. Одно из полей является текстом, второе - датой и третье числом с плавающей запятой. Как проверить данные на корректность типам?

Например:

var
A, B, C: String;
begin
// Если значение - дата
if IsDate(B)=True then ....
// Если значение - число
if IsNumeric©=True then ... 
end;
PM WWW ICQ   Вверх
Frees
Дата 23.1.2009, 12:43 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 9
Всего: 54



TryStrToInt
TryStrToFloat

TryStrToDate()

по поводу даты

есть функция VarToDateTime она понимает разные форматы написания даты
ля проверки строки можно использовать try except

Код

      value: string;
      IsDate := False;
      try
        if value <> '' then
          VarToDateTime(Value);
      except on E: EVariantTypeCastError do
          IsDate := True;
      end;



--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
MadCoder
Дата 23.1.2009, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 478
Регистрация: 24.8.2007
Где: Москва

Репутация: 1
Всего: 2



try... except предлагать не надо, т.к. у меня срабатывает внешний обработчик ошибок.
PM WWW ICQ   Вверх
Akella
Дата 24.1.2009, 18:36 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



народ вы чё, а как же VarType smile 

Это сообщение отредактировал(а) Akella - 24.1.2009, 18:53
PM MAIL   Вверх
MadCoder
Дата 24.1.2009, 19:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 478
Регистрация: 24.8.2007
Где: Москва

Репутация: 1
Всего: 2



Точно! Спасибо smile 
PM WWW ICQ   Вверх
Frees
Дата 26.1.2009, 07:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 9
Всего: 54



Цитата(Akella @  24.1.2009,  20:36 Найти цитируемый пост)
народ вы чё, а как же VarType smile 

 var v: Variant
v:='10.02.2008'

это какой VarType будет?

насколко я знаю это будед varString
а не varDate

хотя автору веднее что нужно smile


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
Akella
Дата 26.1.2009, 09:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



 smile в таком случае все типы данные будут строковыми
PM MAIL   Вверх
MadCoder
Дата 26.1.2009, 10:42 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 478
Регистрация: 24.8.2007
Где: Москва

Репутация: 1
Всего: 2



VarType к сожалению действительно не помог...

Мне помогли TryStrToInt и TryStrToDate, пример:
Код

var
SomeInt: Integer;
SomeDate: TDateTime;
SomeText: String;
begin
SomeText:='01.01.2008';

If TryStrToInt(SomeText,  SomeInt)=True then
ShowMessage('Work! Int');
DateSeparator:='.';
If TryStrToDate(SomeText,  SomeDate)=True then
ShowMessage('Work! Date');
end;

PM WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0516 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.