![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| Dmitry V.Abramov |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 177 Регистрация: 30.9.2003 Где: Saint-Petersburg Репутация: 5 Всего: 4 |
p0s0l Ты забыл еще спросить, - а надо ли ему это вообще... Судя по публикациям classes.pas и усмешкам - не очень то и надо.
--------------------
/DVA |
|||
|
||||
| p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 58 Всего: 112 |
Просто Sniper никак не хочет понять, что от него хотят...
Это моя последняя попытка: "Снайпер, скажите нам, НА ЧТО же всё-таки ССЫЛАЮТСЯ те самые указатели из TLIST ? Т.е. распишите те типы структур/объектов на которые ссылается этот TList." -------------------- С уважением, г-н Посол. |
|||
|
||||
| Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 48 Всего: 207 |
Похоже вы не поняли, что он от Вас хочет. Для программиста на Дельфи модуль classes.pas и классы в нём прописанные, всё равно что 4 арифметических действия для математика - зная уровень p0s0l я не сомневаюсь, что он прекрасно осведомлён и о модуле classes.pas и о классе TList, поэтому попытайтесь понять те вопросы, которые Вам задают и ответить на них, проблема в Вашем понимании задачи, а не понимании нами этого модуля и класса TList. (без обид, Вам действительно хотят помочь, но к сожалению мы должны понять ЧТО именно надо). -------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
| Sniper |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 511 Регистрация: 8.5.2002 Репутация: нет Всего: 2 |
Я понимаю и ценю вашу помощь!
Но я, как сказал Vit, не понимаю что вам дать чтобы вы мне помоги! :-((((( p0s0l поверь я хочу тебе сказать на что они указываю.... знать бы только как!! (у меня проект стоит! из-за моей тупизны :-( публикую все типы которые содержатся в модуле model.pas
Там дальше по тексту пишу: Meshes := TList.Create; Я кажись начинаю понимать, что вам нужно! :-) вот например: TexFaces : PGLFacesArray; но PGLFacesArray указывает на ^TGLVertexArray который в свою очередь указывает на array[Word] of TGLVertex; а тот на TGLVertex = record x,y,z : glfloat; end; так вам нужно вот такое же как эта цепочка, только про TList? Я правильно понял? Если да то для TList ТАКОЙ ЦЕПОЧКИ НЕТ! :-( Он просто берётся из этого ...... classes.pas Тьфу! Это сообщение отредактировал(а) Sniper - 30.10.2003, 20:46 -------------------- "Я испытываю отвращение к системе, разработаннной для "пользователя", если в слове "пользователь" закодировано уничижительное значение "тупой и примитивный". Кен Томпсон, создатель Unix |
|||
|
||||
| <Spawn> |
|
||||
![]() Око кары:) ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2776 Регистрация: 29.1.2003 Где: Екатеринбург Репутация: 44 Всего: 64 |
Sniper Смотри, указатели могут ссылаться на данные разных типов. К примеру, в TList могут быть указатели на тип integer( PInteger), а могут и на целые структуры:
Так вот у тебя пытаются выяснить на какой тип данных указывают указатели в TList?? Или они у тебя вообще не типизированные(Pointer)? К примеру, если бы в TList "сидели" PInteger, то запись могла бы быть примерно такой
Это сообщение отредактировал(а) <Spawn> - 30.10.2003, 23:09 -------------------- "Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков. |
||||
|
|||||
| Sniper |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 511 Регистрация: 8.5.2002 Репутация: нет Всего: 2 |
<Spawn> понятно!
Meshes.Add(ogmd_NextMesh); TGMDMesh(Meshes.Items[CurMesh]).Draw; for i:=0 to Meshes.Count-1 do TGMDMesh(Meshes.Items[i]).Destroy; Больше в модуле нигде не встречается Meshes а TList описан в classes.pas.... а как уж в этом модуле идут ссылки всем известно! -------------------- "Я испытываю отвращение к системе, разработаннной для "пользователя", если в слове "пользователь" закодировано уничижительное значение "тупой и примитивный". Кен Томпсон, создатель Unix |
|||
|
||||
| p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 58 Всего: 112 |
Посмотри какой тип у переменной ogmd_NextMesh - судя по смыслу должно быть TGMDMesh...
Если это так, то тут возникают трудности: у TGMDMesh есть ссылки на массивы Vertices, FasetNormals, SmoothNormals, Faces, но нет ничего, что могло бы помочь узнать размеры этих массивов - следовательно по той приведенной части кода запись/чтение сделать скорее всего невозможно. Было бы легче, если бы ты показал метод LoadFromFile, наверняка там эти массивы заполняются... Это сообщение отредактировал(а) p0s0l - 30.10.2003, 23:26 -------------------- С уважением, г-н Посол. |
|||
|
||||
| <Spawn> |
|
|||
![]() Око кары:) ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2776 Регистрация: 29.1.2003 Где: Екатеринбург Репутация: 44 Всего: 64 |
p0s0l Хм, я что то не понимаю или ты не обратил внимания, но TGLVertex имеет размер 65536 (SizeOf(Word)) структур, содержащих 3 значения типа Float(в OpenGL почти ко всем типам приделаны приставки gl).
-------------------- "Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков. |
|||
|
||||
| p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 58 Всего: 112 |
Sniper, не надо, ничего не смотри, я протормозил - в TList'е однозначно хранятся переменные типа TGMDMesh (либо его наследники, но это маловероятно, тем более ты привел все типы из того модуля)...
<Spawn>, так вообще-то и делают... Можно было описать TGLVertexArray как array [0..0] of TGLVertex - ничего бы не изменилось. Вернее в последнем варианте с включенной опцией Range Checking вывалилась бы ошибка при обращении, например, к элементу [1]. Но она обычно выключена (по умолчанию). Просто реальный размер массива задаётся при выделении памяти: var p : PGLVertexArray; GetMem (p, 1024*SizeOf(TGLVertex)); // это массив из 1024 элементов -------------------- С уважением, г-н Посол. |
|||
|
||||
| Unregistered |
|
|||
|
Unregistered |
p0s0l
я сделал так s.Write(Meshes, SizeOf(TList)); и 60kb в файле файле конфигурации прибавилось, а было 40 байт! %-) Я чувстую что я правильно сделал!? |
|||
|
||||
| Sniper |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 511 Регистрация: 8.5.2002 Репутация: нет Всего: 2 |
p0s0l
я сделал так s.Write(Meshes, SizeOf(TList)); и 60kb в файле файле конфигурации прибавилось, а было 40 байт! %-) Я чувстую что я правильно сделал!? -------------------- "Я испытываю отвращение к системе, разработаннной для "пользователя", если в слове "пользователь" закодировано уничижительное значение "тупой и примитивный". Кен Томпсон, создатель Unix |
|||
|
||||
| Dmitry V.Abramov |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 177 Регистрация: 30.9.2003 Где: Saint-Petersburg Репутация: 5 Всего: 4 |
Sniper На этот раз предчувствия тебя обманывают...
SizeOf(TList))=SizeOf(TForm)=SizeOf(T_Что_угодно_порожденное_от_TObject)=4. Везде. Даже если Папа Римский наберет сейчас дрожащими руками в католическом Delphi "writeln(SizeOf(TList))", то сниспослано ему в ответ будет число 4. И это правильно. И это можно не знать, а нужно просто помнить. Как 2х2. А передачу Meshes в качестве параметра на запись - обязательно надо предложить Borland'у. А то понагородили тут какие-то RTTI, {M+}, TPersistent, TWriter, TReader... Попутно выдумали "проблему сохранения и восстановления классов" на нашу голову... А ее, оказывается, нет - сохраним 4 байта адреса из Heap - и хватит. Но! Главное - не выдать врагу этот метод! Пусть это будет нашим секретом. Резюме: ответ отрицательный. --------------------
/DVA |
|||
|
||||
| Sniper |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 511 Регистрация: 8.5.2002 Репутация: нет Всего: 2 |
Dmitry V.Abramov Но у меня файл весит не 4 байта, а 60KB!!!!
Что же он тогда сохраняет -------------------- "Я испытываю отвращение к системе, разработаннной для "пользователя", если в слове "пользователь" закодировано уничижительное значение "тупой и примитивный". Кен Томпсон, создатель Unix |
|||
|
||||
| p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 58 Всего: 112 |
Sniper, дак ведь ты не один меш сохраняешь в файл ? Из-за этого и получается такой размер...
-------------------- С уважением, г-н Посол. |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |