ABA


"בעייה בשמירה וטעינה של אובייקטים מקובץ ב- C++"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #12376 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 12376
chenke 
חבר מתאריך 1.7.02
730 הודעות
   08:35   25.08.05   
אל הפורום  
  בעייה בשמירה וטעינה של אובייקטים מקובץ ב- C++  
 
   ערכתי לאחרונה בתאריך 25.08.05 בשעה 08:36 בברכה, chenke
 
בעייה בשמירה וטעינה של אובייקטים מקובץ ב- C++
----------------------------------------------

בתוכנית שאני כותב יש אובייקט מסוג user_info, שמייצג מידע על משתמש.
כמו כן אובייקט מסוג user_list שמייצג רשימה של אובייקטים מסוג user_info
שמיוצגת ע"י וקטור (STL) ומגובת בקובץ.
הבנאי של user_list, בודק אם הקובץ שמאחסן את רשימת המשתמשים קיים. במידה
והוא קיים, אז הוא אמור לפתוח אותו ולטעון את המידע ממנו לתוך הוקטור, אחרת
הוא יוצר קובץ חדש. להלן הבנאי:


user_list::user_list()
{
char* FileName="user_list.dat";
CFileStatus status;
int userSize=sizeof(user_info);
int userInFile;
int i;
user_info user;
if( CFile::GetStatus( FileName, status ) ) //file exsist
{
users_file.Open( FileName, CFile::modeNoTruncate|CFile::modeCreate|CFile::modeReadWrite );
userInFile=users_file.GetLength()/userSize;
user_list::numOfUsers=userInFile;
users_file.SeekToBegin();
for (i=0;i<userInFile;i++)
{
users_file.Read(&user,userSize);
users.push_back(user);

}
}
else //new file
{
users_file.Open( FileName, CFile::modeCreate | CFile::modeReadWrite );
user_list::numOfUsers=0;
}


}


קיימת באובייקט user_list גם מטודה לשמירת המידע מהוקטור לקובץ:

void user_list::saveUsers()
{
vector<user_info>::iterator j;
int userSize=sizeof(user_info);
users_file.SeekToBegin();
for (j = users.begin(); j != users.end();j++)
{

users_file.Write(&j,userSize);
}
}

הבעייה היא שברגע שהבנאי מזהה שקיים קובץ שמכיל רשימת משתמשים,
אז הוא פותח אותו ומנסה להתחיל לטעון ממנו מידע. הוא טוען מידע
על המשתמש הראשון (מידע שהוא זבל לפי מה שבדקתי) ואחרי זה התוכנית
נופלת.
מה כתבתי לא נכון? איך מתקנים?

חן.


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  אפשר לראות את ההגדרה של user_info? bizho 25.08.05 15:05 1
     להלן ההגדרה של user_info chenke  25.08.05 16:15 2

       
bizho

   15:05   25.08.05   
אל הפורום  
  1. אפשר לראות את ההגדרה של user_info?  
בתגובה להודעה מספר 0
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
chenke 
חבר מתאריך 1.7.02
730 הודעות
   16:15   25.08.05   
אל הפורום  
  2. להלן ההגדרה של user_info  
בתגובה להודעה מספר 1
 
  

// user_info.h: interface for the user_info class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_USER_INFO_H__CF193C16_E1F7_497A_B977_382A2ECF4D00__INCLUDED_)
#define AFX_USER_INFO_H__CF193C16_E1F7_497A_B977_382A2ECF4D00__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include <iostream.h>
#include <afx.h>
class user_info
{
public:
user_info();
user_info(CString suser_name,CString spassword,int suser_id,CString sname,CString sfamily_name,int suser_type,int scity_id,int sarea_id,int sonline=false);
virtual ~user_info();
CString get_user_name();
CString get_password();
int get_user_id();
CString get_name();
CString get_family_name();
int get_user_type();
int get_city_id();
int get_area_id();
int get_statuse();
private:
CString user_name;
CString password;
int user_id;
CString name;
CString family_name;
int user_type;
int city_id;
int area_id;
int online;
};

#endif // !defined(AFX_USER_INFO_H__CF193C16_E1F7_497A_B977_382A2ECF4D00__INCLUDED_)


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net