logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[Pascal] Jak uruchomić program exe z poziomu innego programu w Pascalu?

Vego5V 14 Lut 2010 15:10 1496 10
REKLAMA
  • #1 7693127
    Vego5V
    Poziom 11  
    Posty: 31
    Ocena: 2
    Witam wszystkich!
    Piszę trochę w pascalu i co nieco wiem o tym języku, jednak nie wiem jeszcze wszystkiego.. Napisałem jeden prosty program(program_slave.exe) skompilowałem i wszystko jest w porządku. Działa tak jak powinien. Następnie chciałem napisać drugi program(program_master) w którego kodzie zawarta była by instrukcja uruchamiająca program pierwszy(program_slave). Czyli tak, uruchamiam 'program_master' i z poziomu tego programu chciałbym uruchomić 'program_slave'.
    I pojawił się problem bo nie znam takiej instrukcji, procedury która by to robiła.
    Na początku myślałem że taka instrukcja może znajdować sie w unicie 'Dos' przegżebałem wszystko i nic. Nie wiem może źle szukałem, ale nie natrafiłem na nic takiego. Kiepsko znam angielski i może dlatego.
    Wujek google też mi nic nie powiedział konkretnego i dlatego pisze tutaj.
    Jeśli ktoś zna taką instrukcje, procedurę i wie jak ją zastosować to bardzo proszę o pomoc.
    Pozdrawiam i liczę na pomoc.
  • REKLAMA
  • REKLAMA
  • #3 7693173
    Vego5V
    Poziom 11  
    Posty: 31
    Ocena: 2
    Tak dla DOS'a piszę. Mógłbyś jakoś zobrazować działanie tej, funkcji?
    Chodzi mi o to jakie argumenty przyjmuje czy jest bez argumentowa?
  • Pomocny post
    #4 7693210
    Dżyszla
    Poziom 42  
    Posty: 7075
    Pomógł: 1095
    Ocena: 224
    if kompilator='Borland' then PressKey(Ctrl+F1)
    else URL('www.google.pl/search?q=pascal+exec')
  • REKLAMA
  • Pomocny post
    #5 7693297
    arnoldziq
    VIP Zasłużony dla elektroda
    Posty: 5376
    Pomógł: 789
    Ocena: 299
    Dżyszla napisał:
    if kompilator='Borland' then PressKey(Ctrl+F1)
    else URL('www.google.pl/search?q=pascal+exec')

    Widzę, że zebrało się koledze na żarty.

    Ale tak na poważnie :
    [Pascal] Jak uruchomić program exe z poziomu innego programu w Pascalu?

    I proszę nie zapomnieć ograniczyć pamięci zajmowanej przez program 'master', bo inaczej nie program 'slave' nie uruchomi się poprawnie.
  • #6 7693314
    Vego5V
    Poziom 11  
    Posty: 31
    Ocena: 2
    Już coś znalazłem ale mam jeszcze jedno pytanie.
    O co chodzi z takim zpisem:

    SwapVectors;
    Exec(ProgramName, CmdLine);
    SwapVectors;

    Co robi ta funkcja 'SwapVectors' ?
  • REKLAMA
  • #7 7693362
    arnoldziq
    VIP Zasłużony dla elektroda
    Posty: 5376
    Pomógł: 789
    Ocena: 299
    Jak pokazuje funkcja help, dla niezaznajomionych z tematem : klawisz F1 w TP i BP, funkcja ta powoduje, że zmienione wektory przerwań, nie są przekazywane do programu uruchamianego poleceniem exec, oraz że nie są przekazywane z powrotem.
    Jeżeli kolega w swoich programach nie przechwytuje żadnych przerwań, to można tę funkcję spokojnie pominąć.

    [Pascal] Jak uruchomić program exe z poziomu innego programu w Pascalu?
  • #8 7693382
    Vego5V
    Poziom 11  
    Posty: 31
    Ocena: 2
    Też to znalazłem. Wkleiłem do edytora skompilowałem, uruchomiłem i... nie działa. Nie wiem o co chodzi.
    ProgramName to nazwa programu. Czyli pisze np. program1.exe
    CmdLine to ścieżka do programu. Czyli pisze np. C:\
    Po wpisaniu takich danych program1.exe sie nie uruchamia.
    Co robię źle?
  • #10 7693419
    Jarosx9
    Poziom 35  
    Posty: 2785
    Pomógł: 265
    Ocena: 400
    Przecież w tym helpie masz przykład. Przepisz kropka w kropkę to zadziała.
    I pamiętaj że Turbo Pascal jest z ery dos'a więc obowiązują ośmioznakowe nazwy plus ewentualne rozszerzenie.

    PS. Podczas komplilowania programu zawierającego procedurę Exec powinno się zmniejszyć maksymalny rozmiar stosu bo może zabraknąć pamięci - tzn. na początku programu np. {$M $4000,0,0}
  • #11 7693485
    Vego5V
    Poziom 11  
    Posty: 31
    Ocena: 2
    Wklepałem kropka po kropce i nie chce działać.
    Powiedzcie jak wpisać nazwę programu? Z rozszerzeniem czy bez?
    No i ścieżka dostępu? c:\program1 ? czy c:\ ? czy c:\program1.exe?
    Jak bedę to wiedział, to już ja napewno to rozgryzę. Zresztą więcej się nauczę kombinując samemu. Bo jak ktoś chce gotowca to niewiele się nauczy. Ja jak juz się naprawdę poddam to odświeżę ten temat i wtedy może ktoś wrzuci jakiś przykład. A jak na razie to poprubuję sam. Tylko proszę o odpowiedź na powyższe pytania.
    Pozdro:)

    Dodano po 1 [godziny] 14 [minuty]:

    Już do tego doszedłem jak to działa. Może jeszcze nie działa tak jakbym chciał, ale rozgryze to jeszcze. Dzięki wszystkim za pomoc. Pozdrawiam.

Podsumowanie tematu

✨ Użytkownik poszukuje sposobu na uruchomienie programu `program_slave.exe` z poziomu innego programu `program_master` w języku Pascal, pisząc dla systemu DOS. Otrzymuje wskazówki dotyczące użycia funkcji `Exec` oraz `SwapVectors`. Użytkownicy podkreślają znaczenie poprawnego podania argumentów, takich jak nazwa programu i ścieżka dostępu, oraz konieczność ograniczenia pamięci dla programu `master`. W trakcie dyskusji pojawiają się pytania o szczegóły implementacji oraz przykłady kodu, a także o problemy z uruchomieniem programu.
Wygenerowane przez model językowy.
REKLAMA