kv75
21:22 04-05-2005 О глюках и Дельфи
Была у меня программа на Дельфи, работающая с БД. Работала себе эта программа корректно и горя не знала. Но понадобилось мне по не зависящим от меня причинам оформить её в виде веб-приложения для IIS.

Хотел было я оставить всё как есть, обойдясь минимальными изменениями, сделал WebModule, всё как положено. Добился, чтобы она подхватывала ini-файл, положив его для этого в директорию Windows... А она берёт и выдаёт ошибку типа "Access Violation". Тут я вспомнил, что уже сталкивался с этим когда-то – проблема в том, что веб-приложения почему-то не любят, когда много модулей.

Попробовал переместить всё из WebModule в DataModule. Ситуация не меняется. Проблема в том, что из некоторых классов я должен обращаться к компонентам, работающим с БД. А есть ощущение, что там примерно те же ограничения, что и при многопоточности. В общем, вместо нормального кода вида

MonthList := TMonthList.Create;

приходится писать

S := TStringList.Create;
try
DBGetMonths(S);
MonthList := TMonthList.Create(S);
finally
S.Free;
end;

Но самое весёлое в другом! В процедуре DM1.DBGetMonths я не могу писать

DM1.queMain.Next;

а могу только

queMain.Next;

Раньше я думал, что такие вещи должны отрабатываться компилятором как абсолютно идентичные, ан нет.

В общем, завтра продолжу конверсию.