![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 21.07.2011
Сообщений: 54
|
![]()
Естественно, что мини БД это громко сказано! На самом деле есть конструкция:
-------------------------------------------------------------------------- type TFieldName = array of ShortString;//массив имен полей таблицы type TFieldType = array of TTypes;//типи данных полей таблицы type THeading = record//заголовок таблицы FieldName:TFieldName;//имена полей таблицы FieldType:TFieldType;//типы полей таблицы end; type TCell=array of String;//одна ячейка это строка type TRow = array of TCell;//ячейки строки таблицы type TRows = array of TRow;//строки таблицы type TMyTable = record//таблица Title:ShortString;//имя таблицы Heading:THeading;//шапка таблицы Row:TRows;//рядки таблицы end; type TMyTabls = array of TMyTable;//одна с таблиц type TMyDB=^TMDB; TMDB = record Table:TMyTabls;//таблицы end; ------------------------------------------------------------------------ Можно ли эту конструкцию сохранять и читать без потери данных с файла. И вообще правильная ли реализация. Может у кого будет идея получше, выслушаю все! |
![]() |
![]() |
![]() |
#2 | |
Форумчанин
Регистрация: 11.04.2012
Сообщений: 212
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#3 |
Участник клуба
Регистрация: 19.12.2007
Сообщений: 1,100
|
![]()
вот в данном случае я за TClientDataSet
![]()
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ... ![]() |
![]() |
![]() |
![]() |
#4 |
Пользователь
Регистрация: 21.07.2011
Сообщений: 54
|
![]()
В том то й дело что это и есть учебная задача( а плюс самому интересно! Прошу помогите, или ссылки на ресурсы....
|
![]() |
![]() |
![]() |
#5 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
1) конструкция вида array of <что-то> в Delphi - это УКАЗАТЕЛЬ.
Писать его в файл абсолютно БЕССМЫСЛЕННО и БЕСПОЛЕЗНО! Если это Вам действительно необходимо, тогда можно для каждого типа написать процедуру сохранения, когда сначала записывается значение размерность массива, потом (в цикле) - элементы массива. При этом не забудьте, что элементы типа String (для AnsiString) - это по сути тоже указатели, каждая строчка в этом случае тоже должна записываться - сначала длина, потом содержимое строки. При чтении поступать обратным образом - считываем размерность, выделяем память, считываем элементы в выделенную память. Технически в этом нет никаких проблем. 2) а почему бы не воспользоваться ООП ? Классы - это те же структуры данных + методы их обработки. В качестве подобных методов в вашем случае будут процедуры сохранения/чтения. Цитата:
4) БД - это не только возможность что-то записать и прочитать. Это ещё возможность эффективно получать необходимые данные (наличие ключей, индексов и т.п.) и возможность эффективно манипулировать этими данными (ну представьте, что будет с файлом вашей "мини БД", если Вы добавите таблицу или удалите одну из таблиц... Прийдётся полностью перезаписывать ВСЕ данные? Или когда удалена одна строчка из таблицы - тоже перезапись всей БД ? p.s. всё это в Delphi давным давно реализовано. Можете "подглядывать" в исходники... |
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Динамические конструкции | San111 | Паскаль, Turbo Pascal, PascalABC.NET | 7 | 16.05.2012 09:27 |
Цикл конструкции Do While | Trimbl | Microsoft Office Excel | 2 | 29.02.2012 19:00 |
Интересные конструкции с++ | Sparky | Помощь студентам | 6 | 13.10.2011 22:47 |
циклические конструкции | nex 9119 | Помощь студентам | 1 | 18.12.2010 17:34 |
Вопрос по конструкции if() С++ | ROD | Помощь студентам | 2 | 20.12.2008 20:14 |