![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 22.02.2011
Сообщений: 2
|
![]()
Такая проблемка
Есть 2 формы: form1 и form2, где form1 главная, а form2 - вызывается из form1. В form1 производится создание и запись в файл, а в form2 чтение из файла и запись его данных в StringGrid. И вот чтение из файла почему-то не работает. Привожу пример моего кода: form1 #include <iostream.h> #include <fstream.h> #include <vcl.h> #include "form2.h" //объявление разных переменных //-------------------------------------------------------------- //создание формы и файла __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { // создаю файл для записи и потом его закрываю ofstream OutPsist("Psist.csv", ios :: out); OutPsist.close(); } //------------------------------- //дальше идет разный другой код касающийся программы //----------------------------------- //запись в файл void __fastcall TForm1::Button1Click(TObject *Sender) { //записываю в файл ofstream OutPsist("Psist.csv", ios :: app); OutPsist << st << ';' << endl; for (i=0;i<m;i++) { OutPsist << psist[i] << ';'; } OutPsist << endl; //закрываю файл OutPsist.close(); } //вызов form2 void __fastcall TForm1::Form2Click(TObject *Sender) { Psist_pr_sp->Show(); } ---------------------------------------------------------------- Form2 //подключение разных библиотек и описание переменных __fastcall TPsist_pr_sp::TPsist_pr_sp(TCompone nt* Owner) : TForm(Owner) { int i=1,j,k; double a[100]; char* str[100]; char buf[100]; //открытие фойла для чтения ifstream InPsist("Psist.csv", ios :: in); //помещение курсора в начало файла InPsist.seekg(0, ios :: beg); while (!InPsist.eof()) { j=0; //чтение строки из файла InPsist.getline(buf,100,'\n'); k=0; char* token=strtok(buf,";"); while (token!=NULL) { str[k]=token; token=strtok(NULL,";"); k++; } //запись полученных данных в StringGrid if (k==1) { StringGridPrSp->Cells[j][i]="t="; StringGridPrSp->Cells[j+1][i]=atoi(str[0]); } else { for (int l=0;l<k;l++) { StringGridPrSp->Cells[j][i]=(str[l]); j++; } } i++; } //выход из файла InPsist.close(); } Последний раз редактировалось mkapustin; 22.02.2011 в 23:14. |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 29.09.2010
Сообщений: 636
|
![]()
while (!InPsist.eof())
{ j=0; //чтение строки из файла InPsist.getline(buf,100,'\n'); k=0; char* token=strtok(buf,";"); while (token!=NULL) { str[k]=token; token=strtok(NULL,";"); k++; } эта часть работает... возможно ошибка дальше? попробуйте strcpy(StringGridPrSp->Cells[j][i],(str[l])); |
![]() |
![]() |
![]() |
#3 |
Новичок
Джуниор
Регистрация: 22.02.2011
Сообщений: 2
|
![]()
спасибо за помощь, но я уже разобрался.
Ошибка была в том, что я открывал файл при создании Form2, а он в этот момент времени пустой!!! Поэтому весь код чтения из файла пришлось запихнуть в функцию общего доступа public |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
C++: работа с файлами | MR_Andrew | Общие вопросы C/C++ | 3 | 09.04.2010 20:32 |
Работа с файлами | МартинИ | Паскаль, Turbo Pascal, PascalABC.NET | 3 | 23.12.2008 21:36 |
работа с файлами | Antonio86 | Общие вопросы Delphi | 0 | 20.01.2008 16:27 |
Работа с файлами | Zenit10 | Помощь студентам | 2 | 19.01.2008 09:59 |