Na forum 4programmers.net korzystamy z plików cookies. Część z nich jest niezbędna do funkcjonowania
naszego forum, natomiast wykorzystanie pozostałych zależy od Twojej dobrowolnej zgody, którą możesz
wyrazić poniżej. Klikając „Zaakceptuj Wszystkie” zgadzasz się na wykorzystywanie przez nas plików cookies
analitycznych oraz reklamowych, jeżeli nie chcesz udzielić nam swojej zgody kliknij „Tylko niezbędne”.
Możesz także wyrazić swoją zgodę odrębnie dla plików cookies analitycznych lub reklamowych. W tym celu
ustaw odpowiednio pola wyboru i kliknij „Zaakceptuj Zaznaczone”. Więcej informacji o technologii cookie
znajduje się w naszej polityce prywatności.
Delphi XE7, FireDAC i PostgreSQL - wymagana biblioteka libpq.dll
Delphi XE7, FireDAC i PostgreSQL - wymagana biblioteka libpq.dll
0
Witam serdecznie.
Na warsztat wziąłem najnowsze dostępne środowisko Delphi XE7 wersja trial i testuję działanie FireDAC-a w połączeniu z bazą PostgreSQL, wszystko działa niby ok. Jest jednak małe ale... chodzi o to że do dystrybucji razem z plikiem exe konieczny jest plik libpq.dll. To jak to w końcu jest z tym FireDAC-iem łączy się natywnie czy potrzebuje zewnętrznej biblioteki ?
W tym tutorialu
Marco Cantu mówi że FireDAC ma sterowniki do baz napisane w pascalu i kompiluje je bezpośrednio w projekcie i tak zresztą reklamują FireDAC-a.
Czy może tylko wersja trial nie posiada takiej funkcjonalności ?
Oczywiście do projektu dodaję uses FireDAC.Phys.PG oraz FDPhysPgDriverLink1.
0
mylisz pojęcia - sterownik natywny, czyli nie ODBC czy dbExpress. Plik libpq.dll to biblioteka do natywnego połączenia z postgresem - API, które wraz ze zmianą silnika bazy nie zmienia się dla końcowego użytkownika (programisty). Każda baza ma własnego klienta.
Witam serdecznie.
Na warsztat wziąłem najnowsze dostępne środowisko Delphi XE7 wersja trial i testuję działanie FireDAC-a w połączeniu z bazą PostgreSQL, wszystko działa niby ok. Jest jednak małe ale... chodzi o to że do dystrybucji razem z plikiem exe konieczny jest plik libpq.dll. To jak to w końcu jest z tym FireDAC-iem łączy się natywnie czy potrzebuje zewnętrznej biblioteki?
Wszystkie bazy danych oferują tzw. klienta, czyli bibliotekę (lub zestaw bibliotek) które są niezbędne do obsługi danej bazy danych. W przypadku PostgreSQL jest to libpq.dll.
W tym tutorialu
Marco Cantu mówi że FireDAC ma sterowniki do baz napisane w pascalu i kompiluje je bezpośrednio w projekcie i tak zresztą reklamują FireDAC-a.
Marco nie ma monopolu na prawdę, a ten tutorial jest po prostu słaby (bo powstał na szybko jak Emba przejęła AnyDAC i jest zlepkiem materiałów Dmitriego - autora AnyDAC). To raz.
Dwa - Marco musi tak mówić, bo to marketing ;-)
A prawda jest taka; FireDAC posiada własną implementację obsługi natywnych bibliotek konkretnej bazy danych. Dzięki temu, FireDAC obsługuje taką bazę wydajnie i pewnie, a także pozwala na wykorzystanie jej specyficznych właściwości (np. Eventy dla Firebird czy FileStream dla MSSQL, itd.).
Czy może tylko wersja trial nie posiada takiej funkcjonalności ?
Trial nie ma tu nic do rzeczy.
Oczywiście do projektu dodaję uses FireDAC.Phys.PG oraz FDPhysPgDriverLink1.
Wystarczy samo użycie konkretnego modułu, co de-facto się dzieje kiedy położysz komponent niewizualny FDXXXDriverLink.
0
abrakadaber i wloochacz bardzo dziękuję za potwierdzenie moich spostrzeżeń.
A czy znacie jakiś sprawdzony i działający sposób na ładowanie bibliotek dll z zasobów ? Jest co prawda BTMemoryModule ale z tego co udało mi się wyczytać (wypowiedź olesio) radzi sobie z dll-kami napisanymi w Delphi ….?
0
Po co ładować bibliotekę z zasobów? Rozumiem, że chcesz aby Twój program wymagał specjalnych uprawnień przy uruchamianiu?
Dołączasz ją do instalki swojego programu, kopiujesz do katalogu z exe i działa.
0
No racja może przekombinowane, ale jestem troche zniesmaczony FireDAC-iem... a jak to jest w przypadku UniDAC-a http://www.devart.com/unidac/ czy też potrzebuje zewnętrzne biblioteki ?
No racja może przekombinowane, ale jestem troche zniesmaczony FireDAC-iem...
Zniesmaczony?
Bawisz się nim kilka(naście?) godzin i już zdążyłeś sobie wyrobić opinię?
Zazdroszczę - ja UŻYWAM i rozwijam FireDAC'a od wersji 0.8 AnyDAC (czyli jakieś 9 lat) i twierdzę, że to najlepsza biblioteka do obsługi baz danych dla Delphi jaka kiedykolwiek się ukazała.
Znam i używałem w kom rożnych projektach IBX, FIBPlus, ADO, SDAC, dbExpress (z nieistniejącymi już rozszerzeniem firmy Luxena) i dawno temu BDE.
Komponenty DevArtu są bardzo dobre, ale FireDAC ma zdecydowanie większą funkcjonalność.
Tylko trzeba wiedzieć jak i do czego tego użyć - no, a tu już jest problem...
Nie (jako opcja); ale użyj google, nie szukaj frajera.
0
@wloochacz źle odebrałeś moją wypowiedź a chyba też nie za precyzyjnie się wyraziłem, tak więc już wyjaśniam... zniesmaczony jestem tym faktem że mówią/piszą no natywnym połączeniu bez użycia dodatkowych zewnętrznych bibliotek a faktycznie jest inaczej :/
W międzyczasie ściągnąłem triala UniDAC-a i wygląda na to że faktycznie „On” nie potrzebuje dodatkowych bibliotek dll.
tylko wersja trial nie linkuje do exe dac210.bpl i unidac210.bpl
@wloochacz źle odebrałeś moją wypowiedź a chyba też nie za precyzyjnie się wyraziłem, tak więc już wyjaśniam... zniesmaczony jestem tym faktem że mówią/piszą no natywnym połączeniu bez użycia dodatkowych zewnętrznych bibliotek a faktycznie jest inaczej :/
I tak i nie, ale to naprawdę nieważne skoro nie rozumiesz co to jest "database client".
Niektóre bazy danych posiadają możliwość połączenia via TCP/IP bezpośrednio z bazą danych (np. PostgreSQL), bez użycia standardowego klienta. I takiej opcji połączenia z bazami FireDAC nie wspiera. Kropka.
Ale wspiera natywne biblioteki baz danych i nie wymaga do tego dodatkowych pośredników (ODBC, ADO, OLEDB, itd.). I też kropka.
W międzyczasie ściągnąłem triala UniDAC-a i wygląda na to że faktycznie „On” nie potrzebuje dodatkowych bibliotek dll.
tylko wersja trial nie linkuje do exe dac210.bpl i unidac210.bpl
Przepraszam, że co? Co nie linkuje czego? Delphi niczego nie linkuje, albo wkompilowuje do exe niezbędne DCU, albo dołącza wymagane pakiety (do exe lub Twojego pakietu) jeśli używasz kompilacji z pakietami.
A używasz?
0
Oczywiście kompilacja z dołączaniem pakietów a i tak komunikat wygląda
dodanie obrazka do załączników posta - furious programming
0
Ten błąd pojawia się pod IDE czy jak odpalasz exe?
Jeśli przy exe - dołączyłeś te pakiety do exe lub wgrałeś je do katalogu PATH?
Przecież masz napisane jak wół co i jak.
BTW - "jęczysz" nad jedną biblioteką z PostgreSQL, ale nie przeszkadza Ci dołączenia kilkudziesięciu BPL do exe? ;-)
Bo bez tego to nie zadziała u klienta - nie ma mowy.
0
Odpowiedź z support-u UniDAC-a :
If you are using UniDAC Trial, then, independently on the "Build with runtime packages" option value, you have to deploy *.bpl packages along with the application.
Odpowiedź z support-u UniDAC-a :
„If you are using UniDAC Trial, then, independently on the "Build with runtime packages" option value, you have to deploy *.bpl packages along with the application.”
Przecież dokładnie to miałeś napisane w okienku z błędem, prawda?
Prawda.
Sorry, ale jak do tego Ci potrzebny support to naprawdę NIE ładuj się w pakiety, bo nie ogarniesz.
No chyba, że bardzo chcesz...
0
Z całym szacunkiem dla twojej wiedzy wloochacz ale wszystkich rozumów to żeś nie pozjadał...
Z UniDAC-em chodzi o to że czy dołączysz „z czy bez” pakietów, wersja trial przygotowana jest w ten sposób że i tak wymaga dystrybucji exe z dac210.bpl i
unidac210.bpl koniec kropka.
Z całym szacunkiem dla twojej wiedzy wloochacz ale wszystkich rozumów to żeś nie pozjadał...
Ano, "żem" nie pozjadał... Tyle, że ja z pakietami za pan brat od bardzo dawno (dokładnie od Delphi 2006) i wierz mi - dokładnie wiem, co jak i kiedy.
Z UniDAC-em chodzi o to że czy dołączysz „z czy bez” pakietów, wersja trial przygotowana jest w ten sposób że i tak wymaga dystrybucji exe z dac210.bpl i
unidac210.bpl koniec kropka. http://www.devart.com/unidac/docs/index.html?deployment.htm
Pytałem się grzecznie - kompilujesz exe z pakietami? Odpowiedziałeś, że tak. I kropka.
Dwa - dostałeś na twarzy wyjątek z UniDAC? Dostałeś, a w nim napisane jak wół stało co i jak.
O to czy się da czy się nie da... może się da, a może nie.
Na pewno da się wkompilować jeden pakiet w inny (a dokładnie - moduły który dany pakiet zawiera), ale do tego trzeba mieć źródła pakietów.
A jak ich nie masz - trzeba sobie zrobić i tak, da się to zrobić bez posiadania źródeł modułów.
Tyle, że to naprawdę nieistotne w tym konkretnym przypadku...
1 użytkowników online, w tym zalogowanych: 0, gości: 1