А между тем, он ещё один ByVal пропустил. Правильно так:d3drm писал(а):Юстас, ты гений.
то, что не смогли мне объяснить несколько десятков программеров на С++ мне объяснил проггер на VB. Вот они, где умы )))
Public Declare Function func Lib "api.dll" (ByVal ID As Integer, ByVal Path as string) As Boolean
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
GSerg писал(а):А-яй-яй
Тёмыч, я тебя не узнаю
d3drm писал(а):объяснил проггер на VB. Вот они, где умы )))
tyomitch писал(а):...и были разного размера 8 лет назад под ДОС-ом, где ты писал на Сях.
Это, однако, не умаляет верности того факта, что int и int* м.б. разного размера.Ennor писал(а):А 16-битные проги я не писал, к счастью, миновало
Ясен пень, что может - даже в 32-битном окружении это будет верно для типа любого другого размера.tyomitch писал(а):Это, однако, не умаляет верности того факта, что int и int* м.б. разного размера.Ennor писал(а):А 16-битные проги я не писал, к счастью, миновало
Ага Более-менее постоянный доступ к компу (с возможностью попрограммить) у меня появился только в 1997-98 году. Я поставил Watcom C++ 11.0, а в нем как-то так получалось, что он по дефолту компилил 32-битные досовские проги и линковал их с этим знаменитым DOS4GW.exe. Помню, как был шокирован компилятор, когда я попытался где-то смещение рассчитать вручную и потом обратиться по полученному адресуtyomitch писал(а):что, правда что ли 16-битных прог не писал? да не может быть!
tyomitch писал(а):Не бывает функций, написанных в здравом рассудке и принимающих в параметре типа int указатель.
d3drm писал(а):Написал на С++ API'шку которая выглядит в коде примерно так:
bool func(int ID, char *Path)
Юстас писал(а):При любом раскладе ты не сделаешь этого.
Юстас писал(а):И не мешало бы вспомнить, какой вопрос задал автор.
Юстас писал(а):Это что, так тяжело понять? Или понимаешь, но старые воспоминания бередят душу
Юстас писал(а):А мнение, что "не удастся работать с int как с указателем" - это всего лишь твоё частное мнение.
Юстас писал(а):Как работать, я не буду тебе расписывать, а то снова начнутся упреки, что это vb форум, что я не туда зашёл и т.д. и т.п. Слышал уже.
Юстас писал(а):Хочешь узнать как работать - учи матчасть.
Юстас писал(а):Либо автор пока не нарвался на ошибку, и мы ждём этого, либо он не действует настолько прямолинейно как ты (и в этом случае ByVal не нужен)
Анекдот писал(а):Идет бабка и видит как два электрика сидят на столбе и спорят. Она:
- Сыночки, о чем спорите?
- Да так, бабуля, о своем. Подай нам вон тот провод.
Бабка подает провод и идет дальше. Электрик один другому:
- Ну вот, я же говорил что ноль, а ты все фаза да фаза.
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
Я писал(а):без явного каста не удастся работать с int как с указателем
Юстас писал(а):У тебя есть исходник dll автора вопроса, что ты делаешь те или иные выводы?
Гельвеций писал(а):Знание некоторых принципов легко возмещает незнание некоторых фактов.
Блез Паскаль писал(а):Существует достаточно света для тех, кто хочет видеть, и достаточно мрака для тех, кто не хочет.
Максим Горький писал(а):Нужно уметь извлекать из факта смысл.
Юстас писал(а):Объявлено: Integer. Без ByVal. Как и должно быть.
Команда КВН Пятигорска писал(а):Не вижу логики!
Юстас писал(а):Может для тебя откровение, что из ф-ции может понадобиться вернуть не 1 а несколько параметров (2 или 3). Для этого и делаются такие переменные, как буфер для принятия результата. И заполняются они в длл.
Поль Валери писал(а):Если бы ты знал то, что знаю я, ты бы не мог знать того, что ты знаешь.
Юстас писал(а):И никаких ByVal. Запомни это.
Наполеон Бонапарт писал(а):Невежда имеет большое преимущество перед человеком образованным: он всегда доволен собой.
Юстас писал(а):Продолжай выкручиваться, я всё понял
Блез Паскаль писал(а):Доводы, до которых человек додумывается сам, обычно убеждают его больше, нежели те, которые пришли в голову другим.
Тит Лукреций Кар писал(а):Также и много других собрать бы я мог доказательств,
Чтобы еще подтвердить несомненность моих рассуждений;
Но и следов, что я здесь лишь наметил, довольно,
Чтобы ты чутким умом доследовал все остальное.
Юстас писал(а):Вот тогда слушай, умник:
У тебя есть исходник dll автора вопроса, что ты делаешь те или иные выводы?
И не имеет значения, что и как происходит.
Объявлено: Integer. Без ByVal. Как и должно быть.
Для чего? Для находящихся в нездравом уме? Нет.
Может для тебя откровение, что из ф-ции может понадобиться вернуть не 1 а несколько параметров (2 или 3). Для этого и делаются такие переменные, как буфер для принятия результата. И заполняются они в длл.
И никаких ByVal. Запомни это.
Продолжай выкручиваться, я всё понял
Сейчас этот форум просматривают: Yandex-бот и гости: 6