Seite 1 von 1

SQLite macOS 5.60x64 kann DB nicht öffnen

Verfasst: 31.08.2017 11:18
von Dieter
Ich habe ein kleines Problem mit SQLite, allerdings nicht generell.

Ein kleine Anwendung von mir mit gerade einmal vier Tabellen läuft aus der IDE heraus ohne Probleme.
Erstelle ich nun ein Executable wird dies zwar anstandslos gemacht, jedoch kann ich mit dieser generierten
APP dieselbe SQLite-DB nicht öffnen. Leider erhalte ich von DatabaseError() keine Information.

Selbst unter Windows 10 (selber Quellcode, selbe DB) klappt das sowohl aus der IDE als auch mit der
eigentlichen EXE-Datei.

Andere PB-Anwendungen funktionieren allerdings!?

Re: SQLite macOS 5.60x64 kann DB nicht öffnen

Verfasst: 31.08.2017 11:28
von GPI
in Zeile 214 ist ein Doppelpunkt zu viel!

Ich will sagen, das ohne einen Codeschnippsel keiner helfen kann. Das einzige was mir einfällt ist die Debug-Falle. z.b.:

Code: Alles auswählen

Debug Init()
in der IDE mit debugger wird init() aufgerufen, ohne debugger wird init() NICHT aufgerufen, weil der Debugbefehl rückstandslos entfernt wird.

Re: SQLite macOS 5.60x64 kann DB nicht öffnen

Verfasst: 31.08.2017 11:39
von Bisonte
GPI sagt es... Source um zu helfen ist notwendig.

Aber wenn ich im dunkeln stocher.... tippe ich auf Pfade. Getreu dem Motto : Es wird das DB File einfach nicht gefunden.
Es gibt viele Gründe, unter denen der aktuelle Pfad in einem Source aus der IDE anders ist, als der aktuelle Pfad in einer
kompilierten EXE.

Windows ist da nicht ganz so pingelig, vielleicht aber MacOS. Vielleicht hilft ja schon ein einfaches

Code: Alles auswählen

SetProgramDirectory(GetPathPart(ProgramFileName()))
Ich kann mir vorstellen, daß du einfach annimmst, das das DB File im gleichen Verzeichnis liegt, wie das Hauptprogramm.

Re: SQLite macOS 5.60x64 kann DB nicht öffnen

Verfasst: 31.08.2017 12:21
von NeoChris
GPI hat geschrieben:in Zeile 214 ist ein Doppelpunkt zu viel!
Kann ich bestätigen.
Ausserdem solltest du in Zeile 7521 nicht mehr CreateGadgetList verwenden weils nicht mehr gebraucht wird!
Und warum benutzt du Goto in Events? Nimm doch ne Procedure oder so.
Define in Procedure ist auch falsch. Dafür gibt es doch Protected. Siehe Zeile 3, 4, 5, 26, 28, 131, 132 und 255.

scnr

Re: SQLite macOS 5.60x64 kann DB nicht öffnen

Verfasst: 31.08.2017 14:57
von Dieter
In Zeile 214 ist überhaupt kein Doppelpunkt :D

Nachdem ich zwischenzeitlich die DB nochmals frisch aus der APP angelegt habe, konnte ich perfekt zugreifen. Da verrückte ist aber, dass ich sowohl aus der APP als
auch aus der IDE Sätze anlegen konnte. Jedoch sah ich in der APP immer nur die aus der APP angelegten Sätze, in der IDE immer alle.
Aber man muss nicht alles verstehen ...

Das war der Schlüssel:
Ich kann mir vorstellen, daß du einfach annimmst, das das DB File im gleichen Verzeichnis liegt, wie das Hauptprogramm.
Natürlich bin ich davon ausgegangen.


Aus dieser Info habe ich mir folgende Lösung bebastelt:

Code: Alles auswählen

Procedure.s MyGetCurrentDirectory()
  Protected dir$
   If IsMac()
    If FindString(ProgramFilename(), "PureBasic.0", #PB_String_NoCase) 
      dir$=GetCurrentDirectory()
    Else
      dir$=GetPathPart(StringField(ProgramFilename(), 1, "/Contents/MacOS/"))
    EndIf
  Else
    dir$=GetCurrentDirectory()
  EndIf 
  ProcedureReturn dir$
EndProcedure
Danke nochmal!

Re: SQLite macOS 5.60x64 kann DB nicht öffnen

Verfasst: 31.08.2017 15:12
von mk-soft
Kann aber auch PureBasic.1, PureBasic.2, etc heissen...