View Full Version : ذخیره کاراکترهای تایپ شده در یک فایل
mah.yar
جمعه 14 دی 1386, 15:24 عصر
فرض کنید یه برنامه مثله Edit محیط داس نوشتیم و میخوایم وقتی از منوی فایل Save رو انتخاب کردیم برنامه متنهای تایپ شده تو محیط Edit رو توی یه فایل ذخیره کنه.
چه جوری و با چه کدی میشه این کار رو انجام داد؟
اگه میشه یه نمونه کد کوچیک از کار رو بزارید.
با تشکر
Delphi Coder
جمعه 14 دی 1386, 16:29 عصر
خوب متن رو توی یه بافر ذخیره کنید بعد هر وقت save زده شد همون بافرو تو فایل ذخیره کنید. HelpPC رو مطالعه کنید وقفه 16 تابع 2 و وقفه 21 تابع 1 برای خواندن کلید و تابع 3c تا 40 برای file managment هست.
mah.yar
جمعه 14 دی 1386, 19:52 عصر
من تونستم یه string از قبل تعریف شده رو با دستورات زیر توی فایل ذخیره کنم:
;--------------create file
mov ah,3ch
mov cx,0
lea dx,dir
int 21h
mov filepointer,ax
;--------------------------write in file
mov ah,40h
mov bx,filepointer
mov cx,40
lea dx,string
int 21h
اما حالا مشکله من اینه که چه جوری کاراکترهای تایپ شده رو توی بافر بزارم تا بتونم تو فایل ذخیره کنم.
میدونم که یه سوال مبتدیانست ولی چه کنم که راهشو نمیدونم.
اگه میشه کد این یه قسمت رو برام بزارید یا اینکه یه رفرنس معرفی کنید تا برم دنبالش.
Delphi Coder
جمعه 14 دی 1386, 21:10 عصر
میدونم که یه سوال مبتدیانست ولی چه کنم که راهشو نمیدونم.
اگه میشه کد این یه قسمت رو برام بزارید یا اینکه یه رفرنس معرفی کنید تا برم دنبالش.
اینجا مهم فهم مسئله و ساختن الگوریتم هست. شما یه Editor میخواید بسازید که User بتونه فایل رو در کل صفحه با استفاده از ArrowKeys و سایر کلیدهای ویرایشی متن خودشو بنویسه یا ویرایش کنه و بعد قادر به Save کردن اون باشه. اگه مشکل فقط گرفتن یه رشته و قرار دادنش تو یک بافر باشه شما می تونید از وقفه 21 تابع 0A استفاده کنید. ولی میدونم که نمی تونید اینکارو بکنید چون باید کلیدهای UP و DOWN رو هم هندل کنید و بین Line ها حرکت کنید و ممکنه بخواید صفحه رو به بالا یا پایین Scroll کنید که در این حالت این سرویس به درد شما نمی خوره. سوالی که مطرح کردید در حقیقت یه قسمت کوچک از کاری هست که می خوایذ انجامش بدید. یه متغییر میگیرید مثلا BufferCursor و به ازای فشار هر یک از کاراکترهای قابل چاپ اونرو در موقعیت Offset Buffer+BufferCursor قرار داده و یک واحد به اون اضافه می کنید. آگر هم مثلا BackSpace زده شد یک واحد از اون کم می کنید. هندل کردن سایر کلیدهای کنترلی هم بستگی به معماری برنامتون داره.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.