Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.06.29;
Скачать: CL | DM;

Вниз

Проверка значения переменной   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.57 MB
Время: 0.028 c
4-1115404206
Switer
2005-05-06 22:30
2005.06.29
Блокировка клавиш


6-1112518613
Толян
2005-04-03 12:56
2005.06.29
socket


3-1116579304
mr.IL
2005-05-20 12:55
2005.06.29
возвратить значение из ADOCommand


14-1117696261
Nik8.
2005-06-02 11:11
2005.06.29
Загадка - Два брата


3-1116316623
Dell3r
2005-05-17 11:57
2005.06.29
Помогите составить запрос