Visualizza post

Questa sezione ti permette di visualizzare tutti i post inviati da questo utente. N.B: puoi vedere solo i post relativi alle aree dove hai l'accesso.


Post - Mario

Pagine: 1 [2] 3 4 ... 10
16
Programmazione (Gambas 2) / Re: Utilizzo diretto di SQL
« il: 16 Ottobre 2008, 16:20:38 »
EH eh, le domande me le studio di notte :)

Allora, ti spiego: ho il driver ODBC di mamma IBM correttamente settato, e questo lo so perché lanciando isql su questo collegamento, posso lanciare i comandi classici ottenendo risposte corrette.
Purtroppo l'ODBC di iSeries Access, in ambiente Gambas, non funziona, nel senso che quando lo lancio mi da un errore #11, quello generico.
HO anche provato a chiedere a Lui (Benoit, da non nominare invano ;) ), che non ha trovato una soluzione.
Io penso che sia un problema di AMD64 (la mia macchina è carrozzata così) per cui c'è qualche piccola idiosincrasia a livello di .so, che magari lui si aspetta a 32 bit e invece trova a 64 bit... non che sia grave, ma quando piglio il prossimo computer lo prendo con un 8088!

Visto che isql funziona mi chiedevo se era possibile bypassare l'utilizzo dell'ODBC utilizzando direttamente i comandi SQL.

Nel sistema AS/400 si fa questa cosa nell'RPG (o Cobol) embedded: in pratica, all'interno del sorgente si inseriscono dei comandi SQL, che un precompilatore traduce in chiamate a delle API esterne.
In questi ambiti su utilizzano i CURSORI, che sono praticamente dei file temporanei che contengono il risultato del comando SQL, e che possono essere utilizzati in lettura, anche casuale, con altri comandi (FETCH NEXT, eccetera...)
Speravo che anche in Gambas fosse possibile, ma mi sa che dovrò aspettare di avere un 386... :(

17
Domande tecniche (Gambas 2) / Re: Una domanda sugli oggetti
« il: 16 Ottobre 2008, 13:44:57 »
La mia logica è sottrattiva, e penso più "naturale": metto 90 numeri nel sacchetto, li mischio e ne prendo i primi sei.
Potrei prendere una posizione a caso (dove ci sarebbe un numero casuale, dipendente dall'azione di "mischia" di prima), e azzerare la posizione: in questo caso dovrei solo controllare che non sia vuota la posizione.

E' interessante in quanti modi diversi, e tutti validi a modo loro, sia possibile fare una cosa relativamente semplice, no? :)

18
Programmazione (Gambas 2) / Utilizzo diretto di SQL
« il: 16 Ottobre 2008, 12:43:11 »
Ehilà!
Tutto bene? :)

Una cosa che non riesco a far funzionare (probabile problema di AMD64...) è l'ODBC verso gli AS/400 all'interno di Gambas.
Trafficando però ho visto che i comandi SQL dati in isql funzionano normalmente, per cui mi sorge la domanda: è possibile utilizzare chiamate dirette a SQL dentro Gambas, evitando l'uso diretto dell'ODBC?

:)

Ciau

Mario

19
Domande tecniche (Gambas 2) / Re: Una domanda sugli oggetti
« il: 14 Ottobre 2008, 13:04:27 »
Bella la tua soluzione, Giulio.
Però io cercavo qualcosa di più "naturale", più simile al mischiare un sacchetto.
Come dicevo, questa cosina vorrei svilupparla per fare un programma di tombola.
E' una scemata, lo so, ma può tornare utile nelle feste, no? :)

20
Domande tecniche (Gambas 2) / Re: Una domanda sugli oggetti
« il: 13 Ottobre 2008, 15:33:35 »
Eh eh, finalmente ho cominciato a capirci qualcosa :)
Lo so che ci ho messo parecchio, ma ultimamente, ringraziando il cielo, ho tanto lavoro, per cui il tempo scarseggia ;)

Avevo fatto, tempo fa, un programmi scemo per imparare a usare Gambas. Il programma si "inventava" tre numeri a caso e una ruota, e mi proponeva un bel terno (non ne ho mai azzeccato uno, ma ho imparato il codice RND :D)

Il programma, così com'era, non mi piaceva perché estraendo a caso tre numeri capitava che mi desse dei duplicati, visto che non c'era controllo.
Allora l'ho ripreso e l'ho  modificato aggiungendo una classe "sacchetto", configurata cosi:

Codice: [Seleziona]

PROPERTY READ numeri AS Integer[]


PUBLIC FUNCTION riempi(numeri AS Integer[]) AS Integer[]
 
  DIM estratto AS Integer
   
    FOR estratto = 1 TO 90
      numeri[estratto - 1] = estratto
    NEXT
 
END

PUBLIC FUNCTION mescola(numeri AS Integer[]) AS Integer[]
 
  DIM quale AS Integer
  DIM estratti AS Integer
  DIM memory AS Integer
 
 
  ' Mescolo i numeri
  FOR estratti = 0 TO 89
    quale = Rnd(0, 89)
    memory = numeri[estratti]
    numeri[estratti] = numeri[quale]
    numeri[quale] = memory
  NEXT
 
 
END



Poi nel programma mi limito a fare

Codice: [Seleziona]

DIM ruote AS String[11]
DIM estratti AS Integer[6]
DIM estrazione AS Integer
DIM numeri AS Integer[90]
DIM Sacchetto AS Sacchetto

  Sacchetto = NEW Sacchetto

  'Riempio il sacchetto e mescolo
  Sacchetto.riempi(numeri)
  Sacchetto.mescola(numeri)
 
  'Estraggo i sei numeri
  FOR estrazione = 0 TO 5
   estratti[estrazione] = numeri[estrazione]
  NEXT


(più altra roba, ovviamente)
Quindi prendo, come vedete, i primi sei numeri.
In questo modo sono sicuro di prendere una e una sola volta ogni numero. Non potrò mai avere un duplicato :)
Un miglioramento potrebbe essere il prendere non i primi sei, ma sei posizioni a caso.
Anche il rimescolamento mi pare abbastanza semplice ed efficace: in pratica per ogni posizione da 1 a 90, decido un'altra posizione a caso, e scambio i due numeri.

Cosa ne pensate? La logica degli oggetti è correttamente utilizzata? :)

Più avanti mi piacerebbe fare un altro programmino con la stessa classe, che mi faccia vedere un bel tabellone a video con i 90 numeri, e che mi faccia un'estrazione di un numero per volta, mettendo un segnaposto sul tabellone.
Si, insomma: il gioco della tombola versione "non devo mettere a posto alla fine" :D

21
Domande tecniche (Gambas 2) / Re: Gestione journal in fase di prova
« il: 18 Settembre 2008, 08:13:56 »
Può anche darsi che abbia un problema io con il mio Sqlite... purtroppo l'AMD64 del mio scatolino a volte ha qualche antipatia... :)

22
Programmazione (Gambas 2) / Re: Questione di stile
« il: 15 Settembre 2008, 15:57:48 »
Be', posso garantirvi che programmando molto e in posti diversi, mi capita spesso di trovarmi davanti dei programmi scritti da me qualche anno prima.. e non capirci nulla!
No, be', adesso esagero, ma trovare qualche passaggio strano e non ricordare il perché l'ho fatto così, è cosa che mi capita ogni tanto.
Per cui il lavoro di documentazione non è solo per gli altri, ma anche 8e soprattutto) per noi stessi :)

23
Domande tecniche (Gambas 2) / Re: Gestione journal in fase di prova
« il: 14 Settembre 2008, 20:53:27 »
Int2File() si limita a spostare i dati dal video al file, c'è anche File2Int, che fa l'operazione contraria. Ho fatto una coppia di funzioni per ogni file interessato. Mi pare che la funzione non ci sia molto da sbagliare, in ogni caso eccola :)

Codice: [Seleziona]

PUBLIC SUB Int2File(hData AS result)
 
  hData!prgKey = KeyInterventi.Text
  hData!dtIntervento = (dtIntervento.value)
  hData!intProgetto = CodiceProgetto(cbProgetti.Text)
  hData!TempoImpiegato = Val(TempoOre.text)
  hData!Note = txDescrizione.Text
  hData!intTrasferta = cbTrasferta.Value
  hData!intTariffa = TariffaUnaTantum.Value
 
  'Se la data di fatturazione non è indicata, ci metto la data intervento
  IF IsNull(dtFatturazione.value) THEN
    hData!dtFatturazione = (dtIntervento.Value)
  ELSE
    hData!dtFatturazione = (dtFatturazione.value)
  END IF
     
END


Come vedi c'è veramente poca roba.
Non sapevo la cosa del rollback automatico, interessante :)

24
Domande tecniche (Gambas 2) / Re: Gestione journal in fase di prova
« il: 14 Settembre 2008, 18:26:38 »
Ecco la parte di codice interessata...

Codice: [Seleziona]

  'Se il record esiste, lo aggiorno
  IF hInterventi.Available = TRUE
    Int2File(hInterventi)
  END IF
 
  'Se il record non esiste, lo aggiungo
  IF hInterventi.Available = FALSE
    db.Begin
    hInterventi = db.Create("Interventi")
    Int2File(hInterventi)
  END IF

  hInterventi.Update
  db.Commit



Ho notato che durante l'elaborazione viene creato un file che si chiama "NomeDelDataBase.journal" (o qualcosa del genere), e che sparisce quando chiudo il programma... Ho provato a verificare cosa capita quando faccio delle modifiche al DB, ma sul file "originale", anche dopo la commit, la modifica non si vede. Eppure se vado a richiamare lo stesso record lo vedo modificato, come se prendesse i dati da qualche parte temporanea... :o

25
Domande tecniche (Gambas 2) / Re: Una domanda sugli oggetti
« il: 13 Settembre 2008, 18:09:09 »
Ehm, se non è chiedere troppo, sarebbe possibile avere qualche esempio di codifica di oggetti?
Sinceramente non riesco proprio a entrare in "sintonia" con questo modo di programmare... :)

26
Programmazione (Gambas 2) / Questione di stile
« il: 13 Settembre 2008, 18:07:14 »
Ciao a tutti :)

Una delle ultime cose che si imparano, quando si decide di studiare un linguaggio, è "lo stile" con cui immettere le specifiche. Purtroppo ho vissuto dei drammi esistenziali quando ho dovuto mettere mano a programmi scritti da colleghi senza un minimo di stile, e questo sarebbe il meno, ma anche senza nessun commento!
Sfilze di istruzioni una dietro l'altra senza che si capisca quando inizia un blocco e quando finisce.

Memore di questo cerco di scrivere codice con un minimo di criterio, inserendo commenti dove mi sembrano necessari, e indentando le istruzioni nidificate.
Ma è sufficiente?
Probabilmente no. C'è anche da fare i conti con i nomi dei campi e delle funzioni.
Sul mio sistema preferito (l'AS/400), fino all'RPGIII i nomi dei campi non potevano superare i sei caratteri (avete letto bene: 6 caratteri!!) e questo causava dei salti mortali per riuscire a dare un nome decente alle variabili.
Ecco per esempio che un campo che doveva contenere l'Imponibile Iva poteva essere IMPNIV, e l'importo iva invece era IMPIVA. Ma come chiamare un campo che conteneva il totale degli importi esenti? TOIMES? E vi pare chiaro?
Ovviamente in Gambas un campo del genere potrebbe essere scritto "a gobba di dromedario", TotaleImportiEsenti, tanto per dire, diventando autoesplicativo, quindi senza necessità di commenti.
E la funzione che calcola il totale degli importi esenti potrebbe essere CalcolaTotaleImportiEsenti()... Autoesplicativo, ma sembra quasi un romanzo :)

Insomma, lo stile in un programma ha una sua precisa importanza.
Voi come affrontate il "problema", se così si può chiamare, della "calligrafia" di un codice?

27
Domande tecniche (Gambas 2) / Re: Gestione journal in fase di prova
« il: 13 Settembre 2008, 17:51:14 »
Sì, sì :)

Codice: [Seleziona]

PUBLIC SUB Button1_Click()
'Chiusura del programma

  db.Commit
  db.Close
  ME.Close

END

28
Domande tecniche (Gambas 2) / Gestione journal in fase di prova
« il: 11 Settembre 2008, 15:22:46 »
Ehilà!

Ho un dubbietto :)

Sto facendo un progettino che lavora su un DB Sqlite.
Ho verificato che il programma effettua correttamente tutti gli aggiornamenti facendo il test. Quando esco dall'applicazione sembra che le modifiche vengano perdute.
E' possibile che in fase di test l'ambiente di sviluppo mi faccia un rollback quando esco?

Grazie :)

29
Domande tecniche (Gambas 2) / Re: Utilizzo di librerie esterne
« il: 08 Settembre 2008, 07:14:47 »
Be', l'80% è risolto :)
Ma come si può fare per quelle chiuse?

30
Domande tecniche (Gambas 2) / Re: Utilizzo di librerie esterne
« il: 07 Settembre 2008, 22:14:24 »
Ho fatto diversamente :)
Ho scaricato la parte "-dev" del modulo che mi interessa (libical in questo caso), e nella directory /usr/include ho trovato diversa roba, tra cui alcune intestazioni che contengono anche informazioni. In alcuni casi i programmatori inseriscono indicazioni tecniche molto utili :)

Però la tua idea non è malvagia, anche se l'editor di testo non funziona con i file binari. Però ci sono gli editor esadecimali... ;)

Pagine: 1 [2] 3 4 ... 10