Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ошибка при вызове StrToDate в Delphi XE2, Любой вызов выдает ошибку...  
:(
    Опции темы
BEST13
Дата 30.1.2012, 14:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 166
Регистрация: 11.4.2008
Где: Ukraine

Репутация: нет
Всего: нет



Проблема в том, что вызов strTodate выдает ошибку:
Цитата

First chance exception at $00423C3C. Exception class $C0000005 with message 'access violation at 0x00423c3c: read of address 0x00000000'. Process P_sklad.exe (7124)  


В начале думал, может формат даты не правильный пробовал разные варианты: 10.10.2010 10/10/2010  10.10.10 10/10/10. В любом случае ошибка.
Пробовал на всякий случай переименую инициализировать, не помогает. 
Вот код :
Код

procedure TF_add_rec.B_addClick(Sender: TObject);
var Nazv:string; tt, proizv, kol, izmer:integer;
    datesend,daterecieved:Tdatetime; cena, stoimost:real;
begin
 datesend:=date;
  Nazv:=E_add_nazv.Text;
  tt:=DBLCB_add_Type.KeyValue;
  proizv:=DBLCB_add_proizvod.KeyValue;
  cena:=strtofloat(E_add_cena.text);
  kol:=strtoint(E_add_kol.Text);
  izmer:=DBLCB_add_Izmer.KeyValue;
  stoimost:=strtofloat(E_add_stoim.text);
  datesend:=strtodate(E_add_datesend.Text);
  daterecieved:=strtodate(E_add_daterecievad.text);
  With DM.AQ_postavki do
  begin
    Close;
    SQL.Clear;
    SQL.Add('INSERT INTO Postavki ( NazvTovara, TovarType, Proizvoditel, Cena, Kol, Izmer, Stoimost, DateSend, DateReceived ) VALUES ( NazvTovara, :TovarType, Proizvoditel, :Cena, :Kol, :Izmer, :Stoimost, :DateSend, :DateReceived);');
    parameters.parambyname('NazvTovara').Value:= Nazv;
    parameters.parambyname('TovarType').Value:= tt;
    parameters.parambyname('Proizvoditel').Value:= proizv;
    parameters.parambyname('Cena').Value:= cena;
    parameters.parambyname('Kol').Value:= Kol;
    parameters.parambyname('Izmer').Value:= izmer;
    parameters.parambyname('Stoimost').Value:= stoimost;
    parameters.parambyname('DateSend').Value:= datesend;
    parameters.parambyname('DateReceived').Value:= daterecieved;
    ExecSQL;
    SQL.Add('SELECT Kod AS [ID], NazvTovara AS [Название],  TovarType AS [Тип],'+
 ' Proizvoditel AS [Производитель], Cena AS [Цена], Kol AS [Количество],'+
 ' Izmer AS [Измеряеться], Stoimost AS [Стоемость],'+
 ' DateSend AS [Дата отправки], DateReceived  AS [Дата получения]'+
 ' FROM Postavki; ');
    Open;
  end;
  F_main.DBG_postavki.Columns[0].Width:=30;
  F_main.DBG_postavki.Columns[1].Width:=150;
  F_main.DBG_postavki.Columns[2].Width:=100;
  F_main.DBG_postavki.Columns[3].Width:=60;
  F_main.DBG_postavki.Columns[4].Width:=50;
  F_main.DBG_postavki.Columns[5].Width:=50;
  F_main.DBG_postavki.Columns[6].Width:=40;
  F_main.DBG_postavki.Columns[7].Width:=40;
  F_main.DBG_postavki.Columns[8].Width:=50;
  F_main.DBG_postavki.Columns[9].Width:=50;
end;

   
PM MAIL ICQ GTalk   Вверх
superVad
Дата 30.1.2012, 15:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 735
Регистрация: 6.4.2006
Где: Черкассы, Украина

Репутация: 4
Всего: 15



В какой строчке ошибка?
Что то мне кажется, что это вина не strtodate.

После 29 строчки надо бы очистить текст запроса. Но это вообще не правильно как то - юзать один компонент для вставки и просмотра таким образом...
PM MAIL   Вверх
k0rvin
Дата 30.1.2012, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 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
PM MAIL   Вверх
BEST13
Дата 30.1.2012, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 166
Регистрация: 11.4.2008
Где: Ukraine

Репутация: нет
Всего: нет



superVad, Ошибка после 13 строки.  Насчет очистки, спасибо, пропустил вы правы; А не заметил потому, что до запроса не доходит.

k0rvin, Я пробовал делать конвертацию вообще на другой форме только пи запуске, проги , с введенной заранее датой, в итоге все равно ошибка. 
 Да, и переменная типа Tdate не спасла меня...
PM MAIL ICQ GTalk   Вверх
k0rvin
Дата 30.1.2012, 16:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 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
PM MAIL   Вверх
BEST13
Дата 30.1.2012, 16:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 166
Регистрация: 11.4.2008
Где: Ukraine

Репутация: нет
Всего: нет



k0rvin,  В итоге все равно ошибка. 
Я тут подумал, у меня какой то глюк в Аксесе не отображается дата в коротком формате(пробывал два офиса х64-х86), может дело  в самой виндоус и может в нней какой-то глюк?
PM MAIL ICQ GTalk   Вверх
БелАмор
Дата 30.1.2012, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 209
Регистрация: 10.6.2010
Где: Россия

Репутация: 5
Всего: 17



Пропущены двоеточия для двух параметров:

Цитата(BEST13 @  30.1.2012,  14:42 Найти цитируемый пост)
    SQL.Add('INSERT INTO Postavki ( NazvTovara, TovarType, Proizvoditel, Cena, Kol, Izmer, Stoimost, DateSend, DateReceived ) VALUES ( NazvTovara, :TovarType, Proizvoditel, :Cena, :Kol, :Izmer, :Stoimost, :DateSend, :DateReceived);');


PM   Вверх
superVad
Дата 30.1.2012, 18:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 735
Регистрация: 6.4.2006
Где: Черкассы, Украина

Репутация: 4
Всего: 15



Попробуй компонент может другой, конкретно для даты (TDateEdit). Тогда не надо будет конвертировать.
PM MAIL   Вверх
CodeMonkey
Дата 31.1.2012, 02:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 38
Всего: 89



Цитата
Я пробовал делать конвертацию вообще на другой форме только пи запуске, проги , с введенной заранее датой, в итоге все равно ошибка


Барабашки, не иначе.

Что, и в пустом проекте тоже так же? 


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Akella
  Дата 31.1.2012, 10:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



Первый раз вижу, чтобы при конвертации была ошибка access violation.
Ищи в другом месте. Обрати внимание, что access violation read of address 0x00000000 намекает тебе на то, что ты обращаешься к ещё не созданному объекту.




Цитата(superVad @  30.1.2012,  15:27 Найти цитируемый пост)
В какой строчке ошибка?


Цитата(BEST13 @  30.1.2012,  15:51 Найти цитируемый пост)
superVad, Ошибка после 13 строки.


Мне напоминает анекдот про грузинскую школу:
- Кацо, сколка будэт 5ю5?
- Двацасэм!
- На да, гдэ-то так, двацапять-двацасэм...


Ой, неужели так трудно отладчиком выяснить строку ошибки?
PM MAIL   Вверх
BEST13
Дата 31.1.2012, 23:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 166
Регистрация: 11.4.2008
Где: Ukraine

Репутация: нет
Всего: нет



БелАмор,  да спасибо, я уже и сам заметил и исправил.  

superVad,  не вариант, есть условие использовать только стандартные компоненты.

Цитата(CodeMonkey @  31.1.2012,  02:31 Найти цитируемый пост)

Барабашки, не иначе.

Что, и в пустом проекте тоже так же?  


Да в пустом, тоже самое(

Притом, что это функция, отлично работает в 7 делфи установленной параллельно(  
Цитата(Akella @  31.1.2012,  10:50 Найти цитируемый пост)
Первый раз вижу, чтобы при конвертации была ошибка access violation.
Ищи в другом месте. Обрати внимание, что access violation read of address 0x00000000 намекает тебе на то, что ты обращаешься к ещё не созданному объекту.
,
 Я пробовал создать пустой проект, и там просто с конвертировать и вылазит, эта ошибка.

Цитата(Akella @  31.1.2012,  10:50 Найти цитируемый пост)

Ой, неужели так трудно отладчиком выяснить строку ошибки? 


Ну, так я в отладчике и смотрел, вылетает ошибка на 13 строке, то есть когда нание перехожу, тогда и вылетает.
-------------------
Я по пробывал запустить, этот проект на другом компе с 32х битной семеркой но с той же делфи, установлена с одного же диска, и все работает отлично...

Я не знаю связано ли это , как-то, также здесь ( на томже компе ) в Аксесе не хочет отображаться дата в коротком формате в полях .
Ставил и 32х и 64х битный аксесс. Может проблема в винде и у неё, что  с параметрами даты?

  

PM MAIL ICQ GTalk   Вверх
northener
Дата 1.2.2012, 00:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1361
Регистрация: 2.9.2010

Репутация: 8
Всего: 20



Блин!
Ну сколько раз нужно объяснять, что наличие AV - есть точное подтверждение, что в программе есть код неверно работающий с памятью, но отсутствие AV ровным счётом ничего не значит!

Цитата(BEST13 @  31.1.2012,  23:12 Найти цитируемый пост)
Да в пустом, тоже самое(

Вранье. 
И как всегда виновата винда!


--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
CodeMonkey
Дата 1.2.2012, 01:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 38
Всего: 89



Цитата
Я не знаю связано ли это , как-то, также здесь ( на томже компе ) в Аксесе не хочет отображаться дата в коротком формате в полях .
Ставил и 32х и 64х битный аксесс. Может проблема в винде и у неё, что  с параметрами даты?


И причём тут Access, если у тебя в пустом проекте та же проблема?

Как задают вопросы на форумах:

Идет мент. Смотрит - фонарь стоит, под фонарем лужа, в луже мужик сидит.
- Чё здесь делаешь?
- Да вот, часы потерял. теперь ищу.
Ну, мент думает - дай помогу. Искал-искал, весь перемазался - нету часов.
- Слушай, мужик. Нету тут никаких часов!
- Да я знаю. Я их вон там, возле забора потерял.
- А ЧЕ ТЫ ИХ ЗДЕСЬ ИЩЕШЬ???
- А тут светлее.


Логика железная.

Добавлено @ 01:54
Кидай свой проект с барабашками сюда, будем резать.

P.S. Пустой проект кидай, если не понял.

Это сообщение отредактировал(а) CodeMonkey - 1.2.2012, 01:55


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
superVad
Дата 1.2.2012, 11:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 735
Регистрация: 6.4.2006
Где: Черкассы, Украина

Репутация: 4
Всего: 15



BEST13, есть TDateTimePicker - вроде стандартный.

А так то, конечно:
Цитата(CodeMonkey @  1.2.2012,  00:51 Найти цитируемый пост)
Кидай свой проект с барабашками сюда, будем резать.P.S. Пустой проект кидай, если не понял.


PM MAIL   Вверх
BEST13
Дата 5.2.2012, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 166
Регистрация: 11.4.2008
Где: Ukraine

Репутация: нет
Всего: нет



Всем огромное спасибо, за помощь и участие, плюсики будут)
Разобрался в чем, дела  в настройках винды, слетел формат короткой даты.... там ничего не боло выбрано, не знаю каким образом, такое случилось. Когда выбрал, все заработало и аксес и делфи.   
PM MAIL ICQ GTalk   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0936 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.