Главная страница
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.045 c
1-1083829842
malkolinge
2004-05-06 11:50
2004.05.23
Приложение с двумя GUI потоками


7-1082373408
cort33
2004-04-19 15:16
2004.05.23
Работа с другими приложениями


4-1080983582
REAL2
2004-04-03 13:13
2004.05.23
Кнопки как в ХР.


7-1080714655
c13prog
2004-03-31 10:30
2004.05.23
Как определить название диска в CD-ROM?


3-1082850562
Михаил
2004-04-25 03:49
2004.05.23
DBGrid