Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.05.23;
Скачать: CL | DM;

Вниз

Строки   Найти похожие ветки 

 
Дима   (2004-05-12 00:23) [0]

У меня вот такая проблема нужно написать процедуру которая делает вот что: любой текст турбо паскаля (Хранящийся в файле на диске) написан в строчку и эта процедура должна загружать этот файл с диска и распечатывать на экране т.е в Memo текст турбо паскаля таким образом,чтоб в каждой строке размещался только один оператор.Также эта процедура должна организовывать смещение операторов относительно операторных скобок,как это принято в Паскале.У меня эта процедура есть вот она:
procedure TForm1.Button1Click(Sender: TObject);
const
   mas:array [1..4]of string=("Const","type","label","uses");
   e="End";
var
 st1,st2,st3,vs:string;
 f1:TextFile;
 i,j:integer;
begin
   assignFile(f1,FileName);
   rewrite(f1);
   st1:=memo1.Lines[1];
   if pos("Program",st1)<>0 then
      st2:=copy(st1,1,pos(";",st1));
   writeln(f1,st2);
   delete(st1,1,pos(";",st1));
   st2:=copy(st1,1,pos(";",st1));
   for j:=1 to 4 do
      begin
           if vs=mas[j] then
              begin
                   st1:=vs+" "+st1;
                   st2:=copy(st1,1,pos(";",st1));
              end;
           writeln(f1,st2);
           delete(st1,1,pos(";",st1));
           st2:=copy(st1,1,pos(";",st1));
      end;
   writeln(f1,st2);
   delete(st1,1,pos(";",st1));
   st2:=copy(st1,1,pos(";",st1));
   if st1="var" then
      st2:=copy(st1,1,pos("begin ",st1));
   writeln(f1,st2);
   delete(st1,1,pos("begin ",st1));
   st2:=copy(st1,1,pos("begin ",st1));
   if st1="begin" then
      st2:=copy(st1,1,pos("  ",st1));
   writeln(f1,st2);
   delete(st1,1,pos("  ",st1));
   st2:=copy(st1,1,pos("  ",st1));
   st1:=memo1.Lines[4];
   repeat
      st1:=Memo1.Lines[i];
      st2:=copy(st1,1,pos(";",st1));
      writeln(f1,st2);
      delete(st1,1,pos(";",st1));
      st2:=copy(st1,1,pos(";",st1));
      i:=i+1;
   until length(st1)=0;
   If st1=e then
      st2:=copy(st1,1,pos(".",st1));
   writeln(f1,st2);
   delete(st1,1,pos(".",st1));
   st2:=copy(st1,1,pos(".",st1));
   CloseFile(f1);
   reset(f1);
   while not Eof(f1) do
      begin
           readln(f1,st2);
           Memo1.Lines.Add(st2);
      end;
end;

end.

Но она не выводит весь текст а только часть его.Вот сам текст"Program B25Z6;Uses crt;Var s,t:string[10];i,n:integer;begin  clrscr;writeln("Input text");
readln(s);end;"
И вот что эта процедура сним делает
"Program B25Z6;
Uses crt;
Var s,t:string[10];
i,n:integer;
begin  clrscr;
writeln("Input text");"

P.S. Текст можно использовать любой.
Она выводит текст но недоконца и нет смещение операторов.Просмотрите эту процедуру и подскажите в чем моя ошибка.За ранее спасибо


 
KilkennyCat ©   (2004-05-12 04:29) [1]

матрица... дежавю... это же уже было??


 
TUser ©   (2004-05-12 06:05) [2]

Покопай архив форума



Страницы: 1 вся ветка

Текущий архив: 2004.05.23;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.039 c
3-1083225065
Av
2004-04-29 11:51
2004.05.23
Необх из Grida записывать в базу симв знач с сохр пробелов слева


3-1082983859
Женя
2004-04-26 16:50
2004.05.23
как узнать тип и длину поля tAdoTable


3-1083086961
как сделать
2004-04-27 21:29
2004.05.23
хочу объединить три поля одной таблицы в одно


14-1083592275
Piter
2004-05-03 17:51
2004.05.23
Система 2dl.ru


1-1083998908
Аноним
2004-05-08 10:48
2004.05.23
Шахматное поле рекурсией