Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.02.2011, 22:41   #1
mkapustin
Новичок
Джуниор
 
Регистрация: 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.
mkapustin вне форума Ответить с цитированием
Старый 22.02.2011, 23:47   #2
onewho
Форумчанин
 
Регистрация: 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]));
onewho вне форума Ответить с цитированием
Старый 23.02.2011, 10:10   #3
mkapustin
Новичок
Джуниор
 
Регистрация: 22.02.2011
Сообщений: 2
По умолчанию

спасибо за помощь, но я уже разобрался.
Ошибка была в том, что я открывал файл при создании Form2, а он в этот момент времени пустой!!! Поэтому весь код чтения из файла пришлось запихнуть в функцию общего доступа public
mkapustin вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
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