Форум: "Основная";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];
ВнизVariant в параметрах функций из dll Найти похожие ветки
← →
YuRock © (2004-03-22 15:04) [0]Уважаемые мастера! Ни кто не пытался использовать тип Variant в dll"ках? Проблем не возникало?
У меня происходят страшные вещи: иногда работает, иногда - нет.
Я сделал 2 ф-ции:
__GetNextParams: function(TypeValue: PChar; FormatWidth: Integer; var Buf: Pointer): Variant;
__ScanParams: procedure(Format: PChar; var Values: Variant; PosParam: TMPosExParams);
Во второй ф-ции Values - это дин. массив, в первой - просто какое-то значение. В обеих случаях иногда падает (пишет Write to address 0x00000011).
Переношу эти ф-ции в exe"шник - все отлично работает (всегда).
ShareMem подключал - не помогло. Эксперементировал с соглашениями вызова - тоже без успеха. Может, у вас какие идеи есть? Вообще, можно ли так писать?
← →
YuRock © (2004-03-22 15:15) [1]Да,
TMPosExParams = array [0..255] of char;
так что это дело не в этом...
← →
Digitman © (2004-03-22 15:36) [2]ShareMem по-любому обязателен здесь
> иногда падает
отладчик, конечно же, как всегда - штука бесполезная
← →
YuRock © (2004-03-22 15:49) [3]К сожалению, отладчик мало помогает - у меня идет
raise Exception.Create() (так нужно), но иногда до этого не доходит! Вываливается "CPU Window" - и все... Сейчас ищу, на какой именно строчке...
← →
YuRock © (2004-03-22 15:51) [4]> ShareMem по-любому обязателен здесь
Не совсем согласен - Variant - это ж не String
← →
Ega23 © (2004-03-22 15:56) [5]А просто Pointer"ом заменить?
← →
Digitman © (2004-03-22 15:58) [6]
> YuRock © (22.03.04 15:51) [4]
неважно, String или не String
важно, что в DLL память выделяется, а в хост-приложении освобождается ... либо наоборот
при этом менеджер памяти д.б. единый (важнейшее условие)
← →
YuRock © (2004-03-22 16:17) [7]Нашел я где валится:
function IsDelim(Value: Char): Boolean;
begin
Result := (Pos(Value,_DELIM_)<>0); // _DELIM_ = " :;,+-<>/*%^=()[]|&~@#\`{}"#9#10#13
end;
На строке Result := ... !!!
В общем, понятно - память где-то конкретно запортилась... Но вот где?...
> Digitman [6]
Да понятно... Вот только не помогает он, вообще ничего не меняется...
← →
YuRock © (2004-03-22 16:22) [8]Всем спасибо - проблема решена. ShareMem помог - просто я по недосыпу в главном проекте его подключил, а в dll - забыл.
Еще раз извиняюсь.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.043 c