Главная страница
    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.046 c
3-79608
Ultra389
2004-02-02 10:31
2004.02.25
Экспорт в EXCEL


14-80193
Штурмовик
2004-01-30 23:20
2004.02.25
Помогите студенту


4-80347
Kinder
2003-12-16 20:21
2004.02.25
Выдираем из файла определённую иконку


1-79790
TransparentGhost
2004-02-11 16:16
2004.02.25
Процедуры с необязательными параметрами


14-80124
T__Alex
2004-02-02 18:18
2004.02.25
Народ! Подскажите хороший компонент для работы с архивами





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