Прошу помочь разобраться. Текст задан как массив строк. Над каждой строкой нужно провести следующие действия:
- удалить символ в любом месте строки
- вставить символ в любом месте строки
Также добавление/удаление строки в массиве строк.
Эти действия нужно выполнять с помощью управляющих клавиш- влево, вправо, вниз, вверх, 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.
Ладно раз уж никто не может это сделать, то как оргаизовать "пробежку" по строке с помощью стрелок
фактически тебе нужен простейший текстовый редактор, на форуме были реализации поищи, сейчас времени писать нету, вот пример как по строке вправо-влево бегать:
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.
klem4, спасибо за ответ, но к такому программированию я не склонен, т.к. паскаль изучаю сравнительно недавно.
кто-нибудь может показать пример пробежки по строке, желательно для моего случая, а то не смог найти..?