CFile
Как записывать и читать файлы с помощью класса CFile?
У меня есть код программы:
//Bank.h
double bank[2];
//Bank.cpp
void Bank::OnOk()
{
double x[2];
CFile File("data\\bank.dat",CFile::modeRead);
for(int i;i<2;i++)
{
File.Seek(100*i,CFile::begin);
File.Read(x,100);
bank = double(x);
}
}
void Bank::OnOK()
{
CFile File("data\\bank.dat",CFile::modeCreate | CFile::modeWrite);
for(int index = 0; index<2;index++)
{
File.Write(bank[index],100);//Ошиб
}
File.Close();
}
Компилятор выдаёт ошибку: <<Bank.cpp(138) : error C2664: 'Write' : cannot convert parameter 1 from 'double' to 'const void *'
There is no context in which this conversion is possible>>
Проблему я понял, но как её исправить???
Цитата:
Originally posted by alex-better
Объясните по-человечески:
Как записывать и читать файлы с помощью класса CFile?
У меня есть код программы:
//Bank.h
double bank[2];
//Bank.cpp
void Bank::OnOk()
{
double x[2];
CFile File("data\\bank.dat",CFile::modeRead);
for(int i;i<2;i++)
{
File.Seek(100*i,CFile::begin);
File.Read(x,100);
bank = double(x);
}
}
void Bank::OnOK()
{
CFile File("data\\bank.dat",CFile::modeCreate | CFile::modeWrite);
for(int index = 0; index<2;index++)
{
File.Write(bank[index],100);//Ошиб
}
File.Close();
}
Компилятор выдаёт ошибку: <<Bank.cpp(138) : error C2664: 'Write' : cannot convert parameter 1 from 'double' to 'const void *'
There is no context in which this conversion is possible>>
Проблему я понял, но как её исправить???
Объясните по-человечески:
Как записывать и читать файлы с помощью класса CFile?
У меня есть код программы:
//Bank.h
double bank[2];
//Bank.cpp
void Bank::OnOk()
{
double x[2];
CFile File("data\\bank.dat",CFile::modeRead);
for(int i;i<2;i++)
{
File.Seek(100*i,CFile::begin);
File.Read(x,100);
bank = double(x);
}
}
void Bank::OnOK()
{
CFile File("data\\bank.dat",CFile::modeCreate | CFile::modeWrite);
for(int index = 0; index<2;index++)
{
File.Write(bank[index],100);//Ошиб
}
File.Close();
}
Компилятор выдаёт ошибку: <<Bank.cpp(138) : error C2664: 'Write' : cannot convert parameter 1 from 'double' to 'const void *'
There is no context in which this conversion is possible>>
Проблему я понял, но как её исправить???
Ну если ты понял, так в чем тогда сложность? :)
Попробуй вот так:
File.Write((void*)bank[index],100);
А твой код тоже не работает.:sad:
А нельзя, чтобы объект был сразу и void и double?:D
Цитата:
Originally posted by alex-better
Проблема в том, что я не могу исправить ошибку.
Проблема в том, что я не могу исправить ошибку.
Люди, что никто не может мне помоч???
Click here
File.Write((void*)&bank[index],100);
Цитата:
//запись в файл
CFile File( "data\\bank.dat", CFile::modeCreate | CFile::modeWrite );
for( int index = 0; index<2;index++ )
{
File.Write( &bank[index], sizeof(double) );
}
File.Close();
//чтение из файла
char* readBuff = new char[sizeof(double)];
CFile File( "data\\bank.dat", CFile::modeRead );
for( int i ; i < 2 ; i++ )
{
File.Seek( sizeof(double)*i, CFile::begin );
File.Read( readBuff, sizeof(double) );
bank = *((double*)inBuff);
}
delete []readBuff;
Вот такие пироги.
Я написал так, как ты сказал и оно заработало.
->Jeff:
Твой код тоже работает, но он слишком большой и сложноватый.
Всем спасибо
Click Here