Форум: "WinAPI";
Текущий архив: 2003.12.19;
Скачать: [xml.tar.bz2];
ВнизВызов DLL из Excel VBA (СРОЧНО ! ОЧЕНЬ ВАЖНО !) Найти похожие ветки
← →
Velocity (2003-10-17 06:58) [0]Народ, помогите плиз, великая проблема: написал функцию со след. параметрами Split(data,splitter:string;part:BYTE):string;stdcall;
в DLL-ке, из дельфи вызывается нормально (не проверял, но уверен на 100%), как видно функция должна возвращать строку. В заголовке VBA-макроса описываю функцию так:
PRIVATE DECLARE FUNCTION Split LIB "MyDll.dll" (data,splitter As String, part as Byte) As String и потом пытаюсь эту ботву вызвать, возникает Error, возвращается значение регистров, которое мне ничего не говорит, поскольку я в этом пока что не рублю совсем. В чём дело? как решить траблу? Помогите плиз, срочно надо. Заранее спасибо
← →
MBo (2003-10-17 07:00) [1]VBA не представляет себе, как велик и могуч дельфийский string.
← →
Velocity (2003-10-17 08:39) [2]Возможно, но что ж делать - приходится даже с ЭТИМ работать. Уже каюсь, но менять что-либо поздно, программа почти закончена. Можно конечно через буфер, но... не самое красивое решение. И тормозное вдобавок. Мож кто сталкивался, подскажите.
← →
MBo (2003-10-17 08:48) [3]> менять что-либо поздно, программа почти закончена
Передавать можно строковый тип, ИЗВЕСТНЫЙ басику (видимо, PChar он знает)
← →
shurrraaa (2003-10-17 11:38) [4]создай функцию вида
Split(data,splitter:string;part:BYTE):pchar;stdcall;
begin
.....
Split:=pchar(твоястрока);
end;
в excelе работа производиться с pchar - у самого была когда то проблема с этим
← →
Unknown (2003-10-17 11:40) [5]Я использовал OleVariant помню что с PChar были проблемы но не помню что именно.
← →
clickmaker (2003-10-17 11:44) [6]Дельфи
(const data,splitter: PChar; part: BYTE): OleVariant; stdcall;
VBA
PRIVATE DECLARE FUNCTION Split LIB "MyDll.dll" (By Val data As String, By Val splitter As String, By Val part as Byte) As Variant
← →
Velocity (2003-10-17 12:42) [7]Хммм... ок, попробую так, может и получится
← →
OlegK (2003-10-17 15:56) [8]PChar, VBasic "красиво" НЕ принимает, воспользуйся советами: clickmaker-а и Unknown...
← →
Velocity (2003-10-20 16:47) [9]Ндааа... Уже на входе функции появляется мусор (один символ, если с PChar) а если с OleVariant - так и воще runtime error (какая точно не помню). Видать билли постарался...
← →
Digitman (2003-10-20 17:09) [10]
> Velocity
не выдумывай.
если декларация форм.параметра типа String в VBA делается с ByVal, а декларация того же параметра в Pascal - с PChar (при stdcall), то никаких проблем с передачей факт.параметра нет.
← →
Polevi (2003-10-21 10:45) [11]а лучше написать COM сервер
← →
anonymous (2003-10-24 10:41) [12]да нет проблем с PChar(твоястрока), не нужно никаких вариантов,
тем более ком-серверов. просто "твоястрока" д.б. глобальной переменной (string), иначе при выходе из процедуры ее значение не определено.
← →
Polevi (2003-10-24 10:42) [13]а лучше написать COM сервер
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2003.12.19;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.008 c