Работа с файлом - переменная в коде не меняет своего значения - 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;
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д