Форум: "Начинающим";
Текущий архив: 2012.05.27;
Скачать: [xml.tar.bz2];
ВнизКак определить тип данных (число текст, дата) в переменной* Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.52 MB
Время: 0.003 c