připojení knihoven   zodpovězená otázka

VB.NET

Dobrý den.

Mám prosbu. Poradte prosím někdo jak připojit ve VisualBasic.NET

externí knihovnu do projektu a jak ? Co kam zadat, na co si dát pozor, jak odesílat eventuelně data, pokud je fce nebo sub potřebuje.

Díky

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Stačí si v Solution Explorer kliknout na References (zapněte zobrazení všech souborů kliknutím na ikonku v ToolStripu solution Exploreru) pravým talčítkem myši a zvolit Add Reference, pak kartu Browse a najdetě knihovnu. Tu pak můžete v kódu běžně využívat.

nahlásit spamnahlásit spam 2 / 2 odpovědětodpovědět

Děkuji. Akorát stále nevím, jak mám pokračovat. Knihovnu sice připojím podle vašeho návodu, ale co dál?

Nevím jak se na knihovnu odkázat. Jsem začátečník ve VB.net.

Děkuji

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Kdysi dávno jsem to nějak dělal pod VisualBasic 6.0, ale mám dojem, že to bylo přes nějakou knížku a v tu chvíli jsem to nepotřeboval, tak jsem tomu nevěnoval ani takovou pozornost. Teď by se mi to hodilo. Díky

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Dejme tomu, že se knihovna jmenuje MojeKnihovna, pak k ní přistupujete kódem takto:

Imports MojeKnihovna 'pro lepší manipulaci naimportujeme knihovnu
Public Class Form1
Private Sub Form1_Load() Handles Me.Load 'když se form načte,
Dim instance as New MojeKnihovna.MojeTrida 'vytvoříme si instanci nějaké třídy z knihovny a 
Me.Text = instance.MojeMetodaVracejiciString(parametry) 'pak jen vyvoláváme její metody a funkce, 
MsgBox(instance.MojeKonstanta.ToString) 'konstanty a další...
End Sub
End Class

Pokud nerozumíte, klidně se ptejte, i já jsem pouhopouhý začátečník.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

A já jsem pouhopouhý blbec. Něco dělám špatně a asi to nebude pro mě.

Vytvořil jsem si jen tak cvičně knihovnu na výpočet obvodů objektů:

public class obvody1
    Public Sub ObvodTroj(ByVal a, ByVal b, ByVal c)
        MsgBox("Obvod trojúhelníku - " & a + b + c)
    End Sub
    Public Sub ObvodCtverec(ByVal a)
        MsgBox("Obvod čtverce - " & 4 * a)
    End Sub
    Public Sub ObvodObdelnik(ByVal a, ByVal b)
        MsgBox("Obvod obdelníku - " & 2 * (a + b))
    End Sub
    Public Sub ObvodKruhu(ByVal r)
        MsgBox("Obvod kruhu - " & 2 * 3, 14 * r)
    End Sub
End Class

Něco, na čem bych to mohl odzkoušet.

Pak jsem založil nový project, zkopíroval váš příklad, upravil hodnoty, ale nic:

Imports ClassLibrary1 'pro lepší manipulaci naimportujeme knihovnu
Public Class Form1
    Private Sub Form1_Load() Handles Me.Load  'když se form načte,
        Dim instance As New ClassLibrary1.obvody 'vytvoříme si instanci nějaké třídy z knihovny a 
        instance.ObvodObdelnik(4, 5)
        'pak jen vyvoláváme její metody a funkce, 
        instance.ObvodKruhu(10) 'konstanty a další...
    End Sub
End Class

1) I když se moje knihovna jmenuje obvody.dll tak se mi při imports nezobrazuje a stále mi to nabízí knihovnu "ClassLibrary1", obě knihovny obsahují to samé, obvody.dll jsem přepsal název až v editoru. Dále při Handles Me.Load se mi podtrhuje Load, nevím co s tím.

Prosím o radu, co dělám zle. Jestli je tady ještě nějaká pomoc.

Díky

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Imports neočekává název souboru, ale název knihovny. Proto to podtržení obvody.dll.

Pokud byste mohl, pošlete mi Vaši knihovnu a já Vám obratem pošlu projekt s kódem.

tomas.hubelbauer (at) gmail (dot) com

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Možná, že mám špatně už celou knihovnu, ale tohle je zdrojový kod knihovny s názvem obvody1.dll :

Public Class obvody
    Public Sub ObvodTroj(ByVal a, ByVal b, ByVal c)
        MsgBox("Obvod trojúhelníku - " & a + b + c)
    End Sub
    Public Sub ObvodCtverec(ByVal a)
        MsgBox("Obvod čtverce - " & 4 * a)
    End Sub
    Public Sub ObvodObdelnik(ByVal a, ByVal b)
        MsgBox("Obvod obdelníku - " & 2 * (a + b))
    End Sub
    Public Sub ObvodKruhu(ByVal r)
        MsgBox("Obvod kruhu - " & 2 * 3, 14 * r)
    End Sub
End Class

Takže jak se na to připojit a jak z toho vytáhnout jednotlivé sub, aby to zobrazovalo výsledky.

Díky ...

... jdu si zatím hodit provaz.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Omlouvám se za to zpoždění, tak obratem to zase nebylo :)

Vytvořil jsem dva projekty, ClassLibrary1 a WindowsApplication1.

V ClassLib1 je třída Class1, v ní procedura MujSub1, která zobrazí MsgBox a funkce MojeFce1, která vrátí String.

Postavil jsem ClassLibrary1 a nareferencoval do WinApp1, do Form naházel dva Buttony a tři Textboxy. Oba projekty jsem zabalil do raru, hledejte jej zde:

http://www.tomas-h.ic.cz/Test/Projects.r...

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Zatím moc děkuji. Hned jdu na to. Snad to konečně pochopím.

Díky ...

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Omlouvám se. Vždycky se zapomenu přihlásit.

Tak mi ten RAR nefunguje. Rozbalím ho. Soubory jsou O.K. Ale ve VBnet se mi odmítá otevřít jak ClassLibrary1 tak WindowsApplication1. Píše mi to:

Unable to read the project file 'Classlibrary1.vbproj'.

D:\project\Classlibrary1\Classlibrary1\Classlibrary1.vbproj(99,11):Naimportovaný projekt

D:\Microsoft.VisualBasic.targets nebyl nalezen. Zkontrolujte, zda je cesta <import> správná a zda soubor na disku existuje.

To samé mi píše i u WindowsApplication1.

Má to jedno pozitivum. Už jsem našel provaz. Dlouho jsem ho nemohl najít.

Díky za odpověď. Používám cvičnou verzi VB2005 express Edition.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Dobrý den.

Tak se mi to nakonec povedlo. Funguje mi to. Akorát jsem musel vytvořit nový formuláře a do nich jsem překopíroval od Vás zdrojový kod jak knihovny, tak i aplikace, každou do svého formuláře. Zkompiloval,udělal reference ... a už to funguje. Teď se budu snažit to celý pochopit.

Provaz zatím odložím stranou, ale nebudu ho dávat moc daleko. To kdyby se zase hodil. "Mozek pod tlakem pracuje lépe."

Moc děkuji a zatím.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Není to nic složitého, jsem si jist, že to hravě pochopíte.

Jinak, pokud bych si já měl při každém neúspěchu hledat provaz, mikrovlákno o stejné délce jako všechny provazy by se nevešlo do mého domu :)) Takže pokud se Vám někdo nedaří, klidně si vzpomeňte na to, že jsou lidi, které zastaví větší banality.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Hledejte chybu někde v rozbalování... zkusil jsem to, rozbalil vč. složek a jak knihovna tak i aplikace fungují OK. Děkuji autorovi za příklad.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Mýlíte se. Imports očekává úplnou cestu ke jmennému prostoru (Namespace) a případně kontejnerům v ní (třídy). Kořen jmenného prostoru je uveden ve vlastnostech projektu (tedy toto je nutné uvést do Imports) a dá se dále větvit pomocí klíčového slova Namespace.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Omlouvám se, nevyuádřil jsem se jak jsem chtěl. Samozřejmě že se jako první očekává NameSpace, napsal jsem to trochu jinak než jsem myslel.

Ovšem moje tvrzení, že imports neočekává cestu, je, pokud vím, správné.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Pracovat s DLL knihovnou lze i dynamicky bez nutnosti přidávat odkaz (referenci) na tuto knihovnu (dá se použít např. pro tvorbu pluginů do vaší aplikace) pomocí metodiky Reflection, ovšem pokud jste začátečník tak to přesahuje rozsah tohoto vlákna.

nahlásit spamnahlásit spam 2 / 2 odpovědětodpovědět

Nebyl byste ochoten něco málo o této problematice napsat (článek s nějakým jednoduchým příkladem)? Určitě by to bylo zajímavým tématem i pro mnohé ostatní. Nebo neznáte nějaký odkaz, kde se o těch pluginech dočíst něco více (pokud možno pro nás visual Basicu věrné jedince) - pokud jsem hledal, tak jsem vždy skončil u v lepším případě C#, v tom horším u C++.

nahlásit spamnahlásit spam 3 / 3 odpovědětodpovědět

Připojuji se k žádosti o bližší rozebrání problematiky dynamického připojování knihoven. Nejlépe na konkrétním příkladu.

nahlásit spamnahlásit spam 2 / 2 odpovědětodpovědět

Vaše modlitby byly vyslyšeny. Článek je hotov, jen musím u T. Hercega zjistit, jak umístit ukázkový zdrojový kód...

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Děkuji, už se těším!

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Tak jako k žádosti se připojuji i k díkům.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback