Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Закрытая тема
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 09.10.2008, 23:02
ApxaHGe1 ApxaHGe1 вне форума
Активный
 
Регистрация: 08.04.2008
Адрес: Нижний новгород
Сообщения: 311
Репутация: 38
По умолчанию Stuck Overflow

Народ нужна помощь, пишу программу, вроде бы как уже закончил писать, но при различных ее тестах... до выхода в паблик стала наблюдаться ошибка Stuck Overflow

Наблюдаеться она при работе с ДБГрид, а точнее если в БДГрид выведено записей > 1, и при переходе на запись №2 сразу же вылетает Stuck Overflow

Часть Кода программы
Код:
procedure TForm4.FormCreate(Sender: TObject);
begin
AssignFile (ini,'ip.ini');
Reset (ini);
Read (ini,server);
CloseFile (ini);
//Создаем mysql конект
ZConnection1.HostName:=server;
ZConnection1.Port:=3306;
ZConnection1.Database:='Releaser';
ZConnection1.User:='*******';
ZConnection1.Password:='*********';
ZConnection1.Protocol:='mysql';
ZConnection1.Connect;
end;

procedure TForm4.ComboBox1Change(Sender: TObject);
begin
if (ComboBox1.Text='') or (ComboBox1.Text='  ') or (ComboBox1.Text='        ') or (ComboBox1.Text='            Категории') then
begin
ShowMessage ('Вы должны выбрать одну из предложенных категорий');
end;
if ComboBox1.Text='Фильмы' then
prefix:='Films';
if ComboBox1.Text='Игры' then
prefix:='Games';
if ComboBox1.Text='Музыка' then
prefix:='Music';
if ComboBox1.Text='Софт' then
prefix:='Soft';
ZTable1.TableName:=prefix;
ZTable1.Active:=True;
//DataSource1.DataSet.Active:=True;
end;

end.
В кратце... при изменени записи в Комбобокс1
Меняеться таблица просмотра данных, но если в таблице скажем "table_2" записей = 3 то стак оверфлоу

буду благодарен любой помощи
  #2  
Старый 09.10.2008, 23:10
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,087
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Ну да, событие OnChange комбобокса внутри себя меняет значение этого комбобокса. Естественно, получаешь ошибку Stack overflow (переполнение стека), т.к обработка изменения приводит к запуску еще одной обработки (изменение значения).

Попроьбуй в начале отключить этот обработчик, а в конце его подключить обратно:
Код:
procedure TForm4.ComboBox1Change(Sender: TObject);
begin
  ComboBox1.Onchange := Nil;
  // Здесь как и было раньше (твой код)
  ComboBox1.Onchange := ComboBox1Change;
end;
  #3  
Старый 10.10.2008, 00:20
ApxaHGe1 ApxaHGe1 вне форума
Активный
 
Регистрация: 08.04.2008
Адрес: Нижний новгород
Сообщения: 311
Репутация: 38
По умолчанию

Не это не естественно, во первых при событии Onchange он просто записывает название таблиц,а потом уже поставляет переменную вкак имя таблицы, т.е. он выбирает только 1 раз!
но спасибо за подсказку
Правдо не работает(
  #4  
Старый 10.10.2008, 00:23
ApxaHGe1 ApxaHGe1 вне форума
Активный
 
Регистрация: 08.04.2008
Адрес: Нижний новгород
Сообщения: 311
Репутация: 38
По умолчанию

Даже при таком раскладе я получаю оверфлоу!
Код:
procedure TForm4.Button1Click(Sender: TObject);
begin
prefix:='Music';
ZTable1.TableName:=prefix;
ZTable1.Active:=True;
DataSource1.DataSet.Active:=True;
end;
  #5  
Старый 10.10.2008, 01:17
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,087
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Полный проект в студию.
Вообще, либо компоненты доступа к БД кривые, либо у тебя еще где-то куча кода. А на какой строке кода показывает отладчик ошибку?
  #6  
Старый 10.10.2008, 10:46
ApxaHGe1 ApxaHGe1 вне форума
Активный
 
Регистрация: 08.04.2008
Адрес: Нижний новгород
Сообщения: 311
Репутация: 38
По умолчанию

Ошибку показывает вообще на первой форме,
procedure TForm1.N10Click(Sender: TObject);
begin
Form4.showmodal;
end;

компоненты нормальные, раньше такого не было
Использую зеос

полный проэкт тут
База тут
  #7  
Старый 12.10.2008, 15:21
ApxaHGe1 ApxaHGe1 вне форума
Активный
 
Регистрация: 08.04.2008
Адрес: Нижний новгород
Сообщения: 311
Репутация: 38
По умолчанию

Тема закрыта, вопрос решен
Закрытая тема


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 18:45.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025