Форум » [x]Harbour » Harbour dbf editor (продолжение) » Ответить

Harbour dbf editor (продолжение)

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

Ответов - 154, стр: 1 2 3 4 5 6 7 8 All

Dima: Pasha пишет: "Или вычислить выражение" надо ввести 0 Да так сработало !

Andrey: Небольшой баг с ошибкой при входе на сервер Leto: Т.е. даёшь команду start dbedit -f -letodb=//xx.xx.xx.xx:2812/ и получаешь такую ошибку. Если создашь ОДНУ папку в каталоге баз, то ошибка пропадает.

Dima: Pasha Просто пометить запись на удаление возможно только находясь в первой колонке (*) и нажав пробел ? Чутка не удобно если база широкая. Нашел я скажем нужную запись в каком то поле и нужно съезжать на первую колонку (что бы пометить ее на удаление) а в это время нужное поле уехало за пределы экрана... Полагал что сделать это можно с помощью педали DEL , но оказалось что она ставит не только метку но и чистит запись в полях. Нельзя ли по какой то комбинации клавиш находясь на нужной записи в нужном поле что то нажать что бы запись просто пометилась на удаление и все ? Есть предложение переделать функционал кнопки DEL. Нажали - вылезло меню , в нем 3 пункта. Пометка на удаление Пометка на удаление + очистка полей в записи Физическое удаление Выход :)


Pasha: Сделаю так: K_DEL - dbDelete()/dbRecall() K_CTRL_DEL - пометка на удаление с очисткой полей Ну а физическое удаление записи из файла оставлю по K_F8, сам уже привык до автоматизма

Dima: По ходу виснет прога если нажать F1 и затем снова F1 (вроде писали об этом выше)

Dima: Dima пишет: Есть предложение переделать функционал кнопки DEL. Нажали - вылезло меню , в нем 3 пункта. Пометка на удаление Пометка на удаление + очистка полей в записи Физическое удаление Или повесить на SHIFT + DEL , думаю там с десяток строк кода всего. Все остальное "удаление" оставить как есть.

Pasha: Новую версию программы можно скачать по ссылке: https://cloud.mail.ru/public/9rNn/5GGbZTfjx Что нового: - добавлена поддержка флагов для полей: autoinc, unicode и др. - добавлена функция Переместить запись вверх (меню Действие) - добавлена операция delete/recall по клавише Ctrl+Del

Dima: Павел , какой то косяк с перекодировкой. Была изначально в базе RU866 , средствами Dbedit конвертнул в UTF8 , вышел из Dbedit. Затем загрузил эту же базу с ключиком -cdp=UTF8 и конвертнул все обратно в кодировку RU866 , в результате получил в символьных полях один вопросики. В какой теперь кодировке база не понятно. Нормально ни чего не кажет ни в UTF8 ни в RU866.

Andrey: Петр пишет: цитата: 2015-02-08 13:19 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl) * src/rdd/workarea.c + added support for field flags in dbCreate()/dbStruct(). Flags can be passed in string with field type after ":", i.e. "C:U" means Unicode character field. The following flags are recognized: "N" - column can store null values "B" - binary column "+" - column is autoincrementing "Z" - column is compressed "E" - column is encrypted "U" - column stores Unicode strings Павел, а нельзя добавить в Dbedit новые типы полей ?

Pasha: Так я же полтора месяца назад добавил: Что нового: - добавлена поддержка флагов для полей: autoinc, unicode и др.

Dima: Pasha Он видимо про это поле "I:+"

Pasha: В режиме просмотра/редакции структуры добавлена колонка "Флаг". Здесь можно установить флаги для поля

Dima: Pasha пишет: Здесь можно установить флаги для поля Точно , не обращал внимания. При загрузке файла флаги считывает Dbedit ? PS Похоже что да. Чеканул

Pasha: Новую версию программы можно скачать по ссылке: https://cloud.mail.ru/public/8xLE/UKRW3Zjp5 Что нового: - добавлена функция полного сравнения с другим файлом всех полей: Операция - полное сравнение с файлом - добавлена функция Поиск - Заменить поле из файла. Запрашиваются данные для установки set relation, и поле, из которого надо выполнить замену. - исправлена трансляция в кодовую страницу

Andrey: Всем привет ! При редактировании мемо-поля происходит вот такая ошибка : Скорее всего поле MREM "битое". Как исправить такие поля в базе ?

Pasha: Похоже, значение поля равно nil, вот программа и сваливается на len(nil) Andrey пишет: Скорее всего поле MREM "битое". Как исправить такие поля в базе ? Вопрос в таком виде не имеет ответа. Чтобы исправить "битость", надо знать, что это за "битость" такая. Так что там за битость ?

Andrey: Пытаюсь вырезать битые записи для проверки. Версия dbedit.exe от 18.07.16 Поле в базе IDZ - "+" Мои действия: 1) Меню Поиск 2) меню поиск 3) в окне указываю IDZ=73424 запись в базе находиться, далее пытаюсь скопировать записи в другую базу: 1) Меню Операции 2) Меню Копировать в файл 3) в окне указываю имя файла и условие IDZ>73423 База копируется ЦЕЛИКОМ !!! Пробовал сделать условие типа DATE1==ctod("01.11.2017") - тоже копируется целиком ! Это глюк моей базы или что-то в программе ? Или я что-то не так делаю ? И ещё один вопрос. Если база состоит из очень большого кол-ва полей, то как можно быстро "встать" на колонку по имени ? Есть ли такое меню ? Если нет, то можно ли его сделать ?

Pasha: Андрей, я посмотрел твой файл. Он не битый. Как оказалось, формат мемо FPT поддерживает хранение в поле не только текста, но и других типов данных. Для меня это тоже было сюрпризом, так как я такой оригинальной фичей никогда не пользовался. т.е. можно так: Field->MREM := .f. и в поле будет храниться .f., что у тебя в двух записях и есть. Можешь сделать проверку в цикле: if ValType(MREM) # "M" ... скорее всего у тебя где-то в коде есть такое присваивание. Просто очисти эти поля: Field->MREM := "" Быстро перейти к колонке можно по Alt+F5, или меню Поиск - Перейти на колонку

Andrey: Pasha пишет: скорее всего у тебя где-то в коде есть такое присваивание. Не делал никогда у себя в коде такого. Скорее всего был сбой по базе. Спасибо БОЛЬШОЕ !

Andrey: А как насчёт этого ? в окне указываю имя файла и условие IDZ>73423 База копируется ЦЕЛИКОМ !!! Пробовал сделать условие типа DATE1==ctod("01.11.2017") - тоже копируется целиком !

Pasha: Andrey пишет: Не делал никогда у себя в коде такого. Скорее всего был сбой по базе. Так уже и сбой ? Самопроизвольно в memo-блок записался двоичный код типа данных L и значение .f. ? А что насчет неинициализированных Public/Private ? Как раз значение .f. и будет. А как насчёт этого ? в окне указываю имя файла и условие IDZ>73423 База копируется ЦЕЛИКОМ !!! Поставь фильтр и выполняй копирование. В настоящее время там используется не стандартная команда COPY TO, поскольку она при наличии поля AutoInc не работает (ты как раз нарвался на такой случай), а другой режим.

Andrey: Pasha пишет: Поставь фильтр и выполняй копирование. Понял ! СПАСИБО !

Pasha: Ссылка на новую версию программы: https://cloud.mail.ru/public/Ek8Q/nyqkFKAri Что нового: - добавлены функции фильтра: с записи #, по запись # - автоматическое преобразование выражения фильтра по полю в scope (при наличии подходящего индекса) - доработано копирование/вставка прямоугольных блоков - просмотр несимвольных memo-полей - добавлен параметр "User=" в letodb.ini для авторизации на сервере

Dima: Pasha пишет: Ссылка на новую версию программы Спасибо !

Dima: Pasha пишет: - доработано копирование/вставка прямоугольных блоков Это где и как ? Попробовал при редактировании MEMO не работает.

PSP: Dima пишет: Это где и как ? Строки/столбцы таблицы можно помечать. Но что с ними потом делать, - я не понял)

Pasha: Прямоугольные блоки можно использовать для обмена данными между файлом dbf и книгой Excel или OpenOffice. Надо скопировать прямоугольную область в Excel в буфер обмена, затем в dbedit вызвать меню Операция - Вставить блок из буфера обмена. Затем в диалоге можно привязать столбцы Excel к полям dbf, если они идут не последовательно, или с пропусками. Аналогично можно пометить прямоугольную область в dbf (Shift+стрелки), и скопировать ее в буфер обмена для вставки в Excel. Только там уже привязки столбцов естественно не будет.

Pasha: Поясню насчет фильтров. При установке фильтра (F4) добавлены две функции: с записи - будет сформирован фильтр RecNo() >= <nCurRec>, аналогично - по запись. Это небольшой сервис. Фильтр по значению поля: Пусть для поля Year есть индекс: Year или Str(Year)+Str(Month) При уставке фильтра по значению 2017 будет установлен не медленный обычный фильтр Year=2017 а быстрый фильтр - scope по индексу - 2017 Если затем добавить фильтр по значению Month - 12, то вместо фильтра Year=2017.and.Month=12 будет установлен scope 201712

PSP: Павел, можно попросить подправить hotkeys? )) 1. Alt-S - одновременно и scope и суммирование 2. Поиск по ключу - клавиша не предусмотрена. Руки так и тянутся к F7)), но там просто поиск. Можно сделать так: если есть открытый индекс, то F7 - поиск по активному ключу? 3. Вызов меню - F10 - всегда начинается сначала. Можно, чтобы к последнему пункты меню возвращалось?

Pasha: PSP пишет: 2. Поиск по ключу - клавиша не предусмотрена. Руки так и тянутся к F7)), но там просто поиск. Можно сделать так: если есть открытый индекс, то F7 - поиск по активному ключу? Клавиша там как раз есть, Ctrl+S. По поводу совмещения поиска по ключу (а это dbSeek) с поиском по F7 - можно конечно проанализировать, если текущая колонка является первой в индексном выражении, то отработать поиск по ключу. Но поиск по F7 нечувствителен к регистру, да и там ищется вхождение подстроки. Если его заменить на поиск по ключу, то при этом потеряется такая функциональность, а это не есть гут. Если есть какие-то идеи как можно организовать интерфейс без такой потери - предлагайте.

PSP: Pasha пишет: Клавиша там как раз есть, Ctrl+S Никакой реакции на это сочетание (версия 3.27, вроде последняя) В хэлпе Ctrl-S указана, но в меню этого нет и прога не откликается на Ctrl-S По поводу совмещения поиска по ключу (а это dbSeek) с поиском по F7 - можно конечно проанализировать, если текущая колонка является первой в индексном выражении, то отработать поиск по ключу. Но поиск по F7 нечувствителен к регистру, да и там ищется вхождение подстроки. Если его заменить на поиск по ключу, то при этом потеряется такая функциональность, а это не есть гут. Если есть какие-то идеи как можно организовать интерфейс без такой потери - предлагайте. Пусть будет другая клавиша. Неважно. Лишь бы была)

Pasha: PSP пишет: Никакой реакции на это сочетание (версия 3.27, вроде последняя) Да, увы, комбинацию ctrl+s в харборе использовать нельзя. Поставлю другую клавишу.

Pasha: Новая версия программы доступна по ссылке: https://cloud.mail.ru/public/EkR8/rEiqnF4dn Изменения в программе: - доработана функция полного сравнения с файлом: теперь можно записать выявленные различия. - небольшие изменения в интерфейсе

PSP: Спасибо))

Andrey: Привет всем. Вот прислали мне очередной шедевр - битую базу ! Как такое происходит у них на ХР мне до сих пор непонятно ? За много лет, только несколько раз правил битые dbf от нескольких пользователей. Пробовал руками копировать в другую базу с условиями RECNO() < 72715 вылетает dbedit в конце, хотя базу создаёт. При копировании в другую базу с условиями RECNO() > 73058 вылетает dbedit. Т.е. ручками сбойный участок вырезать невозможно, хотя раньше без полей типа ModTime или автоинкремент этот фокус проходил. Пробовал пометить все сбойные записи (исходя из ведения базы в программе - условие NUM < 99), записи помечаются, но удалить их невозможно, вылетает dbedit. Попробовал в "Меню Операция - Поиск ошибок" - сработало ! Классная менюшка в программе !

Pasha: А в чем эта битость заключается ? И что за вылет ?

Andrey: Pasha пишет: А в чем эта битость заключается ? И что за вылет ? Базу пришлю на почту ! База мусором заполнена. Как такое сейчас на ХР может происходить ?

Vlad04: Обычно, заголовки портятся. Бывает база мусором заполняется. Но это давно было - во времена Клиппера. Лечилось - был какой-то просмотрщик, который заголовок исправлял. - в эталонную пустую базу по-байтно считывалась битая и данные помещались в нужные поля

Andrey: Привет ! Делаю копирование части базы в другой файл. Не копируется... Целиком копируется база в другой файл. Кол-во записей в базе 11845. Баг или неправильно делаю ?

Pasha: Проверяю. Поставил условие для копирования: recno()>20. В результирующем файле получается на 20 записей меньше, чем в исходном.

Andrey: Pasha пишет: Поставил условие для копирования: recno()>20. В результирующем файле получается на 20 записей меньше, чем в исходном. Странно... А на большем кол-ве данных и с полями + @ и др. ? И какая последняя версия программы dbedit сейчас ?

Pasha: Версия 3.28, которую я выкладывал 7.3.2018. На ней и проверял. Количество данных роли не играет, условие или выполняется, или нет.

Andrey: Pasha пишет: Версия 3.28, которую я выкладывал 7.3.2018. На ней и проверял. Да, на этой версии всё сработало ! Видно у меня старая версия была... СПАСИБО !

Andrey: Всем привет. Пытаюсь базу экспортировать через меню: Действие - XLS и CSV. Вылетает программа... Ошибка: Ошибка WINOLE/1018 Неверный аргумент: __OLEVARIANTNEW и Ошибка BASE/1118 Неверный аргумент: DTOC Версия программы последняя.

Pasha: В файле присутствуют поля с расширенными типами данных ? Если да, то с какими ?

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

Pasha: Новая версия программы: https://cloud.mail.ru/public/6xgz/RDKXNeUqa Что нового: - добавлена функция экспорта в таблицу MS Word

Andrey: Привет ! Спасибо за новую версию. Ошибка с CSV пропала ! Только ошибочка в ней при экспорте в Эксель. Точно такая же как в МиниГуи была раньше. Если столбец текстовый и содержит в колонке "1", "2/3", "3/4", "5 дом" , то "2/3", "3/4" эксель сам преобразует как ему понравиться. Это не ПРАВИЛЬНО ! Нужно все текстовые колонки при экспорте преобразовать в текстовые, а потом выгружать туда данные. Для Ворда если таблица большая, то таблица непонятная выходит... И границ (окантовки) нет. Выслал тебе на почту свой вариант выгрузки в Ворд. Посмотри, может пригодиться.

Pasha: Andrey пишет: Нужно все текстовые колонки при экспорте преобразовать в текстовые, а потом выгружать туда данные. Надо поставить флажок "Текстовый формат для полей типа Character" Для Ворда если таблица большая, то таблица непонятная выходит... И границ (окантовки) нет. Да мне собственно не очень понятен смысл данной функции. Я ее сделал лет так больше 15 назад, но так и не использовал. Сейчас воткнул в меню, раз уж разговор про это зашел. Можно конечно доделать кое-какие вещи.

Andrey: Pasha пишет: Надо поставить флажок "Текстовый формат для полей типа Character" Да, так правильно получается. Спасибо. А какой код в экспорте для Экселя включает разбивку печати по листам ? Т.е. при появления листа Экселя включаются линии разделителя по листам.

Dima: Pasha Файлы ADS , ADT поддерживаются DBEDIT ?

Pasha: В текущей версии нет. Я когда-то собирал программу вместе с rddads, но adt специально не тестировал.

Andrey: Всем привет. Обнаружил глюк в DBEDIT. Если имя файла содержит пробелы, то dbf-ник не открывается. Периодически приходиться проверять базы которые делает банк. Имя файла просто улёт - 5617181_20180919_101939_IP Roga And Kopute.dbf

Pasha: Решение для такого случая стандартное: имя файла надо передавать в кавычках: dbedit.exe "5617181_20180919_101939_IP Roga And Kopute.dbf"

taras56: Сейчас пишу-заканчиваю под windows на HWGUI ссылка https://yadi.sk/d/xM3dW9WvNjwFYg меня интересуют исходники и применяемые библиотеки раздел выгрузка DBF в разные подсиcтеммы OFFICE ... на Harbour-е 2 месяца перерыв в программировании 15 лет.

Pasha: taras56 пишет: меня интересуют исходники и применяемые библиотеки раздел выгрузка DBF в разные подсиcтеммы OFFICE ... на Harbour-е 2 месяца перерыв в программировании 15 лет. https://cloud.mail.ru/public/M9WN/FX2sxXyyh Даю исходник dbedit и модуль для выгрузки в Office Применяемые библиотеки: кроме стандартных (вроде ct) - остальное все свое. Все давать нет смысла, вы просто утонете в этих сырцах. Да и к примеру модуль формирования меню для TUI бесполезен для hwgui. Что касается выгрузки в excel/oo: это давно не ноу-хау. думаю, есть очень много примеров на эту тему. В частности, в соседнем разделе - gui -можно посмотреть пример, который сделал Андрей. Он уже включен в состав minigui. Что касается самого dbedit, вы можете посмотреть другую его функциональность, и перенести ее в свою утилиту. В части интерфейса надо конечно делать все отдельно.

taras56: Все пишу HWGUI уже нравиться с документаций слабовато по исходникам автора учимся. Смотри рабочая прога расчет расхода и анализ по бензину авто с графиками https://yadi.sk/d/Rz2XWVpcNmE4tA прога + журнал с 2014 года мой авто

stil: taras56, в этой ветке, если я правильно понимаю, обсуждается программа Pasha "Harbour dbf editor". Ты для своей "прога расчет расхода и анализ по бензину авто с графиками" создай отдельную ветку - без обид ... GUI твоей программы - пример того, как не надо делать. Да и с рус. яз есть проблемы. Без обид ...

Vlad04: stil GUI твоей программы - пример того, как не надо делать Поэтому поводу есть старый анекдот. Двое возвращаются из отпуска. И третий их спрашивает - Как кормили ? Первый уныло - Плохо, лапша и лапша. А второй радостно - Отлично, лапша и лапша. Так что - о вкусах не спорят. А если серьезно. Ваш пример в студию, который вы считаете образцом , как надо программировать.

Haz: Не стал бы утвеждать так категорично, класный GUI или нет. Дизайн программы, это отдельная тема. Редко когда разработчик и в дизайне профи, и как кодер гений. Добавим сюда однотипность контролов и удачу в поиске бесплатных икон на просторах инета. Порой смотрю на свои проги прошлых лет..... как убого они сматрятся, а некоторые решения хоть сейчас копируй. Несколько лет назад предлагал в форуме организовать ветку с примерами интересных интерфейсов на порулярных здесь инструментах. Энтузиастов можно было посчитать на одной ладошке по пальцам. Григорий из кожи лезет, найти интересный пример, по настоящему интересный, но таких мало. Вот мы все и стараемся, и каждому кажется что его GUI вот сейчас и есть ОНО. Правильно Влад сказал, кому и лапша - ЛАПША. Но и опонет прав, давайте свою лапшу на своей кухне рекламировать, а не пихать ее в чужие. Taras56, создай отдельно ветку, тебе там же и на воаросы отвечать будут. GUI свой ты сам найдёшь, уверяю еще с тебя плагитить будут ( я свои идеи в примерах без очков замечаю и не обижаюсь и чужие приватизирую бессовестно ). Stil, выходи из тени, регистрируйся, народ здесь не злой. Может и правда не примерами так идеями дизайна вложишь в копилку форума.

Dima: Haz +1

taras56: Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland Error: Unresolved external '_HB_FUN_INPUT' referenced from F:\HB_PROJECT\LIB\TARAS.LIB|BrwToCalc Error: Unresolved external '_HB_FUN__BLOCK' referenced from F:\HB_PROJECT\LIB\TARAS.LIB|BrwToCalc Error: Unresolved external '_HB_FUN_FIELDTEST' referenced from F:\HB_PROJECT\LIB\TARAS.LIB|_office Error: Unresolved external '_HB_FUN_XTOST' referenced from F:\HB_PROJECT\LIB\TARAS.LIB|_office Error: Unresolved external '_HB_FUN_GETFULLNAME' referenced from F:\HB_PROJECT\LIB\TARAS.LIB|_office Error: Unresolved external '_HB_FUN_STRTRIM' referenced from F:\HB_PROJECT\LIB\TARAS.LIB|_office Error: Unresolved external '_HB_FUN_METERBEGIN' referenced from F:\HB_PROJECT\LIB\TARAS.LIB|_office Error: Unresolved external '_HB_FUN_METERREFRESH' referenced from F:\HB_PROJECT\LIB\TARAS.LIB|_office Error: Unresolved external '_HB_FUN__EXECFUNC' referenced from F:\HB_PROJECT\LIB\TARAS.LIB|_office Error: Unresolved external '_HB_FUN_HRBDO' referenced from F:\HB_PROJECT\LIB\TARAS.LIB|_office Error: Unresolved external '_HB_FUN_METEREND' referenced from F:\HB_PROJECT\LIB\TARAS.LIB|_office Error: Unresolved external '_HB_FUN_WAITPUSH' referenced from F:\HB_PROJECT\LIB\TARAS.LIB|_office Error: Unresolved external '_HB_FUN_WAITPOP' referenced from F:\HB_PROJECT\LIB\TARAS.LIB|_office Error: Unresolved external '_HB_FUN_MALERT' referenced from F:\HB_PROJECT\LIB\TARAS.LIB|_office Error: Unresolved external '_HB_FUN_ADELM' referenced from F:\HB_PROJECT\LIB\TARAS.LIB|_office hbct.lib используется в библ Harbour 3.2 нет таких модулей .

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

Pasha: Отдельной клавиши нет. Но достаточно нажать Ctrl+PgUp, и будет отработан go top с обновлением данных

Andrey: Pasha пишет: Отдельной клавиши нет. А можно прикрутить такой режим ? Удобно будет.

Pasha: Такой режим отличается от go top только тем, что сохраняется текущая позиция. А оно надо, если меняется состояние таблицы ? А если не надо, то зачем тогда вводить новый режим ?

Andrey: Pasha пишет: А оно надо, если меняется состояние таблицы ? Да надо. При изменение базы другой программой легче отследить что пишется в базу. Листать базу вверх/вниз очень неудобно, когда смотришь, что в базу пишет другая программа. Если не сложно сделай пожалуйста.

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

Dima: Pasha Вероятно он имел в виду сделать Browse:RefreshAll() не меняя позиции курсора

Andrey: Dima пишет: Browse:RefreshAll() не меняя позиции курсора Да именно так !

Pasha: Так об этом я и написал. Вопрос: зачем ? Визуально определить ячейки, в которых изменились данные ? Это сложно, можно и прозевать, экран он большой. Навесить такую функцию на Ctrl+<что-нибудь> не вопрос. Меню перегружать не очень надо. Но зачем это ?

Pasha: Новая версия программы доступна для скачивания по ссылке: https://cloud.mail.ru/public/5p65/31DDDhvGa - добавлен параметр -s: открытие в режиме shared - добавлена функция замены значения ячейки по формуле: по клавише Ctrl+R или из меню - обновление таблицы по клавише Ctrl+F5 (refreshAll) - добавлен параметр RDD=<rddname> в dbedit.ini - поддержка нажатий клавиш alt+0, alt+1, ... alt+n для быстрого переключения индекса - отображение содержимого 1-й строки буфера обмена при вставке из буфера обмена - в режиме "Добавить из файла" в имени файла допускается спецсимволы *? для добавления записей сразу из нескольких файлов - в режиме файлового менеджера добавлен режим поиска файлов, содержащих определенное поле, и значение в этом поле. найденные файлы будут выделены - редакция структуры: новая функция добавления нескольких полей с именами <FldMask>1 .. <FldMask>N - в режим замены (Ctrl+F7), если заменяемое поле является индексным, предлагается замена без использования индекса - фильтр по значению поля (Shift+F4): добавлена возможность установки фильтра по подстроке для символьных полей

Andrey: Pasha пишет: - обновление таблицы по клавише Ctrl+F5 (refreshAll) СПАСИБО БОЛЬШОЕ ! Работает !

Andrey: Беру и сравниваю 2 базы, через меню Операция, Полное сравнение с файлом. Ввожу туда имя другой базы и поле. Выдаёт вот такое сообщение: Дата: 19.05.2020, время: 16:08:39 Ошибка BASE/1066 Неверный аргумент: сравнение Аргументы: [ 1] = U Алиас DB1 Вызов из FIELDCOMPR(0) Вызов из TBALLCOMPARE(0) Вызов из (b)MAIN(0) Вызов из EXECITEM(0) Вызов из MULTIMENU(0) Вызов из CHECKMENU(0) Вызов из EDITBROWSE(0) Вызов из DBMENU(0) Вызов из EDITTABLE(0) Вызов из MAIN(0) Что не так делаю ?

Dima: какой тип поля ?

Andrey: Числовое, внутренний свой ID. Версия dbedit 3.30 по справке. Попробовал поле ID тип "+" AutoInc, тоже вылетает.

Dima: Andrey пишет: Числовое, внутренний свой ID. Ждём Пашу

MIKHAIL: А можно программу использовать не как внешнюю утилиту, а как компонент программы ?

Pasha: Andrey пишет: Беру и сравниваю 2 базы, через меню Операция, Полное сравнение с файлом. Ввожу туда имя другой базы и поле. Выдаёт вот такое сообщение: Ключевое поле надо вводить в том случае, когда сравнение надо делать по ключевому полю. Если файл сравнивается по номеру записи, а сравнение с архивной копией делается именно так, то ключевое поле заполнять не надо.

Pasha: MIKHAIL пишет: А можно программу использовать не как внешнюю утилиту, а как компонент программы ? Нет, нельзя, это отдельная утилита.

Andrey: Pasha пишет: то ключевое поле заполнять не надо. Да, оказывается просто... Посмотрел свои базы, 71 тыс. различий - такое же кол-во записей в базе. И сравнение выдаёт по ненужному полю (наверно которое первое стоит), дата и время модификации DBF файла (есть у меня такое поле) Наверное как буфер базы сохранился на диск, так и всё поменялось. Не то, не устраивает так. Мне нужно смотреть сразу несколько полей, которые можно задать. Придётся что то ваять самому... Посмотрел что есть на просторах инета, куча всего, а простой утилитки сравнения нет.

Pasha: Что сравнивать то ? Какой критерий ?

MIKHAIL: Pasha пишет: Нет, нельзя, это отдельная утилита. А жаль, прикрутить бы ее к HBEDIT добавить менеджер проекта и получилось бы не плохое IDE для консоли

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

Pasha: Не все поля, а список. Это "по горизонтали" А по вертикали ? Запись номер <n> в первом файле сравнивать с ... чем ?

Andrey: Pasha пишет: А по вертикали ? Запись номер <n> в первом файле сравнивать с ... чем ? Можно по номерам записи (это если база не битая и кол-во записей в двух базах одинаковы), или по конкретному задаваемому полю. Я делаю поле в базе ID - AutoInc, или другое числовое поле.

SergKis: Andrey пишет Можно по номерам записи (это если база не битая и кол-во записей в двух базах одинаковы) Наверно, протокол должен быть, типа log файла для не равных полей по типам и значениям <ID>, <RecNo dbf 1>, <RecNo dbf 2>, { ; { <FieldName 1>,<Type 1>, <Type 2>,<Value 1>,<Value 2> }, ; { <FieldName 2>,<Type 1>, <Type 2>,<Value 1>,<Value 2> }, ; ... } + записи "лишние" из dbf 2, не участвующие в сравнении - нет такого <ID>

Pasha: Ссылка для скачивания новой версии программы: https://cloud.mail.ru/public/36tL/2gQ9b8DAv Что нового: - доработано копирование файлов для LetoDB - добавлена функция сравнения панелей для режима файлового менеджера LetoDB - добавлен поиск файлов по маске в для режима файлового менеджера - добавлен ввод списка полей в функции полного сравнения файлов Сохранение строки с именами полей делать не стал, так как эта строка привязана к конкретному файлу Строку можно без проблем сохранить самому во внешнем файле: наклацать поля, сохранить через буфер обмена, и при следующем сравнении вставлять ее через тот же буфер обмена Если вводить ключевое поле, то сравнения будет выполняться по нему, а не по номеру записи

Andrey: Спасибо Pasha ! Получилось.

Pasha: SergKis пишет: Наверно, протокол должен быть, типа log файла для не равных полей по типам и значениям <ID>, <RecNo dbf 1>, <RecNo dbf 2>, { ; { <FieldName 1>,<Type 1>, <Type 2>,<Value 1>,<Value 2> }, ; { <FieldName 2>,<Type 1>, <Type 2>,<Value 1>,<Value 2> }, ; ... } + записи "лишние" из dbf 2, не участвующие в сравнении - нет такого <ID> Именно так и делается, только выдается не лог, а таблица с возможностью заменить значения из архивного файла: всех, либо текущего Ну и саму таблицу различий можно экспортировать во всяческие форматы

SergKis: Pasha пишет Именно так и делается, только выдается не лог, Андрей показал мне картинку, на ней я не увидел типы переменных для обоих value. Через тип можно указывать наличие поле в том или др. файле и не увидел "лишние" записи в том или др. файле. И показалось, что не очень удобно понимать ситуацию value в таком виде в разных колонках. У меня есть похожий вариант со сравнением данных по штрих коду EAN, из разных источников данные. Оказалось удобно давать их в виде таблицы горизонтальной, а данные value в одной колонке друг под другом, имя поля уходит в header. Видно какой байт в value отличается

Pasha: Типы полей в двух файлах одинаковые, иначе сравнение не имеет смысла. Можно тип одной колонкой показать. Если записи добавлены, плюсики в таблице различий есть. На скрине Андрея их может не быть, так может их и нет по факту. А так в две строки показывать различия, что ли ?

SergKis: Pasha пишет А так в две строки показывать различия, что ли ? Как вариант, да, возможно удобней будет[pre2] RecNo | Field | N | Value ================================================= 622 | FIO | 1 | Асмандиярова Нина Васильевна | | 2 | Асцандиярова Гита Васильъевна | | ? | ? ? ? [/pre2] Тип поля можно после Field Name добавить колонку, в ней U или пробел - отсутсвие поля в каком то из файлов -> индикатор

SergKis: Pasha пишет Типы полей в двух файлах одинаковые, иначе сравнение не имеет смысла. Согласен, но в протокол данные должны попасть, как не совпавшие по типу Другой вариант, это горизонтальный просмотр базы, как показано в таблице, только все имена полей уходят в Header вместо слова Value, т.е. колонка RecNo\Key заморожена и имеем горизонтальный скролинг по колонкам записи и вертикальный по RecNo

Andrey: Маленькая неточность в программе: после изменение структуры БД, после возврата на таблицу, удалённые записи не выделяются красным цветом.

Pasha: Ссылка для скачивания новой версии программы: https://cloud.mail.ru/public/57yP/59HjU6KVD что нового: - увеличен размер буфера для ввода имени файла в некоторых режимах; - сделано восстановление цвета колонок после изменения структуры файла.

Andrey: Спасибо ! Ещё одну фишку бы надо в программу. Сохранять структуру dbf в текстовый файл. Но это не срочно, как время будет.

SergKis: Pasha пишет Ссылка для скачивания новой версии программы И скачивать не дает, даже не реагирует на клики.

Pasha: В режиме просмотра/редакции структуры по нажатию Ctrl+C структура копируется в буфер обмена

Pasha: SergKis пишет: И скачивать не дает, даже не реагирует на клики. кликнул, открылось облако с кнопкой скачать, кликнул, скачал

SergKis: Pasha пишет кликнул, открылось облако с кнопкой скачать, кликнул, скачал Хоть закликайся, никакой реакции. Может хочет, что бы я облако ставил на пробу ? Так мне нет надобности. Раньше брало с облака без проблем Win 10

Pasha: Первый раз скачал mozilla 80, теперь mozilla 72, тоже успешно. Попробовал с телефона: opera не захотела, а chrome справился

SergKis: Opera, Crome не берут, причем, при первом входе в адрес и нажатие "Скачать", приводит к шевелению адресов подключения и все затыкается, все др. нажатия - нет реакции совсем. Pasha можно не парится, программу не использую, т.к. нет LV866. Так, на посмотреть хотел.

SergKis: PS Андрей кинул мне на ftp.

Andrey: Pasha пишет: В режиме просмотра/редакции структуры по нажатию Ctrl+C структура копируется в буфер обмена Классная структура получается. На раз к себе в исходник вставляется !

Dima: Павел а как набрать украинскую букву i если кодировка UA1251 , не набирается зараза ?

Pasha: Похоже, для ввода украинских букв надо выставить украинскую кодовую страницу по умолчанию, в сейчас выставлена RU866 Кодовая страница выставляется для dbf, а в самой программе стоит RU866 Для эксперимента: можно в dbedit вызвать калькулятор, в строке Выражение ввести: hb_CdpSelect( "UA1125" ) и отработать команду нажатием Enter после этого украинская і вводится Если ввести hb_CdpSelect( "UA1251" ) она тоже вводится, но искажается весь вывод программы на экран. Причина: сам dbedit не уникодный, хоть и собран уникодным харбором Я могу добавить эту функциональность: установить украинскую hb_CdpSelect( "UA1125" ), она из семейства 866, и эта укроспецифика будет набираться

Dima: Pasha Паш да не нужно , я справился в другом инструменте. Спасибо ! ЗЫ Не знал что UA1125 из семейства 866 а тут закон об обязательной украинизации слепили и нужно во всех документах на мове страдать теперь. Заменил у себя в консоли пока что под ADS , RU866 -> UA866 , букву i это конечно не позволяет набирать , но выкрутился с помощью HB_GTI_INKEYFILTER Ты хочешь сказать что я могу под ADS спокойно перейти с RU866 на UA1125 ?

Pasha: У меня нет под рукой ads чтобы проверить, но по видимому да. Правда в ads upper/lower на украинских спецсимволах работать не будут, но это только в индексных выражениях и фильтрах Ads же не знает эту кодовую страницу.

Dima: Pasha пишет: Правда в ads upper/lower на украинских спецсимволах работать не будут, но это только в индексных выражениях и фильтрах Ads же не знает эту кодовую страницу. Сделал вот такой тест , вроде все ищет как надо. [pre2] FUNC Main() local i local elem local hh:={=>} hh["RU866"]:={"1","t1"} hh["UA866"]:={"2","t2"} hh["UA1125"]:={"3","t3"} REQUEST ADS rddSetDefault( "ADSCDX" ) REQUEST HB_CODEPAGE_RU866,HB_CODEPAGE_UA866,HB_CODEPAGE_UA1125 RddSetDefault("ADS") AdsSetServerType ( 2 ) SET FILETYPE TO CDX AdsSetCharType(2, .t.) AdsRightsCheck(.F.) AdsLocking( .T. ) for each elem in hh hb_cdpSelect( elem:__enumkey() ) dbcreate("test"+elem[1],{{"s","c",1,0}},"ADSCDX",.t.,elem[2]) index on s tag tt For i=1 to 255 (elem[2])->(dbappend()) (elem[2])->s:=chr(i) if !(elem[2])->(dbseek(chr(i))) ? "Bad",chr(i) endif Next next return nil [/pre2]

Andrey: Перевел улицы на украинский язык через ГУГЛ переводчик. Далее этот текстовый файл добавляю в базу[pre2] cFile := 'street-ukr.txt' DBCREATE(cDbf, aDbf) USE (cDbf) ALIAS UKRDB CODEPAGE "RU1251" NEW APPEND FROM (cFile) DELIMITED CODEPAGE "RU1251"[/pre2] При открытии этой базы в dbedit.exe выдаёт такое сообщение: Хотя через HARBOUR открывается нормально.

Andrey: Почему при открытие базы в UA1251 вместо укр.букв палочки стоят ? Если в МиниГуи открываешь базу в UA1251 то там выглядит нормально !

SergKis: Andrey В hmg примере у тебя USE (cDbf) ALIAS (cAls) CODEPAGE "RU866" SHARED READONLY NEW а не RU1251

Andrey: SergKis пишет: В hmg примере у тебя USE (cDbf) ALIAS (cAls) CODEPAGE "RU866" SHARED READONLY NEW Я переделал пример на [pre2] //USE (cDbf) ALIAS (cAls) CODEPAGE "RU1251" SHARED READONLY NEW hb_SetCodepage( "UA1251" ) USE (cDbf) ALIAS (cAls) CODEPAGE "UA1251" SHARED READONLY NEW [/pre2]

Pasha: Andrey пишет: Почему при открытие базы в UA1251 вместо укр.букв палочки стоят ? Если в МиниГуи открываешь базу в UA1251 то там выглядит нормально ! Андрей, ты мне эту базу прислал, она совсем не в кодировке UA1251. Она и не в UA1125, а там какой-то странный микс. Русские символы, общие с украинскими - в кодировке 866, равно как и i с двумя точками Украинская i стоит в кодировке 1251 - это коды 178 и 179. Почему в dbedit и hmg по разному отображается украинская i ? В dbedit основная кодовая страница - RU866, в ней нет украинской i, поэтому коды 178-179 и отображаются как палочки. В hmg у тебя основная кодовая страница - RU1251, а таблицу с улицами ты открываешь в RU866. При этом русские символы перекодируются в RU1251, а коды 178 и 179 не перекодируются, а отображаются как есть - как украинское i.

Pasha: Andrey пишет: При открытии этой базы в dbedit.exe выдаёт такое сообщение: Хотя через HARBOUR открывается нормально. В dbedit после открытия есть дополнительная проверка на корректность данных в заголовке dbf

Andrey: Pasha пишет: Почему в dbedit и hmg по разному отображается украинская i ? В dbedit основная кодовая страница - RU866, в ней нет украинской i, поэтому коды 178-179 и отображаются как палочки. В hmg у тебя основная кодовая страница - RU1251, а таблицу с улицами ты открываешь в RU866. При этом русские символы перекодируются в RU1251, а коды 178 и 179 не перекодируются, а отображаются как есть - как украинское i. По картинке в dbedit - установил кодовую таблицу UA1251 и палочки появились. Если базу в МиниГуи открыть так: hb_SetCodepage( "UA1251" ) USE (cDbf) ALIAS (cAls) CODEPAGE "UA1251" SHARED READONLY NEW То на картинке буква "i" отображается правильно. Вопрос был, почему после переключения dbedit на UA1251 - палочки вместо "i". Выслал последний пример на почту.

Pasha: Andrey пишет: По картинке в dbedit - установил кодовую таблицу UA1251 и палочки появились. Если базу в МиниГуи открыть так: hb_SetCodepage( "UA1251" ) USE (cDbf) ALIAS (cAls) CODEPAGE "UA1251" SHARED READONLY NEW То на картинке буква "i" отображается правильно. Вопрос был, почему после переключения dbedit на UA1251 - палочки вместо "i". Так я ответил именно на этот вопрос, ты похоже не понял ответ. Разжевываю до состояния кашицы. В hmg у тебя стоит SET CODEPAGE TO RUSSIAN, т.е. RU1251 Таблица открывается в RU866. Данные в таблице хранятся в некорректной кодировке, украинские i с кодами 178, 179 Поскольку в RU866 кодов 178 и 179 нет, они не перекодируются и отображаются как есть в кодировке 1251, т.е. как i В dbedit стоит кодировка по умолчанию RU866, т.е HB_CDPSELECT( "RU866" ) В этой кодировке символы с кодами 178 и 179 отсутствуют, и отображаются как им и положено - как "палочки". В случае твоей некорректной кодировки эффект отображения украинской i в hmg получился случайно. А dbedit не понимает такую некорректную кодировку, и отображает эти символы палочками

Andrey: Pasha пишет: В hmg у тебя стоит SET CODEPAGE TO RUSSIAN, т.е. RU1251 Да не стоит. В новом примере сделал [pre2]hb_SetCodepage( "UA1251" ) USE (cDbf) ALIAS (cAls) CODEPAGE "UA1251" SHARED READONLY NEW [/pre2]

Pasha: Andrey пишет: Да не стоит. В новом примере сделал hb_SetCodepage( "UA1251" ) USE (cDbf) ALIAS (cAls) CODEPAGE "UA1251" SHARED READONLY NEW Это ничего в принципе не меняет, кодировка из того же семейства. Мой ответ на твой вопрос для UA1251 точно такой же

Andrey: Pasha пишет: Это ничего в принципе не меняет, кодировка из того же семейства. Мой ответ на твой вопрос для UA1251 точно такой же Понял. Спасибо !

Andrey: Pasha - переполнение *** в структуре базы. Не страшно, но некрасиво.

Dima: Andrey пишет: Pasha - переполнение *** в структуре базы 1 "штука" полей это круто Структура базы явно не продумана , включая алгоритмы по ним.........сделано абы как , лишь бы работало :) PS Я думал только британские ученые чудики , но ошибался

Haz: Dima пишет: 1 "штука" полей это круто Поля по 1-3 байт, в принципе по 2Kb на запись нормально, но да, напрашивается реляция или подчиненные базы. 2019, 2020 ... напоминают года, тогда есть ограничение на структуру после 2023. Но работает же .. Я с похожей проблемой сталкивался при обработке цен шанхайской биржи металлов. Там шаг примерно 500 юаней за сырье и нужно попасть в соответствующую колонку. По сколько все дорожает очень быстро то количество колонок стремилось в бесконечность. Вовремя остановился и переделал на реляцию.

Dima: Haz пишет: Вовремя остановился и переделал на реляцию. Все верно

SergKis: Dima пишет Структура базы явно не продумана , включая алгоритмы по ним.........сделано абы как , лишь бы работало :) Не все так однозначно. У Андрея может исторически сложилось, переделать трудоемко, особенно это касается замены версии у удаленных клиентов, у которых базы с 90-х годов. У меня до сих пор работает вариант базы на год (каталоги годов собираются), с группами по 13 месяцам, там 45 TAG, сколько полей не скажу, т.к. большое кол-во убраны в V поля SIXNSX. Это clipper 5.2e, работает под DosBox 0.74. Переделывать нет смысла и будет трудоемко. Есть отчеты, которые хотят клиенты в горизонтальном виде, когда с реляционных баз, данные уходят в за горизонт. И такие отчеты печатаются на листы с соответствующей разбивкой, сколько бы их не собралось в структуру. Так что "английские ученые" или нет, но "***" тоже вид не улучшают.

Dima: SergKis Понял тебя

Andrey: Dima пишет: Структура базы явно не продумана , включая алгоритмы по ним.........сделано абы как , лишь бы работало :) Структура базы была заложена ещё на сервер NOVEL - помните такой ? Виндов для серверов тогда не было. Это структура ещё 1999 года. Начисления по одному абоненту вытаскивалось тогда очень шустро... Так и всё сложилось до сих пор. Для каждого года добавляю всего по 8 полей. Всего в базе 1047 полей на 2022 год. Так что база в бесконечность не уйдёт... Переделать можно, но зачем ? Я сделал в МиниГуи другую структуру, работает. Только скорость расчёта чуток упала, хотя и не критично. Стал переделывать терминалку и бросил, заказчикам неинтересно, а я каждый год файл структуры правлю и автоматом у всех меняются базы. Зато юзера меня не бросят, программу каждый год переводить надо.

Pasha: Хм, в dbase 3 под размер заголовка отводится два байта, это значит, что максимамальное количество полей - 65536/32 - 1 = 2047 Андрей, ты рискуешь. Cтруктуры хватит еще на 125 лет. А что потом ? Лучше сразу переделать Подготовлю обновление, выложу

Pasha: Новая версия dbedit доступна для скачивания: https://cloud.mail.ru/public/apMG/EevmVgU8W - добавлены дополнительные кодовые страницы - добавлен параметр настройки: кодовая страница программы - увеличен размер буфера для ввода строк - при установке/снятии фильтра сделан учет scope

Dima: Pasha пишет: Cтруктуры хватит еще на 125 лет. А что потом ? Потом ему уже фиолетово будет

Andrey: Andrey пишет: Для каждого года добавляю всего по 8 полей. Ошибся я, 24 + 8 полей каждый год добавляю. Pasha пишет: Андрей, ты рискуешь. Cтруктуры хватит еще на 125 лет. А что потом ? Лучше сразу переделать Идёт написание всёго заново на C#, не мной. База PostgeSql. Pasha пишет: Хм, в dbase 3 под размер заголовка отводится два байта, это значит, что максимамальное количество полей - 65536/32 - 1 = 2047 У меня не dbase 3 - а база на CDX, она по моему имеет большее кол-во полей БД.

Pasha: cdx это формат индекса, там стандарт тот же, с двумя байтами под заголовок. Но на 30 лет тебе еще хватит

Andrey: Pasha пишет: Но на 30 лет тебе еще хватит Ну успокоил !

Pasha: Так не надо входить, майлру пускает без авторизации:

SergKis: Pasha 1. Если с dbf рядом cdx с внешними к dbedit данными dbedit.exe не запустишь, хотя просил запустить ТОЛЬКО для dbf, т.е. hbedit.exe _Ru866.dbf пока не сообразил переписать в др. место, валилось на сообщение 2. Как активировать меню ? Ни мышкой ни Alt+..., Ctrl+..., Shift+... не помогало, запуск под Far Особо не надо, есть свой аналог утилиты, но ...

Andrey: Pasha пишет: - добавлены дополнительные кодовые страницы Эти ? А в Харборе когда появятся эти страницы ? И казахский язык когда будет ?

Pasha: SergKis пишет: Pasha 1. Если с dbf рядом cdx с внешними к dbedit данными dbedit.exe не запустишь, хотя просил запустить ТОЛЬКО для dbf, т.е. hbedit.exe _Ru866.dbf пока не сообразил переписать в др. место, валилось на сообщение Срабатывает SET AUTOPEN, в данной версии никак Сделал проверку на ошибку "переменная отсутствует", если индекс для другого файла, и дальше открытие без индекса 2. Как активировать меню ? Ни мышкой ни Alt+..., Ctrl+..., Shift+... не помогало, запуск под Far Особо не надо, есть свой аналог утилиты, но ... F10, мышка, Alt+O, Alt+F и т.д.

Pasha: Andrey пишет: А в Харборе когда появятся эти страницы ? Написал в devlist, но там похоже сейчас некому смотреть. А у меня права не настроены И казахский язык когда будет ? В dbedit ? Зачем он там ? Интерфейс есть на русском или английском, на казахском я не сделаю Язык и кодировка это разные вещи

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

SergKis: Pasha пишет Сделал проверку на ошибку "переменная отсутствует", если индекс для другого файла, и дальше открытие без индекса Нет открытия (при ошибке "переменная отсутствует") без индекса, просто завершает программу. Тут бы спросить "Продолжить без индекса ?" F10, мышка, Alt+O, Alt+F и т.д. F10 - был выход\завершение работы, думал нажать, но не сообразил. Alt+... делал с рус. буквами, как написано\выделено Нажал F10 -> активировал меню, спасибо.

Pasha: Andrey пишет: Тоже отослал в devlist ? Ну да, я же и тебе отправлял

Dima: Pasha Вопросик. Хотел сменить в одном поле значение на пустое по CTRL_F7 , не реагирует Dbedit и на пробел тоже , поле "C" , это так и задумано ?

Pasha: Чтобы заменить символьное поле на пустое значение, надо строке ввода "Или заменить на выражение" ввести пустую строку: "" Аналогично для числового поля ввести 0 Да, это так задумано, во избежание случайного стирания значения поля.

Dima: Pasha ok

LYSK: Здравствуйте и с Новым наступившим годом. Скажите на милость, где скачать программу помимо облака майл.ру?

Dima: LYSK Куда налить ? В принципе можешь и сам слить , ccылка жива , используй VPN для браузера или ТОР браузер ЗЫ Zenmate CyberGhost VeePN Это все рабочее

Pasha: LYSK пишет: Здравствуйте и с Новым наступившим годом. Скажите на милость, где скачать программу помимо облака майл.ру? Только на mail.ru, ссылка живая

LYSK: "не все так однозначно и всей правды мы не узнаем" (Ц) по вышеозначенной ссылке требуется авторизация на майл.ру, и даже после этого оный майл.ру показывает мне только мое собственное облако.. ну да ладно, DIMA, если тебя не затруднит, электропочта vrukaviza на гмайл спасибо

PSP: LYSK пишет: по вышеозначенной ссылке требуется авторизация на майл.ру Подтверждаю.

Dima: LYSK ушло

Dima: гмайл - сука This message was blocked because its content presents a potential 552-5.7.0 security issue. To review our message content and attachment content 552-5.7.0 guidelines, go to 552 5.7.0 https://support.google.com/mail/?p=BlockedMessage так что считай что не ушло

Dima: обменник https://dropmefiles.net/ru/DV2s

LYSK: Спасибо, теперь хорошо



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