PDA

View Full Version : یه سوال ساده در مورد رشته هنگام کار با فایل



mbshareat
دوشنبه 24 آبان 1389, 14:01 عصر
با سلام
من چنین کدی دارم:

procedure S();
Var
S:String;
F:File;
Buf:Array[1..3]of Char;
BytesNo:Integer;
Begin
AssignFile(F,'English Words.txt');
ReSet(F,1);
Seek(F,0);
BlockRead(F,Buf,sizeof(Buf),BytesNo);
S:=Buf;
MessageDlg('Sizeof(Buf) Is :'+Inttostr(sizeof(Buf))+Buf,mtInformation,[mbOk],0);
MessageDlg('Sizeof(S) Is :'+Inttostr(sizeof(S))+S,mtInformation,[mbOk],0);
eND;
سوالی برام پیش اومده :
اگه اندس اول آرایه Buf رو صفر کنم یا یک کنم در هر صورت (SizeOf(S یکسانه!
(در هر صورت طول رشته S برابر 4 هستش)
چنین چیزی چطور ممکنه؟:گیج:

Felony
دوشنبه 24 آبان 1389, 15:02 عصر
برای اینکه نوع داده رشته ( String ) در دلفی در پشت صحنه واقعا یک رشته نیست بلکه به یک اشاره گر ( Pointer ) اشاره میکنه ، اندازه اشاره گر هم 4 بایت هست پس شما دارید با اون SizeOf اندازه اشاره گری که به یک رشته اشاره میکنه رو میگیرید .

mbshareat
دوشنبه 24 آبان 1389, 18:06 عصر
با سلام:قلب:
جناب استاد تاجیک متشکرم.:تشویق:
با این حساب یعنی من باید از Length استفاده می کردم.:خجالت:
راستش من هنوز نمی دونم فایل از صفر شروع می شه یا یک و آیا اگه اولین اندیس Buf صفر باشه یا یک باشه در هر صورت درست کار می کنه؟لطفا جواب این دو سوال ساده رو هم بدین...ممنون!:لبخندساده:

Felony
سه شنبه 25 آبان 1389, 14:54 عصر
با این حساب یعنی من باید از Length استفاده می کردم.
بله .

راستش من هنوز نمی دونم فایل از صفر شروع می شه یا یک
از 0 شروع میشه .

آیا اگه اولین اندیس Buf صفر باشه یا یک باشه در هر صورت درست کار می کنه؟
خیر با توجه به توضیحی که دادم درست کار نمیکنه و باید اندیس از 0 شروع بشه ، اگر اندیس از 1 باشه کارکتر اول از فایل خونده نمیشه .

mbshareat
سه شنبه 25 آبان 1389, 23:12 عصر
با سلام و عرض تبریک به مناسبت عید سعید قربان
جناب آقای تاجیک:قلب: شما فرمودید اندیس رو باید از صفر شروع کنم ولی وقتی اندیس رو همونطور که تو کدی که گذاشتم از یک شروع می کنم 4 کارکتر اول رو می خونه .:متفکر:
آیا در شرایط خاصی نباید از یک شروع بشه؟:گیج:

Felony
چهارشنبه 26 آبان 1389, 06:31 صبح
همچین چیزی غیر ممکن هست ، شما تو کدتون صراحتا ذکر کردید مقدار آرایه از 1 تا 3 که میشه 3 کارکتر ، اگر داخل فایلتون 4 کارکتر داشته باشید باید 1 کارکتر رو موقع خوندن از دست بدید ، از دلفی 7 استفاده میکنید ؟ از همون کد بالا استفاده میکنید ؟

mbshareat
پنج شنبه 27 آبان 1389, 00:36 صبح
با سلام و خدا قوت:قلب:
عید سعید قربان (روز پیش) رو به همه تبریک عرض می کنم.
جناب آقای تاجیک شما درست می فرمایین.:اشتباه:
فقط سه کارکتر خونده می شه ولی کارکتر اول رو هم می خونه! و این کارکتر چهارمه که خونده نمی شه!:گیج:
در هر صورت معذرت می خوام که دقت نکردم... یا علی (ع)