LookDBF

Здесь можно обсудить ваш любимый плагин.
Shmuel
Posts: 6834
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

LookDBF

Post by Shmuel »

Latest post of the previous page:

buniak_a_h wrote: Для редактирования осталось ограничение в 512 байт. Это - следствие структуры FarDialogItem. Насколько я понял, это - внутренняя структура ФАРа; т.е. ограничение самого менеджера
В структуре FarDialogItem нет такого ограничения, разве что сам плагин установил поле MaxLength в 512.
User avatar
buniak_a_h
Posts: 4262
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

LookDBF

Post by buniak_a_h »

Shmuel wrote: В структуре FarDialogItem нет такого ограничения, разве что сам плагин установил поле MaxLength в 512.
В плугине какая-то совершенно другая структура FarDialogItem; там нет полей MaxLength, UserData и Reserved. На месте поля Data - union, максимальный размер - в char Data[512]. При попытке изменить 512 на 32767 зависание происходит в процедуре extern PluginStartupInfo Info.DialogEx. Я не писал на C++ уже лет 20, на Visual Studio - никогда. Но мне кажется, что этот завис где-то ВНЕ плугина.
Программировать просто. Знай, жми себе на кнопочки... © Владелец IT-компании
User avatar
zg
zero-gravity
Posts: 6035
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

LookDBF

Post by zg »

Shmuel wrote:В структуре FarDialogItem нет такого ограничения, разве что сам плагин установил поле MaxLength в 512.
плагин под первую версию.
User avatar
Vertigo
Posts: 85
Joined: Tue 13 Apr, 2010 12:04
Location: Moscow, Russia
Has thanked: 11 times
Been thanked: 4 times

LookDBF

Post by Vertigo »

buniak_a_h wrote:Одна ошибочка у меня ушла (та, что с горизонтальной навигацией). Решение было простое:
Это, а также по соседству в GoLast я поправил. Правда, во втором случае остался-таки косяк, когда последняя колонка отображается на экране не полностью. Я пока не понимаю, что там хотел сказать оригинальный автор в коде. Но хотя бы падать не должно.
User avatar
Vertigo
Posts: 85
Joined: Tue 13 Apr, 2010 12:04
Location: Moscow, Russia
Has thanked: 11 times
Been thanked: 4 times

LookDBF

Post by Vertigo »

buniak_a_h wrote: Если ограничение в 512 (char[512] FarDialogItem.Data) победить напрямую не удастся, то предлагаю два варианта обхода проблемы:
Думаю, ограничение победить не удастся. Поэтому, придётся всё же подумать о портировании под Far3. Впрочем, вариант (а) мне в любом случае нравится, а (б) можно как временную затычку.
Last edited by HaRT on Mon 18 Jul, 2016 14:04, edited 1 time in total.
Reason: Исправлено цитирование
User avatar
buniak_a_h
Posts: 4262
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

LookDBF

Post by buniak_a_h »

Vertigo wrote: Думаю, ограничение победить не удастся
Как выяснилось, это - ограничение для Far-1. Если перейти на интерфейс Far-3, то ограничение уйдёт. Но!
  1. Тогда плугин перестанет работать под первым ФАРом
  2. На самом деле мне тоже вариант (а) нравится. Не только универсальностью, но и удобством: очень длинные поля реально удобнее править в обычном редакторе (можно использовать идею WordWrap-а: запоминать позиции, куда вставляется \n и перед сохранением удалять. Также переформатировать при изменении размера консоли).
Программировать просто. Знай, жми себе на кнопочки... © Владелец IT-компании
User avatar
buniak_a_h
Posts: 4262
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

LookDBF

Post by buniak_a_h »

Vertigo wrote:Это, а также по соседству в GoLast я поправил. Правда, во втором случае остался-таки косяк, когда последняя колонка отображается на экране не полностью. Я пока не понимаю, что там хотел сказать оригинальный автор в коде. Но хотя бы падать не должно.
На самом деле кузяво было бы убрать варнинги. Как-то несолидно... Да и неизвестно, чем выльется и когда. Так и данные запортить можно
Программировать просто. Знай, жми себе на кнопочки... © Владелец IT-компании
User avatar
Vertigo
Posts: 85
Joined: Tue 13 Apr, 2010 12:04
Location: Moscow, Russia
Has thanked: 11 times
Been thanked: 4 times

LookDBF

Post by Vertigo »

На самом деле мне тоже вариант (а) нравится. Не только универсальностью, но и удобством: очень длинные поля реально удобнее править в обычном редакторе
Вот и я про удобство. Я бы, наверное, даже принудительно ограничил меньшей длиной, чем сейчас вмещается, скажем, 256.
Вот только я не очень уверен насчёт "махинаций" с переносом строк. Я бы пошёл по пути а-ля браузер и HTML: переносы строк заменяются на пробел.
User avatar
buniak_a_h
Posts: 4262
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

LookDBF

Post by buniak_a_h »

Vertigo wrote: принудительно ограничил меньшей длиной,
На самом деле я бы ограничил 512, а редактирование в окне вызывал бы по F4 (просмотр, соответственно, по F3)
Vertigo wrote: переносы строк заменяются на пробел.
У нас есть документы (и в форме XML-документов, и в форме DBF-таблиц), в которых в символьных полях хранятся переносы строк (типа для форматирования юзером). Увы, убедить руководство таможни не смогли ни мы, ни технические специалисты таможни. Поэтому либо (а) редактировать всё поле в виде одной длинной-длинной строки (что ненамного не удобнее имеющегося), либо (б) перед выводом на экран (и при любом изменении) расставлять \n, запоминая позиции, куда вставлено.
Программировать просто. Знай, жми себе на кнопочки... © Владелец IT-компании
User avatar
Vertigo
Posts: 85
Joined: Tue 13 Apr, 2010 12:04
Location: Moscow, Russia
Has thanked: 11 times
Been thanked: 4 times

LookDBF

Post by Vertigo »

buniak_a_h wrote: На самом деле кузяво было бы убрать варнинги. Как-то несолидно...
Безусловно. Со временем. Просто не хочется бездумно расширять размерность локальных переменных. Может потом в обратную сторону "не влезть".
На самом деле, я глазами всё просмотрел - особо криминала не заметил.
Просто в коде жёсткая экономия на переменных и их реюз. Надо разносить.
User avatar
Vertigo
Posts: 85
Joined: Tue 13 Apr, 2010 12:04
Location: Moscow, Russia
Has thanked: 11 times
Been thanked: 4 times

LookDBF

Post by Vertigo »

buniak_a_h wrote: Ничего сложного (особенно, если использовать СОВРЕМЕННЫЙ язык C++. Такого древнего кода, как в этом плугине, не встречал с примерно 1992-го года.
В том-то и проблема, что мои знания этого языка фактически ограничиваются правками уже существующего кода. На чуть более современном уровне, чем данный мамонт. Поэтому многого от меня ждать не приходится... :-(
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

LookDBF

Post by DrKnS »

Vertigo wrote: Думаю, ограничение победить не удастся.
DIF_VAREDIT.
User avatar
Vertigo
Posts: 85
Joined: Tue 13 Apr, 2010 12:04
Location: Moscow, Russia
Has thanked: 11 times
Been thanked: 4 times

LookDBF

Post by Vertigo »

Спасибо, я уже обнаружил это. Копаю в ту сторону.
User avatar
buniak_a_h
Posts: 4262
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

LookDBF

Post by buniak_a_h »

DrKnS wrote: DIF_VAREDIT
Лаконично... :-(
На самом деле, кроме этого проблема в структуре FarDialogItem для первого ФАРа (там массив символов char[512]). Собственно, все описания структур для первого ФАРа я узнаю из файла Plugin.hpp, входящего в исходники (видимо, первый автор получил его с ФАРом, так и тянется...) Чтобы продолжить переделки, нужно иметь описание API первого. У меня его нет. И главное: мы с Vertigo думаем, что игра не стоит свеч: длинные строки просто удобнее редактировать в многострочном редакторе. Тем более, если будет весь редакторский сервис (замена, регэкспы, темплейты и т.п.)
Программировать просто. Знай, жми себе на кнопочки... © Владелец IT-компании
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

LookDBF

Post by DrKnS »

buniak_a_h wrote: нужно иметь описание API первого. У меня его нет
Описание API можно найти в дистрибутиве.
Где можно найти дистрибутив - думаю, знаете.
User avatar
Vertigo
Posts: 85
Joined: Tue 13 Apr, 2010 12:04
Location: Moscow, Russia
Has thanked: 11 times
Been thanked: 4 times

LookDBF

Post by Vertigo »

Plugin.hpp и есть его описание. Взято мной (как и всеми остальными) из дистрибутива или репозитория с исходниками. Комментарии к нему в т.н. энциклопедии, которая также есть в дистрибутиве.
Post Reply

Return to “Обсуждение плагинов”