Results 1 to 8 of 8

Thread: ParamStr toepassen vauit een ander programma

  1. #1

    ParamStr toepassen vauit een ander programma

    Hallo allemaal,

    Ik heb een programma A.EXE met daar achter een aantal Params, v.b. A.EXE 1 2 3. Dit werkt goed.
    Nu wil ik vanuit een ander programma met de volgende procedure het zelfde bereiken, hoe kan ik nu de waarden van 1 2 3 opgeven, zonder de mogelijkheid van het programma A.EXE te verliezen?

    Met een vriendelijke groet, Frans

    Code:
    Procedure QQ
    Var
       Dlg : TAa;
    Begin
       Dlg := TAa.Create(nil);
       Dlg.ShowModal;
       Dlg.Free;
    End;

  2. #2
    Frans,

    Uit je korte code begrijp ik dat je het A-programma wil uitvoeren en het oproepend programma pas verder mag gaan als A is afgesloten.
    Eigenlijk stel je 2 vragen.
    1. Hoe start ik een ander programma met parameters?
    Dat doe je met iets als ExecuteProcess("A.EXE 1 2 3"). Je geeft dus een string op mét de parameters.
    2. Kan ik wachten tot het opgeroepen programma is afgesloten?
    Ja, dat kan met een parameter in de opgeroepen routine (hier ExecuteProcess).

    Ik geef dit antwoord 'uit het hoofd', zonder dit in detail in Lazarus te hebben uitgezocht of gecontroleerd.
    Succes!

  3. #3
    Maarten,
    programma A.EXE ... is een losprogramma en het programma met de getoonde code maakt deel uit van een ander programma. ze werken nooit gelijktijdig.

    H.G. Frans

  4. #4
    mov rax,marcov; push rax marcov's Avatar
    Join Date
    Apr 2004
    Location
    Ehv, Nl
    Posts
    10,357
    Quote Originally Posted by Dubbeld View Post
    Hallo allemaal,

    Ik heb een programma A.EXE met daar achter een aantal Params, v.b. A.EXE 1 2 3. Dit werkt goed.
    Nu wil ik vanuit een ander programma met de volgende procedure het zelfde bereiken, hoe kan ik nu de waarden van 1 2 3 opgeven, zonder de mogelijkheid van het programma A.EXE te verliezen?
    Het is niet duidelijk wat je precies wilt parameterizeren. Het form? Roept het form AA.exe aan? Nadere detailering aub.

    p.s. Overigens is de geprefereerde syntax ExecuteProcess('A.exe',['1','2','3']);

  5. #5
    Het is de bedoeling dat ik het programma op twee manieren kan gebruiken. De eerste manier A.EXE 1 2 3 en de tweede manier is het programma A.PAS geïntrigeerd in een ander programma waarbij voor de uitvoer boven genoemde procedure wordt toegepast.

    H.G. Frans

  6. #6
    Zo wordt het wat duidelijker.
    Allereerst wil je voorkomen dat de 3 startparameters worden uitgelezen wanneer A als nieuw form wordt gebruikt. Wèl moeten de 'parameters' gelezen worden.
    Brainstormend zou ik kiezen voor:
    Zoek met een 'try' de parameters in een 'datamodule' waarin de parameters door het hoofdprogramma zijn geschreven. Wanneer deze datamodule niet bestaat en er dus een fout optreedt kan is blijkbaar A als zelfstandig programma gestart en kunnen de ParamStr's worden gelezen.

    Misschien hebben anderen een mooiere oplossing.
    Succes!

  7. #7
    mov rax,marcov; push rax marcov's Avatar
    Join Date
    Apr 2004
    Location
    Ehv, Nl
    Posts
    10,357
    Verander de kern van het programma in een unit, met een parameters

    Delphi Code:
    1. procedure DoeA(const s1,s2,s3 : string);

    Dan het programma A wordt in principe

    Delphi Code:
    1. begin
    2.   if paramcount>=3 then
    3.     DoeA(paramstr(1),paramstr(2),paramstr(3));
    4. end.

    en in het gui programma roep je b.v.

    Delphi Code:
    1. DoeA(Edit1.Text,Edit2.Text,Edit3.Text);

    aan

  8. #8
    Deze laatste oplossing van marcov heeft het nadeel dat als het programma wat A.PAS aanroept ook gestart wordt met 3 of meer parameters, deze parameters worden gebruikt, terwijl ze voor een ander doel kunnen dienen.
    De oplossing om de kern van het programma om te zetten in een aan te roepen unit is zeker een goede.
    Dan kan voor A.EXE 1 2 3 deze unit worden gebruikt na inlezen van de paramstr's, voor A.PAS kunnen de parameters direct worden doorgegeven.

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •