Editor v konzolové aplikaci – Pascal – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Editor v konzolové aplikaci – Pascal – Fórum – Programujte.comEditor v konzolové aplikaci – Pascal – Fórum – Programujte.com

 

Jakub
~ Anonymní uživatel
905 příspěvků
19. 8. 2015   #1
-
0
-

Ahoj,

nemá někdo nějaký nápad na editaci vstupního souboru s textem v konzolové aplikaci?

Předem díky za vaše tipy :)

Nahlásit jako SPAM
IP: 62.24.72.–
Kit+15
Guru
19. 8. 2015   #2
-
0
-

#1 Jakub
Vim.

Nahlásit jako SPAM
IP: 2a00:1028:83a0:37a6:207:e...–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Jakub
~ Anonymní uživatel
905 příspěvků
19. 8. 2015   #3
-
0
-

#2 Kit
Potřebuju něco takovýho udělat, ale nevím kde začít.

Nahlásit jako SPAM
IP: 62.24.72.–
Kit+15
Guru
19. 8. 2015   #4
-
0
-

#3 Jakub
Chceš si v Pascalu napsat vlastní textový editor? Co všechno by měl umět?

Nahlásit jako SPAM
IP: 2a00:1028:83a0:37a6:207:e...–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Kit+15
Guru
19. 8. 2015   #5
-
0
-
Nahlásit jako SPAM
IP: 2a00:1028:83a0:37a6:207:e...–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Jakub
~ Anonymní uživatel
905 příspěvků
19. 8. 2015   #6
-
0
-

Udělal jsem tzv. multiple choice test, který se vygeneruje do výstupního souboru a chci udělat aby se mohl editovat přimo v programu.

Nahlásit jako SPAM
IP: 62.24.72.–
Kit+15
Guru
19. 8. 2015   #7
-
0
-
Nahlásit jako SPAM
IP: 2a00:1028:83a0:37a6:207:e...–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Jakub
~ Anonymní uživatel
905 příspěvků
19. 8. 2015   #8
-
0
-

Nic moc jsem nezjistil :( Snad napíše ještě někdo jinej..

Nahlásit jako SPAM
IP: 62.24.72.–
Kit+15
Guru
19. 8. 2015   #9
-
0
-

#8 Jakub
Zkus si ještě pročíst zdrojáky editorů Nano a Pico.

Nahlásit jako SPAM
IP: 2a00:1028:83a0:37a6:207:e...–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Mircosoft+1
Věrný člen
21. 8. 2015   #10
-
0
-

Hotové knihovny pro textový režim (Turbo vision apod.) použít nechceš? Super, tím je to zajímavější :-).

Jestli ti stačí délka řádku omezená délkou standardního stringu, můžeš si text v paměti uložit jako pole stringů (případně pole ukazatelů na stringy, kdyby tě trápil realmódový limit 64 KB na proměnnou, ale to nepředpokládám). Dále si musíš pamatovat polohu obrazovky nad textem (x a y levého horního rohu). Pro začátek se vykašli na automatické zalamování řádků podle šířky obrazovky a na blokové operace (kopírování, vkládání apod.), ty by to hodně zkomplikovaly. Dejme tomu, že dovolíme volný pohyb kurzoru za konci řádků a že řádky můžou být širší než obrazovka. Předpokládám, že ti fungují příkazy Gotoxy, Wherex, Wherey, Clrscr a Readkey (jednotka Crt).

Takže stačí napsat obsluhu všech použitých kláves a je hotovo (u šipek a dalších rozšířených kláves pozor na to, že vracejí dva znaky). Třeba takhle:

- Šipka nahoru: pokud je kurzor na prvním řádku textu, nedělej nic. Jinak jestli je kurzor na prvním řádku obrazovky, posuň obrazovku o řádek nahoru a překresli ji, jinak jenom posuň kurzor o řádek nahoru.

- Šipka dolů: totéž, ale se zarážením o poslední řádek textu.

- Šipka doprava: jestli je kurzor u pravého okraje obrazovky, posuň ji o znak doprava a překresli. Jinak posuň kurzor doprava. Limitem může být maximální možná šířka řádku.

- Šipka doleva: podobně.

- Home: pokud není obrazovka úplně vlevo, posuň ji tam a překresli. Posuň kurzor úplně doleva.

- Písmena a jiné psatelné znaky (tj. cokoli od #32 do #255): zjisti pozici kurzoru nad textem (souřadnice obrazovky + souřadnice kurzoru). Jestli jsi za koncem řádku, doplň ho až ke kurzoru mezerami (pokud to Insert nedělá automaticky - zpaměti nevím). Na pozici kurzoru vlož znak z klávesy. Překresli řádek, na kterém je kurzor. Proveď stejný postup jako pro šipku doprava.

- Enter: všechny řádky od následujícího po poslední posuň o pozici dolů. Na následující řádek přesuň text mezi kurzorem a koncem řádku. Proveď akce pro šipku dolů a Home.

- Delete: smaž jeden znak na pozici kurzoru. S kurzorem ani obrazovkou nehýbej. (alternativně by se mohlo mazat zalomení řádku jako s Backspacem, ale pro jednoduchost to vynechám).

- Backspace: jestli nejsi na začátku řádku, tak proveď akce pro šipku doleva a Delete. Jestli jo, tak proveď akce šipka nahoru a End, následující řádek zkopíruj na pozici kurzoru a pak všechny řádky od aktuálního+2 do posledního posuň o pozici nahoru.

Překreslení obrazovky by mohlo být něco ve stylu zapamatování pozice kurzoru, Clrscr, pak cyklus pro všechny řádky write(copy(texty[yObrazovky+i],xObrazovky,sirkaObrazovky)) a nakonec návrat kurzoru do původní pozice. Pozor jenom u pravého dolního rohu, kde by mohl kurzor přetéct do následujícího řádku a odscrollovat s obrazovkou o řádek nahoru.

Držím palce!

Nahlásit jako SPAM
IP: 94.113.255.–
Chceš-li lepší odpověď, polož lepší otázku.
Moje stránka.
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 1 host

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý