Работа с файлом - переменная в коде не меняет своего значения - Free Pascal

Узнай цену своей работы

Формулировка задачи:

Добрый день! Помогите пожалуйста с программой. В данной процедуре, программа открывает файл для чтения(в файле написан код какой-либо программы). Flag=false. Как только в строке появляется слово "begin" программа присваивает flag=true. Но сейчас программа просто проходит мимо. В результате в программе flag всегда равен false. Помогите пожалуйста исправить это.
Листинг программы
  1. Procedure Search(var s1,str:string);
  2. var
  3. f: text;
  4. s,g,s2: string;
  5. x,y,j,k,i: integer;
  6. flag: boolean;
  7. begin
  8. flag:=false;
  9. assign(f,str);
  10. reset(f);
  11. s1:='';
  12. while not eof(f) do begin
  13. readln(f,s);
  14. while (length(s)>0) and (s[1]=' ') do delete(s,1,1);
  15. g:='begin ';
  16. if pos(g,s)=0 then flag:=true; <------------вот здесь программа работает неправильно
  17. if flag=true then
  18. begin
  19. k:=length(s);
  20. for i:=1 to k do
  21. begin
  22. if ((s[i]=':') and (s[i+1]='=')) then
  23. begin
  24. for j:=length(s1)-length(s2)+1 downto 1 do
  25. if copy(s1,i,length(s2))=s2 then delete(s1,i,length(s2));
  26. s1:=s1 + s2 + ' ';
  27. s2:='';
  28. end
  29. else
  30. begin
  31. if s[i]=';' then
  32. s2:=''
  33. else
  34. s2:=s2 + s[i];
  35. end;
  36. end;
  37. end;
  38. end;
  39. end;

Решение задачи: «Работа с файлом - переменная в коде не меняет своего значения»

textual
Листинг программы
  1. uses SysUtils, Process;
  2.  
  3. var
  4.   proc : TProcess;
  5.   path, outfile : string;
  6. begin
  7.   path := 'D:\__Volvo\Programs\pascal\t215.pp';
  8.   outfile := ChangeFileExt(path, '.txt');
  9.  
  10.   proc := TProcess.Create(nil);
  11.   // пути к исходнику и к компилятору подправь
  12.   proc.CommandLine := 'D:\FPC\2.6.4\bin\i386-win32\fpc.exe -b ' + path +
  13.                       ' -Fe' + outfile;
  14.   proc.Options := proc.Options + [poWaitOnExit];
  15.   proc.Execute;
  16.  
  17.   proc.Free;
  18. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы