Programowanie w języku Pascal

Dlaczego nie działa procedura EXEC

Czasami może zajść potrzeba użycia jakiegoś zewnętrznego polecenia lub programu. Używamy wtedy procedury Exec:

Exec (GetEnv ('COMSPEC'),'/C wykonywana_komenda');


Jednak po uruchomieniu takiego kodu czasami czeka nas niespodzianka: kod się nie wykonuje, tak jakby TP w ogóle zignorował całą procedurę Exec. Przyczyną takiego stanu rzeczy jest nieprawidłowo zdefiniowana ilość pamięci na program. Zwykle wygląda to tak:

{$M 16384,0,655360}


W dyrektywie są trzy wartości, od lewej: rozmiar stosu, minimalny i maksymalny rozmiar sterty.
Właśnie ostatni parametr w dyrektywie jest przyczyną problemów. Na EXEC brakuje pamięci. Wtedy trzeba przerobić nieco tą dyrektywę. Najbardziej radykalne rozwiązanie to ustawienie tam zera:

{$M 16384,0,0}


Jeżeli jednak używamy trybu graficznego, sprawa się komplikuje. Z taką ilością zarezerwowanej pamięci tryb graficzny nie ruszy. Wtedy trzeba nieco poeksperymentować. Optymalną wartością jest:

{$M 65520,0,327680}

2 komentarze

McJacob 2011-06-21 11:32

{$M 65520,0,327680} - ale gdzie trzeba to wkleić?

lofix 2006-05-07 11:00

wrzuc jeszcze raz to samo 3 razy a masz bana jak w banku