Я нашел исходник который делает первые два пункта, попытался сам дописать третий . В строчке где подчеркивание выдает ошибку. Без вставленного мной куска (он наиболее смещен+ переменные)все работало корректно. Если кто то может помочь, помогите, времени у меня совсем не осталось.
Заранее всем спасибо.
uses
Crt;
const
{Служебные слова.11 групп. 65 слов}
Res2:array[1..6] of String[2] = ('TO','OF','IF','OR','IN','DO');
Res3:array[1..14] of String[3] = ('SET','MOD','SHL','AND','FAR','SHR',
'NIL','ASM','FOR','NOT','VAR','DIV',
'XOR','END');
Res4:array[1..11] of String[4] = ('NAME','FILE','NEAR','THEN','TYPE',
'CASE','GOTO','UNIT','USES','WITH',
'ELSE');
Res5:array[1..7] of String[5] = ('ARRAY','BEGIN','CONST','UNTIL',
'INDEX','WHILE','LABEL');
Res6:array[1..9] of String[6] = ('STRING','OBJECT','PACKED','DOWNTO',
'INLINE','PUBLIC','RECORD','REPEAT',
'EXPORT');
Res7:array[1..6] of String[7] = ('LIBRARY','EXPORTS','FORWARD',
'PRIVATE','VIRTUAL','PROGRAM');
Res8:array[1..4] of String[8] = ('ABSOLUTE','EXTERNAL','FUNCTION',
'RESIDENT');
Res9:array[1..5] of String[9] = ('ASSEMBLER','PROCEDURE','INHERITED',
'INTERFACE','INTERRUPT');
Res10:String[10] = 'DESTRUCTOR';
Res11:String[11] = 'CONSTRUCTOR';
Res14:String[14] = 'IMPLEMENTATION';
Var
F,O:Text; {Рабочий файл}
K,S,St:String;
A:array[1..30,1..2] of Byte; {Смещение и длина слова}
X,M,i,j:Byte;
N:LongInt;
Nc,Na,Dl,Nk:LongInt;
Fnd:Boolean;
Begin
ClrScr;
{Связываем с переменной}
Write('Введите имя файла или "Ввод" для текущего (*.pas): ');
ReadLn(S);
If Length(S)=0 then
begin
S:=ParamStr(0); {Ввод}
S:=Copy(S,1,Pos('.',S))+'PAS';
end;
If Pos('.',S)=0 then Insert('.pas',S,Length(S)+1); {Если нет расширения -вставить}
If Length(S)>12 then Halt; {Многовато для имени}
St:=Copy(S,1,Pos('.',S))+'NEW'; {Изменение расширения сохраняемого файла}
Assign(F,S);
Reset(F);
Assign(O,St);
ReWrite(O);
N:=0;
Nk:=0;
{Основной цикл}
While not Eof(F) do
begin
ReadLn(F,S);
{Если ненулевая строка}
St:=S;
For i:=1 to Length(S) do
begin
case s[i] of
'{':begin
inc(Nk);{номер коментария}
Na:=Pos('{',S); {Начальная позиция}
Nc:=Pos('}',S); {Конечная позиция}
Dl:=Nc-Na; {Длинна коментария в символах}
Delete(S,Na-1,Dl-1); {удоляем то, что в скобках}
Insert(Nk,S,Na+1); {Ставим номер коментария}
end;
end;
St:=S;
end;
If (Length(S)<>0) and (Length(S)<>1) then {Если длинна строки не 0 и не 1}
begin
{Удаляем "лишние" пробелы}
While Pos(' ',S)<>0 do Delete(S,Pos(' ',S),1);
St:=S; {Предохраняемся}
For i:=1 to Length(S) do S[i]:=UpCase(S[i]);
{64..91 - английский алфавит}
{Убираем все остальные символы}
For i:=1 to Length(S) do
If (Ord(S[i])<=64) or (Ord(S[i])>=91) then S[i]:=#32; {S[i]присваиваем #32 (SP) удаляем символы}
{}
j:=0;
Repeat
i:=j+1;
K:='';
{Пропускаем пробелы}
While (S[i]=' ') and (i<Length(S)) do Inc(i);
If i<Length(S) then
begin
j:=i;
{Выделяем слово}
While (S[j]<>' ') and (j<Length(S)) do Inc(j);
If (j=Length(S)) and (S[Ord(S[0])]<>' ') then Inc(j);
K:=Copy(S,i,j-i);
X:=1;
{От I до J}
{Служебные слова ищем по размеру и делаем первые буквы заглавными}
If K<>'' then
Case (j-i) of
2:For X:=1 to 6 do If (K=Res2[X]) then St[i]:=UpCase(St[i]);
3:For X:=1 to 14 do If (K=Res3[X]) then St[i]:=UpCase(St[i]);
4:For X:=1 to 11 do If (K=Res4[X]) then St[i]:=UpCase(St[i]);
5:For X:=1 to 7 do If (K=Res5[X]) then St[i]:=UpCase(St[i]);
6:For X:=1 to 9 do If (K=Res6[X]) then St[i]:=UpCase(St[i]);
7:For X:=1 to 6 do If (K=Res7[X]) then St[i]:=UpCase(St[i]);
8:For X:=1 to 4 do If (K=Res8[X]) then St[i]:=UpCase(St[i]);
9:For X:=1 to 5 do If (K=Res9[X]) then St[i]:=UpCase(St[i]);
10:If Res10=K then St[i]:=UpCase(St[i]);
11:If Res11=K then St[i]:=UpCase(St[i]);
14:If Res14=K then St[i]:=UpCase(St[i]);
end;
{Счетчик}
Inc(N);
GotoXY(1,2); Write(N);
end;
{Пока строка не кончится}
Until (i>=Length(S));
end;
WriteLn(O,St);
end;
Close(F);
Close(O);
WriteLn(#13#10'Подходящих слов обработано: ',N);
WriteLn('Нажми <ENTER> для выхода');
ReadLn;{ожидание действий пользователя <ENTER>}
End.
Сообщение отредактировано: ANRECH -