สารบัญ:

การเขียนโปรแกรมใน VB6: Tips and Tricks: 3 Steps
การเขียนโปรแกรมใน VB6: Tips and Tricks: 3 Steps

วีดีโอ: การเขียนโปรแกรมใน VB6: Tips and Tricks: 3 Steps

วีดีโอ: การเขียนโปรแกรมใน VB6: Tips and Tricks: 3 Steps
วีดีโอ: Visual Basic 6 Lesson: Lesson 3 (Making a Picture Viewer) 2024, กรกฎาคม
Anonim
การเขียนโปรแกรมใน VB6: Tips and Tricks
การเขียนโปรแกรมใน VB6: Tips and Tricks

ฉันเขียนโปรแกรมในเวลาว่าง และเป็นโปรแกรมเมอร์ที่ค่อนข้างเชี่ยวชาญโดยใช้ VB6 เป็นเรื่องง่ายและฉันยังไม่พบสิ่งใดที่ฉันต้องการเพื่อให้บรรลุซึ่งไม่สามารถทำได้ แม้ว่าบางครั้งอาจเป็นเรื่องยากที่จะทำภารกิจของคุณให้สำเร็จ ระหว่างทางฉันพบสิ่งที่น่ารำคาญมากมาย ส่วนใหญ่มักจะนับบางสิ่ง นี่คือการรวบรวมบางสิ่งที่ฉันได้เรียนรู้ระหว่างทาง ฉันขอให้คุณถ้าคุณมีปัญหาใดๆ แสดงความคิดเห็น และฉันจะพยายามช่วยในขั้นตอนเพิ่มเติม

ขั้นตอนที่ 1: สตริง

เครื่องสาย
เครื่องสาย

วิธีที่ VB จัดการกับสตริงทำให้เกิดความสับสนในบางครั้ง texta = "abcdefg"ใส่ " สัญลักษณ์ทั้งสองด้านของข้อความที่คุณต้องการให้นับเป็น stringMid(String, Start, Length) เลือกส่วนของข้อความจากสตริง stringin ไม่มี สตริงเริ่มต้นเป็นศูนย์เริ่มต้นที่ 1textb = mid (texta, 2, 2) สิ่งนี้ทำให้ตัวแปร textb = "bc"textb = mid (texta, 4, 4) สิ่งนี้ทำให้ตัวแปร textb = "defg"textb = mid (texta, 4, 5)สิ่งนี้ทำให้ตัวแปร textb = "defg"ถูกต้องถ้าข้อความที่คุณพยายามเลือกนั้นยาวกว่านั้น ข้อความที่มีอยู่จะสิ้นสุดที่อักขระตัวสุดท้ายขึ้นอยู่กับโปรแกรมของคุณ คุณจะต้องวางกับดักเพื่อหลีกเลี่ยงข้อผิดพลาดนี้ เป็นกับดัก:textb = mid(texta, 4, 5) ถ้า len(textb) < 5 แล้ว 'Len() จะคืนค่าความยาวของสตริง < หมายถึงน้อยกว่าแล้วmsgbox "ข้อความสั้นเกินไป" 'แสดงกล่องข้อความด้วย stringexit ย่อย 'นี่เป็นการออกจากส่วนย่อยที่คุณอยู่ การลงท้ายโค้ด หากคุณอยู่ในฟังก์ชัน คุณจะต้องใส่ exit functionend iffinding ตำแหน่งของอักขระในสตริง เราใช้ instr(Start, Stri ng1, String2)texta = "abcdefg"textb = instr(1, texta, "c") 'ค้นหาตัวอักษร c ในสตริง textatextb ตอนนี้เท่ากับ 3NOTE:Instr คืนค่า 0 (ศูนย์) หากไม่พบอักขระ REORGANIZING: นี่คือ คำพูดที่น่ารำคาญที่คุณต้องการให้ "abcdefg" เป็น "defgabc"texta = "abcdefg"textb = mid(texta, 4, 4) & mid(texta, 1, 3) นั่นก็ไม่ได้แย่เกินไป แต่ตอนนี้ให้เพิ่มใน instr () ฟังก์ชั่นบอกว่าคุณต้องการจัดระเบียบสตริงใหม่ที่อักขระม่าน แต่มันไม่ใช่จุดเดียวกัน everytimetexta = "abcdefg"textb = "gfabdec"textc = mid(texta, instr(1, texta, "c"), len(texta)) - instr(1, texta, "c") + 1) & mid(texta, 1, instr(1, texta, "c") - 1)จดส่วน len(texta) - instr(1, texta, " c") + 1 เพราะ instr จะนับอักขระที่คุณต้องการ ดังนั้นคุณจึงย้อนกลับหนึ่งอักขระ ดังนั้น mid() จะนำอักขระที่คุณต้องการเป็นตัวแรกใน stringtextc ตอนนี้เท่ากับ "cdefgab"textd = mid(textb, instr(1, textb, "c"), len(textb) - instr(1, textb, "c") + 1) & mid(textb, 1, instr(1, textb, "c") - 1) textd ตอนนี้เท่ากับ ls "cgfabde" ให้ลองค้นหาอักขระที่ไม่ได้อยู่ใน stringtexta = "abcdefg"textc = mid(texta, instr(1, texta, "h"), len(texta) - instr(1, texta, "h") + 1) & mid(texta, 1, instr(1, texta, "h") - 1) คุณได้รับข้อผิดพลาดเนื่องจากส่วนเริ่มต้นของ Mid() ไม่สามารถ = 0 เนื่องจากสตริงเริ่มต้นที่ 1 ดังนั้นคุณต้องหลีกเลี่ยงรันไทม์ ข้อผิดพลาด. นี่เป็นวิธีหนึ่งในการทำ ittexta = "abcdefg"if instr(1, texta, "h") 0 thentextc = mid(texta, instr(1, texta, "h"), len(texta) - instr(1, texta), "h") + 1) & mid(texta, 1, instr(1, texta, "h") - 1)else 'มีคำสั่งอื่นเพียงคำสั่งเดียวต่อกรณีสถานการณ์msgbox "ไม่พบอักขระในสตริง" 'แสดงกล่องข้อความด้วย stringend ifThis จะสรุปทุกสิ่งที่คุณจำเป็นต้องรู้เกี่ยวกับ strings

ขั้นตอนที่ 2: การแปลงตัวละคร

แปลงตัวละคร
แปลงตัวละคร

HEX: สิ่งที่ฉันพบเมื่อต้นสัปดาห์นี้เกี่ยวข้องกับฟังก์ชัน Hex(number) ความยาวของตัวเลขนั้นไม่สำคัญ มันส่งคืนสตริงใน hexhex(11111111) ส่งคืน "A98AC7" เมื่อแปลงอักขระ ascii เป็น hex คุณจะ dotexta = "a"hex(asc(texta)) ส่งคืน "61"texta = "k"hex(asc(texta)) ส่งคืน "6B" สตริงจะเป็น 2 อักขระสำหรับอักขระ ASCI ส่วนใหญ่เว้นแต่จะต่ำกว่า 16 จากนั้นจะส่งคืนอักขระ 1 ตัวถ้าคุณต้องการให้ทั้งหมดเป็น 2 อักขระที่คุณจะทำดังนี้:textb = hex(asc(texta))if len(textb) = 1 แล้วtextb = "0" และ textb 'นั่นคือศูนย์ไม่ใช่ ทุน oend if

ขั้นตอนที่ 3: การแก้ไขไฟล์

การแก้ไขไฟล์
การแก้ไขไฟล์

ในการเปิดไฟล์คุณต้องมี freefile และ filenamegfile = FreeFile 'gfile เป็น freefilec = "c:\test.txt" ตัวถัดไปที่มีให้ใช้งานแล้ว จึงมี 4 วิธีที่คุณสามารถเปิด fileInput - คุณสามารถอ่านได้เท่านั้น เอาต์พุต - คุณสามารถเขียนได้เท่านั้นและจะลบไฟล์หากมีอยู่ การขึ้นบรรทัดใหม่และการป้อนอักขระสุดท้ายต่อบรรทัดต่อท้าย - คุณสามารถเขียนได้เท่านั้น มันจะเพิ่มไปยังไฟล์ที่มีอยู่ การขึ้นบรรทัดใหม่และการป้อนบรรทัดอักขระสุดท้ายไบนารี - อ่านและเขียน แม่นยำมาก อันเดียวที่ฉันใช้ตอนนี้สำหรับการสร้างไฟล์บันทึกและการใช้งานดังกล่าวผนวกจะเพิ่มรายการใหม่ไปที่ส่วนท้ายของไฟล์สำหรับไฟล์บันทึกที่ซับซ้อนมากขึ้น โหลดไฟล์ทั้งหมดลงในตัวแปรและเพิ่มรายการใหม่ไปที่จุดเริ่มต้นของ file.dim stro เป็นสตริง 'นี่เป็นสิ่งจำเป็นหรือจะมี errorgfile = FreeFilec = "c:\test.txt" เปิด c สำหรับไบนารีเป็น #gfile 'remember gfile เป็น numberstro = space$(lof(gfile)) 'เมื่อเปิดไบนารีคุณต้องบอกว่าความยาวของข้อความที่คุณต้องการใช้คือ lof(gfile) จะคืนค่าความยาวของ gfile และ space$ () ส่งคืนสตริงของช่องว่างตามความยาวของตัวเลขที่คุณป้อน #gfile 1, stro 'รับจากหมายเลขไฟล์, ไบต์เริ่มต้น, ตัวแปรที่จะบันทึกลง และโหลดเฉพาะความยาวของตัวแปรclose #gfilestro ตอนนี้เท่ากับไฟล์ test.txt คุณสามารถใส่ข้อมูลลงในไฟล์ได้ byffile = FreeFilestro = "New line" & VbCrLf & stro ' เพิ่ม "New line" และ carraige return และ linefeed ตามด้วย textopen c ดั้งเดิมสำหรับไบนารีเป็น #ffilekill cput #ffile, 1, stro 'put เขียนทับข้อมูลก่อนหน้าหากไฟล์มีขนาดเล็กลง คุณควรฆ่าไฟล์ก่อน ซึ่งจะลบมันออก ปิด #ffileไฟล์ตอนนี้มี "บรรทัดใหม่" ในสิ่ง itone ฉันพบว่ามีฟังก์ชัน put มีข้อผิดพลาดหากคุณพยายามใส่อักขระ likeput #ffile, 133, chr(1) ' ซึ่งจะแทนที่อักขระที่ไบต์ 133 ด้วยอักขระ 1 หรือเลขฐานสิบหก 0x01I ที่พบเมื่อฉันทำสิ่งนี้ด้วยโปรแกรมเดียวที่ฉัน ทำให้มันเพิ่มเลขฐานสิบหกจริง ๆ 0x08000100000001 ซึ่งประหลาดมาก ฉันแก้ไขโดยโหลดไฟล์ไปยังตัวแปรและทำ string modsi = 133stro = mid(stro, 1, i - 1) & chr(1) & mid(stro, i + 1, len(stro) - i)จากนั้นใส่ #ffile, 1, strothis ทำงานได้อย่างสมบูรณ์แบบ

แนะนำ: