Autor Téma: Ukončení aplikace  (Přečteno 549 krát)

F.M

  • Host
Ukončení aplikace
« kdy: 17-05-2017, 21:52:09 »
Dopbrý den.

Všechny data načitam do tabulek ve FormCreate.
Chci aby se form vykreslil a po nějakem čase se aplikace sama ukončila

sleep(1000);
Application.Terminate;
Application.ProcessMessages;

Ale kam s tým?
Zkoušel jsem FormActivate a nic.

Offline oxo

  • Guru
  • *****
  • Příspěvků: 694
  • Karma: 40
    • Verze Delphi: Primárně Lazarus, jinak D7 až aktuální
    • Kluug.net
Re:Ukončení aplikace
« Odpověď #1 kdy: 17-05-2017, 22:01:44 »
Potřebuješ TTimer, nastav si interval na 1000 a v OnTimer prostě zavři aplikaci.
Embarcadero Technology Partner, juj. Člen Lazarus týmu, oj.

F.M

  • Host
Re:Ukončení aplikace
« Odpověď #2 kdy: 18-05-2017, 06:35:12 »
Děkují, pomohlo.

Ještě dotaz mimo tema.
Program všechny data  načita ve FormCreate.
Kdysi, když jích bylo malo, to bylo ok.
Ted už to trva delší dobu a trva než se form vykresli.

Kam dat zdrojak, aby se první vykreslil form a pak šlo vidět jak ty data třidí a zapisuje?

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 2870
  • Karma: 27
    • Verze Delphi: XE7 professional
Re:Ukončení aplikace
« Odpověď #3 kdy: 18-05-2017, 08:29:54 »
Ani by som nemal reagovať. >:(
  • V prvom rade daj zdrojový kód do samostatnej jednotky. Je otázne, či treba vytvoriť triedu.
  • Podobné úlohy sa riešia pomocou vlákien. Ten svoj kód by si mal spustiť vo vedľajšom vlákne. Ale konkrétne poradiť neviem
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

F.M

  • Host
Re:Ukončení aplikace
« Odpověď #4 kdy: 19-05-2017, 06:17:14 »
Tak už to mam ve vlakně  ;) dik.

Ještě jeden dotaz k prvnímu dotazu.

Bych chtěl aby se při poklikaní na program spustíl normalně, ale když ho zavolam s patametrem, tak by se sam po čase ukončil.
Zkoušel jsem funkcí ParamCount a ok

Kód: Delphi [Vybrat]
  1. for i := 0 to ParamCount do
  2.   ShowMessage(ParamStr(i));

Ale toto nechapu.

Kód: Delphi [Vybrat]
  1. if FindCmdLineSwitch('param1') then
  2.    ShowMessage('param1');
  3.  
  4. if FindCmdLineSwitch('param2') then
  5.    ShowMessage('param2');

Jak pak program zavolat?
Vytvořil jsem bat skript
Start "title" "d:\Delphi test\Project1.exe -help"
A nefunguje - nemuže program najit.
Kde je problem?


Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 2870
  • Karma: 27
    • Verze Delphi: XE7 professional
Re:Ukončení aplikace
« Odpověď #5 kdy: 19-05-2017, 07:52:29 »
Moja reakcia je už vlastne mimo tému.
Predpokladám, že v prvom kóde máš preklep, lebo to tak nemôže fungovať. Musí byť
Kód: Delphi [Vybrat]
  1. for I := 0 to ParamCount - 1 do
  2.   ShowMessage(ParamStr(i));
  3.  
A v druhom prípade to pravdepodobne nemôže fungovať.
Kód: Delphi [Vybrat]
  1. if FindCmdLineSwitch('param1') then
  2.    ShowMessage('param1');
  3.  
  4. if FindCmdLineSwitch('param2') then
  5.    ShowMessage('param2');
  6.  
Aplikáciu spúšťaš dvakrát. Neviem čo to narobí v Tvojom prípade. Ale v tom asi Tebou popisovaný problém nebude.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline Morrison

  • Plnoletý
  • ***
  • Příspěvků: 171
  • Karma: 6
    • Verze Delphi: D5, XE2
Re:Ukončení aplikace
« Odpověď #6 kdy: 19-05-2017, 08:12:19 »
2 Stanislav Hruška: Nespouští to dvakrát, jen kontroluje přítomnost dvou parametrů.
2 F.M: parametr dej za uvozovky
Kód: Delphi [Vybrat]
  1. Start "title" "d:\Delphi test\Project1.exe" -help
nil

Offline leste

  • Nováček
  • *
  • Příspěvků: 4
  • Karma: 0
    • Verze Delphi: D7, XE7
Re:Ukončení aplikace
« Odpověď #7 kdy: 19-05-2017, 09:20:03 »
2 Stanislav Hruška: ParamCount (bez -1) má dobře, v nultém je ten program.

F.M

  • Host
Re:Ukončení aplikace
« Odpověď #8 kdy: 19-05-2017, 19:39:17 »
Klucí děkují.

F.M

  • Host
Re:Ukončení aplikace
« Odpověď #9 kdy: 19-05-2017, 23:27:32 »
Jsem tuto funkcí nějak nepochopil  :-[

Start "title" "d:\Delphi test\Project1.exe" -help

Kód: Delphi [Vybrat]
  1.  if FindCmdLineSwitch('help') then
  2.    ShowMessage('help');
Toto je ok.

Co když však nevím co se bude posilat?
Když chcí posilat třeba nějake čisla.

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 1795
  • Karma: 77
    • Verze Delphi: D2007, XE3, DX10
Re:Ukončení aplikace
« Odpověď #10 kdy: 19-05-2017, 23:45:47 »
Co když však nevím co se bude posilat?
Když chcí posilat třeba nějake čisla.
Copak je cislo switch, abys jeho stav/pritomnost testoval pomoci FindCmdLineSwitch?

Jak ti psali: musis prolezt postupnym volanim hodnoty ParamStr(1) az ParamStr(ParamCount) a zjistit, co v nich mas a jestli tomu tvuj program rozumi. A pokud ma ParamStr(i) obsahovat mezeru, musi byt uzavren do uvozovek, to ti take psali.

 

S rychlou odpovědí můžete používat BB kódy a emotikony jako v běžném okně pro odpověď, ale daleko rychleji.

Upozornění: do tohoto tématu bylo naposledy přispěno před 120 dny.
Zvažte prosím založení nového tématu.

Jméno: E-mail:
Ověření:
Datový typ v Delphi, který má True a False: