Newsgroup: it.comp.lang.delphi
Titolo: No form app

Una semplice applicazione/funzione che aggiorna un dato di un dataset deve 
essere lanciata ed eseguirsi senza necessitare alcuna interfaccia utente.
Come si fa? 
 
 
---
Questa e-mail è priva di virus e malware perché è attiva la protezione avast! Antivirus.
http://www.avast.com
 
 

Applicazione console?
 
A.

 Applicazione console?
 
...oppure un *Windows Service*, oppure un'applicazione *VCL Forms* tradizionale, ma senza creare un Form principale. :)
 
-- 
MARCO BREVEGLIERI (Software and Web Developer)
#Home: 
http://bit.ly/marcobreveglieri
 
#Blog: 
http://bit.ly/compilaquindiva
 

 Applicazione console?
 
....oppure un *Windows Service*, oppure un'applicazione *VCL Forms* 
tradizionale, ma senza creare un Form principale. :)
 
-- 
MARCO BREVEGLIERI (Software and Web Developer)
 
Non so creare un Service. Ho provato con un'applicazione *VCL Forms* 
tradizionale, nascondendo il form. Sembra funzionare, nel senso che esegue 
il compito, ma poi mi sono accorto che non chiude il programma... 


 il compito, ma poi mi sono accorto che non chiude il programma... 
 
Ma xche una app console non va bene?
 
A.
 

 il compito, ma poi mi sono accorto che non chiude il programma... 
 
Posta il codice che hai scritto, così vediamo come hai fatto.
 
-- 
MARCO BREVEGLIERI (Software and Web Developer)


 il compito, ma poi mi sono accorto che non chiude il programma...
 
Posta il codice che hai scritto, cos� vediamo come hai fatto.
 
-- 
La soluzione Console potrebbe andare benissimo, ma intanto non so bene come 
fare (ok, potrei imparare..). Ma soprattutto volevo capire l'inghippo che 
c'� nella soluzione che avevo adottato io.
 
Il file del progetto � il seguente:
program SetNumP;
uses
  Forms,
  SetNumU in 'SetRegU.pas' {Form1},
  Globals in '..\..\..\_Common\Src\Globals.pas';
 
{$R *.res}
 
begin
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.CreateForm(TForm1, Form1);
  Application.ShowMainForm := False;
  Application.Run;
end.
 
e il codice di SetNumU � il seguente:
 
procedure TForm1.FormCreate(Sender: TObject);
begin
  CaTable.Databasename:= ExtractFilePath(Application.ExeName);
SetInRecord(CaTable,GetNumTeorico,' ',' ','');
Close;
end;
 
La proc SetInRecord viene eseguita correttamente al create, ma 
all'application run si blocca tutto e l'applicazione rimane pendente.
Nella mia ignoranza capisco anch'io che c'� qualcosa di errato in questa 
soluzione, ma non capisco cosa. Per prima cosa che io possa fare il Close di 
un form in fase di creazione.. Ma � che in qualsiasi evento lo metta � 
uguale.. 
 
 
---
Questa e-mail � priva di virus e malware perch� � attiva la protezione avast! Antivirus.
http://www.avast.com
 
 

Allora diciamo che ï¿½ meglio usare un applicazione console (piï¿½ piccola, 
semplice e senza fronzoli)
Comunque... metti il Application.ShowMainForm := False;  prima del 
create e al posto del close metti Application.Terminate ma, ripeto, ï¿½ 
veramente poco elegante.
 
1) Per applicazioni "crea e distruggi" usare console
2) Non usare il close nella create in quanto, se noti, prima viene 
creata la finestra con Application.CreateForm(TForm1, Form1) e, in 
seguito lanciata con Application.Run (e qui ti si pianta)
 
Se proprio vuoi complicarti la vita e usare una TForm:
 
1) Crea una form il piï¿½ piccola possibile e con BorderStyle settata a bsNone
1) Sull' OnCreate metti Top := screen.height+10 e left := screen.with + 
10 (per togliere la finestra dalla vista)
2) Sempre sull'oncreate fai le tue procedurine e attiva un timer a, 
diciamo, 20-30 millisecondi
3) Sull'evento del timer chiama close

> La soluzione Console potrebbe andare benissimo, ma intanto non so bene come 
 
File-new-console application
 
A.

File-new-console application
A.
Grazie davvero a tutti. Ho trovato File-new-console application, ma il mio 
singolo statement fa riferimento ad una proc di un'altra unit, a cui 
immagino in qualche modo si possa fare riferimento con uno "uses" a poi 
lavora con una TTable, che probabilmente dovrei creare perch� non posso 
trascinare il componente su un form che non c'�. Faccio abbastanza casino ? 


 trascinare il componente su un form che non c'�. 
 
Non serve usare una form, puoi creare un datamodule e trascinare
li' i tuoi componenti non visuali come ttable. 
(la cosa tra l'altro e strasuperconsigliata gia' da una quindicina di 
versioni di delphi :)
 
ciao
Giacomo

 
var
  MyTable: TTable;
 
begin
  MyTable := TTable.Create(nil)
  try
    MyTable.....
 
  finally
     FreeAndNil(MyTable)
  end;
end;
 
 

 c'� nella soluzione che avevo adottato io.
 
Io non farei uso di alcun Form in questo progetto: non è obbligatorio.
 
Il codice che hai messo nell'OnCreate del Form, quindi, lo sposterei all'interno del codice del programma principale.
 
Infine, non ti serve l'infrastruttura dell'oggetto *Application*, tant'è che non hai messaggi Windows da gestire, finestre da visualizzare, ecc.
 
In pratica, togli tutti i Form e nel programma principale rimuovi tutte le istruzioni che fanno riferimento all'oggetto *Application*, mettendo nel corpo tra begin...end solo le istruzioni che devi eseguire quando il programma viene avviato.
 
Ciao,
  Marco.


 
"Alberto Salvati"  ha scritto nel messaggio 
news:4c4b7934-a33a-400d...@googlegroups.com...

Ok, ho fatto la Console application e funziona. Però quando è eseguita si 
vede la finestra nera del cmd apparire e sparire che non è bello ... 
 
 
---
Questa e-mail è priva di virus e malware perché è attiva la protezione avast! Antivirus.
http://www.avast.com
 
 

 vede la finestra nera del cmd apparire e sparire che non è bello ... 
 
L'avevo immaginato... ;)
Per questo ho proseguito a correggere la strada che avevi già intrapreso. :)
 
Hai letto le mie risposte?
 
Ciao,
  Marco.


 vede la finestra nera del cmd apparire e sparire che non � bello ...
 
L'avevo immaginato... ;)
Per questo ho proseguito a correggere la strada che avevi gi� intrapreso. :)
Hai letto le mie risposte?
Ciao,
  Marco.
 
Si, si, ho letto, ma visto l'esempio gentilmente fornito da Alberto, ho 
provato per prima la soluzione console. Ora provo anche la tua, tanto per 
imparare. Grazie 
 
 
---
Questa e-mail � priva di virus e malware perch� � attiva la protezione avast! Antivirus.
http://www.avast.com
 
 


Non puoi tenere il .visibled della form a false?
 
Giorgio

Non puoi tenere il .visibled della form a false?
Giorgio
Ho cominciato cos�, ma poi il programma rimaneva in esecuzione e io non me 
ne accorgevo,, Comunque ho risolto eliminando il form del tutto e 
trasferendo le istruzioni nel file di progetto. 
