PDA

View Full Version : سوال: سیو کردن فایل با استفاده از SaveToFile



تجلی
پنج شنبه 06 بهمن 1390, 11:53 صبح
سلام .
در این کد فایل ایجاد میشه ولی ، فایل باز میمونه و خالی هم هست تا زمانی که sleep تموم بشه ! در حالی که در کد دوم برنامه فایل رو سیو میکنه و میبنده هر چند زمان sleep تموم نشده باشه . >
کد اول >>

begin
TIdText(Msg.MessageParts.Items[i]).Body.SaveToFile('e:\hi.html');

sleep(20000)

end
کد دوم >

begin

memo1.Lines.SaveToFile();
sleep(20000)

end

من چطور میتونم مشکل کد اول رو حلش کنم چون نیاز دارم این کد فایل رو ایجاد کنه و در جا هم سیوش کنه و بسته بشه چون بلافاصله بعد از ایجاد شدنش در یک thread متد synchronize فراخوانی میشه و اونجا باید فرم اصلی این فایل رو بخونه ولی تا پایان کار synchronize این فایل باز میمونه و امکان دسترسی بهش نیست .

در کد اول خواستم فایل رو در یک stream سیو کنم و بعد از طریق این استریم فایل رو ایجاد کنم که باز هم با همین مشکل مواجه شدم یعنی باز هم برنامه بلافاصله فایل رو سیو نمیکنه و باز نگهش میداره .

تجلی
پنج شنبه 06 بهمن 1390, 15:09 عصر
اشکال کارو پیدا کردم . میگم که برای دیگران هم تجربه شه .

در حقیقت در اون کد اول هم فایل سیو میشد ولی ایمیلی که باز میکردم دارای دو بخش بود که هر دو تا بخش محتواشون متن بود در حالی که انتظار داشتم فایل متنی ایمیلم یک بخشی باشه .

مشکل از ینجا ناشی مبشد که : متن اول توسط متد save to file سیو میشد و با فراخوانی synchronize فرم اصلی میرفت که این متن رو بخونه در همین حال بخش دوم نامه دریافت میشد و باید سیو میشد اما با thread فرم اصلی قاطی میکرد و پیام میداد که فایل در حال استفادست و نمیتونه همچین فایلی رو ایجاد کنه .
پس یا باید دو بخش نامه رو در دو فایل مجزا سیوشون میکردم یا از یه تاخیر با استفاده از sleep استفاده میکردم > فعلا یه sleep قبل از سیو بخش دوم نامه گذاشتم مشکل حل شد . تا یکی از اساتید راهنمایی کنه راه بهتری براش پیدا کنم . :ناراحت: