Страница 1 из 3
Data Conversion - multy DLL
Добавлено: 14 Февраль 2026, 11:40
gopstop2007
Привет всем, вопрос к тем кто пользуется шаблонами Data conversion
Пробую подсоединить к проекту как DLL (как multy DLL),получаю ошибки
Missing procedure definition: CONV_DATA:INIT(<ERRORCLASS>,<INICLASS>) - D:\MyProject\conv_data.clw:1210
Missing procedure definition: CONV_DATA:KILL - D:\MyProject\conv_data.clw:1210
Missing procedure definition: DESTRUCT(DLLINITIALIZER) - D:\MyProject\conv_data.clw:1210
Давно не пользовался шаблоном и буду рад за подсказку.
Спасибо за внимание и помощь!
C10, ABC
Data Conversion - multy DLL
Добавлено: 17 Февраль 2026, 11:57
SergioRaguzini
Добрый день!
вроде версии Data Conversion Template, для С6.3 и более новых отличаются, тут все правильно?
Data Conversion - multy DLL
Добавлено: 17 Февраль 2026, 13:31
gopstop2007
SergioRaguzini писал(а): 17 Февраль 2026, 11:57
Добрый день!
вроде версии Data Conversion Template, для С6.3 и более новых отличаются, тут все правильно?
Обычный app.exe собирается без ошибок, подключил к проекту как внешний exe, хотелось бы как dll прикрутить. )
Data Conversion - multy DLL
Добавлено: 17 Февраль 2026, 18:58
kreator
Я, так понимаю, помощи ждать неоткуда. Вы в какую dll шаблон добавляете? Там, где описания таблиц и ABC-классов? Есть т.н. глобальный шаблон? Ну и посмотрите как шаблон генерит описание классов? Есть там что-нибудь про "dll", "ABCDllMode"? Если что, я этот шаблон не пользую.
Data Conversion - multy DLL
Добавлено: 17 Февраль 2026, 19:15
finsoftrz
А DC вообще знает про ABC? Это Синявский делал еще в конце 90-х, если не ошибаюсь.
Data Conversion - multy DLL
Добавлено: 18 Февраль 2026, 1:39
kreator
finsoftrz писал(а): 17 Февраль 2026, 19:15
А DC вообще знает про ABC? Это Синявский делал еще в конце 90-х, если не ошибаюсь.
Возможно. Но процедуры называются CONV_DATA:INIT, CONV_DATA:KILL. Синявский так прикалывался?
Data Conversion - multy DLL
Добавлено: 18 Февраль 2026, 19:23
gopstop2007
kreator писал(а): 18 Февраль 2026, 1:39
finsoftrz писал(а): 17 Февраль 2026, 19:15
А DC вообще знает про ABC? Это Синявский делал еще в конце 90-х, если не ошибаюсь.
Возможно. Но процедуры называются CONV_DATA:INIT, CONV_DATA:KILL. Синявский так прикалывался?
Это не Синявский, у меня файл conv_data.exe

Data Conversion - multy DLL
Добавлено: 18 Февраль 2026, 19:26
gopstop2007
finsoftrz писал(а): 17 Февраль 2026, 19:15
А DC вообще знает про ABC? Это Синявский делал еще в конце 90-х, если не ошибаюсь.
У меня в С10 ABC работает, для моего проекта получилось только как внешний exe прикрутить.
Data Conversion - multy DLL
Добавлено: 18 Февраль 2026, 19:32
gopstop2007
kreator писал(а): 17 Февраль 2026, 18:58
Я, так понимаю, помощи ждать неоткуда. Вы в какую dll шаблон добавляете? Там, где описания таблиц и ABC-классов? Есть т.н. глобальный шаблон? Ну и посмотрите как шаблон генерит описание классов? Есть там что-нибудь про "dll", "ABCDllMode"? Если что, я этот шаблон не пользую.
В myprogram.exe при помощи шаблона Data Converter, как External Mode который запускает - conv_data.exe
Data Conversion - multy DLL
Добавлено: 18 Февраль 2026, 22:33
kreator
Ругается на conv_data.clw. Что в этом файле и что в самом шаблоне? Кстати, что этот шаблон конвертирует?
Data Conversion - multy DLL
Добавлено: 19 Февраль 2026, 12:24
finsoftrz
Эти шаблоны используются для управления версиями словаря. Соответственно, конвертируют таблицы со старой структурой в таблицы с новой структурой. Плюс встраивают в приложение визуальное отображение истории изменений структуры базы данных. Поддерживают базы данных dat, tps и ms sql. Из того, что помню.
Я использую много лет свой похожий инструмент, но более простой, который автоматически создаёт отдельное приложение, актуализирующее структуру базы данных у клиентов со старых версий (tps и btrieve).
Это позволяет легко изменять структуру базы данных в словаре по мере развития проекта.
Data Conversion - multy DLL
Добавлено: 19 Февраль 2026, 15:47
kreator
Интересная тема. Всегда конвертация представляет некую проблему. Но наверно не без изъянов. Особенно в SQL. Не скажу по MS, но в Firebird в последних версиях запретили некие изменения в полях БД. Т.е., если мы хотим увеличить, например, строковое поле, но создаём новое, переписываем данные из старого в новое, удаляем старое, переименовываем новое и переставляем новое на позицию старого. На стороне клиента это, естественно, через скрипт. Если говорить об универсальности решения, то я ещё понимаю пошаговую конвертацию. А вот, если изменений была куча, то могут возникнуть какие-то сложности.
Data Conversion - multy DLL
Добавлено: 19 Февраль 2026, 16:16
finsoftrz
Про sql не знаю, это надо в DC смотреть. Вадим писал, что там много нюансов отрабатывается, сложнее, чем в isam. У меня только tps и btrieve, генерится на каждую версию таблицы отдельная рутинка, которая переливает данные из таблицы предыдущей версии во временную с новой структурой, а затем замещает физический файл. Обрабатывается автоматически с той версии, которая у клиента (программа смогла открыть ее без ошибки), до актуальной, включая все промежуточные. Есть только оговорка, что последующие версии не должны повторять структуру предыдущих. На стороне разработчика вначале запускается утилитный шаблон, который определяет наличие изменений в словаре и помещает описание таблицы в текстовый файл версий. Затем компилируется небольшое приложение с одной процедурой (процедурный шаблон), которая на основании файла версий автоматически создает код конвертации.
Data Conversion - multy DLL
Добавлено: 19 Февраль 2026, 19:52
kreator
finsoftrz писал(а): 19 Февраль 2026, 16:16
Затем компилируется небольшое приложение с одной процедурой (процедурный шаблон), которая на основании файла версий автоматически создает код конвертации.
По моим представлениям можно сделать автоматическую конвертацию при несложных изменениях в словаре. Допустим, при изменении размера строкового поля. Или при добавлении поля/столбца. Но во многих случаях нужно править код конвертации вручную. А если каждый раз такое? Поэтому, чтобы привести версию клиента к текущей, надо сделать несколько итераций.
Data Conversion - multy DLL
Добавлено: 19 Февраль 2026, 20:21
finsoftrz
У меня таких ситуаций за 20+ лет не возникало, все полностью автоматически. Возможность выстраивать ручной код есть, но эта опция не используется. Итерация на стороне клиента одна, просто запускается маленький exe. Точнее, может быть более одного exe, если очень давно не обновлялся. Периодически (раз в 2-3 года) файл версий и собранный на его основе exe переименовываются, цикл начинается заново.