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}
Informacje
Ostatnia modyfikacja 07-05-2006 10:14 Ostatni autor fatalbomb
Ilość wyświetleń 3159 Wersja 1
Komentarz
lofix dnia 07-05-2006 11:00
wrzuc jeszcze raz to samo 3 razy a masz bana jak w banku

Katalog
Copyright © 2000-2006 by Coyote Group 0.9.3-pre3
Czas generowania strony: 0.0143 sek. (zapytań SQL: 10)