Advertisement
Guest User

Untitled

a guest
Apr 2nd, 2015
214
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.44 KB | None | 0 0
  1. void __fastcall TForm1::bSaveClick(TObject *Sender)//обработчик для клавиши "Сохранить"
  2. { //данные из таблицы разделяются символом ";",
  3. if(SaveDialog1->Execute()){TStringList *pStrings = new TStringList;
  4. for(int i=1; i < StringGrid1->RowCount; i++)
  5. {
  6. pStrings->Add(StringGrid1->Cells[0][i] + ";" + StringGrid1->Cells[1][i] + ";" + StringGrid1->Cells[2][i]+ ";" + StringGrid1->Cells[3][i]+ ";" + StringGrid1->Cells[4][i]+ ";" + StringGrid1->Cells[5][i]+ ";" + StringGrid1->Cells[6][i]+ ";" + StringGrid1->Cells[7][i]+ ";" + StringGrid1->Cells[8][i]+ ";" + StringGrid1->Cells[9][i]+ ";" + StringGrid1->Cells[10][i]+ ";" + StringGrid1->Cells[11][i]);
  7. }
  8. pStrings->SaveToFile(SaveDialog1->FileName);
  9. delete pStrings;
  10. }
  11. }
  12. //---------------------------------------------------------------------------
  13. void __fastcall TForm1::bOpenClick(TObject *Sender)
  14. {
  15. if(OpenDialog1->Execute())
  16. {
  17. TStringList *pStrings = new TStringList;
  18. pStrings->LoadFromFile(OpenDialog1->FileName);
  19. StringGrid1->RowCount = pStrings->Count+1;
  20. StringGrid1->ColCount=10;
  21. for(int i=0; i < pStrings->Count; i++)
  22. {
  23. StringGrid1->Rows[i+1]->Delimiter = ';';
  24. StringGrid1->Rows[i+1]->DelimitedText = pStrings->Strings[i];
  25. }
  26. delete pStrings;
  27. }
  28. for(int i=StringGrid1->ColCount; i>0;i--) {
  29. if(StringGrid1->Cells[i][3]==" ")
  30. StringGrid1->ColCount--;
  31. }
  32. j=StringGrid1->ColCount;
  33. }
  34.  
  35. ..............
  36. StringGrid1->Rows[i+1]->DelimitedText = pStrings->Strings[i]; ?
  37. .............
  38.  
  39. AnsiString S;
  40. struct SaveStorage(AnsiString One, AnsiString Two, ... ,AnsiString Ten,); //описание структуры для хранения данных таблицы
  41.  
  42. SaveStorage Storage; //Объявили структуру
  43.  
  44. FILE *in; //объявляем файл в который сэйвим
  45.  
  46. in = fopen("TestFile.txt", "wt"); //создаем файл, присваиваем имя
  47. fclose(in);
  48.  
  49. for(i=0;i<StrinGrid->ColCount; i++) { // в цикле выдергиваем из строки таблицы дынные
  50. Storage.One=StringGrid->Cells[0][i];
  51. Storage.Two=StringGrid->Cells[1][i];
  52. ...
  53. Storage.Ten=StringGrid->Cells[9][i];
  54.  
  55. sprintf (S, "%s %s %s %s %s %s %s %s %s %s n", // заносим данные из 10 ячеек строки **StrinGrid'a** в 1 строку (/n - означает перенос в низ на новую строчку в той же строке)
  56. Storage.One,
  57. Storage.Two,
  58. ...
  59. Storage.Ten)
  60.  
  61. in=fopen("TestFile.txt", "at"); //открываем созданный файл
  62. fputs (S, in); // пишем в него строку
  63. fclose(in);
  64. }
  65.  
  66. AnsiString One,Two, ... , Ten; //В эти строки будем писать данные из файла (структура для этого не пригодна)
  67.  
  68. in=fopen("TestFile.txt", "rt");
  69. while(fscanf(in,"%s %s %s %s %s %s %s %s %s %sn",
  70. &One,
  71. &Two,
  72. ...
  73. &Ten)!=EOF) //проще говоря сканим данные пока не наступит конец строки в файле
  74.  
  75. {
  76.  
  77. StringGrid1->Cells[0][i]=One; // пишем в строку **StringGrid'a** отсканенные данные из строки файла
  78. StringGrid1->Cells[1][i]=Two;
  79. ...
  80. StringGrid1->Cells[9][i]=Ten;
  81. i++;
  82. }
  83. fclose(in);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement