Pornirea programelor externe

Pornirea programelor externe

Din programul scris în Turbo Pascal, puteți rula orice alt program gata de rulare. Pentru aceasta, utilizați procedura EXEC din modulul bibliotecă DOS. Formatul recursului la procedură:







aici <имя> - expresie de tip STRING; numele fișierului cu programul care se numește; <параметры> - expresie de tip STRING; setările de apel.

Numele programului rulat poate fi precedat de calea către fișier. Parametrii sunt transmise programului lansat ca șir de text și pot fi analizate prin următoarele două funcții.

Returnează numărul total de parametri de program (valoarea WORD). Manipulare:

Parametrii apelurilor urmează, de obicei, linia de comandă DOS imediat după numele programului programat și sunt separați de acest nume și unul de celălalt prin spații, de exemplu:

Aici MYPROG.PAS și A: \ SYSTEM1.SIA sunt parametrii transmiși la programele TURBO și SIAM.

Când un program este sunat direct din mediul Turbo Pascal, parametrii pot fi parcurși folosind opțiunea OPȚIUNI / PARAMETRI (vezi app.1).

Returnează o valoare a tipului STRING corespunzător parametrului de apel dorit. Formatul circulației:

aici - o expresie de tip WORD; numărul ordinal al parametrului.

Rețineți că programul trimite întotdeauna un parametru corespunzător N = 0. În acest parametru, DOS raportează numele complet al programului rulat, indicând discul și directorul din care a fost descărcat.







Utilizarea procedurii EXEC are o serie de caracteristici. În primul rând, trebuie remarcat faptul că programul de asteptare în sine rămâne rezident în memorie, deci nu ar trebui să ia toată memoria. Cantitatea de memorie programată alocată este reglată de opțiunea OPȚIUNI / MEMORIE MĂSURI (vezi aplicația 1). Setările implicite LOW LIMIT movila HIGH HEAP LIMIT această opțiune sunt după cum urmează (respectiv 0 și 655360 bytes) ca programul de asteptare scris în Turbo Pascal, ocupă întreaga memorie disponibilă, și face ca programul nu va fi încărcat. Este util să includeți o directivă a compilatorului în textul programului apelant, care modifică dimensiunile implicite ale memoriei. De exemplu, aceasta:

Această directivă limitează zona de stivă utilizată de 2KB a programului și exclude posibilitatea utilizării unei memorii dinamice în acesta. Desigur, puteți seta alte valori ale parametrilor în această directivă.

Caracteristicile specifice ale execuției programelor Turbo Pascal necesită modificarea valorilor standard ale unor vectori de întrerupere. Acestea includ vectori cu următoarele numere hexazecimale:

$ 00, $ 02, $ 18, $ 23, $ 24, $ 34, $ 35, $ ​​36, $ 37,

$ 38, $ 39, $ FOR, $ SZ, $ 3C, $ 3D, $ 3E, $ 3F, $ 75.

Valorile inițiale ale acestor vectori sunt stocate în optsprezece variabile cu numele SA VEINTXX din modulul bibliotecă SYSTEM, unde XX este numărul de întrerupere hexazecimal. Prin urmare, imediat înainte de pornirea programului extern și imediat după revenirea acestuia, se recomandă apelarea procedurii bibliotecii fără parametrii SWAPVECTORS, care schimbă conținutul vectorilor de întrerupere și variabilele listate.

Programul din Exemplul 11.4 citește orice comandă DOS de la tastatură, apoi apelează procesorul comenzii COMMAND. COM și transmite această comandă către acesta.

Notă: pentru a specifica fișierul COMMAND.COM și calea către acesta, este utilizată funcția bibliotecă GETENV, cu ajutorul căreia puteți obține setările sistemului de operare. În particular, parametrul COMSPEC specifică specificațiile fișierului care conține shell-ul.

scrie ('Introduceți comanda DOS:');

readln (st); dacă st <> „“ Atunci







Articole similare

Trimiteți-le prietenilor: