Вопрос по Template Language

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7379
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Вопрос по Template Language

Сообщение Игорь Столяров »

Привет всем ! :)

В файле adoobj.tpw есть вот такая конструкция:

Код: Выделить всё

#rundll('ClaADOtp.dll', 'GetSPInfo', %svTmpConnectStr), release
#if(%svTmpConnectStr <> ' ')
...
#endIf
Т.е. загружается DLL, вызывается в ней процедура, передается строка параметров и в ней же возвращается результат.
А где можно посмотреть в какой код этот "#rundll" разворачивается ?
Или как вообще можно сделать такое действие ? Операторы Call()/Unload() не работаю с параметрами. :(

Заранее спасибо, тем кто разбирается в Template Language !
А то меня работа с шаблонами, как правописание у Винни Пуха.
Оно есть, но хромает сильно. :)
За теми кто отстал - не возвращаться. (С) Кодекс
kreator
✯ Ветеран ✯
Сообщения: 4984
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 7 раз
Поблагодарили: 20 раз

Вопрос по Template Language

Сообщение kreator »

Есть TemplateLanguageReference.pdf в папке docs. Там есть об этом. Конкретно о #rundll. Просто вызов внешней процедуры из dll, и вроде как процедура не должна ничего возвращать. Посмотри повнимательней.
We are hard at work… for you. :)
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3134
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

Вопрос по Template Language

Сообщение Дед Пахом »

#rundll изменяет переданный параметр, смотрите хелп.

Код: Выделить всё

#RUNDLL ('Services.DLL', 'AskForName', %UserName)
Я думаю, стандартный метод вызова процедур из dll вполне годится:

Код: Выделить всё

  MAP
    MODULE('ClaADOtp.dll')
       GetSPInfo(*CSTRING),RAW,NAME('fptr_GetSPInfo'),DLL
    END
  END
  
szGetSPInfo                CSTRING('GetSPInfo'), STATIC
paGetSPInfo               LONG, NAME('fptr_GetSPInfo')

  hdll = LoadLibrary('ClaADOtp.dll')
  IF hdll
    paGetSPInfo = GetProcAddress(hdll, szGetSPInfo)
  END
  ...
szSPInfo  CSTRING(10000)
  GetSPInfo(szSPInfo )
  
  ...
  FreeLibrary(hdll)
С уважением, ДП
Ответить