![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Создание и вызов UDF [D3, IB5.x]
Oleon © (2002-08-05 13:39:00)Добавил в имеющуюся DLL функцию скомпелтировал описал.
Когда вызываю ее из Процедуры на сервере выдается ошибка :
Инструкция по адресу "0x0042d38c" обратилась к памяти по адресу
"0x0000000000" память может быть "read". Что это может быть?
Digitman (2002-08-05 17:51:00) [1]1. Разницу между CSTRING(50) (IB) и String (OP) понимаешь ?
2. Время жизни переменной RS равно времени жизни UDF, ибо RS - лок.переменная. Что получит IB в результате вызова такой UDF ? Ничего. Ссылку в "пустоту" . Что ты и наблюдаешь.
3. Что есть "-1" в строке декларации RETURNS CSTRING(50) -1?
Oleon (2002-08-05 14:58:00) [2]function FormatInt(FmtSTR : PCHAR; var Value : Double) : PChar; cdecl; export;
function FormatInt;//(FmtSTR : PCHAR; var Value : Double) : string; cdecl; export;
var
RS : array[0..255] of char;
Begin
Result := StrCopy(RS, PChar(Format(FmtStr, [Value])));
End;
В InterBase объявлено так:
DECLARE EXTERNAL FUNCTION FORMATINT
CSTRING(10), DOUBLE PRECISION
RETURNS CSTRING(50) -1
ENTRY_POINT "FormatInt" MODULE_NAME "RSB_CASH"
Виктор Щербаков (2002-08-05 14:46:00) [3]Вариант проще, но он не заменит отладку:
Привести объявление UDF и объявление функции в dll (можно даже код функции).
Может быть просто напутал что-нибудь с параметрами или соглашением о вызове.
Oleon (2002-08-05 14:30:00) [4]Варианты попроще есть? Это уж слишком долго. Нужно же Delphi 5.0 ставить.
Виктор Щербаков (2002-08-05 14:13:00) [5]Извини, я не обратил внимания на версию Delphi :(
Попробуй поотлаживать в пятерке, например.
А когда отладишь, можно код обратно перенести.
Вот такой дурацкий совет :(
Oleon (2002-08-05 14:10:00) [6]Не могу найти как туда попасть. В Delphi 3.0 Run| Attach to process?
Виктор Щербаков (2002-08-05 13:45:00) [7]Отлаживать её надо.
Run|Attach to process,
выбираешь IBServer и вперед...
Oleon (2002-08-05 13:40:00) [8]не может быть "read"