Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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
1-62026
hooky-mars
2003-12-02 18:50
2003.12.19
Принтер


3-61905
Саша
2003-11-27 13:03
2003.12.19
Не находится libmysql.dll (MySQL + DbExpress)


1-62150
uhhax
2003-12-07 15:47
2003.12.19
Алгоритм шифрования RC4


14-62246
UPR
2003-11-25 15:15
2003.12.19
Как отправить сообщение на мыло без помощи Аутлук и т.п.?


1-62108
Андрей Пономарев
2003-12-08 15:02
2003.12.19
Експлорер





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский