Работа с файлом - переменная в коде не меняет своего значения - Free Pascal
Формулировка задачи:
Добрый день!
Помогите пожалуйста с программой. В данной процедуре, программа открывает файл для чтения(в файле написан код какой-либо программы). Flag=false. Как только в строке появляется слово "begin" программа присваивает flag=true. Но сейчас программа просто проходит мимо. В результате в программе flag всегда равен false. Помогите пожалуйста исправить это.
Procedure Search(var s1,str:string);
var
f: text;
s,g,s2: string;
x,y,j,k,i: integer;
flag: boolean;
begin
flag:=false;
assign(f,str);
reset(f);
s1:='';
while not eof(f) do begin
readln(f,s);
while (length(s)>0) and (s[1]=' ') do delete(s,1,1);
g:='begin ';
if pos(g,s)=0 then flag:=true; <------------вот здесь программа работает неправильно
if flag=true then
begin
k:=length(s);
for i:=1 to k do
begin
if ((s[i]=':') and (s[i+1]='=')) then
begin
for j:=length(s1)-length(s2)+1 downto 1 do
if copy(s1,i,length(s2))=s2 then delete(s1,i,length(s2));
s1:=s1 + s2 + ' ';
s2:='';
end
else
begin
if s[i]=';' then
s2:=''
else
s2:=s2 + s[i];
end;
end;
end;
end;
end;Решение задачи: «Работа с файлом - переменная в коде не меняет своего значения»
textual
Листинг программы
uses SysUtils, Process; var proc : TProcess; path, outfile : string; begin path := 'D:\__Volvo\Programs\pascal\t215.pp'; outfile := ChangeFileExt(path, '.txt'); proc := TProcess.Create(nil); // пути к исходнику и к компилятору подправь proc.CommandLine := 'D:\FPC\2.6.4\bin\i386-win32\fpc.exe -b ' + path + ' -Fe' + outfile; proc.Options := proc.Options + [poWaitOnExit]; proc.Execute; proc.Free; end.
Объяснение кода листинга программы
- Указываются используемые модули: SysUtils, Process.
- Объявляются переменные: a. proc — объект типа TProcess, который представляет процесс; b. path — строка, содержащая путь к исходному файлу; c. outfile — строка, содержащая путь к файлу вывода.
- Задаются начальные значения переменных: a. path := 'D:__Volvo\Programs\pascal\t215.pp'; b. outfile := ChangeFileExt(path, '.txt');
- Создается объект типа TProcess: a. proc := TProcess.Create(nil);
- Формируется строка для команды: a. proc.CommandLine := 'D:\FPC\2.6.4\bin\i386-win32\fpc.exe -b ' + path + ' -Fe' + outfile;
- Добавляется опция для ожидания завершения процесса: a. proc.Options := proc.Options + [poWaitOnExit];
- Запускается процесс: a. proc.Execute;
- Освобождается память, занятая объектом процесса: a. proc.Free;