Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Access violation в TWebModule [D6, MySQL]


Zanik ©   (2003-11-07 15:23:00) 

Мастаки!

Помогите разобраться. Использую Zeos для подключения к MySQL. Пишу CGI приложение. Создал свой метод у TWebModule в секции public. В нем обращаюсь к запросу

...
with dm.getMaxMonth do // <- access violation
begin
if Active then Close;
Open;
max_m := FieldByName("months").AsInteger;
end;
...


Смотрю при отладке, а dm - указывает на nil. Как такое может быть? Проверял событие OnCreate - оно выполняется. Подскажите что делать? где рыть?


Плохиш_   (2003-11-07 16:05:00) [1]

Не используй dm.


Плохиш_   (2003-11-07 16:03:00) [2]

Смотри, что ты делаешь с getMaxMonth во всей программе. Где-то она об-nil-яется или уничтожается.


Sandman25   (2003-11-07 16:02:00) [3]

Тогда я тоже не понимаю, как dm может быть nil...
Может dmWebActionItem1Action Вы вызываете из OnCreate?


Zanik   (2003-11-07 15:57:00) [4]

Посмотри демку в Internet\WebServ

ну и ? ничего нового не узнал :(


Zanik   (2003-11-07 15:55:00) [5]

Откуда вызывается SaveTelCard и т.д.?

procedure Tdm.dmWebActionItem1Action


Zanik   (2003-11-07 15:53:00) [6]

Как создается dm?
dm := Tdm.Create...?

begin
Application.Initialize;
Application.CreateForm(Tdm, dm);
Application.Run;
end

тоже Access Violation? На какой строчке?
в той же что и раньше


Плохиш_   (2003-11-07 15:52:00) [7]

>Zanik

Посмотри демку в Internet\WebServ


Плохиш_   (2003-11-07 15:50:00) [8]

Откуда вызывается SaveTelCard и т.д.?


Sandman25   (2003-11-07 15:49:00) [9]

Как создается dm?
dm := Tdm.Create...?

>>Зачем вообще писать dm,
>убирал , таже фигня :(

В смысле? При
with getMaxMonth do
begin
if Active then Close;
Open;
max_m := FieldByName("months").AsInteger;
end;

тоже Access Violation? На какой строчке?


Zanik   (2003-11-07 15:44:00) [10]

Плохиш_ (07.11.03 15:41) [7]
всегда писал так
var
dm: Tdm;
и не было трудностей... а это чего-то глюк...


Zanik   (2003-11-07 15:42:00) [11]

>Вы наверное вызываете этот метод из OnCreate,
нет, из SaveTelCard
>Зачем вообще писать dm,
убирал , таже фигня :(


Плохиш_   (2003-11-07 15:41:00) [12]

Где строчка

function dm: TWebModule;
?


Sandman25   (2003-11-07 15:40:00) [13]

Зачем вообще писать dm, если обращение происходит из его метода, насколько я понимаю?
Вы наверное вызываете этот метод из OnCreate, когда dm еще не присвоено значение.


Zanik   (2003-11-07 15:38:00) [14]

type
Tdm = class(TWebModule)
getMaxMonth: TZZMySqlQuery;
ckop2: TZZMySqlDatabase;
ckop2tr: TZZMySqlTransact;
getDataCurrMonth: TZZMySqlQuery;
getDataMaxMonth: TZZMySqlQuery;
getDataPriorMonth: TZZMySqlQuery;
getTotal: TZZMySqlQuery;
result: TPageProducer;
procedure TotalLegendText(Sender: TCustomAxisPanel;
LegendStyle: TLegendStyle; Index: Integer; var LegendText: String);
procedure DayLegendText(Sender: TCustomAxisPanel;
LegendStyle: TLegendStyle; Index: Integer; var LegendText: String);
procedure dmWebActionItem1Action(Sender: TObject; Request: TWebRequest;
Response: TWebResponse; var Handled: Boolean);
procedure resultHTMLTag(Sender: TObject; Tag: TTag;
const TagString: String; TagParams: TStrings;
var ReplaceText: String);
private
{ Private declarations }
public
{ Public declarations }
procedure SaveTelCard( sd, ed, yyyy: integer );
procedure GetStatPicture( type_stat, sd, ed, yyyy: integer );
end;


Плохиш_   (2003-11-07 15:37:00) [15]

Приведите описание dm, пожалуйста


Zanik   (2003-11-07 15:36:00) [16]

OnCreate объекта TWebModule?

dm - екземпляр TWebModule


Sandman25   (2003-11-07 15:33:00) [17]

>Проверял событие OnCreate - оно выполняется.

OnCreate объекта TWebModule? Или все-таки dm?


Плохиш_   (2003-11-07 15:33:00) [18]

Что такое dm?
В cgi вообще-то для обрашения к модулям создаётся function.


Наверх

Титульная страница Поиск, карта сайта Написать письмо