Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.113 c
1-1084193964
magician
2004-05-10 16:59
2004.05.23
Сдел. форму с которой нельзя перекл. на другую


14-1081003193
Красная Майка
2004-04-03 18:39
2004.05.23
Happy Birthday MMP


1-1084178886
glGLU
2004-05-10 12:48
2004.05.23
ShellExecute


14-1083247520
2bad
2004-04-29 18:05
2004.05.23
чё делать?


3-1083179959
sasa
2004-04-28 23:19
2004.05.23
Тормоза IBSERVER под Win2KServer




   Наверх