Pár dotazů na zdrojový kód   zodpovězená otázka

VB.NET

Zdravím. Programuju ve VB.Net sice krátkou dobu, ale pár aplikací mi už chodí a používám je co to jde. Mám však pár věcí na které jsem zatím nenašel odpověď.

1. Naprogramoval jsem program pro tvorbu GPX souborů do GPSky. Zdrojový kód mi pracuje se vším jak by měl. Mám podle vašeho seriálu napsaný ukládací kód, ale nevím jak mám napsat uložení do formátu .gpx . Myslím, že je potřeba vytvořit knihovnu nebo něco takového, aby byl program schopen vytvořit tento formát souboru.

2. Další program mám jako pokus do školy pro výpočet Sinové věty. Zase mam program, který by měl uměl vypočítat podle zadaných hodnot určitou stranu nebo úhel. U funkce Math.Sin() jsem pochopil, že musím vstupní hodnotu přepsat z radiánů na stupně. Ale problém je v tom, že nevím co použít jestli podmínky If nebo jestli to napsat rovnou a dosadit za proměnné.

3. Asi poslední věc, se kterou bych potřeboval pomoct je TextBox a ListBox. Jsou to moc dobré věcičky, se kterýma se daj dělat velký věci, ale problém je v tom, že když potřebuji vypsat zdrojový kód gpx, který je na řádek a ne do několika řádků, tak ani textbox ani listbox jej nedokáže zobrazit celý. Ve vlastnostech textboxu je položka MaxLenght myslel jsem si že je to ono, ale není. Mohl by mi někdo poradit?

Předem děkuji za všechny odpovědi. Moc mi to pomůže.

Antonín Marko

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

1. Pokud je tento formát šířeji používaný, pak knihovnu určitě někde najdete a stačí ji jen použít. Jinak si ukládání budete muset napsat sám a pokud je formát složitější, budete od něj muset asi sehnat specifikaci, abyste věděl, jak funguje. Zvláště u binárních formátů to leckdy není snadné odkoukat, textové se ještě dají.

2. Funkce ze třídy Math pracují zásadně s radiány, stupně neumí. Pokud v aplikaci zadáváte stupně, musíte je před předáním funkci Sin atd. převést na radiány. Pokud má funkce vracet úhel (např. Atan), pak je tento opět v radiánech.

Převod stupně a radiány je jednoduchý, stačí použít trojčlenku - 2 * Math.Pi je 360 stupňů.

3. Zobrazení více řádků textu se dělá buď v komponentě Label, která je jen pro čtení a uživatel z ní text nemůže vykopírovat. Navíc neřeší nějaké scrollování atd.

Lepší je tedy použít TextBox, s tím, že mu nastavíte vlastnost MultiLine na True, čímž se přepne do víceřádkového režimu.

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

2.Ja na prevod úhlov používam toto:

Math.Sin(x * Math.Pi / 180)

x = Math.Atan2(a,b) / (Math.Pi / 180)

Správny je aj Váš spôsob, ale nepríjde Vám zdĺhavejší(aj keď o málo)?

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

No vždyť to je přesně ono - trojčlenka.

2 * Math.Pi ... 360 stupňů

y radiánů ... x stupňů

x = y * 360 / 2 * Math.Pi ... radiány na stupně

y = x * 2 * Math.Pi / 360 ... stupně na radiány

Samozřejmě tu 360 a 2 můžete zkrátit, ale snažil jsem se to vysvětlit tak, aby si tazatel nesnažil zapamatovat vzorec, ale věděl i jak ho vymyslet sám. To, že kruh má 2 pí radiánů, předpokládám každý ví.

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

Díky mockrát za odpovědi. Právě tak jsem to udělal. Zjistil jsem, že funkce Math.Sin a ty ostatní počítají s radiány a tak jsem tu převodovou rovnici udělal hned, ale dál jsem nevěděl co. Ono o vzorce nouzi nemám studoval jsem to nedávno. Právě jsem se proto ptal jak by šla napsat aplikace na výpočet. ještě mám jeden dotaz. Právě u té sinové věty jde krásně vypočítat jak úhel jak strana pomocí krásnýho vzorce a/sin(alfa) = b/sin(beta) jenže na výpočet jsou potřeba 3 čísla. Nevím jak napsat podmínku, aby když budu znát právě 3 čísla, tak aby aplikace věděla, že má pracovat s těmi třemi a tu čtvrtou má vyplnit respektive vypočítat. Když jsem se snažil to napsat pomocí funkce If tak jsem se vždy dostal k tomu, že to vyhodilo chybu. Mám už udělaný i designe k aplikaci aby se do obrázku trojúhelníku dalo právě vpisovat hodnoty, ale nevím jak mám napsat kód.

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

U rovnice musíte vždy ekvivalentnými úpravami dostať osamotenú nezmámu na ľavú stranu a všetko ostatné na pravú a potom to jednoducho opíšete.

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

Mohu se ještě zeptat na ten formát GPX? Tu specifikaci nebo jednotlivé knihovny, kde to mám hledat? Já jsem právě myslel, že se nějak dá jednoduše napsat knihovna, ale asi mám milné představy o tvorbě knihoven.

Právě on soubor .gpx se dá krásně otevřít v notepadu, ale jakmile se to v notepadu vytvoří a uloží jako gpx, tak to už gpska nebere. Podivné. Mockrát díky za pomoc

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

Ještě dotaz na ten TextBox. Nastavil jsem jej na multiline, ale teď nevím jak do něj přidávat další linky. Popíšu situaci: program má vypsat právě do TextBoxu vždy po 4 linkách. Nastavil jsem funkci pro tlačítko, aby ty 4 linky vypsal, ale znovu po zmáčknutí tlačítka se ty původní údaje přepíšou. Například u ListBoxu jsem to pořešil příkazem ListBox1.Items.Add tím přidám nové řádky, ale u textboxu nevím jak.

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

Textbox1.Text = "niečo" prepíše text v textboxe iným textom.

Textbox1.Text &= "niečo" pridá nový text na koniec textboxu.

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

Třeba takhle uchováte původní text a přidáte nový.

  TextBox1.SelectedText = TextBox1.SelectedText + "text"

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

Ale SelectedText je iba tá časť textu, ktorá je označená myšou.

Pre pridanie textu na koniec treba použiť vlastnosť Text a nie SelectedText.

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

Nejdřív si ten kód zkuste ............ pak zjistíte, že nic myší označit nemusíte a text se na konec přidá.

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

Oooooo díííky moc. Moc jste mi pomohli.

Přidává mi to pěkně texty který jsem potřeboval.

Ještě jednou díky!

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

Možno, ale keď označím, tak sa nepridá na koniec. Taktiež si najprv pozrite názov vlastnosti a príp. aj jej popis.

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

Klídek, neprogramuju tejden, takže naprosto dobře vím co tato metoda dělá :)

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

TextBox má kolekci Lines, kde vidíte jednotlivé řádky.

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