Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.004 c
15-1327310711
Pavia
2012-01-23 13:25
2012.05.27
Линейные графики


1-1293713705
Vidi
2010-12-30 15:55
2012.05.27
Запись данных в Excel. Как найти заданную пользователем ячейку?


2-1327052281
3asys
2012-01-20 13:38
2012.05.27
копирование изображения формы


2-1326976172
3asys
2012-01-19 16:29
2012.05.27
рисование поверх документов


15-1326438236
Омлет
2012-01-13 11:03
2012.05.27
Танк по асфальту





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский