Главная страница
    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.48 MB
Время: 0.029 c
1-79933
ИМХО
2004-02-09 05:01
2004.02.25
Многострочное выделение в гриде


1-79781
MadGhost
2004-02-04 21:52
2004.02.25
можно ли неактивное окно из панели задач открыть по таймеру?


3-79664
Alex__
2004-01-30 21:21
2004.02.25
Функция Table.Translate


1-79908
AlexandrKu
2004-02-09 16:14
2004.02.25
Доступ к ячейкам Excel через OleContainer


1-79797
ИЛЮХА
2004-02-11 11:36
2004.02.25
File





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