Bliknutí při console.clear()   otázka

VB6/VBA

Ahoj,

řeším problém s mojí konzolovou aplikací. Potřebuji v určitých intervalech vymazat a znovu zaplnit okno konzole, což provádím přes console.clear() a poté do ní vypíši data z pole.

Problém je ovšem v tom, že jakmile konzoli vyprázdním a znovu zaplním, je mezitím vidět "černo" - prázdná, čistá konzole. Pokud k překreslení dojde několikrát za sebou, konzole lidově řečeno bliká a opravdu to není příjemné pro oči (pro epileptiky jistá smrt)...

Dotaz je tedy jednoduchý - dá se tomuhle nějak vyhnout?

Předem díky!

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

Které verze VB se dotaz týká?

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

VB 2008 v .NET Framework 3.5

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

Veliká omluva, moje chyba, koukám že jsem ve špatný části fóra...

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

No tak tomu se nijak zabránit nedá. Leda že byste nějak změnil způsob vypisování dat.

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

No právě, že "nějak" to jde, ale jak opravdu nevím. Viděl jsem totiž ve VB v konzoli udělaného hada (tu hru) a ta běžela bez blikání - bohužel se do zdrojáku kouknout nemůžu :(

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

Když vadí clear, tak ho nepoužívejte, obrazovku přepisujte kódem...

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

No pokud obrazovku nevyčistím clearem a jenom ji posunu kódem, je to ještě mnohem horší; při clearu je vidět na chviličku černo - pokud obrazovku přepíši, je vidět každý jednotlivý řádek, jak se posunuje.

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

přepisujte - neposunujte!

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

Jednoduchá otázka: "jak?" =)

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

Těžko radit, když neuvedete, co na obrazovce ukazujete.

Na obrazovku se dá psát libovolného místa, takže k žádnému rolování nedojde.

Nastavíte kurzor na souřadnice, dejme tomu x,y a píšete

  Console.SetCursorPosition(x, y)
  Console.Write("nějaký text")

Aby kód byl jednodušší, udělejte si pro zápis rutinu, třeba

Module Module1
  Sub NaPisTo(ByVal s As String, ByVal x As Integer, ByVal y As Integer)
    Console.SetCursorPosition(x, y)
    Console.Write(s)
  End Sub
  Sub Main()
    ' pouzití subrutiny, třeba
    NaPisTo("Text od levého horního rohu", 0, 0)
    NaPisTo("Text na pátý řádek, začátek 5 znaků zleva", 4, 4)
    NaPisTo("...pokračuji v prvním řádku...", 28, 0)
    Console.ReadLine()
  End Sub
End Module

Jasně, že text i souřadnice můžou být v proměnných

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

Moc děkuji, přesně tohle jsem potřeboval :-)

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