پنجره ها

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

سوالات آزمون:

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

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

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

4- نوع داده سفارشی چیست و این مفهوم هنگام کار با پرونده های دسترسی تصادفی چگونه استفاده می شود ( رف)?

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

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

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

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

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

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

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

خط مورد حذف را برجسته کنید "، vbExclamation

شانه (j) .RemoveItem من

"ثبت رکورد جدید در جدول:

Sub خصوصی mnuInsert_Click ()

i٪ \u003d شانه (0) .ListIndex

اگر من< 0 Then

MsgBox "خط را برای قرار دادن قبل از آن انتخاب کنید" ، vbExclamation

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

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

شانه (2) .AddItem InputBox ("تاریخ تولد را وارد کنید.") ، I

شانه (3) .AddItem InputBox ("محل تولد را وارد کنید.") ، I

the ورودی جدول را تغییر دهید:

Sub خصوصی mnuUpdate_Click ()

i٪ \u003d شانه (0) .ListIndex

اگر من< 0 Then

MsgBox "خط را برای اصلاح انتخاب کنید" ، vbExclamation

Comb (0) .List (i) \u003d InputBox ("Enter number"، Comb (0) .List (i))

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

Comb (2) .List (i) \u003d InputBox ("تاریخ تولد خود را وارد کنید"، Comb (2) .List (i))

Comb (3) .List (i) \u003d InputBox ("وارد محل تولد شوید"، Comb (3) .List (i))

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

زیر خصوصی mnuClear_Click ()

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

Sub خصوصی mnuLoad_Click ()

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

ورودی شماره 1 ، بی حس ، fio ، bdate ، بلوک

شانه (0). شماره را بی حس کنید

شانه (1). Fio اضافه کنید

شانه (2) .AddItem bdate

شانه (3). بلوک AddItem

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

Sub خصوصی mnuSave_Click ()

N٪ \u003d شانه (0) .ListCount

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

برای i \u003d 0 تا N - 1

numb \u003d Val (شانه (0). لیست (i))

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

bdate \u003d CDate (شانه (2). لیست (i))

بلوک \u003d شانه (3). لیست (i)

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

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

Sub خصوصی mnuExit_Click ()

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

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

هدف - شی

کلاس

هدف - شی

ویژگی

هدف - شی

ارزش املاک

"هیئت های عمومی

گفتگو "

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

برگه قلم

برگه رنگی

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

Sub خصوصی mnuOpen_Click ()

CommonDialog1.ShowOpen

F $ \u003d CommonDialog1.FileName

If Right (F، 3) \u003d "rtf" سپس

RichTextBox1.LoadFile F

ElseIf Right (F ، 3) \u003d "txt" سپس

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

S $ \u003d ورودی (N ، 1)

Sub خصوصی mnuSave_Click ()

CommonDialog1.ShowSave

F $ \u003d CommonDialog1.FileName

Sub خصوصی mnuSaveAs_Click ()

CommonDialog1.ShowSave

F $ \u003d CommonDialog1.FileName

RichTextBox1.SaveFile F ، rtfRTF

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

تمرین 1. در مراحل تکمیل تکلیف ، دانش آموزان بر توانایی کار با پرونده های دسترسی تصادفی تسلط دارند ( RAF -تصادفیدسترسیفایل).

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

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

انتخاب 1.

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

ماشین

ماشین

سو mal عملکرد

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

گزینه 2.

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

سو mal عملکرد

نام

سو mal عملکرد

هزینه

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

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

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

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

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

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

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

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

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

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

این مقاله به کار با پرونده های متنی با استفاده از Visual Basic می پردازد.

توصیف کننده پرونده

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

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

FreeFile [(RangeNumber) ]

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

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

کار با پرونده های متنی

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

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

ورودی - پرونده را برای خواندن باز کنید ، اگر پرونده وجود ندارد ، خطایی رخ می دهد.

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

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

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

کم کردن MyFile

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

MyFile \u003d پرونده رایگان

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

ورودی خط #MyFile ، S "خواندن سطر اول از پرونده TEST.TXT در متغیر S

کم کردن MyFile "یک متغیر را برای یک پرونده رایگان اعلام کنید

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

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

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

MyFile \u003d پرونده رایگان "اختصاص کانال رایگان برای کار با پرونده ها

"باز کردن پرونده TEST.TXT برای خواندن

برای i \u003d 1 تا 5

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

اگر i \u003d\u003e 5 سپس S \u003d tS "اگر خط پنجم باشد ، پس ما آن را در متغیر S ذخیره می کنیم

بعدی منم

بستن # پرونده من "پرونده را ببندید

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

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

MyFile \u003d پرونده رایگان "اختصاص کانال رایگان برای کار با پرونده ها

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

S \u003d ورودی $ (LOG (1) ، 1) "خواندن کل پرونده در متغیر S

بستن # پرونده من "پرونده را ببندید

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

کد زیر یک پرونده جدید TEST.TXT در درایو C ایجاد می کند: \\ و دو خط در آن بنویسید ، اولین خط بدون نقل قول و دیگری به صورت نقل قول:

کم کردن MyFile "یک متغیر را برای یک پرونده رایگان اعلام کنید

MyFile \u003d پرونده رایگان "اختصاص کانال رایگان برای کار با پرونده ها

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

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

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

بستن # پرونده من "پرونده را ببندید

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

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

8. صرفه جویی و خواندن اطلاعات

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

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

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

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

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

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

FileHandle٪ \u003d پرونده آزاد

پرونده را باز کنید

FilePath را باز کنید _

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

... (کار با یک پرونده)

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

· FileHandle٪ - متغیری که نشانگر پرونده را ذخیره می کند.

· FreeFile - نام تابعی است که نشانگر پرونده را برمی گرداند.

· Open - نام اپراتور ؛

· FilePath نام کامل پرونده است.

· برای - یک کلمه کلیدی به دنبال شرح حالت دسترسی فایل.

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

جدول 15

حالت های دسترسی به پرونده

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

شرح

ضمیمه کنید

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

دودویی

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

ورودی

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

خروجی

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

تصادفی

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

· Access یک کلمه کلیدی اختیاری است که به دنبال آن توصیف نوع دسترسی است.

· AccessType - توصیف نوع دسترسی:

· خواندن - خواندن؛

· نوشتن - نوشتن؛

· بخوان بنویس - بخوان و بنویس.

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

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

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

جدول 16

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

ارزش

شرح

مشترک

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

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

خواندن پرونده مسدود شده است ، اما نوشتن مجاز است

قفل نوشتن

نوشتن در پرونده مسدود شده است ، اما خواندن مجاز است

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

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

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

· # آیا یک کاراکتر نشان می دهد که مقدار زیر آن یک نشانگر پرونده است.

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

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

· بستن گزاره ای است که پرونده مرتبط با توصیفگر مشخص شده را می بندد.

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

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

EOF (FileHandle)

· EOF - نام عملکرد ؛

· FileHandle دسته پرونده است که انتهای آن را مشخص می کند.

اگر انتهای پرونده به دست آمده باشد ، این تابع True را برمی گرداند ، در غیر این صورت False را برمی گرداند.

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

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

برای نوشتن اطلاعات ، از دو عملگر "چاپ" و "نوشتن" استفاده کنید ، نحو آن به شرح زیر است:

چاپ # FileHandle٪، VarBuffer [؛]

# FileHandle٪ ، VarBuffer را بنویسید [؛]

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

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

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

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

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

ورودی خط # FileHandle٪ ، VarBuffer

ورودی # FileHandle٪ ، VarBuffer

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

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

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

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

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

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

8.3 کار با پرونده های باینری

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

# FileHandle٪ را قرار دهید ، "NameVar"

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

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

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

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

# FileHandle٪ ،، NameVar را دریافت کنید

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

· FileHandle٪ - نشانگر پرونده.

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

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

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

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

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

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

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

ImageCtrl.Picture \u003d LoadPicture (FilePath)

· ImageCtrl - نام کنترل پنجره عکس ، کنترل تصویر یا فرم ؛

· LoadPicture نام تابع است.

· FilePath نام کامل پرونده است.

SavePicture ImageCtrl .تصویر ، FilePath

· SavePicture - نام اپراتور ؛

· ImageCtrl - نام کنترل پنجره عکس ، کنترل تصویر یا فرم ؛

· تصویر - نام خاصیت شی object مسئول تصویر است.

· FilePath نام پرونده و مکان کاملاً واجد شرایط روی دیسک است.

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

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

برای دریافت مقدار یک پارامتر از یک کلید Visual Basic در رجیستری ویندوز ، از عملکرد زیر استفاده کنید:

MyString \u003d GetSetting (VBKeyName ، بخش ، کلید [، پیش فرض])

· MyString - رشته ای برای ذخیره مقدار برگشتی توسط تابع ؛

· GetSetting نام تابع است.

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

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

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

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

SaveSetting VBKeyName، Section، Key، MyString

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

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

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

MyVariant \u003d SetAllSettings (نام VBKeyName ، بخش)

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

· SetAllSettings نام تابع است.

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

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

DeleteSetting VBKeyName، Section، Key

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

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

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