![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Нестабильно работет StrToDateTime() [D2005]
sdfdh © (2014-04-10 20:49:00)Здравствуйте!
Необходимо кодировать текст в дату. Использую следующий код:
procedure TForm1.Button1Click(Sender: TObject);
Var
StrDate : string;
Fmt : TFormatSettings;
dt : TDateTime;
begin
fmt.ShortDateFormat:='dd.mm.yyyy';
fmt.DateSeparator :='.';
StrDate:='02.04.2014';
dt:=StrToDateTime(StrDate,Fmt);
end;
Переменной dt присваивается 02.04.2014
Однако, если я тот же код!!! Один в один, вставляю в свое приложение, то этот же код уже не работает. dt=30.12.1899
В чем проблема? Что не так?
sdfdh (2014-04-11 07:02:00) [21]To brother
Спасибо! Вот именно этот код заработал!
Не знаю, с чем это связано, но он возвращает то, что нужно 02.04.2014
Еще раз спасибо!
brother (2014-04-11 06:57:00) [22]зы. button135 O_o ! Однако хорошая программа ;)
brother (2014-04-11 06:53:00) [23]
procedure TForm1.Button1Click(Sender: TObject);
Var
StrDate : string;
Fmt : TFormatSettings;
dt : TDateTime;
begin
fmt.ShortDateFormat:='dd.mm.yyyy';
fmt.DateSeparator :='.';
StrDate:='02.04.2014';
dt:= 0;
try
dt:=StrToDateTime(StrDate,Fmt);
except
on E : Exception do
Showmessage(e.Message);
end;
showmessage(DateTimeToStr(dt));
end;
вот так попробуйте...
brother (2014-04-11 06:46:00) [24]> Рекордам Коран запрещает иметь Create?
запрещает не коран, а версия делфи, например д7 и ниже не имеют этого...
MonoLife (2014-04-11 06:00:00) [25]а, пардон, там 2-я же функция есть с параметром форматирования
MonoLife (2014-04-11 05:55:00) [26]StrToDate(), а там второй параметр нужен что ли?
StrDate:='02.04.2014';
dt:=StrToDateTime(StrDate);
Sapersky (2014-04-10 23:43:00) [27]Переменная на стеке, в таймсепараторе и прочих явно не заполняемых полях случайный мусор.
Так что да, Create, либо в старых версиях GetLocaleFormatSettings.
SergeyIT (2014-04-10 23:21:00) [28]А может таймсепаратор тоже равен '.' и крыша съезжает
Inovet (2014-04-10 23:11:00) [29]> [12] antonn © (10.04.14 23:02)
> локаль
Вот и надо выяснить. Приложение запускается там же, где и тестовый пример?
Inovet (2014-04-10 23:07:00) [30]> [11] junglecat (10.04.14 22:54)
> Create? у record?
Рекордам Коран запрещает иметь Create?
antonn (2014-04-10 23:02:00) [31]
>
> Имхо врешь. Или честно заблуждаешься.
локаль
junglecat (2014-04-10 22:54:00) [32]Create? у record?
Inovet (2014-04-10 22:44:00) [33]А если добавить
TFormatSettings.Create
перед заданием форматов?
sdfdh (2014-04-10 22:16:00) [34]StrToDate - тот же эффект (т.е. никакой)
junglecat (2014-04-10 22:07:00) [35]а почему не StrToDate, если время не нужно?
sdfdh (2014-04-10 21:35:00) [36]Создал новую переменную с именем, которого ТОЧНО в приложении нет.
Та же фигня:
http://s1.ipicture.ru/uploads/20140410/GsS45WZy.jpg
sdfdh (2014-04-10 21:33:00) [37]Коллеги, всем спасибо кто ответил!
Вот Скрин из моего приложения, который показывает, что я не вру и не ошибаюсь с переменными:
http://s1.ipicture.ru/uploads/20140410/OUWsouWR.jpg
Германн (2014-04-10 21:25:00) [38]Предположу что в программе есть две переменные dt.
Германн (2014-04-10 21:07:00) [39]
> если я тот же код!!! Один в один
Имхо врешь. Или честно заблуждаешься.
MBo (2014-04-10 21:07:00) [40]На всякий случай - 30.12.1899 означает, что в данной переменной записан (или остался) 0