| 
| 
 | Вопрос # 4 924/ вопрос решён / | 
 |  Приветствую, уважаемые эксперты!
 Есть база данных Firebird. Туда каждые 3 минуты складываются данные.
 Пишу программу визуализации данных в виде графика. Возникла такая проблема - при первом обращении процедура TForm1.Button3Click отрабатывает нормально, а если на форме еще раз кликнуть эту же кнопку - вызывается ошибка ---------------------------
 Chaz
 ---------------------------
 Access violation at address 004A6621 in module 'CHAZ.exe'. Read of address 00000055.
 ---------------------------
 
 
 Она выходит при пошаговой отладке на строчке :
 Active:=True;
 
 Кто может подсказать - где моя ошибка...?
 К вопросу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки вопроса) Приложение:Переключить в обычный режим procedure TForm1.Button3Click(Sender: TObject); var           begin        IBDataBase1.Connected:=true;      IBTransaction1.Active:=True;      IBQuery1.Database:=IBDataBase1;      IBQuery1.Transaction:=IBTransaction1;       SSQL:=TStringList.Create;      SSQL.Clear;           KolKanGr:=ExecSQL(SSQL);         SSQL.Free; if KolKanGr=0 thenBegin Button3.Enabled:=False;Exit;Endelse Label3.Caption:=''; if KolKanGr=-1 then   begin    end;    if Param30=1 then KolPoint:=49 else KolPoint:=481;        with Form1.IBQuery1 do   begin      RecNo:=i1;      MasKn[i1].MBNO:=FieldValues['MbNo'];      MasKn[i1].PTNO:=FieldValues['PtNo'];      MasKn[i1].NameKan:=FieldValues['Name'];      MasKn[i1].sign:=FieldValues['SIGN'];   end;    case Param30 of    1:begin       end;    2:begin       end;   end;         with Form1.IBQuery1 do      begin           SSql.Clear;         SSql.Add('SELECT D.DATADATE, sum(D.VALUE0) FROM GRITEMS GI INNER JOIN DATAPW D');         SSql.Add(' ON (GI.CSNO = D.CSNO) AND (GI.SSNO = D.SSNO) AND (GI.MBNO = D.MBNO) AND (GI.PTNO
= D.PTNO)');         SSql.Add(Format('WHERE (D.PARAM =%2d)',[PARAM30]));         SSql.Add(Format('AND (GI.GRNO =%2d)',[GRUPNOMER]));         SSql.Add(Format('AND (D.DATADATE>"%s")AND(D.DATADATE<="%s") group
 BY  D.DATADATE'         ,[DateTimeToStr(AVTime[1]),DateTimeToStr(AVTime[2])]));           Active:=False;         SQL:=SSql;          FetchAll;         First;         i:=0;         while not Eof do         begin               Inc(i);               MasValue[i]:=Fields[1].AsVariant;               Next; if Eof then break;         end;          SSQL.Free;       End;       ValueSum:=0;      if Param30=1 then Koef:=0.5 else Koef:=0.05;    begin      ValueSum:=ValueSum+MasValue[i]*Koef;       Series1.AddXY(i,ValueSum,'',clRed);  end;      Series2.AddXY(0,0,'',clBlue);      Series2.AddXY(KolPoint,POTREBLENIE,'',clBlue);        IBDataBase1.Connected:=false;       SSQL.Clear;      Button3.Enabled:=False;      IBTransaction1.Active:=False; end;
|  |   Вопрос задал: vitalik32 (статус: Посетитель)Вопрос отправлен: 17 января 2011, 09:04
 Состояние вопроса: решён, ответов: 0.
 |  
 Мини-форум вопросаВсего сообщений: 3; последнее сообщение — 17 января 2011, 09:44; участников в обсуждении: 2. 
|   | min@y™ (статус: Доктор наук), 17 января 2011, 09:26 [#1]: Active:=False;
SQL:=SSql; // Куда указывает SSql, если ты в строке 28 вызываешь его декструктор?
Active:=True;   //  - Вот на этой строчке при втором вызове процедуры выходит ошибка. Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | vitalik32 (статус: Посетитель), 17 января 2011, 09:42 [#2]:Но в первый вызов код работает же... |  
|   | vitalik32 (статус: Посетитель), 17 января 2011, 09:44 [#3]:Заремил эту строчку - теперь прога работает ....   Большое спасибо Вам! |  17 января 2011, 09:45: Статус вопроса изменён на решённый (изменил автор вопроса — vitalik32) Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |