ورود

View Full Version : سوال: ارور عجیب در استفاده از فایل در ویژوال استادیو



mohammaddx
چهارشنبه 09 اردیبهشت 1394, 17:33 عصر
سلام به همه ی دوستان.
من یه کد ساده دارم که یه یک ابجکت را در فایل ذخیره میکنه و اولین شی را از فایل میخونه و پرینت میکنه.
مشکل عجیب این جاست که برنامه تا زمانی که بسته نشده درست کار میکنه اما بعد از بستن و باز کردن برنامه(یعنی یک فایل ایجاد شدده داریم) برنامه break میشه!



#include <iostream>
#include <fstream>
#include <conio.h>


using namespace std;
class person
{
public:
person();
~person();
char arr[20];
private:


};


person::person()
{
}


person::~person()
{
}
void main()
{
while(1)
{
int a;
cout<<"1-save in file\n2-load";
cin>>a;
if(a==1)
{
person*ob1=new person;
cin>>ob1->arr;
ofstream file;
file.open("aaa.dat",ios::app|ios::binary);
file.write((char*)&ob1,sizeof(class person));
file.close();
}
else
{
person*ob2=new person;
ifstream file;
file.open("aaa.dat",ios::in|ios::binary);
file.read((char*)&ob2,sizeof(class person));
cout<<ob2->arr;
}


}


}



130747

USprojeh
چهارشنبه 09 اردیبهشت 1394, 17:38 عصر
منظورت اینه که از پوشه دیباگ بالا میاری ارور میده ؟؟؟؟ خب فایل رو باس توی پوشه دیباگ هم کپی کنی ! بعد چیزای مورد نیازش که توی پوشه برنامس رو باس توی دیباگ کپی کنی !

mohammaddx
چهارشنبه 09 اردیبهشت 1394, 17:46 عصر
منظورت اینه که از پوشه دیباگ بالا میاری ارور میده ؟؟؟؟ خب فایل رو باس توی پوشه دیباگ هم کپی کنی ! بعد چیزای مورد نیازش که توی پوشه برنامس رو باس توی دیباگ کپی کنی !
من برنامه را وقتی برای اولین بار run میکنم همه چی درسته و هم save و هم load درست کار میکنه.اما برای دفعه دوم(یعنی فایل در دفعه اول ایجاد شده بود) که برنامه run میشه میخوام load کنم برنامه break میکنه!

USprojeh
چهارشنبه 09 اردیبهشت 1394, 17:48 عصر
خب اگه میشه بریک رو بذاری عکسشو شاید بتونم کمکت کنم !

mohammaddx
چهارشنبه 09 اردیبهشت 1394, 17:55 عصر
خب اگه میشه بریک رو بذاری عکسشو شاید بتونم کمکت کنم !
به پست اول اضافه شد.

rahnema1
چهارشنبه 09 اردیبهشت 1394, 18:09 عصر
سلام
obj1 و obj2 هر دو اشاره گر هستند دیگه لازم نیست آدرس اونها گرفته بشه
((char*)ob1,sizeof(class person))
((char*)ob2,sizeof(class person))

mohammaddx
چهارشنبه 09 اردیبهشت 1394, 18:10 عصر
#include <iostream>
#include <fstream>
#include <conio.h>


using namespace std;
class person
{
public:
person();
~person();
char arr[20];
private:


};


person::person()
{
}


person::~person()
{
}
void main()
{
while(1)
{
int a;
cout<<"1-save in file\n2-load";
cin>>a;
if(a==1)
{
person*ob1=new person();
cin>>ob1->arr;
ofstream file ("aaa.dat",ios::app|ios::binary);
file.write((char*)&ob1->arr,sizeof(person));
file.close();
}
else
{
person*ob2=new person();
ifstream file1 ("aaa.dat",ios::in|ios::binary);
file1.read((char*)&ob2->arr,sizeof(person));
cout<<ob2->arr;
file1.close();
}


}


}
اگه اشتباه نکنم شما متغییر های موجود در کلاس شی را در فایل ذخیره و بازیابی کردی.برنامه اصلی من متغییرهای زیادی در کلاس های مختلف داره که امکان استفاده از روش شما را بهم نمیده.

USprojeh
چهارشنبه 09 اردیبهشت 1394, 18:12 عصر
آره ! میخواستم ببینم چه خبره ! :) !

mohammaddx
چهارشنبه 09 اردیبهشت 1394, 18:17 عصر
سلام
obj1 و obj2 هر دو اشاره گر هستند دیگه لازم نیست آدرس اونها گرفته بشه
((char*)ob1,sizeof(class person))
((char*)ob2,sizeof(class person))
ممنون از شما.اشتباه بدی بود.1ساعت وقتم رو گرفت!.