Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 2 628

/ вопрос решён /

Здравствуйте, уважаемые эксперты!
Подскажите пожалуйста как сохранить данные со StringGrid в текстовый файл?
Делаю, но сохраняется ток последняя строка?

Приложение:
  1. for i:=1 to 4 do begin
  2. with SaveDialog1 do
  3. if Execute then
  4. begin
  5. StringGrid1.Rows[i].SaveToFile(FileName);
  6. end;
  7. end;
  8. end;


Grom48 Вопрос решён, но можно продолжить его обсуждение в мини-форуме

Вопрос задал: Grom48 (статус: Посетитель)
Вопрос отправлен: 13 апреля 2009, 18:34
Состояние вопроса: решён, ответов: 2.

Ответ #1. Отвечает эксперт: Dron

Здравствуйте, Grom48!
Ну ещё бы. SaveToFile сохраняет весь TStringList в файл, перезаписывая его. А ваш код просто 4 раза "мучает" файл. К тому же, непонятно, зачем вызывать диалог в цикле. По логике, он нужен всего один раз.
В приложении 2 функции - для сохранения содержимого StringGrid в текстовый файл, и для загрузки его оттуда. Функции универсальные и работают независимо от числа столбцов/строк конкретного StringGrid.

Приложение:
  1. procedure SaveGrid(stringgrid: tstringgrid; fn: string);
  2. var
  3. f: textfile;
  4. x, y: integer;
  5. begin
  6. assignfile(f, fn);
  7. rewrite(f);
  8. writeln(f, stringgrid.colcount);
  9. writeln(f, stringgrid.rowcount);
  10. for X := 0 to stringgrid.colcount - 1 do
  11. for y := 0 to stringgrid.rowcount - 1 do
  12. writeln(F, stringgrid.cells[x, y]);
  13. closefile(f);
  14. end;
  15.  
  16. procedure LoadGrid(stringgrid: tstringgrid; fn: string);
  17. var
  18. f: textfile;
  19. temp, x, y: integer;
  20. tempstr: string;
  21. begin
  22. assignfile(f, fn);
  23. reset(f);
  24. readln(f, temp);
  25. stringgrid.colcount := temp;
  26. readln(f, temp);
  27. stringgrid.rowcount := temp;
  28. for X := 0 to stringgrid.colcount - 1 do
  29. for y := 0 to stringgrid.rowcount - 1 do
  30. begin
  31. readln(F, tempstr);
  32. stringgrid.cells[x, y] := tempstr;
  33. end;
  34. closefile(f);
  35. end;


Ответ отправил: Dron (статус: Студент)
Время отправки: 13 апреля 2009, 18:39
Оценка за ответ: 5

Ответ #2. Отвечает эксперт: min@y™

Ну ващще!
Посмотри вот сюда, там пример функции сохранения содержимого грида в текстовый файл.

Ответ отправил: min@y™ (статус: Доктор наук)
Время отправки: 13 апреля 2009, 18:46
Оценка за ответ: 5


Мини-форум вопроса

Всего сообщений: 3; последнее сообщение — 13 апреля 2009, 19:24; участников в обсуждении: 3.
Grom48

Grom48 (статус: Посетитель), 13 апреля 2009, 19:01 [#1]:

а как это сделать чтоб сохранял в определённое место на диске, которое задаётся во время работы программы
Dron

Dron (статус: Студент), 13 апреля 2009, 19:04 [#2]:

В функциях, которые я привёл, вторым параметром задаётся именно путь к файлу. Первым - StringGrid, с которым работаем.
С уважением.
min@y™

min@y™ (статус: Доктор наук), 13 апреля 2009, 19:24 [#3]:

Цитата:


В функциях, которые я привёл, вторым параметром задаётся именно путь к файлу. Первым - StringGrid, с которым работаем.


Я тоже.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!

31 января 2011, 19:36: Статус вопроса изменён на решённый (изменил модератор Ерёмин А.А.): Автоматическая обработка (2 и более ответов с оценкой 5)

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:57
Выполнено за 0.03 сек.