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}
{$M 65520,0,327680} - ale gdzie trzeba to wkleić?
wrzuc jeszcze raz to samo 3 razy a masz bana jak w banku