"С" + cprintf(); + 80 символа на ред = ?!

11 отговора 272 прегледа
#1

"С" + cprintf(); + 80 символа на ред = ?!

Здравейте!
Става въпрос за "С" и роя на символите в един ред?
Както знаете без допълнителни функции, cprintf(); и подобните и, могат да извеждат 80 символа на ред от екрана. А редовете са общо 25. С функцията textmode(); редовете могат да се увеличат до 50, но за съжаление тази функция не може да евеличи броя на символите в един ред.
Няма ли някакъв начин да се увеличи броя на символите в един ред бе за се използва графичен режим (да се изпълни в текстов режим)?
Благодаря Ви предварително!

Отговор
в отговор на Dany #2

Re: "С" + cprintf(); + 80 символа на ред = ?!

Трябва да се смени TextMode и можеш да работиш както с повече, така и с по-малко символи. Влиза се в псевдографичен или в псевдотекстов режим - както искаш му казвай и се използват стандартните функции за извеждане и позициониране при работа в текстов режим. Малко по-бавно е, но при съвременните машини да не ти пука.

Отговор
в отговор на NumLock #3

Как точно става това?

Как точно се сменя TextMode. Това не ми е ясно. Ако става дума за функцията textmode(); тя ням възможност да променя броя на символите в един ред, над 80.

Отговор
в отговор на Dany #4

Позабравил съм ги тези работи :(

Малко ми е трудно да се сетя как ставаха тези неща в С. На всичкото отгоре съм си загубил Турбо С нанякъде и няма къде да погледна. Довечера ще си погледна книгите в къщи как ставаше номера през BIOS и утре ще ти спретнем нещо, което да ти върши работа.

Отговор
в отговор на Dany #5

Re: Как точно става това?

Stom e za Turbo C i isgas Graficen rezim, ... viz v helpa za funkciata "InitGraph()" -- v helpa ima i examples.
Verno e, ce v Gaficen rezim mozes da pises povece ot 80 bukvi na red, ... ama graficnata biblioteka na Borland mai niama kirilica standartno. Izobsto ako mines v Graphicen rezim, zadacata stava ot drug klas.

Отговор
в отговор на sss #6

Не графичен, а текстов режим

Не става дума за тграфичен, а за текстов режим. Изобщо те искам да си слагам таралеж в гащите с този графичен режим, защото използвам една футкция работеща само в текстов режим.

Отговор
в отговор на Dany #7

скролираща лента

Сещам се за едно решение,но то е свързано с известно ограничение.Да вземем предвид OS WINDOWS.Там когато с някаква текстообработваща програма разглеждаш текстов файл който има твърде дълъг ред от доло на прозореца се появява скролираща лента.Така че или придаваш на OS DOS такава възможност(сам или с TurboVision) или се насочваш към OS WINDOWS. Успех.

Отговор
в отговор на cli sti #8

Re: скролираща лента

Да, но Windows има и възможността да дамалява размера на символите и така всичко да се събира на един екран!

Поне при принтиране на хартия няма ли възможност да се увеличат броя на символите в един ред? На повечето разпечатки които съм виждал по различните фирми и учреждения, размера на буквите е доста по малък от моя (стандартния за "С"). За печеат използвам fprintf(stdprn, "%s", "нещоси");

Хайде на екрана мога да се огранича с по-малко видимо поле, но на листа?

Отговор
в отговор на Dany #9

Re: "С" + cprintf(); + 80 символа на ред = ?!

Mnogo shte ni ulesnish, ako obqsnish podrobno kakvo iskash da napravish - da pokajesh poveche bukvi na ekrana, na printera ili i na dvete.

Za ekrana - struva mi se che imashe 160x50 tekstov rejim, no da me utrepesh ne moga da si spomnq kyde sym vijdal da se setva. Imashe edin MOD/XM/MP? player pod dos - Cubic player, kojto raboteshe v takiva shantavi rejimi, no ne garantiram dali vsyshnost ne e bil v grafichen rejim s shrifta ot tekstoviq.

Za printer - seshtam se za dva podhoda. Pyrvo, mojesh da izpolzvash kondenziran shrift ako printera go poddyrja. Tyj kato sym rabotil samo s edin vid printeri (Star LC15, matrichen A3) ne znam dali ima standart po vyrposa sys setvaneto na rejimite, t.e. moje bi za drugi printeri kontrolnite poredici koito opredelqt vida na shrifta shte sa drugi.

Alternativata e da printish v grafichen rejim, to sigurno syshto zavisi ot printera, no principno izprashtash pobitovo izobrajenie.

Tova e principnoto polojenie na neshtata, kato kajesh podrobnostite shte moga da ti otgovorq po-podrobno

There's a crack, a crack in everything, that's how the light gets in...
Отговор
в отговор на Mopдpeд #10

За принтерите

Почти всички принтери работят в режим на емулация на Epson или на IBM Proprinter. И в двата режима има стандартни команди за преминаване към кондензиран шрифт. Обикновено всеки производител предлага и някакви екстри, но стандарта винаги се поддържа.

Отговор
в отговор на NumLock #11

А какво представлява кондензирания шршфт

Какво представлява кондензирания шрифт?

Отговор
в отговор на Dany #12

Добра и лоша новина!

Извинявай за закъснението, но бях известно време в разход. Имам една добра и една лоша новина, ама започвам с добрата. Не можах да си намеря Турбо Си-то, но си намерих един Турбо Паскал, няма значение нещата са същите. Ето една примерна програмка:

Program Proba;
Uses DOS,Crt;

Var reg:registers;

Begin
ClrScr;
Reg.AX:=$4F02;
Reg.BX:=$10A;
Intr($10,Reg);
Readln;
Writeln;
Writeln('Here!');
Gotoxy(100,30);
Writeln('And Here!');
Writeln(Lo(WindMax));
Writeln(Hi(WindMax));
Readln;
end.

Readln и Writeln са само за пробата. В BX зареждаш TextMode. Можеш да избираш три режима:

108h - 80x60
109h - 132x25
10ah - 132x43

Ето и лошата новина режима си работи, та борландската библиотека за управление на екрана - в случая Crt не ги поддържа. Ще видиш, че ще ти изкара че размера на екрана е 80х25

Иначе всичко което изкарваш стандартно си излиза като слънце. Ако искаш само да визуализираш някаква справка на екрана, можеш да използваш текстов редактор. Опитах със Q - изкарва си 132 колони без никакви проблеми.
Другата възможност е да потърсиш библиотеки, които поддържат такива режими.


За кондензирания шрифт.
Това е шрифт 17 или 20 CPI. Мисля, че стандарта е 17 CPI. Ако се работи в емулация на Epson FX принтер командата е ESC SI за преминаване към кондензиран шрифт и DC2 за спиране на кондензирания печат. Казано човешки 1Bh 0Fh. При емулация на IBM ProPrinter съответните команди са почти същите - SI и DC2. Не знам защо ми се върти из главата че и при Epson FX можеше да се мине и без ESC, а само с SI.


Ами това е! Дерзай!

Отговор