Biblioteka SQLite bez dllki

0

Witam
Czy istnieje jakaś biblioteka / komponent do Delphi która możliwość odczytu baz sqlite3 ale nie potrzebuje dorzucania do projektu pliku sqlite3.dll ?
Jeśli nie ma to jest jakiś sposób aby załadować ją do zasobów i odczytywać prosto z nich (próbowałem wypakowywać z res przy starcie ale akurat z tą dllką to nie działa i wyskakuje brak pliku ).

0

Możesz podłączyć LIB-a do projektu, ale to chyba będzie trudniejsze niż ładowanie z RES-a.
Lepiej napisz jak to robisz z RES-em i jaki masz komunikat błędu (jeśli kontrolujesz błędy).

0

Można wkompilować dll do zasobów i z nich jej używać. Z modułem dllloader.pas, który kiedyś tutaj wrzuciłem działa. I to konkretnie dllka do SQLite, bo kiedyś robiłem testy. Jednak robiłem to pod Delphi 7. Pod nowszymi IDE, może być problem z działaniem..Musisz pogooglować za odpowiednim kodem albo poczekać do jutra wieczora. Wtedy będę miał możliwość wrzucić pliki tutaj.

0

Olesiu byłbym wdzięczny za przykład jak wykorzystać ten dllloader.pas na sqlite bo to by mnie satysfakcjonowało :-)
Bo RES robiłem tak jak tutaj na forum w dziale FAQ jest przykład i po prostu nie znajdowało pliku pomimo że go wypakował. Ale szczerze mówiąc nie chce nic wypakowywać bo wole skorzystać z rady Olesia, żeby wszystko było w 1 exeku

0

Proszę bardzo. Dwa przykłady w archiwach dołaczam do tego posta. Tworzone pod Delphi 7. Oprócz źródeł i niezbędnych plików, są też exeki. Pierwszy załącznik ładuje dllkę z www. Zaś drugi wykorzystuje bass.dll.

0

Zapytam dość bezczelnie, ale czy mógłbyś podać przykład dla SQLITE bo ciut mam z tym problem :P ?

0

No pytanie jest tak bezczelne, że nie powinienem na nie odpowiadać :P Z czym masz konretnie problem? Gdyż nie wiem z jakich modułów dla SQLite korzystasz i dllki. Ale ja z sqlite3.dll i modułu sqlite3.pas autorstwa Tima Andersona. I trzeba niestety, mozolnie w module sqlite3.pas, przerobić deklaracje wszystkich funkcji mniej więcej tak jak jest to zrobione w przykładzie z myszką i dźwiękami oraz bass.dll. Konkretnie w module a_bass_lib_resource.pas. Ttylko, że tam potrzebna mi była tylko część ze wszystkich funkcji z dllki bass.

Także stwórz plik *.rc uwzględniający tę dllkę, skompiluj go do *.res przy użyciu brcc32.exe. Dodaj dyektywą $R ten zasób. Następnie załaduj go w kodzie, poprzez stream typu TResourceStream i funkcję Load obiektu typu TDllLoader. Teraz wczytaj żądane eksporty poprzez funkcje FindExport i tyle. Żadnej filozofii tutaj na prawdę nie ma. Kodu, w którym kombinowałem z sqlite3.dll z zasobów, z tego co widzę już nie posiadam. Albo ogólnie go nigdy nie miałem. Nie pamiętam dokładnie. Pamiętam tylko, że kiedyś ktoś dostał ode mnie na tym forum ten moduł dllloader.pas. I napisał, że bez problemów właśnie załadował mu dllkę od SQLite3 z zasobów do używania.

0

Oki, dzięki za pomoc :-)

0

A jednak potrzebuje pomocy :D

Mam taka funkcje w sqlite3.pas :

function SQLite3_Open(filename: PAnsiChar; var db: TSQLiteDB): integer; cdecl; external SQLiteDLL name 'sqlite3_open';

czyli wg. tego co jest w tym pliku z bass :

var
  BASS_Init : function(device : Integer; freq, flags : DWORD; win : HWND; clsid : PGUID) : BOOL; stdcall;

mam zrobić takie cos :

var
Sqlite_Open : function(filename: PAnsiChar; var db: TSQLiteDB): integer; cdecl; external SQLiteDLL name 'sqlite3_open';

?????

I potem wywolac :

 DLLData := TResourceStream.Create(HInstance, ResourceWithBassLibraryName, RT_RCDATA);
  DLL.Load(DLLData);
  DLLData.Destroy;
  Sqlite_open := DLL.FindExport('Sqlite_Open');

a zmienna SQLiteDLL zastapić czym ?

0

Oki, dzieki za pomoc, opanowałem to :P

1 użytkowników online, w tym zalogowanych: 0, gości: 1