delphi4arab منتديات دلفي للعرب

نسخة كاملة : خزن البينات في القرص الصلب بدل الميموري
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم اخواني الاعزاء

قمت بانشاء مصفوفه داخل التطبيق و هي تعمل
ولكن فوجات بن المصفوفه يتم تخزينها في الميمري رام فمثلا هذا الكود

كود :
type  ArrayIndex = 0..99999999;  TByteArray = array[ArrayIndex] of Byte;  PByteArray = ^TByteArray; procedure TForm1.GetDataAll; var  BufData : PByteArray; begin  GetMem(BufData, 1000000000); end; بعد املا البيانات يتم تخزينها في الرام  فهل يوجد حل لوضعها في الهارد  او ضغطها  و بارك الله فيكم
وعليكم السلام ورحمة الله
يمكن انشاء ملف بالقرص واستخدامه لكن ما المشكل ؟ هل تخشى من عدم توفر ذاكر حية كافية!
اوضح حتى يمكن توجيهك
(21-02-2016, 02:00 PM)B.M.AbdelAziZ كتب : [ -> ]وعليكم السلام ورحمة الله
يمكن انشاء ملف بالقرص واستخدامه لكن ما المشكل ؟ هل تخشى من عدم توفر ذاكر حية كافية!
اوضح حتى يمكن توجيهك

جزاك الله الف خير لك و لوالديك 

انظر الى هذا الكود عندما اقوم بكتابته يقوم بحجز مساحه في الذاكره Memory

 و ان كان الحجم اكبر تظهر رساله Out of memory

كود :
procedure TForm1.btn1Click(Sender: TObject); var  i: Integer;  databyte : PByteArray; begin GetMem(databyte, High(Integer) div 5); for i := 0 to (High(Integer) div 5)-1 do  begin    databyte[i] := i;    Application.ProcessMessages;  end;  btn1.Caption := 'ok'; end;
الصوره في المرفقات جزاك الله خير هل من حل
الحل تغيير طريقة تفكيرك/برمجتك
ما الذي تود القيام به ؟ او حسابه ؟
(22-02-2016, 02:24 PM)B.M.AbdelAziZ كتب : [ -> ]الحل تغيير طريقة تفكيرك/برمجتك
ما الذي تود القيام به ؟ او حسابه ؟

خزن بيانات wavedata

لملفات عملاقه من نوع WAV

حجمها اكثر من بحدود 1 GB

هناك تطبيقات دون الحاجه الى memory وتخزن بيانات اكثر من 1 GB مثل تطبيق
Wave Editor

لحظت ان التطبيق لا يخزن البيانات في memory

فما الحل جزاك الله الف خير
عليك ان تقسم العمل على اجزاء/قطع بحجم صغير لا يستهلك ذاكرة كثيرة
تاخذ جزء وتعمل عليه ثم تنتقل الى الجزء الموالي.. الى ان تنتهي

بدلا من Wave يمكن ان تستخدم صيغة مضغوطة كMP3 او OGG

يمكن ان تستعين بمكتبات او مكونات جاهزة مثل FFMPEG وغيرها