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

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

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

> Редактирование строки, Нужна помощь!
guf
сообщение 8.04.2008 17:12
Сообщение #1


Новичок
*

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

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


Прошу помочь разобраться. Текст задан как массив строк. Над каждой строкой нужно провести следующие действия:
- удалить символ в любом месте строки
- вставить символ в любом месте строки
Также добавление/удаление строки в массиве строк.
Эти действия нужно выполнять с помощью управляющих клавиш- влево, вправо, вниз, вверх, Del, Ins, Backspace

program Text_Editor;
uses Crt;

Const N_Max=256;

Var
str:array[0..N_Max] of string[80];
ch:char;
f,f1:text;
S,S1,S2:string;



Procedure Edit_Text;
Var l,m:byte;q:integer;
Begin
clrscr;
Write('Vxod '); Readln(S1);
Write('Vihod '); Readln(S2);
Assign(f,s1);
Assign(f1,s2);
Reset(f);
Rewrite(f1);
While not EOf(f) Do
Begin
clrscr;
l:=0;
Repeat
l:=l+1;
ReadLn(f,str[l]);
Until (l=N_Max) or EOf(f);
For m:=1 To l Do
repeat
writeln(str[m]);
Ch:=readkey;
Case Ch Of
#8:... {backspace}

#82:... {Ins}

#83:... {Del}

#72:... {up}

#75:... {left}

#77:... {right}

#80:... {down}
end;
until ch=#13;
end;
close(f);
close(f1);
End;

begin
Edit_Text
end.

.

Сообщение отредактировано: guf - 8.04.2008 18:43


--------------------
Плагины для FL Studio и Pro Tools
Учусь на ошибках компилятора...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
klem4
сообщение 10.04.2008 17:28
Сообщение #2


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

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

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


фактически тебе нужен простейший текстовый редактор, на форуме были реализации поищи, сейчас времени писать нету, вот пример как по строке вправо-влево бегать:

uses crt;

type
MyString = object
data: String;
crPos: Byte;

constructor Create(s: String);
destructor Done;

procedure ReShow;
procedure Run;
end;

constructor MyString.Create(s: String);
begin
data := s;
crPos := 1;
end;

destructor MyString.Done;
begin
end;

procedure MyString.ReShow;
var
i: Byte;
begin
ClrScr;
for i := 1 to length(data) do begin
if i = crPos then
TextColor(Green)
else
TextColor(White);
write(data[i]);
end;
GotoXY(crPos, 1);
end;

procedure MyString.Run;
var
ch: Char;
begin
ReShow;

repeat
ch := readkey;

case ch of
#0: begin
ch := readkey;
case ch of
#75: if crPos > 1 then dec(crPos);
#77: if crPos < length(data) then inc(crPos);
end;
end;
end;

if ch in [#75, #77] then
ReShow;
until ch = #27;
end;

var
ms: MyString;
begin
clrscr;
ms.Create('Borland Pascal');
ms.Run;
ms.Done;
end.


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

Сообщений в этой теме


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

 



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