Вниз
Скачать: CL | DM;

Вызов 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.014 c
1-62103
Санек
2003-12-08 13:39
2003.12.19
компонент Tanimate


1-62101
Reals
2003-12-08 04:36
2003.12.19
Сортировка ListBox (значение Stlye = lbVirtualOwnerDraw)


1-62109
BillyJeans
2003-12-08 15:23
2003.12.19
Простой вопрос про Excel...


3-61913
rosl
2003-11-27 13:29
2003.12.19
opendialog


3-61986
Фагот
2003-11-24 15:03
2003.12.19
Поиск в BLOB




   Наверх