Ma sikerült "beletenyerelni" egy érdekes problémába!
Röviden:
A számlázó programom FireBird adatbázist használ, eddig a 2.0.3 verzió volt...
Úgy gondoltam, éppen ideje váltani a 2.5 verzióra...
Annak rendje és módja szerint az eredeti (2.0) verzióval csináltam backupot, majd FB2.0 uninstall, FB2.5 install és immár a 2.5 verzió alatt az IBExperttel -> Restore.
Eddig minden OK!
DE!
Mivel használok ClientDataset-et is a programomban, ehhez kell a midas.dll...
win7, windows server sbs 2008-on sikerült is az "átállás" (több helyen), azonban az egyik helyen, ahol xp van, átállás után indítom a programomat és visszaugat -> "Unable to load midas.dll"
Van tippetek, mi ennek az oka? Merre keressem a megoldást?
Még egy dolog!
Szívem szerint név szerint "reklámot csinálnék" annak a cégnek, aki az ominózus helyen feltelepített egy FB2.0-át! Arról van szó, hogy 2011-ig használták a programjukat, majd megváltak tőlük... Az adott xp-s gépen szabályosan uninstalláltam az FB2.0-át, de pl. az FB2.0 "vezérlőpultját" nem szedte le!!!
(Fogtam, töröltem "szőröstől-bőröstől" az FB2.0 könyvtárát (uninstall után, már ami maradt...))
Lehet, hogy ez "kavart be?"
Még annyit, hogy a midas.dll minden esetben ott van az exe mellett!
Regisztrálva van az XP-én?
regsvr32.exe c:\windows\system32\midas.dll
Itt is írnak a problémáról: Cannot load Midas.dll - Delphi 2010 on Windows 7 Professional XP hasonló oka lehet.
Még valami.
32 bites programot nem lehet keveri 64 bitessel, és fordítva.
Még annyit, hogy a midas.dll minden esetben ott van az exe mellett!
Ez igazából szerintem nem elég... Egy kis nyomozás után nekem úgy tűnik, hogy a kifogásolt .dll egy InprocServer32 - vagyis elképzelhető, hogy már regisztrálva van, de a regisztrációs adatbázisban tárolt útvonalon nem található ez a .dll. Amúgy pedig nekem úgy tűnt, hogyha nem lenne regisztrálva, akkor megpróbálja ezt megtenni.
Ellenőrizd, hogy hová is mutat a regisztráció és tedd oda vagy regisztráld újra! Ha pedig esetleg valami egyéb miatt az elérési út pl. egy másik gépre mutat, akkor az további gondokat is okozhat...
A hibaüzenet mindenképpen arra utal, hogy a kérdéses .dll-t nem tudja valami miatt betölteni! Sajnos ez nem feltétlenül jelenti azt, hogy magát a file-t nem találja, hanem talán még azt is, hogy valamelyik másik közvetve használt .dll-t nem tudja betölteni. Továbbá előfordulhat olyan is, hogy pl. a belépési pont függvénye (DllMain) hamis értékkel tért vissza. Bár ez utóbbinak a valószínűsége elég kicsi.
Viszont régebben itt is volt már hasonló téma.
Csak ma volt lehetőségem xp-s gépeken kipróbálni...
Másik dolog, hogy mindig az exe mellé tettem a midas.dll-t és működött...
Valószínű, hogy a programom első indításakor az xp regisztrálja a dll-t! (Az biztos, hogy én nem tettem!) Méghozzá arra a könytárra mutatva, ahol eredetileg volt, azaz, ha az eredeti könytvtárból elmozgatom a dll-t egy másik könyvtárba, akkor már hiába van az exe mellett!
Bizonyára az UAC miatt már eleve kudarcba fulladt a regisztráció... XP-n is ha mindig csak korlátozott jogú felhasználóként lett volna elindítva, akkor ott is hasonló módon alakulhatna... A magyarázat egyszerű, amelyet a DSIntf.pas-ban található CheckDbClient eljárás tanulmányozása tehet világossá (pl. Delphi 2006 esetén).
Egyébként pedig egyszerű módon lehet elérni, hogy mindig az alkalmazás mellé bemásolt midas.dll legyen használatban (természetesen csak akkor, ha az ember nem kívánja az .exe-be belefordítani). Ennek a nyitja pedig a RegisterMidasLib eljárás. Persze garantálni kell, hogy az automatikus regisztrációs folyamat előtt történjen meg a hívása!