Страница: 1 | 2 |
Вопрос: Подскажите как собрать все в кучу
Добавлено: 13.11.07 11:46
Автор вопроса: KreAtoR
Я не совсем уперен, но мне кажется что надо сделать все через коллекцию.
У меня есть несколько объектов, которые имеют одинаковое количество параметров. мне надо где то это созранить и при необходимости проверять и изменять перед использованием.
Если у кого пример использования класса коллекций.
или вообще стоящая информация по коллекциям
Ответы
Всего ответов: 28
Номер ответа: 1
Автор ответа:
Администратор
ICQ: 278109632
Вопросов: 42
Ответов: 3949
Web-сайт:
Профиль | | #1
Добавлено: 13.11.07 14:40
1. MSDN
2. У меня есть файлик VisualBasic6.pdf, кто автор - не знаю, вроде скан с какой-то книги, валялось на диске с VB. Весит 32 метра. Вот там на 233 странице есть
Вообще коллекция это оч просто, сам сможешь легко с ними разобраться.
=========
Расскажу кратенько что знаю.
Колекция (семейство) это тот же массив, но с некоторыми фичами:
1. Семейства более гибко индексируются
2. Легко добавлять и удалять объекты
3. Размер коллекции регулируется автоматически (без всяких там ReDim)
4. Коллекции зачастую требуют меньше памяти, чем массивы.
В коллекцию можно добавить объект любого класса.
Методы Add и Remove соответственно добавляют и удаляют элемент коллекции. Item осуществляет доступ к конкретному объекту коллекции. В свойстве Count хранится кол-во элементов.
В методе Add есть полезнаю фишка - Key. Это символная строка идентифицирующая объект. Как индекс, только строковой. Удалять элемент можно как по индексу, так и по ключу.
Так.... что еще.... Ах да. Циклы.
Для того, чтобы пройтись по всем элементам коллекции существуе6т специальная конструкция цикла: For Each...Next
Например.
Dim mObject as Object
For Each mObject In Col
Debug.Print mObject.SomeProperty
Next mObject
В этом примере показан принцип действия работы такого цикла. Каждый элемент коллекции Col один раз присваивается объектной переменной mObject.
Ну, вроде бы основное сказал. Дальше, думаю, сам разберешься
Номер ответа: 2
Автор ответа:
KreAtoR
Вопросов: 120
Ответов: 438
Профиль | | #2
Добавлено: 13.11.07 15:18
уже интересней. а как мне эту кнежку получить???
вопрос такой, можно ли в коллекции сохранить данные при закрытии программы и при очередном включении эти фанные снова оттуда достать. или они будут утеряны
Номер ответа: 3
Автор ответа:
Администратор
ICQ: 278109632
Вопросов: 42
Ответов: 3949
Web-сайт:
Профиль | | #3
Добавлено: 13.11.07 15:58
в теории можно записать коллекцию в файл, но ОООООЧЕНЬ много гемороя. Проще уж массив структур. Где книжечку получить - не знаю, может залью в ближайшее время.
Номер ответа: 4
Автор ответа:
KreAtoR
Вопросов: 120
Ответов: 438
Профиль | | #4
Добавлено: 13.11.07 16:13
а как же мне тогда выгодно сохранять файлы. пытался в xml но не удобно искать потом. таблцей было бы классно сохранять, сключами. не подскажешь какой способ выгодней. объектов более сотни но количество переменных одно
Номер ответа: 5
Автор ответа:
Администратор
ICQ: 278109632
Вопросов: 42
Ответов: 3949
Web-сайт:
Профиль | | #5
Добавлено: 13.11.07 17:36
если нету строк, либо строки фиксированной длины, то проще всего создать тип (структуру, Type), объявить массив этих структур и писать уже его в бинарный файл (for binary)
Номер ответа: 6
Автор ответа:
KreAtoR
Вопросов: 120
Ответов: 438
Профиль | | #6
Добавлено: 13.11.07 17:53
загрузил
у меня объекты имеют как стринг, так и числа акромя с плавающей точкой.
Номер ответа: 7
Автор ответа:
Администратор
ICQ: 278109632
Вопросов: 42
Ответов: 3949
Web-сайт:
Профиль | | #7
Добавлено: 13.11.07 18:55
есть ограничения на длину строк? можно сделать строки фиксированной длины? вообще, можешь код показать? или в асю отпиши
Номер ответа: 8
Автор ответа:
KreAtoR
Вопросов: 120
Ответов: 438
Профиль | | #8
Добавлено: 13.11.07 19:19
пока инчего стоящего показать не могу.
есть просто класс в котором объект при инициализации получает последние сохраненные параметры. их просто много (параметров), да и объектов их класса тоже не мало. вот я сижу и думаю, сделать таблицу в которой все понятно и красиво для каждого объекта можно сохранить.
Думал коллекция, точнее сначала думал про SQL но так проблематично я делать не стал хтя вариант был неплохой. ищу альтернативу.
Номер ответа: 9
Автор ответа:
Администратор
ICQ: 278109632
Вопросов: 42
Ответов: 3949
Web-сайт:
Профиль | | #9
Добавлено: 13.11.07 19:45
ye3 я тебе сказал, как бы я сделал. могу примерчик накатать, если надо. хотя SQL и MDB-база тоже вариант.
Номер ответа: 10
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #10
Добавлено: 13.11.07 20:27
Так может всё-таки юзать тайпы?
Как например в игре Revotron (имхо одна из немногих нормально сделанных DX-игр на VB)
World As Byte
ShowFPS As Boolean
'Sound
InGameSound As Boolean
'Graphics
Res As Revo3dRes
UseFSAA As Long
UseReflection As Boolean
UseShadow As Long
UseSpecular As Boolean
UseAnisotropic As Boolean
UseTransWalls As Boolean
'Gameplay
LandSize As Single
MopedSpeed As Single
FragLimit As Long
OpponentCnt As Long
OpponentSkill As Long
Cam As Long
EnableAction As Boolean
PlayerName As String * 64
End Type
Public Sub Run_The_Whole_Damn_Show()
Dim FileData() As Byte
ReDim FileData(Len(gOptions) - 1)
'Load settings from file.
If PathFileExists("settings\config.dat" = 0 Then
If PathFileExists("settings\default.dat" = 0 Then
MsgBox "Couldn't load the game. Revo Tron will exit now.", vbCritical, "Revo Tron"
Exit Sub
End If
Open "settings\default.dat" For Binary Access Read As #1
Else
Open "settings\config.dat" For Binary Access Read As #1
End If
Get #1, , FileData
CopyMemory gOptions, FileData(0), Len(gOptions)
Close #1
Номер ответа: 11
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #11
Добавлено: 13.11.07 20:28
но как уже говорили длины строк должны быть фиксированными
Номер ответа: 12
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #12
Добавлено: 14.11.07 02:02
Да бред это хранить объекты в файле. В файле хранять не объекты, а параметры объекта... а потом при загрузки их востанавливают...
Это мне что-то вспоминается сериализация объектов в пхп.. ну да, там типо можно, но всёравно я считаю это бредом.
Сделай параметры в твоём классе одной переменной или массивом переменных, но своего типа.. и там уже что угодно.. Вообщем, я как и все, склоняюсь к Type.
Номер ответа: 13
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #13
Добавлено: 14.11.07 02:02
Естессно нужно объявить gOptions как TronSettings
Номер ответа: 14
Автор ответа:
KreAtoR
Вопросов: 120
Ответов: 438
Профиль | | #14
Добавлено: 14.11.07 10:26
2.HACKER
насколько мне казалось объукт это и есть набор параметров??? или я жустоко ошибаюсь.
судя по разговору и примуру в ВБ можно сделать файл???и поместить в него значения переменных??
Как это можно сделать
Номер ответа: 15
Автор ответа:
Администратор
ICQ: 278109632
Вопросов: 42
Ответов: 3949
Web-сайт:
Профиль | | #15
Добавлено: 14.11.07 13:54
дык тебе выше пример привели...