Была у меня программа на Дельфи, работающая с БД. Работала себе эта программа корректно и горя не знала. Но понадобилось мне по не зависящим от меня причинам оформить её в виде веб-приложения для 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;
Раньше я думал, что такие вещи должны отрабатываться компилятором как абсолютно идентичные, ан нет.
В общем, завтра продолжу конверсию.
Я жив
[Print]
kv75