Главная страница
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.024 c
4-1080803647
melnikov ivan
2004-04-01 11:14
2004.05.23
Как пользоваться функцией VirtualQueryEx()?


9-1073572104
ZAROLF
2004-01-08 17:28
2004.05.23
RLE сжатие для TDIB


9-1074163759
Black Fury
2004-01-15 13:49
2004.05.23
Наконец игра в сети.Желающие могут скачать!!! :))


1-1083775237
Delphi5.01
2004-05-05 20:40
2004.05.23
... вместо override использовать virtual ...


14-1083409707
Aldor
2004-05-01 15:08
2004.05.23
Синхронизация потоков.