Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 31.03.2009, 17:50
Аватар для rasamaha
rasamaha rasamaha вне форума
Прохожий
 
Регистрация: 28.03.2009
Сообщения: 19
Репутация: 10
Вопрос Как записать содержимое StringGrid в файл?

Помогите пожалуйста!
После запуска программы из Edit заполняется таблица StringGrid.
Нужно записать содержимое StringGrid в файл, сохранить его на жестком диске, а затем при запуске программы таблица заполняется из этого файла.
Я начинающий совсем, и инфу об этом не нашел...
Можно ли записать в файл *.csb или нужет обязательно *.txt ?
Ответить с цитированием
  #2  
Старый 31.03.2009, 18:00
Nyctos Kasignete Nyctos Kasignete вне форума
Активный
 
Регистрация: 29.03.2009
Сообщения: 300
Репутация: 94
По умолчанию

Независимо от формата, в котором вы будете сохранять, реализовать программно придется самостоятельно, т.к., насколько я знаю, в объекте TStringGrid не предусмотрены методы сохранения в файл и загрузки из файла.
Ответить с цитированием
  #3  
Старый 31.03.2009, 18:13
Аватар для rasamaha
rasamaha rasamaha вне форума
Прохожий
 
Регистрация: 28.03.2009
Сообщения: 19
Репутация: 10
По умолчанию

может тогда сохранить содержимое в стоке или например в Мemo, а уже от туда в файл?
Но я так и не понял как записать в файл из Memo...
вот в чем моя беда))
если это в двух словах не объяснить, можно хотябы пример кода и ссылку, где можно об этом прочитать?
Зараннее благодарен!
Ответить с цитированием
  #4  
Старый 31.03.2009, 18:48
Nyctos Kasignete Nyctos Kasignete вне форума
Активный
 
Регистрация: 29.03.2009
Сообщения: 300
Репутация: 94
По умолчанию

rasamaha, начнем с простого... =))
Записать текстовый файл из Memo можно единственной строчкой кода:
Код:
Memo1.Lines.SaveToFile('C:\Directory\File.txt');
Загружать в Memo так:
Код:
Memo1.Lines.LoadFromFile('C:\Directory\File.txt');

Проблема-то не в этом. Вам придется вытаскивать значения из ячеек StringGrid'а. Это уже менее приятно. Вот такая процедурка заполняет Memo значениями из ячеек StringGrid'а:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  i, LastRow: Integer;
begin
  LastRow := StringGrid1.RowCount - 1;
  for i := 0 to LastRow do
    Memo1.Lines.Add(StringGrid1.Rows[i].CommaText);
end;
С записью из Memo в StringGrid тоже подумаю, если хотите.

Последний раз редактировалось Nyctos Kasignete, 31.03.2009 в 18:52.
Ответить с цитированием
  #5  
Старый 31.03.2009, 18:49
Nyctos Kasignete Nyctos Kasignete вне форума
Активный
 
Регистрация: 29.03.2009
Сообщения: 300
Репутация: 94
По умолчанию

Не знаю, как удалить случайно продублированное сообщение =(
Потом отредактирую новым ответом, что-ли?!

Последний раз редактировалось Nyctos Kasignete, 31.03.2009 в 18:51.
Ответить с цитированием
  #6  
Старый 31.03.2009, 18:54
BloodFooria BloodFooria вне форума
Новичок
 
Регистрация: 30.10.2008
Адрес: Улан-Удэ
Сообщения: 81
Репутация: 10
По умолчанию

Да, написать цикл в цикле, я так раньше и сохранял данные из StringGrid'а.
Можно поиздеваться и сделать так, чтобы сохранялась таблица как-есть (со всеми линиями и т.п.) с помощью псевдографики, но это уже, ИМХО, извращение Только если нужно будет потом этим самым файлом пользоваться.
__________________
Auta i Lome...
Ответить с цитированием
  #7  
Старый 31.03.2009, 18:59
Nyctos Kasignete Nyctos Kasignete вне форума
Активный
 
Регистрация: 29.03.2009
Сообщения: 300
Репутация: 94
По умолчанию

Кстати, Memo использовать необязательно!! Можно записывать строки из StringGrid'а в переменную типа TStringList, а ее уже сохранять в файл:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  i, LastRow: Integer;
  SList: TStringList;
begin
  SList := TStringList.Create;
  LastRow := StringGrid1.RowCount - 1;
  try
    for i := 0 to LastRow do
      SList.Add(StringGrid1.Rows[i].CommaText);
    SList.SaveToFile('C:\Directory\File.csv');
  finally
    SList.Free;
  end;
end;
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 01:27.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter