Задать вопрос
bravikov
@bravikov
Инженер. Электронщик. Программист.

Какими способами можно изменить локальную переменную на Паскале?

Разбираюсь с чужим исходным кодом на Паскале и зашел в тупик.

Имеется цикл repeat until, который теоретически должен завершиться, когда переменная примет определенное значение, но я не могу найти место в цикле, где эта переменная изменяется.

Я не пишу на Паскале, а переписываю Паскалевскую программу на C++, поэтому глубоких знаний Паскаля нет.

Код приведу ниже.

Речь идет о переменной N, она может принимать значения больше 1. Если она не изменяется в цикле, то цикл будет вечным, либо пока не нажмут клавишу Ескейп.

В собранной программе цикл завершается без Ескейпа. Хотя, я пользуюсь не своей сборкой, руки еще не дошли, до самостоятельной сборки.

procedure s180t90(pause1,pause2,point,count:real);
var
  i, N, T, M, K, itmp:integer;
  b1: byte;
  data: word;
  p: float;
begin
  N:= trunc(point);
  T:= trunc(count);
    if N<1 then N:= 1;
    {if T>N then T:= 1;}
  K:= 9;
  M:= K*(N+1);
  i:=1;
    repeat
      NewTrackBar(msgSent);
      for i:= T to N do begin
        itmp:= i*K;
        TrackBar(itmp+1,M,msgSent);
        rod0;
        SendCommandb(commandX, itmp+2, M, msgSent);{X}

        p:=i*Pause1;
          if p<0 then p:=1;
        SetPausesuni1(p, pause2,CommandR, CommandF, CommandN, itmp+3, M, msgSent);


        ComShowOSC(trunc(pause2));{show osc-picture}
    {***BEGIN*ABORT******************}
          if ESC then begin
            AbortMeasure;
            Exit;
          end;
    {****END**ABORT******************}
        end;
      DeleteTrackBar;
    until N=1;
  rod1;{Now u can see osc-picture}
end;
  • Вопрос задан
  • 273 просмотра
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
alsopub
@alsopub
Рискну предположить, что point передается менее 1, следовательно N всегда 1.
Вы проверяли какие значения N бывают до выполнения цикла?
Ответ написан
2ord
@2ord
Локальную переменную в Паскале может поменять вложенная процедура/функция, т.е. декларированная внутри процедуры s180t90. Также встроенный ассемблер и прочие уловки при прямой работе с памятью в обход Паскаля.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы