| 
| 
 | Вопрос # 1 159/ вопрос открыт / | 
 |  Здравствуйте, эксперты!Я делаю запрос в DLL, потом вызываю его процедурой. Выходит все хорошо, но сталкнулся с такой ситуацией, при создании параметра из DLL, возникает ошибка.
 Запрос естественно выполнимый, т. е. В виде Insert , Delete или Update. Где искать причину не могу найти?
 Приложение:Переключить в обычный режим Procedure CreateQueryMy(QDataBaseName: String; QSQL: String; valDate:TDateTime); stdcall;begin Result:=True; //Query1:= TQuery.Create(nil);  try    Query1.DataBaseName:=QDataBaseName;    Query1.SQL.Text:=QSQL;     Query1.Prepare;    Query1.Params[0].AsDateTime:=valDate;         Query1.ExecSQL;   finally    Query1.Close;    Query1.Free;  end; end;
|  |   Вопрос задал: Oleg_Borisov (статус: Посетитель)Вопрос отправлен: 30 ноября 2007, 16:42
 Состояние вопроса: открыт, ответов: 2.
 |  Ответ #1. Отвечает эксперт: Вадим К Здравствуйте, Oleg_Borisov!Уже не один раз обсуждалось, если передаёте в длл параметры типа string, будут проблемы. А всё из за того, что используется разный менеджер памяти. Для решения проблемы, необходимо в dpr файл проекта и длл добавить в список uses юнит ShareMem, причём самым первым. Также прийдётся таскать за собой потом ещё длл - borlmm.dll.
 Но можно и по другому - использовать тип WideString - это юникодный вариант String. Делфи делает автоматическое приведение типа и вы не заметите проблем с его использованием.
 
|  | Ответ отправил: Вадим К (статус: Академик)Время отправки: 30 ноября 2007, 16:53
 
 |  Ответ #2. Отвечает эксперт: Feniks Здравствуйте, Oleg_Borisov!Дополнение к Вадим К.
 А так же можно использовать тип PChar. Если Вы не будете использовать String, тогда юнит ShareMem указывать в uses не надо и borlmm.dll тоже. Хотя это на любителя.
 Какой именно использовать тип решать Вам, судя по обстоятельствам и поставленной задачи.
 И второй момент. Я не понял, к чему там "Result:=True", если Вы описали процедуру ?
 
|  | Ответ отправил: Feniks (статус: Бакалавр)Время отправки: 30 ноября 2007, 17:28
 
 |  
 Мини-форум вопросаМини-форум пуст. Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |