Acasă Flori Exemple de coduri de operare a meniului sistemului de fișiere Vb6. Adăugarea datelor la fișier. Citirea fișierelor obiectelor sistemului de fișiere

Exemple de coduri de operare a meniului sistemului de fișiere Vb6. Adăugarea datelor la fișier. Citirea fișierelor obiectelor sistemului de fișiere

Fiecare program trebuie să salveze datele pe disc și să le citească de pe disc. Acest lucru este necesar, de exemplu, pentru a salva setările programului, este puțin probabil ca utilizatorul să-i placă programul, care va trebui configurat din nou data viitoare.

Acest articol se va concentra pe lucrul cu fișiere text folosind Visual Basic.

Descriptor de fișier

Pentru a lucra cu fișiere, sistemul de operare folosește canale de intrare/ieșire, de exemplu. fiecare fișier deschis are propriul său număr.

Visual Basic are o funcție FreeFile, care returnează numărul unui canal gratuit care poate fi folosit pentru a lucra cu fișierul. Dacă nu există canale gratuite, atunci apare o eroare.

FreeFile [(RangeNumber) ]

RangeNumber- un parametru opțional care vă permite să determinați intervalul de valori ale canalelor libere, dacă RangeNumber= 0 (implicit), atunci numărul canalului este returnat din intervalul 1 - 255, iar dacă 1, atunci din intervalul 256 - 511.

MyFile = Fișier gratuit „Variabila MyFile i s-a atribuit un canal gratuit și poate fi acum folosită pentru a lucra cu fișiere

Lucrul cu fișiere text

Cel mai adesea întâlniți fișiere text. Fișierele text sunt compuse din setul de caractere ASCII (American Standard Code for Information Interchange).

Înainte de a începe să scrieți / citiți datele, fișierul trebuie deschis, acest lucru se face cu ajutorul operatorului Deschis (Nume de fișier) Pentru noi #Numărul fișierului, Unde:

Intrare- deschideți fișierul pentru citire, dacă fișierul nu există, atunci apare o eroare;

Ieșire- pentru scriere, dacă fișierul nu există, atunci acesta va fi creat, iar dacă fișierul există, atunci acesta va fi suprascris;

Adăuga- pentru a adăuga, dacă fișierul nu există, atunci acesta va fi creat, iar dacă fișierul există, atunci datele vor fi adăugate la sfârșitul fișierului.

Citirea fișierelor text se poate face în două moduri: citiți caracter cu caracter, pentru aceasta folosiți funcția Intrare (Numărul de_Caractere de citit, #Numărul fișierului) și linie cu linie, funcția este folosită pentru aceasta Linie de intrare #Numărul fișierului, Unde_să_citiți.

Dim MyFile

Dim S As String „Variabilă pentru stocarea datelor citite

MyFile = Fișier gratuit

Deschideți ("C:\TEST.txt") pentru introducere ca #MyFile

Intrare linie #MyFile, S „Citirea primei rânduri din fișierul TEST.TXT în variabila S

Dim MyFile „Declararea unei variabile pentru un fișier gratuit

Dim i ca întreg „Variabilă pentru buclă

Dim tS As String „Variabilă pentru citirea rândurilor

Dim S As String „Variabilă pentru stocarea datelor finale

MyFile = Fișier gratuit „Atribuirea unui canal gratuit pentru lucrul cu fișierele

„Deschideți fișierul TEST.TXT pentru citire

Pentru i = 1 până la 5

Linie de intrare #MyFile, tS „Citirea fișierului TEST.TXT linie cu linie

Dacă i => 5 Atunci S = tS „Dacă a cincea linie, atunci o stocăm în variabila S

Apoi eu

Închide #MyFile „Închide fișierul

Dim MyFile „Declarați o variabilă pentru un fișier gratuit

Dim S As String "Variabilă pentru stocarea datelor citite

MyFile = Fișier gratuit „Atribuirea unui canal gratuit pentru lucrul cu fișierele

Deschideți ("C:\TEST.txt") pentru introducere ca #MyFile „Deschideți fișierul TEST.TXT pentru citire

S = Intrare $ (LOG (1), 1) „Am citit întregul fișier în variabila S

Închide #MyFile „Închide fișierul

Există operatori pentru scrierea într-un fișier Imprimare #Numărul fișierului, Dateși Scrie #Numărul fișierului, Date... Singura diferență dintre acești operatori este că Scrie scrie datele între ghilimele și Imprimare fără ghilimele.

Următorul cod va crea un nou fișier TEST.TXT pe unitatea C:\ și va scrie două linii în el, prima fără ghilimele și a doua între ghilimele:

Dim MyFile „Declararea unei variabile pentru un fișier gratuit

MyFile = Fișier gratuit „Atribuirea unui canal gratuit pentru lucrul cu fișierele

Deschideți ("C: \ TEST.txt") pentru ieșire ca #MyFile „Deschideți fișierul TEST.TXT pentru înregistrare

Print #MyFile, „Acest șir a fost scris de operatorul Print, este fără ghilimele...”

Scrie #MyFile, „Această linie a fost scrisă de instrucțiunea Write, este între ghilimele...”

Închide #MyFile „Închide fișierul

Asta e tot. După cum probabil ați înțeles deja, operatorul este folosit pentru a închide fișierul Închide #Numărul fișierului, în care, # Numărul fișierului nu este necesar să se precizeze.

Articolul este puțin grosolan, dar va fi util pentru programatorii începători. Data viitoare voi vorbi despre lucrul cu binare.

Windows

Scopul muncii: Învățarea și utilizarea operatorilor limbajului VB 6 pentru a lucra cu fișiere de diferite tipuri: fișiere secvențiale (text), fișiere cu acces aleatoriu, fișiere binare. Cercetarea și utilizarea instrumentului UzualDialog pentru a deschide și a salva fișiere, selectați un font și o culoare și utilizați obiectul Clipboard pentru stocarea fragmentelor de text - folosind exemplul creării unui editor de text simplu.

Întrebări de control:

1. În ce moduri puteți deschide un fișier text? Cum pot închide un fișier text și orice alt fișier deschis?

2. Cum sunt scrise datele într-un fișier text deschis pentru scriere? Care este diferența dintre instrucțiunile Write și Print?

3. Cum se citesc datele dintr-un fișier text deschis pentru citire? Cum diferă instrucțiunile Input și Line Input una de cealaltă? Ce funcție poate fi folosită pentru a citi un anumit număr de caractere dintr-un fișier? Cum pot citi toate caracterele dintr-un fișier?

4. Ce este un tip de date definit de utilizator și cum este utilizat acest concept atunci când lucrați cu fișiere cu acces aleatoriu ( raf)?

5.Cu care operatori din dosar rafînregistrările sunt citite în dosar raf se scriu noi înregistrări?

6. În ce scop este determinat și utilizat indexul atunci când lucrați cu un fișier? raf?

7. Care sunt caracteristicile utilizării fișierelor binare? Cum se deschid? Cum se citește dintr-un fișier binar și se scrie într-un fișier binar?

8. Cum poate fi aplicat controlul UzualDialog pentru a încărca conținutul unui fișier text într-o casetă text? Cum pot salva textul editat într-un fișier text folosind același control?

9. Cum poate fi aplicat controlul UzualDialog pentru a descărca conținutul fișierului rtfîn câmp BogatCasetă de text? Cum să salvați textul editat într-un fișier folosind același control rtf?

10. Cum poate fi aplicat controlul UzualDialog pentru a modifica valorile parametrilor fontului și pentru a schimba culoarea textului din fereastră Casetă de text(sau o bucată de text selectată într-o fereastră BogatCasetă de text)?

Exemplul 7.1. Luați în considerare o aplicație care demonstrează scrierea într-un fișier text (și citirea dintr-un fișier text) „informații despre angajați” - rânduri, fiecare dintre ele conține un număr de identificare, numele complet, data nașterii și locul nașterii unui angajat. Rândurile formează un tabel, care pe ecran va simula 4 controale Combo Box (Fig. 7.1), formând o matrice de obiecte Comb (i), a căror proprietate Style are valoarea 1 - SimpleCombo.

DIV_ADBLOCK265 ">

Comb (j) .ListIndex = i

„Adăugarea unei noi înregistrări la tabel:

Private Sub mnuAdd_Click ()

XC (j) = Pieptene (j) .Text

Pieptene (j) .AddItem XC (j)

„Ștergerea unei înregistrări dintr-un tabel:

Sub privat mnuRemove_Click ()

i% = Comb (0) .ListIndex

Dacă eu< 0 Then

MsgBox „Selectați linia de șters”, vbExclamation

Comb (j) .RemoveItem i

„Inserarea unei noi înregistrări într-un tabel:

Sub privat mnuInsert_Click ()

i% = Comb (0) .ListIndex

Dacă eu< 0 Then

MsgBox „Selectați linia de inserat înaintea acesteia”, vbExclamation

Comb (0) .AddItem InputBox ("Introduceți numărul"), i

Comb (1) .AddItem InputBox, i

Comb (2) .AddItem InputBox ("Introduceți data nașterii"), I

Comb (3) .AddItem InputBox ("Introduceți locul nașterii"), I

„Schimbați intrarea în tabel:

Sub privat mnuUpdate_Click ()

i% = Comb (0) .ListIndex

Dacă eu< 0 Then

MsgBox „Evidențiați linia de modificat”, vbExclamation

Comb (0) .List (i) = InputBox ("Introduceți numărul", Comb (0) .List (i))

Comb (1) .List (i) = InputBox ("Introduceți numele", Comb (1) .List (i))

Comb (2) .List (i) = InputBox ("Introduceți data nașterii", Comb (2) .List (i))

Comb (3) .List (i) = InputBox ("Introduceți locul nașterii.", Comb (3) .List (i))

„Ștergerea întregului tabel:

Private Sub mnuClear_Click ()

„Popularea tabelului cu informații dintr-un fișier text:

Sub privat mnuLoad_Click ()

Deschideți „persoană. Txt” pentru introducere ca #1

Intrare # 1, amorțit, fio, bdate, bloc

Comb (0) .AddItem numb

Pieptene (1) .AddItem fio

Comb (2) .AddItem bdate

Pieptene (3) .AddItem bloc

„Scrierea informațiilor din tabel într-un fișier text:

Sub privat mnuSave_Click ()

N% = Comb (0) .ListCount

Deschideți „persoană. Txt” pentru ieșire ca #1

Pentru i = 0 la N - 1

amorțit = Val (Comb (0) .List (i))

fio = Pieptene (1) .Lista (i)

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

bloc = Pieptene (3) .Lista (i)

Scrieți # 1, amorțit, fio, bdate, bloc

„Închiderea aplicației:

Privat Sub mnuExit_Click ()

Exemplul 7.2 ... Luați în considerare o aplicație care demonstrează utilizarea controalelor UzualDialog pentru a deschide și a salva un fișier, pentru a selecta un font și o culoare și pentru a edita text.

Formatați fișierul txt va fi încărcat în câmpul de text (câmpul din stânga din Fig. 7.2) și fișierul de format RTF- în câmp BogatCasetă de text(marginea din dreapta în Fig. 7.2).

DIV_ADBLOCK267 ">

Pentru a implementa interfața computerului, se completează următorul tabel de proprietăți:

obiect

Clasă

obiect

Proprietate

obiect

Valoarea proprietății

„Panouri de general

dialog"

Deschideți / Salvați ca fila

Fila Font

Fila Culoare

Tabelul nu arată proprietățile comenzilor de meniu Font, Culoareși Editați | ×... Mai jos este codul de proceduri și numai pentru comenzile din meniu Fişier (Deschis, Salvațiși SalvațiLa fel de). Scrierea codului pentru alte comenzi de meniu este subiectul celei de-a doua sarcini a acestei lucrări.

Sub privat mnuOpen_Click ()

CommonDialog1.ShowOpen

F $ = CommonDialog1.FileName

Dacă Dreapta (F, 3) = "rtf" Atunci

RichTextBox1.LoadFile F

ElseIf Right (F, 3) = „txt” Atunci

Deschideți F pentru intrare ca # 1

S $ = Intrare (N, 1)

Sub privat mnuSave_Click ()

CommonDialog1.ShowSave

F $ = CommonDialog1.FileName

Sub privat mnuSaveAs_Click ()

CommonDialog1.ShowSave

F $ = CommonDialog1.FileName

RichTextBox1.SaveFile F, rtfRTF

În cursul acestei lucrări, studentul trebuie să îndeplinească 2 sarcini.

Exercitiul 1. În procesul de finalizare a sarcinii, studenții stăpânesc capacitățile de lucru cu fișiere cu acces aleatoriu ( RAF -Aleatoriuaccesfişier).

Pentru un anumit tabel al bazei de date, declarați un tip de date personalizat, declarați o variabilă de acel tip (tutorial, pp. 108 - 112), construiți și depanați proceduri care utilizează o variabilă de tip personalizat.

În special, sunt implementate proceduri pentru comenzile de meniu Scrie la dosarRAFși Citiți din fișierRAF... Ca și în exemplul 7.1, o matrice de obiecte este utilizată pentru a edita datele. ComboCutieși meniu Editați | × cu cinci comenzi de submeniu: Adaugă o notiță, Ștergeți intrarea, Inserați înregistrarea, Editați intrarea, Șterge masa.

Opțiunea 1.

Declarați un tip de date personalizat pentru tabelul „Mașină” (Tabelul 7.1) din baza de date „Autoservice”.

mașină

mașină

defecțiuni

Linia de jos a tabelului 7.1 arată tipurile de câmpuri.

Opțiunea 2.

Declarați un tip de date personalizat pentru tabelul „Defecte” (Tabelul 7.2) al bazei de date „Autoservice”.

defecțiuni

Nume

defecțiuni

Preț

Linia de jos a tabelului 7.2 conține tipuri de câmpuri.

Folosind exemplul de aplicație 7.1 ca exemplu, organizați introducerea și editarea datelor pentru tabelul prezentat, scrierea acestor date într-un fișier cu acces aleatoriu și citirea datelor dintr-un fișier cu acces aleatoriu. Ca și în exemplul 7.1, aceste acțiuni sunt implementate ca operarea comenzilor de meniu prezentate în Fig. 7.1.

Sarcina 2. Pe măsură ce finalizează sarcina, studenții adaugă noi caracteristici aplicației din Exemplul 2, care fac posibilă vizualizarea aplicației ca un simplu editor de text.

Opțiunea 1 UzualDialog implementează comenzile din meniu Fontși Culoare(cu submeniu Culoarea caracteruluiși Culoare de fundal). Cu ajutorul acestor comenzi, trebuie oferită alegerea fontului (numele, stilul și dimensiunea acestuia) pentru fragmentul de text selectat în fereastră. BogatCasetă de text, precum și alegerea culorii simbolurilor selecției și alegerea culorii de fundal a întregii ferestre.

Indicaţie: La instalarea unui obiect UzualDialog pentru a selecta un font folosind proprietatea (Personalizat), asigurați-vă că setați valoarea proprietății Flags egală cu 1, 2 sau 3 (consultați tutorialul, p. 183).

Opțiunea 2... Folosind controlul UzualDialog implementează comenzile din meniu Editați | ×(submeniu Copie, A tăiași Pastă), al cărui scop este copierea sau ştergereîn clipboard-ul fragmentului de text selectat și introduce la locul evidențiat din textul conținutului clipboard-ului.

Indicaţie:În clipboard (obiect Clipboard) puteți folosi metodele SetText și GetText:

Clipboard. SetText RichTextBox1.SelText

RichTextBox1.SelText = Clipboard. Gettext

Date de caractere

Pentru fiecare caracter din memoria computerului, este alocat 1 octet (8 biți) de memorie în codificare ASCII (sau doi octeți în Unicode). Tabelele de coduri conțin fiecare 256 de caractere. Primele numere de cod 0 pe 127 în orice codificare sunt aceleași. Din număr 0 pe 31 - caractere de control, număr 32 Este un spațiu. Alte simboluri: cu 48 pe 57 - numere de la 0 la 9 , cu 65 pe 90 - majuscule ale alfabetului latin, cu 97 pe 122 - litere mici ale alfabetului latin. În mijloc, sunt semne. Poziții de masă cu 128 pe 256 sunt folosite pentru simboluri naționale ale diferitelor limbi.

Datele de caractere pot fi comparate între ele folosind aceleași operațiuni de comparare ca și în cazul datelor aritmetice. Comparația are loc caracter cu caracter (octet) de la stânga la dreapta. De fapt, sunt comparate codurile de caractere corespunzătoare.

Pentru a procesa datele caracter, puteți utiliza operația de concatenare a operanzilor (semnul operației este simbolul „+” sau &).

Un șir de caractere poate fi întotdeauna convertit într-o matrice unidimensională de caractere individuale prin împărțirea acestuia folosind funcția MID sau Despică. După procesarea matricei, elementele sale ar trebui să fie îmbinate înapoi într-un șir folosind operația de concatenare & (Concatenare).

Rezolvarea marii majorități a sarcinilor necesită stăpânirea funcțiilor încorporate ale VB6

Funcţie

Acțiuni efectuate

Exemplu

Determină lungimea variabilei caracter specificată în octeți (număr de caractere)

Fio = „Ivanov”

Tăieri dintr-o variabilă NS stânga k personaje. Caracterele tăiate pot fi atribuite unei alte variabile

Fio = „Ivanov”

T = „Ivan”

Similar cu funcția anterioară, doar în dreapta

Fio = „Ivanov”

Taie k caractere din variabilă X incepand de la pozitie poz inclusiv

Fio = „Ivanov”

T = "vano"

NS la un număr zecimal.

Convertește variabila caracter specificată NSîntr-un număr întreg

Convertește un număr y la un șir de caractere. Tinand cont de semn. Dacă numărul este pozitiv, semnul este înlocuit cu un spațiu

s = "- 678 123,45"

Rezultat - caracterul corespunzător numărului specificat în tabelul de caractere

Emite litere mari ale alfabetului latin

Specifică codul numeric al primului caracter dintr-un șir NS

Tipăriți ASC ("123")

Tipăriți ASC ("1a2m")

Tipăriți ASC ("ABC")

Pe ecran 49 32 65

Începând de la poziție n, definește poziția primei apariții a subșirului yîn linie X... Dacă nu, atunci rezultatul este 0.

x = "porumb"

Print INSTR (1, x, y);

Print INSTR (2, x, y);

Pe ecranul 1 3

Returnează o copie a șirului x după eliminarea caracterelor de spații albe din partea stângă a șirului (spații de început)

Returnează o copie a șirului x după eliminarea caracterelor de spațiu din partea dreaptă a șirului (spații în urmă)

Returnează o copie a șirului x după eliminarea spațiilor de început și de final

Returnează o copie a șirului x cu toate caracterele majuscule convertite în caractere minuscule

Returnează o copie a șirului x cu toate caracterele minuscule convertite în caractere majuscule

Schimbă literele unui șir de caractere, în funcție de valoarea parametrului P

P = 1, majuscule

P = 2, litere mici

P = 3, numai prima literă majusculă

Inversați ordinea într-o linie

Returnează un șir de spații cu lungimea n caractere

ÎNLOCUIȚI (S, S1, S2, n, k)

Înlocuiește subșirul S1 din șirul S cu subșirul S2, începând de la poziția n, k - numărul de substituții, dacă nu este specificat, atunci toate aparițiile lui S1 sunt înlocuite.

imprimare Înlocuire (s1, „1”, „”, 1)

Pe ecranul 23

Funcția de împărțire

Caracteristică nouă introdusă în Visual Basic 6.0. Funcția Split este folosită pentru a împărți un șir în subșiruri folosind separatorul de subșiruri. Returnează o matrice unidimensională cu tipul de date Variant (Șir) care conține subșirurile găsite ca elemente.

Împărțire (expresie ,,,)

Expresie - Argument necesar - șir de împărțit. Dacă argumentul conține un șir nul (""), atunci este returnat o matrice goală, adică. matrice fără elemente și date.

delimitator - Argument opțional - tip caractere Şir care sunt folosite ca separatoare de linii. Dacă este omis, este implicit un caracter spațiu (""). Dacă argumentul conține un șir nul (""), atunci este returnat un tablou singleton care conține întregul șir.

Limită - Un argument opțional care conține numărul de subșiruri de returnat. Dacă argumentul este omis sau este egal cu -1, atunci întreaga linie este procesată.

Comparaţie - Un argument opțional este o constantă numerică care specifică tipul de comparație.

Funcţie A te alatura

O funcție care efectuează acțiunea opusă - concatenarea elementelor matricei într-un șir folosind delimitatorul specificat.

Alăturați-vă (name_array,)

Exemplu ... Textul dat. Stabiliți numărul de oferte. Găsiți numărul de cuvinte care încep cu litera "p". Pe formular, în câmpul Text1 - se află textul original, în câmpul Text2 - numărul de propoziții, în câmpul Text3 - numărul de cuvinte care încep cu litera p.

Subcomandă privată1_Click ()

s1 $ = "Bună ziua Paul! Sărbători fericite! Cele mai bune urări Peter."

a $ = Mid (s1, i, 1)

Dacă (a = ".") Sau (a = "?") Sau (a = "!") Atunci kp = kp + 1

Pentru i = 1 To ns - 2

Dacă Mid (s1, i, 1) = "П" Sau Mid (s1, i, 1) = "п" Atunci ks = ks + 1

Dacă Mid (s1, i, 2) = "П" Sau Mid (s1, i, 2) = "п" Atunci ks = ks + 1

Text2.Text = Str (kp)

Text3.Text = Str (ks)

Subcomandă privată2_Click ()

Operatorla mijloc

Sintaxă

Mid (stringvar, start [, length]) = șir,

unde stringvar este numele variabilei șir de modificat,

start- poziția caracterului în stringvar, de la care începe partea înlocuită a șirului,

lungime- numărul de caractere de înlocuit,

şir- expresie șir pentru înlocuire.

Mid (s1, 9) = „Gilles”

Numărul de caractere de înlocuit este întotdeauna mai mic sau egal cu numărul de caractere din stringvar.

Acest operator nu trebuie confundat cu funcția cu același nume!

Fișiere

În funcție de organizație structurilor informații din dosar, metoda de depozitareși acces este obișnuit să distingem trei tipuri de fișiere pentru aceste informații:

    Fișiere cu acces secvenţial ... De regulă, acestea sunt fișiere text. Unitatea structurală a unor astfel de fișiere este un șir. Datele din ele sunt stocate ca un lanț de coduri ASCII și pot fi procesate de orice editor de text. Scrierea și citirea datelor atunci când lucrați cu astfel de fișiere au loc strict secvențial (nu puteți accesa a doua înregistrare fără a o citi pe prima).

    Fișiere cu acces aleatoriu ... Acestea sunt fișiere structurate care conțin informații sub formă de înregistrări. De exemplu, fișierele bazei de date. Componentele (câmpurile) din înregistrările unor astfel de fișiere pot fi de diferite tipuri. Dar toate înregistrările fișierelor de acces secvențial au lungime constantă și număr de secvență. Acest lucru vă permite să accesați imediat înregistrarea dorită fără a le vizualiza secvenţial pe toate cele anterioare.

    Fișiere binare (binare). ... Aceste fișiere pot fi fișiere de acces secvențial, dar informațiile din ele sunt prezentate sub formă de octeți sau blocuri de octeți. Aceste fișiere includ fișiere cu extensia .exe, adică. software. Acestea pot fi fișiere cu acces aleatoriu: dimensiunea lor de înregistrare este întotdeauna de 1 octet și orice octet poate fi citit după numărul său ordinal.

Nou pe site

>

Cel mai popular