الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيف يمكن سحب فايل في اري غير محددة

مغلق
بدأه naim في 20 يوليو 2005 · 4 رد · 555 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

مرحبا :انا عندي فايل يوجد فيه مجموعة من الجمل ,كيف يمكن سحب هذه الجمل على شكل حروف ,داخل الأري ,ولكن سيز هده الاري غير محدد لان الجمل داخل الفايل متغير باستمرار.

ارجو المساعدة.....................شكرا.

ts_800_5_LiberateYourDesktop.jpg

MNFayyad

#2

كل اللى فهمتة من سؤالك ان انت عندك فايل وعاوز تحملة فى الram عن طريق السى بلس بلس

طب لاحظ تلك الخطوات اللى هعملها

أولا انا معرفش الcurrent position للcursor فى الملف طب علشان أحملة فى الرما يبقى لازم اعرف

حجم الملف دة أول حاجة هعرف متغير وليكن NumOfRecord علشان احط فية حجم الملف المراد تحميلة

طب ازاى هعرف حجمة وانا معرفش الcurrent position to cursor in file يبقى لازم اودى الcursor لنهاية الملف عن طريق دالة اسمها

لاحظ ذلك السطر

IndexFile.seekg(0,ios::end);

حيث ال indexfile دة اسم المف

والدالة هى الseekg واول حاجة 0 يعنى لو انت فى البداية روح للمكان اللى انا عاوزوة وهو النهاية عن طريق (مش فاكر والله ال0 تعنى اية)

ios::end

يعنى روح لاخر الملف

طب دلوقتى الcurrent position of cursor واقف فى النهاية

طب دلوقتى ممكن اجيب حجم الrecord عن طريق دالة تسمى tellg()

لاحظ ذلك الكود

	int NumOfRec;
 IndexFile.seekg(0,ios::end);
 NumOfRec=int(IndexFile.tellg())/sizeof(i);
  indexfile *ptr=new indexfile[NumOfRec];

  IndexFile.seekg(0,ios::beg);
 // IndexFile.seekp(0,ios::beg);

 for(int j=0;j<NumOfRec;j++)
    {
     IndexFile.read((char*)&i,sizeof(i));
     ptr[j]=i;
    }

أولا

 NumOfRec=int(IndexFile.tellg())/sizeof(i);

أولا الNUmOfRec دة متغير الللى هحط فية حجم الملف

وعن طريق دالة الtellg() والindexfile دة اسم الملف اللى انا عاوز اجيب لة الحجم

ثم اقسمة على حجم الrecord الواحد طب i عبارة عن object من الstructure يبقى دة يمثل حجم الrecord الواحد

 indexfile *ptr=new indexfile[NumOfRec];

ثم عرفت array أسمها ptr من النوع الrecord المخزنة (حيث الindexfile عبارة عن struct يحتوى على البيانات المراد

تخزينها فى الملف)

وحجزت حجمة عن طريق المعامل new وأعطيتة حجم الfile وبالتالى يبقى كدة عندى المقدرة ان انا احط الملف فى الram

أخر مرة لو تتذكر ان احنا خلينا الcurrent position يقف فى الاخر طب انا عاوز احملة فى الرام بس من الاول يبقى لازم

أرجع الcursor لبداية الملف عن طريق ذلك السطر

IndexFile.seekg(0,ios::beg);

ios::beg روح للبداية

عن طريق دالة تسمى read هبدأ اقراء record record وأحطة فى الarray

 for(int j=0;j<NumOfRec;j++)
    {
     IndexFile.read((char*)&i,sizeof(i));
     ptr[j]=i;
    }

وبكدة يبقى انت حملت الملف فى الرام

يارب أكون أفتدك

Muhammad Allam

Computer Science

@Resource(MappedURL="My Blog" )

#3

شكرا كتير:

كل الامر هو التالي

RSA :هو اسم الفايل وانا عايز افتحه واعبي بيناته في اري سواء كانت ستاتيك ولا ديناميك

n :المتغير يجب ان يحمل قيمة تتناسب مع حجة البيانات في الفايل ,حتى يتم سحبها جميعا داخل الأري

fstream file;
// int * ptr;
int n;
n=......تقريبا حجم الفايل او عدد الحروف الي فيه(جمل)

file.open("C:\\RSA.txt",ios::in);
//ptr = new int(n);
for (int i=0;i<n; i++)
{ 
file>>ptr;
cout<<ptr;
}

ts_800_5_LiberateYourDesktop.jpg

MNFayyad

#4

كيف بدي احصل على قيمة n

حتى تتناسب مع الحروف الموجودة في الفايل(جمل)

شكرا.

ts_800_5_LiberateYourDesktop.jpg

MNFayyad

#5

حاول تقراء المشاركة اللى انا كتبتها فى ذلك الموضوع وانت هتفهم بس ياريت تقرائها بتركيز حبتين

Muhammad Allam

Computer Science

@Resource(MappedURL="My Blog" )

هذا الموضوع مغلق.

مواضيع مشابهة