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

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

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

 
 Ответить  Открыть новую тему 
> Процедура Gotoxy, Какой скрипт процедуры gotoxy
сообщение
Сообщение #1


Гуру
*****

Группа: Пользователи
Сообщений: 1 117
Пол: Мужской
Реальное имя: Богдан

Репутация: -  11  +


Хто знает как работает процедура gotoxy. :low:
И еще: работает ли она при работе с файлами?
Если нет, то можна написать самому такую процедуру. :ryg:


--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Прогрессор
****

Группа: Пользователи
Сообщений: 602
Пол: Мужской
Реальное имя: Михаил

Репутация: -  9  +


Procedure GotoXY(X, Y; Byte) Перемещает курсор в нужное место экрана (окна). 
С файлами не работает.

Может, тебе нужно это:
Procedure Seek (var F; N: LongInt) Устанавливает текущую позицию файла на указанный элемент (не используется с текстовыми файлами).
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гуру
*****

Группа: Пользователи
Сообщений: 1 117
Пол: Мужской
Реальное имя: Богдан

Репутация: -  11  +


Спасибо ATOS :thanks: , но мне как раз надо использовать аналог процедуры
gotoxy для текстового файла. Нет ли такой процедуры?
А также я хотел бы узнать сам скрипт gotoxy. :low:


--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Можно самому написать если уж нак надо что-то подобное ...


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Вот написал процедурку, вроде работает, выводит на экран символ из файла(текстового) с "координатами" (X,Y), только зачем это нужно smile.gif)))))))))))

собсно чуть поменять и можно установить туда "курсор" я думаю или втавить нужный символ чтоли ...

procedure _GotoXY(var T : Text; x, y : integer);
var
count : integer;

s : string;
begin

count := 1;
readln(f, s);

while not(EOF(T)) and (count <> y) do begin
readln(f, s);
inc(count);
end;

if (count = y)and(x<=length(s)) then
writeln(s[x])
else exit;

end;


возможно есть ошибка , но идея тебе должна быть ясна ...

привер для файла, в котором содержится

123a
456b
789c

_GotoXY(f, 2, 3)

выдаст 8

(не забывай что ось Y направлена вниз ;) )

Сообщение отредактировано: klem4 -


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гуру
*****

Группа: Пользователи
Сообщений: 1 117
Пол: Мужской
Реальное имя: Богдан

Репутация: -  11  +


Вообще-то я мне надо было написать аналог команды текстовых редакторов
Find(on this page), и для етой цели мне нужно было использовать gotoxy,
но у мене вышло сделать ету задачку не используя ету процедуру.
Вот она(но пока не работает с файлами :p2: )

Program FindText;
uses crt;
var str,str1,find:string;
i,j:integer;
Begin
clrscr;
textcolor(white);
writeln('Please, enter the text ');
readln(str);
writeln('Enter the word you want to find');
readln(find);
j:=0;
str1:='';
for i:=1 to length(str) do
begin
if str[i]=' ' then
begin
if str1=find then
begin
textcolor(red);
write(str1,' ');
textcolor(white);
inc(j);
end
else write(str1,' ');
inc(i);
str1:='';
end;
str1:=str1+str[i];
end;
if j=0 then
begin
writeln;
write('In this text there is not word ',find);
end;
readln;
end.

Только одна проблема - програма не читает последний символ строки.
Не подскажеш как избавится от нее? :molitva:

Сообщение отредактировано: volvo -


--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гость






Цитата(Bokul @ 30.09.2005 0:02)
Только одна проблема - програма не читает последний символ строки. Не подскажеш как избавится от нее? :molitva:

Ты же сам идешь против правил, а потом удивляешься... Что вот это, по-твоему?
for i:=1 to length(str) do
begin
if str[i]=' ' then
begin
if str1=find then
begin ... end
else write(str1,' ');
inc(i); { <--- Здесь !!! }
str1:='';
end;
str1:=str1+str[i];
end;

Это как раз нарушение правил использования циклов. Черным по белому в документации сказано: "Если оператор, содержащийся в теле оператора for, изменяет значение управляющей переменной, то это является ошибкой."
(взято отсюда: Руководство по языку B.Pascal 7 & Objects/LR -> Оператор FOR)
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гуру
*****

Группа: Пользователи
Сообщений: 1 117
Пол: Мужской
Реальное имя: Богдан

Репутация: -  11  +


Тоесть, как я понял для нормальной работы
програмы надо удалить inc(i) :ypr:


--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Да, ты правильно понял, i у тебя и так втоматически будет увеличиваться в цикле for, inc(i) - не нужно.


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Гость






program FindText;
uses crt;
var
s, str, find: string;
p: byte;

begin
clrscr;
textcolor(lightgray);
writeln('Please, enter the text ');
readln(str);
s := str;
writeln('Enter the word you want to find');
readln(find);

repeat
p := pos(find, str);
if p > 0 then begin
write( copy(str, 1, p - 1) );
textcolor(lightred);
write(find);
textcolor(lightgray);
delete(str, 1, p + length(find) - 1)
end;
until p = 0;
writeln(str);

if str = s then writeln('no word: ', find);

readln;
end.

Не проще? Вместо того, чтобы работать посимвольно...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Гуру
*****

Группа: Пользователи
Сообщений: 1 117
Пол: Мужской
Реальное имя: Богдан

Репутация: -  11  +


К klem4: если убрать inc(i), то програма все-равно не читает последнее
слово sad.gif . Может ошыбка где-нибуть в другом месте. wacko.gif

А тепер к Volvo: спасибо за скрипт , все работает, но есть одно но - програма
не разбирает конец слов, тоесть нарпимер: у меня есть текст gogo и слово
которое надо найти - go, казалось бы програма должна вывести
Цитата

no word: go

но вместо етого она выводит gogo красным цветом.
Где надо исправить для нормальной работы програмы?


--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Гость






Цитата(Bokul @ 30.09.2005 19:08)
Где надо исправить для нормальной работы програмы?
Вот так должно работать (тестировалось с приведенными в комментариях данными):
program FindText;
uses crt;
var
str, find: string;
p, plast: byte;

change_count: integer;


begin
clrscr;
textcolor(lightgray);
change_count := 0;

write('Please, enter the text ');
readln(str);
{ str := 'this is the goes test of gogoes'; }

write('Enter the word you want to find');
readln(find);
{ find := 'goes'; }

repeat
p := pos(find, str); plast := p;
if p > 0 then begin

while (p > 0) and (str[p - 1] <> ' ') do dec(p);
while (plast <= length(str)) and (str[plast + 1] <> ' ') do inc(plast);

if (copy(str, p, plast - p + 1) = find) then begin

write( copy(str, 1, p - 1) );
textcolor(lightred); write(find); textcolor(lightgray);
inc(change_count);
delete(str, 1, p + length(find) - 1)

end

else begin
write( copy(str, 1, plast - 1) );
delete(str, 1, plast - 1);
end;

end;

until p = 0;

writeln(str);

if change_count = 0
then writeln('no word: ', find);

readln;
end.


P.S. Тема явно перестала быть теоретической, поэтому переношу ее в "Задачи".
 К началу страницы 
+ Ответить 

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

 





- Текстовая версия 27.09.2024 22:44
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name