![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проверка значения переменной
Motion © (2005-06-05 11:15:00)Вот часть кода:
begin
n:=5;
label11.Caption:=inttostr(n);
В метке должно выводить 5, а выводит что-то типа -1,734245
Пробую на пустой форме, всё нормально, пробую в программе - ничего не получается. Помогите пожайлуста советом, что это может быть.
Motion (2005-06-05 11:48:00) [41]А как установить контрольную точку?
begin...end (2005-06-05 11:46:00) [42]> Motion
А что отладчик говорит? Чему равно n?
Установите контрольную точку на строкеn := 5, запустите код, наведите курсор на nи просмотрите значение переменной. Проходя код по F8, наблюдайте за значением n.
Motion (2005-06-05 11:34:00) [43]И так далее
Motion (2005-06-05 11:33:00) [44]То есть код такой:
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:32:00) [45]То есть n - это предел всех циклов
Motion (2005-06-05 11:31:00) [46]n дальше используется во многих циклах
Motion (2005-06-05 11:30:00) [47]Вроде всё должно работать.... вот более полный текст программы:
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:29:00) [48]Тоже самое
begin...end (2005-06-05 11:28:00) [49]> Motion © (05.06.05 11:25) [2]
Возможно, переопределена функция IntToStr.
Попробуйте заменить строку label11.Caption:=inttostr(n)на Label11.Caption := SysUtils.IntToStr(n).
Motion (2005-06-05 11:25:00) [50]Вот часть программы:
procedure TForm1.BitBtn1Click(Sender: TObject);
var n:integer;
begin
n:=5;
label11.Caption:=inttostr(n);
end;
begin...end (2005-06-05 11:21:00) [51]Приведите полный код, включая объявление n.