Lucrul cu fișierele text liber pascal

Trece toate spațiile, caracterele Tab și EOL până când întâlnește primul personaj semnificativ sau EOF. Returnează True atunci când este atinsă EOF

Destul de des puteți auzi un sfat: "Pentru a evita erorile atunci când lucrați cu fișiere, datele din fișier trebuie citite în același mod în care au fost scrise". Din păcate, atunci când lucrați cu fișiere text, acest sfat nu duce întotdeauna la rezultate corecte. Acest lucru este evidențiat de programul din Lista 10.2.







Lista 1 0 .2. Programul txt_inout

program txt_inout; var

j, k1, k2: întreg; f: text;

a: string = 'String'; b: șir;

pentru j: = 1 până la 10 începe

închide (f); writeln; resetați (f);

pentru j: = 1 până la 10 începe

Puteți verifica acest lucru examinând conținutul fișierului după ce programul a fost rulat. Dar programul nu se termină până la sfârșit, deoarece pe linia 21 prima citire din fișier stabilește o eroare cu mesajul:

Eroare 106. Format numeric nevalid

Problema este că prima variabilă din lista de intrări este o variabilă b de tip String, iar lungimea maximă este de 255 octeți. Prin urmare, prima linie este citită din fișier în variabila b complet, iar atunci când se citește valoarea numerică din variabila k1, se găsește un caracter nevalid situat la începutul celei de-a doua linii. Situația poate fi corectată prin limitarea lungimii maxime a variabilei b:







După o astfel de corecție, ieșirea programului pare a fi:

Se execută "c: \ fpc \ myprog \ txt_inout.exe" Linia 1 2

Listing 10.3. Linia programului

program indent; var

f1, f2: text; nume1, nume2: șir; k, n: întreg;

în timp ce nu eof (f1) începe

readln (f1, str); writeln (f2, '': n, str);

dacă ParamCount <3 then begin

writeln ('A apărut o eroare la pornire. Trebuie să fie:'); writeln ('indent file1 file2 shift');

După pornirea programului din linia de comandă:

> txt_inout 3.txt 4.txt 5

Lucrul cu fișierele text liber pascal

Fig. 10.1. Schimbarea conținutului într-un fișier text

În ciuda faptului că programul părinte nu este o procedură în sensul general acceptat al cuvântului, acesta este lansat de sistemul de operare și poate transmite în același timp parametrii liniei de comandă. Parametrii liniei de comandă care sunt tastați după numele programului lansat sunt, cel puțin, separați

ar avea un spațiu gol. Numărul de parametri poate fi extras din variabila de sistem ParamCount. Valorile parametrilor sunt reprezentate într-o formă simbolică printr-o serie de șiruri de caractere, din care pot fi preluate utilizând funcția ParamStr. Deoarece în cazul nostru ultimul parametru reprezintă un număr (numărul de spații introduse la începutul fiecărei linii), acesta trebuie convertit într-un format numeric al mașinii folosind procedura Val. Fiți atenți la designul tipului '': n, utilizat la scrierea unui fișier. Specifică o valoare care trebuie scrisă, constând dintr-un singur spațiu, dar conține, de asemenea, o indicație că un câmp de n poziții este atribuit valorii de ieșire. Spațiul rezultat este presat la marginea din dreapta a acestui câmp și toate pozițiile de conducere sunt de asemenea umplute cu spații.







Articole similare

Trimiteți-le prietenilor: