{"id":218,"date":"2009-10-09T14:38:00","date_gmt":"2009-10-09T14:38:00","guid":{"rendered":"http:\/\/e-ware.org\/blog\/?p=218"},"modified":"2009-10-09T14:38:00","modified_gmt":"2009-10-09T14:38:00","slug":"didattica-gambas-passaggio-parametri-da-riga-di-comando","status":"publish","type":"post","link":"http:\/\/e-ware.org\/blog\/didattica-gambas-passaggio-parametri-da-riga-di-comando\/","title":{"rendered":"Didattica Gambas: Passaggio parametri da riga di comando"},"content":{"rendered":"<div><span><br \/><span>Un <a href=\"http:\/\/soluzionisoftware.blogspot.com\/2009\/10\/didattica-c-passaggio-parametri-da.html\">paio di post<\/a> fa ho spiegato molto sinteticamente come creare applicazioni in C che permettessero il passaggio al programma di argomenti da riga di comando.<\/p>\n<p>Ora vedremo come eseguire la stessa procedura ma con codice scritto in Gambas. Anche se la potenza di questo linguaggio si basa sulla facilit\u00e0 con cui si possono scrivere software con interfaccia grafica, alle volte pu\u00f2 essere molto pi\u00f9 utile scrivere codici di programmi per terminale.<\/p>\n<p>Proprio come accade per il linguaggio C, anche con il gambero \u00e8 possibile passare argomenti che verranno poi salvati in un vettore di tipo stringa dove ogni elemento corrisponde ad un parametro.<\/p>\n<p>Avviamo un nuovo progetto e selezioniamo &#8220;Applicazione a riga di comando&#8221;. Fatto ci\u00f2 si presenter\u00e0 il solito IDE ma con la mancanza dei tipici oggetti grafici.<br \/>Si nota subito la mancanza del form FMain sostituito dal modulo MMain.<\/p>\n<p>Spostiamoci nell&#8217;editor del codice e scriviamo:<br \/><\/span><\/span><\/p>\n<pre><span><i>PRINT \"Nome programma: \" & Application.Args[0]<br>PRINT \"Argomenti passati: \" & Application.Args.Count<br>PRINT \"Primo argomento: \" & Application.Args[1]<br>PRINT \"Secondo argomento: \" & Application.Args[2]<\/i><br><\/span><\/pre>\n<p><span>Analizziamo gli elementi fondamentali del codice. L&#8217;uso di Application.Args[x] permette di controllare il contenuto dell&#8217;array degli argomenti passati. Bisogna tenere presente che il primo elemento del vettore Application.Args[0] contiene sempre il nome del programma stesso. Proseguendo cos\u00ec si trovano il primo argomento passato (Application.Args[1]), il secondo (Application.Args[2]), ecc&#8230;..<\/p>\n<p>Di notevole importanza \u00e8 anche l&#8217;elemento Application.Args.Count che altri non \u00e8 che una variabile di tipo integer contenete il numero degli elementi passati al programma. Specifico che se al programma vengono passati 3 elementi Application.Args.Count varr\u00e0 4 poich\u00e8 in esso \u00e8 conteggiato anche il nome del programma stesso.<br \/>Esso inoltre \u00e8 importanti per scrivere programmi dei quali non si conosce preventivamente il numero di argomenti passati. Grazia a Application.Args.Count, infatti, \u00e8 possibile gestire un ciclo che legga tutti i dati anche senza conoscerne il numero preventivamente.<\/p>\n<p>Compilando e lanciando il codice precedente e scrivendo nel terminale ad esempio:<br \/><\/span><\/p>\n<pre><span><i>.\/mio_programma uno due <\/i> <\/span><\/pre>\n<p><span>Ci verr\u00e0 restituito:<br \/><\/span><\/p>\n<pre><span><i>Nome programma: mio_programma<br>Argomenti passati 3<br>Primo argomento: uno<br>Secondo argomento: due<\/i><br><br><\/span><\/pre>\n<p><span>Le potenzialit\u00e0 di questo codice sono molte ed \u00e8 possibile creare programmi molto versatili usabili comodamente da terminale.<\/p>\n<p>Inoltre voglio precisare che questo tipo di gestione pu\u00f2 essere utilizzata anche con programmi ad interfaccia grafica. Infatti \u00e8 possibile lanciare questi programmi da terminale passando eventuali argomenti magari per settare delle impostazioni iniziali.<br \/><\/span><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Un paio di post fa ho spiegato molto sinteticamente come creare applicazioni in C che permettessero il passaggio al programma di argomenti da riga di comando. Ora vedremo come eseguire la stessa procedura ma con codice scritto in Gambas. Anche se la potenza di questo linguaggio si basa sulla facilit\u00e0 con cui si possono scrivere [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[52,23,4],"tags":[],"class_list":["post-218","post","type-post","status-publish","format-standard","hentry","category-didattica","category-gambas","category-opencode"],"views":1581,"_links":{"self":[{"href":"http:\/\/e-ware.org\/blog\/wp-json\/wp\/v2\/posts\/218","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/e-ware.org\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/e-ware.org\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/e-ware.org\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/e-ware.org\/blog\/wp-json\/wp\/v2\/comments?post=218"}],"version-history":[{"count":0,"href":"http:\/\/e-ware.org\/blog\/wp-json\/wp\/v2\/posts\/218\/revisions"}],"wp:attachment":[{"href":"http:\/\/e-ware.org\/blog\/wp-json\/wp\/v2\/media?parent=218"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/e-ware.org\/blog\/wp-json\/wp\/v2\/categories?post=218"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/e-ware.org\/blog\/wp-json\/wp\/v2\/tags?post=218"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}