فایل سیستم به صورت لیست در vb6. افزودن داده به فایل

پنجره ها

هدف کار: آموزش و استفاده از عملگرهای زبان VB 6 برای کار با فایل ها انواع مختلف: فایل های متوالی (متن)، فایل های دسترسی تصادفی، فایل های باینری. تحقیق و استفاده از ابزار مشترکگفتگوبرای باز کردن و ذخیره فایل ها، انتخاب فونت و رنگ و استفاده از شی کلیپ بوردبرای ذخیره قطعات متن، با استفاده از مثال ایجاد یک ویرایشگر متن ساده.

سوالات کنترلی:

1. از چه راه هایی می توان یک فایل متنی را باز کرد؟ نحوه بستن متن و هر چیز دیگری باز کردن فایل?

2. چگونه داده ها در یک فایل متنی که برای نوشتن باز است نوشته می شود؟ تفاوت بین دستور Write و Print چیست؟

3. چگونه داده ها از باز برای خواندن خوانده می شوند فایل متنی? عملگرهای ورودی و خط ورودی چه تفاوتی با یکدیگر دارند؟ کدام تابع را می توان برای خواندن تعداد مشخصی از کاراکترها از یک فایل استفاده کرد؟ چگونه همه کاراکترهای یک فایل را بخوانیم؟

4. چیست نوع سفارشیداده ها و نحوه استفاده از این مفهوم هنگام کار با فایل های دسترسی تصادفی ( راف)?

5. استفاده از کدام عملگرها از فایل رافسوابق نیز در فایل خوانده می شود رافآیا نوشته های جدید نوشته می شود؟

6. هنگام کار با فایل، شاخص برای چه منظوری تعیین و استفاده می شود؟ راف?

7. استفاده از فایل های باینری چه ویژگی هایی دارد؟ چگونه باز می شوند؟ خواندن از یک فایل باینری و نوشتن به یک فایل باینری چگونه انجام می شود؟

8. نحوه استفاده از کنترل مشترکگفتگوبرای بارگذاری محتوای یک فایل متنی در یک فیلد متنی؟ چگونه می توانم از همان کنترل برای ذخیره متن ویرایش شده در یک فایل متنی استفاده کنم؟

9. نحوه استفاده از کنترل مشترکگفتگوبرای دانلود محتویات فایل rtfدر زمینه ثروتمندجعبه متن? نحوه استفاده از همان کنترل برای ذخیره متن ویرایش شده در یک فایل rtf?

10. نحوه استفاده از کنترل مشترکگفتگوبرای تغییر مقادیر پارامتر فونت و تغییر رنگ متن در پنجره جعبه متن(یا یک قطعه متن انتخاب شده در پنجره ثروتمندجعبه متن)?

مثال 7.1. برنامه ای را در نظر بگیرید که نوشتن در یک فایل متنی (و خواندن از یک فایل متنی) "اطلاعات کارمند" را نشان می دهد - خطوطی که هر کدام شامل شماره شناسایی، نام کامل، تاریخ تولد و محل تولد کارمند است. سطرها یک جدول را تشکیل می دهند که فرم صفحه نمایش 4 کنترل Combo Box را شبیه سازی می کند (شکل 7.1)، آرایه ای از اشیاء Comb(i) را تشکیل می دهد که خاصیت Style آنها دارای مقدار 1 - SimpleCombo است.

خطی را که باید حذف شود انتخاب کنید، vbExclamation

Comb(j).RemoveItem i

درج کنید ورودی جدیدبه میز:

زیر خصوصی mnuInsert_Click()

i% = Comb(0).ListIndex

اگر من< 0 Then

MsgBox "خط مورد نظر را که باید قبل از آن درج شود برجسته کنید"، vbExclamation

Comb(0).AddItem InputBox("شماره را وارد کنید")، i

Comb(1).AddItem InputBox("نام خود را وارد کنید")، i

Comb(2).AddItem InputBox("تولدت را وارد کن.")، i

Comb(3).AddItem InputBox("محل تولد را وارد کنید.")، i

تغییر ورودی جدول:

زیر خصوصی mnuUpdate_Click()

i% = Comb(0).ListIndex

اگر من< 0 Then

MsgBox "Highlight the row to be modified"، vbExclamation

Comb(0).List(i) = InputBox("شماره را وارد کنید"، Comb(0).List(i))

Comb(1).List(i) = InputBox("نام خود را وارد کنید"، Comb(1).List(i))

Comb(2).List(i) = InputBox("تولدت را وارد کن."، Comb(2).List(i))

Comb(3).List(i) = InputBox("محل تولد را وارد کنید."، Comb(3).List(i))

پاک کردن کل جدول:

زیر خصوصی mnuClear_Click()

پر کردن جدول با اطلاعات یک فایل متنی:

زیر خصوصی mnuLoad_Click()

برای ورودی به عنوان شماره 1، "person. txt" را باز کنید

ورودی شماره 1، numb، fio، bdate، bloc

Comb(0).AddItem numb

Comb(1).AddItem fio

Comb(2).AddItem bdate

بلوک Comb(3).AddItem

نوشتن اطلاعات جدول در یک فایل متنی:

زیر خصوصی mnuSave_Click()

N% = Comb(0).ListCount

برای خروجی شماره 1، "person. txt" را باز کنید

برای i = 0 به N - 1

numb = Val(Comb(0).List(i))

fio = شانه (1). لیست (i)

bdate = CDate(Comb(2).List(i))

bloc = شانه (3). لیست (i)

شماره 1، بی حس، fio، bdate، block را بنویسید

خاموش کردن برنامه:

زیر خصوصی mnuExit_Click()

مثال 7.2 . برنامه ای را در نظر بگیرید که استفاده از کنترل ها را نشان می دهد مشترکگفتگوبرای باز کردن و ذخیره یک فایل، انتخاب فونت و رنگ، و ویرایش متن.

فرمت فایل TXTدر قسمت متن (فیلد سمت چپ در شکل 7.2) و فرمت فایل بارگذاری می شود RTF- در میدان ثروتمندجعبه متن(حاشیه سمت راست در شکل 7.2).

هدف - شی

کلاس

هدف - شی

ویژگی

هدف - شی

ارزش ملک

"پانل های عمومی

گفتگو"

باز کردن/ذخیره به عنوان برگه

برگه فونت

زبانه رنگ

جدول ویژگی های دستورات منو را نشان نمی دهد فونت, رنگو ویرایش کنید. در زیر کد رویه نیز فقط برای دستورات منو است فایل (باز کن, صرفه جوییو صرفه جوییمانند). کدنویسی برای سایر دستورات منو موضوع وظیفه دوم این کار است.

زیر خصوصی mnuOpen_Click()

CommonDialog1.ShowOpen

F$ = CommonDialog1.FileName

اگر Right(F, 3) = "rtf" سپس

RichTextBox1.LoadFile F

ElseIf Right(F, 3) = "txt" سپس

F را برای ورودی به عنوان شماره 1 باز کنید

S$ = ورودی (N, 1)

زیر خصوصی mnuSave_Click()

CommonDialog1.ShowSave

F$ = CommonDialog1.FileName

زیر خصوصی mnuSaveAs_Click()

CommonDialog1.ShowSave

F$ = CommonDialog1.FileName

RichTextBox1.SaveFile F، rtfRTF

در طول این کار، دانش آموز باید 2 کار را انجام دهد.

تمرین 1. در فرآیند تکمیل تکلیف، دانش آموزان بر قابلیت های موجود در VB 6 برای کار با فایل های دسترسی تصادفی تسلط پیدا می کنند. RAFتصادفیدسترسی داشته باشیدفایل).

برای یک جدول پایگاه داده معین، یک نوع داده کاربر اعلان می شود، یک متغیر از این نوع اعلان می شود (آموزش، صفحات 108-112)، رویه هایی که از یک متغیر نوع کاربر استفاده می کنند، کامپایل و اشکال زدایی می شوند.

به طور خاص، رویه هایی برای دستورات منو اجرا می شوند در فایل بنویسیدRAFو خواندن از فایلRAF. مانند مثال 7.1، آرایه ای از اشیا برای ویرایش داده ها استفاده می شود ترکیبیجعبهو منو ویرایش کنیدبا پنج دستور زیر منو: یک یادداشت اضافه کنید, حذف ورودی, ورودی را درج کنید, ویرایش مدخل, جدول شفاف.

انتخاب 1.

یک نوع داده سفارشی برای جدول "Car" (جدول 7.1) پایگاه داده "Car Service" اعلام کنید.

ماشین

ماشین

خرابی ها

خط پایین جدول 7.1 انواع فیلدها را نشان می دهد.

گزینه 2.

یک نوع داده سفارشی برای جدول "عیوب" (جدول 7.2) پایگاه داده "سرویس خودرو" اعلام کنید.

خرابی ها

نام

خرابی ها

قیمت

خط پایین جدول 7.2 انواع فیلدها را نشان می دهد.

با استفاده از مثال برنامه 7.1 به عنوان یک الگو، ورود و ویرایش داده ها را برای جدول نشان داده شده سازماندهی کنید، آن داده ها را در یک فایل دسترسی تصادفی بنویسید، و داده ها را از یک فایل دسترسی تصادفی بخوانید. مانند مثال 7.1، این اقدامات به عنوان عملیات دستورات منو که در شکل نشان داده شده است، اجرا می شوند. 7.1.

وظیفه 2. در طول انجام تکلیف، دانش آموزان ویژگی های جدیدی را به برنامه مثال 2 اضافه می کنند که به برنامه اجازه می دهد به عنوان یک ویرایشگر متن ساده مشاهده شود.

انتخاب 1 مشترکگفتگواجرای دستورات منو فونتو رنگ(با منوی فرعی رنگ کاراکترو رنگ پس زمینه). با استفاده از این دستورات، باید بتوانید یک قلم (نام، سبک و اندازه آن) را برای قطعه متن انتخاب شده در پنجره انتخاب کنید. ثروتمندجعبه متنو همچنین انتخاب رنگ کاراکترهای قطعه انتخاب شده و انتخاب رنگ پس زمینه کل پنجره.

توجه داشته باشید:هنگام تنظیم یک شی مشترکگفتگوبرای انتخاب فونت با استفاده از ویژگی (Custom)، مطمئن شوید که مقدار ویژگی Flags را روی 1، 2 یا 3 تنظیم کنید (به دفترچه راهنما، صفحه 183 مراجعه کنید).

گزینه 2. با استفاده از کنترل مشترکگفتگواجرای دستورات منو ویرایش کنید(زیر منو کپی 🀄, برشو چسباندن) که هدف آن است کپی بردارییا حذفبه کلیپ بورد قطعه متن انتخاب شده و همچنین درج کنیدبه قسمت متن انتخاب شده از محتویات کلیپ بورد.

توجه داشته باشید:به کلیپ بورد (شیء کلیپ بورد) می توانید از متدهای SetText و GetText استفاده کنید:

کلیپ بورد. SetText RichTextBox1.SelText

RichTextBox1.SelText = کلیپ بورد. GetText

هر برنامه ای باید داده ها را روی دیسک ذخیره کرده و از روی دیسک بخواند. برای مثال، برای ذخیره تنظیمات برنامه، این مورد ضروری است؛ بعید است کاربر برنامه را دوست داشته باشد، برنامه ای که باید دفعه بعد که راه اندازی شد دوباره پیکربندی شود.

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

توصیف کننده فایل

برای کار با فایل ها سیستم عاملاز کانال های I/O استفاده می کند. هر فایل باز شده شماره مخصوص به خود را دارد.

در ویژوال بیسیک یک تابع وجود دارد فایل رایگان، که تعداد کانال رایگانی را که می توان از آن برای کار با فایل استفاده کرد، برمی گرداند. اگر کانال رایگان وجود نداشته باشد، خطایی رخ می دهد.

فایل رایگان[(Range Number) ]

Range Number-پارامتر اختیاری که به شما امکان می دهد محدوده مقادیر کانال های رایگان را تعریف کنید Range Number= 0 (پیش فرض)، سپس شماره کانال از محدوده 1 - 255، و اگر 1، از محدوده 256 - 511 برگردانده می شود.

MyFile = FreeFile "متغیر MyFile یک کانال رایگان اختصاص داده شده است و اکنون می توان از آن برای کار با فایل ها استفاده کرد

کار با فایل های متنی

اغلب با فایل های متنی مواجه می شوید. فایل های متنی از مجموعه کاراکترهای ASCII (کد استاندارد آمریکایی برای تبادل اطلاعات) تشکیل شده است.

قبل از شروع نوشتن/خواندن داده ها، فایل باید باز شود؛ این کار با استفاده از اپراتور انجام می شود باز کن (نام فایل) برای #شماره پرونده، جایی که:

ورودی- فایل را برای خواندن باز کنید، اگر فایل وجود نداشته باشد، خطایی رخ می دهد.

خروجی- برای نوشتن، اگر فایل وجود نداشته باشد، ایجاد می شود و اگر فایل وجود داشته باشد، بازنویسی می شود.

ضمیمه- برای اضافه کردن، اگر فایل وجود نداشته باشد، ایجاد می شود و اگر فایل وجود داشته باشد، داده ها به انتهای فایل اضافه می شوند.

خواندن فایل های متنی به دو صورت انجام می شود: خواندن کاراکتر به کاراکتر، برای این کار از تابع استفاده کنید ورودی(تعداد_شخصیت_خوانده شده, #شماره پرونده) و خط به خط، تابع برای این مورد استفاده می شود ورودی خط شمارهشماره پرونده, کجا_بخوانیم.

MyFile را کم رنگ کنید

Dim S به عنوان رشته "متغیر برای ذخیره داده های خوانده شده

MyFile = FreeFile

برای ورودی به عنوان #MyFile ("C:\TEST.txt") را باز کنید

ورودی خط #MyFile، S خط اول را از فایل TEST.TXT در متغیر S بخوانید

MyFile را کم رنگ کنید "یک متغیر برای یک فایل رایگان اعلام کنید

Dim i به عنوان عدد صحیح "متغیر برای حلقه

Dim tS As String "متغیر برای خواندن رشته ها

Dim S به عنوان رشته "متغیر برای ذخیره داده های نهایی

MyFile = FreeFile «تخصیص یک کانال رایگان برای کار با فایل ها

"فایل TEST.TXT را برای خواندن باز کنید

برای i = 1 تا 5

ورودی خط #MyFile، tS "خواندن فایل TEST.TXT خط به خط

اگر i => 5 سپس S = tS اگر خط پنجم است، آن را در متغیر S ذخیره کنید

بعدی منم

بستن #MyFile "فایل را ببندید

Dim MyFile "یک متغیر برای یک فایل رایگان اعلام کنید

Dim S As String "متغیر برای ذخیره داده های خوانده شده

MyFile = FreeFile «تخصیص یک کانال رایگان برای کار با فایل ها

برای ورودی به عنوان #MyFile ("C:\TEST.txt") را باز کنید "فایل TEST.TXT را برای خواندن باز کنید

S = ورودی$(LOG(1)، 1) "کل فایل را در متغیر S بخوانید

بستن #MyFile "فایل را ببندید

عملگرهایی برای نوشتن روی یک فایل وجود دارد چاپ#شماره پرونده, داده هاو نوشتن #شماره پرونده, داده ها. تنها تفاوت این اپراتورها در این است نوشتنداده ها را در گیومه می نویسد و چاپبدون نقل قول.

کد زیر در درایو C ایجاد می شود:\ فایل جدید TEST.TXT و دو خط در آن بنویسید، اولی بدون نقل قول، و دومی در نقل قول:

MyFile را کم رنگ کنید "یک متغیر برای یک فایل رایگان اعلام کنید

MyFile = FreeFile «تخصیص یک کانال رایگان برای کار با فایل ها

برای خروجی به عنوان #MyFile ("C:\TEST.txt") را باز کنید "فایل TEST.TXT را برای نوشتن باز کنید

Print #MyFile، "این خط توسط اپراتور Print نوشته شده است، بدون نقل قول است..."

#MyFile را بنویسید، "این خط توسط عملگر Write نوشته شده است، در گیومه است..."

بستن #MyFile "فایل را ببندید

همین. همانطور که احتمالا قبلاً متوجه شده اید، از اپراتور برای بستن یک فایل استفاده می شود بستن #شماره پرونده، که در آن، # شماره پروندهلازم به ذکر نیست

مقاله کمی خام است، اما برای برنامه نویسان تازه کار مفید خواهد بود. دفعه بعد در مورد کار با فایل های باینری صحبت خواهم کرد.

8. ذخیره و خواندن اطلاعات

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

8.1. باز کردن فایل ها با استفاده از اپراتور "باز کن "

یک فایل یک ناحیه نامگذاری شده از هر دستگاه ذخیره سازی خارجی است. داده ها در حافظه کامپیوتر زنده هستند و فایل ها روی هارد دیسک زنده هستند. این برنامه مستقیماً با فایل ها کار نمی کند، بلکه از سیستم عامل به عنوان یک واسطه استفاده می کند.

دو نوع نام فایل وجود دارد: کامل - علاوه بر نام فایل، مکان فایل در رسانه خارجی نیز نشان داده شده است (به عنوان مثال، "C:\Program Files\Microsoft Visual Studio\VB98\VB 6.EXE" ) و کوتاه - فقط نام فایل (VB 6.EXE). اگر مکان فایل مشخص نشده باشد، در پوشه فعلی جستجو می شود، به طور پیش فرض پوشه ای که برنامه شما در آن قرار دارد. نام فایل فوری از دو بخش تشکیل شده است: نام فایل منحصر به فرد واقعی و پسوند آن. نام خود فایل را مشخص می کند و پسوند معمولاً فرمت فایل یا برنامه ای که توسط آن ایجاد شده است را نشان می دهد.

قبل از شروع کار با فایل، باید از سیستم عامل سوال کنید اشاره گر (توصیف کننده) فایل. برای به دست آوردن آن، از تابع "FreeFile" استفاده کنید. سپس با استفاده از عملگر "Open"، این اشاره گر با فایل مورد نیاز مرتبط می شود. فقط پس از این برنامه می تواند با آن کار کند. سینتکس باز کردن فایل به صورت زیر است:

یک نشانگر فایل رایگان دریافت کنید و آن را به یک متغیر اختصاص دهید

FileHandle% = FreeFile

فایل را باز کنید

باز کردن FilePath_

به عنوان [#]FileHandle%

... (کار با فایل)

[#]FileHandle را ببندید

· FileHandle % – متغیری که نشانگر فایل را ذخیره می کند.

· FreeFile – نام تابعی که نشانگر فایل را برمی گرداند.

· باز - نام اپراتور؛

· FilePath – نام کامل فایل؛

· برای – یک کلمه کلیدی که با توضیح حالت دسترسی به فایل همراه است.

· حالت - حالت دسترسی به فایل (جدول 15 را ببینید).

جدول 15

حالت های دسترسی به فایل

حالت های دسترسی

شرح

ضمیمه

افزودن داده به انتهای یک فایل متنی موجود. اگر فایل وجود نداشته باشد، ایجاد می شود

دودویی

باز کردن یک فایل در حالت باینری، به عنوان مثال. به عنوان مجموعه ای از بایت ها اگر فایل وجود نداشته باشد اما ایجاد خواهد شد

ورودی

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

خروجی

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

تصادفی

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

· دسترسی – یک کلمه کلیدی اختیاری و به دنبال آن شرحی از نوع دسترسی.

· AccessType – شرح نوع دسترسی:

· خواندن - خواندن;

· نوشتن – ثبت؛

· Read Write – خواندن و نوشتن.

توجه داشته باشید

با حالت‌های دسترسی Append و Output، فقط نوع دسترسی Write، با Input فقط خواندن، و با Binary و Random هر سه نوع دسترسی در دسترس هستند.

· LockType یک پارامتر اختیاری است که تعیین می کند آیا برنامه های دیگر می توانند از این فایل در زمانی که برنامه شما با آن کار می کند استفاده کنند یا خیر. معمولاً با کار در شبکه همراه است (جدول 16 را ببینید).

جدول 16

مقادیر ممکن برای پارامتر LockType

معنی

شرح

به اشتراک گذاشته شده است

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

قفل خواندن

خواندن فایل مسدود شده است، اما نوشتن مجاز است

قفل نوشتن

نوشتن در فایل مسدود شده است، اما خواندن مجاز است

قفل خواندن نوشتن

هم خواندن و هم نوشتن در آن ممنوع است

· همانطور که یک کلمه کلیدی است که با یک اشاره گر فایل دنبال می شود.

· # نمادی است که نشان می دهد مقدار زیر نشانگر فایل است.

· Len یک کلمه کلیدی اختیاری است که باید با پارامتری که طول ورودی را مشخص می کند دنبال شود.

· CharInBuffer ٪ - طول رکورد برای یک فایل باز شده در حالت دسترسی تصادفی (تصادفی).

· Close عبارتی است که فایل مرتبط با دسته مشخص شده را می بندد.

بسته شدن یک فایل پس از پایان کار با آن مهم است. عبارت "Close" نشانگر فایل و ناحیه حافظه مرتبط را آزاد می کند.

هنگام کار با یک فایل، یعنی هنگام خواندن از روی آن، تعیین انتهای فایل بسیار مهم است. می توان آن را با استفاده از تابع EOF (پایان فایل) تعریف کرد:

EOF (FileHandle)

· EOF - نام تابع؛

· FileHandle یک اشاره گر به فایلی است که انتهای آن مشخص می شود.

در صورت رسیدن به انتهای فایل، تابع True را برمی گرداند، در غیر این صورت False را برمی گرداند.

8.2. خواندن و نوشتن در یک فایل متنی

فایل متنی در حالت دسترسی "ورودی"، "خروجی" یا "افزودن" باز می شود (جدول 15 را ببینید). ویژگی این حالت این است که فقط با کاراکترهای قابل چاپ خاص کار می کند. کار با نمادهای سرویس بی فایده است.

برای ثبت اطلاعات از دو عملگر Print و Write استفاده کنید که نحو آنها به شرح زیر است:

چاپ #FileHandle%, VarBuffer [;]

نوشتن #FileHandle%, VarBuffer [;]

· چاپ / نوشتن - کلمات کلیدی عملگر.

· #FileHandle % - نشانگر فایلی که اطلاعات در آن قرار می گیرد.

· VarBuffer – مقداری که روی فایل نوشته می شود.

· ; - یک پارامتر اختیاری که هنگام نوشتن روی یک فایل متنی استفاده می شود، به این معنی است که مقدار بعدی در همان خط و در صورت عدم وجود آن در خط بعدی نوشته می شود.

برای خواندن اطلاعات از یک فایل، از عملگرهای "Input" و "Line Input" استفاده کنید. نحو مشابه یکدیگر است:

ورودی خط #FileHandle%, VarBuffer

ورودی #FileHandle%, VarBuffer

· خط ورودی / ورودی - کلمات کلیدی اپراتور.

· #FileHandle ٪ - نشانگر فایلی که اطلاعات از آن خوانده می شود.

· VarBuffer - متغیری که اطلاعات در آن خوانده می شود.

تفاوت بین عملگرهای "ورودی خط" و "ورودی" در این است که اولی فقط برای فایل های متنی در نظر گرفته شده است و دومی - برای هر کدام. در مورد فایل‌های متنی، «ورودی» داده‌ها را در یک خط تا اولین جداکننده می‌خواند (برای داده‌های متنی جداکننده «،» (کاما) و برای داده‌های عددی - «» (فاصله) و «،» است). و «ورودی خط» کل خط را به یکباره می خواند، بدون توجه به هر گونه جداکننده.

توجه داشته باشید

ویژوال بیسیک هیچ وسیله ای برای کنترل فرمت فایل های ایجاد شده قبلی ندارد. بنابراین، نماد "2" را می توان به عنوان عدد مربوطه خواند و بالعکس.

8.3. کار با فایل های باینری

فایل ها در باز می شوند فرمت باینریاپراتور "باز" ​​در حالت "باینری". ویژگی متمایز این حالت این است که کار با فایل منحصراً بر روی بایت های خاص متمرکز است. از آنجایی که ویژوال بیسیک می تواند مستقیماً مکان مورد نظر را در یک فایل آدرس دهی کند، این حالت − نیز نامیده می شود حالت دسترسی مستقیم. یکی دیگر از ویژگی های این حالت امکان نوشتن و خواندن همزمان اطلاعات در قسمت های مختلف فایل بدون باز کردن مجدد آن است. نوشتن در یک فایل باز شده در حالت باینری با استفاده از نحو زیر انجام می شود:

#FileHandle%, , NameVar را قرار دهید

· Put - نام اپراتور ثبت اطلاعات.

· RecNumber - تعداد بایت فایلی که اطلاعات در آن نوشته می شود (پارامتر اختیاری).

· NameVar متغیری است که محتوای آن در فایل نوشته می شود.

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

#FileHandle%, , NameVar را دریافت کنید

· دریافت - نام اپراتور ضبط اطلاعات.

· FileHandle % - دسته فایل.

· RecNumber – تعداد بایت فایلی که اطلاعات از آن خوانده می شود (پارامتر اختیاری).

· NameVar - نام متغیری که اطلاعات خوانده شده در آن قرار می گیرد.

از آنجایی که حالت باینری روی بایت اطلاعات متمرکز است، هنگام خواندن از یک فایل، متغیر بافر باید یک نوع کاملاً تعریف شده داشته باشد: یا "Byte"، سپس مقدار عددی بایت خوانده می شود یا یک کاراکتر با طول ثابت. از یک کاراکتر، سپس بایت به عنوان یک کاراکتر خوانده می شود، ANSI، که کد آن مطابق با اندازه بایت است. این کاراکتر حتی می تواند یک کاراکتر کنترلی باشد که در مورد فایل های متنی نمی توان به آن دست یافت.

توجه داشته باشید

در غیاب پارامتر "RecNumber"، نوشتن یا خواندن اطلاعات در بایت بعدی فایل پس از بایتی که قبلاً با آن کار شده است، رخ می دهد.

8.4. دستکاری گرافیکی

همچنین می توانید تصاویر گرافیکی را از فایل ها ذخیره و استخراج کنید. برای استخراج یک تصویر از یک بیت مپ یا فایل آیکون و اختصاص آن به ویژگی "Picture" از کنترل های "PictureBox" و "Image"، از تابع "LoadPicture()" با نحو زیر استفاده کنید:

ImageCtrl.Picture = LoadPicture(FilePath)

· ImageCtrl – نام کنترل پنجره تصویر، کنترل تصویر، یا فرم.

· LoadPicture – نام تابع؛

· FilePath - نام کامل فایل.

SavePicture ImageCtrl .Picture، FilePath

· SavePicture – نام اپراتور.

· ImageCtrl – نام کنترل پنجره تصویر، کنترل تصویر، یا فرم.

· تصویر - نام ویژگی شی مسئول تصویر.

· FilePath - نام کامل فایل که محل آن را روی دیسک نشان می دهد.

8.5. کار با داده ها در رجیستری

رجیستری ویندوز می تواند برای ذخیره قطعات کوچک اطلاعات در قالب کاراکتر استفاده شود. ویژوال بیسیک چهار رویه دارد که می توانید برای دسترسی به آن استفاده کنید. استفاده از آنها بسیار آسان است، اما یک اشکال اصلی دارند: شما فقط می توانید از یک کلید رجیستری خاص به داده ها دسترسی داشته باشید: "MyComputer\HKEY_CURRENT_USER\Software\VB and VBA Program Settings". برای دسترسی به سایر بخش های رجیستری، باید از توابع ویژه "Win 32 API" استفاده کنید.

برای دریافت مقدار یک تنظیمات از بخش ویژوال بیسیک رجیستری ویندوز، باید از تابع زیر استفاده کنید:

MyString = GetSetting (VBKeyName, Section, Key [, Default])

· MyString – رشته ای برای ذخیره مقدار برگردانده شده توسط تابع.

· GetSetting - نام تابع.

· VBKeyName یک مقدار رشته ای است که نام کلید فرعی VB/VBA داخلی است.

· کلید یک مقدار رشته ای است که نشان دهنده نام پارامتر در بخش است.

· پیش فرض - یک آرگومان اختیاری که در صورت بروز خطا (پارامتر از دست رفته) مقدار آن برگردانده می شود.

برای ذخیره یک مقدار در رجیستری ویندوز، از عبارت زیر استفاده کنید:

SaveSetting VBKeyName، Section، Key، MyString

· SaveSetting - نام اپراتور.

· MyString یک متغیر رشته ای است که مقدار یافت شده در آن قرار می گیرد.

برای به دست آوردن یک آرایه از رجیستری حاوی تمام مقادیر پارامترها از یک کلید فرعی خاص، از تابع زیر استفاده کنید:

MyVariant = SetAllSettings (VBKeyName، Section)

· MyVariant آرایه ای از مقادیر از نوع "Variant" است که توسط تابع برگردانده می شود.

· SetAllSettings – نام تابع.

· بخش - یک مقدار رشته ای که یک بخش یا زیربخش از یک برنامه خاص را نشان می دهد.

برای حذف یک بخش کامل از پارامترها، از دستوری با نحو زیر استفاده کنید:

DeleteSetting VBKeyName، بخش، کلید

· DeleteSetting - نام اپراتور.

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

  1. چگونه می توانید برخی از اطلاعات را به مدت طولانی ذخیره کنید؟
  2. فایل چیست؟
  3. چه نام فایل هایی را می شناسید؟
  4. دستور عملگر "Open" را ارائه دهید. هدف از پارامترهای آن را توضیح دهید.
  5. چگونه چندین برنامه می توانند به طور همزمان به یک فایل دسترسی داشته باشند؟
  6. چگونه تشخیص دهیم که اطلاعات یک فایل تمام شده است؟
  7. چرا بستن آن پس از کار با فایل توصیه می شود؟
  8. تفاوت بین حالت فایل متنی و باینری را در چه می بینید؟
  9. چگونه داده ها در حالت فایل متنی خوانده و نوشته می شوند؟
  10. چگونه داده ها در حالت فایل باینری خوانده و نوشته می شوند؟
  11. تفاوت بین عملگرهای "Print" و "Write" هنگام کار با فایل ها چیست؟
  12. تفاوت بین عملگرهای "Input" و "Line Input" هنگام کار با فایل ها چیست؟
  13. چگونه می توان با داده های گرافیکی کار کرد؟
  14. اصول اولیه کار با رجیستری ویندوز چیست؟



بالا