Работа с файлом - переменная в коде не меняет своего значения - 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.

Объяснение кода листинга программы

  1. Указываются используемые модули: SysUtils, Process.
  2. Объявляются переменные:   a. proc — объект типа TProcess, который представляет процесс;   b. path — строка, содержащая путь к исходному файлу;   c. outfile — строка, содержащая путь к файлу вывода.
  3. Задаются начальные значения переменных:   a. path := 'D:__Volvo\Programs\pascal\t215.pp';   b. outfile := ChangeFileExt(path, '.txt');
  4. Создается объект типа TProcess:   a. proc := TProcess.Create(nil);
  5. Формируется строка для команды:   a. proc.CommandLine := 'D:\FPC\2.6.4\bin\i386-win32\fpc.exe -b ' + path + ' -Fe' + outfile;
  6. Добавляется опция для ожидания завершения процесса:   a. proc.Options := proc.Options + [poWaitOnExit];
  7. Запускается процесс:   a. proc.Execute;
  8. Освобождается память, занятая объектом процесса:   a. proc.Free;

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4 из 5
Похожие ответы