Т.З необходимо написать прогу которая текстовый файл выводит на экран, и позволяет его прокручивать вверх или вниз (т.к тект длинный на экран не помещается).
P.S. так же хочиться поместить текст в рамочку, со школы помню что можно както прорисовывать маленькие полосочки без юсыса graph... напомните пожалуйста
Читай текст в массив строк (лучше - расположенный в динамической памяти), заводи переменную, показывающую, на сколько массив прокручен вверх (изначально, например, Scrolled = 0), и отображай столько строк, сколько помещается на экран, начиная с той, которая должна отображаться (т.е. со Scrolled + 1)...
Попробуй начать, если будут затруднения - говори, подскажем
А рамочку чертить - это с использованием символов: #205#186#201#200#187#188
я так и думал
не не пракатило - препод подонок сказал что криво. Говорит тект в массив это куйня. Я точно не понял но он что то говорил про то что можно как то обращатся к конкретным частям (символам) тектого файла..
Help me
Угу... И пороть хард-диск постоянными к нему обращениями (да еще и "посимвольно", как он выразился... А если размер текста измеряется в сотнях килобайт?)... Это по его мнению, просто верх совершенства, правда?
Кстати, что именно ты ему показывал? Рассказал общую идею?
Нее Beta версию проги притащил там тока массив был статический на 500 string-off. Я просто не правельно выразился - он вроде как имел ввиду что мол к тектовый файл можно загружать в память ссереди там ну короче я сам толко мне понял
up
Как вариант - без использования массивов:
uses crt;
procedure show_file(var f: text; var before: integer);
var
i: integer;
s: string;
begin
reset(f);
for i := 1 to before do readln(f, s);
gotoxy(1, 1);
if seekeof(f) and (before > 0) then dec(before)
else
while (wherey < 24) and (not seekeof(f)) do begin
readln(f, s);
write(s); clreol; writeln;
end;
for i := wherey to 24 do begin
gotoxy(1, i); clreol;
end;
end;
var
ch: char;
scrolled_up: integer;
f: text;
begin
assign(f, 'sc_me.txt');
reset(f);
scrolled_up := 0;
while true do begin
show_file(f, scrolled_up);
ch := readkey;
case ch of
#0:
case readkey of
#72: if scrolled_up > 0 then dec(scrolled_up);
#80: inc(scrolled_up);
end;
#27: break;
end;
end;
close(f);
end.
Куда нести пиво?
PS а как сделать всётаки построчную прокрутку а не поабзацную? Пробовал
Пару обзащев нормально прокручиват но потом останавливается.