C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
StringGrid, Сохранение
bacho_sun
  Отправлено: 29.06.2005, 15:56


Дежурный стрелочник

Группа: Участник
Сообщений: 33



Подскажи если в курсе, как разом сохранить содержимое StringGrid1 в файле и
после вывести это с файла опять в StringGrid.
olegenty
Отправлено: 29.06.2005, 16:05


Ветеран

Группа: Модератор
Сообщений: 2412



Руками. При этом в начале файла хранишь структуру грида (количество столбцов и их заголовки и количество строк), а далее — содержимое строк, например, с разделителями, таким образом, что одна строка в файле = одной строке грида.
Gedeon
Отправлено: 29.06.2005, 16:06


Ветеран

Группа: Модератор
Сообщений: 1742



В стандартной гриде никак, такие методы есть у TAdvStrGrid.
VovaN
Отправлено: 29.06.2005, 16:06


Дежурный стрелочник

Группа: Участник
Сообщений: 72



только вручную. Записал в файл размеры грида (mxn), считал размеры, считываеш данные.
seg_r
Отправлено: 30.06.2005, 08:24


Дежурный стрелочник

Группа: Участник
Сообщений: 74



вот так:
CODE

int iFileHandle;
int iLength;
iFileHandle = FileCreate("main.dat");

FileWrite(iFileHandle, (char*)&(Form1->StringGrid1->ColCount), sizeof (Form1->StringGrid1->ColCount));
FileWrite(iFileHandle, (char*)&(Form1->StringGrid1->RowCount), sizeof (Form1->StringGrid1->RowCount));


for (int x=0;x<Form1->StringGrid1->ColCount;x++)
{
for (int y=0;y<Form1->StringGrid1->RowCount;y++)
{

iLength = Form1->StringGrid1->Cells[x][y].Length();
FileWrite(iFileHandle, (char*)&iLength, sizeof(iLength));
FileWrite(iFileHandle, Form1->StringGrid1->Cells[x][y].c_str(), Form1->StringGrid1->Cells[x][y].Length());
}
}
FileClose(iFileHandle);




если прочитать то так:

CODE

iFileHandle = FileOpen("main.dat", fmOpenRead);

FileRead(iFileHandle, (char*)&(cc), sizeof (cc));
FileRead(iFileHandle, (char*)&(rc), sizeof (rc));

Form1->StringGrid1->ColCount=cc;
Form1->StringGrid1->RowCount=rc;

for (int x=0;x<cc;x++)
{
for (int y=0;y<rc;y++)
{
FileRead(iFileHandle, (char*)&iLength, sizeof(iLength));
char *buf;
buf = new char[iLength];
FileRead(iFileHandle, buf, iLength);

ss=AnsiString(buf);
ss=ss.SubString(0,iLength);
Form1->StringGrid1->Cells[x][y]=ss;
delete [] buf;
}
}


FileClose(iFileHandle);


в принципе в хелпе есть примерчики...

Отредактировано seg_r — 30/06/2005, 08:25
Rius
Отправлено: 07.07.2005, 20:09


Мастер участка

Группа: Участник
Сообщений: 321



вот пример сохранения и чтения (написал для знакомства с XML):

User Attached Image Скачать файл
_020_xml_2005.07.07___23.08.rar


Boyko
Отправлено: 08.07.2005, 15:02


Станционный диспетчер

Группа: Участник
Сообщений: 88



QUOTE (bacho_sun @ 29/06/2005, 14:56)
Подскажи если в курсе, как разом сохранить содержимое StringGrid1 в файле и
после вывести это с файла опять в StringGrid.

Разом — никак.

А ручками — примерчик в HELP-е есть.

Вернуться в Вопросы программирования в C++Builder