С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Builder
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.68/31: Рейтинг темы: голосов - 31, средняя оценка - 4.68
Samrisbe
1352 / 722 / 66
Регистрация: 28.01.2011
Сообщений: 1,979
1

Сохранить из StringGrid в новый файл

11.07.2011, 11:13. Просмотров 5746. Ответов 11
Метки нет (Все метки)

Добрый день! Ребят столкнулся с ошибкой при сохранении из StringGrid в новый файл.
Делаю так:

загружаю шаблон
C++
1
2
3
4
5
6
Table1->LoadFromFile(file1) ;
   StringGrid1->RowCount = Table1->Count ;
   for(int i = 0 ; i<StringGrid1->RowCount ; i++)
   {
   StringGrid1->Rows[i]->DelimitedText = Table1->Strings[i] ;
   }
Затем редактирую

И пытаюсь сохранить в новый фаил
C++
1
2
3
4
5
6
7
if (SaveDialog1->Execute())
   for(int i = 0 ; i<StringGrid1->RowCount ; i++)
   {
   Table1->Strings[i] = StringGrid1->Rows[i]->DelimitedText  ;
   Table1->SaveToFile(SaveDialog1->FileName) ;
   StringGrid1->Options = StringGrid1->Options >> goEditing;
   }
И когда ввожу новое название он выдает такую ошибку

Может есть вариант по лучше?
0
Миниатюры
Сохранить из StringGrid в новый файл  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.07.2011, 11:13
Ответы с готовыми решениями:

Сохранить данные из StringGrid-a в файл
есть StringGrid с данными. как сохранить эти данные в текстовый файл? как...

Не получается сохранить данные из StringGrid в файл
Не получается сохранить данные из StringGrid в файл Заранее спасибо за...

Сохранить таблицу StringGrid в текстовый файл
На основе стандартного шаблона SDI-приложения реализуйте приложение сохранение...

Есть структура, как сохранить в файл из StringGrid
Есть структура struct spisok { char names; //Имя ...

Добавить новую строку в StringGrid таблицу и сохранить в текстовый файл
Нужно добавить нового параллепипеда в таблицу StringGrid (код любые цифры,...

11
bodik21
16 / 4 / 0
Регистрация: 23.06.2011
Сообщений: 19
11.07.2011, 15:00 2
Почему вы используете метод SaveToFile в цикле, а не после обработки всех данных только один раз сохранить? И почему вы сохраняеете table а не StringGrid. Я Пользуюсь гридом от TMS там нормально работает метод сохранения, но не помню есть ли он в стандартном.
1
Samrisbe
1352 / 722 / 66
Регистрация: 28.01.2011
Сообщений: 1,979
11.07.2011, 15:26  [ТС] 3
Цитата Сообщение от bodik21 Посмотреть сообщение
Почему вы используете метод SaveToFile в цикле, а не после обработки всех данных только один раз сохранить? И почему вы сохраняеете table а не StringGrid. Я Пользуюсь гридом от TMS там нормально работает метод сохранения, но не помню есть ли он в стандартном.
Короткий пример продемонстрируйте плиз.
0
bodik21
16 / 4 / 0
Регистрация: 23.06.2011
Сообщений: 19
11.07.2011, 15:37 4
C++
1
2
3
4
5
6
7
8
9
10
//обработка записей
//.....
 
 
//сохранение содержимого StringGrid1 в файл
if (SaveDialog1->Execute())
 { 
   StringGrid1->SaveToFile(SaveDialog1->FileName) ;
  
 }
Повторюсь еще раз, не помню есть ли метод SaveToFile в стандартном StringGrid.
И еще малый момент, зачем вам Table1?
1
Samrisbe
1352 / 722 / 66
Регистрация: 28.01.2011
Сообщений: 1,979
11.07.2011, 16:18  [ТС] 5
Цитата Сообщение от bodik21 Посмотреть сообщение
Почему вы используете метод SaveToFile в цикле, а не после обработки всех данных только один раз сохранить? И почему вы сохраняеете table а не StringGrid. Я Пользуюсь гридом от TMS там нормально работает метод сохранения, но не помню есть ли он в стандартном.
Короткий пример продемонстрируйте плиз.
0
QVO
644 / 455 / 80
Регистрация: 26.10.2010
Сообщений: 1,263
Записей в блоге: 4
Завершенные тесты: 3
11.07.2011, 16:39 6
Samrisbe, водка - зло
C++
1
2
3
4
5
6
7
   for(int i = 0 ; i<StringGrid1->RowCount ; i++)
   {
   Table1->Strings[i] = StringGrid1->Rows[i]->DelimitedText  ;
   }
if (SaveDialog1->Execute())
   Table1->SaveToFile(SaveDialog1->FileName) ;
   StringGrid1->Options = StringGrid1->Options >> goEditing;
2
Samrisbe
1352 / 722 / 66
Регистрация: 28.01.2011
Сообщений: 1,979
11.07.2011, 17:42  [ТС] 7
не потеме Я чесно говоря не пью водку, водка напиток Фстерикса из голии

Подскажите мне ту...у, как осуществить закрытие файла, чтоб помимо сохранения еще StringGrid очистить.
Слезно умоляю!
0
QVO
644 / 455 / 80
Регистрация: 26.10.2010
Сообщений: 1,263
Записей в блоге: 4
Завершенные тесты: 3
11.07.2011, 18:00 8
Samrisbe, я обычно после праздников плохо соображаю. Прости.

C++
1
2
3
4
 for(int i = 0; i < fStringGrid->RowCount; i++)
        {
        fStringGrid->Rows[i]->Clear();
        }
1
Samrisbe
1352 / 722 / 66
Регистрация: 28.01.2011
Сообщений: 1,979
11.07.2011, 22:16  [ТС] 9
Примного благодарен всем вам моим учителям С++!

Все выше написанные функции работают отлично!

Добавлено через 10 минут
Цитата Сообщение от bodik21 Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
//обработка записей
//.....
 
 
//сохранение содержимого StringGrid1 в файл
if (SaveDialog1->Execute())
 { 
   StringGrid1->SaveToFile(SaveDialog1->FileName) ;
  
 }
Повторюсь еще раз, не помню есть ли метод SaveToFile в стандартном StringGrid.
И еще малый момент, зачем вам Table1?
Вот такую шибку выдает

[C++ Error] Unit1.cpp(98): E2316 'SaveToFile' is not a member of 'TStringGrid'
0
proger
2 / 2 / 0
Регистрация: 08.09.2008
Сообщений: 15
12.07.2011, 12:08 10
Как-то тоже писал прогу с использованием StringGrid,писал в Delphi 7, мне нужно было сохранить в формате таблицы с разделителями ";", может поможет:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
  //TSaveDialog SD;
  File ff;
  int i,j;
  String FileName;
begin
  Try
 
  SD := TSaveDialog.Create(Form1);
  SD.Filter := 'CSV ? ????????????? ";" (*.csv)|*.CSV';
 
  if SD.Execute = True Then
  begin
    FileName := SD.FileName;
    If Copy(FileName,Pos('.',FileName),Length(FileName)-Pos('.',FileName)+1) <> '.csv' Then FileName := FileName + '.csv';
    Screen.Cursor := crHourGlass;
 
      AssignFile(ff, FileName);
      ReWrite(ff);
      try
       with StringGrid1 do
       for i:=0 to RowCount-1 do
        for j:=0 to ColCount-1 do
         if j<>ColCount-1 then
         Write(ff, StringGrid1.Cells[j,i]+';')
         else
         Writeln(ff, StringGrid1.Cells[j,i]);
      finally
       CloseFile(ff);
      end;
  end;
 
  Finally
    FreeAndNil(SD);
    Screen.Cursor := crDefault;
  End;
}
1
pomkalk
365 / 247 / 24
Регистрация: 03.04.2011
Сообщений: 558
Записей в блоге: 1
12.07.2011, 13:38 11
Все зависит от задачи, если ты собираешься как то взаимодействовать с сохраненными данными на прямую, сохраняй в виде текста, как тебе тут предложили, а если это только для твоей программы, тогда сохраняй как бинарник! - это в поиск
1
prom1856
14 / 14 / 1
Регистрация: 22.09.2008
Сообщений: 46
13.07.2011, 07:06 12
Поиском не пробовали пользоваться? http://www.promsite.us/TTStringGrid1_p7.html
1
13.07.2011, 07:06
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.07.2011, 07:06

Кнопка: сохранить данные с Edit, скопировать файл (картинку) и переименовать новый файл из одного из полей edit
Помогите дописать для кнопки такое: по состоянию компонента CheckBox копировать...

Сохранение из StringGrid массива в файл и загрузка из файла в StringGrid
Всем доброго времени суток =) У меня есть загрузка массива из StringGrid на...

Возможно ли сохранить текст из StringGrid?
Необходимо чтобы после закрытия программы в StringGrid оставался текст,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru