Mit einer *.exe alles möglich?

Für allgemeine Fragen zur Programmierung mit PureBasic.
patoga
Beiträge: 3
Registriert: 06.03.2020 17:44

Mit einer *.exe alles möglich?

Beitrag von patoga »

Hallo.
Ist es möglich, allein mit einer purebasic.exe auf einem Zielrechner, Daten in eine entfernte MySQL Datenbank zu schreiben.
"Allein" bedeutet ohne Abhängigkeiten irgendwelcher Bibliotheken, wzb. libmysql.dll oder ODBC.
Vorstellbar wäre auch, dass eventuell erforderliche *.dll beim ersten Aufruf durch die purebasic.exe installiert wird. (aber nicht so gern)
Andesdaf
Moderator
Beiträge: 2673
Registriert: 15.06.2008 18:22
Wohnort: Dresden

Re: Mit einer *.exe alles möglich?

Beitrag von Andesdaf »

Siehe Hilfe zu UseMySQLDatabase(): du musst die libmariadb.dll mitliefern.
Win11 x64 | PB 6.20
Benutzeravatar
Macros
Beiträge: 1366
Registriert: 23.12.2005 15:00
Wohnort: Olching(bei FFB)
Kontaktdaten:

Re: Mit einer *.exe alles möglich?

Beitrag von Macros »

Du kannst die dll mit IncludeBinary in deine EXE aufnehmen und dann beim Start auf die Platte schreiben.
Und wenn du willst beim Beenden auch wieder löschen.

Hier ein gekürzter Ausschnitt aus einem meiner Programme:

Code: Alles auswählen

  Procedure CheckFile(file$,*start,*end)
    If FileSize(file$)<1
      If CreateFile(1,file$)
        WriteData(1,*start,*end-*start)
        CloseFile(1)
      Else
        MyRequester_Box("Error",~"The application need write permissions in its directory.\nIf neccessary run it as admin under Windows\n"+
                                "or grant the permissions under Linux",0,0,0,1)
        End
      EndIf
    EndIf
  EndProcedure

  If FileSize("runtime")<>-2
    CreateDirectory("runtime")
  EndIf
  
  CompilerIf #PB_Compiler_OS=#PB_OS_Windows
    CheckFile("runtime/cebomsr-1.6-x86_64.dll",?cebomsr64,?cebomsr64_end)
  CompilerElseIf #PB_Compiler_OS=#PB_OS_Linux
    CheckFile("runtime/libcebomsr-1.6.so",?cebomsrLin,?cebomsrLin_end)
  CompilerEndIf

; - Programmende
  CompilerIf #PB_Compiler_OS=#PB_OS_Windows
    cebomsr64:
      IncludeBinary "runtime_all/cebomsr-1.6-x86_64.dll"
    cebomsr64_end:
  CompilerElseIf #PB_Compiler_OS=#PB_OS_Linux
    cebomsrLin:
    IncludeBinary "runtime_all/libcebomsr-1.6.so"
    cebomsrLin_end:
  CompilerEndIf
Alternativ kannst du sie dann sogar im Arbeitsspeicher ausführen.
Aber dazu würde ich dir ausdrücklich nicht raten. Luis hat da eine Lösung im englischen Forum präsentiert.
Bild
patoga
Beiträge: 3
Registriert: 06.03.2020 17:44

Re: Mit einer *.exe alles möglich?

Beitrag von patoga »

Vielen Dank für eure Antworten. Das hat mich weiter gebracht.
Ist es denn erforderlich, die libmariadb.dll zu registrieren?
Ich habe irgendwo gelesen, dass es reicht, diese im Programmpfad zu haben?
Benutzeravatar
Macros
Beiträge: 1366
Registriert: 23.12.2005 15:00
Wohnort: Olching(bei FFB)
Kontaktdaten:

Re: Mit einer *.exe alles möglich?

Beitrag von Macros »

Ja das reicht vollkommen aus.
Du kannst bei UseMySQLDatabase([BibliothekName$]) auch den optionalen Parameter mit angeben und die Bibliothek irgendwo ablegen.
Bild
Antworten