Home Forum Discussioni Domanda sul codice

Visualizzazione 3 filoni di risposte
  • Autore
    Post
    • #5990 Rispondi
      Marcus
      Ospite

      Per curiosità stavo dando un’occhiata al codice (visto che ho imparato un pochino di C++ come hobby), non riconosco il linguaggio ma pare comunque comprensibile, potrei sapere di che linguaggio si tratta? 🙂
      Seconda domanda, stavo guardando questa funzione qua:

      Function cerca_riga_rossa(oNomeSheet) ' (c) Giuseppe Vizziello 2014
      '	oNomeSheet = ThisComponent.currentcontroller.activesheet.Name
      	oSheet = ThisComponent.Sheets.getByName(oNomeSheet)
      	lastRow=getLastUsedRow(oSheet)
      
      	For i = 0 To lastRow
      'print oSheet.GetCellByPosition(0,i).cellstyle
      '	ThisComponent.CurrentController.Select(oSheet.getCellByPosition(0, i)
      		If oSheet.GetCellByPosition(0,i).cellstyle = "Riga_rossa_Chiudi" And _
      			oSheet.GetCellByPosition(1,i).cellstyle = "Riga_rossa_Chiudi" And _
      			oSheet.GetCellByPosition(2,i).cellstyle = "Riga_rossa_Chiudi" Then
      	cerca_riga_rossa = i
      			Exit For 
      		End If
      	Next
      	if  cerca_riga_rossa = 0 Then
      '		msgbox ("Quasi certamente manca la riga rossa di chiusura della tabella!"& CHR(10)_
      '		& "Controlla e PROVVEDI!", 16, "ERRORE!")
      		ThisComponent.CurrentController.Select(oSheet.getCellByPosition(0, getLastUsedRow(oSheet)+1))
      	ScriptPy("pyleeno.py","inserisci_riga_rossa")
      '		Exit Function 
      	End If
      cerca_riga_rossa = i
      End Function

      ed ho notato che si parte dalla riga 0 pur conoscendo la riga finale. Visto che la riga rossa si trova alla fine del documento, non sarebbe più efficiente fare un loop partendo dall’ultima riga ed andando a ritroso fino a 0?
      Inoltre mi domandavo,
      For i = 0 To lastRow mostra che ‘=’ serve per assegnare un valore ad una variabile, però in quella funzione c’è anche
      if cerca_riga_rossa = 0 Then che mostra che ‘=’ è anche il comparison operator, in C++ sarebbe ‘==’. E’ un bug nel codice o in questo linguaggio il simbolo ‘=’ ha diversi significato a seconda del contesto?
      Inoltre, volevo provare a personalizzare il comportamento del bottone “Nuova Voce” in modo che si ricordi il setting dell’ultima voce che ho modificato e crei una nuova voce settata nello stesso modo(sempre che sia una cosa legale da fare), percui potrei sapere il nome della funzione dietro il bottone “Nuova Voce”? 🙂

    • #5994 Rispondi
      Giuseppe Vizziello
      Amministratore del forum

      Ciao Marcus,
      LeenO è scritto essenzialmente in due linguaggi: FreeBasic e Python, poi c’è XML con cui sono scritti i menù. Tu ti stai riferendo al FreeBasic con cui Bart Aimar scrisse Ultimus da cui LeenO deriva.
      Ormai evito volentieri di scrivere codice in FreeBasic limitandomi solo a correggere piccoli bug. Quando si tratta di dover manomettere porzioni consistenti di codice preferisco riscrivere le funzioni in Python e questo succede da almeno un paio di anni. Niente C++.

      La funzione cerca_riga_rossa(oNomeSheet) in effetti potrebbe iniziare la sua ricerca almeno dalla metà del foglio, ma ricorda che, trattandosi di un “comune” foglio di calcolo, è possibile che in calce al foglio del computo possono esserci anche altri dati, oltre il limite della riga rossa, ad occupare dello spazio. Considerato che questa operazione di ricerca è piuttosto rara e non comporta tempi lunghi, l’ottimizzazione della funzione non è determinate per la velocizzazione del programma. In realtà va utilizzata solo in caso di cancellazione accidentale della riga rossa nel foglio e devo dire che questo non mi succede da parecchio tempo.
      La riga rossa ha la funzione di delimitare la fine del computo e costituisce una sorta di margine oltre il quale i comandi di LeenO si rifiutano di funzionare.
      Per inciso, se la riga rossa non c’è, cercare dall’inizio del foglio o dalla sua fine, non fa differenza.

      Il simbolo ‘=’ in FreeBasic ha il duplice significato di assegnare un valore ad una variabile e di comparison operator, quindi non è un bug.

      Il pulsante “Nuova Voce” avvia lo script Python nuova_voce_scelta() che si trova nel file ../pyLeenO/pyleeno.py.
      Ma cosa intendi dire per “sempre che sia una cosa legale da fare”?
      LeenO è Free Software rilasciato con licenza LGPL, pertanto liberamente scaricabile ed utilizzabile per tutti gli usi.
      Per questo motivo aderisce perfettamente alle quattro libertà essenziali che caratterizzano in software libero che qui testualmente cito:

      Un programma è software libero se gli utenti del programma godono delle quattro libertà fondamentali:
      – Libertà di eseguire il programma come si desidera, per qualsiasi scopo (libertà 0).
      – Libertà di studiare come funziona il programma e di modificarlo in modo da adattarlo alle proprie necessità (libertà 1). L’accesso al codice sorgente ne è un prerequisito.
      – Libertà di ridistribuire copie in modo da aiutare il prossimo (libertà 2).
      – Libertà di migliorare il programma e distribuirne pubblicamente i miglioramenti da voi apportati (e le vostre versioni modificate in genere), in modo tale che tutta la comunità ne tragga beneficio (libertà 3). L’accesso al codice sorgente ne è un prerequisito.
      https://www.gnu.org/philosophy/free-sw.it.html

      Fai un po’ tu…
      Se ti va di confrontarti e magari dare una mano, raggiungici su https://t.me/leeno_computometrico e proviamo ad organizzarci.

    • #6001 Rispondi
      Marcus
      Ospite

      Ti ringrazio Giuseppe, tutto chiaro 🙂
      Pur essendo un principiante in fatto di programmazione, il fatto che in FreeBasic l’ ‘=’ può essere sia assignment che comparison operator mi fà un pò rabbrividire…ma forse non posso dire nulla, visto che in C++ tramite l’overload degli operatori in sostanza l’ ‘=’ potrebbe fare qualsiasi cosa xD
      Comunque python sembra interessante e diffuso, e a quanto pare nessun vero programmatore conosce un solo linguaggio, quindi magari nel futuro prossimo (visto che al momento sto studiando algoritmi e c++) gli darò un’occhiata più da vicino.
      Grazie per l’invito ma per ora passo, sono ancora un principiante, magari mi farò avanti quando potrò realmente contribuire 🙂

    • #6003 Rispondi
      Giuseppe Vizziello
      Amministratore del forum

      Io non sono un programmatore. Mi ritengo solo un utente avanzato del copia/incolla.
      Noi siamo qui…

Visualizzazione 3 filoni di risposte
Rispondi a: Domanda sul codice
Le tue informazioni:




Home › Forum › Discussioni › Domanda sul codice Questo topic ha 3 risposte, 2 partecipanti ed è stato aggiornato l'ultima volta 6 anni fa da Giuseppe Vizziello. Visualizzazione 3 filoni di risposte Autore Post 20 Febbraio 2018 alle 11:48 #5990 Rispondi MarcusOspite Per curiosità stavo dando un’occhiata al codice (visto che ho imparato un pochino di C++...il software libero per computi metrici con LibreOffice