السلام عليكم اخواني الاعزاء
قمت بانشاء مصفوفه داخل التطبيق و هي تعمل
ولكن فوجات بن المصفوفه يتم تخزينها في الميمري رام فمثلا هذا الكود
كود :
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 وغيرها