Таблица TDrawGrid и бд в текстовом файле
Модератор: Модераторы
- Dark Ichigo
- новенький
- Сообщения: 44
- Зарегистрирован: 12.03.2009 18:06:51
- Контактная информация:
Таблица TDrawGrid и бд в текстовом файле
Новичок в программировании.
Задача:
Есть таблица TDrawGrid (Form1), есть форма (Form2). С помощью формы я заношу данные в бд (текстовый файл).
Вопрос состоит в том, что писать в процедуре сохранения данных формы, и как потом вывести эти данные в таблицу?
Например, есть combobox1. Как заставить отображаться сохранённое значение во второй строке в первом столбце?
Буду рад реальному примеру, потому как условные обозначения понимаю пока не всегда.
ps
Не могу в панели найти компонент TStringGrid. Может, посоветуете компоненты для таблиц?
Задача:
Есть таблица TDrawGrid (Form1), есть форма (Form2). С помощью формы я заношу данные в бд (текстовый файл).
Вопрос состоит в том, что писать в процедуре сохранения данных формы, и как потом вывести эти данные в таблицу?
Например, есть combobox1. Как заставить отображаться сохранённое значение во второй строке в первом столбце?
Буду рад реальному примеру, потому как условные обозначения понимаю пока не всегда.
ps
Не могу в панели найти компонент TStringGrid. Может, посоветуете компоненты для таблиц?
- Dark Ichigo
- новенький
- Сообщения: 44
- Зарегистрирован: 12.03.2009 18:06:51
- Контактная информация:
а) Через Вид/Компоненты Нашёл TStringGrid в Лазаре, потому отпала нужда в TDrawGrid.
б) Сделал так:
б) Сделал так:
Код: Выделить всё
...
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
StdCtrls, Menus, ComCtrls, Grids, ExtCtrls; //на всякий случай, здесь указал всё, что было в моём проекте
type
{ TForm1 }
TForm1 = class(TForm)
StringGrid1: TStringGrid;
...
procedure TForm1.FormCreate(Sender: TObject);
var
f: TextFile;
i, k: Integer;
strTemp: String;
begin
AssignFile(f, 'db.txt');
Reset(f);
with StringGrid1 do
begin
// loop through cells & fill in values
for i := 0 to ColCount - 1 do
for k := 0 to RowCount - 1 do
begin
Readln(f, strTemp);
Cells[i, k] := strTemp;
end;
end;
CloseFile(f);
end;
Последний раз редактировалось Dark Ichigo 26.05.2009 09:24:07, всего редактировалось 1 раз.
Dark Ichigo
//Сохранение контента таблицы и настроек в текстовый файл
StringGrid.SaveOptions:=[soDesign, soAttributes, soContent];
StringGrid.SaveToFile('sg.txt');
//Считывание содержимого из текстового файла в таблицу
StringGrid.LoadFromFile('sg.txt');
//Сохранение контента таблицы и настроек в текстовый файл
StringGrid.SaveOptions:=[soDesign, soAttributes, soContent];
StringGrid.SaveToFile('sg.txt');
//Считывание содержимого из текстового файла в таблицу
StringGrid.LoadFromFile('sg.txt');
- Dark Ichigo
- новенький
- Сообщения: 44
- Зарегистрирован: 12.03.2009 18:06:51
- Контактная информация:
ух ты! спасибо. буду пробовать.
Добавлено спустя 13 часов 56 минут 33 секунды:
сделал.
Пишет:
Добавлено спустя 13 часов 56 минут 33 секунды:
сделал.
Пишет:
Project raised exception 'EXMLReadError' with message:
In 'file:db.txt': Root element is missing
А Вы текстовый файл ручками, случайно, не подпортили?
Сохраните таблицу в текстовый файл, потом откройте в блокноте и посмотрите, как там всё должно быть.
Сохраните таблицу в текстовый файл, потом откройте в блокноте и посмотрите, как там всё должно быть.
- Dark Ichigo
- новенький
- Сообщения: 44
- Зарегистрирован: 12.03.2009 18:06:51
- Контактная информация:
Да, правил руками, и всё было в порядке.
Данная ошибка выскакивает при компиляции. Так что таблицу сохранить я не смогу таким образом.
Данная ошибка выскакивает при компиляции. Так что таблицу сохранить я не смогу таким образом.
Dark Ichigo писал(а):Данная ошибка выскакивает при компиляции.
Вы ничего не путаете? При компиляции нет и не может быть файла db.txt. Такая ошибка может быть только во время выполнения.
- Dark Ichigo
- новенький
- Сообщения: 44
- Зарегистрирован: 12.03.2009 18:06:51
- Контактная информация:
Возможно, я не до конца объяснил.
Изначально у меня нет никакой таблицы. а есть файл db.txt для базы данных.
Т.е. файл чистый. Или там может быть заполнено произвольное количество строк. А как быть ещё?
При компиляции, как я понимаю, программа уже обращается к файлу. Я сужу по тому, что если я удаляю файл, при компиляции выдаётся ошибка об его отсутствии.
Изначально у меня нет никакой таблицы. а есть файл db.txt для базы данных.
Т.е. файл чистый. Или там может быть заполнено произвольное количество строк. А как быть ещё?
При компиляции, как я понимаю, программа уже обращается к файлу. Я сужу по тому, что если я удаляю файл, при компиляции выдаётся ошибка об его отсутствии.
Дело в том, что StringGrid для хранения использует файл XML формата, а не простой текстовый файл!
Пустой XML это файл содержащий "сигнатуру XML"
если этого текста не будет в файле то будет эксцепшен EXMLReadError
Добавлено спустя 55 секунд:
И вот ещё: почитайте где нибудь, что такое компиляция!
Пустой XML это файл содержащий "сигнатуру XML"
Код: Выделить всё
<?xml version="1.0"?>если этого текста не будет в файле то будет эксцепшен EXMLReadError
Добавлено спустя 55 секунд:
И вот ещё: почитайте где нибудь, что такое компиляция!
Давайте я Вам второй раз повторю совет, а Вы, через "немогу", попытаетесь его выполнить, иначе помогать Вам больше нет никакого смысла. 
Vadim писал(а):Сохраните таблицу в текстовый файл, потом откройте в блокноте и посмотрите, как там всё должно быть.
- Dark Ichigo
- новенький
- Сообщения: 44
- Зарегистрирован: 12.03.2009 18:06:51
- Контактная информация:
Я понял. Надо было сначала убрать процедуру загрузки файла вообще.
Сделал процедуру сохранения StringGrid1.SaveToFile('db.txt'). Сделал StringGrid, заполнил, сохранил. В файле получилась новая структура записи данных. Затем добавил новую процедуру загрузки. И ву-ра-ля! Готово.
Спасибо всем.
Сделал процедуру сохранения StringGrid1.SaveToFile('db.txt'). Сделал StringGrid, заполнил, сохранил. В файле получилась новая структура записи данных. Затем добавил новую процедуру загрузки. И ву-ра-ля! Готово.
Спасибо всем.
- Attid
- долгожитель
- Сообщения: 2589
- Зарегистрирован: 27.10.2006 17:29:15
- Откуда: 44°32′23.63″N 41°2′25.2″E
- Контактная информация:
Dark Ichigo писал(а):Надо было сначала убрать процедуру загрузки файла вообще.
надо делать проверку наличия файла, если нет то загружать не надо, или вообще этот кусок процедуры взять в try except и заполянять его дефолтными данными
