Форум » [x]Harbour » Harbour dbf editor » Ответить

Harbour dbf editor

Pasha: Выкладываю апдейт (давненько не выкладывал): http://files.mail.ru/LXJ3D7 Whatsnew - смотрите сами, не помню уже. Хочу перевести на буржуйскую мову, но не все сообщения еще сделал, так что буржуям пока не показываю, чтобы их великий и могучий не шокировал :)

Ответов - 300, стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 All

Dima: Спасибо , заценим ;)

Dima: Pasha пишет: Whatsnew Это где ?

PSP: Dima пишет: Это где ? Это Паша о том, что он уже не помнит, "Что нового"... :)


AlexMyr: Паша, спасибо. Вот скрин курсор на последнем елементе за пределами окна, вот.

Pasha: AlexMyr пишет: курсор на последнем елементе за пределами окна, вот. Спасибо, поправил. У меня MaxRow большой, и типов полей в dbf много, вот я и не видел, что окошко с типами может вылазить за пределы экрана

AlexMyr: Суммирую поле и получаю ****: Может сумму лучше в окне выводить?

AlexMyr: Сделал фильтр, просуммировал, делаю новый фильтр, а сумма остается висеть, зачем?

AlexMyr: Может не нашел такой функции, а хотелось бы подсчитывать количество записей, без фильтра понятно где смотреть, а с фильтром нет.

AlexMyr: Сделал фильтр, просуммировал, делаю новый фильтр, суммирую - сумма остается с прошлого раза. Нужно по alt-s поставить _нет_, а потом снова поставить _да_ и тогда просуммирует. Хотелось бы сразу суммировать для тех полей для которых стоит _да_. А может shift-s и сразу суммировать то поле где стоит курсор, если нельзя суммировать поле - вывести предупреждение.

Pasha: Выкладываю апдейт с учетом замечаний: http://files.mail.ru/9NMVNA Подсчет количества записей сделал отдельной операцией. При установке фильтра и пр. (смене текущего представления) сделал сброс сумм колонок, если они установлены. Пересчет сумм может быть операций долгой, а я не сторонник навязчивого сервиса. Если суммирование с новым фильтром необходимо, его надо будет вызвать отдельно Если в footing сумма колонки не помещается, то вывожу ее в отдельном окне.

AlexMyr: Pasha пишет: Пересчет сумм может быть операций долгой, а я не сторонник навязчивого сервиса. Если суммирование с новым фильтром необходимо, его надо будет вызвать отдельно Это я и хотел сказать, что операцию суммирования нужно вызывать снова при смене фильтра, если нужно. Спасибо, буду тестить.

AlexMyr: Паша, а как на счет ф-ии Суммирование по полю с условием, чтоб не применять фильтр а затем суммировать, а сразу задаешь условие для суммирования.

AlexMyr: По опыту с другими аналогичными продуктами, понажимал Del, F8, думал пометил на удаление, оказалось нет - удалил совсем . Del - помечает на удаление и очищает запись, а F8 - удаляет физически. Предлагаю по Del только помечать на удаление, и для F8 где-то четко прописать в сообщении что запись будет удалена физически.

AlexMyr: При вводе даты больше 30-го года в базе имеем 1930.

Pasha: Апдейт с учетом последних пожеланий: http://files.mail.ru/CBUT5Q Что нового: - при переустановке фильтра добавлен запрос на пересчет итогов - добавлены настройки для формата даты, по умолчанию century включен - при удалении записей изменен заголовок окна

AlexMyr: Новая версия выдает ошибку при открытии любой базы: Ошибка  BASE/1099 Argument error: STR при наличии dbedit.ini с таким содержимым (т.е. просто зашел в настройки и нажал _Готово_, и в следующий раз уже не открывает) Century = T CodePage = DateFormat = 5 Epoch = 1930 Lang = Leto =

Pasha: Странно.. у меня ошибки нет Там лог ошибок создается, что в нем ?

AlexMyr: Дата: 08/02/11, время: 12:15:05 Ошибка BASE/1099 Argument error: STR Аргументы: [ 1] = C 1930 [ 2] = U [ 3] = U Алиас Вызов из STR(0) Вызов из GETPARAM(619) Вызов из MAIN(480)

Pasha: Спасибо, поправил http://files.mail.ru/KLUU0N

AlexMyr: Округляется сумма по полю, если число знаков суммы больше размерности поля, например поле N,6,2 заполнено записями: 100.21 120.34 903.26 сумма 1124, реально =1123.81

Pasha: Выкладываю dbedit, собранный Harbour 3.0 и C компиляторами: mingw 32-bit mingw 64-bit bcc55 http://files.mail.ru/W83B8P Сырцы, необходимые для сборки библиотеки и правила сборки находятся внутри архива. Поскольку Harbour не поддерживает расширения xHarbour HB_EXT_INKEY, пришлось отказаться от ряда горячих клавиш K_CTRL_*

AlexMyr: В последней версии (в предыдущих не пробовал) вызвал хелп, F7, набрал F2, Готово, и получил: Дата: 19.08.2011, время: 11:32:10 Ошибка BASE/42 Scope violation (protected): HBEDITOR:ATEXT Алиас TEST Вызов из HBEDITOR:ATEXT(0) Вызов из MEMOSEARCH(244) Вызов из TEXTVIEW(61) Вызов из EDITMEMO(52) Вызов из TBHELP(0) Вызов из (b)MAIN(0) Вызов из EXECITEM(394) Вызов из CHECKMENU(633) Вызов из EDITBROWSE(229) Вызов из DBMENU(214) Вызов из MAIN(0)

Pasha: Как оказалось, класс HBEditor из Harbour отличается от соответсвующего класса xHarbour. Ладно бы только методы имели разные имена. Но в классе из Harbour нет метода, позвозяющего установить позицию курсора в тексте. Вследствие этого реализовать в нем функцию поиска (пока ?) невозможно, о чем я с прискорбием и сообщаю.

AlexMyr: Ясно, ничего страшного. (Viktor быстро ответил.)

Pasha: Анонс Что нового: - сравнение структуры; - проверка корректности индекса; - при клике мышкой на заголовок колонки можно создать временный индекс и отсортировать по этой колонке; - сделана отметка отдельных записей и их учет в групповых операциях (удаление, фильтр, замена и пр); - операция группировки числовых полей по заданному выражению; - редакция записи в режиме окна; - редакция символьного поля побайтно - set relation Программу выложу на следующей неделе

AlexMyr: Спасибо, будем ждать.

Pasha: Очередная версия программы: http://files.mail.ru/MPWAVV Помимо того, что я уже упомянул, добавлено прямое переименование поля и (или) изменение его типа без перезаписи данных. Такую операцию можно выполнять только в том случае, если длина поля остается неизменной.

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

Pasha: AlexMyr пишет: И еще хотелось бы помечать на удаление группу записей, т.е. фильтром покрыл данные, а потом все пометил на удаление или снял эту пометку. У дураков мысли сходятся :) Только вчера добавил по нажатию на Ctrl+F7 (замена) на колонке Deleted (*) групповую операцию dbDelete/dbRecall. Выложу апдейт.

Pasha: Ссылка на апдейт: http://files.mail.ru/5SHHRM

AlexMyr: Паша! получил такую ошибку Дата: 21.11.2011, время: 11:28:18 Ошибка BASE/1102 Неверный аргумент: UPPER Аргументы: [ 1] = D 21.11.2011 Алиас MAINDB Вызов из UPPER(0) Вызов из (b)GETBLOCK(0) Вызов из TBFLDFILT(0) Вызов из (b)MAIN(0) Вызов из EXECITEM(0) Вызов из MULTIMENU(0) Вызов из CHECKMENU(0) Вызов из EDITBROWSE(0) Вызов из DBMENU(0) Вызов из MAIN(0)

Dima: Pasha пишет: Ссылка на апдейт: Все равно глюки с полями Autoinc , Rowver Открываем базу , модифицируем структуру и добавляем поле Autoinc , сохраняем и прога падает. В предыдущей версии было нормально. Запускаем dbedit , вводим имя файла (файл dbf лежит в той же папке) , жмем ввод , dbedit пишет что файл не найден.

Pasha: Ссылка на исправленную версию: http://files.mail.ru/0B08OK

Dima: Pasha пишет: Ссылка на исправленную версию Спасибо. А WVT версия планируется ?

Pasha: Dima пишет: А WVT версия планируется ? Она есть изначально. Если запустить dbedit //gtwvt <FileName> то используется терминал wvt

Dima: Pasha А исходник WVTREFRESH можно увидеть ?

AlexMyr: Pasha пишет: Ссылка на исправленную версию: http://files.mail.ru/0B08OK Хм. Пустое окно вылазит. mail.ru глючит или у меня что-то не так?

Dima: AlexMyr mail.ru глючит. По предыдущим линкам такой же результат. ЗЫ я успел качнуть.

AlexMyr: Может как-то шапку в теме сделать и там выкладывать последнюю версию?

Dima: AlexMyr уже доступно

AlexMyr: качаю.

AlexMyr: Паша, спасибо, работает

Sergey Spirin: Pasha пишет: Ссылка на исправленную версию: http://files.mail.ru/0B08OK Скачал, при запуску все exe-шники требуют HBCONTRIB.DLL, её где брать и что это?

Dima: Sergey Spirin В ранних ссылках есть полный комплект. Вот тут http://files.mail.ru/MPWAVV

AlexMyr: Pasha пишет: Очередная версия программы: http://files.mail.ru/MPWAVV Можно сдесь вытянуть dllки

Sergey Spirin: А... Понятно, спасибо.

AlexMyr: Паша, при открытии битой дбф дос навигатор ругается на поврежденный заголовок, а dbf editor открывает молча и при поиске ошибок по ctrl-e ничего не находит. Можно ли исправить такую ситуацию с помощью dbf editor?

Pasha: А что там повреждено ? Повреждения ведь могут быть очень разными. Да и могут быть не повреждения, а какие-то различия в формате, которые трактуются как повреждения. Можно глянуть на этот дбф ?

AlexMyr: Вот http://zalil.ru/32151419

Pasha: А, там к-во записей в заголовке не соответствует действительному к-ву. Харбор использует действительное к-во, так что это повреждение просто игнорирует. Но другой софт может это и не переварить. Ок, добавлю эту проверку при старте, но только в режиме exclusive, поскольку в shared это допустимо.

Pasha: Очередной апдейт: http://zalil.ru/32156516 mail.ru что-то не работает Что нового: - при вставке записи можно скопировать значения всех полей - добавлена посимвольная редакция полей всех типов, не только character - можно скопировать структуру в буфер обмена в формате dbcreate по нажатию Ctrl+C - доработана проверка корректности индекса: теперь ловится случай, когда ключей больше, чем записей - сделана корректировка неправильного к-ва записей в заголовке Времени прошло немного, вот и изменений немного. А новые функции добавляются по мере возникновения потребностей :)

AlexMyr: Pasha пишет: - сделана корректировка неправильного к-ва записей в заголовке Проверил, работает, спасибо.

Pasha: Whatsnew: - добавлен экспорт в формат CSV или массива Harbour в файл или в буфер обмена - добавлен экспорт в формат XML http://zalil.ru/32174607

Vlad04: Паша. Пожелание . При выполнении операций с файлами (добавить из файла,УСТАНОВИТЬ СВЯЗЬ и др.) желательно имя второго файла не набирать , а выбирать из директории.

Pasha: Vlad04 пишет: Пожелание . При выполнении операций с файлами (добавить из файла,УСТАНОВИТЬ СВЯЗЬ и др.) желательно имя второго файла не набирать , а выбирать из директории. С удивлением увидел, что у меня, оказывается, нет диалога выбора файла по маске для консольного режима. Его, конечно, несложно сделать. В связи с этим возник вопрос: как можно получить массив всех дисков ? Вызывать стандартный диалог windows не хотелось бы

Sergey Spirin: Для Windows: DWORD WINAPI GetLogicalDrives(void); [url=http://msdn.microsoft.com/en-us/library/windows/desktop/aa364972(v=vs.85).aspx]http://msdn.microsoft.com/en-us/library/windows/desktop/aa364972(v=vs.85).aspx[/url]

Andrey: Готовая функция, использую давно: /* * MINIGUI - Harbour Win32 GUI library Demo * * Copyright 2002-05 Roberto Lopez <roblez@ciudad.com.ar> * http://www.geocities.com/harbour_minigui/ * * Copyright 2003-05 Grigory Filatov <gfilatov@freemail.ru> */ /*--------------------------------------------------------*/ Function GetDrives() /*--------------------------------------------------------*/ local n, cDrv, nDrv, cVolume := "", aDrive := {} for n := 1 To 26 cDrv := Chr( 64 + n ) nDrv := GetDriveType( cDrv + ":\" ) if nDrv > 1 if nDrv == 2 .and. Upper(cDrv) == "A" cVolume := [3 1/2"] else cVolume := "" GetVolumeInformation( cDrv + ":\", @cVolume ) endif Aadd( aDrive, { if(n = 1, 1, nDrv), cDrv, IF(Empty(cVolume), "none", cVolume) } ) endif next Return aDrive ************************************************************************* #pragma BEGINDUMP #include <windows.h> #include "hbapi.h" #include "hbapiitm.h" #include "commctrl.h" /* Returns one of these: #define DRIVE_UNKNOWN 0 #define DRIVE_NO_ROOT_DIR 1 #define DRIVE_REMOVABLE 2 #define DRIVE_FIXED 3 #define DRIVE_REMOTE 4 #define DRIVE_CDROM 5 #define DRIVE_RAMDISK 6 */ HB_FUNC( GETDRIVETYPE ) { hb_retni( GetDriveType( (LPCSTR) hb_parc( 1 ) ) ) ; } HB_FUNC(GETVOLUMEINFORMATION) { char *VolumeNameBuffer = (char *) hb_xgrab( MAX_PATH ) ; DWORD VolumeSerialNumber ; DWORD MaximumComponentLength ; DWORD FileSystemFlags ; char *FileSystemNameBuffer = (char *) hb_xgrab( MAX_PATH ) ; BOOL bRet; bRet = GetVolumeInformation( ISNIL(1) ? NULL : (LPCTSTR) hb_parc(1) , (LPTSTR) VolumeNameBuffer , MAX_PATH , &VolumeSerialNumber , &MaximumComponentLength , &FileSystemFlags , (LPTSTR)FileSystemNameBuffer , MAX_PATH ) ; if ( bRet ) { if ( ISBYREF( 2 ) ) hb_storc ((char *) VolumeNameBuffer, 2 ) ; if ( ISBYREF( 3 ) ) hb_stornl( (LONG) VolumeSerialNumber, 3 ) ; if ( ISBYREF( 4 ) ) hb_stornl( (LONG) MaximumComponentLength, 4 ) ; if ( ISBYREF( 5 ) ) hb_stornl( (LONG) FileSystemFlags, 5 ); if ( ISBYREF( 6 ) ) hb_storc ((char *) FileSystemNameBuffer, 6 ); } hb_retl(bRet); hb_xfree( VolumeNameBuffer ); hb_xfree( FileSystemNameBuffer ); } #pragma ENDDUMP

Pasha: Спасибо

Pasha: Whatsnew: - добавлена проверка уникального поля - добавлен диалог выбора файла dbf Ссылка для скачивания: http://zalil.ru/32218561 Кстати, заодно подскажите: Если я запрашиваю список каталогов: Directory("*.*", "D") то в харборе атрибут не работает, получаю весь список файлов. В xHarbour можно задать 3-й параметр: Directory("*.*", "D", .t.), тогда результат будет только массив каталогов. Пока я просто удаляю лишнее, но можно ли как-то сделать по-красивее ?

PSP: У меня в диалоге выбора файла русские названия отображаются неперекодированными. Букву диска ввести не дает. Хорошо бы иметь элемент ".."

Pasha: Перекодировку добавлю, конечно Сейчас диски выбираются пробелом, или нажатием Ctrl+Enter. Хотя и по букве надо, сделаю А ".." вроде как есть, кроме корневого каталога, естественно

PSP: Pasha пишет: Сейчас диски выбираются пробелом, или нажатием Ctrl+Enter. Аааа, понял. :) ".." вроде как есть Да, есть. Это я погорячился. :) Его нет, если "упираемся" в элемент "Рабочий стол". Ну, это уже виндовые заморочки. кроме корневого каталога, естественно В Far-е, к примеру, переход из корня по ".." вызывает список дисков. Это необязательно. :)

Andrey: В последней версии, когда открываешь программу без DBF-файла, появляется выбор "Имя файла", далее меню "выбор файла". Так вот в нем при выборе (клавиша ENTER) любого DBF-файла программа не открывает его, а просто выходит (или сваливается). Т.е. "стоишь" на нужном файле, нажимаешь ENTER и вылет..... Лучше бы еще сделать возможность выбора файла: Windows-окно или DOS-окно .... После выгрузки DBF в XML - не читается Firefox или ME: Ошибка синтаксического анализа XML: некорректное объявление XML Адрес: file:///W:/DBedit-Pavel/bin/bcc/aaaa.xml Строка 1, символ 31:<?xml version="1.0" encoding=""?> ------------------------------^

Pasha: Andrey пишет: последней версии, когда открываешь программу без DBF-файла, появляется выбор "Имя файла", далее меню "выбор файла". Так вот в нем при выборе (клавиша ENTER) любого DBF-файла программа не открывает его, а просто выходит (или сваливается). Т.е. "стоишь" на нужном файле, нажимаешь ENTER и вылет..... Файл не откроется только в том случае, когда он уже открыт монопольно другой программой. или имеет атрибут только для чтения, или в папке/диске есть права только на чтение. Кстати, надо добавить поддержку режима readonly. А насчет диалога windows - так программа то не гуевая. Если вставить эти диалоги, то при переключении между окнами dbedit будет терять фокус. Поэтому стандартные диалоги я использовать не буду.

Sergey Spirin: Pasha пишет: программа то не гуевая Паш, а нет планов по GUI-версии? А то, конечно, текущий интерфейс удобоварим только для "закалённых" товарищей

Pasha: Sergey Spirin пишет: Паш, а нет планов по GUI-версии? А то, конечно, текущий интерфейс удобоварим только для "закалённых" товарищей Пока, увы, нет. Хотя сделать это несложно. Просто мне это не очень надо, я ее делал "под фар". Подобных программ существует, наверное, сотни. Но по разным причинам ничего мне не подошло. Продвинутые, как правило, платные, а если бесплатные - то очень уж простенькие. Пришлось сделать свою, заодно нагрузив ее нужными мне функциями. От подобных харбор-программ ее отличает наличие некоторых низкоуровневых операций, которые стандартными средствами не сделаешь.

PSP: Sergey Spirin пишет: только для "закалённых" товарищей Прикольно!

Dima: Sergey Spirin пишет: А то, конечно, текущий интерфейс удобоварим только для "закалённых" товарищей Сергей а реализуйте (выложите если есть) свой вариант GUI аналогичной программы. С удовольствием посмотрим и оценим , да и будет с чем сравнить.

Andrey: Dima пишет: Сергей а реализуйте (выложите если есть) свой вариант GUI аналогичной программы. С удовольствием посмотрим и оценим , да и будет с чем сравнить. Присоединяюсь !!!

Sergey Spirin: Dima пишет: Сергей а реализуйте (выложите если есть) свой вариант GUI аналогичной программы. С удовольствием посмотрим и оценим , да и будет с чем сравнить. Andrey пишет: Присоединяюсь !!! Чего это вы возбудились? Обиделись, что назвал "закалёнными бойцами"? Ну, простите, но действительно же закалённые! Вообще же, Паша прав, что таких программок много, но все время что-то не хватает, либо, если хватает, то платная. У меня ещё ситуация, что надобится это время от времени. Успеваю забыть, что в прошлый раз для этой цели скачал В последнее время пользовал фокс, вроде всё хорошо, но тут прислали файл с текстовым полем больше 255, для фокса это нонсенс оказалось. Скачал DBFManager, вроде нормально, но платный, скоро триал кончится... Поэтому Пашину программу посмотрел с интересом. Сам я лет 7 назад подобное накидывал для Аляски, но более серьёзные дела отвлекли, и в конце концов превратил это начало в демку для алясочников. Тогда я наивный думал, что алясочникам надо объяснить принципы работы FRAX Сейчас еле нашел то "начинание". Ниже скриншот, вот, собственно, мои представления об интерфейсе подобной программы 7-8 летней давности. Ежели у кого есть Дельфи и есть желание сделать тоже самое над харбором и пашиным кодом, то могу помочь

Pasha: Sergey Spirin пишет: Ежели у кого есть Дельфи и есть желание сделать тоже самое над харбором и пашиным кодом, то могу помочь Если кто-то хочет сделать подобное под minigui - пожалуйста, код открыт. Надо сделать объект tsbrowse и навесить функциональность на меню. У меня, конечно, некоторые функции находятся в библиотеке, но, если надо, я их дам. Можно поступить и по-другому: добавить необходимую функциональность к уже существующей minigui-программе. Я думаю, такая имеется, и не одна.

ММК: Pasha пишет: Можно поступить и по-другому: добавить необходимую функциональность к уже существующей minigui-программе. Я думаю, такая имеется, и не одна. :) Пример работы xBrows , но Ваша "начинка" действительно интересная! http://files.mail.ru/9S5B0B

Pasha: Whatsnew: - доработан диалог выбора файла dbf - добавлена поддержка режима readonly - добавлена операция перекодировки между кодовыми страницами - добавлено окно выбора поля в некоторые диалоги http://files.mail.ru/5VNLPM

Vlad04: Паша. Пункт меню "Установить связь" нуждается в доработках . - не распознаются имеющиеся индексы ( индекс составной) - вторая база была повреждена при попытке установить связь

Pasha: Vlad04 пишет: Паша. Пункт меню "Установить связь" нуждается в доработках . - не распознаются имеющиеся индексы ( индекс составной) - вторая база была повреждена при попытке установить связь Да, согласен, вместо автоматического распознавания надо использовать классическое полуавтоматическое с ручным управлением. Ну а что может повредится во 2-м файле, и в какой момент ? Сам файл не изменяется. Его индекс, что ли ?

Vlad04: Ну а что может повредится во 2-м файле, и в какой момент ? Сам файл не изменяется. Его индекс, что ли ? На предложение программы создать индекс я согласился.И еще видимые столбцы второй базы отключал, подключал. Итог: полностью поврежден заголовок второй таблицы (наименования полей стерто)

AlexMyr: Паша, пробую заменить значения в числовом поле на 0 - не работает может что не так делаю?

Pasha: AlexMyr пишет: Паша, пробую заменить значения в числовом поле на 0 - не работает может что не так делаю? Все так, но я поставил проверку ! Empty(...). во избежание случайного нажатия на Ok Чтобы заменить числовое поле на ноль, надо в строке Выражение ввести "0"

AlexMyr: Pasha пишет: надо в строке Выражение ввести "0" Ясно, спасибо

Andrey: Pasha А как сделать удаление записей по условию ? В редакторе DBF-файлов BDBFS есть меню специальное, а у тебя не нашел. Подскажи пожалуйста. А то приходится мучиться на Win7x64bit запускать VirtualBox и там удалять ненужные записи. А потом закрывать VirtualBox запускать твою прогу и упаковывать базу...

Pasha: Andrey пишет: А как сделать удаление записей по условию ? Имеется в виду пометка на удаление ? Не просто, а очень просто. Надо выбрать самую левую колонку - флаг deleted. Затем нажать Ctrl+F7 (замена). В диалоговом окне ввести условие. Можно сделать по другому: установить фильтр, и опять нажать замена.

Andrey: Pasha пишет: Имеется в виду пометка на удаление ? Спасибо большое. Получилось. Только бы цветом еще выделялось, было бы красивей ! И сохранять введенные ранее условия в строке "Условия замены" !

Pasha: Очередная версия: http://zalil.ru/32934409 Помимо мелких улучшений, добавлен выбор таблицы при коннекте к letodb

Andrey: Pasha пишет: Имеется в виду пометка на удаление ? Не просто, а очень просто. Надо выбрать самую левую колонку - флаг deleted. Затем нажать Ctrl+F7 (замена). В диалоговом окне ввести условие. Можно сделать по другому: установить фильтр, и опять нажать замена. А как отменить помеченные записи ?

Pasha: Andrey пишет: А как отменить помеченные записи ? Так же, как и удалить их. В замене же 1-й запрос в диалоге выбирает, удалять или восстанавливать записи.

Andrey: Pasha пишет: Так же, как и удалить их. В замене же 1-й запрос в диалоге выбирает, удалять или восстанавливать записи. Понял, спасибо, разобрался.... Сбоку бы где нибудь написать типа: "ПРОБЕЛ-изменить условие" ! Или стрелку вниз поставить как выборе диалога у всех....

evsob: Можно выложить снова? Ссылки битые.

Pasha: evsob пишет: Можно выложить снова? Ссылки битые. Выложу. Только хочу добавить контроль на длину записи (для исправления "киевского" файла), и контроль на повторяющиеся имена полей

Andrey: Pasha пишет: Только хочу добавить контроль на длину записи (для исправления "киевского" файла), и контроль на повторяющиеся имена полей Спасибо БОЛЬШОЕ !

Pasha: Ссылка для скачивания доработанной программы: http://zalil.ru/33390041

Pasha: Выкладываю новую версию. Добавлены мелкие улучшения: Использование Harbour 3.2dev Выполнение Copy to/Append from с другим rdd Поддержка descend в индексе Транзакция для letodb Установка нескольких set relation Проверка на ошибки в memo-полях и их исправление При открытии файла сделана проверка на read error Поддержка seek last Для scope возможность не обрезать пробелы справа в выражении Group by: можно экспортировать результат в dbf Доработана проверка уникального поля Ссылка для скачивания: http://zalil.ru/33812909

AlexMyr: В окне помощи в нижней строке Ctrl-W-сохранить Alt-R-чтение из файла Alt-W-запись в файл не работают комбинации, или это для других целей?

Pasha: Эти функции были сделаны в xHarbour. Как оказалось, аналогичный класс в Harbour - HBEditor - имеет сильно урезанные возможности, и подобных средств в нем просто нет. Так что остались заглушки. Виктор говорил, что эти возможности перенести проблематично.

AlexMyr: Shift+F4 устанавливаем фильтр по значению поля Ctrl+F7 делаем замену в поле на другое значение Итог - на экране остается одна запись с новым значением, должно быть пусто.

Pasha: Поправил Заодно наткнулся на забавную фичу харбора: После стабилизации такого обьекта вызов eof() дает false, а recno() получается равным lastrec()|+1, что как бы противоречит друг другу.

AlexMyr: Pasha пишет: Поправил спасибо!

Pasha: Обновление к предыдущей версии: http://zalil.ru/33829757 Что нового: 1.81 - добавлен memo pack - исправлена стабилизация после replace - редакция memo: добавлен размер memo на экране - переход на указанную колонку

santy: Pasha , вы можете выставить hbp файлы (hbmk2) для создания dll файлов которые идут с редактором, хочу попробовать перестроить проект для openWatcom. Спасибо.

Pasha: Попробую. Скачаю OpenWatcom (я его пробовал несколько лет назад) и соберу dbedit

santy: Если хотите сами, то может лучше взять уже готовый вариант из ветки http://clipper.borda.ru/?1-1-0-00000354-000-0-0-1349189476 там уже собраные компиляторы xHarbour и Harbour + OpenWatcom (mini)

Pasha: Я харбор собираю с измененным inkey.ch для поддержки комбинаций клавиш с alt и ctrl. Przemek не хочет вносить эти изменения, так как собирается сделать этот режим в runtime. Но пока он это не сделал, а я ждать не могу, поэтому для своих сборок меняю inkey.ch Поэтому я пересобрал Харбор с owcomp из поставки minigui-owc В батник сборки только добавил команду для сборки библиотек contrib в виде dll: set HB_BUILD_CONTRIB_DYN=yes затем собрал hbleto.dll стандартным способом. Проблем не возникло. Далее я собираю дополнительную библиотеку hbcontrib.dll, в которую включаю gtwvg, средства работы с zip и adordd. Сборка не удалась: возникла ошибка с gtwvg: file lib\watcom\.hbmk\win\watcom\hbdyn\wvgcore.obj(E:\harbour\contrib\gtwvg\wvgcore.c): undefined symbol IID_IPicture Причина ошибки мне непонятна: это символ из uuid.lib, которую я уже подключил принудительно, но ошибка не исчезла. Ну да ладно, решил обойтись без этих библиотек, убрал ссылки на них в своей библиотеке hbgals. Собрал ее, собрал dbedit, запускаю - получаю gpf. Причина пока непонятна, надо разбираться. Конечно, можно все собрать все и без dll, но я давно собираю программы только в этом режиме.

santy: Относительно IID_IPicture объявление даного интерфейса есть в файле \contrib\hbwin\oleuuid.c , попробуйте подключить библиотеку hbwin. Есть файл hbserv.dll - это наверное ваши функции?

Pasha: santy пишет: Относительно IID_IPicture объявление даного интерфейса есть в файле \contrib\hbwin\oleuuid.c , попробуйте подключить библиотеку hbwin. Есть файл hbserv.dll - это наверное ваши функции? Да, теперь сборка hbcontrib удалась. Я hbwin и так подключал, теперь я добавил непосредственно: {watcom}\harbour\contrib\hbwin\oleuuid.c Но эта библиотека не очень то нужна, и я ее совсем уберу из сборки для dbedit hbserv - это моя сервисная библиотека Но gpf я пока не победил

Pasha: Проблема с gpf локализована, но не побеждена Если в модуле, который находится в dll, обьявить Static-переменную, инициализировать ее, и возвращать как результат эту переменную в основной модуль, возникает gpf: модуль из dll: Static cTest := 'Test' Function TestServ Return cTest основной модуль: ? TestServ() здесь gpf Можно сделать самодостаточный пример и дать его в devlist

Pasha: А что это за версия ow, не из последних ? Open Watcom C32 Optimizing Compiler Version 1.9 Portions Copyright (c) 1984-2002 Sybase, Inc. All Rights Reserved. Может быть, стоит взять новее ? Все-таки продукт 10-летней давности

santy: Супер А если объявлять статическу функцию, которая будет менять статическую переменную? ----- Да нет, это последняя версия 2010 года 1.9.

Pasha: А такой тест работает ? http://zalil.ru/33834297 Сначала надо собрать mod1_dll, а затем test.exe

santy: Нет, пока ошибка.

Pasha: Проблема со сборкой dll для ow решена Сборка dbedit с OpenWatcom: http://zalil.ru/33836692 В include я положил модифицированный inkey.ch. harbour я использую от июня этого года Попробуйте собрать dbedit у себя, используя hbleto.lib и hbgals.lib, не пересобирая их. Должно получиться.

santy: Спасибо Паша. Буду пробовать.

santy: Паша спасибо dbedit собирается без проблем. Я читал обсуждение на гугле, интересно, теперь понятно. При работе программа падает при выборе файла базы. Если указать в коммандной строке, то всё ок, если выбрать из программы вываливаеться в Фар. Ошибка не только в сборке на Ваткоме но и на Борланде.

Pasha: Да с этим падением непонятно. У меня на win7 и winxp падения нет, а некоторые пишут, что падает. Можете пересобрать dbedit с отладкой, с флагом -prgflag=-b вместо -prgflag=-l в cm.hbm В логе ошибки должен быть оператор, номер строки.

ММК: Pasha пишет: Да с этим падением непонятно. У меня на win7 и winxp падения нет, а некоторые пишут, что падает. У меня падает. Семерка, но на 64

Pasha: Обновленная версия программы: http://zalil.ru/33943807 Что нового: - переход на указанную колонку - печать - замена подстроки - редакция нескольких файлов - добавить из файла: возможно указать указать поля

AlexMyr: Паша, спасибо за новую версию! Что заметил - привык суммировать по Alt-S, сейчас стало Alt-M, а в хелпе так и осталось Alt-S Alt-E вызывает меню "Редакция", хотя по идее должно выдать запрос на проверку файла.

alkresin: Привет всем. Что касается dbf editor - я выложил недавно исходники dbc у себя на сайте http://kresin.belgorod.su/rus/, его можно построить и с letodb - там соответствующий bat'ник в комплекте.

AlexMyr: alkresin пишет: я выложил недавно исходники dbc Александр здравствуйте! Попробовал скомпилировать dbc с Harbour 3.2.0dev (Rev. 18526) и получил следующее C:/prg_hrb/dbc/procs_c.c: In function 'HB_FUN_CARR_INIT': C:/prg_hrb/dbc/procs_c.c:7:4: error: unknown type name 'LONG' C:/prg_hrb/dbc/procs_c.c:7:20: error: 'LONG' undeclared (first use in this function) C:/prg_hrb/dbc/procs_c.c:7:20: note: each undeclared identifier is reported only once for each function it appears in C:/prg_hrb/dbc/procs_c.c:7:25: error: expected expression before ')' token C:/prg_hrb/dbc/procs_c.c:8:4: error: unknown type name 'ULONG' C:/prg_hrb/dbc/procs_c.c:9:11: error: 'pul' undeclared (first use in this function) C:/prg_hrb/dbc/procs_c.c:17:20: error: expected expression before ')' token C:/prg_hrb/dbc/procs_c.c:19:7: warning: implicit declaration of function 'ISBYREF' [-Wimplicit-function-declaration] C:/prg_hrb/dbc/procs_c.c: In function 'HB_FUN_CARR_PUT': C:/prg_hrb/dbc/procs_c.c:28:4: error: unknown type name 'ULONG' C:/prg_hrb/dbc/procs_c.c:28:41: error: 'LONG' undeclared (first use in this function) C:/prg_hrb/dbc/procs_c.c:29:11: error: 'pul' undeclared (first use in this function) C:/prg_hrb/dbc/procs_c.c:29:23: error: expected expression before ')' token C:/prg_hrb/dbc/procs_c.c:30:4: error: unknown type name 'ULONG' C:/prg_hrb/dbc/procs_c.c:41:14: error: 'pul1' undeclared (first use in this function) C:/prg_hrb/dbc/procs_c.c:42:20: error: expected expression before ')' token C:/prg_hrb/dbc/procs_c.c: In function 'HB_FUN_CARR_DEL': C:/prg_hrb/dbc/procs_c.c:53:4: error: unknown type name 'ULONG' C:/prg_hrb/dbc/procs_c.c:53:41: error: 'LONG' undeclared (first use in this function) C:/prg_hrb/dbc/procs_c.c:54:11: error: 'pul' undeclared (first use in this function) C:/prg_hrb/dbc/procs_c.c:54:23: error: expected expression before ')' token C:/prg_hrb/dbc/procs_c.c:55:4: error: unknown type name 'ULONG' C:/prg_hrb/dbc/procs_c.c: In function 'HB_FUN_CARR_GET': C:/prg_hrb/dbc/procs_c.c:65:4: error: unknown type name 'ULONG' C:/prg_hrb/dbc/procs_c.c:65:41: error: 'LONG' undeclared (first use in this function) C:/prg_hrb/dbc/procs_c.c:66:11: error: 'pul' undeclared (first use in this function) C:/prg_hrb/dbc/procs_c.c:66:23: error: expected expression before ')' token C:/prg_hrb/dbc/procs_c.c:67:4: error: unknown type name 'ULONG' C:/prg_hrb/dbc/procs_c.c: In function 'HB_FUN_CARR_COUNT': C:/prg_hrb/dbc/procs_c.c:77:4: error: unknown type name 'LONG' C:/prg_hrb/dbc/procs_c.c:77:18: error: 'LONG' undeclared (first use in this function) C:/prg_hrb/dbc/procs_c.c:77:23: error: expected expression before ')' token C:/prg_hrb/dbc/procs_c.c: In function 'HB_FUN_CLONG_SET': C:/prg_hrb/dbc/procs_c.c:104:4: error: unknown type name 'ULONG' C:/prg_hrb/dbc/procs_c.c:115:4: warning: pointer targets in passing argument 1 of 'hb_retclen_buffer' differ in signedness [-Wpointer-sign] In file included from C:/prg_hrb/dbc/procs_c.c:2:0: c:/dev/harbour/include/hbapi.h:685:25: note: expected 'char *' but argument is of type 'unsigned char *' C:/prg_hrb/dbc/procs_c.c: In function 'HB_FUN_CLONG_RESET': C:/prg_hrb/dbc/procs_c.c:121:4: error: unknown type name 'ULONG' C:/prg_hrb/dbc/procs_c.c:132:4: warning: pointer targets in passing argument 1 of 'hb_retclen_buffer' differ in signedness [-Wpointer-sign] In file included from C:/prg_hrb/dbc/procs_c.c:2:0: c:/dev/harbour/include/hbapi.h:685:25: note: expected 'char *' but argument is of type 'unsigned char *' hbmk2: Error: Running C/C++ compiler. 1 Собирал с помощью файла hbp для hbmk2 #begin of dbc.hbp -IC:\dev\harbour\contrib\xhb\ dbc move lang modistru commands view query pechdbc prcmenu errorsys procs1 procs3 procs5 procs7 procs8 procared procini procscri procs_c.c #end of dbc.hbp

Pasha: Александр, можете посмотреть mt-версию letodb, это branch rel-1-mt Стоит перенести ее в основную ветсь CVS ?

nick_mi: Получил ошибку при запуске DBCH http://shot.qip.ru/00b6An-24g5aDo31/ и содержание лог файла Error BASE/1076 Argument error: >= Called from WINTODOS(494) Called from (b)WRKDOC(367) Called from FLDSTR(691) Called from FLDCOUNT(515) Called from DBFLIST(237) Called from WRKDOC(386) Called from MAIN(145) HwGUI 2.16 Harbour 2.1.0beta1 (Rev. 14712) Date:12/11/12 Time:10:42:29 причем при клике на кнопке Close ошибка выпадает снова но уже другая, причем похоже ошибки крутятся одни и те-же

alkresin: AlexMyr пишет: Попробовал скомпилировать dbc с Harbour 3.2.0dev (Rev. 18526) и получил следующее C:/prg_hrb/dbc/procs_c.c: In function 'HB_FUN_CARR_INIT': C:/prg_hrb/dbc/procs_c.c:7:4: error: unknown type name 'LONG' По-видимому, с 3-ей версии Харбора LONG и ULONG больше не определен, вместо них HB_LONG и HB_ULONG. Я то сам только недавно с 1-й на Harbour 2.1 перешел :). Можете поменять в procs_c.c LONG -> HB_LONG и ULONG -> HB_ULONG руками или скачайте по-новой dbch_src.zip, я там уже поменял.

Andrey: alkresin Очень рад вашему появления на форуме ! Не забыли значит нас ?

alkresin: Pasha пишет: Александр, можете посмотреть mt-версию letodb, это branch rel-1-mt Стоит перенести ее в основную ветсь CVS ? Я скачал ее месяц назад, начал смотреть, но пока не сильно продвинулся - очень много изменений. Практическую проверку надо вести на реальных данных в реально многопользовательском режиме, а организовать такое тестирование довольно сложно. Я сам пока сижу на версии, где последний Changelog - 2010-08-20. Я тогда застрял на ней, поскольку после этого изменился протокол передачи данных, а это для меня большая проблема. У меня работают 4 letodb сервера, 3 из них - 24 часа в сутки - там складываются данные непосредственно с электросчетчиков и с разных датчиков по расходу сырья. Это все завязано с главным сервером, поменять надо все одновременно, а это, кроме серверов, пара десятков программ. Словом, есть проблемы :). Буду стараться, но по срокам ничего обещать не могу. А что касается того, какая ветка главная, - вряд ли это реально важно. Надо просто где-нибудь ясно написать, что есть что.

alkresin: nick_mi пишет: Получил ошибку при запуске DBCH http://shot.qip.ru/00b6An-24g5aDo31/ Хм... даже не знаю, что сказать ... Но это наверное не при запуске произошло - вы его запустили, установили какие-то режимы ( readonly, ansi ), потом открыли файл ? А как на других файлах ? Я этой утилитой пользуюсь много лет и с локальными файлами, и с ADS, и с Letodb - и все нормально ...

alkresin: Andrey пишет: alkresin Очень рад вашему появления на форуме ! Спасибо!

AlexMyr: alkresin пишет: исходники dbc Еще ошибка в исходнике Compiling 'dbc.prg'... dbc.prg(759) Error E0020 Incomplete statement or unbalanced delimiters dbc.prg(760) Error E0030 Syntax error "syntax error at ','" alkresin пишет: Можете поменять в procs_c.c LONG -> HB_LONG и ULONG -> HB_ULONG руками Менял, получил: C:/prg_hrb/dbc/procs_c.c: In function 'HB_FUN_CARR_INIT': C:/prg_hrb/dbc/procs_c.c:19:7: warning: implicit declaration of function 'ISBYREF' [-Wimplicit-function-declaration] C:/prg_hrb/dbc/procs_c.c: In function 'HB_FUN_CARR_PUT': C:/prg_hrb/dbc/procs_c.c:35:13: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] C:/prg_hrb/dbc/procs_c.c: In function 'HB_FUN_CARR_DEL': C:/prg_hrb/dbc/procs_c.c:60:4: warning: value computed is not used [-Wunused-value] C:/prg_hrb/dbc/procs_c.c: In function 'HB_FUN_CLONG_SET': C:/prg_hrb/dbc/procs_c.c:115:4: warning: pointer targets in passing argument 1 of 'hb_retclen_buffer' differ in signedness [-Wpointer-sign] In file included from C:/prg_hrb/dbc/procs_c.c:2:0: c:/dev/harbour/include/hbapi.h:685:25: note: expected 'char *' but argument is of type 'unsigned char *' C:/prg_hrb/dbc/procs_c.c: In function 'HB_FUN_CLONG_RESET': C:/prg_hrb/dbc/procs_c.c:132:4: warning: pointer targets in passing argument 1 of 'hb_retclen_buffer' differ in signedness [-Wpointer-sign] In file included from C:/prg_hrb/dbc/procs_c.c:2:0: c:/dev/harbour/include/hbapi.h:685:25: note: expected 'char *' but argument is of type 'unsigned char *' hbmk2: Linker command: gcc.exe d:/tmp/hbmk_8zxsm5.dir/dbc.o d:/tmp/hbmk_8zxsm5.dir/move.o d:/tmp/hbmk_8zxsm5.dir/lang.o d:/tmp/hbmk_8zxsm5.dir/modistru.o d:/tmp/hbmk_8zxsm5.dir/commands.o d:/tmp/hbmk_8zxsm5.dir/view.o d:/tmp/hbmk_8zxsm5.dir/query.o d:/tmp/hbmk_8zxsm5.dir/pechdbc.o d:/tmp/hbmk_8zxsm5.dir/prcmenu.o d:/tmp/hbmk_8zxsm5.dir/errorsys.o d:/tmp/hbmk_8zxsm5.dir/procs1.o d:/tmp/hbmk_8zxsm5.dir/procs3.o d:/tmp/hbmk_8zxsm5.dir/procs5.o d:/tmp/hbmk_8zxsm5.dir/procs7.o d:/tmp/hbmk_8zxsm5.dir/procs8.o d:/tmp/hbmk_8zxsm5.dir/procared.o d:/tmp/hbmk_8zxsm5.dir/procini.o d:/tmp/hbmk_8zxsm5.dir/procscri.o d:/tmp/hbmk_8zxsm5.dir/procs_c.o d:/tmp/hbmk_8zxsm5.dir/hbmk_gv995h.o -mconsole -Wl,--start-group -lhbextern -lhbdebug -lhbvm -lhbrtl -lhblang -lhbcpage -lgtcgi -lgtpca -lgtstd -lgtwin -lgtwvt -lgtgui -lhbrdd -lhbuddall -lhbusrrdd -lrddntx -lrddcdx -lrddnsx -lrddfpt -lhbrdd -lhbhsx -lhbsix -lhbmacro -lhbcplr -lhbpp -lhbcommon -lhbmainstd -lkernel32 -luser32 -lgdi32 -ladvapi32 -lws2_32 -lwinspool -lcomctl32 -lcomdlg32 -lshell32 -luuid -lole32 -loleaut32 -lmpr -lwinmm -lmapi32 -limm32 -lmsimg32 -lwininet -lhbpcre -lhbzlib -Wl,--end-group -odbc.exe -Lc:/dev/harbour/lib/win/mingw d:/tmp/hbmk_8zxsm5.dir/dbc.o:dbc.c:(.data+0x7d8): undefined reference to `HB_FUN_IS_CLIPBRD' d:/tmp/hbmk_8zxsm5.dir/dbc.o:dbc.c:(.data+0x7e8): undefined reference to `HB_FUN_SEND_CLIPB' d:/tmp/hbmk_8zxsm5.dir/dbc.o:dbc.c:(.data+0x3c8): undefined reference to `HB_FUN_FT_SHIFT' d:/tmp/hbmk_8zxsm5.dir/dbc.o:dbc.c:(.data+0x3d8): undefined reference to `HB_FUN_GET_CLIPB' d:/tmp/hbmk_8zxsm5.dir/dbc.o:dbc.c:(.data+0x858): undefined reference to `HB_FUN_CURRDRIVE' d:/tmp/hbmk_8zxsm5.dir/dbc.o:dbc.c:(.data+0x978): undefined reference to `HB_FUN_DISKABOUT' c:/mingw/bin/../lib/gcc/i686-w64-mingw32/4.7.2/../../../../i686-w64-mingw32/bin/ld.exe: d:/tmp/hbmk_8zxsm5.dir/dbc.o: bad reloc address 0xf in section `.text.startup' c:/mingw/bin/../lib/gcc/i686-w64-mingw32/4.7.2/../../../../i686-w64-mingw32/bin/ld.exe: final link failed: Invalid operation collect2.exe: error: ld returned 1 exit status hbmk2: Error: Running linker. 1

AlexMyr: nick_mi пишет: Получил ошибку при запуске DBCH Скачал dbch - работает!

alkresin: AlexMyr пишет: Еще ошибка в исходнике Compiling 'dbc.prg'... dbc.prg(759) Error E0020 Incomplete statement or unbalanced delimiters dbc.prg(760) Error E0030 Syntax error "syntax error at ','" И эта ошибка, и последующие - оттого, что вы не включили hbmk проект опцию для компилятора Harbour __NOEXTRA__ В bat'нике, который идет с исходниками, эта опция есть.

AlexMyr: alkresin пишет: И эта ошибка, Не понял, как опция __NOEXTRA__ указывает компилятору обработать этот код [pre2]LOCAL submenu := { aMsgM[28], "─", aMsgM[29], "─", aMsgM[30], aMsgM[31], aMsgM[32], aMsgM[33] "─", aMsgM[34], aMsgM[35] }[/pre2] где явно видно синтакс. ошибку - пропущено ",;" (перенос строки)

alkresin: AlexMyr пишет: Не понял, как опция __NOEXTRA__ указывает компилятору обработать этот код Стоящая там конструкция #ifdef __NOEXTRA__ ... #else ... предписывает компилятору, если __NOEXTRA__ объявлен, пропустить ту строчку. А в ней, действительно, ошибка, я ее пропустил, т.к. давно уже компилирую этот файл только с __NOEXTRA__ - и не было случая ее заметить :)

alkresin: Вдогонку: я поправил немного исходники, чтобы не было необходимости в этой __NOEXTRA__ и перезалил на сайт.

nick_mi: Вот здесь лежит база http://files.mail.ru/AXT31Z при просмотре которой dbch ложится Чтобы получить ошибку, необходимо двигаться вправо по полям

alkresin: nick_mi пишет: Вот здесь лежит база http://files.mail.ru/AXT31Z при просмотре которой dbch ложится Чтобы получить ошибку, необходимо двигаться вправо по полям Посмотрел. Ошибка выскакивает на поле типа "I". Что это за тип, разве dbfcdx такие поддерживает ?

nick_mi: Да, dbedit jот pasha просматривает, и моя элементарная программа с функцией browse тоже открывает и просматривает

AlexMyr: alkresin пишет: Что это за тип, разве dbfcdx такие поддерживает ? В файле harbour\include\hbapirdd.h #define HB_FT_INTEGER 6 /* "I" */

alkresin: Добавил подержку отображения новых типов ( надо будет проверить еще редактирование и модификацию структуры ) - I,B,Y,+,^,T,=,@

Pasha: Утилиту dbedit буду выкладывать здесь: http://code.google.com/p/hdbedit/

nick_mi: Pasha, а что за библиотеки hbct-bcc и hbwin-bcc? Хотел пересобрать, т.к. у меня в индексах заложены пользовательские функции, да вот что-то не получается Пробовал взять просто hbct и hbwin, вылезают ошибки http://shot.qip.ru/00b7wF-1169kK9EW5/

Pasha: Это соответствующие библиотеки из contrib в форме dll Для их создания при сборке харбора надо указать переменную окружения: set HB_BUILD_CONTRIB_DYN=yes

Pasha: Сделал svn репозитарий для hdbedit: https://hdbedit.googlecode.com/svn/trunk Сырцы уже обновленные: поправил назначение клавиш.

Pasha: Собрал dbedit для xHarbour и bcc55: http://hdbedit.googlecode.com/files/xhdbedit-bcc-20.7z Надо сказать, что класс TBrowse в xHarbour отличается в худшую сторону от аналогичного класса Harbour. Это сразу заметно визуально: при обновлении экрана заметны задержки.

subbota: Может кому-то пригодится мой опыт сборки dbch.exe версии 3.8 ( для Win и BCC51 ) из исходников, взятых с http://kresin.belgorod.su/rus/dbc.html В dbchrb.bat указал свою директорию расположения харбора SET HRB_DIR=c:\minigui\harbour Во всех .prg заменил вызовы: do anima... на anima( ... ) do flmsfld... на flmsfld( ... ) do calcul... на calcul( ... ) В procs_c.c заменил вызов ISBYREF(...) на HB_ISBYREF(...) Кроме того для Harbour версии 2.1 пришлось скопировать из harbour\contrib\xhb\hbcompat.ch в harbour\include\hbcompat.ch Для harbour версий 3.1 и 3.2 последнее делать не пришлось

alkresin: subbota пишет: Во всех .prg заменил вызовы: do anima... на anima( ... ) do flmsfld... на flmsfld( ... ) do calcul... на calcul( ... ) А зачем ? В procs_c.c заменил вызов ISBYREF(...) на HB_ISBYREF(...) Ну да, в стандартной сборке 3 версии ISBYREF(), наверное, уже убрали. Я-то пользуюсь 2 версией. subbota пишет: Кроме того для Harbour версии 2.1 пришлось скопировать из harbour\contrib\xhb\hbcompat.ch в harbour\include\hbcompat.ch Хм... Так ведь в harbour\include\ есть hbcompat.ch

AlexMyr: alkresin пишет: Хм... Так ведь в harbour\include\ есть hbcompat.ch уже нет 2007-09-28 17:26 UTC+0100 Viktor Szakats (harbour syenar.net) * include/Makefile - include/hbcompat.ch + contrib/xhb/hbcompat.ch * contrib/xhb/xhb.ch * contrib/xhb/Makefile * Moved content or hbcompat.ch into xhb.ch. Those who need compatibility, have to replace * Moved hbcompat.ch (for compatibility) to contrib/xhb

alkresin: Странно. Я, вообще-то, использовал hbcompat.ch не для решения проблем с xHarbour, а только из-за того, что в dbc.prg есть вызов hb_SetCodepage() (теперь это hb_cdpSelect()). Тогда проще заменить название функции - Harbour 1.0 уже, наверное, не пользуются.

subbota: subbota пишет: Во всех .prg заменил вызовы: do anima... на anima( ... ) do flmsfld... на flmsfld( ... ) do calcul... на calcul( ... ) alkresin пишет: А зачем ? Такой harbour я использовал ----------- Version: 3.1.0dev Date: 2011-08-15 Last ChangeLog entry: 2011-08-13 17:25 UTC-0800 Pritpal Bedi Changelog version: 16991 Исходники были в директории c:\1 ---------- Такой harbour.out у меня получался без изменений исходников, описанных выше ---------- Cannot open ANIMA.prg, assumed external Cannot open FLMSFLD.prg, assumed external Cannot open ANIMA.prg, assumed external commands.prg(110) Warning W0027 Meaningless use of expression 'String' commands.prg(116) Warning W0027 Meaningless use of expression 'String' commands.prg(122) Warning W0027 Meaningless use of expression 'String' Cannot open CALCUL.prg, assumed external Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland dbc.c: lang.c: move.c: modistru.c: commands.c: view.c: query.c: pechdbc.c: prcmenu.c: errorsys.c: procs1.c: procs3.c: procs5.c: procs7.c: procs8.c: procared.c: procini.c: procscri.c: procs_c.c: Warning W8065 procs_c.c 19: Call to function 'ISBYREF' with no prototype in function HB_FUN_CARR_INIT Warning W8012 procs_c.c 35: Comparing signed and unsigned values in function HB_FUN_CARR_PUT Warning W8065 procs_c.c 39: Call to function 'ISBYREF' with no prototype in function HB_FUN_CARR_PUT Warning W8019 procs_c.c 60: Code has no effect in function HB_FUN_CARR_DEL Warning W8004 procs_c.c 60: 'pul' is assigned a value that is never used in function HB_FUN_CARR_DEL Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland Error: Unresolved external '_ISBYREF' referenced from C:\1\PROCS_C.OBJ

alkresin: Реальная ошибка, из-за которой программа не собиралась - это isbyref(). А те сообщения Cannot open ANIMA.prg, assumed external Cannot open FLMSFLD.prg, assumed external Cannot open ANIMA.prg, assumed external совершенно безобидны. Это стандартные клипперовские сообщения, они говорят о том, что названные процедуры предполагаются внешними - находящимися в других файлах проекта ( что, собственно, и есть ).

subbota: Только файлы называются по-другому: ANIMA() и CALCUL() лежат в procs8.prg FLMSFLD() - в procs5.prg Но все равно спасибо за полезную утилиту !

Andrey: Как быть, если у DBF файла имя содержит точки ? P0071214.173.dbf P0071217.166.dbf dmf32-2012.02.dbf dmf32-2012.03.dbf и т.д.

Pasha: Это старая версия. Надо обновить

Andrey: Pasha, а в твоей версии 2.0 нет кодовой страницы UA1125 ?

Pasha: Сейчас нет, но это легко исправить

Andrey: Pasha пишет: Сейчас нет, но это легко исправить Сделайте пожалуйста, а то базу не могу проверить из темы: http://clipper.borda.ru/?1-0-0-00000573-000-20-0#006.001.001.001.001

Pasha: Выложил новую версию программы hdbedit 2.03. Ссылка: http://code.google.com/p/hdbedit/downloads/list Whatsnew (переводить не буду): - append from: added sdf and "delimited with" possibility; - copy to: added sdf and "delimited with" possibility; - using codepage in change structure; - added support "edit by char" for LETO; - replace: added filter for empty field value; - translate by codepages. www.virustotal.com по традиции обнаруживает 2 "вируса", но я уже не буду ввязываться в бессмыссленную борьбу с антивирусами. Программа собрана текущим Harbour только с печки с SVN. cp1125 добавлена, и можно использовать функцию "Транслировать" - это перекодировка файла из одной кодовой страницы в другую.

Andrey: SergeyKorotun пишет: база для перекодировки из ср1125 в ср866 http://us.ua/1024583/ Pasha , что то я не пойму. Открываю этот файл - показывает кодировку RU866. Беру ставлю UA1125 (кстати это DOS или WIN кодировка ? ) транслирую в UA866, выхожу. Открываю заново файл, опять стоит кодировка RU866. Это баг открытия или так нужно (т.е. база открывается всегда в RU866) ?

Pasha: Формат dbf, который использует харбор, не содержит информацию о кодовой странице в заголовке файла. Поэтому автоматически определить, какая cp используется, нельзя. dbedit открывает файл с кодовой страницей, установленной в настройке. По умолчанию это RU866. Можно задать другую кодовую страницу, но надо иметь в виду, что все файлы будут открываться с этой cp

Andrey: Спасибо БОЛЬШОЕ ! А кодировка UA1125 - это DOS или WIN кодировка ? А то я недавно с этой кодировкой столкнулся....

Pasha: Я же подробно рассказывал про эту кодировку. Это вариант для dos

Andrey: Спасибо БОЛЬШОЕ ! Где то пропустил твое объяснение....

Andrey: Pasha, а как можно поле из одной колонки записать в другую в одной базе ? Во всех утилитах такая фича есть, а у тебя я не нашел...

Vlad04: Pasha пишет Формат dbf, который использует харбор, , не содержит информацию о кодовой странице в заголовке файла. Иногда надо, чтобы страница указывалась (мои данные читают в Vfoxpro и у них постоянные проблемы), можно это сделать ? Заголовок таблицы править после выгрузки - это не то.

Pasha: Andrey пишет: Pasha, а как можно поле из одной колонки записать в другую в одной базе ? Во всех утилитах такая фича есть, а у тебя я не нашел... Конечно же эта функция поддерживается, причем в расширенном варианте. В режиме замены по Ctrl+F7 введите в строке "Выражение" имя поля, или любое выражение, которое возвращает значение подходящего типа.

Andrey: Pasha как установить фильтр по полю, которое содержит знак "-" ? У меня есть база с полем KVARTIRA и мне нужно показать все записи типа "234-235", т.е. с тире "-"

Pasha: Andrey пишет: Pasha как установить фильтр по полю, которое содержит знак "-" ? У меня есть база с полем KVARTIRA и мне нужно показать все записи типа "234-235", т.е. с тире "-" Самым обычным для клиппера способом, с помощью функции At: At("-",Kvartira)<>0 только dbedit тут причем ?

Andrey: Pasha пишет: только dbedit тут причем ? Так я в dbedit хочу выборку сделать по фильтру.... Или в нем нельзя сделать ?

Pasha: Andrey пишет: Так я в dbedit хочу выборку сделать по фильтру.... Или в нем нельзя сделать ? Я в затруднении, как отвечать на такой вопрос. Это базовая функция программы. Если есть сложности с ее поиском, можно нажать F1, в конце концов.

Andrey: Как делать простой фильтр по F4 - это понятно: Я не пойму как пользоваться меню: Фильтр по полям Alt-F4 ? Pasha пишет: Если есть сложности с ее поиском, можно нажать F1, Да нет помощи в этом меню. Извиняюсь за свой неправильно сформулируемый вопрос...

Pasha: Выложил новую версию 2.04 Что нового: - в окне информации добавлена возможность установки кодовой страницы foxpro; - при изменении структуры добавлен выбор типа мемо-файла - добавлена возможность создания пользовательских функций с помощью файла hrb. Пример прилагается.

Pasha: Andrey пишет: Я не пойму как пользоваться меню: Фильтр по полям Alt-F4 ? Только заметил. Да для тех полей, по которым надо установить фильтр, поставить значение фильтра. Это же интуитивно понятно. Мне так кажется.

Dima: Pasha пишет: Выложил новую версию 2.04 А где выложил ?

Pasha: Ссылка: http://code.google.com/p/hdbedit/downloads/list

Dima: Pasha Глючек не большой. Запускаем прогу , меняем диск на другой , переходим в нужную папку и делаем ентером выбор файла (dbf) и прога тихо закрывается. ЗЫ Диск можно и не менять.

Pasha: Еще один неплохой open-source редактор dbf с внушительным списком функций: http://kevincarmody.com/software/dg.html

azoo: Есть ли в программе ключ запуска чтобы она запустилась в режиме вьюера ?

Pasha: Сейчас никаких ключей нет, но, наверное, добавлю. Поддержка режима r/o есть (если установлен атрибут файла)

SergeJaHome: Павел, если есть желание, могу поучаствовать. Либо лично, либо opensource. Хочется таки правильный консольный, Harbour. Увы, у тебя немножко баги + не хватает функционала. Уйму лет назад списывались в аське. 161744219. Заинтересован в новом, ибо x64 случится скоро. Сделал bro (пользую много лет, привык) под xH. Пока увы, ошибается, пока не знаю, стоит ли продолжать.

Pasha: Про один нестабильный баг я знаю (в диалоге выбора файлов). А какие есть еще ? И какого функционала не хватает ? Эта программа использует мою на 100% библиотеку, которая задействована в коммерческих проектах, поэтому полностью сырцы я не выкладываю. Под x64 сборку я давал. Кое-какой функционал я уже добавил, да все что-то мешает выложить новую версию.

SergeJaHome: Pasha пишет: И какого функционала не хватает Работа с буфером обмена в GETSYS & MemoEdit (shift+стрелки), история диалогах поиска (можно и последнего в STATIC-переменной), сплит экрана (хоть на 2 части), не работают Alt+буква для выхода в меню, не выбирается поле из списка (диалоги поиска). Если интересно, тут моя последняя работка на clipper (~дюжина лет назад, этот проект уже заменён новым и закрыт) ftp://80.249.183.246/orders/full/setup_orders.exe Запуск (после ужасного инсталлятора) <xx>:\ORDERS\READY\orders.com

Andrey: Можно ли базу с одной кодировки 866 записать в другую базу, допустим 1251 ?

Haz: Andrey пишет: а в чем проблема то ? вариантов много 1) по структуре создал клон, открыл в нужноой кодировке и APPEND FROM из старой

Andrey: Haz пишет: вариантов много Понял, спасибо ! Об этом не подумал, просто в других, аналогичных утилитах есть пункт меню.

Pasha: П.меню: Поиск - Транслировать

Pasha: Новая версия программы: http://my-files.ru/eu6nti Поскольку google code накрылся, выкладываю пока только бинарник. Из существенных доработок: сделан режим файлового менеджера для letodb в стиле "Нортон": левая панель содержит папку сервера letodb, правая - локальный диск. Для вызова этого режима надо запустить программу с опцией -f: letodb.exe -f -letodb=<connection string> или letodb.exe -f если коннект к серверу находится в letodb.ini пример: letodb.exe -f -letodb=//127.0.0.1:2812/

Dima: Pasha пишет: Поскольку google code накрылся Да вроде жив https://code.google.com/p/hdbedit/downloads/list

Pasha: Я и не проверял. Мне от них письмо приходило, что проект закрыт.

Andrey: Как из содержимое одной базы - переписать в другую базу ? База и та и другая содержит поле ID (+) Прога вылетает по ошибке: Ошибка DBFCDX/1020 Ошибка типа данных: ID И по другим новым полям вылетает: TS │ModTime │

SergKis: Andrey пишет:Наверно и по другим новым полям будет вылетать.... поля +, = , ^ защищены для записи и индивидуальны для таблицы при перезаписи можно поменять тип + -> N, = -> T, ^ -> N или отсечь их при перезаписи

Andrey: SergKis пишет: при перезаписи можно поменять тип + -> N, = -> T, ^ -> N или отсечь их при перезаписи Неудобно ! Проще проверять в программе и игнорировать туда запись. Тогда мучиться с переименованием не придётся.

SergKis: Andrey пишет:Проще проверять в программе и игнорировать туда запис смотря для каких целей перезапись. а если + ключевое поле ?

Andrey: SergKis пишет: смотря для каких целей перезапись. Из одной базы в другую с изменённой структурой. И самоё фиговое, что нельзя исправить структуру базы если есть TS (ModTime), выдаёт ошибку:

SergKis: Andrey а код посмотреть ?

Andrey: SergKis пишет: а код посмотреть ? Я у себя код исправлю, сделаю свой dbedit, а потом при выходе новой версии что будет ? Опять у себя править ?

SergKis: Andrey пишет:Я у себя код исправлю, сделаю свой dbedit, а потом при выходе новой версии что будет ? так изменения в свою версию надо переносить - это ж всегда так. а просил я кусок кода по преобразованию структур и перезаписи, раньше тесты на это делал - вроде норма была.

Andrey: SergKis пишет: а просил я кусок кода по преобразованию структур и перезаписи, раньше тесты на это делал - вроде норма была. У меня кода нет. Нужно лезть в код Dbedit - Павла... Еще не занимался этим. Просто сейчас приспичило изменить поля в базе и облом....

Pasha: Добавил тип поля "=" modtime в список типов, которые не копируются при изменении структуры Новая версия программы: http://my-files.ru/kwlbyf

Andrey: Pasha пишет: Добавил тип поля "=" modtime в список типов, которые не копируются при изменении структуры Спасибо БОЛЬШОЕ за быстрый отклик !

Dima: Pasha пишет: Новая версия программы: http://my-files.ru/kwlbyf И не забрать файлик , видать только для России ;)

PSP: Dima, забирай: https://yadi.sk/d/DlFv1mTXhd9aL

Dima: PSP Сенкс !

Pasha: Я свой же файлик скачиваю с укртелекомовского провайдера, правда, из Донецка. Этот провайдер мне дает киевский айпи. Так что дело не в этом.

nick_mi: Я тоже скачал без проблем из http://my-files.ru/kwlbyf

Dima: да работает сегодня my-files.ru , что было не понятно.

Andrey: Pasha, я смотрю в новой программе нет кодовой страницы UTF8 ! В предыдущих была. Единственно твоей программой пользовался для UTF8. Можно вернуть эту кодировку ?

Andrey: Нажимаю клавишу DEL - удалить запись ! Если есть поля в базе ModTime (RowVer, TimeStamp) То программа вылетает по ошибке: Ошибка DBFCDX/1020 Ошибка типа данных: TSZ Алиас DB1 Вызов из FIELDPUT(0) Вызов из DELRECORD(0) Вызов из (b)EDITTABLE(1003) Вызов из TBROWSEDEL(0) Вызов из EDITBROWSE(0) Вызов из DBMENU(0) Вызов из EDITTABLE(1003) Вызов из MAIN(967)

Dima: Pasha А нет ли сборки Harbour dbf editor , что бы без DLL (все в одном EXE) ?

Pasha: На следующей неделе выложу

Pasha: dbedit одним файлом выложил по ссылке: http://my-files.ru/dutpq5 Программа собрана с Harbour 3.0 + bcc 5.5

Dima: Pasha Спасибо !

azoo: Pasha , а "read only" режим не появился ?

Pasha: В каком смысле readonly ? Если открывается RO-файл, то он и открывается как RO без возможности редакции. Или добавить отдельный флажок -ro, чтобы любой файл можно было открывать в режиме RO ?

azoo: Извините, неправильно выразился. Я имел в виду открытие файла только для просмотра. Например по ключу -view файл бы открывался в окне, но любые изменения невозможны.

Pasha: Да, как раз такой ключ и есть: dbedit -ro <filename>

azoo: Спасибо, не догадался в программе нажать F1 Пытался dbedit -? , dbedit /?

Andrey: Pasha В базе есть поля "+" и ModTime (RowVer, TimeStamp) Если делаем выгрузку в другую базу, то вылетает по ошибке: Ошибка DBFCDX/1020 Ошибка типа данных: ID Алиас DB1... Если пытаюсь записи из другой базы (менюшка:Добавить из файла) , то тоже вылетает по ошибке: Ошибка DBFCDX/1020 Ошибка типа данных: IDA Наверно нужно сделать пропуск полей при эти операциях: IF FIELDTYPE(cTypeFld) == "+" // RDD-Уникальный номер записи ELSEIF FIELDTYPE(cTypeFld) == "=" // RDD-TimeStamp дата+время+миллисекунды ELSEIF FIELDTYPE(cTypeFld) == "^" // RDD-версия модификации записи ELSE FIELDPUT( FIELDNUM(cPoleName), xVal ) ENDIF

Dima: Еще глючок , вроде был , исправили а теперь снова. Запуcкаем Dbedit без параметров. Жмем ввод , вывалился список файлов , вводом выбираем нужную базу и прога тихо закрывается.

Pasha: В базе есть поля "+" и ModTime (RowVer, TimeStamp) Если делаем выгрузку в другую базу, то вылетает по ошибке: Функции Добавить из файла, Копировать в файл реализованы через стандартные вызовы __dbApp(), __dbCopy() У меня эти функции отрабатывают нормально для полей с типами +^=, для которых запрещено редактирование на уровне rdd. Почему у тебя они не отрабатывают - пока не понятно. Если эти функции не работают с такими полями - я бы сделал копирование в цикле, но у меня они почему-то отработали. Для типа ModTime "=" я добавил запрет редакции, там действительно этого не было.

Pasha: Еще глючок , вроде был , исправили а теперь снова. Я не исправлял этот глюк, просто он проявляется только в харборе, а предыдущую сборку я выкладывал с xHb. Сейчас сделал с Hb, и.. Проблема в том, что у меня он не проявляется ни с Hb, ни с xHb. Я его просто не могу поймать, чтобы выявить и устранить.

Dima: Pasha пишет: Проблема в том, что у меня он не проявляется ни с Hb, ни с xHb Странно. Видимо какой то плавающий глюк. У меня он есть. OS WIN7 32

Andrey: Dima пишет: У меня он есть. У меня тоже такой глюк есть. Брал последний dbedit.exe.7z OS Win8.1

ММК: На десятке. Если запускать и выбирать имя файла - стабильно не работает. Если запускать сразу с именем файла все Ок :)

Dima: ММК пишет: Если запускать сразу с именем файла все Ок :) А если запускать и руками писать имя файла то работает тоже :)

Pasha: В базе есть поля "+" и ModTime (RowVer, TimeStamp) Если делаем выгрузку в другую базу, то вылетает по ошибке: Ошибка DBFCDX/1020 Ошибка типа данных: ID Обнаружилось странное поведение функции __dbCopy() aka команды COPY TO: Файл со структурой: dbCreate("_name", {; {"IDA", "+", 4, 0},; {"MREM", "C", 4, 0} }) успешно копируется. А файл с такой структурой: dbCreate("_name", {; {"IDA", "+", 4, 0},; {"MREM", "M", 4, 0} }) не копируется, с ошибкой 1020 по полю IDA. Т.е не копируется файл, содержащий поля типа Autoinc, RowVer, ModTime в комбинации с Memo. Почему так - пока непонятно.

Andrey: Pasha пишет: Почему так - пока непонятно. Мне пришлось утилитку ваять на МиниГуи чтобы 2 базы объединять.... Мне нужно было 10-ток файлов объединять, а других программ для объединения, я не нашёл.

Pasha: У __dbCopy() / __dbApp(), а это метод TRANS для rdd, есть 2 метода копирования данных: Копирование сразу всей записи, и копирование по отдельным полям. Если нет мемо, используется 1-й метод, а если есть - второй. Копируются все поля, в том числе и те, которые копировать нельзя. Вот и происходит ошибка. В принципе, это косяк __dbCopy() / __dbApp(). Для dbedit в функции "Копирование в файл" я учел этот косяк, и не использую функию __dbCopy для такого случая В функции "Добавить из файла" надо снять флажок с параметра "Использовать системную функцию" для такого случая. Ссылка на новую версию программы: http://my-files.ru/eb4e12

Pasha: Странно. Видимо какой то плавающий глюк. У меня он есть. OS WIN7 32 Дима, а можешь пройтись с отладчиком по функции с выбором файла ? Я просто добавил в начало функции вызов altd(), и собрал с режимом отладки. На какой строке происходит такой странный вылет, которого у меня нет ? Вот ссылка на dbedit_debug: http://my-files.ru/85csk0

Dima: Давно я с отладчиком не работал.... И если я правильно понял сваливается (при чем просто закрывается окно без ошибок) начиная со строки 1781 функции Leto_color Может чего не так нажимал в нем :)

kia: Добрый день! Строка 1111 переменная lRet == .f. переменная cp == nil похоже не проходит проверка строка 1098 elseif ...

kia: Дополнение небольшое: Функция Input() возвращает имя файла(строку), а в строке вызова 1098 elseif Input( ...... ) .and. ! Empty(::cName) предполагается что вернется логическое значение переменнам ::cName == имя файла (строка) спасибо за работу! Удачи1

Pasha: Новую версию программы можно скачать по адресу: http://my-files.ru/67ewcx Что нового: 1. Удаление индекса (тэга); 2. Изменение структуры: добавлена возможность изменять порядок следования полей; 3. Добавлена операция обмена значений 2-х полей; 4. Выгрузка в Excel/OpenOffice: добавлена выгрузка через буфер обмена (быстрый способ).

Dima: Pasha При создании временного индекса если сидим на поле MEMO нужно блочить эту возможность , так как падает прога. [pre2] Ошибка DBFCDX/1026 Ошибка размера данных Алиас DB1 Вызов из ORDCREATE(0) Вызов из MAKETEMPIND(2806) Вызов из (b)BMKSORT(2775) Вызов из MBROWSE(0) Вызов из EDITBROWSE(0) Вызов из DBMENU(0) Вызов из EDITTABLE(1030) Вызов из MAIN(994) [/pre2]

Pasha: Новую версию программы можно скачать по адресу: https://cloud.mail.ru/public/JZzp/A6QAtpFkp Что нового: 1. Добавлена поддержка прямоугольных блоков. Выделение блока - комбинация Shift+навигационные клавиши 2. Копирование блока/помеченных записей в буфае обмена и вставка из буфера обмена Возможно взаимодействие через буфер обмена с Excel/OpenOffice Calc

Andrey: Открываем файл для просмотра по F3. Видны одни кракозябы ! Как сменить кодировку ? И можно ли сделать редактирование файла в окне ?

Dima: Andrey пишет: Как сменить кодировку ? Shift -F3

Dima: Pasha Косяк поймал. Открываем базу через Dbedit , жмем F1 , появилась справка , "случайно" нажимаем еще раз F1 и всё , висяк...

Andrey: Pasha пишет: Новую версию программы можно скачать по адресу: https://cloud.mail.ru/public/JZzp/A6QAtpFkp Нет файла... Причина удаления: Истёк срок хранения файла. Dima пишет: Shift -F3 Не работает ! Для базы работает, для текстовых файлов нет ! dbedit.exe - Harbour DBF Viewer & Editor ♦ Version 3.22

Dima: Andrey пишет: dbedit.exe - Harbour DBF Viewer & Editor ♦ Version 3.22 Тоже такой , размер 2 255 360 байт Andrey пишет: Для базы работает, для текстовых файлов нет Что то я не понял о каких текстовых файлах речь , проясни. Andrey пишет: Pasha пишет: цитата: Новую версию программы можно скачать по адресу: https://cloud.mail.ru/public/JZzp/A6QAtpFkp Нет файла... Причина удаления: Истёк срок хранения файла. А файл то есть и скачать можно

Andrey: Dima пишет: А файл то есть и скачать можно Странно, сейчас появился... Dima пишет: Что то я не понял о каких текстовых файлах речь , проясни. Открываю на сервере папку (команда start dbedit -f -letodb=//ххх.ххх.ххх.ххх:2812/ ) Вид как на картинке: Открываю текстовый файл клавишей F3 Вот здесь и кракозябы.... Нужно сменить кодировку ! Как это сделать ? И менюшки наверху не работают: Операция, Марк, Сервис !

Dima: Andrey пишет: dbedit -f Опция -f фишка Letodb , проверить не могу так как не установлен Letodb , что за функция на F3 висит тоже не знаю. Одно только меня напрягает Andrey пишет: Открываю текстовый файл клавишей F3 Это как ? Ведь это не текстовый редактор-вьювер.

Andrey: Dima пишет: Это как ? Ведь это не текстовый редактор-вьювер. Ну очень удобная штука, для просмотра файлов ! Если сервер LetoDB стоит на Linux, то вообще просто незаменим !

ММК: Andrey пишет: Ну очень удобная штука, для просмотра файлов ! Ну очень удобная штука , это FAR . По F3 , если это DBF открывается двф Пашиной пр-й, если это текст и надо сменить кодировку нажимаешь F8. Работает в сети и имеет достаточно много возможностей....

Andrey: Far не может соединиться к серверу Leto. "Ну очень удобная штука, для просмотра файлов !" на сервере c LetoDb !

Pasha: Очередную версию программы можно скачать по адресу: https://cloud.mail.ru/public/5xFx/4yuh1qhxX что нового: - доработан режим работы с прямоугольными блоками, также копирование - вставка таких блоков. - для менеджера letodb добавлена функция просмотра файлов на сервере letodb с выбором кодовой страницы (по Shift+F3) dbedit с поддержной Ads (необходим клиент ace версии 11): https://cloud.mail.ru/public/KGMj/HNaSSaJrT Параметры ads указываются в dbedit.ini (пример прилагается) Также возможен запуск с параметром: dbedit -rdd=<adscdx|adsntx> <filename.dbf> Поддержки adsadt пока нет. С комбинацией клавиш F1+F1 тоже пока не разобрался.

Andrey: Pasha , СПАСИБО БОЛЬШОЕ !

Vlad04: Паша, прикрутил бы ты к этой отличной программе какой-нибудь терминал. С Фаром отлично, без него - невозможно.

nick_mi: Что-то вылетает при выборе файла вручную из списка файлов Если при запуске указать имя файла, отрабатывает нормально Windows XP SP3

Dima: nick_mi пишет: Что-то вылетает при выборе файла вручную из списка файлов Нас уже трое :)

Pasha: Паша, прикрутил бы ты к этой отличной программе какой-нибудь терминал. С Фаром отлично, без него - невозможно. Прикручивать терминал и придумывать команды для открытия файла я не стал. Вместо этого при запуске программы с параметром -f активируется менеджер файлов, и программа откроет файл dbf при клике на него. Ссылка для скачивания: https://cloud.mail.ru/public/6e6f/jy6pXLQnc

Andrey: Pasha пишет: - для менеджера letodb добавлена функция просмотра файлов на сервере letodb с выбором кодовой страницы (по Shift+F3) Не работает... Скачал последнюю версию ... https://cloud.mail.ru/public/6e6f/jy6pXLQnc

Vlad04: Прикручивать терминал и придумывать команды для открытия файла я не стал О файловом менеджере речь не шла. Если открываю базу в в чем либо, кроме Farа, то просмотр в небольшом окошке .На весь экран не распахивается. Неудобно.

Dima: nick_mi пишет: Что-то вылетает при выборе файла вручную из списка файлов Если при запуске указать имя файла, отрабатывает нормально Windows XP SP3 Только сейчас понял почему вылетает. Если запускать из под FAR то вылет , если из проводника то все нормально. Vlad04 пишет: На весь экран не распахивается. Неудобно. После того как запустил его , настрой окно (шрифты , расположение и тд и тп) и будет тебе счастье. При следующем запуске настройки окна подхватятся. Чекал на Win7

Andrey: Vlad04 пишет: то просмотр в небольшом окошке .На весь экран не распахивается. Неудобно. Поставь на просмотр команду: start dbedit !.! А потом отредактируй как Дима советует настройки окна.

Dima: Pasha пишет: Дима, а можешь пройтись с отладчиком по функции с выбором файла ? Я просто добавил в начало функции вызов altd(), и собрал с режимом отладки. На какой строке происходит такой странный вылет, которого у меня нет ? Паш это происходит если запускать Dbedit из под Far Manager , из проводника вылета нет.

Pasha: Да я его только из фара и запускаю, и вылета нет. Какие там еще особенности запуска ? Какая версия фара, размер окна фара ? У меня far 3.0, пробовал и с 2.0

Dima: Pasha пишет: У меня far 3.0, пробовал и с 2.0 Far 3.0 4499 x86. Оконный режим , шрифт Lucida Console , размер 18 Размер буфера экрана 130x47 в 2-х местах. Запуск обычный из командной строки Far , Dbedit , после загрузки выбираю файл , жму ввод и вылет. Win 7 На древнем Far 2.0 тоже вылет ЗЫ Без Far все работает.

ММК: Dima пишет: Far 3.0 4499 x86 На десятке.Far 3.0 4455 x64 Не работает

ММК: Предыдущая версия тоже не работала

Dima: ММК пишет: На десятке Сделай ДЕапгрейт до семерки

ММК: Dima пишет: Сделай ДЕапгрейт до семерки Думаешь заработает?!!!

Dima: ММК пишет: Думаешь заработает?!!! Да

ММК: Ладно. В понедельник поставлю Мне тоскливо, когда на работе нечем заняться, и очень тоскливо, когда есть чем. (с)

Dima: ММК могу дать шикарный дистриб 7 x64 стукни в агента

ММК: Спасибо , Дима ! Бывает ,что харборовские пр-мы не нравятся антивирусу. Вот есть такой тулс - SingTool from Microsoft https://msdn.microsoft.com/es-es/library/8s9b9yaz%28v=vs.110%29.aspx https://www.digicert.com/es/codigo/signcode-signtool-linea-de-comandos.htm http://blog.didierstevens.com/2008/12/31/howto-add-a-digital-signature-to-executables/

Dima: ММК пишет: Бывает ,что харборовские пр-мы не нравятся антивирусу Бывает. Вчера только столкнулся (но дело в Harbour думаю). Пересобирал свежий Harbour под Mingw , Drweb убил временный батник (BAT.FormatAll.5) , пришлось паука стопарнуть. Что то мы нафлудили в теме....

Andrey: Andrey пишет: Pasha пишет: цитата: - для менеджера letodb добавлена функция просмотра файлов на сервере letodb с выбором кодовой страницы (по Shift+F3) Не работает... Скачал последнюю версию ... https://cloud.mail.ru/public/6e6f/jy6pXLQnc

Pasha: Andrey пишет: Не работает... Скачал последнюю версию ... https://cloud.mail.ru/public/6e6f/jy6pXLQnc Нажимаю на левой панели letodb на текстовом файле в кодировке 1251 Shift+F3. Выбираю cp1251. Вижу содержимое файла. Так что не работает ? Или нужно что-то другое ?

Andrey: Pasha пишет: Нажимаю на левой панели letodb на текстовом файле в кодировке 1251 Shift+F3. Выбираю cp1251. Понял ! Я просто сразу открывал файл по F3 и пытался там, уже при открытом файле сменить кодировку Shift+F3. Как в dbf-нике, т.е. при открытом файле. Может там ещё прикрутишь смену кодовой таблицы, чтобы везде было одинаково. Ну это так просто пожелания... А так работает ! Отлично ! Спасибо БОЛЬШОЕ !

ММК: Большое спасибо, Дима , за поздравление! ММК пишет:  цитата: Сделай ДЕапгрейт до семерки Думаешь заработает?!!! Не заработал на семерке в таком режиме DbEdit. Назад на десятку ..... На десятке. Если запускать и выбирать имя файла - стабильно не работает. Если запускать сразу с именем файла все Ок :)

Dima: ММК пишет: Если запускать и выбирать имя файла - стабильно не работает. Ты видимо выше не читал. Вылет (у меня так) только если запускать его из под FAR , если из проводника то все нормально.

ММК: Dima пишет: Ты видимо выше не читал. Читал. Но меня интересует толька вариант с Фаром. Да и то не столь важно :) Повесил DbEdit на F3 и он в такой связке работает замечательно

Pasha: У меня на работе стоит win7, есть и winxp, и dbedit в таком режиме работает. Дома раньше была winxp, сейчас win10 - тоже работает. Пробовал еще на нескольких компьютерах с тем же результатом. Так что я по прежнему остаюсь в недоумении и растерянности...

ММК: Работает до момента выбора файла включительно. Потом вылет без всяких сообщений. Можно сделать вариантик с выводом сообщений через команду, две... Определимся :))

Dima: ММК пишет: Работает до момента выбора файла включительно. Потом вылет без всяких сообщений Аналогично.

nick_mi: ММК Dima Работает до момента выбора файла включительно. Потом вылет без всяких сообщений Аналогично

Dima: Паша может покажешь сырец что происходит в момент выбора файла а лучше не большой самодостаточный пример ? Потестим и выясним я надеюсь.

Pasha: Я случайно обнаружил стабильный вылет. После запуска программы выдается диалоговое окно для ввода имени файла. Затем после потери фокуса в поле ввода по нажатию клавиши выдается окно выбора файла, и после выбора - идет редакция файла. У меня есть дурная привычка - уходить с поля ввода клавишей стрелка вниз aka K_DOWN. В этом случае вылета нет. Но если нажать K_ENTER, после выбора файла происходит вылет. Теперь остается уже дело техники - устранить его.

Dima: Pasha пишет: В этом случае вылета нет Проверил , так и есть , все нормально Ждем !

Pasha: Ссылка на новую версию программы: https://cloud.mail.ru/public/KPyg/a79XdgzzD

Dima: Pasha Спасибо , работает нормально !

Vlad04: С новой версией. Запущена из под фара. Фильтрация записей. База небольшая. После очередной смены условий - зависла программа намертво.

Dima: Vlad04 пишет: С новой версией. Запущена из под фара. Фильтрация записей. База небольшая. После очередной смены условий - зависла программа намертво. Погонял , все нормально , ни чего не виснет.

Vlad04: Продолжаю с фильтром. Очищаю строку фильтра , при нажатии Enter или Стрелка В низ , открывается Окно "Редактирование в Окне". Если изменяю строку фильтр, то все нормально. Но после нескольких изменений Опять повис, никакой реакции. Только Диспетчер задач снимает.

Dima: Vlad04 пишет: Продолжаю с фильтром. Ты про F4 ? Заметил небольшой косяк. Если поставить фильтр и записей в нем меньше чем высота бровса , то в самом низу всегда присутствует не существующая запись (фантом). Скажем если в фильтр попало 3 записи то бровс покажет 4 записи.

Vlad04: Ты про F4 ? Про F4

Dima: Vlad04 Пол часа его мучал и не завис.

Vlad04: А с редактированием строки фильтра? Установил фильтр , а потом попробуй убрать его, очистив строку.

Dima: Vlad04 Покажи скрин на котором месте висяк.

Vlad04: Висяк трудно повторить, так как закономерность не уловил. А с изменением строки фильтра все описано, надеюсь , ясно.

Pasha: Dima Заметил небольшой косяк. Если поставить фильтр и записей в нем меньше чем высота бровса , то в самом низу всегда присутствует не существующая запись (фантом). Скажем если в фильтр попало 3 записи то бровс покажет 4 записи. Это не баг, а фича (с) Фантомная запись присутствует всегда, она используется для добавления новой записи.

Pasha: А с редактированием строки фильтра? Установил фильтр , а потом попробуй убрать его, очистив строку. Для того, чтобы убрать фильтр, есть отдельный пункт меню, горячая клавиша - Ctrl+F4 Ввод строки фильтра предназначен для установки фильтра, а не для его очистки. Поэтому при пустой строке фильтра предлагается его автоматическое формирование по значению полей.

Vlad04: Ясно

Dima: Не понял каким образом можно заменить все значения в одном поле. Типа Replace по полю (по условию). Нет такого ? PS В DBU была такая операция.

Dima: Dima пишет: Не понял каким образом можно заменить все значения в одном поле. Нашел...Ctrl+F7 , но так и не вышло заменить во всем поле все значения на определенное. Что не так поюзал ?

Dima: Dima пишет: Не понял каким образом можно заменить все значения в одном поле. Dima пишет: Нашел...Ctrl+F7 , но так и не вышло заменить во всем поле все значения на определенное. Печаль...... Научите меня

Andrey: Dima пишет: Научите меня Сам мучаюсь...

Dima: Andrey пишет: Сам мучаюсь... Пипец PS Как я только с ней не "игрался" ....мучал по полной и ни чего не вышло. Видать педальку не ту нажал , не знаю уже...

Vlad04: Dima Нашел...Ctrl+F7 , но так и не вышло заменить во всем поле все значения на определенное. Странно, а у меня получилось

TimTim: У меня тоже получилось для всех полей вставить одно значение. Заполнил нужным "На значение" и далее ничего не менял. "Готово"

Dima: Упс , разобрался. Меняю числовое поле. Если значение выставить больше 0 то меняет а если 0 то ни чего не происходит. А мне нужно именно на ноль заменить.

Pasha: Да там вроде все все просто. Сначала надо установить фильтр на нужный диапазон записей, можно в комбинации с фильтром по индексу, т.е. scope Затем поставить курсор на требуемое поле, и вызвать диалог replace по Ctrl+F7. Если значение поля во всех отображаемых записях надо заменить на константу, то надо ввести эту константу в позицию "На значение". Это работает для всех значений, кроме пустых - ноль, пробелы, пустая дата, .F. Если надо для каждой записи вычислить некое выражение - ввести это выражение в позицию "Или вычислить выражение". Выражение будет выполняться как макрос для каждой записи, и его результат будет записан в поле. Для пустых констант надо вводить выражение вида 0, space(10), CTOD(""), .F. Можно еще задать дополнительный фильтр - в соответствующей строке. Если курсор стоит на колонке "Deleted" - можно выполнить команду dbDelete() или dbRecall() для записей диапазона.

Dima: Pasha пишет: Это работает для всех значений, кроме пустых - ноль То есть присвоить 0 (ноль) всему полю я не смогу ? А надо. Значение 0 я вбивал и до лампочки , замены не произошло. Pasha пишет: Сначала надо установить фильтр на нужный диапазон записей Да он в данной ситуации не нужен и менять нужно во всем поле без условий на НОЛЬ (числовое поле)

Pasha: То есть присвоить 0 (ноль) всему полю я не смогу ? А надо. Можешь. В позицию "Или вычислить выражение" надо ввести 0. Результат вычисления макроса "0" будет ноль, он и будет присвоен полю.



полная версия страницы