Files.EXP

Clarion, Clarion 7

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

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Гость

Сообщение Гость »

Здравствуйте !

CW6, HandCode

Задача создать Dll глобальных данных. Описания таблиц и прочее - в файле. Вопросы:

1. Как создать EXP файл?
2. Как указать какой ЕXP файл использовать?
3. Как все это делать с миним усилиями через файл проекта?

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

--
С уважением,
SAN mailto:vgsan@yandex.ru

(Добавление)

Вопрос первый. Зачем ЭТУ DLL строить ручками?
Вопрос второй. Чем так плоха проектная система в APP (чего не хватает?), что
нужно уходить в PRJ ?

1. Ручками.
2. Используется одноименный с проектом. Или RTFM Project System Reference.
3. Минимум усилий - это APP и шаблоны.
Доку долго читал, примеры долго смотрел, но похоже за 20 лет они так и не предложили нормального способа изготовления и работы с DLL.
Да нет, ты не прав. Шаблоны дают вполне нормальное и качественное решение.
Слушатели курсов освоили за полчаса. ;)

WBR, Nick Tsigouro. MailTo:Nick@arsis.ru

(Добавление)

На самом деле, у меня довольно часто возникает необходимость собирать DLL именно вручную через PRJ. Причина в том, что в этих DLL не используются в полной мере шаблоны (Clarion, ABC), только Source процедуры + шаблоны Object Writer. В итоге я делаю DLL на ABC шаблонах, добавляю свой шаблон RemoveABC, который выковыривает ВСЕ, что в результирующий сырец добавляет ABC и компилирую. Раньше, без RemoveABC, приходилось вручную править сгенерированные сырцы и компилить их уже через PRJ.

В стандартной поставке не хватает простой цепочки шаблонов (SimpleClarion), которая бы ничего "своего" в сырец не генерила, (содержала бы только шаблоны, которые никакой дополнительной обертки для себя не создают, типа процедурного шаблона Source), тогда и работать с PRJ отпала бы необходимость. Кстати сделать такую цепочку в общем довольно просто, но почему-то ее нет в стандартной поставке :( Тогда бы и 3rd производители подключали бы к ней свои шаблоны, тот же Object Writer.

Так что проблем-с такой действительно имеем.

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

Удачи!
__________________________________
Владимир Якимченко (ICQ: 16993194)

1. Любыми редакторами, которые могуть работать с текстовыми файлами.
Раз уж говорим о HandyCode (.CLW + .PRJ), то ,конечно же, и .EXP будет HandyCode
2. Имя .EXP файла - это имя результирующей .DLL в проекте
3. Создаёшь .APP, выставляешь DLL сборку, в глобальный свойствах проектах указываешь, что глобальные данные не EXTERNAL, и они автоматом проэкспортируются в .EXP файл (.LIB).
Далее все .APP (Global data is external) ссылаются на эту .DLL, и никаких проблем.
Доку долго читал, примеры долго смотрел, но похоже за 20 лет они так и не предложили нормального способа изготовления и работы с DLL.
зачем же так, тут ты ошибаешься, зачем же грешить на Clarion, РУКИ.SYS - вот проблема ;)

Andrew Myalin
andrew@arsis.ru
http://mavcla.arsis.ru (MAV Direct ODBC)
ICQ: 10659412
Yahoo group: clarion@yahoogroups.com

1. Я юмор может и плохо, но немного понимаю, вот под ДОС я мог это делать без рук (после статьи Соловьева, надеюсь читал), а здесь как?
2. Вот здесь ты кажется не прав, но пока настаивать не буду.
3. Ну, ну! А APP мне зачем?
тут ты ошибаешься, зачем же грешить на Clarion, РУКИ.SYS - вот проблема ;)
А без APP как? Или РУКИ.SYS - вот проблема ;)?

--
С уважением,
SAN

(Добавление)
Я юмор может и плохо, но немного понимаю, вот под ДОС я мог это делать без рук (после статьи Соловьева, надеюсь читал), а здесь как?
Берешь .EXP любого своего проекта, смотришь как все устроено, думаешь, что должно быть в случае рукописного проекта, создаешь .EXP руками, подключаешь к своему .PRJ, компилишь, запускаеш libmaker, чтобы проверить, попали ли указанные тобой в .EXP-файле идентификаторы в список экспортируемых свежесозданной DLL.
Что непонятно?

--
Best regards,
Maxim Yemelyanov,
Enigma Soft Company
phone: +380 572 177977
WEB: http://enigmasoft.com.ua
e-mail: clalist@enigmasoft.com.ua
ICQ: 12253836

юмор юмором, а документацию, хотя бы иногда надо читать.
хоть двадцать лет назад (TopSpeed Compilers), хоть сейчас (Clarion) технология создания .DLL осталась прежней.
Ну, ну! А APP мне зачем?
Как я уже и писал, с помощью использования Application, Export файл создаётся автоматически и вопросы такого рода просто отпадают.

Andrew Myalin
Написал: ClaList(2)
Гость

Сообщение Гость »

Мне непонятно почему люди пропагандирующие программирование по шаблонам согласны сами и призывают других делать эту тупую работу вручную, зная что 15 лет назад их любимый инструмент позволял это делать в полуавтоматическом режиме! Кстати описание .EXP есть в доке, но не уверен что оно ответит на все вопросы.

А вот Агеев что то лепил на эту тему, у него получилось или как?

--
С уважением,
SAN

А при чём тут шаблоны - сказал ручками - значит, ручками. Как компилятор узнает, хочу я экспортировать ту или иную переменную/функцию или нет, если я не пользуюсь шаблоном. Кстати, а как это было 15 лет назад?

---------------------------------------
C уважением,
Юрий Философов,
Главный программист
Корпорация "Диполь", Саратов
E-mail yufil@tacis-dipol.ru (служ)
yufil@mail.ru (дом)
ICQ#75924439

Ручками - значит, что тебя не устраивает имеющийся автоматический способ получения исходных текстов. И текста EXP в том числе. Чего ты еще хочешь.
... компилятор узнает, хочу я экспортировать ту или иную переменную/функцию или нет, если я не пользуюсь шаблоном.
В шаблонах тоже не узнает, пока я не порулю флажком экспорта в процедурном шаблоне. Разница только в том, кому что хочется - снять крыжик или ручками составить список экспортных имен. И ес-но, речь не про компилятор, а про линкер.

Nick Tsigouro <nick@arsis.ru>

Мож, кто напишет интерактивную утилитку построения Exp-файла на основе Map+Clw . Или даже написал уже. Наверное, не так уж и сложно...

---------------------------------------
C уважением,
Юрий Философов
А при чём тут шаблоны - сказал ручками - значит, ручками. Как компилятор узнает, хочу я экспортировать ту или иную переменную/функцию или нет, если я не пользуюсь шаблоном. Кстати, а как это было 15 лет назад?
Он и раньше этого не знал. Сначала я его просил сгенирить без всякого АПП фаил экспорта с любым именем, он туда лепил все по максимуму.
Далее я оставлял в этом списке только то что считал нужным, мог изменить наме и далее лепил ДЛЛ. Диалог тож был кривым, но весь список экспорта я получал довольно легко. И при небольшом навыке, труда это не составляло. Что интересно в доке об этом если и говорилось то как-то ... Потом мне дали почитать А. Соловьева "Использование ДЛЛ в программах на Clarion" и стало жить интересней.
А теперь вы говорите мне лепи АПП, а мне она даром не нужна!

--
С уважением,
SAN

(Добавление)
Потом мне дали почитать А. Соловьева "Использование ДЛЛ в программах на Clarion"
А где его дают почитать ?

Vasiliev B <soft2@mail.redcom.ru>

Сларион Магазин, июль-август 1995. Честно говоря я не понял почему статья на русском, у меня ксеренные страницы.

--
С уважением,
SAN

А , так это в магазине.
Статья-то наверно на пару страниц.
Мож у Вас сканер есть ? Все бы почитали.

Vasiliev B

(Добавление)
Он и раньше этого не знал. Сначала я его просил сгенирить без всякого АПП фаил экспорта с любым именем, он туда лепил все по максимуму.
??? Как это может быть? Как без проекта в котором видны процедуры (т.е. APP) можно сгенерить файл экспорта? Парсить исходники, что-ли?

PS. Честно скажу, я DLL-ки в ДОСе не делал. Смысла не увидел, да и вообще на
CDD пришлось всего пару маленьких задачек сделать.


Nick Tsigouro

Драсьте. Ни разу, что-ли не делал DLL на голых сорцах?

--
Best regards,
Maxim Yemelyanov

Ни разу. И что значит на голых? Я задачку со словаря и APP начинаю делать, а не с "сорцов". И кто мешает "сорцы" в Source затянуть?

WBR, Nick Tsigouro

Nick, ну что ты никак не поймешь, что и словарь и все вокруг АПП не
удобно. Код просто надо знать и все. А для новой задачи его просто
копируешь и если надо включаешь Найти и Заменить и все!!! И никаких
птичек с галочками знать не надо - от лукавого они.
PS. Честно скажу, я DLL-ки в ДОСе не делал. Смысла не увидел, да и вообще на CDD пришлось всего пару маленьких задачек сделать.
А приличную задачку без них вытянуть было почти не реально, вот и весь смысл.

--
С уважением,
SAN

Словарь и апликация неудобна когда у тебя 15 строк кода рукописного.
Когда у тебя уже нужно 15 тыс. строк нарисовать, чтобы сделать то, что на шаблонах делается 500 строками вставок - тут уже прсто несерьезно обсуждать преимущества "рукоблудного" программирования.
... копируешь и если надо включаешь Найти и Заменить и все!!! И никаких птичек с галочками знать не надо - от лукавого они.
Это когда не знаешь нафига они ;)
А приличную задачку без них вытянуть было почти не реально, вот и весь смысл.
Не факт. Для CDD было очень мутно работать с проектами на DLL - море правок шаблонов, крайне медленная компиляция и какие-то еще мутки (за давностью лет уже позабытые).

--
Best regards,
Vadym mailto:vadim@softcreator.com
ICQ: 82308757

Ну вот никак не пойму. Зачем тогда вообще Кларион? Что в нем останется, если словарь и шаблоны, т.е. _всю_оригинальную_технологию_ выбросить?

WBR, Nick Tsigouro

Queue :)

С уважением, Ставич Олег
Укрсиббанк г.Харьков
oldstav@ukrsibbank.com

очереди есть в любой стандартной библиотеке классов, имеющейся в современных инструментах. И не только очереди но море разных вариантов связных списков... Так шта-а-а это не аргумент :)

--
Best regards,
Vadym

(Добавление)

Для варианта CLW+PRJ приходилось делать dll-ки.
В этом случае EXP-файл делал ручками. В стандартной поставке Клаши есть пример С55\Examples\src\pro2exp - после компиляции получаешь прогу, которая по прототипу ф-ции выдает ее запись в строке EXP-файла. В аттаче - текстовый файл, в котором краткое описание прототипов основных аргументов ф-ций.
Для экспортируемых переменных и классов, наверно, все-же лучше сначала, как предлагалось создать APP и посмотреть сгенеренный EXP-файл.

С уважением,
Александр Полонский

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

        Обозначения процедур и их параметров в файле myfunc.exp

;Start of Exported Procedures
  FUNCNAME@FP1P2...PN                                               @?
  ...................                                               ...
  ...................                                               ...
;End of Exported Procedures
;Start of Exported Global Data
;End of Exported Global Data,
     где:
          FUNCNAME      -       идентификатор имени процедуры (функции)
          @F            -       обязательный префикс
          P1,P2,...,PN  -       обозначения типов аргументов процедуры:

          BYTE - UC, <BYTE> - OUC, *BYTE - RUC, <*BYTE> - PUC
          SHORT - S, <SHORT> - OS, *SHORT - RS, <*SHORT> - PS
          USHORT - US, <USHORT> - OUS, *USHORT -  RUS, <*USHORT> - PUS
          LONG - L, <LONG> - OL, *LONG - RL, <*LONG> - PL
          ULONG - UL, <ULONG> - OUL, *ULONG - RUL, <*ULONG> - PUL
          REAL - D, <REAL> - OD, *REAL - RD, <*REAL> - PD
          *DECIMAL - RE, <*DECIMAL> - PE
          STRING - SB, <STRING> - OSB, *STRING - RSB, <*STRING> - PSB
          *CSTRING - RSC, <*CSTRING> - PSC
          *PSTRING - RSP, <*PSTRING> - PSP

Пример:  Процедура Sound(short,short) должна записываться так:
  SOUND@FSS                                               @?
Спасибо, вот до этого примера я еще не добрался! Вечером буду смотреть!

--
С уважением,
SAN

(Добавление)
В итоге я делаю DLL на ABC шаблонах, добавляю свой шаблон RemoveABC, который выковыривает ВСЕ, что в результирующий сырец добавляет ABC и компилирую. Раньше, без RemoveABC, приходилось вручную править сгенерированные сырцы и компилить их уже через PRJ.
Пара таких шаблонов уже давно есть в FreeABC.
В стандартной поставке не хватает простой цепочки шаблонов (SimpleClarion), которая бы ничего "своего" в сырец не генерила, (содержала бы только шаблоны, которые никакой дополнительной обертки для себя не создают, типа процедурного шаблона Source), тогда и работать с PRJ отпала бы
А надо ли отдельный шаблон? В 6-ке появился флажок "Don't generate globals", который позволяет сгенерировать отдельно одну только библиотеку глобальных классов и есть настройка, которая позволяет исключить из генерации ABC библиотеку. Т.е. глобальная dll-ка теперь легко разваливается на декларации глобальных данных (файлов) и ABC библиотеку.
Так что проблем-с такой действительно имеем.
Имели.

WBR, Nick Tsigouro

Хм, действительно. Ну еще один плюсик в актив C6 :) Правда, кой-какой мусор все-таки остается, например, декларация SystemParametersInfo в программном модуле и определения _ABCDllMode_ и _ABCLinkMode_ в проекте, но это уже мелочи.

Удачи!
__________________________________
Владимир Якимченко

(Добавление)
Вопрос первый. Зачем ЭТУ DLL строить ручками?
Имею право сейчас и делал это раньше! Кроме того на вашем пути создаются мне не нужные файлы, а по моим убеждениям мусор это плохо.
Вопрос второй. Чем так плоха проектная система в APP (чего не хватает?), что нужно уходить в PRJ ?
Ты ведь доку читал и примеры там смотрел. А теперь взгляни на убогий экран управления проектом и сравни.
Ручками.
Мужики, вы что совсем ..., а нахрена тогда эта система за 2кб?
Используется одноименный с проектом. Или RTFM Project System Reference.
Да раньше я мог больше ;(
Минимум усилий - это APP и шаблоны.
Господа, вы же лучше меня знаете, что шаблоны поставили и держат Кларион на 4-х костях вид сзади! Вам это доставляет удовольствие?
Да нет, ты не прав. Шаблоны дают вполне нормальное и качественное решение.
Слушатели курсов освоили за полчаса. ;)
Вот это и угнетает, хорошо что судя по смайлику не только меня!

--
С уважением,
SAN

(Добавление)

Вопрос не про права, а ЗАЧЕМ? Т.е. что это (PRJ) тебе дает положительного,
или чего лишает APP?
создаются мне не нужные файлы, а по моим убеждениям мусор это плохо.
Это какие же?
Ты ведь доку читал и примеры там смотрел. А теперь взгляни на убогий экран управления проектом и сравни.
Не вижу ответа на вопрос. В ЭТОЙ dll мне и этого "убогого экрана" с избытком.
Мужики, вы что совсем ..., а нахрена тогда эта система за 2кб?
Нет. Это ты "совсем", если ты не хочешь пользоваться тем, чем эта система отличается от прочих, на что заточена, да еще и вопишь при этом. Давай из VS выкинем MFC и повопим на тему "А нахрена такая система нужна?".
Вот это и угнетает, хорошо что судя по смайлику не только меня!
Что тебя угнетает? Что "Шаблоны дают вполне нормальное и качественное решение" или что "Слушатели курсов освоили за полчаса"
Вот меня совершенно не угнетает. Ни то, ни другое. Скорее радует. И то, и другое.

WBR, Nick Tsigouro

Ну щас задолбают человека.
Похоже лучше бармалеем быть чем программистом на кларе не использующим апп.
Про EXP без апп многие хотели бы знать больше (особенно в разрезе классов) , да видать боятся спросить.
Ответьте пожалуйста на вопрос (если можете) так как pro2exp помогает только в первые два месяца обучения.

Vasiliev B <soft2@mail.redcom.ru>

Да нет. Просто совершенно не понятно, какой смысл отказываться от APP именно в дллке глобальных данных (и, тем более, в 6-ке) Т.е. там, где экспорт максимальный, а собственный компилируемый код минимальный. Гимор с написанием и отладкой EXP гарантирован и не маленький, а за ради чего - непонятно.

PS. Объем этого EXP в части ABC классов ок 145 Кб. И все это писать ручками?

WBR, Nick Tsigouro

Кроме DLL с глобалами и классами существуют другие DLL. Которые должны существовать в куче разных проектов невзирая на словарь и модель (ABC or Legacy). Вот для этого руками они и создаются. Или своими шалонами.

--
Best regards,
Maxim Yemelyanov

Посмотри исходный пост. Речь шла о длл-ке глобалов в 6-ке. Именно о ней и только о ней я и говорю.

WBR, Nick Tsigouro

(Добавление)
Словарь и апликация неудобна когда у тебя 15 строк кода рукописного.
Э-э-э, а чем соб-сно? Создаю App. Без словаря. На легаси. Вбиваю в главном модуле свои 15 строк и жму Ctrl+R.

WBR, Nick Tsigouro

мне 15 строк проще (или удобнее) делать в сырке. когда более 2-х процедур намечается - тогда уже начинаешь думать о приложение - ибо когда думаешь о 2-х - вполне вероятно, что прийдется делать 10 :)

--
Best regards,
Vadym

(Добавление)
Когда у тебя уже нужно 15 тыс. строк нарисовать, чтобы сделать то, что на шаблонах делается 500 строками вставок - тут уже прсто несерьезно обсуждать преимущества "рукоблудного" программирования.
Столько и больше тысяч в досе я писал. На самом деле это не так много.
Сейчас вот задачка 2 мега кода, а там столько еще не хватает.
Это когда не знаешь нафига они ;)
Какое элегантное объяснение! На самом деле иногда я вполне прилично знаю нафига они! Но мы уже обнаруживали с тобой, места где меня не устраивают шаблоны. Помню ты меня жалел, вот только не написал новые, которые будут устраивать и меня.
Не факт. Для CDD было очень мутно работать с проектами на DLL - море правок шаблонов, крайне медленная компиляция и какие-то еще мутки (за давностью лет уже позабытые).
Для CDD c проектами на ДЛЛ работать было легко и приятно, я это делал без шаблонов. Ограничений по сути никаких. Впрочем видел код и шаблонный в них.
Про медленную компиляцию я так понимаю ты совсем не в курсе.
А уж если совсем честно то весь досовый шаблонный код мной давно был выкинут - кривой он по моему разумению.

--
С уважением,
SAN

(Добавление)
Мож у Вас сканер есть ? Все бы почитали.
25 страниц я насчитал легко, а Вы поняли, что статья по CFD3.1 ?

--
С уважением,
SAN
Написал: ClaList(2)
Гость

Сообщение Гость »

А , нет тогда не надо. Простые exp я писать умею.

Vasiliev B
Сейчас вот задачка 2 мега кода, а там столько еще не хватает.
А я вот человек ленивый... если зада типчная - я делаю шаблон или класс и забываю как я ее решал.
Какое элегантное объяснение! На самом деле иногда я вполне прилично знаю нафига они! Но мы уже обнаруживали с тобой, места где меня не устраивают шаблоны. Помню ты меня жалел, вот только не написал новые, которые будут устраивать и меня.
Ну извини... вот какой я гад, а! не написал шаблоны, которые нужны_тебе_!!!
;)
Для CDD c проектами на ДЛЛ работать было легко и приятно, я это делал без шаблонов.
Под CW работается еще более легко. При наличии опредленных навыков.
Ограничений по сути никаких. Впрочем видел код и шаблонный в них.
Про медленную компиляцию я так понимаю ты совсем не в курсе.
Еще как в курсе! после разнесения обной большой задачи на десяток dll время компиляции увеличилось раза в 3... Промучившись - мы вренулись к монолитному cdd-приложению.
А уж если совсем честно то весь досовый шаблонный код мной давно был выкинут - кривой он по моему разумению.
А что мешало сделать его некривым?!

--
Best regards,
Vadym
И никаких птичек с галочками знать не надо - от лукавого они.
Хмм... Когда-то, лет почти 20 назад (блин! как время летит!) я так и делал, напрочь игнорируя неудобный APP-генератор первых версий Клары. Т.е. - сгенерил с его помощью исходники основных шаблонов (бровс/форма/отчет) малость подправил/исправил и дальше уже каждую новую процедуру начинал так:
- копировал образец в новый файл
- менял все вхождения метки файла, его префикса и ключей на нужные.
- удалял/добавлял/изменял по-мелочи

Мне тогда это казалось круто! Пишу почти на голом коде ТАКИЕ обьемные приложения! Когда перешел на CDD/CfD, бросил это баловство - стало лень ЗАНИМАТЬСЯ ЕРУНДОЙ!!!
Я сделал проще - подправил базовые шаблоны под себя, исправил ошибки, добавил нужный функционал и новые шаблоны - и ВСЕ! Больше ручками в исходниках ничего не правил - несколько изменений в файловой схеме шаблона - и вот уже готов новый бровз/форма/отчет!
Может обьяснишь мне - что здесь "от лукавого" и чем ЭТО неудобнее той ерунды, которой ты до сих пор занимаешься!?
Интересно, а метки полей ты тоже так-же меняешь в новых процедурах?! Или "железным правилом" сделал во всех файлах поля с абсолютно одинаковыми именами?!
Или процедуры настолько простенькие, что хватает только исправлений меток файлов и ключей? Хотя, сори, ключи сам делаю одноименными для разных файлов - тут работы мало.
Но, все равно, даже в простеньком исходнике бровза (виндовая версия и не ABC) полно ссылок на метки полей основного файла. А если еще добавить "горячие" поля?

В рассылке прекрасно знают, что я НЕ ЯРЫЙ приверженец ТОЛЬКО шаблонов, люблю и очень часто использую рукописный код.
Особенно для небольших программок. Но от такой, извини ерунды, я ушел уже давно и возвращаться не собираюсь!

А на счет "Код просто надо знать и все" - это, имхо, к данному случаю не применимо - имеет место быть ПРОСТОЕ переписывание одного и того-же. Знаешь, в старину книги копировали именно обычным переписыванием. И в большинстве случаев эти копиры были АБСОЛЮТНО безграмотными людьми! Но они то-же, вероятно, хвалились, что знают грамоту. Даже иногда завитушки от себя добавляли к некоторым буквам - КРУТО!
Кстати, именно так, в пору становления языка, появлялись новые диалекты и наречия! Во как - безграмотный копир, сам того не понимая, давал ход новой ветви исходного языка! Типа детской игры "Испорченный телефон".

Извини, если резковато построил некоторые фразы - просто вспомнил КАКОЙ ЕРУНДОЙ сам когда-то занимался!
А приличную задачку без них вытянуть было почти не реально, вот и весь смысл.
Это ты - зря! На CDD/CfD очень даже приличные проекты писались! И даже, представь себе, без единой DLL-либы.
Хотя, кому как нравится - мне, например, нравится все держать в одном EXE-файле. Не люблю "плодить" разовые утилитки, использующие функционал ядра базовой программы.
Если надо - оформляю задачу таким образом, что разовая утилитка превращается в универсальный модуль решения постоянных однотипных задач и включаю ее в основную программу.

P.S.
Еще раз - сорри, если обидел или задел своими резкими имхо!

=============================
С уважением, Олег А. Руденко
Написал: ClaList(2)
Ответить