Latest post of the previous page:
Plugin.hpp и есть его описание. Взято мной (как и всеми остальными) из дистрибутива или репозитория с исходниками. Комментарии к нему в т.н. энциклопедии, которая также есть в дистрибутиве.LookDBF
- buniak_a_h
- Posts: 4259
- Joined: Sat 20 Apr, 2013 00:17
- Location: Санкт-Петробад
- Has thanked: 222 times
- Been thanked: 644 times
- Contact:
LookDBF
Да всё понятно. Только (а) дистр нужен первого, неохота откатываться; (б) в энциклопедии описан (почти везде) современный АПИ (точнее, какая-то смесь старого и нового) и главное - у Вас была здравая мысль: редактировать в отдельном окне даже не с 512, а меньше. Посему я бы и рыть не стал...Vertigo wrote:Plugin.hpp и есть его описание. Взято мной (как и всеми остальными) из дистрибутива или репозитория с исходниками. Комментарии к нему в т.н. энциклопедии, которая также есть в дистрибутиве.
Программировать просто. Знай, жми себе на кнопочки... © Владелец IT-компании
- buniak_a_h
- Posts: 4259
- Joined: Sat 20 Apr, 2013 00:17
- Location: Санкт-Петробад
- Has thanked: 222 times
- Been thanked: 644 times
- Contact:
LookDBF
Vertigo
Нашёл ещё две ошибки:
Нашёл ещё две ошибки:
- Надо расширить буфер редактирования всей записи (модуль LookDBF.cpp, метод WORD LOOK::EditRecord(void), описание s[384] заменить на
[b]s[32767][/b]
) - Там же метод EditDialog::Line(...): необходимо перед формированием элемента DI_TEXT чистить память (после строки
if (iLast == nItems) return 0;
вставить строку
ZeroMemory(&(di[iLast]), sizeof(di[iLast]));
.
Или по-другому. Но чистить надо, иначе, например, имя второго поля в той БД, что я высылал для теста, не видно).
На самом деле имеет смысл, наверно, почистить весь массив di Сразу после размещения, в процедуре EditDialog::Init. А то могут быть совершенно непредвиденные эффекты... НО!!! ВставкаZeroMemory(di, sizeof(di));
после di = new <...> в процедуре EditDialog::Init проблему не решает. Я давно не писал на СИ, не помню, как он с памятью и указателями работает... Может, так и должно быть.
Программировать просто. Знай, жми себе на кнопочки... © Владелец IT-компании
- buniak_a_h
- Posts: 4259
- Joined: Sat 20 Apr, 2013 00:17
- Location: Санкт-Петробад
- Has thanked: 222 times
- Been thanked: 644 times
- Contact:
LookDBF
Vertigo
ЗЫ.
Насчёт того кода, что написал (после di = new <...>) - я не совсем деревянный, понимаю, что sizeof(di)=4. Значит, либо в цикле надо чистить, либо возможно есть ключ компилятора, заставляющий генерить код, очищающий выделенные блоки памяти (типа запрета оптимизации). Я знаю, что в некоторых компиляторах такие флаги есть.
Если верить MSDN, при выделении памяти можно указать инициализатор. Причём, написано, что пустые фигурные скобки инициализируют всё нулями. Ер у меня не получилось - синтаксис ругается, а примера инициализации массива структур в MSDN нету... Может, знаете, как это сделать? Было бы удобно...
Мои исправления:
ЗЫ.
Насчёт того кода, что написал (после di = new <...>) - я не совсем деревянный, понимаю, что sizeof(di)=4. Значит, либо в цикле надо чистить, либо возможно есть ключ компилятора, заставляющий генерить код, очищающий выделенные блоки памяти (типа запрета оптимизации). Я знаю, что в некоторых компиляторах такие флаги есть.
Если верить MSDN, при выделении памяти можно указать инициализатор. Причём, написано, что пустые фигурные скобки инициализируют всё нулями. Ер у меня не получилось - синтаксис ругается, а примера инициализации массива структур в MSDN нету... Может, знаете, как это сделать? Было бы удобно...
Мои исправления:
Программировать просто. Знай, жми себе на кнопочки... © Владелец IT-компании
- buniak_a_h
- Posts: 4259
- Joined: Sat 20 Apr, 2013 00:17
- Location: Санкт-Петробад
- Has thanked: 222 times
- Been thanked: 644 times
- Contact:
LookDBF
Vertigo
Я прошу прощения за назойливость.
В процедуре LOOK::ShowMemo тоже ошибка. Есть строка
Есть неприятность: при вызове плагина или при работе с ним уже выбрана кодовая страница. Но при просмотре-редактировании МЕМО-поля (на самом деле - временного файла) кодовую страницу в редактор при АПИ ФАР-1 не передать. В результате кодовая страница определяется снова. И очень часто неправильно.
Я прошу прощения за назойливость.
В процедуре LOOK::ShowMemo тоже ошибка. Есть строка
if (Yes(WinCode)) ToOem(coCurr->name, nafi) ;
, но нет строки else lstrcpy(nafi, coCurr->name);
. В результате, если НЕ Yes(WinCode)
(подозреваю, что это - ansi-кодировка), то nafi остаётся неопределённым, и в следующей строке ( FSF.sprintf(title,...)
) всё портится (в том числе и имя файла).Есть неприятность: при вызове плагина или при работе с ним уже выбрана кодовая страница. Но при просмотре-редактировании МЕМО-поля (на самом деле - временного файла) кодовую страницу в редактор при АПИ ФАР-1 не передать. В результате кодовая страница определяется снова. И очень часто неправильно.
Программировать просто. Знай, жми себе на кнопочки... © Владелец IT-компании
- buniak_a_h
- Posts: 4259
- Joined: Sat 20 Apr, 2013 00:17
- Location: Санкт-Петробад
- Has thanked: 222 times
- Been thanked: 644 times
- Contact:
LookDBF
Vertigo, вроде нашёл критическую ошибку. Прилагаемую БД плагин считает пустой; на самом деле в ней 330 записей. Возможно, у меня устаревшая версия, к тому же немного изменённая (для поиска поля и для просмотра длинных полей в виде мемо). Изменения я Вам присылал, но в то время в версию они не вошли (а жаль).
Сообщение на всякий случай продублировал в личку... Извините, если что.
- buniak_a_h
- Posts: 4259
- Joined: Sat 20 Apr, 2013 00:17
- Location: Санкт-Петробад
- Has thanked: 222 times
- Been thanked: 644 times
- Contact:
LookDBF
Vertigo!
- Мне тут сказали, что какой-то софт вообще не открывает - ругается, что что-то-там неправильно.
- На самом деле исправляется заменой 2-х байтов (4-го и 5-го). По-моему это как раз количество записей. В исходном (некорректном) - 00,00. Надо 4A, 01 (0x014A=330) . Уж не знаю, чем делался файл. НО! BRO.exe открывает нормально. Пересчитывает по размеру хедера, записи и файла, что ли?... Так что ею можно исправить.
- Vertigo
- Posts: 85
- Joined: Tue 13 Apr, 2010 12:04
- Location: Moscow, Russia
- Has thanked: 11 times
- Been thanked: 4 times
LookDBF
Дык, в том-то и дело, что это не исправление, а костыль. Заголовок-то вроде правильный, получается.
Я, конечно, за то, чтобы всё всегда и везде работало, но мы даже не знаем наверняка, ошибка ли это, и как часто она может возникнуть.
И к тому же, мало ли какой мусор возможен в конце файла. Пример - chkdsk; часто информация о размере оригинального файла теряется, и после восстановления в конце оказывается мусор.
Я, конечно, за то, чтобы всё всегда и везде работало, но мы даже не знаем наверняка, ошибка ли это, и как часто она может возникнуть.
И к тому же, мало ли какой мусор возможен в конце файла. Пример - chkdsk; часто информация о размере оригинального файла теряется, и после восстановления в конце оказывается мусор.
- buniak_a_h
- Posts: 4259
- Joined: Sat 20 Apr, 2013 00:17
- Location: Санкт-Петробад
- Has thanked: 222 times
- Been thanked: 644 times
- Contact:
LookDBF
Ну, можно потом удалить. Лучше мусор, чем потеря данных. Мне каэцца...
Не, не этот случай. Поздно уже, а то я бы спросил у автора, чем получен файл. Но что она не удаляла все записи - точно.
Кстати, о корректности хедера. Плагин при редактировании не меняет в нём дату последнего редактирования (то, что в XBase возвращает функция
LUPDATE()
). Мелочь, конечно... На самом деле даже удобно. Но... Некорректно -
- Posts: 4
- Joined: Fri 09 Apr, 2021 10:58
Можно ли просматривать файл с сервера(NetBox) плагином(LookDBF)?
Доброго времени суток.
Подскажите пожалуйста.
Можно ли просматривать файл с сервера(NetBox) плагином(LookDBF)?
Посмотреть встроенным редактором можно:
на локальной файловой системе создаётся копия, временный файл, который открывается встроенным редактором.
Можно ли тоже самой, но открывать плагином, например LookDBF?
Спасибо.
Подскажите пожалуйста.
Можно ли просматривать файл с сервера(NetBox) плагином(LookDBF)?
Посмотреть встроенным редактором можно:
на локальной файловой системе создаётся копия, временный файл, который открывается встроенным редактором.
Можно ли тоже самой, но открывать плагином, например LookDBF?
Спасибо.
Можно ли просматривать файл с сервера(NetBox) плагином(LookDBF)?
Попробовать не проще чем спросить?
У любого плагина есть возможность делать как Viewer.
Судя по коду (смотрел по диагонали) LookDBF этого не умеет.
У любого плагина есть возможность делать как Viewer.
Судя по коду (смотрел по диагонали) LookDBF этого не умеет.
-
- Posts: 4
- Joined: Fri 09 Apr, 2021 10:58
Можно ли просматривать файл с сервера(NetBox) плагином(LookDBF)?
Пробовал: локальный файл открывает.
Я не нашел как объяснить Far-у скачать файл и открыть его плагином.
Можно ли просматривать файл с сервера(NetBox) плагином(LookDBF)?
на 99% нет, т.к. плагин даже не умеет работать с локальными DBF в архиве
писать макрос, скачивающий файл куда-то локально, а потом вызывать lookDBF, передавая ему скачанный на предыдущем шаге файлРоманов Юрий wrote: ↑Fri 09 Apr, 2021 12:49 Я не нашел как объяснить Far-у скачать файл и открыть его плагином.
Last edited by Mazzi on Fri 09 Apr, 2021 12:57, edited 2 times in total.