![]() |
| ||
|
|
Новости |
Поиск |
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
В чем проблема? Что не так?
junglecat (2014-04-13 23:26:00) [1]> [41] Dimka Maslov © (13.04.14 23:23)
> EncodeDate никто не пробовал использовать?
а он тоже нестабильно работает?
Dimka Maslov (2014-04-13 23:23:00) [2]EncodeDateникто не пробовал использовать?
Германн (2014-04-12 01:09:00) [3]Удалено модератором
Примечание: Создание пустых сообщений
Inovet (2014-04-12 00:23:00) [4]> [38] Германн © (12.04.14 00:21)
Ну я вроде как понял, что в отладчике уже потом было обнаружено, после неправильной работы где-то в программе, где переменная следовательно используется. Или я тогда не понял причину паники.
Германн (2014-04-12 00:21:00) [5]
> САМОЕ ГЛАВНОЕ: я нашел комбинацию, приводящую к верному/невернму
> решению.
Эта "комбинация" давно уже была названа в MBo © (11.04.14 07:32) [31]
И это не ошибка компилятора. Это ошибка программиста, который не знает как работает оптимизация компилятора Дельфи.
Но с некоторой натяжкой это можно назвать ошибкой отладчика Дельфи.
sdfdh (2014-04-11 22:40:00) [6]Коллеги!
За вешающее сообщение с решением! Возможно, кому-то в будущем поможет!
1. Все сообщения выше о том. что "типа "photoshop", конечно полная херня! Конечно, мне заняться больше не чем как верстать Вам страничку с выдуманной ошибкой.
2. ПО всей видимости то, на что я натолкнулся - это ошибка компилятора Delphi. Не знаю какая комбинация событий к ней приводит, так как, как я писал вверху в чистом новом проекте все работает ОК!
3. САМОЕ ГЛАВНОЕ: я нашел комбинацию, приводящую к верному/невернму решению. Комментировать ничего не буду, все и так ясно. Отдельное спасибо brotherза правильное направление решения!
Правильный ответ компилятора:
http://s1.ipicture.ru/uploads/20140411/hPeFJft3.jpg
Ошибочный ответ компилятора:
http://s1.ipicture.ru/uploads/20140411/6SIu1Aem.jpg
Блин! посмотрел на скрин. НИХЕРА не видно!
В общем во втором случае я комментул строку:
{cName:=DateTimeToStr(DateStartGantt); }
ВОт так!
Всем спасибо!
Проблема решена!
sdfdh (2014-04-11 21:10:00) [7]В общем понадобилось тоже самое в другой процедуре. Все то же! Та же ошибка!
Буду ставить другую Delphi и вручную переносить приложение...
junglecat (2014-04-11 10:50:00) [8]а может, это вообще фотошоп?
Германн (2014-04-11 10:42:00) [9]
> правда, на скриншоте синяя точка на данной строчке есть
Но на скриншоте значение dt в тултипе показано. Может отладчик уже про эту переменную забыл?
brother (2014-04-11 07:47:00) [10][32] видимо да, но
> правда, на скриншоте синяя точка на данной строчке есть
Inovet (2014-04-11 07:40:00) [11]Короче, надо было сразу писать
ShowMessage(DateTimeToStr(dt));
вместо "Я закончил".
MBo (2014-04-11 07:32:00) [12]В приведенном коде не видно, чтобы переменная dt использовалась. Компилятор может оптимизировать код, не выполняя ненужную работу
(правда, на скриншоте синяя точка на данной строчке есть)
brother (2014-04-11 07:27:00) [13]а где по коду он их задавливает хз? и мой пример же исключения не вызывает!
Inovet (2014-04-11 07:26:00) [14]> [28] brother © (11.04.14 07:24)
> то будет исключение
А автор их задавиливает. Не?
brother (2014-04-11 07:24:00) [15]> Давилось.
в описании к функции сказано, что если что-то не так, то будет исключение...
brother (2014-04-11 07:24:00) [16]> dt:= 0;
инициализация, но вообще, если небыло исключения, то StrToDateTime также инициализировало бы переменную, впрочем у меня д7, так что хз что там в д2005...
Inovet (2014-04-11 07:23:00) [17]> [24] brother © (11.04.14 07:20)
> ведь исключения нет?
Давилось.
sdfdh (2014-04-11 07:22:00) [18]Ну да, исключений не было.
Попытаюсь сегодня поудалять последовательно из Вашего кода строки, посмотреть на какой все становится по старому. Потом отпишусь.
Еще раз спасибо!
brother (2014-04-11 07:20:00) [19]хотя, это не ответило на вопрос: почему? ибо Ваш код и так работал...ведь исключения нет?
brother (2014-04-11 07:18:00) [20]а варнинги надо читать... ну и на всяк проверить на исключения...