Форум: "Основная";
Текущий архив: 2004.02.25;
Скачать: [xml.tar.bz2];
ВнизПроблемы с массивом!!! Найти похожие ветки
← →
Raph (2004-02-11 15:23) [0]Есть два динамических массива. массив MyBIgDInMassX заполняется правильно , а в массиве MyBIgDInMassY шагов через 70-80-90 начинает муссорится начало ( там появляются числа типа 1*е-380). помогите пожалуйста найти ошибку в коде!
type
TmassFLoat=array[0..99999999] of real;
PTmassFLoat=^TmassFLoat;
var
Form1: TForm1;
MyBIgDInMassY:PTmassFLoat;
MyBIgDInMassX:PTmassFLoat;
procedure TForm1.Button1Click(Sender: TObject);
var i,j,mm:integer;
Xz,Yz:real;
Size2:integer;
begin
Size2 := Round(2*Height/60*2*Width/60)+20;
GetMem(MyBIgDInMassX,Size2);
GetMem(MyBIgDInMassY,Size2);
Yz:=1;
repeat
Xz:=1;
repeat
MyBIgDInMassY^[mm]:=Yz ;
MyBIgDInMassX^[mm]:=Xz;
xz:=xz-60/Height ;
until xz<-1;
yz:=yz-60/Width;
until yz<-1;
mm :=0;
for i:=0 to round(2*Height/60) do
for j:=0 to round(2*Width/60) do
begin
StringGrid1.Cells[i,j]:=floattostr(MyBIgDInMassX^[mm])+" "+floattostr( MyBIgDInMassY^[mm]);
inc(mm);
end;
FreeMem( MyBIgDInMassY);
FreeMem( MyBIgDInMassX);
end;
← →
Тимохов (2004-02-11 15:26) [1]Это не ошибка.
← →
Anatoly Podgoretsky (2004-02-11 15:29) [2]Для Real такое появлятся не может
← →
Тимохов (2004-02-11 15:30) [3]Это нормально.
Вот http://www.delphikingdom.ru/helloworld/reals.htm почитайте.
← →
Тимохов (2004-02-11 15:31) [4]
> Anatoly Podgoretsky © (11.02.04 15:29) [2]
> Для Real такое появлятся не может
А для double?
Double имхо = Real
← →
Anatoly Podgoretsky (2004-02-11 15:33) [5]Тимохов © (11.02.04 15:31) [4]
А на что я по твоему опирался?
← →
Тимохов (2004-02-11 15:36) [6]
> Anatoly Podgoretsky © (11.02.04 15:33) [5]
Разве double не мусорится?
Я думал, что он работает при представлении чисел с правующей точкой весьма стандартно.
← →
Raph (2004-02-11 15:41) [7]а как с эти работать?
массив очень нужен!! Ведь там ошибка возникает!!
> StringGrid1.Cells[i,j]:=floattostr(MyBIgDInMassX^[mm])+"
> "+floattostr( MyBIgDInMassY^[mm]);
← →
Тимохов (2004-02-11 15:44) [8]Воспользуйся фкнцией формат
Например так
format("%.2f", [YourValue])
← →
Raph (2004-02-11 15:55) [9]Ладно с выводом массива как-то разбрусь! Но мне нужно два ПРАВИЛЬНО заполненных динамических массива! ( а изменение типа real на другие вещественные ничего не дает)
← →
Тимохов (2004-02-11 15:57) [10]Что значит правильно?
Почитайте ссылочку - вещественные числа обладают особенностью иметь грязь... и не только в дельфи.
← →
Raph (2004-02-11 16:03) [11]там где по логике должны стоять 1,1,1,1,1,1,1 и т.д стоят 1,2543252434е-380 абсолютно все!! Это что нормально ?! Мне нужно два динамических массива со значениями от -1 до1 с определенным шагом. Как это сделать если так как это сделанно?
← →
Raph (2004-02-11 16:04) [12]Не так как сделанно?
← →
Тимохов (2004-02-11 16:05) [13]
> !! Это что нормально ?!
Это не нормально - это Ваша ошибка в алгоритме. Ищите:)))
← →
Тимохов (2004-02-11 16:07) [14]Где определяется значение mm?
← →
Тимохов (2004-02-11 16:10) [15]Также
Size2 := Round(2*Height/60*2*Width/60)+20;
рисковая операция
скорее надо так (не до конца уверен, но ядея понятна)
Size2 := 2*ceil(Height/60)*2*ceil(Width/60)
← →
Raph (2004-02-11 16:12) [16]там так :
mm:=0;
Yz:=1;
repeat
Xz:=1;
repeat
MyBIgDInMassY^[mm]:=Yz ;
MyBIgDInMassX^[mm]:=Xz;
inc(mm);
xz:=xz-60/Height ;
until xz<-1;
yz:=yz-60/Width;
until yz<-1;
← →
Тимохов (2004-02-11 16:14) [17]Так приведи полностью код "как там".
← →
Raph (2004-02-11 16:18) [18]
procedure TForm1.Button1Click(Sender: TObject);
var i,j,mm:integer;
Xz,Yz:real;
Size2:integer;
begin
Size2 := 2*ceil(Height/60)*2*ceil(Width/60);
GetMem(MyBIgDInMassX,Size2);
GetMem(MyBIgDInMassY,Size2);
mm:=0;
Yz:=1;
repeat
Xz:=1;
repeat
MyBIgDInMassX^[mm]:=Xz;
MyBIgDInMassY^[mm]:=Yz ;
inc(mm);
xz:=xz-60/Height ;
until xz<-1;
yz:=yz-60/Width;
until yz<-1;
//StringGrid1.ColCount:=round(2*Height/60);
//StringGrid1.RowCount:=round(2*Width/60);
mm :=0;
for i:=0 to round(2*Height/60) do
for j:=0 to round(2*Width/60) do
begin
StringGrid1.Cells[i,j]:=format("%.2f", [MyBIgDInMassX^[mm]])
+" "+format("%.2f", [MyBIgDInMassY^[mm]]);
inc(mm);
end;
FreeMem( MyBIgDInMassY);
FreeMem( MyBIgDInMassX);
end;
← →
Raph (2004-02-11 16:20) [19]
type TmassFLoat=array[0..99999999] of real;
PTmassFLoat=^TmassFLoat;
var MyBIgDInMassY:PTmassFLoat;
MyBIgDInMassX:PTmassFLoat;
← →
Тимохов (2004-02-11 16:29) [20]Size2 := 2*ceil(Height/60)*2*ceil(Width/60) * sizeof(real)
И как у тебя это раньше работало?
← →
Raph (2004-02-11 16:36) [21]спасибо ! Работало не знаю каак! Я использую opengl , там имеется ссылка что исключений вроде как не возникает в некоторых случаях! Большое спасибо!
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.02.25;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.046 c