Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.01.23;
Скачать: [xml.tar.bz2];

Вниз

Не выполняются операторы...   Найти похожие ветки 

 
alexander_ua   (2004-01-13 11:48) [0]

Вопрос скорее по паскалю, чем по делфи, но не знаю, где его могу задать. Ситуация такова - есть процедура, делающая некоторые вычисления (в данном случае, не важно, какие). Используются операторы безусловного перехода goto (да простят меня программисты, но подпрограмма переводилась с фортрана и неохота было возиться, чтобы избавиться от меток).
Так вот, запускаю на пошаговое выполнение, после перехода goto 5 по идее должны произойти действия: showmessage, присваивание res и res11 и присваивание u11:=u и т.д. Так вот, вычисление res и res11 почему то не происходит, эти строки просто "перепрыгиваются". В чем может быть проблема? Может я использую зарезервированные слова?

procedure INTRqp(U:real;N:integer;RES:real;X,Y:ar91;IER:real; VAR U11:real;N11:integer;RES11:real;X11,Y11:ar91;IER11:real);
label 2,3,1,5,6,8,9,7,4;
begin
IF(X[1]-U)<0 then goto 2 else if (X[1]-U)=0 then goto 3 else if (X[1]-U)>0 then goto 1;
1: IER:=0;
I:=2;

GOTO 5;
2: IF(X[N]-U)<0 then goto 6 else if (X[N]-U)=0 then goto 8 else if (X[N]-U)>0 then goto 3;
6: IER:=0;
9: I:=N;
GOTO 5;
8: IER:=1;
GOTO 9;
3: IER:=1;
7: for i:=1 to n do
begin
IF(X[I]-U)<0 then goto 4 else if (X[I]-U)=0 then goto 4 else if (X[I]-U)>0 then goto 5;
4: CONTINUE;
end;


5:
showmessage("!");
RES11:=Y[I-1]+(U-X[I-1])*(Y[I]-Y[I-1])/(X[I]-X[I-1]);
RES:=Y[I-1]+(U-X[I-1])*(Y[I]-Y[I-1])/(X[I]-X[I-1]);
u11:=u;n11:=n;res11:=res;x11:=x;y11:=y;ier11:=ier;

END;


 
alex_***   (2004-01-13 11:52) [1]

попробуй убрать оптимизацию, перебилди посмотри еще раз


 
alexander_ua   (2004-01-13 11:56) [2]

Оптимизацию убрал, не помогло.
Еще хочу добавить, что если я делаю присваивание переменным, не являющимся параметрами этой процедуры, то все проходит нормально...


 
xli   (2004-01-13 11:56) [3]

Скорее всего дело именно в оптимизации.
У тебя параметры процедуры не объявлены как возвращающие значение. Включи Warnings, наверняка тебя предупредят, что значения Res11, Res, u11 нигде не используются. Может, компилятор их и не вычисляет из-за этого.


 
alex_***   (2004-01-13 12:01) [4]

Билд делал? После отключения оптимизации надо билд дать.


 
alexander_ua   (2004-01-13 12:02) [5]

Вы правы, сообщения о том, что res11 и res нигде не используются. А что значит параметры не объявлены как возвращающие значение? Можно более подробно развить Вашу мысль?


 
alex_***   (2004-01-13 12:04) [6]

Значит что написано (т.е. можешь их выкинуть). Если хочешь посмотреть как они работают, отключи оптимизацию, сделай Build и посмотри отладчиком.


 
pasha_golub   (2004-01-13 12:05) [7]

Прошу прощения, а поизящнее код низзя переписать?


 
alexander_ua   (2004-01-13 12:09) [8]

>> pasha_golub ©
поизящнее лень писать, я ж говорю, что просто перегнал прогу с фортрана

>>alex_***, xli
все, после билда заработало. спасибо.
но, честно говоря, я так и не понял, почему делфя игнорировала эти строки...


 
alex_***   (2004-01-13 12:11) [9]

Если прислушаешься к [7], такие вопросы вообще не возникнут.


 
xli   (2004-01-13 12:12) [10]

параметры объявлены правильно, я проглядел, просто их названия немного неинформативные и глаз замыливается.

Оптимизацию отключать пробовал?


 
alex_***   (2004-01-13 12:12) [11]

Оптимизация, однако...


 
alexander_ua   (2004-01-13 12:13) [12]

И непонятно, почему "Value assigned to RES never used"...


 
Плохиш_   (2004-01-13 12:18) [13]

>alexander_ua (13.01.04 12:13) [12]

> И непонятно, почему "Value assigned to RES never used"...

А ты сам подумай кому они после end; нужны?


 
default   (2004-01-13 12:19) [14]

alexander_ua (13.01.04 12:13) [12]
переводчик тогда откройте, а вообще [7]


 
alexander_ua   (2004-01-13 12:25) [15]

>> Плохиш_
Что значит кому они нужны? Разве я непрвильно передаю параметры в основную программу?


 
default   (2004-01-13 12:29) [16]

alexander_ua (13.01.04 12:25) [15]
если после присвоения переменной определённого значения эта переменная нигде не фигурирует нафиг это вообще делать?


 
alex_***   (2004-01-13 12:31) [17]

не поленись, перепиши код и все будет ясно... Когда нибудь это сделать все равно придется, а сейчас просто время лишнее потратишь, выясняя что не работает.


 
default   (2004-01-13 12:33) [18]

alexander_ua (13.01.04 12:25) [15]
вот и брат(компилятор) говорит что в этом силы нету)


 
alexander_ua   (2004-01-13 12:49) [19]

стоп. как вернуть значение в программу? насколько я знаю объявляем procedure a(...; var b:real); далее в тексте прцедуры присваиваем b значение, разве не так? так в чем тогда проблема?


 
default   (2004-01-13 12:53) [20]

RES по значению у тебя передаётся


 
Palladin   (2004-01-13 12:53) [21]

старт. var d:integer; c:integer;
d - "вернется"
c - нет

var d,c:integer;
d - "вернется"
c - "вернется"

var d:integer; var c:real;
d - "вернется"
c - "вернется"


 
alexander_ua   (2004-01-13 13:01) [22]

>> Palladin ©
все, спасибо, я понял свои ошибки


 
Плохиш_   (2004-01-13 13:03) [23]

>alexander_ua (13.01.04 12:49) [19]

Ну Palladin © (13.01.04 12:53) [21] понятно объяснил?
И вообще пора уже занятся изучением делфи, а то так и будешь просто перегнал прогу с



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.01.23;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.009 c
3-72648
dimm22
2003-12-26 11:15
2004.01.23
Ошибка округления.


1-72831
Lexer
2004-01-12 10:50
2004.01.23
Как добавить картинку в ячейку DBGrid?


1-72787
First_May
2004-01-13 09:08
2004.01.23
ICQ


1-72748
Митяй2
2004-01-13 18:38
2004.01.23
Изменение размеров в RunTime е


1-72827
MVova
2004-01-13 15:41
2004.01.23
TADOConnection и TThread





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский