:: Visual Foxpro, Foxpro for DOS
Re: Создать DLL на С++
lulgu

Сообщений: 1838
Дата регистрации: 30.11.2016
Перминов Игорь
lulgu
pasha_usue
Чуть-чуть выше я выложил простой типовой код для функций Winapi, который делает то же самое.
Что качается вашего примера, то функций в Winapi тыщи и я не занимаюсь пискомеряньем.

Igor Korolyov
Ваша способность заболтать любой вопрос порой просто удивляет.
Ладно еще, что не добавили: - "Волга впадает в Каспийское море".
Не думал, что из такого примера можно раздуть слона.
Мой пример просто тестирует вызов MyAdd() из мной же написанной DLL на VC (C++) - и все.
Так что должна вернуть функция которая складывает 2 числа? 0 (ноль) или 1 (один).
Или может добавить третий параметр в котором будет возвращен результат сложения - блиииин.
Результатом возврата 0 или 1 может быть только логический результат выполнения некоторого действия а не принадлежность к API, т.е. например if (IsConnect) или if (a>b), and etc.
API это набор функций, классов, объектов, форм.
Вот когда мной задуманное будет реализовано в некий функционал, тогда всю эту сущность можно будет, с большой натяжкой, назвать API (application programming interface).

Достаточно много функций API ненамного сложнее вашего примера, и большинство возвращают 0 в случае ошибки.
Сложение двух чисел тоже может вызвать ошибку - неверные параметры, переполнение.
API не возвращают логический результат в формате Фокспро.
Я не понял, почему результат нельзя вернуть по ссылке, именно как третий параметр.
Да и функционал начинается с малого, и состоит из таких мелочей.
Ratings: 0 negative/0 positive
Re: Создать DLL на С++
Перминов Игорь

Сообщений: 1591
Откуда: Красная Орловка
Дата регистрации: 16.09.2001
lulgu
Да и функционал начинается с малого, и состоит из таких мелочей.
Это всего лишь тестовая функция, для понимания того, как правильно вызвать написанное на VS 2015 C++ и собранное в DLL из VFP 9.0 sp2, потому как разные высокоуровневые языки (MS C++, Borland C++, WatCom C++ это то с чем мне пришлось столкнуться) ведут себя по разному при компиляции в DLL, почитайте внимательно мой первый пост.
Никакого отношения к API это не имеет.


------------------
Без коментариев..
Ratings: 0 negative/0 positive
Re: Создать DLL на С++
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
lulgu
Если код подходит
Смотря для чего "подходит". Для использования с некоторыми винАПИ функциями в программе - да. Для тестирования самодельной функции - при том что она ни разу не BOOL, и даже не целое число возвращает - естественно нет.
lulgu
Так нужна для DECLARE обертка или нет?
И зачем, по вашему, DECLARE нужно заворачивать в TRY, если она и так "создает обертку"?
DECLARE может сгенерировать ошибку? Ответив на этот вопрос, все прочие вопросы про try отпадут.

lulgu
большинство возвращают 0 в случае ошибки.
А вы их считали, достойнейший вы наш? Вы вообще имеете хоть малейшее представление о том, сколько функций имеется в винде? И какая их часть возвращает значение типа BOOL или, на худой конец, какого-либо рода "адрес" типа LPVOID, чтобы можно было говорить о том что "0 это ошибка"... Я вот с ходу могу полсотни АПИ функций указать, которые вовсе не 0 возвращают в случае ошибки. И вообще то что они возвращают НЕ является каким-то "признаком успешности работы", а самым что ни на есть обыкновенным ЗНАЧЕНИЕМ - так же как в примере тёзки возвращается сумма 2-х вещественных чисел.
Или как обычно, сказанули полнейшую глупость с важным видом - авось никто не заметит


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Создать DLL на С++
lulgu

Сообщений: 1838
Дата регистрации: 30.11.2016
Igor Korolyov
Чтобы прекратить ваши мучения ...

Вот процедура, позволяющая в фоксе работать с функциями Winapi как со своими родными безо всяких оберток:


Можете проверить на нескольких простых примерах из текстового файла, или написать свои:


Примерно также, но посложнее, можно работать со структурами и функциями как со своими родными, только написанными в формате C++ , но мне просто неохота без нужды и смысла доделывать эти процедуры.
Ratings: 0 negative/0 positive
Re: Создать DLL на С++
Taran
Автор

Сообщений: 13623
Откуда: Красноярск
Дата регистрации: 16.01.2008
Ух как все по серьезному. И как я раньше жил без этого?
Пиво пил, Камеди клаб смотрел.
Ratings: 0 negative/0 positive
Re: Создать DLL на С++
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Очередная куча малополезного и ущербного кода...

Для особо непонимающих русский язык - у меня НЕТ никаких затруднений. И для работы с WinAPI я более чем замечательно управляюсь куда как более очевидными и простыми конструкциями. Городить огород на полсотни строк плюс какие-то текстовые файлы на птичьем языке (ага, называется найди ошибку/опечатку), когда всё решается вообще ЭЛЕМЕНТАРНО - при том безо всяких макро и evaluate...

3 строки простейшего, легко понимаемого и отлаживаемого кода, против 70+ строк неочевидного, да ещё и некорректного кода, каких-то невнятных текстовых описаний АПИ функций (свой язык программирования - ога, наиполезнейшая вещь), MESSAGEBOX явно прописанных в системной по своей сути функции, public переменной совершенно неочевидного назначения (таки это НЕ "признак ошибки"), отсутствия каких либо обработок ошибок (для "непонимающих" - достаточно в текстовом файле описАться в одной букве - в ЛЮБОМ месте файла - как получаем элементарное вываливание их этого поделия по ошибке).

А касательно "можете проверить" - да бога ради
lcBuf = "AAA"
oSome.как_там_эта_херь_называется("Otkr","GetWindowsDirectory", @lcBuf, LEN(m.lcBuf))
? m.lcBuf && Видим замечательное "AAA"
Никаких ошибок, естественно, "не обнаруживается", всё работает "как задумано" - т.е. совершенно неправильно
Более того, если прописать к примеру lcBuf = REPLICATE("A", 200) то получим в итоге строку из 200 символов где в начале будет имя windows папки, но после него будет куча этих самых "A". Просто потому что кто-то не может прочесть элементарного текста, и понять что то что возвращает эта функция это ДАЛЕКО не только "признак ошибки".
Да тривиально - взять и в текстовом файле допустить "опечатку" - в строке после этой самой GetWindowsDirectory вместо STRING прописать STIRNG - и поглазеть как это всё замечательно обрабатывается данным кодом.

Ну что сказать, "непризнанный гений". Диагноз точно поставили И, боюсь, что лечению не подлежит

P.S. Более допиливать куски вашего г*нокода для того чтобы их банально можно было вставить в prg файл и запустить я, конечно же, не стану. Не в состоянии выложить то что не нуждается в дописывании и исправлении - не рассчитывайте что кто-то будет это пытаться запустить.


------------------
WBR, Igor
Ratings: 0 negative/2 positive
Re: Создать DLL на С++
of63

Сообщений: 25161
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
(в си однако, больше способов ошибиться, чем в фоксе, возможно...)
Ratings: 0 negative/0 positive
Re: Создать DLL на С++
lulgu

Сообщений: 1838
Дата регистрации: 30.11.2016
Igor Korolyov
Не зря я посоветовал вам освоить сначала простые функции.
С DECLARE ... вы получите тоже самое.

Попробуйте правильно заполнить буфер:
lcBuffer = REPLICATE(CHR(0),260)
И правильно обработать результат:
? SUBSTR(lcBuffer,1,gnWinapi)

А STIRNG функция не должна обрабатывать, пишите грамотно - это txt-файл, а не код в prg.
Или отладьте свой обработчик ошибок, как я вам однажды посоветовал.



Исправлено 1 раз(а). Последнее : lulgu, 26.03.17 00:06
Ratings: 0 negative/0 positive
Re: Создать DLL на С++
of63

Сообщений: 25161
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Грамотный ведь, lulgu, строковые операции розумеет, и к АПИ обращаться умеет. Нормальный он )
Ratings: 0 negative/0 positive
Re: Создать DLL на С++
lulgu

Сообщений: 1838
Дата регистрации: 30.11.2016
of63
(в си однако, больше способов ошибиться, чем в фоксе, возможно...)

При использовании формата C++ функция просто копируется из MSDN, ошибиться трудно.
Там проблема посерьезнее - типы данных, одни сюрпризы.
Ratings: 0 negative/0 positive
Re: Создать DLL на С++
of63

Сообщений: 25161
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Да, тяжело. Надо держаться )
Ratings: 0 negative/0 positive
Re: Создать DLL на С++
Taran
Автор

Сообщений: 13623
Откуда: Красноярск
Дата регистрации: 16.01.2008
Вы че прикалываетесь все или издеваетесь надо мной?
Ну не может эта функция (метод конечно) работать нигде. Просто не зачем.
То что трольский вброс сделан качественно - это признаю. И придумка и не лень.


Igor Korolyov
Очередная куча малополезного и ущербного кода...
Игорь. Будь другом намекни в чем может быть полезна данная функция.
Чет туплю.
Ну не верю, что это реально кто-то использует.
Ratings: 0 negative/0 positive
Re: Создать DLL на С++
SoccerStudio

Сообщений: 5055
Откуда: Подмосковье
Дата регистрации: 28.11.2006
Igor Korolyov
А касательно "можете проверить" - да бога ради
Игорь, вот скажи по секрету - откуда у тебя столько времени и терпения?


------------------
"Здесь я, братцы, сдержу матерщину, и скажу только "... мать!"" (с) Шаов
Ratings: 0 negative/0 positive
Re: Создать DLL на С++
Taran
Автор

Сообщений: 13623
Откуда: Красноярск
Дата регистрации: 16.01.2008
SoccerStudio
Игорь, вот скажи по секрету - откуда у тебя столько времени и терпения?
Ну Макс, это ж просто. Он просто памятник.
Гранитный. Потому видимо, как выясняется, и соображает не очень. Не очень спеша.
Ratings: 0 negative/0 positive
Re: Создать DLL на С++
lulgu

Сообщений: 1838
Дата регистрации: 30.11.2016
Ребята, для флуда есть курилка, не теряйте берега.

SoccerStudio
Мы можем с вами вернуться к вашей любимой теме GdiPlus, где вас попросили нарисовать несколько квадратиков.
forum.foxclub.ru

Taran
Для этого надо сначала освоить хотя бы простые функции.
Ratings: 0 negative/0 positive
Re: Создать DLL на С++
Taran
Автор

Сообщений: 13623
Откуда: Красноярск
Дата регистрации: 16.01.2008
lulgu
Taran
Для этого надо сначала освоить хотя бы простые функции.

Да я бы рад, но не знаю с чего начать освоение. Так и пишу до сих пор на dBase-2.
Боюсь что на Robotron-1715 фокс не установится.
Ratings: 0 negative/0 positive
Re: Создать DLL на С++
lulgu

Сообщений: 1838
Дата регистрации: 30.11.2016
Taran
lulgu
Taran
Для этого надо сначала освоить хотя бы простые функции.

Да я бы рад, но не знаю с чего начать освоение. Так и пишу до сих пор на dBase-2.
Боюсь что на Robotron-1715 фокс не установится.

Стандартный в таких случаях совет:

Ratings: 1 negative/0 positive
Re: Создать DLL на С++
pasha_usue

Сообщений: 3647
Откуда: Е-бург
Дата регистрации: 06.10.2006
lulgu
pasha_usue Похоже, у вас опять очень быстро истощились аргументы, ненадолго вас хватает.
Как только у вас заканчиваются аргументы и вы начинаете отходить от темы, с вами становится абсолютно неинтересно разговаривать. Поэтому я начинаю с вами разговаривать вашим же языком.
Пришлось, правда перечитать 188 тем на Sql.Ru, что б досконально ваш язык и уровень аргументации выучить. (;Ж
Ratings: 0 negative/0 positive
Re: Создать DLL на С++
lulgu

Сообщений: 1838
Дата регистрации: 30.11.2016
pasha_usue
Помогли бы лучше ИК найти системную директорию.
И у вас были какие-то проблемы с функцией MakeLong, можете и ее проверить.
Ratings: 0 negative/0 positive
Re: Создать DLL на С++
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
lulgu
При использовании формата C++ функция просто копируется из MSDN, ошибиться трудно.
Что поделать, глубокая формой умственной отсталости... Вероятно, С++ видел лишь на картинке.

lulgu
Помогли бы лучше ИК найти системную директорию.


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


------------------
WBR, Igor
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 22 (Гостей: 22)

© 2000-2024 Fox Club 
Яндекс.Метрика