![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
x-x-x-x |
![]()
Сообщение
#1
|
Гость ![]() |
Т.З необходимо написать прогу которая текстовый файл выводит на экран, и позволяет его прокручивать вверх или вниз (т.к тект длинный на экран не помещается).
P.S. так же хочиться поместить текст в рамочку, со школы помню что можно както прорисовывать маленькие полосочки без юсыса graph... напомните пожалуйста |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Читай текст в массив строк (лучше - расположенный в динамической памяти), заводи переменную, показывающую, на сколько массив прокручен вверх (изначально, например, Scrolled = 0), и отображай столько строк, сколько помещается на экран, начиная с той, которая должна отображаться (т.е. со Scrolled + 1)...
Попробуй начать, если будут затруднения - говори, подскажем ![]() А рамочку чертить - это с использованием символов: #205#186#201#200#187#188 |
x-x-x-x |
![]()
Сообщение
#3
|
Гость ![]() |
я так и думал
![]() |
x-x-x-x |
![]()
Сообщение
#4
|
Гость ![]() |
не не пракатило - препод подонок сказал что криво. Говорит тект в массив это куйня. Я точно не понял но он что то говорил про то что можно как то обращатся к конкретным частям (символам) тектого файла..
Help me ![]() |
volvo |
![]()
Сообщение
#5
|
Гость ![]() |
Угу... И пороть хард-диск постоянными к нему обращениями (да еще и "посимвольно", как он выразился... А если размер текста измеряется в сотнях килобайт?)... Это по его мнению, просто верх совершенства, правда?
Кстати, что именно ты ему показывал? Рассказал общую идею? |
x-x-x-x |
![]()
Сообщение
#6
|
Гость ![]() |
Нее Beta версию проги притащил там тока массив был статический на 500 string-off. Я просто не правельно выразился - он вроде как имел ввиду что мол к тектовый файл можно загружать в память ссереди там ну короче я сам толко мне понял
|
x-x-x-x |
![]()
Сообщение
#7
|
Гость ![]() |
up
![]() |
volvo |
![]()
Сообщение
#8
|
Гость ![]() |
Как вариант - без использования массивов:
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.
|
x-x-x-x |
![]()
Сообщение
#9
|
Гость ![]() |
Куда нести пиво?
PS а как сделать всётаки построчную прокрутку а не поабзацную? Пробовал Код procedure show_file(var f: text; var before: integer); var i: integer; s: string[80]; {ОГРАНИЧЕЛ ДЛИННУ СТРОКИ} begin reset(f); for i := 1 to before do read(f, s); {ИЗМЕНИЛ readln на read} 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; |
x-x-x-x |
![]()
Сообщение
#10
|
Гость ![]() |
Пару обзащев нормально прокручиват но потом останавливается.
|
![]() ![]() |
![]() |
Текстовая версия | 10.08.2025 3:28 |