Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.031 c
1-79934
SMT
2004-02-09 16:37
2004.02.25
TeeChart компонент


3-79615
Slavik_V
2004-02-02 03:14
2004.02.25
Два итоговых поля в QuickReport


14-80189
NeyroSpace
2004-01-30 16:01
2004.02.25
Пятница расслабьтесь на здоровье Ж:-)


14-80130
Карелин Артем
2004-02-02 15:36
2004.02.25
Как разрешить юзеру в Linux монтировать и размонтировать диски?


1-79848
Fom
2004-02-10 17:07
2004.02.25
Как закрыть ChildForm по кнопке которая на ней?





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