Cerco aiuto per iniziare...

Buongiorno a tutti,
dopo anni di programmazione in VB6 vorrei cambiare strumento e sto cercando di capire su cosa orientarmi… Xojo non mi sembra male. Premetto che sviluppo applicazioni per il mondo del retail e database e file di testo per scambio dati pane quotidiano. Cerco qualcuno che mi introduca a questo mondo e possa darmi qualche indicazione per come cominciare (guide, manuali… ecc). Prima di acquistare una licenza vorrei esserne sicuro.
Ringrazio anticipatamente

Alfredo siamo passati tutti da qui; anche io oggi sono qui per la mia richiesta.

Comunque XOJO un ottima piattaforma di sviluppo Object Oriented; non la brutta copia di VB6 anzi…
Ci puoi scrivere app davvero ma davvero performanti.
Con lo stesso codice ( e qualche piccola forzatura al compilatore ) riesci ad ottenere app per mac os, linux, windows, ios, web, raspberry pi.

C’ chi ha costruito software complicati, anche per disegno CAD (RealCADD) o per la contabilit; chi ha costruito interfacce in grado di elaborare dati provenienti da sistemi AS400 e chi ha scritto software per studi dentistici e veterinari.

La gerarchia di un’applicazione non del tutto difficile da capire. Ci sono manuali; puoi trovare quelli di realbasic ( xojo prima si chiamava cos ) o quelli di xojo; C’ un Blog gestito dal nostro Evangelista, Antonio Rinaldi che solitamente trovi qui. Il blog all’indirizzo web : https://www.xojoitaliablog.com/.

Ci sono gli esempi a corredo di xojo.
Ci sono tanti esempi anche su questo forum.

Un libro che secondo me, anche se costa qualche euro, molto valido Real Basic TDG2

Io avevo cominciato secoli fa, come tanti qui, a scrivere applicazioni dos con Clipper 5.2 e su unix con MFC Cobol.
Poi sono passato a FoxPro e VB3, poi VB4, poi sono passato a Filemaker Pro, alla fine ho scoperto XOJO e dal 2013 non ho pi cambiato.

Grazie mille Massimiliano,
che ricordi… anche io sono passato per clipper, pascal ecc. ecc. iniziando a scuola con il Basic per Dos ma poi il grosso l’ho sviluppato in VB6… ti ringrazio per i consigli eventualmente chieder qualche altro aiutino per cominciare…
Grazie ancora

Siamo qui tutti a darci una mano.

Ciao Alfredo, anch’io ho sviluppato per un bel po’ di anni in VB6, per poi passare a Xojo da un annetto circa. Sono molto contento del passaggio e ritengo Xojo di gran lunga superiore a VB6.

Quindi, se posso, sar ben lieto di darti una mano, vista anche la mia precedente esperienza nello stesso linguaggio.

Buona programmazione!

Nedi Freguglia

Ciao Nedi e grazie per l’incoraggiamento…
in realt ho un po di difficolt all’impatto con xojo soprattutto perch mi viene sempre da ragionare in VB.
Ne approfitto subito sempre se puoi darmi qualche spunto: devo scorrere un file di testo e leggere per ogni rigo delle sottostringhe e popolare un db.
Non so da dove cominciare…
Se hai qualcosa che mi pu aiutare te ne sarei grato.

Grazie

Per elaborare un file di testo dovresti avere un po’ di dimestichezza con GetFolderItem (per localizzare ed aprire il file) e con TextInputStream /TextOutputStream (per leggerne/scriverne il contenuto). Se non ne sai poco o nulla ti consiglio di consultare la guida on line, che fatta molto bene (basta Googlare “xojo folderItem” e “xojo textinputstream”.

Mentre tu leggi io ti preparo un esempio: mi dovresti dire come strutturata una riga del file di testo (campi a lunghezza fissa, delimitatori di campo ecc.) cos ti faccio vedere anche come elaborare ogni singola riga.

Grazie te ne sarei grato…
in realt un cvs…

“COD”;“DESCRIZIONE”;“EAN”;“prezzo unit,”;“iva”;

…inizio a leggere…

// Apertura del file di testo Clienti2
Dim f As FolderItem
Dim strIN As TextInputStream
Dim riga As String
Dim cl() As String     ' array contenente i dati di un cliente

#If DebugBuild Then
  f = GetLocalFolderItem("")
#Else
  f = GetFolderItem("")
#EndIf

f = f.Child("Clienti2.txt")

If f <> Nil Then
  If f.Exists Then
    strIN = TextInputStream.Open(f)
    ' riga = strIn.ReadAll
    riga = strIN.ReadLine
    
    While riga <> ""
      cl = Split(riga, ";")
      ' elaborazione degli elementi dell'array cl


      
      
      riga = strIN.ReadLine
      
    Wend
    
    strIn.Close
  End If
End If

Il file di testo Clienti2.txt fatto in questo modo:

Freguglia Nedi;Via Turati, 7;40012;Calderara di Reno;BO
Piazza Giovanni Maria;Via delle Arti,26;40060;San Lazzaro di Savena;BO
Cremonese Loredana;Via Turati, 7;40012;Calderara di Reno;BO

I vari campi sono separati da “;” l’istruzione Split (che c’era anche in VB6) si occupa della scomposizione di una riga nei vari campi.

Il metodo GetFolderItem("") ti fa puntare alla cartella in cui presente l’applicazione (l’eseguibile, per quando lo compilerai).
In pratica la variabile f (di tipo FolderItem) che lo fa; e l’istruzione f = f.Child("Clienti2.txt") fa in modo che f punti all’oggetto Clienti2.txt che figlio (Child) della cartella a cui puntava un attimo prima (figlio perch contenuto nella cartella).

Per finire due parole sul metodo GetLocalFolderItem: ti ho detto prima che GetFolderItem ti fa puntare alla cartella in cui presente l’applicazione. Supponiamo che la tua applicazione si chiami “PrimiPassi” e che si trovi nella cartella “C:\ProveXojo”.
Se tu esegui il programma compilato allora GetFolderItem punta alla cartella “C:\ProveXojo”, ma se lo esegui dall’IDE la cartella dell’applicazione diventa “C:\DebugProveXojo” e l’applicazione si chiamer “DebugPrimiPassi”; la conseguenza di tutto ci che GetFolderItem punter a “C:\DebugProveXojo”, per cui un eventuale file presente in “C:\ProveXojo” non verr pi trovato.
Il metodo GetLocalFolderItem serve a “ricomporre” la cartella nella maniera corretta (per va usato solo quando sei in modalit Debug, vale a dire stai eseguendo l’applicazione dall’IDE)

Di seguito il metodo GetLocalFolderItem

Public Function GetLocalFolderItem(folderName as string) as FolderItem
  
  Dim f As FolderItem
  Dim WindowsSucks As String
  
  #if TargetWin32 then
    #if DebugBuild then
      f = GetFolderItem("")
      WindowsSucks = NthField(f.AbsolutePath, "Debug" + App.ShortVersion, 1)
      
      Return GetFolderItem(WindowsSucks + folderName, FolderItem.PathTypeAbsolute)
    #else
      return GetFolderItem(folderName)
    #endif
    
  #elseif TargetMacOS
    return GetFolderItem(folderName)
  #Endif
End Function

Ho trovato questo metodo in un qualche post, e funziona benissimo.

Per ora direi che di carne al fuoco ne abbiamo messa un bel po’: sono a disposizione per qualunque chiarimento.

Ciao.

Grande…
inizio subito a provarlo… davvero grazie sei stato preziosissimo.

per adesso buona serata!

Buona serata anche a te. Quando hai bisogno ti do volentieri una mano (se sono in grado!)

Ciao Alfredo, come procede con Xojo?

Ciao Nedi,
scusa se non ti ho risposto ma ogni tanto sono fuori per lavoro…
con xojo procede ma ho tantissimi dubbi ma solo perch vorrei realizzare pensando ancora a vb6…
Sto realizzando una console per importare dei listini prezzo in un db mysql che risiede su uno spazio web…
oggi finalmente mi sido alla mia scrivania e ricomincio.

Ciao e buona giornata

[quote=409405:@Alfredo Caprioli]Ciao Nedi,
scusa se non ti ho risposto ma ogni tanto sono fuori per lavoro…
con xojo procede ma ho tantissimi dubbi ma solo perchè vorrei realizzare pensando ancora a vb6…
Sto realizzando una console per importare dei listini prezzo in un db mysql che risiede su uno spazio web…
oggi finalmente mi sido alla mia scrivania e ricomincio.

Ciao e buona giornata[/quote]

Ok, buon lavoro! E se hai bisogno fatti vivo (anche se non so se riuscirò ad aiutarti in tutto).

Ciao Nedi
una domanda… premetto che di programmazione ad oggetti non ne so nulla (ho acquistato due libri da leggere al più presto) volevo chiederti: è possibile creare un oggetto per la connessione al mio db senza doverlo fare sempre in ogni routine?
ti riporto il codice:

// Connessione al database *************************************
db.Host = “89.XX.XXX.XXX”
db.Port = 3306
db.DatabaseName = “bvkkanbv_xxxxxxx”
db.UserName = “bvkkanbv_userxxxxxxi”
db.Password = “*************”
// *************************************************************

grazie…

Ciao Alfredo.
Si puoi creare una classe per la connessione
Vedo che usi mysql

allora, io ho creato una classe che utilizza tutti i database e si configura con un semplice file xml
Qui il link del thread

Grazie massimiliano… provo subito

Ciao Alfredo,

benvenuto in Xojo.

Io sono un ex sviluppatore Vb6 che poi era passato a RealBasic ed adesso a Xojo.
tieni conto che la mia principale attivit e come programmatore Java Enterprise, lavoro sviluppato applicazioni cliente-server.

ma per molte esigenze uso Xojo: pi veloce per sviluppare, pi intuitivo ed un ambiente di sviluppo pi semplice.

Il passaggio da Vb6 a Xojo non complesso, entra solo nella logica della programmazione ad Oggetti.
Che in un certo senso Vb6 sotto al cofano aveva

Esiste il concetto di Modulo che presente anche in Vb6, ma in aggiunta hai anche l’Object :wink:

Una cosa, esiste un tool per la migrazione delle applicazioni Vb6 a Xojo, in automatico fa la conversione. Ovviamente dopo il porting dovrai metterci mano. Magari ti pu essere utile.

Se hai bisogno anche io sono disponibile.

Grazie