Форум: "Основная";
Текущий архив: 2005.06.29;
Скачать: [xml.tar.bz2];
ВнизПроверка значения переменной Найти похожие ветки
← →
Motion © (2005-06-05 11:15) [0]Вот часть кода:
begin
n:=5;
label11.Caption:=inttostr(n);
В метке должно выводить 5, а выводит что-то типа -1,734245
Пробую на пустой форме, всё нормально, пробую в программе - ничего не получается. Помогите пожайлуста советом, что это может быть.
← →
begin...end © (2005-06-05 11:21) [1]Приведите полный код, включая объявление n.
← →
Motion © (2005-06-05 11:25) [2]Вот часть программы:
procedure TForm1.BitBtn1Click(Sender: TObject);
var n:integer;
begin
n:=5;
label11.Caption:=inttostr(n);
end;
← →
begin...end © (2005-06-05 11:28) [3]> Motion © (05.06.05 11:25) [2]
Возможно, переопределена функция IntToStr.
Попробуйте заменить строку label11.Caption:=inttostr(n) на Label11.Caption := SysUtils.IntToStr(n).
← →
Motion © (2005-06-05 11:29) [4]Тоже самое
← →
Motion © (2005-06-05 11:30) [5]Вроде всё должно работать.... вот более полный текст программы:
procedure TForm1.BitBtn1Click(Sender: TObject);
var i,j,k,n:integer;
var arg,S,E:real; //çíà÷åíèå àðãóìåíòà äëÿ äëÿ ïîèñêà çíà÷åíèÿ ôóíêöèè ,ïîëèíîì è ïîãðåøíîñòü
var X:array[0..12] of real; //òàáëè÷íî çàäàííûå çíà÷åíèÿ àðãóìåíòà
var Y:array[0..12] of real; //òàáëè÷íî çàäàííûå çíà÷åíèÿ ôóíêöèè
var h:array[0..12] of real; //øàãè ñïëàéíà
var L:array[0..12] of real; //êîýôèöèåíòû ìàòðèöû ÑËÀÓ
var B:array[0..12] of real;
var D:array[0..12] of real; //âåêòîð ïðàâîé ÷àñòè
var Z:array[0..12] of real; //ïðîãîíî÷íûå êîýôôèöèåíòû
var V:array[0..12] of real;
var M:array[0..12] of real; //ìîìåíòû ñïëàéíû â óçëàõ
var A:array[0..3] of real;
label 1;
begin
n:=5;
//n:=spinedit1.value;
label11.Caption:=SysUtils.IntToStr(n);
if Edit1.Text="" then //ïðîâåðêà íàëè÷èÿ íå çïîëíåíîãî çíà÷åíèÿ àðãóìåíòà
begin
Messagedlg("Îøèáêà! Âû íå ââåëè çíà÷åíèå àðãóìåíòà",mtwarning,[mbok],0);
goto 1;
end;
← →
Motion © (2005-06-05 11:31) [6]n дальше используется во многих циклах
← →
Motion © (2005-06-05 11:32) [7]То есть n - это предел всех циклов
← →
Motion © (2005-06-05 11:33) [8]То есть код такой:
procedure TForm1.BitBtn1Click(Sender: TObject);
var i,j,k,n:integer;
var arg,S,E:real; //çíà÷åíèå àðãóìåíòà äëÿ äëÿ ïîèñêà çíà÷åíèÿ ôóíêöèè ,ïîëèíîì è ïîãðåøíîñòü
var X:array[0..12] of real; //òàáëè÷íî çàäàííûå çíà÷åíèÿ àðãóìåíòà
var Y:array[0..12] of real; //òàáëè÷íî çàäàííûå çíà÷åíèÿ ôóíêöèè
var h:array[0..12] of real; //øàãè ñïëàéíà
var L:array[0..12] of real; //êîýôèöèåíòû ìàòðèöû ÑËÀÓ
var B:array[0..12] of real;
var D:array[0..12] of real; //âåêòîð ïðàâîé ÷àñòè
var Z:array[0..12] of real; //ïðîãîíî÷íûå êîýôôèöèåíòû
var V:array[0..12] of real;
var M:array[0..12] of real; //ìîìåíòû ñïëàéíû â óçëàõ
var A:array[0..3] of real;
label 1;
begin
n:=5;
//n:=spinedit1.value;
label11.Caption:=SysUtils.IntToStr(n);
if Edit1.Text="" then //ïðîâåðêà íàëè÷èÿ íå çïîëíåíîãî çíà÷åíèÿ àðãóìåíòà
begin
Messagedlg("Îøèáêà! Âû íå ââåëè çíà÷åíèå àðãóìåíòà",mtwarning,[mbok],0);
goto 1;
end;
for i:=0 to n do
begin
X[i]:=strtofloat(stringgrid1.Cells[i,0]);
Y[i]:=strtofloat(stringgrid1.Cells[i,1]);
end;
for i:=0 to n-1 do
begin
h[i]:=X[i+1]-X[i];
end;
for i:=1 to n-1 do
begin
L[i]:=h[i-1]/(h[i]+h[i-1]);
B[i]:=h[i]/(h[i]+h[i-1]);
end;
← →
Motion © (2005-06-05 11:34) [9]И так далее
← →
begin...end © (2005-06-05 11:46) [10]> Motion
А что отладчик говорит? Чему равно n?
Установите контрольную точку на строкеn := 5
, запустите код, наведите курсор на n и просмотрите значение переменной. Проходя код по F8, наблюдайте за значением n.
← →
Motion © (2005-06-05 11:48) [11]А как установить контрольную точку?
← →
Anatoly Podgoretsky © (2005-06-05 11:48) [12]Ctrl+F5
← →
Motion © (2005-06-05 11:49) [13]Вот написал тоже самое, только для частного случая:
procedure TForm1.Button1Click(Sender: TObject);
var n,i:integer;
begin
n:=5;
label1.Caption:=inttostr(n);
end;
for i:=0 to n do
begin
label2.caption:=inttostr(i);
end;
end.
И тоже не работает
← →
Motion © (2005-06-05 11:51) [14]Мне немного не понятно, что нужно зделать. Поставил курсор на строку n:=5, нажал Ctrl+F5, а дальше что?
← →
lookin © (2005-06-05 11:52) [15]procedure TForm1.Button1Click(Sender: TObject);
var n,i:integer;
begin
n:=5;
label1.Caption:=inttostr(n);
end; это зачем?
for i:=0 to n do
begin
label2.caption:=inttostr(i);
end;
end.
← →
Motion © (2005-06-05 11:55) [16]To lookin : Теперь работает
← →
begin...end © (2005-06-05 11:55) [17]> Motion © (05.06.05 11:51) [14]
Теперь запустите программу и наблюдайте за значением n в окне Watch List.
← →
lookin © (2005-06-05 11:56) [18][16] Motion © (05.06.05 11:55)
В смысле? После того, как убрали end лишний? Так вроде компилироваться сним не должно было...
← →
Motion © (2005-06-05 11:59) [19]Его убрал - всё пошло.
← →
Motion © (2005-06-05 12:00) [20]В стоке Value пишет - process not accessible
← →
lookin © (2005-06-05 12:01) [21][19] Motion © (05.06.05 11:59)
Бред какой. С этим end не компилируется ничего! Как это Вы умудрились запустить программу при такой компиляции?
← →
Motion © (2005-06-05 12:02) [22]Я убрал end; и всё нормально пошло
← →
lookin © (2005-06-05 12:02) [23][22] Motion © (05.06.05 12:02)
Т.е. компиляция прошла? Или что? А результат работы самой программы тоже удовлетворяет?
← →
Motion © (2005-06-05 12:03) [24]То есть мне написало - что нет доступа к процессу
← →
Motion © (2005-06-05 12:03) [25]Интерестно почему?
← →
begin...end © (2005-06-05 12:09) [26]> Motion © (05.06.05 12:03) [25]
Потому что программа ещё не запущена?
← →
Motion © (2005-06-05 12:12) [27]Я сначала нажимаю F9, потом смотрю значение
← →
Motion © (2005-06-05 12:14) [28]Вот дальше тоже проверяю значения:
for i:=0 to 5 do
begin
X[i]:=strtofloat(stringgrid1.Cells[i,0]);
Y[i]:=strtofloat(stringgrid1.Cells[i,1]);
end;
label11.Caption:=IntToStr(i);
Вместо 5 пишет - -1,734324(тоже самое, что и при n)
← →
lookin © (2005-06-05 12:22) [29]for i:=0 to 5 do
begin
X[i]:=strtofloat(stringgrid1.Cells[i,0]);
Y[i]:=strtofloat(stringgrid1.Cells[i,1]);
end;
label11.Caption:=IntToStr(i);
А разве в этом примере i после завершения цикла не является неопределенной?
← →
ferr © (2005-06-05 12:23) [30]Бред. В i не должно быть пяти, но и -1,7... тоже.
← →
lookin © (2005-06-05 12:26) [31][30] ferr © (05.06.05 12:23)
Кстати, точно! С чего бы это после IntToStr появилось 1,7343....?
← →
Motion © (2005-06-05 12:29) [32]А почему не 5?
← →
Motion © (2005-06-05 12:31) [33]lookin, ты прав
← →
lookin © (2005-06-05 12:32) [34][33] Motion © (05.06.05 12:31)
Интересно, в чем? ////
← →
Motion © (2005-06-05 12:33) [35]"i после завершения цикла является неопределенной"
← →
Motion © (2005-06-05 12:35) [36]А если n определить как константу?
← →
Anatoly Podgoretsky © (2005-06-05 12:36) [37]Ну и что, какое это отношение имеет к 1,7343
← →
Motion © (2005-06-05 12:38) [38]Может как-то по другому можно оприделить n для цикла
for i:=0 to n do
← →
Motion © (2005-06-05 12:39) [39]Сначала я брал его со SpinEdit, но программа работала неправильно, решил проверить все значения. И обнаружил такую ошибку.
← →
lookin © (2005-06-05 12:39) [40][38] Motion © (05.06.05 12:38)
Смысл? Все и так должно работать вроде бы...
Страницы: 1 2 вся ветка
Форум: "Основная";
Текущий архив: 2005.06.29;
Скачать: [xml.tar.bz2];
Память: 0.55 MB
Время: 0.076 c