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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 11.05.2010, 17:08
Alinka27 Alinka27 вне форума
Прохожий
 
Регистрация: 11.05.2010
Сообщения: 7
Репутация: 10
По умолчанию Сохранение содержимого StringGrid в текстовый файл

Здраствуйте!!!

Помогите пожалуйста!!!Сижу уже неделю, не могу сделать!Мне надо сохранить содержимое StringGrid (2 столбца и 15 строк) с помощью OpenDialog в текстовый файл. И в последующем можно было открыть в этот же StringGrid любой текстовый файл!!! Всё испробовала!Не получается
Ответить с цитированием
  #2  
Старый 11.05.2010, 17:29
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,239
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
По умолчанию

Цитата:
Сообщение от Alinka27
Здраствуйте!!!

Помогите пожалуйста!!!Сижу уже неделю, не могу сделать!Мне надо сохранить содержимое StringGrid (2 столбца и 15 строк) с помощью OpenDialog в текстовый файл. И в последующем можно было открыть в этот же StringGrid любой текстовый файл!!! Всё испробовала!Не получается
*Телепатически получаю исходник программы...*
Проблема всяко в 73 строке!

А теперь без шуток. За Вас накто тут писать не будет. Говорите сразу, что не получается, как пытаетесь, и так далее.

Что могу сказать по сообщению:
1. OpenDialog используется при открытии (open), а не сохранении (save) файла. Используйте SaveDialog.
2. ****Dialog-и ничего не открывают и не сохраняют, они лишь помогают получить имя файла от пользователя.
3. StringGrid сам никуда сохраняться не умеет - вам надо написать два вложенных цикла, и в них "перепарсить" грид в тот же StringList. А после этого уже
Код:
StringList.SaveToFile(SaveDialog1.FileName);
__________________
Оставайтесь хорошими людьми...
VK id2634397, ds [at] phoenix [dot] dj
Ответить с цитированием
  #3  
Старый 11.05.2010, 17:43
Alinka27 Alinka27 вне форума
Прохожий
 
Регистрация: 11.05.2010
Сообщения: 7
Репутация: 10
По умолчанию

Извините, что не понятно написала!Ниже код, для открытия! Он открывает только i-ый столбец, j-ую не могу открыть((((

Код:
procedure TForm1.N2Click(Sender: TObject);
var
i: integer;
InFile: TextFile; //текстовый файл для идентификации файла
fname, InString: String; //строковые перменные , fname- текст для имени файла
begin
If OpenDialog1.Execute then
begin
fname:=OpenDialog1.FileName;
AssignFile(InFile,fname); //имя файла его определяет из OpenDialog1
Reset(InFile); //открывает существующий файл
i:=0;
While not Eof(InFile) do
Begin
Readln(InFile,InString);
a[i]:= StrToInt(InString);
stringGrid1.Cells[0,i]:=IntToStr(a[i]);
i:=i+1;
    end;
Admin: Пользуемся тегами!

Последний раз редактировалось Admin, 11.05.2010 в 20:29.
Ответить с цитированием
  #4  
Старый 11.05.2010, 17:50
Alinka27 Alinka27 вне форума
Прохожий
 
Регистрация: 11.05.2010
Сообщения: 7
Репутация: 10
По умолчанию

Пробовала анологично сделать j-ый столбец, он не получается, то ошибка, то он всё открывает в i-ом столбце соединяя числа!
Ответить с цитированием
  #5  
Старый 11.05.2010, 21:03
Аватар для NIch
NIch NIch вне форума
Продвинутый
 
Регистрация: 02.06.2008
Адрес: Бендеры ПМР
Сообщения: 754
Репутация: 2446
По умолчанию

Можно так...
Код:
// Save a TStringGrid to a file 

procedure SaveStringGrid(StringGrid: TStringGrid; const FileName: TFileName);
 var
   f:    TextFile;
   i, k: Integer;
 begin
   AssignFile(f, FileName);
   Rewrite(f);
   with StringGrid do
   begin
     // Write number of Columns/Rows 
    Writeln(f, ColCount);
     Writeln(f, RowCount);
     // loop through cells 
    for i := 0 to ColCount - 1 do
       for k := 0 to RowCount - 1 do
         Writeln(F, Cells[i, k]);
   end;
   CloseFile(F);
 end;

 // Load a TStringGrid from a file 

procedure LoadStringGrid(StringGrid: TStringGrid; const FileName: TFileName);
 var
   f:          TextFile;
   iTmp, i, k: Integer;
   strTemp:    String;
 begin
   AssignFile(f, FileName);
   Reset(f);
   with StringGrid do
   begin
     // Get number of columns 
    Readln(f, iTmp);
     ColCount := iTmp;
     // Get number of rows 
    Readln(f, iTmp);
     RowCount := iTmp;
     // 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;


 // Save StringGrid1 to 'c:\temp.txt': 

procedure TForm1.Button1Click(Sender: TObject);
 begin
   SaveStringGrid(StringGrid1, 'c:\temp.txt');
 end;

 // Load StringGrid1 from 'c:\temp.txt': 

procedure TForm1.Button2Click(Sender: TObject);
 begin
   LoadStringGrid(StringGrid1, 'c:\temp.txt');
 end;
__________________
В начале был Бит, потом Байт и только потом появилось Слово...
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

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