Переменные, Много...Много переменных |
1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!
Переменные, Много...Много переменных |
-Александр- |
19.06.2008 20:03
Сообщение
#1
|
Гость |
Возможно ли сделать так, чтобы в TP7 не было ограничений по количеству переменных?
P.S.Написал программу по моделированию движения тел под действие гравитационных сил, а максимум тел которые могу рассматривать всего лишь 140, а очень хочеться больше. |
volvo |
19.06.2008 20:54
Сообщение
#2
|
Гость |
Цитата Возможно ли сделать так, чтобы в TP7 не было ограничений по количеству переменных? Я так понимаю, что вопрос связан с переполнением сегмента данных (данные статические)? Тогда переходи на использование динамической памяти. 640К больше чем 64К, правда?Мажет быть есть и другие пути, например, уменьшение объема памяти, необходимого для хранения информации о каждом "теле", но это уже надо смотреть программу... |
andriano |
19.06.2008 23:06
Сообщение
#3
|
Гуру Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: 28 |
Чтобы не было никаких ограничений, сделать, естественно, невозможно в принципе. Но в разных случаях ограничения могут быть различными. Для твоих структур примерно так:
16-разрядный сегмент данных в реальном режиме - 140, 16-разрядный режим с динамической памятью - 1000, 16-разрядный защищенный режим - 30000, 32-разрядный режим при памяти 1 Гбайт - 2000000, Вообще же, ты бы привел структуру данных, которой описываешь объект. Пол-килобайта навскидку кажется многовато для одного объекта. |
Гость |
20.06.2008 13:23
Сообщение
#4
|
Гость |
Вообще же, ты бы привел структуру данных, которой описываешь объект. Пол-килобайта навскидку кажется многовато для одного объекта. У меня в программе 3 графических модуля. Вот их нее верхушки с переменными: const Nn1=10; dim1=3; N1=Dim1*2*Nn1; NPR=1; G_grav=6.67E-11; var Yu,Y,D,YG:array [1..2*N1] of extended; TPR:array [1..NPR] of extended; M,R:array [1..Nn1] of extended; i,ii,j,Pn1,hi,hi1,dn,n0,pp,pp1,PN,PH,BB,C,CLR,Nn,N05,dim,N:longint; Hour,Minute,Second,Sec100:word; sec:array [1..4] of extended; Sm,Sm1,T,EPS,EPS1,H,P,Rr,U,Ek,E0,YY,RT0,RT,TR,t1,wd,dat,data,EUK,Xt,Yt,W:extende d; ch:char; var Gd,Gm,Mx,My:integer; Xpl,Ypl,D,N,C:longint; Xkp,Ykp,Xkp0,Ykp0,Xp,Yp,Xc,Yc:extended; Wxx,Wyy,Wx,Wy:array [1..2] of extended; Xmax,Ymax,Xmin,Ymin:array [1..3] of extended; Px,Py:array [1..2] of longint; AT,AT0:string; const Nn=300; dimm=4; Ntt=2; var X,Y:array [1..Nn,1..dimm,1..Ntt] of extended; Nc,Nt,Nt1:array [1..dimm,1..Ntt] of longint; Dim,N,dtl,ij,J,T:longint; AT0,AT1:string; Ymax,Ymin,Xmax,Xmin,Wy,Wx,Wxx,Wyy,Xc,Yc:array [1..Ntt] of extended; Xp,Yp:extended; D,I:longint; AT:string; Вообще программа не просто моделирует систему из N тел, она расчитана для нахождения наилучшего времени для того чтобы сбить астероид движущийся к Земле(естественно астероид выдуманный , но можно и реальный ). И естественно графика в программе достаточно сложная(1 универсальный модуль для построения любого числа графиков из любого количества точек(хоть миллион точек, хоть 10 миллионов), но построения ведется не вреальном времени, тоесть сначала вы передаете все точки модулю а после он только сроит. В торой модуль ведет построение тоже по точкам только в реальном времени и естественно как и предыдущий модуль автоматически масштабирует его. А вот третий модуль выводит на экран три проекции происходящего и трех мерное изображение). Немного о переменных, наверное все знают что для того чтобы описать движение N под действием гравитационных полей друг друга надо решить систему состоящую из 2*N дифференциальных уравнений, при этом можно воспользоваться разными методами численного интегрирования(Гира, Рунг- Кутт 1-4). Переменные которые служат для реализация Ронге Кутта 4 порядка: const Nn=140; Количество тел dim=3; Количество измерений(X,Y,Z) N=Dim*2*Nn; Колличество дифференциальных уравнений N05=Dim*Nn; NPR=10; var Y,D,YG:array [1..N] of extended; TPR:array [1..NPR] of extended; I,K1,NP:Longint; T0,TT,TP,H1,H02,H03,H06,EPSM,X,Z,SIGMA,EPSZ,YI:extended; Y0,D0,D02,D02X:array [1..N] of extended; KH:boolean; переменные для того чтобы описать тело R[1..Nn]; M[1..Nn]; Скажу так если работать в программе без каково то не было графического интерфейса то количесво тел которые можно с моделировать равно 250. И вот еще ты пишеш про динамическую память, как ее можно активировать в TP7, Если я не ошибаюсь, то какую то память можно меня через глобальную директиву {$M}, это то или не то? |
klem4 |
20.06.2008 15:04
Сообщение
#5
|
Perl. Just code it! Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: 44 |
Бросается в глаза: много массивов of Extended, неужели настолько высокая точность нужна ? На них можно было-бы памяти сэкономить.
-------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
hardcase забыл пароль |
20.06.2008 15:56
Сообщение
#6
|
Гость |
Компилятор сменить..... 21 век на дворе никак, а вы все в 16 разрядном режиме....
|
-Александр- |
20.06.2008 18:54
Сообщение
#7
|
Гость |
Бросается в глаза: много массивов of Extended, неужели настолько высокая точность нужна ? На них можно было-бы памяти сэкономить. точность, да нужна очень высокая. А насчет новых компиляторов, у меня возникают проблемы при работе с файлами, а она в программе очень интенсивно ведется, речь идет о FreePascal'е |
klem4 |
20.06.2008 19:20
Сообщение
#8
|
Perl. Just code it! Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: 44 |
Цитата у меня возникают проблемы при работе с файлами Это какие например ? Ты бы поконкретней. -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
-Александр- |
20.06.2008 20:22
Сообщение
#9
|
Гость |
Это какие например ? Ты бы поконкретней. Например в обычном TP7 вот эта простенькая программка работает спокойно, а вот во FreePascal'е пишит вот такую ошибку RunTime error 2 at 0*0040105E 0*0040105E 0*004020F5 Сама программка uses crt; var a:longint; begin assign(input,'Y.txt'); reset(input); readln(a); writeln(a); readkey; end. Что может быть не так7 |
klem4 |
20.06.2008 20:36
Сообщение
#10
|
Perl. Just code it! Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: 44 |
попробуй скачать последнюю версию компилятора с оф. сайта.
-------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
Гость |
20.06.2008 20:45
Сообщение
#11
|
Гость |
|
Гость |
20.06.2008 21:36
Сообщение
#12
|
Гость |
Все проблема решена.
Но появился новый вопрос. Возможно ли сделать так чтобы когда активируется графический режим и рисуется графика, а мне к примеру нужно чтобы я в это время нажал любую кнопку, то для этого должна быть активна(лежать поверх графического окна)консоль, что естественно портит весь вид, вопрос заключаеться в том как сделать так чтобы можно было нажимать клавиши а при этом консоли на экране не было? |
andriano |
20.06.2008 22:29
Сообщение
#13
|
Гуру Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: 28 |
Например в обычном TP7 вот эта простенькая программка работает спокойно, а вот во FreePascal'е пишит вот такую ошибку Добавлено через 2 мин. Все проблема решена. Но появился новый вопрос. Возможно ли сделать так чтобы когда активируется графический режим и рисуется графика, а мне к примеру нужно чтобы я в это время нажал любую кнопку, то для этого должна быть активна(лежать поверх графического окна)консоль, что естественно портит весь вид, вопрос заключаеться в том как сделать так чтобы можно было нажимать клавиши а при этом консоли на экране не было? Для обработки клавиатуры консоль не нужна. |
Александр-7300 |
21.06.2008 10:20
Сообщение
#14
|
Новичок Группа: Пользователи Сообщений: 22 Пол: Мужской Реальное имя: Саша Репутация: 0 |
Это неправильная программа. Она не должна работать. Если она работат в ТР, то это ошибка ТР и ничего больше. Добавлено через 2 мин. Для обработки клавиатуры консоль не нужна. Тогда почему я могу использовать клавиатуру только тогда когда на экране весит консоль Смотри принскрин Сообщение отредактировано: Александр-7300 - 21.06.2008 10:22 Эскизы прикрепленных изображений |
andriano |
21.06.2008 15:02
Сообщение
#15
|
Гуру Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: 28 |
|
Александр-7300 |
21.06.2008 16:53
Сообщение
#16
|
Новичок Группа: Пользователи Сообщений: 22 Пол: Мужской Реальное имя: Саша Репутация: 0 |
Потому, что твоя программа специально так написана. Написана, вероятнее всего, не тобой, а автором тех модулей, что ты используешь для визуализации. Чего не знаешь, того не говори, если хочешь могу выложить исходники(если хочешь могу за комментировать каждую строчку!!!). Как тогда сделать так что бы консоль во время работы не появлялась? |
andriano |
21.06.2008 18:27
Сообщение
#17
|
Гуру Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: 28 |
Как тогда сделать так что бы консоль во время работы не появлялась? Не подключать лишних модулей (которые не знаешь, как работают).Вот простенький пример.
Сообщение отредактировано: andriano - 21.06.2008 19:37 |
Александр-7300 |
21.06.2008 19:23
Сообщение
#18
|
Новичок Группа: Пользователи Сообщений: 22 Пол: Мужской Реальное имя: Саша Репутация: 0 |
Не подключать лишних модулей (которые не знаешь, как работают). Я написал модули!!! И по твоему я в них ничего не понимаю? Проблема в том что я пытаюсь портировать свою программу и свои модули из TP7 в FreePascal, что бы можно было использовать больше переменныхl!!!!! Вопрос прямой: как избавиться от консоли? |
andriano |
21.06.2008 19:40
Сообщение
#19
|
Гуру Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: 28 |
см. мой пост выше. Консоль просто не нужно создавать.
У тебя консоль появляется в ТР или FP? Если FP, то под какую платформу компилируешь? |
Александр-7300 |
21.06.2008 19:45
Сообщение
#20
|
Новичок Группа: Пользователи Сообщений: 22 Пол: Мужской Реальное имя: Саша Репутация: 0 |
см. мой пост выше. Консоль просто не нужно создавать. У тебя консоль появляется в ТР или FP? Если FP, то под какую платформу компилируешь? Консоль появляеться в FPS а компилирую под WIN32 И твой пример в FPS все равно работает только тогда когда поверх графического окна лежит консоль(см принскрин) Сообщение отредактировано: Александр-7300 - 21.06.2008 19:52 Эскизы прикрепленных изображений |
Текстовая версия | 20.04.2024 3:58 |