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

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

Создание и вызов 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"


Наверх

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