Odpověď

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:
Předmět:
Ikona zprávy:

Ověření:
Křestní jméno zpěváka Gotta:

Zkratky: stiskněte shift+alt+s pro odeslání nebo shift+alt+p pro prohlédnutí


Shrnutí tématu

Poslal: pf1957
« 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.
Poslal: F.M
« 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.
Poslal: F.M
« kdy: 19-05-2017, 19:39:17 »

Klucí děkují.
Poslal: leste
« kdy: 19-05-2017, 09:20:03 »

2 Stanislav Hruška: ParamCount (bez -1) má dobře, v nultém je ten program.
Poslal: Morrison
« 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
Poslal: Stanislav Hruška
« 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.
Poslal: F.M
« 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?

Poslal: Stanislav Hruška
« 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
Poslal: F.M
« 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?
Poslal: oxo
« kdy: 17-05-2017, 22:01:44 »

Potřebuješ TTimer, nastav si interval na 1000 a v OnTimer prostě zavři aplikaci.
Poslal: F.M
« 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.