Formatovani - Murphyho zakon v praxi   otázka

VB.NET

Zdravim,

uvadim dva radky kodu.

Syntakticky naprosto stejne, pouze ve druhem pripade jsem pripojil ".PadLeft(3, "0"c)" i k hodnote tretiho ovladaciho prvku NumericUpDown .

1.

NetAdresa = "rtp://@" & IP1.Value.ToString.PadLeft(3, "0"c) & "." & IP2.Value.ToString.PadLeft(3, "0"c) & "." & IP3.Value.ToString & "." & IP4.Value.ToString.PadLeft(3, "0"c) & ":" & Port.Value.ToString.PadLeft(5, "0"c)

2.

NetAdresa = "rtp://@" & IP1.Value.ToString.PadLeft(3, "0"c) & "." & IP2.Value.ToString.PadLeft(3, "0"c) & "." & IP3.Value.ToString.PadLeft(3, "0"c) & "." & IP4.Value.ToString.PadLeft(3, "0"c) & ":" & Port.Value.ToString.PadLeft(5, "0"c)

Prvni priklad funguje bez problemu, druhy nefunguje vubec. Podotykam, ze se jedna o 5 stejnych prvku NumericUpDown, prvni 4 maji logicky i stejny rozsah.

Nasli jste nejakou chybu? Nemuzu na to prijit.

Diky.

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

Pokud narazíte na takový problém, musíte vědět, jak ho řešit.

Pokud máte 2 příklady, které jsou stejné a rozdíl je v jedné části, vyzkoušejte neprve, jestli ta jedna část samostatně nefunguje. Rozložte si na to části a hledejte, kde je problém. Který příkaz padá a které má vstupní parametry. Tím zjistíte i jestli, některá z předchozích částí není problémová a nevrací neplatnou hodnotu.

Možná, kdyby jste si to rozepsal a napsal nám opravdu jen tu nefunkční část a co dostává za parametry, tak na to přijdete sám.

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

:)

Ale vždyť právě v tom je ta potíž - parametry dostává každá část STEJNÉ, resp. ve stejném rozsahu, integer.

K Vaši radě: Právě PROTO jsem z prvního řádku odstranil formátování, protože jenom tak funguje.

A jistěže jsem zkoušel možnosti, a to postupně všechny = všech pět údajů bez formátování a pak jsem postupně přidával formátování k jednotlivým výrazům. Jakmile jsem to však doplnil ke třetímu výrazu, přestalo to fungovat.

Pro IP.value vstupují relevantní parametry, 0-255, pro port max 65535. (nekorektní parameter není možný, protože se nastavují pouze ovládacím prvkem NumericUpDow)

A jestli chcete konkrétní, no tak jsem dosadil 255,255,64,1:5004 - ale nefunguje to pro žádnou adresu.

Jakmile vyhodím to třetí formátování, funguje :)

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

A ony se IP adresy píšou takhle? 192.168.000.001?

Já myslel, že tam to formátování nebývá potřeba, že stačí napsat 192.168.0.1.

Je v pořádku ten výsledný string, který z toho padá?

A co to vlastně vůbec znamená "nefunguje"?

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

IP adresy se přirozeně píšou tak, jak uvádíte - při použití.

To taky dělám, a již "otestovanou", nebo-li zpracovanou IP přidávám do ListView.

Zkuste pak ale setřídit sloupec adres v ListView - třeba 232.232.64.5 bude nad 232.232.64.50. [5,50,51,6,...]

Ale to Vám jistě nemusím vysvětlovat, já jsem ten, co se učí :)

Proto se je pokouším formátovat, kvůli třídení.

P.S. Nefunguje znamená, že v prípadě č.1 mi přidává řádky do ListView, v případe č.2 nikoliv.

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

Hm, tak chyba je u mne, přirozeně, jenom netuším, kde konkrétně.

Ale bezprostředně po formátování mi v msgbox vyhodí korektně formátovaný text.

Resumé - ve formátování to není.

Tomu rozumím ještě méně, protože ho nijak neměním, ale v případě č.1 mi prostě všechno klape, ve druhém ne.

Ok, jdu studovat.

Dík za snahu, kluci.

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

Přišel jste na to sám, že jste sem dal k posouzení část kódu, ve kterém chyba není a odhadujete, že i po formátování je i IP3 OK. Co máte v kódu dál? Někde rozdíl být musí. Pokud není před řádkem, který jste uvedl (to však můžete vidět jen vy), tak musí být za ním.

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

:)

Jasně, uvažoval jsem pak již přesně jako vy.

Pak jsem se ještě asi 50x podíval na pár řádek kódu.

Proměnnou(řetězec) NetAdresa jsem jen posílal dál do Procesu jako parametr. Vůbec jsem ji neměnil.

Ale pak mne náhle osvítilo - při opakovaném čtení příspěvku od Tomáše. Po prvém přečtení jsem se jen pousmál, protože jak se používá IP...prostě směšné a triviální. A pak mi to došlo!

Při "uhlazování" a lepší strukturalizaci kódu jsem omylem formátování toho řetězce zařadil PŘED použitím dané IP v reálu.

(místo toho, abych IP nejdříve celou použil a až následně ji sformátoval a uložil)

Prostě blbec.

Takže všem díky, funguje to.

I když, hrozně POMALU, protože mi nikdo neporadil s mým problémem: http://www.vbnet.cz/forum-tema--5348-sys...

Všechno proto musím nejdříve otestovat tak, že programově spustím VLC player s parametry a pak testuji, zda-li soubor s nahrávkou streamovaného videa je větší než 4 KB. Jestli jo, tak provider na dané adrese a portu něco "vyzsílá".

Hrozně kostrbatý, neprofesionální, ale bohužel - otestovat pakety na daném portu proste neumím

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

Tak ono začít se učit programovat zrovna na úrovni sítě neni nejlepší krok.Navíc mi přijde,že se snažite programovat něco,co je už dávno vymyšlené.Tak jestli by nebylo lepší se ubírat trochu jiným a více reálně použitelným směrem ;-)

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

Což o to, ve VB6 jsem dělal několik let, na VB.NET jsem přesedlal letos.

Jinak ale reálně použitelné to právě je. Pro mne a mou rodinu. Dělám si programy výhradně jenom pro vlastní potřebu a nejsem profík, to je jasné.

Víte, to je právě to - píšete, že to vymyšlené je. Ptal jsem se zde již několikrát, ale nikdo mi nepomohl.

Naposledy mi "skvěle" poradil p.Linhart.

:)

Ironii ale zvládám v pohodě, nijak se mne to nedotklo - akorát mne to neposunulo dále.

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