[Delphi]Cela cesta k souboru na siti

C++, C#, Visual Basic, Delphi, Perl a ostatní

Moderátor: Moderátoři Živě.cz

Odeslat příspěvekod sr2053 15. 3. 2016 11:35

Tak jak píše silenyJohn , jenom připomenu že cesta se píše z pohledu FB serveru, čili pokud mám data v c:\DATA\test.fdb tak to bude:
server:c:\DATA\test.fdb
sr2053
Junior

Odeslat příspěvekod JanFiala 15. 3. 2016 12:08

dyžon píše:asi jsem to napsal spatne.
z tech ostatnich PC musim jit pres sit, ale path k databazi musi byt zapsanej jako kdybych sel pres lokalni .. ve tvaru DriveLetter:\dir\dir\shared dir\soubor s tim, ze pred to vlozim IP serveru.


Muzes mit zvlast instalator pro server a pro klienta.
Instalace serveru bude zadavat cestu lokalni, instalace klienta pak bud lokalni nebo sitivou, podle toho, zda instalujes lokalniho nebo sitoveho klienta.
U instalatoru muze byt INI soubor, ze ktereho si instalator cesty prednastavi, abys ulehcil praci cloveku, ktery to bude instalovat.
Co můžeš udělat dnes, odlož na včerejšek
JanFiala
Expert
Uživatelský avatar

Odeslat příspěvekod dyžon 15. 3. 2016 13:06

jestli to chapu dobre, tak kdyz na PC bez databaze nainstaluju firebird klient, tak se do IB pripojim i se sitovou cestou ??
ted ho tam totiz nemam ..
instalator udelam tak, aby uzivatel nemel problem co a kam instalovat.
dekuji za podnety, vsechno doma vyzkousim a dam vedet.
AMD FX-6300; Gigabyte 970A-DS3P; DDR3 8192MBytes; AMD Radeon HD 6700 Series
dyžon
Junior
Uživatelský avatar

Odeslat příspěvekod mracka michal 17. 3. 2016 11:57

Co su to za windows?

Da sa spravit lokalny link na urovni filesystemu:
mklink /D "C:\shared dir" "\\DYZON\shared dir\"

Alebo substitucia cesty za volume:
subst o: "\\DYZON\shared dir\"

Ma to daleko k idealu, ale fungovat by to mohlo...
„You don't need a reason to help people.”
~Zidane Tribal, Final Fantasy IX
--
Pouzivam suborovy manazer Nomad.Net.
mracka michal
Junior
Uživatelský avatar

Odeslat příspěvekod silenyJohn 17. 3. 2016 12:39

ak si to spravne pamatam, tak fb pre klienta stacilo pribalit k exe fbclient.dll (alebo ho skopirovat do %system%) a uz sa vedel pripojit na server.
silenyJohn
Junior

Odeslat příspěvekod dyžon 13. 4. 2016 07:16

omlouvam se, za prodleni, ale mel jsem toho moc.
Takze jsem vyzkousel vsechno, co jste mi tu poradili a bohuzel nic z toho nefunguje :-S
pripomenu o co mi jde:
Chci se pripojit k databazi, ktera je na jinem PC na siti pomoci TOpenDialogu.
V Aplikaci je pouzita komponenta TIBDatabase, ktera vyzaduje tvar cesty k databazi: IP:uplna cesta k souboru.

PC s databazi = DYZON (IP = 192.168.1.1),
cesta = D:\data\databaze.fdb,
nasdilena slozka je data.

Bohuzel nevim (pokud to vubec jde), jak ziskat tu uplnou cestu z PC na siti.
Zjistit IP neni problem. OpenDialog mi vrati pouze \\DYZON\data\databaze.fdb a ja bych potreboval zjistit jeste pismeno jednotky a popripade vsechny adresare pred tim nasdilenym, abych z toho udelal uplnou cestu.

zkousel jsem toho uz hodne a porad si s tim nevim rady ...
nemate prosim nekdo jeste nejakej napad ??
jsem schopen zjistit vsechny PC na siti i jejich IP, ale to je mi celkem k nicemu, pokud z toho nedokazu slozit presnej format pro TIBDatabase.DatabasePath
AMD FX-6300; Gigabyte 970A-DS3P; DDR3 8192MBytes; AMD Radeon HD 6700 Series
dyžon
Junior
Uživatelský avatar

Odeslat příspěvekod Just_jo 13. 4. 2016 08:42

Na embarcaderu žádné DatabasePath není. Je tam jen DatabaseName.

http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/delphivclwin32/IBDatabase_TIBDataBase_DatabaseName.html

To co ti vrátí OpenDialog by mělo stačit. Je nasdíleno i právo zápisu?

-- 13. 4. 2016 08:48 --

http://www.firebirdsql.org/manual/qsg10-connecting.html
Výtažek:
Shares, mapped drives or (on Unix) mounted SMB (Samba) filesystems will not work


-- 13. 4. 2016 08:58 --

Vzhledem k tomu že cestu znáš, tak to tam napiš natvrdo a zkus jestli se připojí.
Just_jo
Junior
Uživatelský avatar

Odeslat příspěvekod Nargon 13. 4. 2016 09:51

Problém je v tom že TIDatabase nepoužívá UNC cestu ale nějaký svůj humus pro zadání cesty k databázovému souboru. Neumožňuje ta databáze nějaké jiné připojení? Protože s tímto budeš mít problém neustále.

TOpenDialog ti vrátí síťovou UNC cestu, kterou používá Samba protokol pro síťový přístup. Ale z této cesty nelze zjistit "kde je to fyzicky umístěné na disku síťového PC".
Protože na disku můžeš mít například soubor: D:\moje\data\databaze.fdb
Nasdílíš složku "data" pod názvem "TopSecret", pak přes UNC cestu dostaneš: \\DYZON\TopSecret\databaze.fdb a už nikdy nezjistíš že to máš v cestě D:\moje\data. Nebo alespoň to nemůžeš zjistit z "vnějšku", Tuto reverzní techniku samba protokol nepodporuje a není potřeba. Co by jsi totiž dělal, kdyby ta sdílená složka byla uložena na nějakém linuxovém NASu? to by pak skutečná cesta na disku mohla být například: /volume1/shared/data/databaze.fdb přitom UNC cestu budeš mít stále \\DYZON\data\databaze.fdb

Asi nejsnadnější řešení je zadat síťovou cestu pomocí dolarových skrytých cest: \\DYZON\d$\moje\data\databaze.fdb Pak máš asi jednoduchou cestu jak najít přesně co požaduješ. DYZON si přeložíš na IP adresu a místo znaku $ tam dáš : a máš cestu co potřebuješ.

Případně můžeš ze síťového PC vytáhnout seznam sdílených složek včetně cesty na disku. Stačí WMI Querry na tabulku "win32_share". Například tady jsem to vyzkoušel v PowerShellu:
Kód: Vybrat vše
PS C:\Users\Nargon> Get-WmiObject win32_share -computername pc-remote

Name                                    Path                                    Description
----                                    ----                                    -----------
ADMIN$                                  C:\WINDOWS                              Vzdálený správce
C$                                      C:\                                     Výchozí sdílená položka
D$                                      D:\                                     Výchozí sdílená položka
Filmy                                   D:\Filmy
IPC$                                                                            Vzdálený IPC
print$                                  C:\WINDOWS\system32\spool\drivers       Ovladače tiskárny
Share                                   D:\Share
TopSecret                               D:\moje\data
Users                                   C:\Users

Tady jsem si vytáhl data z počítače na síti pc-remote, kde máš jednak tu složku z UNC cesty a i skutečnou cestu na disk na PC v síti. Samozřejmě, že tohle dostaneš jen z PC s windows s účtem který na to má práva.
V delphi nedělám takže nejvíc co ti poradím je toto: http://stackoverflow.com/questions/4990 ... te-machine tam je kód jak zaslat wmi querry na síťový počítač.
Desktop: Ryzen 7 1800X (3.95GHz, 1.35V), Asus Crosshair VI Hero, 16GB DDR4 Ram (3200MHz), 128GB SSD + 3TB HDD, Nvidia GTX 1080
Notebook: Asus UL50VT 15.6" (SU7300@1.7GHz, 4GB ram, 500GB HDD, Intel GMA 4500MHD + nVidia G210M, dlouha vydrz cca 7+ hod)
Nargon
Moderátor

Odeslat příspěvekod powlcz 14. 4. 2016 07:30

I tak je to prostě kravina, aby uživatel přes v podstatě "Open file" dialog hledal někde připojení do databáze.
Chronický Ujížděč na nevhodnostech
powlcz
Junior

Odeslat příspěvekod dyžon 18. 4. 2016 08:25

powlcz: podle me to neni uplne kravina, mel jsem myslenku, ze jeden clovek nainstaluje program, vytvori databazi kdekoliv se mu zlibi a nasdili ji.
druhej clovek nainstaluje program a pomoci OpenDialogu si tu databazi najde na siti a pripoji se k ni. Je blby, ze se TIBDatabase nemuze pripojit pres UNC a vyzaduje uplnou cestu.

Just_jo: omlouvam se, mas pravdu, je to DatabaseName, popletl jsem to. Ted momentalne tu cestu znam, ale nebude to tak vzdycky.

Nargon: diky, zatim jsem ten odkaz jen prolit a moc moudrej z neho nejsem, ale zkusim se v tom povrtat.

Pouzil jsem IB komponenty, ale chci se jeste zeptat, neexistuji nejake jine, ktere by podporovaly pripojeni pomoci UNC ?? program neni moc slozitej, takze bych ho predelal.
dekuji vsem.
AMD FX-6300; Gigabyte 970A-DS3P; DDR3 8192MBytes; AMD Radeon HD 6700 Series
dyžon
Junior
Uživatelský avatar

Odeslat příspěvekod silenyJohn 18. 4. 2016 10:24

pochop konecne, ze na databazu sa takto nepripaja, ak to ma byt pre viac uzivatelov.
mal som tu cest, vidiet jeden dost drahy sw na pokladne, kde db riesili presne takto. A vysledok bol, ze bud mohla bezat pokladna na predajni, alebo soft na prijem tovaru, ktory sa pripajal na db prave cez zdielany priecinok. Ak sa spustili oba programy, tak to dobabralo db.
Preto sa viac pripojeni riesi cez ten, ako si to nazval firebird humus, ktory dokaze zabezpecit pristup do db pre x-pripojeni.
silenyJohn
Junior

Odeslat příspěvekod powlcz 18. 4. 2016 13:04

dyžon píše:powlcz: podle me to neni uplne kravina, mel jsem myslenku, ze jeden clovek nainstaluje program, vytvori databazi kdekoliv se mu zlibi a nasdili ji.


Takhle prostě ne, při instalaci bys měl vyhodit klasickou hlášku -> chcete se připojit k databázi -> vyplňte config; vs. chcete vytvořit lokální db? (a pak se databázový soubor uloží do složky s instalací). Nevím proč by měl uživatel sdílet svojí db file s ostatními uživateli :hm
Chronický Ujížděč na nevhodnostech
powlcz
Junior

Odeslat příspěvekod dyžon 21. 4. 2016 13:44

pochopil jsem,
vyresil jsem to nakonec tak, ze do ComboBoxu nactu vsechny PC na siti, uzivatel si vybere a cestu k databazi musi zapsat rucne do Editu.
takze dekuji vsem ...
AMD FX-6300; Gigabyte 970A-DS3P; DDR3 8192MBytes; AMD Radeon HD 6700 Series
dyžon
Junior
Uživatelský avatar

Odeslat příspěvekod powlcz 25. 4. 2016 07:58

:D
Chronický Ujížděč na nevhodnostech
powlcz
Junior

Předchozí stránka

Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 0 návštevníků