Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.038 c
3-1115902077
mr.IL
2005-05-12 16:47
2005.06.29
создать dbf средствами дельфы


4-1114937615
Dozer
2005-05-01 12:53
2005.06.29
Драйвер сетевой карты на Delphi


14-1117802975
*Oksana*
2005-06-03 16:49
2005.06.29
Проблема со шрифтом


6-1112384110
CppDemon
2005-04-01 23:35
2005.06.29
TCP сервер на асинхронных сокетах


4-1115232394
Alpine
2005-05-04 22:46
2005.06.29
Программное нажатие левой кнопки мыши !





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский