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

Вниз

Проблемы с массивом!!!   Найти похожие ветки 

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

Наверх




Память: 0.51 MB
Время: 0.025 c
3-79579
venus
2004-01-29 11:45
2004.02.25
Сортировка записей в БД


8-80035
Шимолин Сергей
2003-10-21 13:53
2004.02.25
? как отобразить PNG-файл в программе. Может ActiveX какой есть?


1-79865
h0use
2004-02-09 16:58
2004.02.25
Работа в D8


1-79962
Dem@n
2004-02-13 17:45
2004.02.25
Реализация подсветки синтаксиса?


3-79618
Pako
2004-02-03 07:36
2004.02.25
Pack