Проблемы с API

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Проблемы с API

Сообщение d3drm » 28.02.2005 (Пн) 23:58

Написал на С++ API'шку которая выглядит в коде примерно так:

bool func(int ID, char *Path)
{
.....
}

вызывать из васика пытаюсь так:

Public Declare Function func Lib "api.dll" (ID As Integer, Path as string) As Boolean

но преверил - неработает. Оказалось что при переходе от Path из VB в Path в С++ она превращается в какую-то абра-кадабру из нескольких символов.

Как починить?
ХЎ

Юстас
Бывалый
Бывалый
 
Сообщения: 200
Зарегистрирован: 24.10.2003 (Пт) 5:05

Сообщение Юстас » 01.03.2005 (Вт) 1:55

Public Declare Function func Lib "api.dll" (ID As Integer, ByVal Path as string) As Boolean

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 01.03.2005 (Вт) 2:23

Юстас, ты гений.

то, что не смогли мне объяснить несколько десятков программеров на С++ мне объяснил проггер на VB. Вот они, где умы )))
ХЎ

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 01.03.2005 (Вт) 4:41

d3drm писал(а):Юстас, ты гений.

то, что не смогли мне объяснить несколько десятков программеров на С++ мне объяснил проггер на VB. Вот они, где умы )))
А между тем, он ещё один ByVal пропустил. Правильно так:
Код: Выделить всё
Public Declare Function func Lib "api.dll" (ByVal ID As Integer, ByVal Path as string) As Boolean
Изображение

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 01.03.2005 (Вт) 6:55

А-яй-яй :)
Тёмыч, я тебя не узнаю :)

tyomitch писал(а):Правильно так:
Код: Выделить всё
Public Declare Function func Lib "api.dll" (ByVal ID As Integer, ByVal Path as string) As Boolean


А между тем, правильно так:
Код: Выделить всё
Public Declare Function func Lib "api.dll" (ByVal ID As Long, ByVal Path as string) As Long

Компилятор, конечно, запихнёт в стек int, но тем не менее :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 01.03.2005 (Вт) 7:36

GSerg писал(а):А-яй-яй :)
Тёмыч, я тебя не узнаю :)

А зато я тебя узнаю :-)) Так и знал, что придерёшься...

Здесь "ошибка" другого рода, чем я указал: там неверная конвенция (из-за чего в функцию придёт совершенно левое число), а тут только неверный тип (из-за чего числа, большие 32767, до функции не дойдут, зато меньшие дойдут совершенно правильно).

Т.е. у тебя не "поправка", а "дополнение" к моему посту ;-)
Изображение

Юстас
Бывалый
Бывалый
 
Сообщения: 200
Зарегистрирован: 24.10.2003 (Пт) 5:05

Сообщение Юстас » 01.03.2005 (Вт) 13:17

d3drm писал(а):объяснил проггер на VB. Вот они, где умы )))


Вообще-то я не прогер на VB :)

tyomitch

Объясни мне пожалуйста, что будет передано в dll при ID=12345 в случае

    ID
    ByVal ID


Не механизм, а конкретно, что за число.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 01.03.2005 (Вт) 14:31

varptr(ID)
ID
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Юстас
Бывалый
Бывалый
 
Сообщения: 200
Зарегистрирован: 24.10.2003 (Пт) 5:05

Сообщение Юстас » 01.03.2005 (Вт) 18:29

GSerg

Вот, уже теплее :) Теперь такой вопрос: по какому такому разумению, не имея текста исходника dll, вы с Тёмычем пытаетесь делать выводы и менять адрес переменной на её значение?

ByVal ID As Long (1-й случай)

ByVal ID As Integer (2-й случай)

Откуда уверенность, что в dll первый параметр не будет обрабатываться как адрес буфера, в который нужно загрузить результаты каких-либо вычислений?

Например (пусть не в си, но результат тот же):

func proc Param1:DWORD, Param2:DWORD
mov ecx,Param1
mov ax,word ptr[ecx]
add ax,1
mov word ptr[ecx],ax

Кстати, у автора указано: первый параметр - int, что как известно, аналог vb-long'a

Куда отправится программа, если такой код вызывать с ByVal ID, догадаться несложно :)

Поэтому, прежде чем менять ID на ByVal ID, неплохо бы знать, чего ожидает функция, значение или адрес

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 01.03.2005 (Вт) 19:30

Юстас, я знаю, что ты знаешь, что указатели объявляются не как int ID, а как int* ID. И я знаю, что ты знаешь, что я это знаю. Так что не надо изображать то, что ты изображаешь.

Вариант с тем, что параметр объявлен как int ID, и перед каждым употреблением кастуется к int*, я отметаю как дурацкий.

И при чём здесь ассемблер? Там вообще типов нет => весь вопрос теряет смысл.
Последний раз редактировалось tyomitch 01.03.2005 (Вт) 19:31, всего редактировалось 1 раз.
Изображение

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 01.03.2005 (Вт) 19:31

Подозреваю, что они строят свои предположения (как и я свои :) ) на тех соглашениях об именовании, к которым все привыкли из Win32API. Т.е.:
    Если у тебя параметр принимает значение переменной, то так и будет - int ID;
    Если ты берешь указатель на переменную, то будь добр, дай об этом знать несчастным, лишенным блаженства телепатии - int* pID (последний раз писал на Сях лет 8 назад и под ДОСом, так что если чего напутал - сорри);
    Если собираешься работать со строками, прямой адрес не прокатит - char* nText, а если хочешь вернуть ее юзеру, то и char** nText. Особенно учитывая организацию BSTR-формата строк в COM.

Вот на этих привычках и строят свои выводы вышеперечисленные персоналии, и не только они... :)

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 01.03.2005 (Вт) 19:34

Ennor, дело именно в типе, а не в наименовании. int к int* не приведётся без каста.


Не бывает функций, написанных в здравом рассудке и принимающих в параметре типа int указатель. Например потому, что указатель и int м.б. разного размера (и были разного размера 8 лет назад под ДОС-ом, где ты писал на Сях).
Изображение

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 01.03.2005 (Вт) 19:40

tyomitch писал(а):...и были разного размера 8 лет назад под ДОС-ом, где ты писал на Сях.

Да ну? Не знаю, где как, но в 32-битном приложении и инт был 4 байта, и указатель на него - столько же. А 16-битные проги я не писал, к счастью, миновало :)

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 01.03.2005 (Вт) 19:49

Ennor писал(а):А 16-битные проги я не писал, к счастью, миновало :)
Это, однако, не умаляет верности того факта, что int и int* м.б. разного размера.


что, правда что ли 16-битных прог не писал? да не может быть! :shock:
Изображение

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 01.03.2005 (Вт) 20:04

tyomitch писал(а):
Ennor писал(а):А 16-битные проги я не писал, к счастью, миновало :)
Это, однако, не умаляет верности того факта, что int и int* м.б. разного размера.
Ясен пень, что может - даже в 32-битном окружении это будет верно для типа любого другого размера.

tyomitch писал(а):что, правда что ли 16-битных прог не писал? да не может быть! :shock:
Ага :) Более-менее постоянный доступ к компу (с возможностью попрограммить) у меня появился только в 1997-98 году. Я поставил Watcom C++ 11.0, а в нем как-то так получалось, что он по дефолту компилил 32-битные досовские проги и линковал их с этим знаменитым DOS4GW.exe. Помню, как был шокирован компилятор, когда я попытался где-то смещение рассчитать вручную и потом обратиться по полученному адресу :)

Юстас
Бывалый
Бывалый
 
Сообщения: 200
Зарегистрирован: 24.10.2003 (Пт) 5:05

Сообщение Юстас » 01.03.2005 (Вт) 20:48

tyomitch писал(а):Не бывает функций, написанных в здравом рассудке и принимающих в параметре типа int указатель.


Если ты их не видел, это не значит, что их не бывает :)

Что там в dll творится - неизвестно, поэтому не стоит делать выводов, что dll была написана не в здравом рассудке.

И погляди внимательно, как описывается первый параметр func: как int, т.е. 32-разрядная величина. Вполне может оказаться что и как адрес будет использоваться. И по этому адресу может быть и vb-шный 16-разрядный Integer, и никакого противоречия не наступит, вполне корректная связка: Declare.....(ID As Integer.....) и bool func(int ID.....)

:)

Возможно это и не адрес вовсе, всего-навсего ошибся человек, но не зная этого делать выводы о необходимости ByVal - преждевременно.
Спросили про строку - ответили, спросят про ID - тогда и будем предполагать и советовать ByVal. Зачем бежать впереди паровоза?


P.S.
Я знаю, что ты знаешь, что я знаю, почему ты бежишь впереди паровоза :)

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Re: Проблемы с API

Сообщение tyomitch » 01.03.2005 (Вт) 22:29

2Юстас:
d3drm писал(а):Написал на С++ API'шку которая выглядит в коде примерно так:

bool func(int ID, char *Path)

Я исходил из предположения, что d3drm не сошёл с ума.

int - это не 32-разрядная величина. int - это целое число, и оно м.б. любой длины. Это тебе не ассемблер ;-)

Ещё раз, без явного каста не удастся работать с int как с указателем. Значит, у разработчиков языка были причины не допускать путаницу и смешение int и int*

Покажешь мне написанную в здравом уме библиотеку, которая бы принимала указатель параметром типа int - возьму все свои слова обратно.
Изображение

Юстас
Бывалый
Бывалый
 
Сообщения: 200
Зарегистрирован: 24.10.2003 (Пт) 5:05

Сообщение Юстас » 01.03.2005 (Вт) 23:15

Меня не интересует, возьмешь ты слова обратно или нет. При любом раскладе ты не сделаешь этого.

И не мешало бы вспомнить, какой вопрос задал автор. "У меня падает программа при вызове ф-ции" - таков был вопрос? Нет. "У меня искажается первый параметр, в чём может быть дело?" Нет. О чём это говорит? Угадай с одного раза. Если не получится, то 2 варианта:
а) Переменная ID не считывается в dll - иначе происходила бы ошибка получения параметра и автор обозначил бы это. Как в случае со строкой.
б) В память с адресом, равным значению ID (но не его адресу) не записывается ничего в dll - иначе происходила бы ошибка доступа к памяти. И снова бы возник вопрос у автора.

Либо автор пока не нарвался на ошибку, и мы ждём этого, либо он не действует настолько прямолинейно как ты (и в этом случае ByVal не нужен)

Это что, так тяжело понять? Или понимаешь, но старые воспоминания бередят душу :)

А мнение, что "не удастся работать с int как с указателем" - это всего лишь твоё частное мнение. Как работать, я не буду тебе расписывать, а то снова начнутся упреки, что это vb форум, что я не туда зашёл и т.д. и т.п. Слышал уже. Хочешь узнать как работать - учи матчасть.

Успехов !

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 02.03.2005 (Ср) 3:17

Юстас писал(а):При любом раскладе ты не сделаешь этого.

Фу.

Юстас писал(а):И не мешало бы вспомнить, какой вопрос задал автор.

Автор не спрашивал про ID вообще. Он пока до него не дошёл. Когда дойдёт, получит ту же проблему, что и со строкой, и по той же причине.

Юстас писал(а):Это что, так тяжело понять? Или понимаешь, но старые воспоминания бередят душу :)

Фу.

Юстас писал(а):А мнение, что "не удастся работать с int как с указателем" - это всего лишь твоё частное мнение.

Которое, тем не менее, верно.
Читаем Страуструпа (хотя бы). Или ещё кого (если авторитет Страуструпа недостаточен). Видим что? "Используйте абстрагированный доступ к данным". Используем. Мы не знаем, каков размер указателя. Мы пишем вместо него sizeof(int*). Мы понимаем, что в основном там будет 4, но это не есть правило. А указатель на 64-битных виндах уже 64-битный. Но нам пофигу, потому что мы используем абстрагированный доступ к данным.

Юстас писал(а):Как работать, я не буду тебе расписывать, а то снова начнутся упреки, что это vb форум, что я не туда зашёл и т.д. и т.п. Слышал уже.

Слышал уже где? И от кого? И почему переносишь на нас?

Юстас писал(а):Хочешь узнать как работать - учи матчасть.

Субъективное ИМХО - сказано не тем и не тому.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 02.03.2005 (Ср) 10:13

Юстас писал(а):Либо автор пока не нарвался на ошибку, и мы ждём этого, либо он не действует настолько прямолинейно как ты (и в этом случае ByVal не нужен)


Анекдот писал(а):Идет бабка и видит как два электрика сидят на столбе и спорят. Она:
- Сыночки, о чем спорите?
- Да так, бабуля, о своем. Подай нам вон тот провод.
Бабка подает провод и идет дальше. Электрик один другому:
- Ну вот, я же говорил что ноль, а ты все фаза да фаза.
Изображение

Inferno
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 179
Зарегистрирован: 26.01.2005 (Ср) 1:06

Сообщение Inferno » 02.03.2005 (Ср) 12:02

Значения переменных типа string (Аналог DWORD на си) хранятся в юникоде , поэтому при передаче значий в функцию выплывают левые значки.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 02.03.2005 (Ср) 12:04

Сам понял чё сказал? :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 02.03.2005 (Ср) 15:48

Юстас, я наконец нашёл, где ты сам себе противоречишь. С чего ты взял, что в длл-ке с "char *Path" идёт работа как со строкой, а не, например, как с HWND? Тогда правильное объявление было бы "ByVal Path As Long" ;-)

Передавать указатель в int и HWND в char* - вещи совершенно одинаковые. Почему одну из них ты допускаешь, а другую нет?


2GSerg: я нарочно не привёл пример с Win64, потому что он неудачный: там и int, и int* по 64 бита. Пример с досом гораздо нагляднее: 16-битный int и 32-битный int*
Изображение

Юстас
Бывалый
Бывалый
 
Сообщения: 200
Зарегистрирован: 24.10.2003 (Пт) 5:05

Сообщение Юстас » 03.03.2005 (Чт) 7:25

не удастся работать с int как с указателем?

Пробуем:

Код: Выделить всё
Private Declare Function func Lib "STAS.dll" (id As Integer) As Long

Private Sub Form_Load()
    Dim id As Integer
    id = 1
    MsgBox id
    MsgBox VarPtr(id)
    func id
    MsgBox id
End Sub


dll прилагается

Смотрим адрес id и его значение на входе в ф-цию и этот же адрес и это же значение из dll. Меняем в dll значение id, возвращаемся и смотрим, на что изменилось id?
Как изменился id, если не через его указатель?

Так удастся работать с int как с указателем или нет?

P.S.
При запуске из VB IDE код может споткнуться на dll соглашениях. Просто наведи курсор на id, когда застопорится и в тултипе высветится новое значение id, либо просто желтенькую стрелочку, указывающую на строку с ошибкой, перетащи на следующую: MsgBox id и продолжи. Получишь содержимое id.

Путаница с декларациями, как впрочем и размер (40 кб) - оттого, что я не очень с этими приколами знаком, но это не принципиально.
Результат - работа с указателем - налицо.
Хотя я предвижу, что ты скажешь, что на 64-разрядных не будет работать, на 16, 8 разрядных - тоже, на Эниаке 45 г.р. тоже, как впрочем и на Б3-21 :) Чел писал не для Эниака, поэтому не будем в сторону вилять.

func(int lpDigit)
Вложения
STAS.zip
(17.4 Кб) Скачиваний: 106

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 03.03.2005 (Чт) 7:47

Юстас, не надо заниматься фигурной резкой по цитатам.

Я писал(а):без явного каста не удастся работать с int как с указателем


Покажи исходник длл-ки, и чтобы там не было каста int к int*, тогда поверю.
Изображение

Юстас
Бывалый
Бывалый
 
Сообщения: 200
Зарегистрирован: 24.10.2003 (Пт) 5:05

Сообщение Юстас » 03.03.2005 (Чт) 8:56

Вот тогда слушай, умник:
У тебя есть исходник dll автора вопроса, что ты делаешь те или иные выводы?

И не имеет значения, что и как происходит.
Объявлено: Integer. Без ByVal. Как и должно быть.
Для чего? Для находящихся в нездравом уме? Нет.

Может для тебя откровение, что из ф-ции может понадобиться вернуть не 1 а несколько параметров (2 или 3). Для этого и делаются такие переменные, как буфер для принятия результата. И заполняются они в длл.
И никаких ByVal. Запомни это.

Продолжай выкручиваться, я всё понял

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 03.03.2005 (Чт) 9:40

  • Юстас писал(а):У тебя есть исходник dll автора вопроса, что ты делаешь те или иные выводы?


    Гельвеций писал(а):Знание некоторых принципов легко возмещает незнание некоторых фактов.

    Блез Паскаль писал(а):Существует достаточно света для тех, кто хочет видеть, и достаточно мрака для тех, кто не хочет.

    Максим Горький писал(а):Нужно уметь извлекать из факта смысл.

  • Юстас писал(а):Объявлено: Integer. Без ByVal. Как и должно быть.


    Команда КВН Пятигорска писал(а):Не вижу логики!


  • Юстас писал(а):Может для тебя откровение, что из ф-ции может понадобиться вернуть не 1 а несколько параметров (2 или 3). Для этого и делаются такие переменные, как буфер для принятия результата. И заполняются они в длл.


    Поль Валери писал(а):Если бы ты знал то, что знаю я, ты бы не мог знать того, что ты знаешь.


  • Юстас писал(а):И никаких ByVal. Запомни это.


    Наполеон Бонапарт писал(а):Невежда имеет большое преимущество перед человеком образованным: он всегда доволен собой.


  • Юстас писал(а):Продолжай выкручиваться, я всё понял


    Блез Паскаль писал(а):Доводы, до которых человек додумывается сам, обычно убеждают его больше, нежели те, которые пришли в голову другим.


  • Тит Лукреций Кар писал(а):Также и много других собрать бы я мог доказательств,
    Чтобы еще подтвердить несомненность моих рассуждений;
    Но и следов, что я здесь лишь наметил, довольно,
    Чтобы ты чутким умом доследовал все остальное.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 03.03.2005 (Чт) 10:00

Аплодисменты!

Готовим гнилые помидоры кое-для кого!

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 03.03.2005 (Чт) 10:18

Юстас писал(а):Вот тогда слушай, умник:
У тебя есть исходник dll автора вопроса, что ты делаешь те или иные выводы?

И не имеет значения, что и как происходит.
Объявлено: Integer. Без ByVal. Как и должно быть.
Для чего? Для находящихся в нездравом уме? Нет.

Может для тебя откровение, что из ф-ции может понадобиться вернуть не 1 а несколько параметров (2 или 3). Для этого и делаются такие переменные, как буфер для принятия результата. И заполняются они в длл.
И никаких ByVal. Запомни это.

Продолжай выкручиваться, я всё понял

Ну уж нет, теперь выкручиваться придётся тебе.

Слушай, умник: У тебя есть исходник dll автора вопроса, что ты делаешь те или иные выводы?
Почему ты всё-таки решил, что с "char *Path" идёт работа как со строкой, а не, например, как с HWND? Ведь почему-то решил? (1)

Если все указатели можно передавать в int, то зачем, по-твоему, даже в Win32API (ограничимся им!) их передают в сотне разнообразнейших типов - LPSTR, LPDWORD, HWND* и ещё по одному на каждую структуру? Есть в этом какая-то логика, или разработчикам Винды было больше нечем заняться, только типы определять? (2)

Согласен ли ты, что в C/C++ без кастов невозможна работа с int как с указателем? (3)

Жду ответа на три конкретно сформулированных вопроса. Если не получаю - считаю дальнейшее участие в беседе бесцельным, и прекращаю его.
Изображение

Юстас
Бывалый
Бывалый
 
Сообщения: 200
Зарегистрирован: 24.10.2003 (Пт) 5:05

Сообщение Юстас » 03.03.2005 (Чт) 10:18

Рвать сообщение на отдельные слова и приписывать под ними свои измышлизмы - пожалуй это всё, на что хватает ума :)

Хватит ли его, чтобы опровергнуть это:

... из ф-ции может понадобиться вернуть не 1 а несколько параметров (2 или 3). Для этого и делаются такие переменные, как буфер для принятия результата. И заполняются они в длл.
И никаких ByVal. Запомни это.

Не разрывая на отдельные буквы и слоги.
Давай, Шаман, попробуй, докажи, что буфер, объявленный As Integer, передаётся ByVal.

Не рви мои слова, мне твои интерпретации на черта не нужны. Опровергни мысль, если ты способен удержать целиком в голове хотя бы один абзац.

След.

Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот, Yandex-бот и гости: 49

    TopList