Database Connect in Windows

Ciao a tutti

perche questo codice mi funziona bene in MAC , mentre in Windows (XP) mi errore di NilObject?

#if TargetWin32 then
Dim dbFile As FolderItem
dbFile = app.ExecutableFile.Parent.Parent.Child(“Resources”).Child(“Esporta_Prodotti”).Child(“products_import.sqlite”)

If dbFile <> Nil Then
  dim  products_import as New SQLiteDatabase
  products_import.DatabaseFile = dbFile
  if products_import.Connect Then
    MsgBox("Connected to " + dbFile.Name)
  Else
    MsgBox("Error: " + products_import.ErrorMessage)
  End If
End If

#Endif
UpdateListaExport
Label92.Text= str(Listbox2.ListCount) + " " + “Items” + EndOfLine
Listbox2.ListIndex=Listbox2.LastIndex

dove sto sbagliando?

debug e esecuzione reale hanno path diversi (in genere)

Mac e win hanno posizioni diverse dell’applicativo rispetto alle risorse

Mac:
App.ExecutableFile.parent -> MacOS/
App.ExecutableFile.parent.parent -> AppBundle (ovvero la cartella dell’applicazione)
App.ExecutableFile.parent.parent.child(“Resources”) ->Resources/ (che quindi parallela a MacOS/)

Win:
App.ExecutableFile.parent ->CartellaApp/
App.ExecutableFile.parent.child(“Resources”) ->Resources/ (che quindi parallela all’applicazione)

se fai:
App.ExecutableFile.parent.parent.child(“Resources”) ottieni nil (a meno che nella cartella che contiene la cartella dell’applicazione c’ una cartella che si chiama Resources, perci potenzialmente potresti anche non avere nil ma puntare semplicemente al file sbagliato)

Per verificare guarda la struttura delle applicazioni create.