Плагины для программы Total Commander
|
|
Бобр | Дата: Пятница, 14.02.2020, 19:11 | Сообщение # 1 |
Рядовой
Группа: Заблокированные
Сообщений: 2
Статус: Offline
| Пытаюсь написать WDX-плагин для Total Commander на FreeBasic. Основной алгоритм почти написан, осталось немного настроить. Но я не могу скомпилировать библиотеку. То есть - компилирую dll, переименовываю в WDX, но при попытке подключить к Total Commander - последний ругается, что мол, плагин неправильный. Я не учил Delphi, но вчера от унылости буквально накатал рабочий кусок плагина на паскале. Я не понимаю многих тонкостей в синтаксисе Delphi, потому и решил учить FreeBasic. Не хочу вникать в Паскаль, неужели придётся? Вот код заготовки, он минимален, что я делаю не так?:
#INCLUDE "windows.bi"
ENUM ft_nomorefields ft_numeric_32 ft_numeric_64 ft_numeric_floating ft_date ft_time ft_boolean ft_multiplechoice ft_string ft_fulltext ft_datetime ft_stringw ft_fulltextw
ft_nosuchfield = -1 ft_fileerror = -2 ft_fieldempty = -3 ft_ondemand = -4 ft_delayed = 0
CONTENT_DELAYIFSLOW = 1
MaxStr=2048 END ENUM
TYPE TimeFormat wHour AS USHORT wMinute AS USHORT wSecond AS USHORT END TYPE
TYPE DateFormat wYear AS USHORT wMonth AS USHORT wDay AS USHORT END TYPE
UNION uFieldValue fvNumeric_32 AS ULONGINT fvNumeric_64 AS ULONGINT fvNumeric_floating AS DOUBLE fvDate AS DateFormat fvTime AS TimeFormat fvBoolean AS ULONG fvMultiplechoice AS ZSTRING * MaxStr fvString AS ZSTRING * MaxStr fvFulltext AS ZSTRING * MaxStr fvDatetime AS FILETIME END UNION
TYPE ContentDefaultParamStruct iSize AS ULONG PluginInterfaceVersionLow AS ULONGINT PluginInterfaceVersionHi AS ULONGINT DefaultIniName AS ZSTRING * MAX_PATH END TYPE
FUNCTION ContentGetSupportedField CDECL ALIAS "ContentGetSupportedField" (BYVAL FieldIndex AS INTEGER, _ FieldName AS ZSTRING, Units AS ZSTRING, BYVAL MaxLen AS INTEGER) AS INTEGER EXPORT IF FieldIndex > 10 THEN RETURN ft_nomorefields ELSE RETURN ft_string END FUNCTION
FUNCTION ContentGetValue CDECL ALIAS "ContentGetValue" (FileName AS ZSTRING, BYVAL FieldIndex AS INTEGER, _ BYVAL UnitIndex AS INTEGER, FieldValue AS uFieldValue, BYVAL MaxLen AS INTEGER, BYVAL Flags AS INTEGER) AS INTEGER EXPORT RETURN ft_string END FUNCTIONДобавлено (14.02.2020, 19:15) --------------------------------------------- Забыл написать. Меняю соглашение на PASCAL или на STDCALL - всё равно не получается.
|
|
| |
haav | Дата: Пятница, 14.02.2020, 20:47 | Сообщение # 2 |
Генералиссимус
Группа: Администраторы
Сообщений: 1361
Статус: Offline
| Серьезно? Это весь плагин? И какая функция отвечает за инициализацию? Как ты передаешь свою функцию в тотал?
Должен же быть какой-то определенный интерфейс для коммуникации dll в программу , а в примере выше я вижу лишь юзерские функции. Нет, может я ошибаюсь и тотал использует именно такие имена ContentGetSupportedField , ContentGetValue , но зная о большой распространенности программы и большого наличия плагинов , я думаю за такие инициализации автора на смех бы подняли
Читай документацию по плагинам к программе. Может даже есть примеры плагинов не только на дельфи. Больше вряд ли чем помогу. На винде почти не сижу уже давно, и ставить платную прогу и тратить на нее свое время не стану принципиально .
Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
|
|
| |
Бобр | Дата: Воскресенье, 16.02.2020, 21:55 | Сообщение # 3 |
Рядовой
Группа: Заблокированные
Сообщений: 2
Статус: Offline
| Люди, а на форуме программисты вообще обитают? Может быть, я зря помощи жду? Что это за повсеместная хамская манера давать советы без повода? Человек даже в винде не сидит. Ты сам то почитай мануалы по тоталу перед тем как подобные советы давать. Во FreePascal'е всё работает, между прочим. Именно с этими функциями.
|
|
| |
haav | Дата: Понедельник, 17.02.2020, 10:52 | Сообщение # 4 |
Генералиссимус
Группа: Администраторы
Сообщений: 1361
Статус: Offline
| Цитата Бобр ( ) Во FreePascal'е всё работает, между прочим. Именно с этими функциями.
Работает? Супер! А здесь тебе делать больше нечего.
P.S. И кстати ошибки в коде и возможные причины неработоспособности я предполагаю, но увы ... Тему кстати закрою, незачем: у тебя во фрипаскале и так все работает, да и советы тебе не нужны.
P.P.S Хочу чтобы было всем понятно , здесь не было и не будет демократии , только тоталитаризм. Будущих выскакивающих из ... банить буду точно также.
Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
|
|
| |
DarkDemon | Дата: Понедельник, 17.02.2020, 20:59 | Сообщение # 5 |
Полковник
Группа: Друзья
Сообщений: 188
Статус: Offline
| Цитата Бобр ( ) Люди, а на форуме программисты вообще обитают? Обитают, тот человек, кого ты назвал хамом, написал Window9, своё IDE, сделал полный перевод русской справки, кучу крутых примеров, статей, написал учебник по FB и админит русскоязычный сайт(топ России по FB) + этот форум. Его готовыми сборками с FBEdit пользуется пол рунета. Так что молодец, испортил отношения с одним из самых квалифицированных программеров. Теперь можешь сразу идти на FreePascal, который, к слову, ничем не лучше и одновременно не хуже на 3GL. Иногда всё таки лучше думать прежде чем что-то писать с нахрапу.
Цитата haav ( ) здесь не было и не будет демократии И прально.
Сообщение отредактировал DarkDemon - Понедельник, 17.02.2020, 21:26 |
|
| |
|