Lucrul cu fișiere în Visual Basic (sursa) - software

Visual Basic .NET

Print #fFile, "Unele text"

PrintLine (fFile, "Unele text")

Scrie un șir de caractere într-un fișier și un caracter NEWLINE atașează.

Print #fFile, "Unele text";

Print (fFile, "Unele text")

Scrie un șir de caractere la dosar.

Scrie #fFile, "Unele text"

WriteLine (fFile, "Unele text")

Scrie un șir de caractere la dosar, adăugând ghilimele la începutul și sfârșitul liniei, iar caracterul NEWLINE.

Scrie #fFile, "Unele text";

Scrie (fFile, "Unele text")

Scrie un șir de caractere la dosar, adăugând ghilimele la începutul și la sfârșitul liniei

Upgrade Wizard schimbă automat echipa și nu trebuie să o faci singur, dar trebuie să vă amintiți despre toate posibilitățile de la „manual“ migrare cod.

Aici sunt două fragment de cod echivalent pe VB6 si VB.NET.

Nici o problemă cu fișiere text nu apare, deoarece funcțiile VB.NET vă permit să lucrați cu siruri de caractere atunci când scrieți într-un fișier precum și VB6. „Extrem de ciudat ca cei de la Microsoft nu este introdus prompt aici“ subacvatice „pietre!“ - s-ar putea spune. Da, ei chiar grijă de tine.

fișiere și fișiere de acces aleator binare

Chiar mai surprinzător pentru tine, probabil, va duce la faptul că fișierele binare situația este la fel ca și cu text. Aha! Ați reușit deja să se bucure, atunci, este în cazul în care puțini „bolovani“ pritopleno pe drum.
Mai întâi de toate „vechi noi“ caracteristici Get Put, folosit pentru a scrie la fișierele binare (binar) fișiere și acces aleator (Random) numită acum FileGet și FilePut și se va comporta un pic diferit. Când scrieți un siruri de caractere de lungime variabilă sau rețele dinamice de date în fișierele de acces aleatoriu sunt adăugate în mod automat la un antet care specifică lungimea de doi octeți.
De asemenea, FileGet nu determina tipul de matrice a trecut la momentul execuției, în cazul în matrice nu a fost inițializat anterior.
uita-te imediat la exemple. Pentru „o mai mare claritate“ am definit-o structură specială. Asta e ceea ce avem pentru binar:

Pentru a începe exemplul din VB6:

Vă mai amintiți ce am scris, discutând funcția FileGet comportament? De obicei, în VB6 Ia un set de date funcție de citire sunt transmise matrice neinițializate. așa cum se face în exemplul de mai sus.

În VB.NET aceasta va cauza o eroare, după cum vom vedea, și prin transferarea proiectului care urmează să fie mâncat Expertul de upgrade. Luați în considerare codul:

Pentru a corecta această eroare este suficientă pentru a inițializa matrice cu cel puțin un element. Ca aceasta:

Acum putem citi datele, dar este ușor de văzut că în loc de perechile de valori așteptate i = myBinArray (i) noi am vedea <> 0 (de exemplu, 0 = 0, 1 = 1, 2 = 22, etc.). Asta e doar o consecinta a ceea ce contează FileGet citit titlu care indică numărul de elemente din matrice. Este suficient să spunem că este necesar pentru a citi o gamă dinamică prin setarea ArrayIsDynamic = Adevărat, toate problemele noastre sunt eliminate.

În consecință, același lucru trebuie să fie făcut în FilePut.

În jurul aceeași problemă apare atunci când lucrați cu șiruri de lungime fixă ​​- fișiere create din VB6 incorect citite în VB.NET. De exemplu, următoarea citească și să scrie codul în VB6 funcționează bine, dar în VB.NET poate fi dificil.

Motivul este că VB.NET, înregistrarea unui șir de caractere, în conformitate cu siruri de caractere sale de lungime variabilă și adaugă un antet care indică dimensiunea sa. În acest caz, soluția nu este mai dificilă decât anterior. Instalarea StringIsFixedLength a rezolva această problemă.

notițe

Schematic, conținutul fișierelor de diferite tipuri pot fi reprezentate ca (x - orice simbol, text sau binar):

fișier text sau într-un fișier binar

fișier cu acces aleator

Din câte știu, cele mai multe dintre programatorii nu pot explica diferența dintre comportamentul unei matrice dinamice de matrice statice (cu dimensiune fixa rigid - numărul de elemente). Poate că acum este cazul, atunci când este necesar să se clarifice acest punct.
Vom crea două tablouri:

Acum avem o singură matrice cu 256 de elemente și o formală „matrice gol“ pentru a umple pe care doriți să o utilizați ReDim.

În viitor, putem suprascrie întotdeauna dimensiunea unui tablou dinamic, la discreția noastră folosind ReDim și ReDim Preserve, dar nu putem trece peste dimensiunea unei matrice statice. Deși s-ar părea, cele două tablouri au multe în comun.

articole similare