23.01.2007, 22:21
общий
это ответ
Здравствуйте, Tornadosss!
В приложении реализованы две функции:
StringGridLoadFromFile - загрузка в StringGrid данных из файла;
StringGridSaveToFile - сохранение данных из StringGrid в файл.
Загружается и сохраняется только текстовая информация, другие параметры, такие как размеры ячеек, цвет, шрифт и прочее игнорируются.
Удачи!
Приложение:
//---------------------------------------------------------------------------bool StringGridLoadFromFile(TStringGrid *Grid, AnsiString &filename){ try { int hf = FileOpen(filename, fmOpenRead); if(hf==-1) return false; DWORD size[2]; int read = FileRead(hf, size, sizeof(size)); if(read!=sizeof(size)) { FileClose(hf); return false; } int DataLen = FileSeek(hf,0,2); FileSeek(hf,(int)sizeof(size),0); char *Buf = new char[DataLen+1]; read = FileRead(hf, Buf, DataLen); FileClose(hf); Grid->ColCount = size[0]; Grid->RowCount = size[1]; int k=0; for(int i=0; i<read; ++i,++k) { Grid->Cells[k/(Grid->RowCount)][k%(Grid->RowCount)] = AnsiString(Buf+i); while(Buf[i]!=0) ++i; } delete [] Buf; if(k!=Grid->ColCount*Grid->RowCount) return false; } catch(...) { return false; } return true;}//---------------------------------------------------------------------------bool StringGridSaveToFile(TStringGrid *Grid, AnsiString &filename){ int hf = FileCreate(filename); if(hf==-1) return false; DWORD size[2]; size[0] = Grid->ColCount; size[1] = Grid->RowCount; FileWrite(hf, size, sizeof(size)); for (int I=0; I<Grid->ColCount; I++) for (int J=0; J<Grid->RowCount; J++) FileWrite(hf, Grid->Cells[I][J].c_str(), Grid->Cells[I][J].Length()+1); FileClose(hf); return true;} //---------------------------------------------------------------------------