Форум: "Основная";
Текущий архив: 2004.05.23;
Скачать: [xml.tar.bz2];
ВнизСтроки Найти похожие ветки
← →
Дима (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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 3.3 c