Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Cохранение StringGrid [D7, WinXP]


Страницы:   1 2

tamagavk ©   (2004-06-21 15:57:00) 

У меня такая проблема: У меня есть таблица с какими-то данными, как мне сделать так, чтобы при выходе из программы все табличные данные сохранялись (наверно сохранялись в файл, а может я и не прав) и чтобы при следующем запуске программы все мои данные былы в таблице.Конечно сформулировал по-тупому, но думаю вы меня поняли. Желательно привести пример.Заранне спасибо.


zep   (2004-06-25 00:51:00) [1]

ExtractFilePath(ParamStr(0))
показывает путь к папке в какой экзешник твоей проги там пусть и лежит твой фаил


Amoeba   (2004-06-22 17:31:00) [2]


> нету книжки

Если нужны книжки в эл. виде - то на сайте А.Подгорецкого их куча.


begin...end   (2004-06-22 17:12:00) [3]

ИМХО, хреновая это затея с поиском файла по всему диску.


Digitman   (2004-06-22 17:06:00) [4]


> tamagavk   (22.06.04 16:58) [30]


ну до чего ж ты упрямый !

пример использования FindFirst/FindNext есть в стандартной справке, привыкай ей пользоваться в первую очередь


tamagavk   (2004-06-22 16:58:00) [5]

нету книжки - наощуп.  А если бы привели пример использования поиска или нужную ссылку - был бы очень благодарен.


Digitman   (2004-06-22 16:56:00) [6]


> если я дам файлу такое имя, которого точно не будет на чужом
> компьютере?  Ну можно же поиск файла применить?Нет?


да можно все ! но, уверяю тебя, не стоит этим заниматься ... что это за программа такая, рабочие файлы которой разбросаны где ни попадя ? все, что касается непосредственно программы (речь не идет о системных библиотеках/модулях), должно лежать либо в предопределенном каталоге либо там, куда укажет сам юзер .. задача программы - "помнить" путь к этому каталогу и имя файла в нем


> Если LoadFromFile использовать окно при запуске программы
> не будет выводиться?


этот метод не имеет никакого отношения к "окну при запуске программы" - диалог этот выводится при исполнении метода OpenDialog1.Execute , а не LoadFromFile


> пишет ошибку fmRead - неизвестный идентификатор.


писал навскидку .. это так сложно посмотреть в справке к методу TFilestream.Create() корректное имя идентификатора ? fmOpenRead этот параметр должен быть


> поподробнее насчет StringList. Где его вставлять и как его
> использовать?


да не нужно тебе это ... я ж показал тебе, как выгрузить и загрузить колонки с пом. файлового потока TFileStream


BFG9k   (2004-06-22 16:47:00) [7]

FindFirst , FindNext  - поиск файла по маске. Почитал бы чтоли книжку по дельфям сначала...


tamagavk   (2004-06-22 16:34:00) [8]

>да мало ли на дисках может оказаться файлов с именем 1.txt !

А если я дам файлу такое имя, которого точно не будет на чужом компьютере?  Ну можно же поиск файла применить?Нет?

В примере, который вы мне предлагаете пишет ошибку fmRead - неизвестный идентификатор.

Если LoadFromFile использовать окно при запуске программы не будет выводиться? Если не будет, то можно поподробнее насчет StringList. Где его вставлять и как его использовать?


Digitman   (2004-06-22 15:57:00) [9]


> tamagavk   (22.06.04 15:20) [25]
> Ну же!!!


не нукай ... не запряг ..


> LoadFromFile(OpenDialog1.FileName);
>
> пишет неизвестный идентификатор


конечно неизвестный ! LoadFromFile у тебя это что ? метод ! раз метод, то какого объекта ? ты же не указал конкретный объект, чей метод LoadFromFile ты пытаешься вызвать ... в дан.случае, наверно, это должен быть объект класса-наследника TStrings, например, TStringList


> Как, напрмер, написать чтобы не выводилось окно, где указывать
> путь, а программа сама искала текстовой файл и загружала
> его


да мало ли на дисках может оказаться файлов с именем 1.txt ! Что ж программе прикажешь делать, если таких файлов более одного найдется ? Какой прикажешь файл использовать ?

думаю, ты не делом занялся ..

при старте программы она должна попытаться открыть, например, в текущем каталоге файл 1.txt для чтения/записи ... если файл отсутствует, он тут же будет создан

var
fs: TFilestream;

..

при завершении программы запишем в файл содержимое грида
fs := TFilestream.Create('1.txt', fmCreate);
try
for i:= 0 to Grid.ColCount - 1 do
  Grid.Cols[i].SaveToStream(fs);
finally
fs.Free;
end;

при старте программы прочитаем из файла созраненное ранее содержимое грида
try
//пытаемся открыть файл для чтения
fs := TFilestream.Create('1.txt', fmRead);
//успешно открыли
try
 // пытаемся прочитать из файла содержимое колонок грида
 try
  for i:= 0 to Grid.ColCount - 1 do
   Grid.Cols[i].LoadFromStream(fs);
 finally
  fs.Free;
 end;
except
//в файле черт-те что, но только не то что ожидалось
end;
except
//файла нет - ничего страшного, грид будет пустой
end;


tamagavk   (2004-06-22 15:20:00) [10]

Удалено модератором


tamagavk   (2004-06-22 14:56:00) [11]

Почему не получается когда пишу это:

If OpenDialog1.Execute then begin
...
LoadFromFile(OpenDialog1.FileName);

пишет неизвестный идентификатор. Как, напрмер, написать чтобы не выводилось окно, где указывать путь, а программа сама искала текстовой файл и загружала его


tamagavk   (2004-06-22 14:41:00) [12]

ЭТО КТО ЕЩЕ НЕ ПОЙМЕТ!!! . Вот по-человечески объяснили и все получилось. РАБОТАЕТ. Всем спасибо.


BFG9k   (2004-06-22 14:38:00) [13]

Думаю , начинающий не поймет , но кажется это тот самый момент  ,когда можно использовать DBGrid вместе со стандартной базой данных.

P.S.: "...сохранялись (наверно сохранялись в файл, а может я и не прав)" - а куда ж еще ?:))


Andy BitOff   (2004-06-22 14:25:00) [14]

Закладка Dialogs компонент OpenDialog кидаешь на форму, настраиваешь (я думаю с фильтрами разберешься) на кнопку вешаешь;

If OpenDialog1.Execute then begin
 ...
 OpenDialog1.FileName; // имя выбранного файла
end;


evvcom   (2004-06-22 14:23:00) [15]

Ну ладно вам над ребенком издеваться. :-)
На закладке Dialogs компонент OpenDialog.


tamagavk   (2004-06-22 14:20:00) [16]

Ну я же начинающий . Вы думаете, можно все знать?


Andy BitOff   (2004-06-22 14:02:00) [17]

Че за диалог выбора файла? Можете привести код.

НУ ЗНАЕШЬ !!!...


tamagavk   (2004-06-22 13:58:00) [18]

Че за диалог выбора файла? Можете привести код.

Я написал вот это:

Procedure

SaveGrid;
var f:textfile;
x,y:integer;
begin
assignfile (f, 'С:\1.txt' );
rewrite (f);
writeln (f,stringgrid.colcount);
writeln (f,stringgrid.rowcount);
For X:= 0 to stringgrid.colcount- 1 do

For y:= 0 to stringgrid.rowcount- 1 do

writeln (F, stringgrid.cells[x,y]);
closefile (f);
end ;

Procedure LoadGrid;
var f:textfile;
temp,x,y:integer;
tempstr: string ;
begin
assignfile (f, 'С:\1.txt' );
reset (f);
readln (f,temp);
stringgrid.colcount:=temp;
readln (f,temp);
stringgrid.rowcount:=temp;
For X:= 0 to stringgrid.colcount- 1 do

For y:= 0 to stringgrid.rowcount- 1 do begin

readln (F, tempstr);

stringgrid.cells[x,y]:=tempstr;

end ;

closefile (f);
end;

Куда и чего нужно вставлять?


Anatoly Podgoretsky   (2004-06-22 13:57:00) [19]

Не царское это дело таскать файл, программа должна его создать при первом использовании.


Andy BitOff   (2004-06-22 13:47:00) [20]

А ты сделай так, чтобы программа запустилась, но StringGrid при этом остался пустым (раз нет файла) или при переносе программы захвати с собой и текстовой файл.
Неужели это так сложно?


Пользователи наверно будут класть файл в нужную для себя дирректорию.   КАК БЫТЬ?

Добавить диалог выбора файла.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо