เป้าหมายของงาน: การเรียนรู้และการใช้ตัวดำเนินการภาษา VB 6 เพื่อทำงานกับไฟล์ หลากหลายชนิด: ไฟล์ลำดับ (ข้อความ), ไฟล์เข้าถึงโดยสุ่ม, ไฟล์ไบนารี การวิจัยและการใช้เครื่องมือ ทั่วไปกล่องโต้ตอบเพื่อเปิดและบันทึกไฟล์ เลือกแบบอักษรและสี และใช้วัตถุ คลิปบอร์ดสำหรับเก็บเศษข้อความ โดยใช้ตัวอย่างการสร้างโปรแกรมแก้ไขข้อความอย่างง่าย
คำถามควบคุม:
1. มีวิธีใดบ้างในการเปิดไฟล์ข้อความ วิธีการปิดข้อความและอื่น ๆ เปิดไฟล์?
2. ข้อมูลถูกเขียนไปยังไฟล์ข้อความที่เขียนได้อย่างไร? ความแตกต่างระหว่างคำสั่ง Write และ Print คืออะไร?
3. ข้อมูลที่อ่านจากไฟล์ข้อความเปิดให้อ่านได้อย่างไร? อะไรคือความแตกต่างระหว่างตัวดำเนินการ Input และ Line Input? ฟังก์ชันใดสามารถใช้อ่านอักขระตามจำนวนที่ระบุจากไฟล์ได้ วิธีอ่านอักขระทั้งหมดของไฟล์
4. ประเภทข้อมูลที่กำหนดเองคืออะไร และแนวคิดนี้ใช้อย่างไรเมื่อทำงานกับไฟล์เข้าถึงโดยสุ่ม ( กองทัพอากาศ)?
5. ด้วยตัวดำเนินการใดจากไฟล์ กองทัพอากาศบันทึกถูกอ่านและลงในไฟล์ กองทัพอากาศบันทึกใหม่ที่กำลังเขียน?
6. ดัชนีถูกกำหนดและใช้เมื่อทำงานกับไฟล์เพื่อจุดประสงค์ใด กองทัพอากาศ?
7. คุณสมบัติของการใช้ไฟล์ไบนารีคืออะไร? พวกเขาเปิดได้อย่างไร? การอ่านจากไฟล์ไบนารีและการเขียนไปยังไฟล์ไบนารีเป็นอย่างไร
8. วิธีการใช้การควบคุม ทั่วไปกล่องโต้ตอบเพื่อโหลดเนื้อหาของไฟล์ข้อความลงในช่องข้อความ? จะใช้ตัวควบคุมเดียวกันเพื่อบันทึกข้อความที่แก้ไขในไฟล์ข้อความได้อย่างไร
9. คุณจะใช้การควบคุมได้อย่างไร ทั่วไปกล่องโต้ตอบเพื่อดาวน์โหลดไฟล์เนื้อหา rtfในสนาม รวยกล่องข้อความ? วิธีใช้ตัวควบคุมเดียวกันเพื่อบันทึกข้อความที่แก้ไขลงในไฟล์ rtf?
10. คุณจะใช้การควบคุมได้อย่างไร ทั่วไปกล่องโต้ตอบเพื่อเปลี่ยนค่าของพารามิเตอร์แบบอักษรและเปลี่ยนสีของข้อความในหน้าต่าง กล่องข้อความ(หรือข้อความที่เลือกในหน้าต่าง รวยกล่องข้อความ)?
ตัวอย่าง 7.1 พิจารณาใบสมัครที่สาธิตการเขียนถึง (และอ่านจากไฟล์ข้อความ) "รายละเอียดพนักงาน"—สตริงแต่ละรายการประกอบด้วยหมายเลขประจำตัวของพนักงาน ชื่อนามสกุล วันเดือนปีเกิด และสถานที่เกิด แถวสร้างตารางที่จะถูกเลียนแบบในรูปแบบหน้าจอโดยตัวควบคุม Combo Box 4 ตัว (รูปที่ 7.1) ซึ่งสร้างอาร์เรย์ของวัตถุ Comb(i) โดยตั้งค่าคุณสมบัติ Style เป็น 1 - SimpleCombo
เน้นบรรทัดที่จะลบ", vbExclamation
หวี(ญ).RemoveItem i
'แทรก รายการใหม่ไปที่ตาราง:
ส่วนตัวย่อย mnuInsert_Click()
ผม% = หวี(0).ListIndex
ถ้าฉัน< 0 Then
MsgBox "เลือกบรรทัดที่จะใส่ก่อน", vbExclamation
หวี(0).AddItem InputBox("ป้อนหมายเลข"), i
หวี(1).AddItem InputBox("ป้อนชื่อ"), i
หวี(2).AddItem InputBox("ป้อนวันเกิด"), i
หวี(3).AddItem InputBox("ป้อนสถานที่เกิด"), i
'เปลี่ยนรายการในตาราง:
ส่วนตัวย่อย mnuUpdate_Click()
ผม% = หวี(0).ListIndex
ถ้าฉัน< 0 Then
MsgBox "เลือกบรรทัดที่จะแก้ไข", 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()
เปิด "person.txt" เพื่อป้อนเป็น #1
อินพุต #1, มึน, fio, bdate, bloc
หวี (0) เพิ่มรายการมึนงง
หวี(1).AddItem fio
หวี (2). เพิ่มรายการ bdate
หวี (3) บล็อก AddItem
‘ การเขียนรายละเอียดตารางไปยังไฟล์ข้อความ:
ส่วนตัวย่อย mnuSave_Click()
N% = หวี(0).ListCount
เปิด "person.txt" สำหรับเอาต์พุตเป็น #1
สำหรับ i = 0 ถึง N - 1
ชา = Val(หวี(0).รายการ(i))
fio = หวี (1). รายการ (i)
bdate = CDate(หวี(2).รายการ(i))
bloc = หวี (3). รายการ (i)
เขียน #1, มึน, fio, bdate, bloc
‘ การปิดแอปพลิเคชัน:
ส่วนตัวย่อย mnuExit_Click()
ตัวอย่าง 7.2 . พิจารณาแอปพลิเคชันที่สาธิตการใช้ตัวควบคุม ทั่วไปกล่องโต้ตอบเพื่อเปิดและบันทึกไฟล์ เลือกฟอนต์และสี และแก้ไขข้อความ
ฟอร์แมตไฟล์ TXTจะถูกโหลดลงในช่องข้อความ (ช่องซ้ายในรูปที่ 7.2) และไฟล์รูปแบบ ร.ฟ.ท- ในสนาม รวยกล่องข้อความ(ระยะขอบขวาในรูปที่ 7.2)
วัตถุ
ระดับ
วัตถุ
คุณสมบัติ
วัตถุ
มูลค่าทรัพย์สิน
“แผงทั่วไป
บทสนทนา”
แท็บเปิด/บันทึกเป็น
แท็บแบบอักษร
แท็บสี
ตารางไม่แสดงคุณสมบัติของเมนูคำสั่ง แบบอักษร, สีและ แก้ไข. ด้านล่างนี้เป็นรหัสขั้นตอนสำหรับคำสั่งเมนูเท่านั้น ไฟล์ (เปิด, บันทึกและ บันทึกเช่น). การคอมไพล์โค้ดสำหรับเมนูคำสั่งอื่นๆ เป็นหัวข้อของภารกิจที่ 2 ของงานนี้
ส่วนตัวย่อย mnuOpen_Click()
CommonDialog1.ShowOpen
F$ = CommonDialog1.ชื่อไฟล์
ถ้าใช่ (F, 3) = "rtf" แล้ว
RichTextBox1.LoadFile F
ElseIf Right(F, 3) = "txt" จากนั้น
เปิด F เพื่อป้อนเป็น #1
S$ = อินพุต (N, 1)
ส่วนตัวย่อย mnuSave_Click()
CommonDialog1.ShowSave
F$ = CommonDialog1.ชื่อไฟล์
ส่วนตัวย่อย mnuSaveAs_Click()
CommonDialog1.ShowSave
F$ = CommonDialog1.ชื่อไฟล์
RichTextBox1.SaveFile F, rtfRTF
ในหลักสูตรนี้นักเรียนต้องทำ 2 งาน
แบบฝึกหัด 1. ในกระบวนการทำงานให้เสร็จ นักเรียนจะเชี่ยวชาญความเป็นไปได้ในการทำงานกับไฟล์เข้าถึงโดยสุ่มที่มีอยู่ใน VB 6 ( กองทัพอากาศ-สุ่มเข้าถึงไฟล์).
สำหรับตารางฐานข้อมูลที่กำหนด จะมีการประกาศประเภทข้อมูลที่ผู้ใช้กำหนด ตัวแปรประเภทนี้จะถูกประกาศ (บทช่วยสอน หน้า 108 - 112) โพรซีเดอร์จะถูกคอมไพล์และดีบั๊กโดยใช้ตัวแปรประเภทที่ผู้ใช้กำหนด
โดยเฉพาะอย่างยิ่ง มีการใช้ขั้นตอนสำหรับคำสั่งเมนู เขียนลงไฟล์กองทัพอากาศและ อ่านจากไฟล์กองทัพอากาศ. ดังตัวอย่างที่ 7.1 อาร์เรย์ของอ็อบเจกต์ถูกใช้เพื่อแก้ไขข้อมูล คำสั่งผสมกล่องและเมนู แก้ไขด้วยห้าคำสั่งเมนูย่อย: เพิ่มบันทึก, ลบรายการ, ใส่รายการ, แก้ไขรายการ, ล้างตาราง.
ตัวเลือกที่ 1.
ประกาศประเภทข้อมูลที่กำหนดเองสำหรับตาราง "รถยนต์" (ตาราง 7.1) ของฐานข้อมูล "บริการรถยนต์"
รถ |
รถ |
ทำงานผิดปกติ |
แถวล่างของตารางที่ 7.1 แสดงประเภทของฟิลด์
ตัวเลือก 2.
ประกาศประเภทข้อมูลที่กำหนดเองสำหรับตาราง Faults (ตาราง 7.2) ของฐานข้อมูล Car Service
ทำงานผิดปกติ | ชื่อ ทำงานผิดปกติ | ราคา |
แถวล่างของตาราง 7.2 แสดงประเภทของฟิลด์
ใช้แอปพลิเคชันตัวอย่าง 7.1 เป็นตัวอย่าง จัดระเบียบการป้อนข้อมูลและการแก้ไขสำหรับตารางที่นำเสนอ เขียนข้อมูลนี้ลงในไฟล์เข้าถึงโดยสุ่ม และอ่านข้อมูลจากไฟล์เข้าถึงโดยสุ่ม ดังตัวอย่างที่ 7.1 การกระทำเหล่านี้ถูกนำมาใช้เป็นการทำงานของคำสั่งเมนูที่แสดงในรูปที่ 7.1.
ภารกิจที่ 2 ส่วนหนึ่งของกิจกรรม นักเรียนเพิ่มคุณลักษณะใหม่ให้กับแอปพลิเคชันตัวอย่าง 2 ซึ่งอนุญาตให้แอปพลิเคชันถือเป็นโปรแกรมแก้ไขข้อความอย่างง่าย
ตัวเลือกที่ 1 ทั่วไปกล่องโต้ตอบใช้คำสั่งเมนู แบบอักษรและ สี(มีเมนูย่อย สีตัวละครและ สีพื้นหลัง). ด้วยความช่วยเหลือของคำสั่งเหล่านี้ ควรเลือกแบบอักษร (ชื่อ ลักษณะ และขนาด) สำหรับส่วนของข้อความที่เลือกในหน้าต่าง รวยกล่องข้อความเช่นเดียวกับการเลือกสีของสัญลักษณ์ของส่วนที่เลือกและเลือกสีพื้นหลังของหน้าต่างทั้งหมดนี้
บันทึก:เมื่อตั้งวัตถุ ทั่วไปกล่องโต้ตอบในการเลือกฟอนต์โดยใช้คุณสมบัติ (กำหนดเอง) ต้องแน่ใจว่าได้ตั้งค่าของคุณสมบัติ Flags เป็น 1, 2 หรือ 3 (ดูคู่มือ, หน้า 183)
ตัวเลือก 2. โดยใช้การควบคุม ทั่วไปกล่องโต้ตอบใช้คำสั่งเมนู แก้ไข(เมนูย่อย สำเนา, ตัดและ แปะ) ซึ่งมีวัตถุประสงค์คือ การคัดลอกหรือ การกำจัดไปยังคลิปบอร์ดของส่วนข้อความที่เลือก เช่นเดียวกับ แทรกไปยังตำแหน่งที่เลือกของข้อความเนื้อหาของคลิปบอร์ด
บันทึก:ไปยังคลิปบอร์ด (object คลิปบอร์ด) คุณสามารถใช้เมธอด SetText และ GetText:
คลิปบอร์ด SetText RichTextBox1.SelText
RichTextBox1.SelText = คลิปบอร์ด รับข้อความ
8. การจัดเก็บและการอ่านข้อมูล
เพื่อให้หลังจากโปรแกรมสิ้นสุดลง ข้อมูลทั้งหมดที่สร้างขึ้นในหน่วยความจำจะไม่สูญหาย คุณต้องสามารถบันทึกข้อมูลลงในฮาร์ดดิสก์ได้ มิฉะนั้นข้อมูลทั้งหมดจะหายไปอย่างไร้ร่องรอย สามารถจัดเก็บและอ่านข้อมูลได้หลายวิธี ไฟล์ไบนารีและไฟล์ข้อความสามารถใช้ทำงานกับข้อมูลที่มีขนาดและรูปแบบต่างๆ ได้ คุณสามารถใช้ Windows Registry เพื่อเก็บข้อมูลจำนวนเล็กน้อยได้ และสำหรับงานที่ซับซ้อนที่สุด การใช้ฐานข้อมูลก็สมเหตุสมผล
8.1. การเปิดไฟล์ด้วย "เปิด "
ไฟล์เป็นพื้นที่ที่มีชื่อของสื่อบันทึกข้อมูลภายนอกใดๆ ข้อมูล "สด" ในหน่วยความจำของคอมพิวเตอร์และไฟล์ - บนฮาร์ดไดรฟ์ โปรแกรมไม่ได้ทำงานกับไฟล์โดยตรง แต่ใช้ระบบปฏิบัติการเป็นตัวกลาง
ชื่อไฟล์มีสองประเภท: เต็ม - นอกจากชื่อไฟล์แล้ว ยังระบุตำแหน่งของไฟล์ในสื่อภายนอกด้วย (ตัวอย่างเช่น “C:\Program Files\Microsoft Visual Studio\VB98\VB 6.EXE" ) และสั้น - เฉพาะชื่อไฟล์ (VB 6.EXE ) หากไม่ได้ระบุตำแหน่งไฟล์ ระบบจะค้นหาไฟล์นั้นในโฟลเดอร์ปัจจุบันตามค่าเริ่มต้น ซึ่งเป็นโฟลเดอร์ที่แอปพลิเคชันของคุณตั้งอยู่ ชื่อไฟล์ทันทีประกอบด้วยสองส่วน: ชื่อไฟล์เฉพาะจริงและนามสกุล ชื่อจะระบุไฟล์ในขณะที่นามสกุลมักจะระบุรูปแบบของไฟล์หรือโปรแกรมที่สร้างขึ้นด้วย
ก่อนที่คุณจะเริ่มทำงานกับไฟล์ คุณต้องถามระบบปฏิบัติการก่อน ตัวชี้ (คำอธิบาย) ไฟล์. ในการรับ ให้ใช้ " FreeFile" จากนั้น ใช้คำสั่ง "เปิด" ตัวชี้นี้จะเชื่อมโยงกับไฟล์ที่ต้องการ หลังจากนั้นโปรแกรมจะสามารถทำงานกับมันได้ ไวยากรณ์สำหรับการเปิดไฟล์มีดังนี้:
'รับตัวชี้ไฟล์ฟรีและกำหนดให้กับตัวแปร
FileHandle% = ไฟล์ฟรี
‘ เปิดไฟล์
เปิด FilePath_
เป็น[#]FileHandle%
...(ทำงานกับไฟล์)
ปิด[#]FileHandle
· FileHandle % เป็นตัวแปรที่เก็บตัวชี้ไฟล์
· FreeFile เป็นชื่อของฟังก์ชันที่ส่งคืนตัวชี้ไฟล์
· เปิด – ชื่อผู้ประกอบการ;
· FilePath - ชื่อเต็มของไฟล์
· สำหรับ คือคีย์เวิร์ดตามด้วยคำอธิบายของโหมดการเข้าถึงไฟล์
· โหมด – โหมดการเข้าถึงไฟล์ (ดูตารางที่ 15);
ตารางที่ 15
โหมดการเข้าถึงไฟล์
โหมดการเข้าถึง |
คำอธิบาย |
ผนวก |
การเพิ่มข้อมูลต่อท้ายไฟล์ข้อความที่มีอยู่ ถ้าไฟล์นั้นไม่มีอยู่ ไฟล์นั้นจะถูกสร้างขึ้น |
ไบนารี่ |
การเปิดไฟล์ในโหมดไบนารี เช่น เป็นชุดของไบต์ หากไฟล์ไม่มีอยู่แต่จะถูกสร้างขึ้น |
ป้อนข้อมูล |
การเปิดไฟล์เพื่ออ่านในรูปแบบข้อความ |
เอาต์พุต |
การเปิดไฟล์เพื่อเขียนไฟล์ข้อความ ในกรณีนี้ ข้อมูลเก่าทั้งหมดจะถูกลบ หากไฟล์ไม่มีอยู่แต่จะถูกสร้างขึ้น |
สุ่ม |
การเปิดไฟล์ในโหมดการเข้าถึงโดยสุ่ม โหมดนี้ใช้สำหรับทำงานกับเรกคอร์ดอย่างง่าย หากไฟล์ไม่มีอยู่แต่จะถูกสร้างขึ้น |
· Access เป็นคีย์เวิร์ดที่ไม่บังคับตามด้วยคำอธิบายประเภทการเข้าถึง
· AccessType - คำอธิบายของประเภทการเข้าถึง:
· อ่าน - อ่าน;
· เขียน - บันทึก;
· อ่านเขียน - การอ่านและการเขียน
บันทึก |
โหมดการเข้าถึงส่วนต่อท้ายและเอาต์พุตอนุญาตเฉพาะการเข้าถึงแบบเขียน การเข้าถึงแบบอ่านอย่างเดียวแบบอินพุต และแบบไบนารีและแบบสุ่มทั้งสามประเภท |
· LockType เป็นพารามิเตอร์ทางเลือกที่กำหนดว่าโปรแกรมอื่นสามารถใช้ไฟล์นี้ได้หรือไม่ในขณะที่โปรแกรมของคุณกำลังทำงานอยู่ โดยปกติแล้วจะเกี่ยวข้องกับเครือข่าย (ดูตารางที่ 16)
ตารางที่ 16
ค่าที่เป็นไปได้สำหรับพารามิเตอร์ LockType
ความหมาย |
คำอธิบาย |
ใช้ร่วมกัน |
ผู้ใช้ทุกคนที่มีสิทธิ์ที่จำเป็นจะสามารถเข้าถึงไฟล์ได้อย่างเต็มที่ |
ล็อคอ่าน |
การอ่านไฟล์ถูกบล็อก แต่อนุญาตให้เขียนได้ |
ล็อคการเขียน |
การเขียนไปยังไฟล์ถูกบล็อก แต่อนุญาตให้อ่านได้ |
ล็อคการอ่านเขียน |
ห้ามทั้งการอ่านและการเขียน |
· เป็นคีย์เวิร์ดตามด้วยตัวชี้ไฟล์
· # เป็นอักขระที่ระบุว่าค่าที่ตามมาคือตัวชี้ไฟล์
· Len เป็นคีย์เวิร์ดที่ไม่บังคับซึ่งต้องตามด้วยพารามิเตอร์ที่ระบุความยาวของรายการ
· CharInBuffer % - ความยาวบันทึกสำหรับไฟล์ที่เปิดในโหมดการเข้าถึงโดยสุ่ม (สุ่ม)
· ปิด คือคำสั่งที่ปิดไฟล์ที่เกี่ยวข้องกับหมายเลขอ้างอิงที่ระบุ
สิ่งสำคัญคือต้องปิดไฟล์หลังจากที่คุณใช้งานเสร็จแล้ว คำสั่ง "ปิด" ปล่อยตัวชี้ไฟล์และพื้นที่หน่วยความจำที่เกี่ยวข้อง
เมื่อทำงานกับไฟล์ กล่าวคือ เมื่ออ่านจากไฟล์ การกำหนดจุดสิ้นสุดของไฟล์เป็นสิ่งสำคัญมาก สามารถกำหนดได้โดยใช้ฟังก์ชัน EOF (End Of File ):
EOF (ตัวจัดการไฟล์)
· EOF – ชื่อฟังก์ชัน;
· FileHandle คือตัวจัดการไฟล์ที่มีการกำหนดจุดสิ้นสุด
ฟังก์ชันจะส่งกลับ True (จริง) หากถึงจุดสิ้นสุดของไฟล์ มิฉะนั้นจะส่งกลับ False (เท็จ)
8.2. การอ่านและเขียนไปยังไฟล์ข้อความ
ไฟล์ข้อความเปิดในโหมดการเข้าถึง "อินพุต" "เอาต์พุต" หรือ "ต่อท้าย" (ดูตาราง 15) ลักษณะเฉพาะของโหมดนี้คือใช้งานได้เฉพาะกับอักขระที่พิมพ์ได้เท่านั้น ไม่มีประโยชน์ที่จะทำงานกับสัญลักษณ์บริการ
ในการเขียนข้อมูล จะใช้คำสั่งสองคำสั่งคือ "พิมพ์" และ "เขียน" ซึ่งมีไวยากรณ์ดังนี้:
พิมพ์ #FileHandle%, VarBuffer[;]
เขียน #FileHandle%, VarBuffer[;]
· พิมพ์ / เขียน - คำหลักตัวดำเนินการ
· #FileHandle % - ตัวชี้ไฟล์ที่จะวางข้อมูล
· VarBuffer คือค่าที่จะเขียนลงในไฟล์
· ; – พารามิเตอร์ทางเลือกที่ใช้เมื่อเขียนไปยังไฟล์ข้อความ หมายความว่าค่าถัดไปจะถูกเขียนลงในบรรทัดเดียวกัน และถ้าไม่มี จะเขียนไปยังค่าถัดไป
หากต้องการอ่านข้อมูลจากไฟล์ จะใช้ตัวดำเนินการ "อินพุต" และ "อินพุตบรรทัด" ไวยากรณ์คล้ายกัน:
บรรทัดอินพุต #FileHandle%, VarBuffer
ป้อน #FileHandle%, VarBuffer
· อินพุตบรรทัด / อินพุต - คำหลักตัวดำเนินการ
· #FileHandle % - ตัวชี้ไฟล์ที่จะอ่านข้อมูล
· VarBuffer เป็นตัวแปรที่จะอ่านข้อมูล
ข้อแตกต่างระหว่างตัวดำเนินการ Line Input และ Input คือตัวแรกมีไว้สำหรับไฟล์ข้อความเท่านั้น และตัวที่สองสำหรับไฟล์ใดๆ ในกรณีของไฟล์ข้อความ "อินพุต" จะอ่านข้อมูลในบรรทัดเดียวกันจนถึงตัวคั่นแรก (สำหรับข้อมูลข้อความ ตัวคั่นคือ "," (จุลภาค) และสำหรับข้อมูลตัวเลข - " " (ช่องว่าง) และ "," ) และ "อินพุตบรรทัด » อ่านทั้งบรรทัดพร้อมกัน โดยไม่สนใจตัวคั่นใดๆ
บันทึก |
ใน วิชวลเบสิกไม่มีวิธีการควบคุมรูปแบบของไฟล์ที่สร้างไว้ก่อนหน้านี้ ดังนั้นจึงสามารถอ่านสัญลักษณ์ "2" เป็นตัวเลขที่เกี่ยวข้องและในทางกลับกันได้ |
8.3. การทำงานกับไฟล์ไบนารี
ไฟล์ที่เปิดใน รูปแบบไบนารีตัวดำเนินการ " เปิด" ในโหมด " ไบนารี". คุณสมบัติที่โดดเด่นของโหมดนี้คือการทำงานกับไฟล์นั้นเน้นไปที่ไบต์ที่ระบุเท่านั้น เนื่องจาก Visual Basic สามารถระบุตำแหน่งที่ต้องการของไฟล์ได้โดยตรง โหมดนี้จึงเรียกว่า - โหมดการเข้าถึงโดยตรง. คุณสมบัติอีกอย่างของโหมดนี้คือความสามารถในการเขียนและอ่านข้อมูลไปยังส่วนต่าง ๆ ของไฟล์พร้อมกันโดยไม่ต้องเปิดใหม่ การเขียนไปยังไฟล์ที่เปิดในโหมดไบนารีทำได้โดยใช้ไวยากรณ์ต่อไปนี้:
ใส่ #FileHandle%, , NameVar
· ใส่ - ชื่อของตัวดำเนินการสำหรับเขียนข้อมูล
· RecNumber – จำนวนไบต์ของไฟล์ที่จะเขียนข้อมูล (พารามิเตอร์ทางเลือก)
· NameVar เป็นตัวแปรที่จะเขียนเนื้อหาลงในไฟล์
การอ่านข้อมูลจากไฟล์ในโหมดไบนารีทำได้โดยใช้คำสั่งต่อไปนี้:
รับ #FileHandle%, , NameVar
· Get เป็นชื่อของผู้ดำเนินการบันทึกข้อมูล
· FileHandle % - ตัวชี้ไฟล์
· RecNumber – จำนวนไบต์ของไฟล์ที่จะอ่านข้อมูล (ไม่บังคับ)
· NameVar - ชื่อของตัวแปรที่จะวางข้อมูลที่อ่าน
เนื่องจากโหมดไบนารีเน้นที่ไบต์ของข้อมูล เมื่ออ่านจากไฟล์ ตัวแปรบัฟเฟอร์จะต้องมีประเภทที่กำหนดไว้อย่างเคร่งครัด: "ไบต์" อย่างใดอย่างหนึ่ง จากนั้นค่าตัวเลขของไบต์จะถูกอ่าน หรืออักขระที่มีความยาวคงที่ ของอักขระหนึ่งตัว จากนั้นไบต์จะถูกอ่านเป็นอักขระ ANSI ซึ่งมีรหัสตรงกับค่าไบต์ อักขระนี้สามารถเป็นอักขระควบคุมได้ ซึ่งไม่สามารถทำได้ในกรณีของไฟล์ข้อความ
บันทึก |
ในกรณีที่ไม่มีพารามิเตอร์ "RecNumber" ข้อมูลจะถูกเขียนหรืออ่านในไบต์ถัดไปของไฟล์หลังจากที่เคยทำงานมาก่อน
8.4. การจัดการกราฟิก
รูปภาพกราฟิกสามารถบันทึกในไฟล์และเรียกค้นจากพวกเขาได้ หากต้องการแยกรูปภาพออกจากไฟล์บิตแมปหรือไอคอนและกำหนดให้กับคุณสมบัติ "Picture" ของตัวควบคุม "PictureBox" และ "Image" ให้ใช้ฟังก์ชัน "LoadPicture ()" ด้วยไวยากรณ์ต่อไปนี้:
ImageCtrl.Picture = LoadPicture(พาธของไฟล์)
· ImageCtrl เป็นชื่อของตัวควบคุมหน้าต่างรูปภาพ ตัวควบคุมรูปภาพ หรือฟอร์ม
· LoadPicture - ชื่อฟังก์ชัน;
· FilePath เป็นชื่อเต็มของไฟล์
บันทึกรูปภาพ ImageCtrl .Picture, FilePath
· SavePicture – ชื่อโอเปอเรเตอร์;
· ImageCtrl เป็นชื่อของตัวควบคุมหน้าต่างรูปภาพ ตัวควบคุมรูปภาพ หรือฟอร์ม
· รูปภาพ - ชื่อของคุณสมบัติวัตถุที่รับผิดชอบรูปภาพ
· FilePath คือชื่อเต็มของไฟล์ ซึ่งระบุตำแหน่งบนดิสก์
8.5 การทำงานกับข้อมูลในรีจิสทรี
คุณสามารถใช้ Windows Registry เพื่อเก็บข้อมูลรูปแบบตัวอักษรชิ้นเล็กๆ Visual Basic มีสี่ขั้นตอนที่คุณสามารถใช้เพื่อเข้าถึงได้ ใช้งานง่ายมาก แต่มีข้อเสียเปรียบหลักประการหนึ่ง: คุณสามารถเข้าถึงข้อมูลจากคีย์รีจิสทรีที่ระบุเท่านั้น: "การตั้งค่าโปรแกรม MyComputer \HKEY _CURRENT _USER \Software \VB และ VBA" ในการเข้าถึงรีจิสตรีคีย์อื่น คุณต้องใช้ฟังก์ชันพิเศษ " Win 32 API"
เมื่อต้องการรับค่าของการตั้งค่าจากคีย์รีจิสทรี Windows เฉพาะของ Visual Basic ให้ใช้ฟังก์ชันต่อไปนี้:
MyString = GetSetting(VBKeyName, Section, Key [,ค่าเริ่มต้น])
· MyString - สตริงสำหรับจัดเก็บค่าที่ส่งคืนโดยฟังก์ชัน
· GetSetting คือชื่อของฟังก์ชัน
· VBKeyName คือค่าสตริงที่เป็นชื่อของคีย์ย่อย VB /VBA ภายใน
· คีย์คือค่าสตริงที่แสดงชื่อของพารามิเตอร์ในส่วน
· ค่าดีฟอลต์เป็นอาร์กิวเมนต์ที่ไม่บังคับ ซึ่งค่าจะถูกส่งกลับในกรณีที่เกิดข้อผิดพลาด (ไม่มีพารามิเตอร์)
ในการจัดเก็บค่าในรีจิสทรีของ Windows ให้ใช้คำสั่งต่อไปนี้:
บันทึกการตั้งค่า VBKeyName, Section, Key, MyString
· SaveSetting เป็นชื่อของผู้ดำเนินการ
· MyString เป็นตัวแปรสตริงที่จะวางค่าที่พบ
ในการรับอาร์เรย์จากรีจิสตรีที่มีค่าพารามิเตอร์ทั้งหมดจากคีย์ย่อยเฉพาะ ให้ใช้ฟังก์ชันต่อไปนี้:
MyVariant = SetAllSettings (VBKeyName ส่วน)
· MyVariant เป็นอาร์เรย์ของค่าประเภท "Variant" ที่ส่งคืนโดยฟังก์ชัน
· SetAllSettings เป็นชื่อของฟังก์ชัน
· ส่วน - ค่าสตริงที่แสดงส่วนหรือส่วนย่อยของแอปพลิเคชันเฉพาะ
หากต้องการลบส่วนพารามิเตอร์ทั้งหมด ให้ใช้ตัวดำเนินการที่มีไวยากรณ์ต่อไปนี้:
ลบการตั้งค่า VBKeyName, Section, Key
· DeleteSetting เป็นชื่อของผู้ดำเนินการ
คำถามเพื่อความปลอดภัยสำหรับการตรวจสอบตนเอง
- ข้อมูลบางอย่างจะถูกเก็บไว้ในระยะยาวได้อย่างไร?
- ไฟล์คืออะไร?
- คุณรู้ชื่อไฟล์อะไร
- ให้ไวยากรณ์ของตัวดำเนินการ "เปิด" อธิบายวัตถุประสงค์ของพารามิเตอร์
- ฉันจะจัดระเบียบการเข้าถึงร่วมกันของหลาย ๆ แอปพลิเคชันไปยังไฟล์เดียวกันในเวลาเดียวกันได้อย่างไร
- จะทราบได้อย่างไรว่าข้อมูลในไฟล์หมด?
- เหตุใดจึงแนะนำให้ปิดไฟล์หลังจากใช้งานแล้ว
- คุณเห็นความแตกต่างระหว่างโหมดไฟล์ข้อความและไฟล์ไบนารีอย่างไร
- ข้อมูลถูกอ่านและเขียนในโหมดไฟล์ข้อความอย่างไร
- ข้อมูลถูกอ่านและเขียนในโหมดไฟล์ไบนารีอย่างไร?
- อะไรคือความแตกต่างระหว่างตัวดำเนินการ "พิมพ์" และ "เขียน" เมื่อทำงานกับไฟล์
- อะไรคือความแตกต่างระหว่างคำสั่ง "อินพุต" และ "อินพุตบรรทัด" เมื่อทำงานกับไฟล์
- คุณจะทำงานกับข้อมูลกราฟิกได้อย่างไร
- หลักการพื้นฐานของการทำงานกับรีจิสทรีของ Windows คืออะไร
ทุกโปรแกรมต้องบันทึกข้อมูลลงดิสก์และอ่านจากดิสก์ สิ่งนี้จำเป็น เช่น เพื่อบันทึกการตั้งค่าโปรแกรม ผู้ใช้จะไม่ชอบโปรแกรมซึ่งจะต้องกำหนดค่าอีกครั้งในครั้งต่อไปที่เริ่มต้น
บทความนี้มุ่งเน้นไปที่การทำงานกับไฟล์ข้อความโดยใช้ Visual Basic
ตัวอธิบายไฟล์
เพื่อทำงานกับไฟล์ ระบบปฏิบัติการใช้ช่องทาง I/O เช่น แต่ละไฟล์ที่เปิดมีหมายเลขของตัวเอง
มีฟังก์ชันใน Visual Basic ไฟล์ฟรีซึ่งจะส่งคืนจำนวนช่องสัญญาณว่างที่สามารถใช้เพื่อทำงานกับไฟล์ หากไม่มีช่องฟรีแสดงว่ามีข้อผิดพลาดเกิดขึ้น
ฟรีไฟล์[(ช่วงหมายเลข) ]
ช่วงหมายเลข- พารามิเตอร์ทางเลือกที่ให้คุณกำหนดช่วงของช่องฟรีได้หาก ช่วงหมายเลข= 0 (ค่าเริ่มต้น) จากนั้นหมายเลขช่องจะถูกส่งคืนจากช่วง 1 - 255 และถ้าเป็น 1 ก็จะส่งกลับจากช่วง 256 - 511
MyFile = ไฟล์ฟรี " กำหนดตัวแปร MyFile ช่องฟรีและตอนนี้สามารถใช้ทำงานกับไฟล์ได้แล้ว
การทำงานกับไฟล์ข้อความ
บ่อยครั้งที่จำเป็นต้องพบกับไฟล์ข้อความ ไฟล์ข้อความประกอบด้วยชุด อักขระ ASCII(รหัสมาตรฐานอเมริกันสำหรับการแลกเปลี่ยนข้อมูล - รหัสมาตรฐานอเมริกันสำหรับการแลกเปลี่ยนข้อมูล)
ก่อนที่คุณจะเริ่มเขียน / อ่านข้อมูล ต้องเปิดไฟล์ ซึ่งทำได้โดยใช้โอเปอเรเตอร์ เปิด(ชื่อไฟล์) สำหรับเป็น #file_number, ที่ไหน:
ป้อนข้อมูล- เปิดไฟล์เพื่ออ่านหากไม่มีไฟล์แสดงว่ามีข้อผิดพลาดเกิดขึ้น
เอาต์พุต- สำหรับการเขียน หากไม่มีไฟล์ ไฟล์นั้นจะถูกสร้างขึ้น และหากไฟล์มีอยู่ ไฟล์นั้นจะถูกเขียนทับ
ผนวก- สำหรับการเพิ่ม หากไม่มีไฟล์ ไฟล์นั้นจะถูกสร้าง และหากมีไฟล์อยู่ ข้อมูลจะถูกเพิ่มต่อท้ายไฟล์
การอ่าน ไฟล์ข้อความสามารถทำได้สองวิธี: อ่านอักขระทีละอักขระ สำหรับสิ่งนี้จะใช้ฟังก์ชัน ป้อนข้อมูล(จำนวน_of_read_ตัวอักษร, #file_number) และทีละบรรทัด สำหรับสิ่งนี้จะใช้ฟังก์ชัน บรรทัดอินพุต#file_number, อ่านที่ไหน.
DimMyFile
Dim S เป็นสตริง "ตัวแปรเก็บข้อมูลการอ่าน
MyFile = ไฟล์ฟรี
เปิด ("C:\TEST.txt") สำหรับใส่เป็น #MyFile
บรรทัดอินพุต #MyFile,S "อ่านบรรทัดแรกจากไฟล์ TEST.TXT ไปยังตัวแปร S
DimMyFile "ประกาศตัวแปรสำหรับไฟล์ฟรี
Dim ฉันเป็นจำนวนเต็ม "ตัวแปรสำหรับลูป
Dim tS เป็นสตริง "ตัวแปรสำหรับการอ่านสตริง
Dim S เป็นสตริง "ตัวแปรในการเก็บข้อมูลขั้นสุดท้าย
MyFile = ไฟล์ฟรี "กำหนดช่องฟรีเพื่อทำงานกับไฟล์
"เปิดไฟล์ TEST.TXT เพื่ออ่าน
สำหรับ i = 1 ถึง 5
บรรทัดอินพุต #MyFile, tS "อ่านไฟล์ TEST.TXT ทีละบรรทัด
ถ้า i => 5 แล้ว S = tS "ถ้าบรรทัดที่ 5 ให้เก็บไว้ในตัวแปร S
ถัดไป
ปิด #MyFile "ปิดไฟล์
Dim MyFile "ประกาศตัวแปรสำหรับไฟล์ฟรี
Dim S As String "ตัวแปรเก็บข้อมูลการอ่าน
MyFile = ไฟล์ฟรี "กำหนดช่องฟรีเพื่อทำงานกับไฟล์
เปิด ("C:\TEST.txt") สำหรับใส่เป็น #MyFile "เปิดไฟล์ TEST.TXT เพื่ออ่าน
S = อินพุต$(LOG(1), 1) "อ่านไฟล์ทั้งหมดเป็นตัวแปร S
ปิด #MyFile "ปิดไฟล์
มีตัวดำเนินการสำหรับเขียนไฟล์ พิมพ์#file_number, ข้อมูลและ เขียน#file_number, ข้อมูล. ข้อแตกต่างระหว่างตัวดำเนินการเหล่านี้ก็คือ เขียนเขียนข้อมูลในเครื่องหมายคำพูดและ พิมพ์ไม่มีเครื่องหมายคำพูด
ด้านล่างโค้ดต่อไปนี้จะสร้างในไดรฟ์ C:\ ไฟล์ใหม่ TEST.TXT และเขียนสองสตริงลงไป สตริงแรกไม่มีเครื่องหมายอัญประกาศ และสตริงที่สองมีเครื่องหมายอัญประกาศ:
DimMyFile "ประกาศตัวแปรสำหรับไฟล์ฟรี
MyFile = ไฟล์ฟรี "กำหนดช่องฟรีเพื่อทำงานกับไฟล์
เปิด ("C:\TEST.txt") สำหรับเอาต์พุตเป็น #MyFile "เปิดไฟล์ TEST.TXT เพื่อเขียน
พิมพ์ #MyFile "สตริงนี้เขียนโดยคำสั่ง Print ไม่มีเครื่องหมายอัญประกาศ..."
เขียน #MyFile "สตริงนี้เขียนโดยคำสั่ง Write ซึ่งอยู่ในเครื่องหมายคำพูด..."
ปิด #MyFile "ปิดไฟล์
นั่นคือทั้งหมดที่จริง ตามที่คุณอาจเข้าใจแล้ว ตัวดำเนินการที่ใช้ในการปิดไฟล์คือ ปิด#file_numberซึ่งในที่นี้ # file_numberไม่จำเป็นต้องระบุ
บทความนี้ค่อนข้างดิบ แต่จะเป็นประโยชน์สำหรับโปรแกรมเมอร์มือใหม่ ครั้งต่อไปฉันจะพูดถึงการทำงานกับไฟล์ไบนารี