Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Как узнать тип данных из строки


Автор: MadCoder 23.1.2009, 12:37
Здравствуйте!

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

Например:

var
A, B, C: String;
begin
// Если значение - дата
if IsDate(B)=True then ....
// Если значение - число
if IsNumeric©=True then ... 
end;

Автор: Frees 23.1.2009, 12:43
TryStrToInt
TryStrToFloat

TryStrToDate()

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

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

Код

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

Автор: MadCoder 23.1.2009, 12:44
try... except предлагать не надо, т.к. у меня срабатывает внешний обработчик ошибок.

Автор: Akella 24.1.2009, 18:36
народ вы чё, а как же VarType smile 

Автор: MadCoder 24.1.2009, 19:50
Точно! Спасибо smile 

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

 var v: Variant
v:='10.02.2008'

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

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

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

Автор: Akella 26.1.2009, 09:01
 smile в таком случае все типы данные будут строковыми

Автор: MadCoder 26.1.2009, 10:42
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;

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)