PDA

View Full Version : کار با فایل ها



baby_tanhaa
یک شنبه 01 اردیبهشت 1387, 16:10 عصر
سلام
تا اون جایی که من متوجه شدم دلفی چند تا روش برای کار با فایل ها داره از جمله
fileStream و fileopen و openfile و assignfile میشه یکی از اساتید درباره اینا توضیح بده اینکه کدوم روش بهتره کدوم اسانتره و پارامتراهشون چطور هستن

باتشکر:بوس:

dkhatibi
یک شنبه 01 اردیبهشت 1387, 17:04 عصر
یکی از اساتید درباره اینا توضیح بده
با اجازه ی اساتید ما که...

assignfile
روش سنتی کار با فایل. سخت تر از بقیه!
f
ileStream
پرکاربرد و ... اگر بگردید تو سایت خیلی مطلب در این رابطه می یابید.

baby_tanhaa
یک شنبه 01 اردیبهشت 1387, 21:15 عصر
ileStream
پرکاربرد و ... اگر بگردید تو سایت خیلی مطلب در این رابطه می یابید.


راستش من سایتو گشتم ولی مطلبی در مورد اینکه filestream رو با پارامترهاش آموزش داده باشه پیدا نکردم:افسرده: لطفا یکی زحمتشو بکشه ممنون میشم:خجالت:

مهران موسوی
یک شنبه 01 اردیبهشت 1387, 22:13 عصر
با سلام ....

ابتدا یک متغیر از کلاس TFileStream تعریف میکنید ... سپس باید اون رو Create کنید و مقادیر مورد نیاز رو بهش بدید .... مثل ادرس و نام فایل ... نوع بازکردن فایل ....

یک مثال براتون میزنم که فایل رو به صورت خواندنی باز میکنه ...


var
file_st:TFileStream;
begin
file_st:=TFileStream.Create('C:\test.exe',fmOpenRe ad);
end;

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


file_st.Free;

یا حق ...

baby_tanhaa
دوشنبه 02 اردیبهشت 1387, 12:56 عصر
اساتید محترم لطفا نظرشونو در مورد مطلب زیر بگن ایا اینیکه نوشنم درسته ؟؟


ابتدا یه متفیراز نوع HFile تعریف میکنم که هندل فایلی که میخوام روش کار کنمو توش میریزم


f:=FileOpen('c:\a.txt',fmOpenReadWrite );


بعد با دستور زیر به محل مورد نظر درفایل میرم که f همون هندل فایلم و تابع sizeof میگه به کجای فایل بره و درنهایت sofrombegining یعنی از ابتدای فایل جولو برو


FileSeek(f,sizeof(f),soFromBeginning);

حالا با دستورات زیر تو فایل مینویسم ( متغیر temp از نوع استرینگ هست و داده ای که میخوام در فایل بنویسم می باشد)


FileWrite(f,temp,sizeof(temp));

با این دستورم از فایل می خونم

FileRead(f,temp2,sizeof(temp2));

در نهایت فایلو میبندم


FileClose(f);

خوب حالا اینا که گفتم نمیدونم درسته یا نه چون برداشت شخصی خودمه لطفا یکی راهنماییم کنه که اصلا این شدنیه و اگه هست ایا روش خوبیه؟

babak_delphi
دوشنبه 02 اردیبهشت 1387, 14:22 عصر
به Help دلفی مراجعه کنید
توضیحات کامل به همراه مثال دارد

موفق باشی

baby_tanhaa
پنج شنبه 05 اردیبهشت 1387, 08:49 صبح
جناب بابک اگه هرچیو میشد با help دلفی یاد گرفت که دیگه این تالارها بی معنی میشد من اینجا سوالمو گفتم تا یه راهنمای فارسی پیداکنم

واقعا خیلی مسخرس که دوستان بجای راهنمایی یه همچین پیشنهادی می کنن مسلما خودمم میدونم که دلفی یه help داره

baby_tanhaa
پنج شنبه 05 اردیبهشت 1387, 08:57 صبح
من تونستم با tfilestream که جناب مهران عزیز گفتن یه فایل ایجاد کنم توش بنویسم و ازش بخونم فقط یه مشکلی که هست اینکه وقتی از متد open این کلاس برای خوندن و نوشتن از یه فایل که قبلا ایجاد شده استفاده میکنم جواب نمیده اقا مهران لطفا بگید اشکال کارم چیه

B-Vedadian
پنج شنبه 05 اردیبهشت 1387, 08:57 صبح
اگه به Help دلفی مراجعه کنی، مثال هم داره. در بعضی موارد میشه بدون دونستن زبان انگلیسی هم از Help استفاده کنی.

فقط در مورد کار با فایلها به نظر من بهتر از TFileStream استفاده کنی. در این روش، سرعت دستیابی به فایل بیشتره، چون فقط به همون میزان که تو یک بار میخونی از Hard نمیخونه، بیشتر میخونه تا در دفعه بعد جواب رو از حافظه بهت بده و برای نوشتن هم صبر! میکنه تا تغییراتی که میخوای ذخیره کنی به حد قابل قبولی برسه بعد همشو مینویسه. البته موقع بستن فایل هرقدر تغییر داده باشی (کم یا زیاد) حتما نوشته میشه.

baby_tanhaa
پنج شنبه 05 اردیبهشت 1387, 09:05 صبح
اگه به Help دلفی مراجعه کنی، مثال هم داره. در بعضی موارد میشه بدون دونستن زبان انگلیسی هم از Help استفاده کنی.

فقط در مورد کار با فایلها به نظر من بهتر از TFileStream استفاده کنی. در این روش، سرعت دستیابی به فایل بیشتره، چون فقط به همون میزان که تو یک بار میخونی از Hard نمیخونه، بیشتر میخونه تا در دفعه بعد جواب رو از حافظه بهت بده و برای نوشتن هم صبر! میکنه تا تغییراتی که میخوای ذخیره کنی به حد قابل قبولی برسه بعد همشو مینویسه. البته موقع بستن فایل هرقدر تغییر داده باشی (کم یا زیاد) حتما نوشته میشه.

مرسی vedidan جان اما چرا وقتی از متدopen این کلاساستفاده میکنم کار نمیکنه در واقع فقط تونستم یه فایل ایجاد کنم بعد بنویسم و از اینکارو با فایلی که قبلا وجود داشت نتونستم انجام بدم
میشه بگسید چرا؟؟:افسرده:

B-Vedadian
جمعه 06 اردیبهشت 1387, 00:33 صبح
در هنگام ایجاد باید بصورت نوشتن بازش کنید


x := TFileStream.Create(asd, fmOpenWrite);

babak_delphi
جمعه 06 اردیبهشت 1387, 13:53 عصر
برنامه نویسی فقط تایپ کردن کد نیست
سعی کن اول جستجو کنی وقتی نتونستی پیدا کنی بعد سوال کن
هم دلفی امکان جستجو داره و هم این سایت
ضمنا ادب و نزاکت را رعایت کنید
این سایت محل تبادل اطلاعات است نه مسخره خواندن کارها و حرفهای اعضاء

مهران موسوی
جمعه 06 اردیبهشت 1387, 14:16 عصر
دوست عزیز یک مثال کامل برای خواندن و نوشتن در فایلهایی که قبلا بوده براتون نوشتم ...



var
testf:TFileStream;
str,str1:String[15];
begin
str:='Mehran mousavi';
testf:=TFileStream.Create('c:\test.exe',fmOpenRead Write);
testf.Seek(0,soFromEnd);
testf.Write(str,sizeof(str)); //// For Write any words
testf.Seek(-sizeof(str),soFromEnd);
testf.Read(str1,sizeof(str)); //// For read any words
testf.Free;
ShowMessage(str1);

لطفا از این به بعد یکم جستو جو کنید بعدا اگه به نتیجه نرسیدید سوال بپرسید ... :چشمک:

یا حق ...

baby_tanhaa
شنبه 07 اردیبهشت 1387, 19:19 عصر
ممنون مهران جان متوجه اشتباهم شدم
اشکال کارم این بود که testf رو از نوع Hfile تعریف میکردم
درضمن من قبل از اینکه سوال کنم جستجو کرده بودم ولی همچین مثالی ندیدم تا متوجه این اشکالم بشم
جناب بابک من به کسیم توهین نکردم منظورم این بود که مشکل خیلی از ماها فقط اینه که یه راهنمای فارسی خوب و رایگان در دسترس نداریم
برنامه نویس خداییش به من یکی تا حالا خیلی کمک کرده از این بابت از مسئولان سایت صمیمانه متشکرم