Старые учебные базы данных на Парадоксе

Модератор: Модераторы

Старые учебные базы данных на Парадоксе

Сообщение Adrian » 27.10.2019 22:26:31

Просматривал недавно старый учебник по Delphi. Там примеры баз данных на Парадоксе.

А в Лазарусе сложно использовать Парадокс на сегодняшний день?
Цель: Чтобы старые примеры из учебника поделать.
Adrian
незнакомец
 
Сообщения: 5
Зарегистрирован: 27.10.2019 20:07:32

Re: Старые учебные базы данных на Парадоксе

Сообщение Vadim » 28.10.2019 03:36:06

Несложно, но вот как будет работать и будет ли вообще - никто Вам не скажет уже, как минимум, 20 последних лет.
Надо добавить в Ваш Лазарус компонент paradox.
Вот только цель Ваша неясна. Это тоже самое, что сейчас начинать изучать паровой двигатель. С исторической точки зрения - очень интересно, а вот с практической... ;-)
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Старые учебные базы данных на Парадоксе

Сообщение Снег Север » 28.10.2019 08:31:03

Adrian, вы можете взять для обучения, например, SQLite - простая однопользовательская база в одном файле, с лазарусом сочетается превосходно. Здесь на форуме можете найти и примеры. А поля таблиц, индексы, запросы на добавление и выборку данных у всех реляционных БД однотипны. Различие только в мелких деталях, например, в наборе встроенных функций.
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 2993
Зарегистрирован: 27.11.2007 16:14:47

Re: Старые учебные базы данных на Парадоксе

Сообщение Adrian » 28.10.2019 17:35:10

Спасибо за ответы.

вы можете взять для обучения, например, SQLite

Я так и предполагал, что, наверное, лучше эти примеры на чём-то более современном делать. Больше практической пользы.
Как раз в сторону SQLite и смотрел. Спасибо за совет.

Вот только цель Ваша неясна.

Я решил немного повторить подзабытую тему — базы данных. Сколько-то лет лично мне не было необходимости этим заниматься. Смотрю, что сейчас используется для баз данных.
Нашёл старую книгу по Delphi (кроме всякого нового материала). Там на диске есть готовые исходники. В том числе базы данных на Paradox.
Delphi я устанавливать не хотел бы, хотя бы потому что на компьютере у меня не Windows, а Ubuntu.

Не знаю, чем даже открыть и редактировать файлы Paradox (со старого диска) на сегодняшний день. Не нашёл ничего готового для этого (как например SQLiteBrowser для SQLite).

Промежуточная второстепенная цель:
Хотел из ностальгии написать пару программок точно таких же, какие в студенческом возрасте писал.
Похоже не так просто это.

Проще, кажется, действительно на SQLite.
Adrian
незнакомец
 
Сообщения: 5
Зарегистрирован: 27.10.2019 20:07:32

Re: Старые учебные базы данных на Парадоксе

Сообщение Vadim » 28.10.2019 19:08:19

Adrian
Если не секрет, как книга называется? Насколько я помню, в подобных книгах как правило (специально подчёркиваю) работа с базами данных давалась в двух направлениях - Paradox\dBase и SQL.
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Старые учебные базы данных на Парадоксе

Сообщение Adrian » 28.10.2019 21:23:37

Книга:
Н.Б.Культин. Delphi 6. Программирование на Object Pascal.

(По Turbo Pascal 7.0 у этого же автора неплохая книга была).

В этой книге — одна из баз данных "Архитектурные памятники Санкт-Петербурга".
Папка с программой: "Петербург" и там файл с базой данных: monuments.db.

(Есть и другие книги, по которым в тетрадках заметки когда-то делал: Архангельский и ещё Гофман и Хомоненко и классика жанра Фаронов. ) :-)

------------------------------------------

Я установил в Лазарусе дополнительные пакеты для Парадокса, как вот здесь советуют:
wiki.freepascal.org/Lazarus_Database_Overview#Lazarus_and_Paradox

Там есть TParadox и TParadoxDataSet.
Что-то этот ParadoxDataSet понимает кодировку файла базы данных monuments.db, как западноевропейскую CP1252 и выдаёт в DBGrid непонятные символы.

А с TParadox пока совсем у меня не получилось.

В общем, как хорошо выше заметили, это как со старым паровым двигателем разбираться.
Adrian
незнакомец
 
Сообщения: 5
Зарегистрирован: 27.10.2019 20:07:32

Re: Старые учебные базы данных на Парадоксе

Сообщение Vadim » 29.10.2019 07:45:04

Adrian писал(а):Что-то этот ParadoxDataSet понимает кодировку файла базы данных monuments.db, как западноевропейскую CP1252 и выдаёт в DBGrid непонятные символы.

А у компонента ParadoxDataSet есть поле, в названии которого есть слово "Encoding" или что-то похожее? Должно быть для входной и выходной кодировки. Входную надо поставить в 1252, а выходную в UTF8. Тогда русские буковки поправятся.

Добавлено спустя 6 минут 22 секунды:
Можно сделать проще. Взять от этой БД Монументы только картинки, создать БД sqlite с табличкой самому и самому написать описание этих картинок в табличке. ;-) :D
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Старые учебные базы данных на Парадоксе

Сообщение zoltanleo » 29.10.2019 10:55:57

Аватара пользователя
zoltanleo
постоялец
 
Сообщения: 457
Зарегистрирован: 17.10.2013 10:55:01

Re: Старые учебные базы данных на Парадоксе

Сообщение Adrian » 29.10.2019 19:27:22

Спасибо за ответы.
Сегодня некогда и пару слов в ответ написать.

Есть поле InputEncoding, только для чтения. Там кодировка CP1252 (и другую не поставишь).
А в таблице, предполагаю (но не уверен), — CP1251.

И есть поле TargetEncoding. Я с ним "игрался" — ставил туда и UTF8, и ANSI, и CP1251... Нормальных русских букв не добился.
Adrian
незнакомец
 
Сообщения: 5
Зарегистрирован: 27.10.2019 20:07:32

Re: Старые учебные базы данных на Парадоксе

Сообщение Vadim » 30.10.2019 07:06:51

Adrian
Попробовал сегодня лазарусный компонент просто Paradox - там такая же фигня с русскими буквами - удалось на выходе только кракозябрики получить. :D
Оно работает через библиотеку pxlib, которая лежит на sourceforge.net. Её удалось собрать только под Linux. Что интересно, функции перекодировки в ней, которые работают совместно с полями **Encoding компонента, снабжены комментарием, что они "deprecated", т.е. устаревшие. А ничего другого не предусмотрено для старых однобайтовых кодировок. Так что все старые однобайтовые БД, типа Paradox\dBase, мы видимо потеряли, если изначально не писать в них строки UTF8.

Если нужно посмотреть базы Paradox (или выгрузить оттуда что-то), для винды есть программа "Paradox Data Editor". В Linux она под wine наверное тоже будет работать. Программа ставит вместе с собой BDE и проблем с русскими буквами в ней нет.
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Старые учебные базы данных на Парадоксе

Сообщение Adrian » 31.10.2019 00:27:38

Большое спасибо за подробное объяснение, в общих чертах разобрался.

Отдельное спасибо за "Paradox Data Editor". А то я уже сомневался, точно ли файлы с БД в нормальном состоянии. В нормальном.

-------------------------------------------------

Выводы (в т.ч. и себе на память).

Я написал с помощью SQLite (вместо Парадокса) учебную базу данных заново без каких-либо проблем.
SQLite вполне подошёл для этой цели.

В более новом издании книги (учебника по Delphi, автор Культин) примеры локальных БД уже не на Paradox'e, а на Access'e, как я уже посмотрел.
В общем, для тренировки новичков Paradox уже не используется.

Следующее.
Если цель — ностальгия — написать программку "точно так, как раньше", то в Лазарусе это не получится. Компоненты другие.
С этой целью надо какую-то старую версию Delphi устанавливать. Например, Delphi 7.

-------------------------------------------------

Ещё небольшой (и не особо важный) вопрос.

Я устанавливал ещё какой-то компонент TPdx1 (для Парадокса).
Источник:
wiki.freepascal.org/Lazarus_Database_Overview#Lazarus_and_Paradox

Там теоретически можно менять много кодировок.
Но практически я этот элемент так и не запустил вообще.
При попытке его сделать активным, а именно — установить Pdx1.Active:=True, выдаёт ошибку
"Field needs a name".

Может быть кто-то сталкивался с таким?
Adrian
незнакомец
 
Сообщения: 5
Зарегистрирован: 27.10.2019 20:07:32

Re: Старые учебные базы данных на Парадоксе

Сообщение Vadim » 31.10.2019 05:50:32

Adrian писал(а):Может быть кто-то сталкивался с таким?

Там всё плохо.
Дело в том, что прежде чем открывать файл, нужно вручную добавлять и описывать поля таблицы. Это делается щёлканьем по компоненту правой кнопки мыши и выбора в меню пункта "Редактировать поля". Однако тут-то и засада - после попытки добавить поле, Лазарь падает... :D
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Старые учебные базы данных на Парадоксе

Сообщение A-B-V » 09.04.2021 17:16:20

Adrian писал(а):Спасибо за ответы.
Сегодня некогда и пару слов в ответ написать.

Есть поле InputEncoding, только для чтения. Там кодировка CP1252 (и другую не поставишь).
А в таблице, предполагаю (но не уверен), — CP1251.

И есть поле TargetEncoding. Я с ним "игрался" — ставил туда и UTF8, и ANSI, и CP1251... Нормальных русских букв не добился.


В файле "paradoxds.pas" добавьте строку
if (FHeader^.fileVersionID <= 4) or not (FHeader^.FileType in [0,2,3,5]) then
FFieldInfoPtr := @FHeader^.FieldInfo35
else begin
FFieldInfoPtr := @FHeader^.FieldInfo;
cp := FHeader^.DosCodePage;
// Добавлена строка ниже
cp :=1251; // чтобы можно было установить cp1251

FInputEncoding := 'CP' + IntToStr(cp);
end;
И увидите текст на кириллице)
A-B-V
незнакомец
 
Сообщения: 1
Зарегистрирован: 09.04.2021 17:10:41


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 18

Рейтинг@Mail.ru