Dlaczego nie działa procedura EXEC

fatalbomb

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 komentarzy

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

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