Jak nejlépe přenášet proměnné?   zodpovězená otázka

VB.NET, Architektura

Zdravím, jak je nejlepší přenášet proměnné

1) v rámci formu mezi Procedurama

2) mezi Formy

3) jak volat proceduru použitou v jiném formu (tohle se asi řeší zápisem procedury někam jinam než do formu, že?)

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

Zdravím,

1) zde bych to řešil předáváním parametrů mezi procedurami (ByVal nebo ByRef podle toho co je kde potřeba)

2) stejné jako bod 1

3) na proceduru se dostanete následovně: jmenoFormu.jmenoProcedury

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

1.) Globální proměnná. Pod řádek např. Public Class Form1 (ale ne do metody) dejte normálně

 Dim a As Integer 

2.) Bod 1 a potom property (viz. http://www.vbnet.cz/clanek--39-vytvareni... )

3.) Jako pan Dědek nademnou

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

Ano přes globální proměnnou to jde taky, ale lepší je předávat parametry jak jsem psal.

Už jen kvůli přehlednosti, protože víte co do které procedury vstupuje a s čím pracuje.

Ono pak luštit kod kde máte nadeklarovaných 50 globálních proměnných (nejlépe rozstrkaných po různých modulech a ještě špatně pojmenovaných) a luštit co která procedura mění je lahůdka.

Taky se eliminuje riziko (popř. je lépe dohledatelné) že v nějáké proceduře změníte onu globální proměnnou a na jiném místě si marně lámete hlavu nad tím, že to vrací neočekávané výsledky (to je ten lepší případ, v tom horším na to vůbec nepříjdete). Navíc pokud nebudete používat parametry připravíte se o možnost přetěžovat metody, což se občas taky hodí.

Zkrátka parametry jsou elegantnější;) Tím neříkám nepoužívat nikdy globální proměnou, ale říkám používat ji tam kde to má opodstatnění (to je ale minimum případů).

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

vytvořte si modul v projektu a deklarujte proměny v něm.

více najdete zde:

http://www.vbnet.cz/forum-tema--2248-pro...

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

šlo by takhle přenášet i procedury?

myslím napsat proceduru do moudlu a pak volat celý modul?

něco takového jsem měl namysli.

Modul NacteniDatabaze

..

..

..

a ve formu v procedure Button.click

volat NacteniDatabaze

Prace s databazi

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

Modul je statická třída ve které jsou procedury. Vždy voláte konkrétní proceduru.

To co chcete se řeší vytvořením vlastní třídy (class).

Např. si vytvoříte třídu ClassNacteniDatabaze uděláte ji příslušné vlastnosti a metodu nactiData a pak ji použijete takto:

Dim nacteniDat As ClassNacteniDatabaze=New ClassNacteniDatabaze

nacteniDat.nactiData

Popřípadě můžete dát metodu nactiData do konstruktoru (New) a metoda se provede sama při vytvoření objektu (takže pak už nemusíte volat ClassNacteniDatabaze.nactiData). Doporučuji přečíst si články o vytváření objektů na tomto webu, tyhle věci se tam řeší.

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

Díky tohle je asi to co hledám :)

Není dam kvalitní komunitu...

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

Proboha jen to ne... Modul je jak už zde bylo řečeno statická třída a všechny její členy jsou statické. Jedná se tedy o globální proměnnou která nemá v tomto případě žádné opodstatnění a navíc to není thread-safe řešení.

nahlásit spamnahlásit spam 1 / 1 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