Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2012.05.27;
Скачать: CL | DM;

Вниз

Как определить тип данных (число текст, дата) в переменной*   Найти похожие ветки 

 
jiura   (2012-01-23 16:23) [0]

Здравствуйте!
Есть переменная содержащая определенное значение.
Как определить тип этих значений: Дата, число (целое, дробное), текст и т.д.? Вроде как через VarType можно сделать...но что-то я не разобрался...


 
Медвежонок Пятачок ©   (2012-01-23 16:26) [1]

>Есть переменная содержащая определенное значение.
myvar := "первое января сто рублей фторник";


 
jiura   (2012-01-23 17:09) [2]

Ну да....Только лучше вот так:
myvar := "1000";

А теперь необходимо узнать является и значение переменной числом? Так как в другом случае в myvar  может быть, например, дата:

myvar := "12.02.12";


 
Медвежонок Пятачок ©   (2012-01-23 17:12) [3]

Не является.
В этой переменной лежит строка.


 
Anatoly Podgoretsky ©   (2012-01-23 17:41) [4]

> jiura  (23.01.2012 17:09:02)  [2]

А если "12"?


 
Дмитрий Комаров ©   (2012-01-23 19:44) [5]

myvar := strtodate("12.02.2012") - дата
myvar := "12.02.12" - строка

myvar := 1000 - число
myvar := "1000" - строка


 
_Юрий   (2012-01-23 20:08) [6]

TryStrToFloat, TryStrToDate,  TryStrToInt
в случае, если переменная строкового типа


 
Anatoly Podgoretsky ©   (2012-01-23 21:02) [7]

> _Юрий  (23.01.2012 20:08:06)  [6]

Любая из этих функций даст TRUE


 
Cobalt ©   (2012-01-23 22:05) [8]

Value : Variant;
...
   case TVarData(Value).VType of
     varSingle : Result := TVarData(Value).VSingle;
     varDouble : Result := TVarData(Value).VDouble;
     varCurrency : Result := TVarData(Value).VCurrency;


 
Dimka Maslov ©   (2012-01-23 22:13) [9]

Вообще-то тип переменной строго задаётся при её объявлении. Если мы имеем ввиду variant, то правильнее говорить о типе данных, который проверяется через VarType и никаких затруднений быть не должно. Если возникают, то извините.


 
antonn ©   (2012-01-23 23:17) [10]


> Dimka Maslov ©   (23.01.12 22:13) [9]
>
> Вообще-то тип переменной строго задаётся при её объявлении

это конференция "начинающие", им простительно задавать неточные вопросы.

все ведь правильно поняли что человек хочет, но изголяются.


 
Inovet ©   (2012-01-23 23:21) [11]

> [10] antonn ©   (23.01.12 23:17)
> все ведь правильно поняли что человек хочет

Я не понял и не уверен, что автор сам понимает.


 
DVM ©   (2012-01-23 23:39) [12]


> Я не понял и не уверен, что автор сам понимает.
>
>

Он хочет знать когда у него в строке число, когда дата/время и т.д.


 
sniknik ©   (2012-01-23 23:44) [13]

> Он хочет знать когда у него в строке число, когда дата/время и т.д.
ага, и
> Вроде как через VarType можно сделать...но что-то я не разобрался...
в строке...


 
sniknik ©   (2012-01-23 23:48) [14]

p.s. решается не задача, "решается" то, как, по представлению автора, ее нужно решать.


 
Плохиш ©   (2012-01-24 02:44) [15]


> antonn ©   (23.01.12 23:17) [10]


> все ведь правильно поняли что человек хочет, но изголяются.

Так начни с себя. Не изголяйся над человеком, а ответь на его вопрос.


 
Dimka Maslov ©   (2012-01-24 09:34) [16]


> antonn ©   (23.01.12 23:17) [10]


Дело в начинающейся неточности вопроса, а в очередном случае непонимания матчасти. Возможность преобразования строки в число или в дату не имеют никакого отношения к VarType.


 
OW ©   (2012-01-24 10:56) [17]

надо писать свою функцию

Res := 0;
if TryStrToInt -> Res := Res or 1;
if TryStrToDate -> Res := Res or 10b;
if TryStrToAother -> Res := Res or

на выходе в соответствующих битах будет сказано чем является.


 
Андреевич   (2012-01-24 11:28) [18]


> Дело в начинающейся неточности вопроса, а в очередном случае
> непонимания матчасти. Возможность преобразования строки
> в число или в дату не имеют никакого отношения к VarType.
>

какой еще матчасти? не дельфи единым. Есть еще ПХП... начинающий попробовавший php может ожидать странных вещей с точки зрения дельфиста.


> OW ©   (24.01.12 10:56) [17]

дату наверное придется последней делать, представление ее в строковой форме и в стотысячах локалей, имхо, не меньший костыль чем однобайтные кодировки :)


 
Дмитрий Комаров ©   (2012-01-24 11:54) [19]


> Он хочет знать когда у него в строке число, когда дата/время
> и т.д.


хотелось бы знать для чего. подобные ситуации часто получаются от неправильной реализации.
Если все же есть необходимость хранить в одной переменной данные разных типов - лучше использовать вариант. Если данные все таки в строке - тогда TRYStrTo. Но что будете делать если в переменной хранится СТРОКА "030" и строка "30" например. В предметной области это могут быть разные значения имеющие разный смысл, а функция оба значения вернет как ЧИСЛО 30.

Так что надо смотреть для чего это делается.


 
Ega23 ©   (2012-01-24 12:30) [20]


> Так начни с себя. Не изголяйся над человеком, а ответь на
> его вопрос.


Он не умеет.


 
Ega23 ©   (2012-01-24 12:31) [21]


>  Есть еще ПХП... начинающий попробовавший php может ожидать
> странных вещей с точки зрения дельфиста.


Отнюдь, если учесть, что там всё суть вариант.


 
Cobalt ©   (2012-01-24 12:48) [22]

Для ПХП есть тоже самое:
http://www.php.net/manual/en/function.is-integer.php


 
Ega23 ©   (2012-01-24 13:08) [23]


> Для ПХП есть тоже самое:

Для PHP есть == и ===, чего нет одним оператором в Delphi.
Но если принять за основу, что всё в PHP суть вариант, причём саморасширяющийся (в части, например, выхода за php_max_int), то никаких проблем с переводом этого в Delphi возникнуть не должно.


 
Dimka Maslov ©   (2012-01-24 13:38) [24]


>
> какой еще матчасти?


Той самой, которую следует изучать. Предполагаемая связь с пхп - не оправдание.


 
Андреевич   (2012-01-24 15:53) [25]


> Он не умеет.

именно


> Предполагаемая связь с пхп - не оправдание.

название конференции. более чем


 
Dimka Maslov ©   (2012-01-24 16:38) [26]


>  более чем


Любой начинающий обязан изучить хотя бы основы предмета, а потом уже задавать вопросы, выказывающие, что он даже не утрудил себя этим.


 
Андреевич   (2012-01-24 20:08) [27]


> Любой начинающий обязан

...никому и ничего :)


 
Dimka Maslov ©   (2012-01-24 20:22) [28]


> ...никому и ничего :)


Фобос-грунт тоже запускали с мыслью, что никому и ничего изучать не обязаны...


 
antonn ©   (2012-01-24 22:48) [29]


> Фобос-грунт тоже запускали с мыслью, что никому и ничего
> изучать не обязаны...

неужели начинающие запускали? :)
наверное бесплатно все делали, раз не должны и не обязаны были предоставить результат по вложенным средствам, все на энтузиазме =)


 
Dimka Maslov ©   (2012-01-24 23:12) [30]


> неужели начинающие запускали?


Вполне могли выиграть тендер на поставку ПО программисты из ООО "Вектор", которые не знали про один случай с американским спутником. Он тоже, вроде, к Марсу летел.


 
antonn ©   (2012-01-24 23:14) [31]

про спутник или про случай с разгонной ступенью, которая постоянно отклонялась на слишком большой угол? :)


 
Dimka Maslov ©   (2012-01-24 23:18) [32]

Нам ещё на первом уроке информатики аж в 1992 году рассказывали жуткую историю, про то, как из-за одной точки с запятой аппарат не долетел до цели.


 
Dennis I. Komarov ©   (2012-01-25 00:02) [33]

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


 
Anatoly Podgoretsky ©   (2012-01-25 10:31) [34]


> > Любой начинающий обязан
>
> ...никому и ничего :)

Это ему ничем не обязаны, а у него много обязанностей



Страницы: 1 вся ветка

Текущий архив: 2012.05.27;
Скачать: CL | DM;

Наверх




Память: 0.55 MB
Время: 0.014 c
2-1326976052
gvozdkoff
2012-01-19 16:27
2012.05.27
google maps - трек по координатам


15-1326622187
Столешник
2012-01-15 14:09
2012.05.27
Компьютерные столы


2-1327316580
dis12345
2012-01-23 15:03
2012.05.27
CAPS Lock установить программно верх


15-1326913814
PEAKTOP
2012-01-18 23:10
2012.05.27
Самообучающаяся программа


2-1326979548
Artem
2012-01-19 17:25
2012.05.27
Как по-простому обнулить record?