![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
BEST13 |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 166 Регистрация: 11.4.2008 Где: Ukraine Репутация: нет Всего: нет |
Проблема в том, что вызов strTodate выдает ошибку:
В начале думал, может формат даты не правильный пробовал разные варианты: 10.10.2010 10/10/2010 10.10.10 10/10/10. В любом случае ошибка. Пробовал на всякий случай переименую инициализировать, не помогает. Вот код :
|
||||
|
|||||
superVad |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 735 Регистрация: 6.4.2006 Где: Черкассы, Украина Репутация: 4 Всего: 15 |
В какой строчке ошибка?
Что то мне кажется, что это вина не strtodate. После 29 строчки надо бы очистить текст запроса. Но это вообще не правильно как то - юзать один компонент для вставки и просмотра таким образом... |
|||
|
||||
k0rvin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 442 Регистрация: 24.1.2010 Репутация: 1 Всего: 5 |
попробуй объявить dateSent, dateReceived : TDate, а не TDateTime
Добавлено через 6 минут и 20 секунд Вообще, судя по квадратным скобкам в тексте запроса, я бы предположил, что ТС имеет дело с МС Аксессом. Если так, то у коллеги похожая проблема была, и дело не в StrToDate, а в том, что ADOQuery почему-то неправильно передает дату как параметр, если ее встроить в запрос конкатенацией, то запрос сработает нормально =/ -------------------- “Object-oriented design is the roman numerals of computing.” — Rob Pike All software sucks |
|||
|
||||
BEST13 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 166 Регистрация: 11.4.2008 Где: Ukraine Репутация: нет Всего: нет |
superVad, Ошибка после 13 строки. Насчет очистки, спасибо, пропустил вы правы; А не заметил потому, что до запроса не доходит.
k0rvin, Я пробовал делать конвертацию вообще на другой форме только пи запуске, проги , с введенной заранее датой, в итоге все равно ошибка. Да, и переменная типа Tdate не спасла меня... |
|||
|
||||
k0rvin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 442 Регистрация: 24.1.2010 Репутация: 1 Всего: 5 |
А попробуй формат "2010-10-10" (YYYY-MM-DD)
-------------------- “Object-oriented design is the roman numerals of computing.” — Rob Pike All software sucks |
|||
|
||||
BEST13 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 166 Регистрация: 11.4.2008 Где: Ukraine Репутация: нет Всего: нет |
k0rvin, В итоге все равно ошибка.
Я тут подумал, у меня какой то глюк в Аксесе не отображается дата в коротком формате(пробывал два офиса х64-х86), может дело в самой виндоус и может в нней какой-то глюк? |
|||
|
||||
БелАмор |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 209 Регистрация: 10.6.2010 Где: Россия Репутация: 5 Всего: 17 |
Пропущены двоеточия для двух параметров:
|
|||
|
||||
superVad |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 735 Регистрация: 6.4.2006 Где: Черкассы, Украина Репутация: 4 Всего: 15 |
Попробуй компонент может другой, конкретно для даты (TDateEdit). Тогда не надо будет конвертировать.
|
|||
|
||||
CodeMonkey |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 38 Всего: 89 |
Барабашки, не иначе. Что, и в пустом проекте тоже так же? -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
Первый раз вижу, чтобы при конвертации была ошибка access violation.
Ищи в другом месте. Обрати внимание, что access violation read of address 0x00000000 намекает тебе на то, что ты обращаешься к ещё не созданному объекту. Мне напоминает анекдот про грузинскую школу: - Кацо, сколка будэт 5ю5? - Двацасэм! - На да, гдэ-то так, двацапять-двацасэм... Ой, неужели так трудно отладчиком выяснить строку ошибки? |
|||
|
||||
BEST13 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 166 Регистрация: 11.4.2008 Где: Ukraine Репутация: нет Всего: нет |
БелАмор, да спасибо, я уже и сам заметил и исправил.
superVad, не вариант, есть условие использовать только стандартные компоненты. Да в пустом, тоже самое( Притом, что это функция, отлично работает в 7 делфи установленной параллельно( , Я пробовал создать пустой проект, и там просто с конвертировать и вылазит, эта ошибка. Ну, так я в отладчике и смотрел, вылетает ошибка на 13 строке, то есть когда нание перехожу, тогда и вылетает. ------------------- Я по пробывал запустить, этот проект на другом компе с 32х битной семеркой но с той же делфи, установлена с одного же диска, и все работает отлично... Я не знаю связано ли это , как-то, также здесь ( на томже компе ) в Аксесе не хочет отображаться дата в коротком формате в полях . Ставил и 32х и 64х битный аксесс. Может проблема в винде и у неё, что с параметрами даты? |
|||
|
||||
northener |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1361 Регистрация: 2.9.2010 Репутация: 8 Всего: 20 |
Блин!
Ну сколько раз нужно объяснять, что наличие AV - есть точное подтверждение, что в программе есть код неверно работающий с памятью, но отсутствие AV ровным счётом ничего не значит! Вранье. И как всегда виновата винда! -------------------- Но только лошади летают вдохновенно. Иначе лошади разбились бы мгновенно! |
|||
|
||||
CodeMonkey |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 38 Всего: 89 |
И причём тут Access, если у тебя в пустом проекте та же проблема? Как задают вопросы на форумах: Идет мент. Смотрит - фонарь стоит, под фонарем лужа, в луже мужик сидит. - Чё здесь делаешь? - Да вот, часы потерял. теперь ищу. Ну, мент думает - дай помогу. Искал-искал, весь перемазался - нету часов. - Слушай, мужик. Нету тут никаких часов! - Да я знаю. Я их вон там, возле забора потерял. - А ЧЕ ТЫ ИХ ЗДЕСЬ ИЩЕШЬ??? - А тут светлее. Логика железная. Добавлено @ 01:54 Кидай свой проект с барабашками сюда, будем резать. P.S. Пустой проект кидай, если не понял. Это сообщение отредактировал(а) CodeMonkey - 1.2.2012, 01:55 -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
superVad |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 735 Регистрация: 6.4.2006 Где: Черкассы, Украина Репутация: 4 Всего: 15 |
||||
|
||||
BEST13 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 166 Регистрация: 11.4.2008 Где: Ukraine Репутация: нет Всего: нет |
Всем огромное спасибо, за помощь и участие, плюсики будут)
Разобрался в чем, дела в настройках винды, слетел формат короткой даты.... там ничего не боло выбрано, не знаю каким образом, такое случилось. Когда выбрал, все заработало и аксес и делфи. |
|||
|
||||
Gwire |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 216 Регистрация: 7.8.2007 Где: Николаев Репутация: 1 Всего: 4 |
Это, тебе небольшой крэшь-тест. Не выдержала. Используй StrToDateTime(const S: string; const FormatSettings: TFormatSettings). А переменную типа TFormatSettings сохрани в том же TDataModule (пологою DM is TDataModule) И еще: Согласен с k0rvin. Используй лучше обычное суммирование строк. Или юзай лучше проверенный Format(). И он кстати принимает параметр TFormatSettings. Это сообщение отредактировал(а) Gwire - 9.2.2012, 16:42 |
|||
|
||||
k0rvin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 442 Регистрация: 24.1.2010 Репутация: 1 Всего: 5 |
Нет, это не лучше. -------------------- “Object-oriented design is the roman numerals of computing.” — Rob Pike All software sucks |
|||
|
||||
Gwire |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 216 Регистрация: 7.8.2007 Где: Николаев Репутация: 1 Всего: 4 |
По вашему ReallocMem(); Copy(); будет работать хуже чем for-to-do if-then begin ReallocMem(); Copy(); end; ? Сканирование с подстановкой никогда не будет работать стабильнее дополнения. Эти два типа эквивалентны. Они оба Double (TTime тоже) и имеют одинаковую структуру. Дни - целые, часы:минуты:секунды.милсек - дробные Их ввели для удобства написания кода. Это сообщение отредактировал(а) Gwire - 10.2.2012, 12:14 |
|||
|
||||
superVad |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 735 Регистрация: 6.4.2006 Где: Черкассы, Украина Репутация: 4 Всего: 15 |
Можно в начале работы программы устанавливать ShortDateFormat.
|
|||
|
||||
northener |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1361 Регистрация: 2.9.2010 Репутация: 8 Всего: 20 |
Можно. Но нужно при этом помнить и о TApplication.UpdateFormatSettings! Это сообщение отредактировал(а) northener - 11.2.2012, 04:09 -------------------- Но только лошади летают вдохновенно. Иначе лошади разбились бы мгновенно! |
|||
|
||||
k0rvin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 442 Регистрация: 24.1.2010 Репутация: 1 Всего: 5 |
от того что не безопасно и не надежно (форматы представления, например, дат могут отличаться в разных СУБД/ОС). И да, параметризованные запросы можно кешировать и исполнять пакетно с разными параметрами. Это сообщение отредактировал(а) k0rvin - 13.2.2012, 08:49 -------------------- “Object-oriented design is the roman numerals of computing.” — Rob Pike All software sucks |
|||
|
||||
Gwire |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 216 Регистрация: 7.8.2007 Где: Николаев Репутация: 1 Всего: 4 |
Для этого и придуманы TFormatSettings и, например в MS SQL, Set DATEFORMAT (в других тоже СУБД тоже наверняка есть). Приводишь их к общему виду и никаких проблем не возникает. А по поводу статьи в википедии - интересная статейка, но: 1) Если "злоумышленник" хакнул ехе-программу получил возможность менять значения параметров, то что ему запретит менять переменную содержащую запрос? 2) Если же вы сами предоставляете возможность пользователю вводить параметры запроса в ручную. Рекомендую изучить термин "Защита от дурака" (Википедия или Лукоморье) HTML-я и Javascript это тоже касается. Ну если, конечно, вы пишете для веб, и передаете параметры открытым каналом или их просто подставить, то такие вещи нужно учитывать. В PHP переменные не имеют определенного типа. Потому и возникают такие проблемы. В Delphi все проще - если я жду Integer (например 5 или 2435159) то туда никак не впихнуть String ('-1 OR 1=1') А задачу я решил бы как:
Это сообщение отредактировал(а) Gwire - 13.2.2012, 13:36 |
||||
|
|||||
k0rvin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 442 Регистрация: 24.1.2010 Репутация: 1 Всего: 5 |
изобретением собственного велосипеда вместо готового и проверенного решения. Хоть бы формат даты спрашивал у СУБД, а не в ручную задавал. И что там с кешированием для пакетной обработки запросов? -------------------- “Object-oriented design is the roman numerals of computing.” — Rob Pike All software sucks |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |