Vypsání znaku bez posunu kurzoru – Pascal – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Vypsání znaku bez posunu kurzoru – Pascal – Fórum – Programujte.comVypsání znaku bez posunu kurzoru – Pascal – Fórum – Programujte.com

 

14. 1. 2007   #1
-
0
-

Dělám na textovém editoru a mám následující problém: Při přepisování obrazovky, když je poslední řádek plný znaků, tak po napsání posledního znaku kurzor automaticky skočí na další řádek a čeká na další pokyny (tím pádem první řádek se mi smaže). Používám to třeba při zmáčknutí šipky nahoru: vrátím se o určitý počet řádků nahoru, a pak je vypíšu, no a ten první mi pak zmizí a zůstane viset kurzor na prázdném spodním řádku. Je vůbec možné, aby se vypsal znak a neposunul se kurzor (nebo aspoň se neposunul na další řádek)?

Nahlásit jako SPAM
IP: ...–
Rey0
Duch
14. 1. 2007   #2
-
0
-

To JumBo: No chcelo by to nejaké informácie navyše:
- hlavne v čom to programuješ? V Turbo Pascale alebo v Delphi? A akú komponentu k tomu využívaš?

Nahlásit jako SPAM
IP: ...–
Žijte dobrý a čestný život. Až zestárnete a podíváte se zpátky, budete se moci radovat podruhé. (Dalajláma)
Laaca0
Stálý člen
14. 1. 2007   #3
-
0
-

Samozřejmě to možné je, dá se to řešit více způsoby a nejvhodnější se jeví náhrada procedury WRITE pomocí pseudopolí MEM. Mírnou nevýhodou je, že když použiješ následující postup, tak to můžeš použít jenom v Turbo pascalu. Pro jiné pascaly a hlavně jiné platformy (linux, OS/2) by se to muselo upravovat.



uses crt;
const SIRKA_OBRAZOVKY = 80;

Procedure XWrite(x,y:byte;s:string);
var a,w:word;
begin
w:=((y-1)*SIRKA_OBRAZOVKY+(x-1))*2;
for a:=1 to Length(s) do
begin
mem[SegB800:w]:=byte(s[a]);
mem[SegB800:w+1]:=textattr;
w:=w+2;
end;
end;

var a,b:byte;
begin
clrscr;
TextColor(7);
TextBackground(0);
for a:=1 to 80 do xwrite(a,1,'A');
for b:=2 to 25 do
for a:=1 to 80 do xwrite(a,b,'B');
readln;
end.

Nahlásit jako SPAM
IP: ...–
DOS-u-akbar
15. 1. 2007   #4
-
0
-

Vyzkouším, ale přišel jsem na jednodušší způsob: Mám nadefinované okno, do kterého se mi vypisují ty znaky a vpravo od toho okna mám rámeček na jeden znak, takže pro ten jeden konkrétní případ si zvětším o 1 znak šířku toho okna, vypíšu znak a vrátím se na původní okno (je to sice taková nic moc ojebávka, ale účel splňuje).
Každopádně díky za tvoje řešení, jsem rád, že jsem se něco přiučil.

Nahlásit jako SPAM
IP: ...–
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, 12 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ý