www2006
شنبه 28 بهمن 1385, 21:34 عصر
سلام ...
تو برنامه وقتی این خطا اتفاق میفته که برنامه بخواد بصورت داینامیک حافظه بگیره ولی نتونه ..
تو برنامهء من بعد از اجرای یکسری دستور (در رابطه با کار با Stream ها) این خطا رخ میده ..
حالا میخوام بدونم که این کمبود حافظه مربوط به Ram میشه با حافظه های دیگه ( مثلا Heap و..) ؟
و چطور میشه بعد از اجرای دستورات حافظه آزاد بشه تا این خطا اتفاق نیفته .. البته این رو هم بگم من در انتهای کارم با دستور FreeAndNil فضای گرفته شده برای Stream را هم آزاد میکنم ..
توضیح :
دقیقا روی خط Bold شده ، خطا اتفاق میفته (البته بعد از چند بار اجرا ):
LetterBody := TMemoryStream.Create ;
LetterSize := IdTCPClient1.ReadInteger() ;
try
IdTCPClient1.ReadStream(LetterBody,LetterSize,Fals e);
LetterBody.SaveToFile('let.rtf');
RichEdit_LetterView.Lines.LoadFromFile('let.rtf');
finally
FreeAndNil(LetterBody);
end;
با تشکر
تو برنامه وقتی این خطا اتفاق میفته که برنامه بخواد بصورت داینامیک حافظه بگیره ولی نتونه ..
تو برنامهء من بعد از اجرای یکسری دستور (در رابطه با کار با Stream ها) این خطا رخ میده ..
حالا میخوام بدونم که این کمبود حافظه مربوط به Ram میشه با حافظه های دیگه ( مثلا Heap و..) ؟
و چطور میشه بعد از اجرای دستورات حافظه آزاد بشه تا این خطا اتفاق نیفته .. البته این رو هم بگم من در انتهای کارم با دستور FreeAndNil فضای گرفته شده برای Stream را هم آزاد میکنم ..
توضیح :
دقیقا روی خط Bold شده ، خطا اتفاق میفته (البته بعد از چند بار اجرا ):
LetterBody := TMemoryStream.Create ;
LetterSize := IdTCPClient1.ReadInteger() ;
try
IdTCPClient1.ReadStream(LetterBody,LetterSize,Fals e);
LetterBody.SaveToFile('let.rtf');
RichEdit_LetterView.Lines.LoadFromFile('let.rtf');
finally
FreeAndNil(LetterBody);
end;
با تشکر