PureBasic - форум

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » PureBasic - форум » PureBasic для Windows » Компилятор справки PureBasic на основе компилятора справки AutoIt3


Компилятор справки PureBasic на основе компилятора справки AutoIt3

Сообщений 1 страница 30 из 40

1

Собственно сам компилятор

Чтобы создать справку по своим функциям или описать чужой модуль или несколько модулей, то:
1. Создаём файлы описания в DynamicSRC\txtUserFunctions
2. В папке DynamicSRC\au3UserExamples создаём одноимённые примеры (будут присоединены к описанию)
3. Выполнить скрипт SD_AutoIt_Help_Builder_Mod.au3 (могу скомпилировать если потребуется), для этого должен быть установлен AutoIt3 версии 3.3.8.1 (и установлен HTML_Help_Workshop). Откроется GUI в котором нажать ОК и появится файл PB User.chm (можно менять тему белая/чёрная).

В текущем компиляторе уже есть файлы описания для Registry.pbi и bigint.pbi в качестве примера. Остаётся только собрать. Также есть описание в комплекте.

Вот что из этого вышло PB User.7z
PureBasic_PB_User - совмещённый вариант 2 дерева в одном

До кучи сделал компилятор на англ. языке по просьбе

Обновил
Добавлено из последнего:
sprintf - форматированная строка
Раздел TabBarGadget (30 функций)

Отредактировано AZJIO (17.07.2023 20:11:20)

0

2

Зачем так сложно? Зачем УСТАНАВЛИВАТЬ для этих целей HTML Help Workshop? Для генерации chm нужен hhc (работает из комстроки) и пара-тройка dll-ок. Можно кинуть их прямо к скрипту. Зачем сложности с установкой AutoIT? В чём преимущества AutoIt по сравнению, скажем, тем же PowerShell, идущим "из коробки"?

0

3

Smitis написал(а):

Зачем так сложно? Зачем УСТАНАВЛИВАТЬ для этих целей HTML Help Workshop? Для генерации chm нужен hhc (работает из комстроки) и пара-тройка dll-ок. Можно кинуть их прямо к скрипту.

Они там и есть в папке Utils. Но не помню точно с какими трудностями я сталкивался, но с "HTML Help Workshop" надёжность была 100%, не приходилось разгадывать почему что-то не работает. Из скрипта вызывается именно Utils\hhc.exe, так что можно не ставить.

Smitis написал(а):

Зачем сложности с установкой AutoIT? В чём преимущества AutoIt по сравнению, скажем, тем же PowerShell, идущим "из коробки"?

В том что на AutoIt уже написано, а на PowerShell нет. Казалось бы можно написать на PureBasic, но я не хочу тратить своё время. В PureBasic уже есть "PureBasic\SDK\DocMaker\DocMaker.exe", но чтобы я мог обрабатывать по своему нужен исходник, а в том виде в котором предлагает DocMaker.exe без подсветки без ещё много чего, мне такое не интересно собирать. Я наоборот стараюсь показать как это могло бы выглядеть, чтобы авторы DocMaker.exe а)открыли исходный код, б)возможно сделали бы подключение плага, например перед тем как собрать отправили бы на обработку в мою функцию, в) сделали бы более гибко - возможность менять теги блоков, может какой-нибудь скелет страницы, чтобы вставлять блоки описания и кода в позиции указанные в странице. Сейчас это несовершенство сильно выпирает, нет стилей (уже 100 раз говорил), нет определения блоков, всё в одной куче, если вам нравится как есть то конечно ничего менять не надо, а мне чтобы это улучшить надо столько костылей выстроить чтобы собрать приемлемое.

————————————
Добавил функцию Vast от Little John, https://www.purebasic.fr/english/viewto … 36#p459536

Отредактировано AZJIO (09.12.2021 12:19:55)

0

4

Есть идеи по добавлению каких либо pbi?

0

5

hhc.exe
что она делает? случаем не парсер html?

AZJIO написал(а):

без подсветки

какая подсветка, chm это html,  в html задуман цветной текст
есть, правда древние, упаковщики chm, ты чё изобретаешь?
сомневаюсь что ты про них не знаешь

AZJIO написал(а):

Казалось бы можно написать на PureBasic,

возьми и напиши, а не городи свой личный огород
незнаю что на сегодня, но ещё недавно небыло новых упаковщиков

Smitis написал(а):

Зачем так сложно? Зачем УСТАНАВЛИВАТЬ..........

поглядел я на эти проблемы и даже пробовать не стал, надо качать аж две проги
вроде  HTML Help Workshop платная

0

6

hhc.exe это из упомянутой проги запчасти и она не платная, это официальная майкрософтовская прога по сборке chm выглядит примитивно но с мощным функционалом. Есть перепаковка от gora на русском языке.
CHM на основе html это да, но цвет в html сам не появляется. Я не упаковщик делаю, упаковщик это ранее упомянутая прога, а скрипт это как и в PureBasic на основе текстовых шаблонов генерирует html страницу.

Мой личный огород? Да скрипт то и так на 80% мой личный огород, вот только писал его я несколько лет (условно), то есть время от времени переписывал обработку. Движок анализатор построчно шаблонов оригинальный, а я уже делил данные на части и в каждой части обрабатывал данные, подсветку, ссылки, скелет страницы, исключения. Моя цель описать функции, а не писать движок заново, пока он работает неплохо, можно добавить официальную тему, но я пока занят и функций мало, чтобы делать движок ради двух модулей реестра и больших чисел.

Ну и правильно что качать не стал, не забивай мозг, там еще все сырое, поиграешься, время потеряешь. Все равно описания надо создавать, в этом основная трудность, если создашь я могу скомпилировать. Я уже писал давай идеи по модулям, я сам сделаю, правда при условии что они и мне будут интересны. В плане у меня есть несколько выборочных функций: генерировать путь и получить путь процесса, ну еще примеры wm_сообщений можно добавить, но я каждый раз сомневаюсь что мои варианты оптимальны

Отредактировано AZJIO (13.12.2021 10:54:26)

0

7

AZJIO написал(а):

Есть идеи по добавлению каких либо pbi?

В справку?
Вообще можно этот добавить https://www.purebasic.fr/english/viewtopic.php?t=72980

0

8

Да, справка в Autoit шикарна! Сказано, потрудились люди. Такую бы в PB.
Делюсь своей версией для PB: PureBasic.chm
Источник, найден на просторах интернета.
Этот жёлтый, меня напрягает. Изменил внешний вид под себя, может кому-то и понравится белый фон. Улучшил поиск в указателе.

Отредактировано Webarion (19.12.2021 11:01:26)

0

9

Webarion написал(а):

Делюсь своей версией для PB:

У меня ни чего не отображается.
За место инфо белый лист.

0

10

dibor написал(а):

У меня ни чего не отображается.
За место инфо белый лист.

Вот это я не знаю почему. У меня всё норм.
https://forumupload.ru/uploads/0009/ae/28/644/t902173.jpg

0

11

dibor написал(а):

У меня ни чего не отображается.

Посмотри в свойствах файла, есть ли там "Разблокировать" - используется для файлов скачанных с интернета, при чём для CHM именно ваша проблема, неразблокированный просто ничего не отображает.

Webarion написал(а):

Да, справка в Autoit шикарна! Сказано, потрудились люди.

Не один год переводил.

Webarion написал(а):

Такую бы в PB.

Частично обрабатывал, есть стили внешние, примеры подсвеченные, ссылки в примерах, ну в общем почти получилось. Писал на оф.форуме, но думаю не сработает, так как авторы трудятся над преобразованием кода в Си, а со справкой возится это на год погрузится в отдельную работу.

Webarion написал(а):

Улучшил поиск в указателе

посмотри как у меня в указателе сделано, там даже кальки есть: декларе, дефайн и т.д. Введи "Гаджет" и будет русский вариант названий, с непривычки я и сам путаюсь например ищу "лист", а там "список".

Webarion написал(а):

Вот это я не знаю почему. У меня всё норм

Выкладывай файл в zip-архиве, тогда будет норм.

Вот мой вариант, точнее перевод от sergey2400, а от меня обработка скриптами. Ну и может скрипты обработки будут интересны.

Отредактировано AZJIO (20.12.2021 10:41:40)

0

12

AZJIO написал(а):

Посмотри в свойствах файла, есть ли там "Разблокировать" -

Да, был заблокирован :(

Спасибо!

0

13

Добавил несколько функций:
FindData
Is64BitOS
_WinAPI_PathFindOnPath (тут надо доработать)
_WinAPI_ExpandEnvStr
_WinAPI_SHGetSetFolderCustomSettings
Раздел WM_Messages и 8 функций
Раздел Drives

Отредактировано AZJIO (12.03.2022 16:17:11)

0

14

В AutoIt3 был файл справки, который объединял 2 справки в одно дерево. Долго мучился, но в итоге сделал аналог:
Скачать.

MergingHelp - компилятор объединяющего файла.

Отредактировано AZJIO (13.03.2022 13:31:54)

0

15

AZJIO написал(а):

В AutoIt3 был файл справки, который объединял 2 справки в одно дерево. Долго мучился, но в итоге сделал аналог...

Использую сейчас твою справку. Но, есть один неудобный для меня момент - раньше, с другой справкой, при выделении слова в редакторе и нажатии F1, справка автоматически открывала страницу с описанием, если такое ключевое слово существует. Для меня, это достаточно удобная штука. Хотелось бы, чтобы и в твоей версии это работало)

Отредактировано Webarion (16.05.2022 23:26:32)

0

16

Webarion написал(а):

и нажатии F1, справка автоматически открывала страницу с описанием

В комплекте есть help.exe, я использую запуск через него. На сколько я знаю стандартный способ должен работать, так как открывает через имя файла внутри справки (без MergingHelp). Но я использую help.exe, чтобы открывались примеры прямо из справки в правом верхнем углу значок открытия примеров.

0

17

Раз уж тема поднята, то обновил справку добавив функции собственного производства. Кончено же RegexReplace2 я переделал, остальные полностью с нуля, разве что когда мне показали как происходит побайтовое чтение памяти, сразу идеи пошли как это использовать.

RegexReplace2 Замена с помощью регулярного выражения с использованием ссылок на группы в строке замены.
IsDigital Проверяет является ли все символы в строке цифрами 0-9
IsFloat Проверяет является ли текст дробным числом, например "1.2"
IsHex Проверяет является ли строка шестнадцатеричным числом с цифрами 0-9, A-F
IsLatin Проверяет является ли строка набором букв и цифр A-Z, 0-9
LTrimChar Удаляет указанные символы слева.
RTrimChar Удаляет указанные символы справа.
RepeatCharN Повторяет указанный символ заданное число раз.

0

18

AZJIO
дайте ссылку на последние файлы помощи для Pb и ваших функций

0

19

bizdon
Ссылка в шапке темы (PB User.7z), загружаю всегда на яндекс просто кидая файл в браузер и подменяя старый файл. Чтобы использовать с MergingHelp нужно заменить пробел подчёркиванием, в следующий раз буду выкладывать с правильным именем.

0

20

AZJIO написал(а):

Раз уж тема поднята, то обновил справку добавив функции собственного производства. Кончено же RegexReplace2 я переделал

К сожалению, все эти варианты с заменой обратных ссылок через ReplaceString в корне неправильные (в том числе и которые я выкладывал) - в них легко получить ошибочный результат. Увы.

0

21

Smitis
Вы можете ответить тут о проблемах. Я там особо ничего не менял, смысл остался прежним. Я заменил формирование результата через список, что позволило быстро объединять строки копируя память (это я почерпнул из примера Петра, когда он давал мне код поиска файлов и код медленно объединял строки и он дал пример через копирование памяти), так как объединение переменных работает медленно за счёт перевыделения памяти. И вычисление групп вынес из цикла, так как группы в рег.выр.е не изменяются, поэтому нет смысла например 1000 раз запрашивать количество групп, их всегда будет одно и тоже для текущего рег.выр.а. Так что я сделал оптимизацию и выложил. А остальные 3 варианта из 4-х работают менее стабильно, то не кроссплатформенно, то просто глюки, либо работают только при определённых условиях. А эта функция работает идеально везде. Единственное её ограничение это от 0 до 9 групп (в AutoIt3 нет ограничения), можно было бы сделать как в AutoIt3 но в 99.999% это не пригодится, там если групп больше 10 то используется синтаксис \{99}, ради этого придётся немного усложнить анализатор, грубо говоря искать в тексте замены конструкцию \\\{d+\}, но я сделаю это, когда придётся использовать рег.выр. с более чем 10 групп.

Smitis написал(а):

в них легко получить ошибочный результат

Всмысле, что \1 может оказаться текстом а не группой? Ну так это от пользователя зависит, если это введено как правило воспринимать \1 как группу, то просто надо это учитывать, а не считать это ошибкой.

Или вы хотите вместо ReplaceString использовать ReplaceRegularExpression, чтобы запретить группы методом экранирования \\1, типа искать \1 перед которым нет двойной наклонной черты \\? Типа такого рег.выр (?<!\\)\\\d или (?<!\\)(?:\\\\)*\K(\\\d) где если нечётное число \\ перед цифрой, то это воспринимается как группа.

Можно добавить IsRegularExpression(#RegularExpression), чтобы перед использованием проверить что этот рег.выр. прошёл валидацию.

Отредактировано AZJIO (20.05.2022 14:31:22)

0

22

AZJIO написал(а):

Вы можете ответить тут о проблемах.

Я знаю эту тему и что-то уже даже озвучивал.

AZJIO написал(а):

Ну так это от пользователя зависит, если это введено как правило воспринимать \1 как группу, то просто надо это учитывать, а не считать это ошибкой.

Если бы заранее знать, что придётся заменять и на что, то сама необходимость выполнения замены отпадёт :) (шучу, шучу).

Думаю, лучше действительно продолжить в той теме.

0

23

Обновил
1. Добавил страничку "Ссылки на будущее" (9 ссылок), так как замечал интересные вещи, но потом забывал про них насовсем, поэтому решил вести подборку. В будущем может понадобиться и придёт понимание важности этих модулей.
2. Добавлен TrimCharsToString, GetFileList
3. Функции LTrimChar и RTrimChar исправлены, замена For на While.
4. Мелкие исправления в 3-х файлах.

Обновил
Добавил FastString

Отредактировано AZJIO (25.02.2023 06:29:23)

0

24

Сделал онлайн вариант
Кстати, может справку PureBasic тоже сделать онлайн?

0

25

AZJIO написал(а):

Сделал онлайн вариант

Отлично, но не помешала бы ссылка на файл в котором находятся рассматриваемые функции.
Например библиотека Registry. Описание функций есть, а где скачать Registry.pbi может быть не очевидно...
В дистрибутив PB файл не входит.

AZJIO написал(а):

Кстати, может справку PureBasic тоже сделать онлайн?

Если есть желание и возможность, то почему бы и нет.
Раньше была онлайн справка на русском, но сайта давно нет.

0

26

Пётр
Ранее для AutoIt3 я делал скрипт, который обрабатывает файлы (удаляет пробелы в именах, и исправляет ссылки, убирает переключение тем, кнопку запуска файла-кода и т.д.) Сейчас пока лень заниматься, поэтому вручную сделал замены, и то не идеально, в заголовки нужны стрелки перехода в раздел "..._Management.htm", добавил только прыжок в корень, а в раздел вручную надо или используя список имён в разделе. В общем пока лень делать автоматизацию. В CHM добавил ссылки во все примеры, а в онлайн-вариант добавил ссылки только в первых примерах. И добавил 2 примера (не обновлял CHM) и понимаю что без автоматизации это тяжело каждый пример обрабатывать вручную. Когда нибудь придётся скрипт писать.

ОК, на счёт официальной справки сделаю её онлайн, и выложу, может кто захочет сделать на своём сервере.

готово и архив, но 135 файлов не передаются на сервер, из них рисунки и и некоторые html либо по размеру либо по имени, но есть неподдающиеся предположению, маленькие с нормальными именами файла.

Скрипты и один pb-файл с помощью которых привёл файлы к нужной кондиции. Теперь все ссылки в нижнем регистре, как и реальные файлы.

Отредактировано AZJIO (02.03.2023 07:06:54)

+1

27

AZJIO
спасибо!)
Надо отдельную кнопку запилить  :cool:

0

28

Обновил на сервере, изменив путь, теперь без "\pb\", так как один из критериев на сервере был максимальный уровень вложенности 4, теперь png-файлы в описаниях работы IDE отображаются. Не перенесены на сервер только папка с непонятными повторяющимися файлами  "\reference\instruction_tables.files" (видимо точка мешает) и 2 примера со скобками в именах sort_(string).pb и sort_(numeric).pb.

0

29

На скорую руку сделал несколько описаний без примеров.

GadgetPB
WindowPB
GetParentGadget

AddTabBarGadgetItem
ClearTabBarGadgetItems
CountTabBarGadgetItems
FreeTabBarGadget
RemoveTabBarGadgetItem
SetTabBarGadgetAttribute
SetTabBarGadgetItemState
TabBarGadget
TabBarGadgetItemID
TabBarGadgetItemToolTip
TabBarGadgetToolTip
UpdateTabBarGadget
этот список (TabBarGadget) будет продолжен... русифицирую Demo пример, а индивидуальные примеры добавлять не буду

Scintilla (это делал давно и качественно)
#SCI_INDICATOR
#SCI_STYLE

bizdon написал(а):

AZJIO
спасибо!)
Надо отдельную кнопку запилить  :cool:

не сразу видимо понял, но если кнопку чтобы прыгнуть в описание, то лучше онлайн. Я выше писал, что сделал слияние справок с помощью специального CHM, который берёт оба дерева и объединяет в одно. То есть у меня в справке PureBasic просто ещё один раздел функций.

Отредактировано AZJIO (21.06.2023 15:49:10)

0

30

Обновил.
Все функции библиотеки TabBarGadget добавлены (итого 30 шт.).
Изначально они были без примеров, теперь практически все с примерами (кроме ...TabBar...Data и UpdateTabBarGadget). Так как для Data надо создавать какую-нибудь структуру для связи вкладки с каким нибудь элементом окна (Scintilla или MDIGadget или ещё что нибудь), в общем сложный наворот, а вставить туда просто число было бы слишком просто, чтобы делать для этого пример.
Вариант UTF-8 пока не пересобирал, он для иностранцев, в последнюю очередь.
Разбирался со всеми так как не понятно было "Position" это индекс или запоминание порядка создания, оказалось чисто индекс.
Еще интересная вещь: функии GetTabBarGadgetItemPosition, GetTabBarGadgetState, GetTabBarGadgetItemState возвращают активную вкладку, при чём некоторые имеют дополнительный функционал, но получить активную вкладку можно любой из них.
И разобрался с TabBarGadgetItemID, так как в связи с вопросами о "Position" возникал вопрос какая из них возвращает индекс, какая позицию создания, а может дескриптор, в итоге оказалось возвращает указатель на структуру, из которого можно напрямую извлечь некоторые параметры, не делая отдельные вызовы для каждого параметра.

0


Вы здесь » PureBasic - форум » PureBasic для Windows » Компилятор справки PureBasic на основе компилятора справки AutoIt3