Помощь программистам, если у вас что-то не получается |
Здравствуйте, гость ( Авторизация | Регистрация )
Помощь программистам, если у вас что-то не получается |
10.09.2006, 20:40
Сообщение
#1
|
|
The One Репутация: 744 Группа: Участник Сообщений: 2715 Награды: 5 Регистрация: 05.12.2005 |
В этой теме можете задавать вопросы по программированию.
-------------------- |
 
|
|
|
|
13.09.2006, 11:26
Сообщение
#2
|
|
Gameru DA Репутация: 3704 Группа: Администратор Сообщений: 10206 Награды: 4 Регистрация: 03.02.2006 |
Извиняюсь что не предупредил.
Я реализовал это немного по-другому: Имеется переменная типа TSettings по имение Settings (с несколькими категорияами) параметры в которую загружаются из INI файла: например: Settings.Video._i_res_width := _if_SettingsFile.ReadInteger('Video','ResWidth','800'); Settings.Audio._i_VolumeLevel := _if_SettingsFile.ReadInteger('Audio','VolumeLevel','50'); Не знаю подойдет ли этот метод и правильный ли вообще ход мыслей... Выложу в ближайшее время потому как дома ремонт и сами понимаете З.Ы. Модуль реализовал еще 11 числа Was added in 9 minutes 38 seconds: Цитата Должна присутствовать функция, которая возращает список(класс TList) всех настроек. Не вижу смысла в ТЛист? Когда нужно, будем читaть прямо из переменной Settings Сообщение отредактировал OlegatoR - 13.09.2006, 11:37 -------------------- |
 
|
|
13.09.2006, 12:31
Сообщение
#3
|
|
The One Репутация: 744 Группа: Участник Сообщений: 2715 Награды: 5 Регистрация: 05.12.2005 |
Цитата Имеется переменная типа TSettings по имение Settings (с несколькими категорияами) параметры в которую загружаются из INI файла: например: Settings.Video._i_res_width := _if_SettingsFile.ReadInteger('Video','ResWidth','800'); Settings.Audio._i_VolumeLevel := _if_SettingsFile.ReadInteger('Audio','VolumeLevel','50'); Так будем по тихой разбираться. Settins это у тебя экземпляр класса TSettings. Это я вроде понял, вот эту строчку: Settings.Video._i_res_width := _if_SettingsFile.ReadInteger('Video','ResWidth','800'); Я чёто не понимаю. Зачем у тебя здесь идёт присваивание? Это строчка из реализации класса(что наврятли) или уже работа с ним? Если второе, то нам не надо извне присваивать значения, нам надо, чтобы всё это происходило внутри класса. Чтоб работа с ним выглядела примерно так: Settings:=TSettings.Create(_s_FileName:String) _wd_X:=Settings.Vid_Mode_Horizontal; Цитата Не знаю подойдет ли этот метод и правильный ли вообще ход мыслей... Выложу в ближайшее время потому как дома ремонт и сами понимаете OlegatoR, я рад, что ты используешь все советы, по организации кода. Но поля в классе желательно именовать простым инглишом, т.е. как я уже и писал: vid_resolution_horizontal. Это нам пригодится при написании консоли, ты же не хочешь во время отладки вписывать в консоль _i_res_width. Да и скорее вссего твой метод реализации не пойдёт. Цитата QUOTE Должна присутствовать функция, которая возращает список(класс TList) всех настроек. Не вижу смысла в ТЛист? Когда нужно, будем читaть прямо из переменной Settings Опять же нужно думать о будующем: пригодится при написании консоли. И вообще внутри класса будет работать легче, по крайней мере я так думаю. Выложи очень интересно посмотреть на твою реализацию. А вообще я бы плясал от класса TCustomIni. -------------------- |
 
|
|
15.09.2006, 11:48
Сообщение
#4
|
|
Gameru DA Репутация: 3704 Группа: Администратор Сообщений: 10206 Награды: 4 Регистрация: 03.02.2006 |
Цитата Но поля в классе желательно именовать простым инглишом, Исправил (надеюсь не пропадет ) Цитата Я чёто не понимаю. Зачем у тебя здесь идёт присваивание? Это строчка из реализации класса(что наврятли) или уже работа с ним? Если второе, то нам не надо извне присваивать значения, нам надо, чтобы всё это происходило внутри класса. Чтоб работа с ним выглядела примерно так: Settings:=TSettings.Create(_s_FileName:String) _wd_X:=Settings.Vid_Mode_Horizontal; Я вот этого и не понял. У меня из ИНИ файла загружаються параметры из соотств. ключей. А как же внутри класса из загружать? -------------------- |
 
|
|
15.09.2006, 16:50
Сообщение
#5
|
|
The One Репутация: 744 Группа: Участник Сообщений: 2715 Награды: 5 Регистрация: 05.12.2005 |
Цитата QUOTE Но поля в классе желательно именовать простым инглишом, Исправил (надеюсь не пропадет sad.gif ) Надеюсь, что не пропадёт, наработки есть надо только немного изменить, я так понял у тебя не вышел единый класс объединяющий все функции модуля. Цитата QUOTE Я чёто не понимаю. Зачем у тебя здесь идёт присваивание? Это строчка из реализации класса(что наврятли) или уже работа с ним? Если второе, то нам не надо извне присваивать значения, нам надо, чтобы всё это происходило внутри класса. Чтоб работа с ним выглядела примерно так: Settings:=TSettings.Create(_s_FileName:String) _wd_X:=Settings.Vid_Mode_Horizontal; Я вот этого и не понял. У меня из ИНИ файла загружаються параметры из соотств. ключей. А как же внутри класса из загружать? Также, как и снаружи, например(пишу сразу, возможны ошибки) Цитата type TSettings=class private _ini_ConfigFile:TIniFile; public constructor Create(_s_FileName:String); procedure LoadSettings end; constructor TSettings.Create(_s_FileName:String); begin _ini_ConfigFile:=TIniFile.Create(_s_FileName); end; procedure LoadSettings; begin Здесь твой код загрузки настроек. end; А далее думаю понятно. Грузишь настройки, используя переменную _ini_ConfigFile. Она глобальная, поэтому её можно использовать в любой функции, конечно в пределах класса. -------------------- |
 
|
|
16.09.2006, 23:41
Сообщение
#6
|
|
Gameru DA Репутация: 3704 Группа: Администратор Сообщений: 10206 Награды: 4 Регистрация: 03.02.2006 |
Хм... Примерно так и реализовал.
З.Ы. - исходники спасти все же удалось - чисто случайно -------------------- |
 
|
|
27.09.2006, 11:42
Сообщение
#7
|
|
Gameru DA Репутация: 3704 Группа: Администратор Сообщений: 10206 Награды: 4 Регистрация: 03.02.2006 |
Хм... Свойства мне реализовать не удалось - не разобрался с ХЕЛПом
Сохранение сделаю. А чем, собссно, переменные не устраивают? -------------------- |
 
|
|
27.09.2006, 17:52
Сообщение
#8
|
|
The One Репутация: 744 Группа: Участник Сообщений: 2715 Награды: 5 Регистрация: 05.12.2005 |
Цитата Хм... Свойства мне реализовать не удалось - не разобрался с ХЕЛПом sad.gif Сохранение сделаю. А чем, собссно, переменные не устраивают? Не нравятся мне все эти замутки с переменной текер, двойное присваивание и расход памяти. Надо всё делать проще, а свойства достаточно просты. Я же говорил обращайся за помощью, поможем, значит так: Общий вид свойства: Цитата TMyClass=class private public Value:Integer; procedure SetValue(NewValue:Integer); function ReadValue:integer; property OwnValue: Integer read ReadValue write SetValue; end; Это общий вид реализации свойства. Жирным выделены процедуры для работы со свойством. Ты, наверное скажешь: ведь всёравно используется переменная, так как сделано у меня, но у тебя нельзя записать новое значение, используя простое обращение TMyClass.Value:=1, да и чтение у тебя выполнено как-то по кругу. В классе читаем в сам класс - это, конечно если, так сказать, дословно выражаться. А мы можем сделать проще: Цитата TSettings=class
private Value:Integer; public procedure SetValue(NewValue:Integer;Name:String[25]); constructor Create; property OwnValue: Integer read Value write SetValue; end; constructor TSettings.Create; begin Создание ини файла, чтение из него настроек в переменные, в моём примере в переменную Value. end; procedure TSettings.SetValue(NewValue:Integer;Name:String[25]); begin А здесь идёт уже запись в файл новых значений. Обрати внимание на передаваемый в процедуру параметр Name, я описал его для того, чтобы можно было работать динамически с ини файлом, а не так как это делал ты: прописывал каждую секцию вручную. Т.е. надо написать небольшой парсер передаваемого имени. Опять же здесь пригодиться тот формат имени, который я предложил: vid_resolution_horizontal, что-то типа этого.Но это конечно твоё дело, если тебе не лень каждый раз вручную прописывать секции в ини файле, если тебе охото писать процедуры для записи настроек на каждый настраеваемый параметр, то пиши, но помни больше кода медленнее работа, сложнее отладка и т.д. end; Сообщение отредактировал Neo][ - 27.09.2006, 17:54 -------------------- |
 
|
|
29.09.2006, 12:34
Сообщение
#9
|
|
Gameru DA Репутация: 3704 Группа: Администратор Сообщений: 10206 Награды: 4 Регистрация: 03.02.2006 |
Я делал таким макаром: в файл записывается параметр resX и resY со значениями а в SettingsObj записывется так:
Цитата SettingsObj.Video.Resolution.Х := _if_SetingsFile.ReadInteger('Video','resX', <значение по умолч.>); SettingsObj.Video.Resolution.Y := _if_SetingsFile.ReadInteger('Video', 'resY', <значение по умолч.>); Если по-ламерски реализовал - сильно не бейте переделаю Сообщение отредактировал OlegatoR - 29.09.2006, 12:37 -------------------- |
 
|
|
29.09.2006, 19:36
Сообщение
#10
|
|
The One Репутация: 744 Группа: Участник Сообщений: 2715 Награды: 5 Регистрация: 05.12.2005 |
Цитата Если по-ламерски реализовал - сильно не бейте smile.gif переделаю В принципе не важно как ты реализовал, лишь бы обращение было прозрачным и работало, т.е, чтобы можно было писать: GLFullScreenViewer.Height:=SettingsObj.Video.Resolution.Х; и так SettingsObj.Video.Resolution.Х:=800; -------------------- |
 
|
|
30.09.2006, 18:21
Сообщение
#11
|
|
Gameru DA Репутация: 3704 Группа: Администратор Сообщений: 10206 Награды: 4 Регистрация: 03.02.2006 |
понятно - разберусь с процедурами записи-чтения и буду дописывать модуль
-------------------- |
 
|
|
01.10.2006, 16:05
Сообщение
#12
|
|
The One Репутация: 744 Группа: Участник Сообщений: 2715 Награды: 5 Регистрация: 05.12.2005 |
Цитата понятно - разберусь с процедурами записи-чтения и буду дописывать модуль OlegatoR, посмотри памятку программиста. Я там выложил главу из книги, посвящённую свойствам класса. -------------------- |
 
|
|
09.10.2006, 11:36
Сообщение
#13
|
|
Gameru DA Репутация: 3704 Группа: Администратор Сообщений: 10206 Награды: 4 Регистрация: 03.02.2006 |
Блин у меня не получается сделать свойства - запутался окончательно!
Немогу вдуплить как реализовать процедуры чтения-записи в купе со всем остальным! Исходники дома, не могу выложить пока (интернет не работает) -------------------- |
 
|
|
10.10.2006, 21:08
Сообщение
#14
|
|
The One Репутация: 744 Группа: Участник Сообщений: 2715 Награды: 5 Регистрация: 05.12.2005 |
Цитата Немогу вдуплить как реализовать процедуры чтения-записи в купе со всем остальным! Может на примере будет легче. Завтра обновлю исходники двигла, там в модуле HUD есть класс со свойствами. -------------------- |
 
|
|
13.10.2006, 14:58
Сообщение
#15
|
|
Gameru DA Репутация: 3704 Группа: Администратор Сообщений: 10206 Награды: 4 Регистрация: 03.02.2006 |
Разбираюсь с БАСС и МОД. Возмитесь еще кто-нить!
-------------------- |
 
|
|
13.10.2006, 21:11
Сообщение
#16
|
|
The One Репутация: 744 Группа: Участник Сообщений: 2715 Награды: 5 Регистрация: 05.12.2005 |
Цитата Разбираюсь с БАСС и МОД. Возмитесь еще кто-нить! За БАСС и МОД или за модуль настроек? -------------------- |
 
|
|
15.10.2006, 00:40
Сообщение
#17
|
|
Gameru DA Репутация: 3704 Группа: Администратор Сообщений: 10206 Награды: 4 Регистрация: 03.02.2006 |
пока за звук - но возможно придется передать кому-нить и модуль настроек
-------------------- |
 
|
|
31.10.2006, 23:04
Сообщение
#18
|
|
Gameru DA Репутация: 3704 Группа: Администратор Сообщений: 10206 Награды: 4 Регистрация: 03.02.2006 |
ПАША! ХЕЛП!
НАСЧЕТ РЕДАКТОРА Поскольку все модели у нас разного размера, то как сделать чтобы в окне просмотра шло автоматическое масштабирование (тоесть приближение - удаление камеры к/от обекта) З.Ы. Юзание Scale недопускается. -------------------- |
 
|
|
01.11.2006, 10:33
Сообщение
#19
|
|
The One Репутация: 744 Группа: Участник Сообщений: 2715 Награды: 5 Регистрация: 05.12.2005 |
Цитата ПАША! ХЕЛП! НАСЧЕТ РЕДАКТОРА Поскольку все модели у нас разного размера, то как сделать чтобы в окне просмотра шло автоматическое масштабирование (тоесть приближение - удаление камеры к/от обекта) З.Ы. Юзание Scale недопускается. Известная проблема. Но решение, которое ты предполагаешь нас не устроит. Ведь при построении сцены нужно чтобы каждый объект имел свой размер, опять же параметр scale нам не подходит. Калашу свой Scale а столу свой. Это надо к моделлерам, чтобы они изначально делали модели подходящие по размерам. Опа понял, ты насчёт предпросмотра модели которой добавляешь? Тогда щас поэкспериментируем, вечером отпишусь. -------------------- |
 
|
|
01.11.2006, 19:03
Сообщение
#20
|
|
Gameru DA Репутация: 3704 Группа: Администратор Сообщений: 10206 Награды: 4 Регистрация: 03.02.2006 |
Тааакс. В ходе работы возникает куча вопросов!! Как мы будем обращаться к элементам массива? Например:
Код type TPhysicType = record Static,Dinamic,RagDoll: string; end; type TPosition = record x, y, z: real; end; type TPhysicParams = record PhysicType: TPhysicType; Mass: real; end; type TSTEMapObject = class Position: TPosition; Physic: TPhysicParams; Name, MeshPath: string; end; type TSTEObjectsList = array of TSTEMapObject; .................. Spisok: TSTEObjectList; Spisok[1].Position.X := 2.5; // НЕ РАБОТАЕТ!!!! Куда совать конструктор Create и нужен ли он вообще??? Как вообще обращаться - по индексам, что ли? Так после 5 объектов запутаемся Вобщем так, Паша, если можешь - объясни как следует. С этим массивом куча проблем (Залил на ФТП исходник) -------------------- |
 
|
|
Текстовая версия | Сейчас: 18.04.2024, 10:17 |