IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Прокрутка тектста..., Метод решения.....хотя не откажуь от куска кода ;-)
сообщение
Сообщение #1


Гость






Т.З необходимо написать прогу которая текстовый файл выводит на экран, и позволяет его прокручивать вверх или вниз (т.к тект длинный на экран не помещается).
P.S. так же хочиться поместить текст в рамочку, со школы помню что можно както прорисовывать маленькие полосочки без юсыса graph... напомните пожалуйста
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Читай текст в массив строк (лучше - расположенный в динамической памяти), заводи переменную, показывающую, на сколько массив прокручен вверх (изначально, например, Scrolled = 0), и отображай столько строк, сколько помещается на экран, начиная с той, которая должна отображаться (т.е. со Scrolled + 1)...

Попробуй начать, если будут затруднения - говори, подскажем smile.gif

А рамочку чертить - это с использованием символов: #205#186#201#200#187#188
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






я так и думал smile.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






не не пракатило - препод подонок сказал что криво. Говорит тект в массив это куйня. Я точно не понял но он что то говорил про то что можно как то обращатся к конкретным частям (символам) тектого файла..
Help me nea.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






Угу... И пороть хард-диск постоянными к нему обращениями (да еще и "посимвольно", как он выразился... А если размер текста измеряется в сотнях килобайт?)... Это по его мнению, просто верх совершенства, правда?

Кстати, что именно ты ему показывал? Рассказал общую идею?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






Нее Beta версию проги притащил там тока массив был статический на 500 string-off. Я просто не правельно выразился - он вроде как имел ввиду что мол к тектовый файл можно загружать в память ссереди там ну короче я сам толко мне понял
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гость






up smile.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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;




 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Гость






Пару обзащев нормально прокручиват но потом останавливается.
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 




- Текстовая версия 20.09.2017 10:54
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"