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

MNFayyad
كل اللى فهمتة من سؤالك ان انت عندك فايل وعاوز تحملة فى ال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;
}وبكدة يبقى انت حملت الملف فى الرام
يارب أكون أفتدك
شكرا كتير:
كل الامر هو التالي
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;
}
MNFayyad
هذا الموضوع مغلق.