Таблица TDrawGrid и бд в текстовом файле

Вопросы программирования и использования среды Lazarus.

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

Таблица TDrawGrid и бд в текстовом файле

Сообщение Dark Ichigo » 12.03.2009 19:41:14

Новичок в программировании.

Задача:

Есть таблица TDrawGrid (Form1), есть форма (Form2). С помощью формы я заношу данные в бд (текстовый файл).
Вопрос состоит в том, что писать в процедуре сохранения данных формы, и как потом вывести эти данные в таблицу?
Например, есть combobox1. Как заставить отображаться сохранённое значение во второй строке в первом столбце?
Буду рад реальному примеру, потому как условные обозначения понимаю пока не всегда.

ps
Не могу в панели найти компонент TStringGrid. Может, посоветуете компоненты для таблиц?
Аватара пользователя
Dark Ichigo
новенький
 
Сообщения: 44
Зарегистрирован: 12.03.2009 19:06:51

Re: Таблица TDrawGrid и бд в текстовом файле

Сообщение Dark Ichigo » 25.05.2009 18:13:56

а) Через Вид/Компоненты Нашёл 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
новенький
 
Сообщения: 44
Зарегистрирован: 12.03.2009 19:06:51

Re: Таблица TDrawGrid и бд в текстовом файле

Сообщение Vadim » 25.05.2009 18:43:19

Dark Ichigo
//Сохранение контента таблицы и настроек в текстовый файл
StringGrid.SaveOptions:=[soDesign, soAttributes, soContent];
StringGrid.SaveToFile('sg.txt');

//Считывание содержимого из текстового файла в таблицу
StringGrid.LoadFromFile('sg.txt');
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Таблица TDrawGrid и бд в текстовом файле

Сообщение Dark Ichigo » 25.05.2009 20:55:46

ух ты! спасибо. буду пробовать.

Добавлено спустя 13 часов 56 минут 33 секунды:
сделал.

Пишет:

Project raised exception 'EXMLReadError' with message:
In 'file:db.txt': Root element is missing
Аватара пользователя
Dark Ichigo
новенький
 
Сообщения: 44
Зарегистрирован: 12.03.2009 19:06:51

Re: Таблица TDrawGrid и бд в текстовом файле

Сообщение Vadim » 26.05.2009 12:00:34

А Вы текстовый файл ручками, случайно, не подпортили?
Сохраните таблицу в текстовый файл, потом откройте в блокноте и посмотрите, как там всё должно быть.
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Таблица TDrawGrid и бд в текстовом файле

Сообщение Dark Ichigo » 26.05.2009 14:01:19

Да, правил руками, и всё было в порядке.

Данная ошибка выскакивает при компиляции. Так что таблицу сохранить я не смогу таким образом.
Аватара пользователя
Dark Ichigo
новенький
 
Сообщения: 44
Зарегистрирован: 12.03.2009 19:06:51

Re: Таблица TDrawGrid и бд в текстовом файле

Сообщение Vadim » 26.05.2009 14:38:25

Dark Ichigo писал(а):Данная ошибка выскакивает при компиляции.

Вы ничего не путаете? При компиляции нет и не может быть файла db.txt. Такая ошибка может быть только во время выполнения.
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Таблица TDrawGrid и бд в текстовом файле

Сообщение Dark Ichigo » 26.05.2009 16:45:08

Возможно, я не до конца объяснил.

Изначально у меня нет никакой таблицы. а есть файл db.txt для базы данных.

Т.е. файл чистый. Или там может быть заполнено произвольное количество строк. А как быть ещё?

При компиляции, как я понимаю, программа уже обращается к файлу. Я сужу по тому, что если я удаляю файл, при компиляции выдаётся ошибка об его отсутствии.
Аватара пользователя
Dark Ichigo
новенький
 
Сообщения: 44
Зарегистрирован: 12.03.2009 19:06:51

Re: Таблица TDrawGrid и бд в текстовом файле

Сообщение Mr.Smart » 26.05.2009 17:04:38

Дело в том, что StringGrid для хранения использует файл XML формата, а не простой текстовый файл!
Пустой XML это файл содержащий "сигнатуру XML"
Код: Выделить всё
<?xml version="1.0"?>

если этого текста не будет в файле то будет эксцепшен EXMLReadError

Добавлено спустя 55 секунд:
И вот ещё: почитайте где нибудь, что такое компиляция!
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: Таблица TDrawGrid и бд в текстовом файле

Сообщение Vadim » 26.05.2009 17:43:13

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

Re: Таблица TDrawGrid и бд в текстовом файле

Сообщение Dark Ichigo » 27.05.2009 17:51:58

Я понял. Надо было сначала убрать процедуру загрузки файла вообще.

Сделал процедуру сохранения StringGrid1.SaveToFile('db.txt'). Сделал StringGrid, заполнил, сохранил. В файле получилась новая структура записи данных. Затем добавил новую процедуру загрузки. И ву-ра-ля! Готово.

Спасибо всем.
Аватара пользователя
Dark Ichigo
новенький
 
Сообщения: 44
Зарегистрирован: 12.03.2009 19:06:51

Re: Таблица TDrawGrid и бд в текстовом файле

Сообщение Attid » 29.05.2009 15:21:15

Dark Ichigo писал(а):Надо было сначала убрать процедуру загрузки файла вообще.

надо делать проверку наличия файла, если нет то загружать не надо, или вообще этот кусок процедуры взять в try except и заполянять его дефолтными данными
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2585
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E


Вернуться в Lazarus

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

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

Рейтинг@Mail.ru