Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 4 924

/ вопрос решён /

Приветствую, уважаемые эксперты!

Есть база данных Firebird. Туда каждые 3 минуты складываются данные.
Пишу программу визуализации данных в виде графика. Возникла такая проблема - при первом обращении процедура TForm1.Button3Click отрабатывает нормально, а если на форме еще раз кликнуть эту же кнопку - вызывается ошибка ---------------------------
Chaz
---------------------------
Access violation at address 004A6621 in module 'CHAZ.exe'. Read of address 00000055.
---------------------------


Она выходит при пошаговой отладке на строчке :
Active:=True;

Кто может подсказать - где моя ошибка...?

К вопросу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки вопроса)

Приложение:
  1. procedure TForm1.Button3Click(Sender: TObject);
  2.  
  3. var
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15. begin
  16.  
  17.  
  18. IBDataBase1.Connected:=true;
  19. IBTransaction1.Active:=True;
  20. IBQuery1.Database:=IBDataBase1;
  21. IBQuery1.Transaction:=IBTransaction1;
  22.  
  23. SSQL:=TStringList.Create;
  24. SSQL.Clear;
  25.  
  26.  
  27. KolKanGr:=ExecSQL(SSQL);
  28. SSQL.Free;
  29.  
  30. if KolKanGr=0 then
  31. Begin
  32.  
  33. Button3.Enabled:=False;
  34. Exit;
  35. End
  36. else Label3.Caption:='';
  37.  
  38. if KolKanGr=-1 then
  39. begin
  40.  
  41. end;
  42.  
  43.  
  44.  
  45.  
  46. if Param30=1 then KolPoint:=49 else KolPoint:=481;
  47.  
  48.  
  49.  
  50.  
  51.  
  52. with Form1.IBQuery1 do
  53. begin
  54. RecNo:=i1;
  55. MasKn[i1].MBNO:=FieldValues['MbNo'];
  56. MasKn[i1].PTNO:=FieldValues['PtNo'];
  57. MasKn[i1].NameKan:=FieldValues['Name'];
  58. MasKn[i1].sign:=FieldValues['SIGN'];
  59. end;
  60.  
  61. case Param30 of
  62. 1:begin
  63.  
  64. end;
  65. 2:begin
  66.  
  67. end;
  68. end;
  69.  
  70.  
  71.  
  72. with Form1.IBQuery1 do
  73. begin
  74.  
  75.  
  76. SSql.Clear;
  77. SSql.Add('SELECT D.DATADATE, sum(D.VALUE0) FROM GRITEMS GI INNER JOIN DATAPW D');
  78. SSql.Add(' ON (GI.CSNO = D.CSNO) AND (GI.SSNO = D.SSNO) AND (GI.MBNO = D.MBNO) AND (GI.PTNO = D.PTNO)');
  79. SSql.Add(Format('WHERE (D.PARAM =%2d)',[PARAM30]));
  80. SSql.Add(Format('AND (GI.GRNO =%2d)',[GRUPNOMER]));
  81. SSql.Add(Format('AND (D.DATADATE>"%s")AND(D.DATADATE<="%s") group BY D.DATADATE'
  82. ,[DateTimeToStr(AVTime[1]),DateTimeToStr(AVTime[2])]));
  83.  
  84.  
  85. Active:=False;
  86. SQL:=SSql;
  87.  
  88. FetchAll;
  89. First;
  90. i:=0;
  91. while not Eof do
  92. begin
  93. Inc(i);
  94. MasValue[i]:=Fields[1].AsVariant;
  95. Next; if Eof then break;
  96. end;
  97.  
  98. SSQL.Free;
  99.  
  100. End;
  101.  
  102. ValueSum:=0;
  103. if Param30=1 then Koef:=0.5 else Koef:=0.05;
  104.  
  105.  
  106. begin
  107. ValueSum:=ValueSum+MasValue[i]*Koef;
  108.  
  109. Series1.AddXY(i,ValueSum,'',clRed);
  110. end;
  111. Series2.AddXY(0,0,'',clBlue);
  112. Series2.AddXY(KolPoint,POTREBLENIE,'',clBlue);
  113.  
  114.  
  115. IBDataBase1.Connected:=false;
  116.  
  117. SSQL.Clear;
  118. Button3.Enabled:=False;
  119. IBTransaction1.Active:=False;
  120.  
  121. end;


vitalik32 Вопрос решён, но можно продолжить его обсуждение в мини-форуме

Вопрос задал: vitalik32 (статус: Посетитель)
Вопрос отправлен: 17 января 2011, 09:04
Состояние вопроса: решён, ответов: 0.


Мини-форум вопроса

Всего сообщений: 3; последнее сообщение — 17 января 2011, 09:44; участников в обсуждении: 2.
min@y™

min@y™ (статус: Доктор наук), 17 января 2011, 09:26 [#1]:

Active:=False;
SQL:=SSql; // Куда указывает SSql, если ты в строке 28 вызываешь его декструктор?
Active:=True;   //  - Вот на этой строчке при втором вызове процедуры выходит ошибка.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
vitalik32

vitalik32 (статус: Посетитель), 17 января 2011, 09:42 [#2]:

Но в первый вызов код работает же...
vitalik32

vitalik32 (статус: Посетитель), 17 января 2011, 09:44 [#3]:

Заремил эту строчку - теперь прога работает .... Большое спасибо Вам!

17 января 2011, 09:45: Статус вопроса изменён на решённый (изменил автор вопроса — vitalik32)

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:55
Выполнено за 0.02 сек.