Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 |

 

  Вопрос: Подскажите как собрать все в кучу Добавлено: 13.11.07 11:46  

Автор вопроса:  KreAtoR
Я не совсем уперен, но мне кажется что надо сделать все через коллекцию.

У меня есть несколько объектов, которые имеют одинаковое количество параметров. мне надо где то это созранить и при необходимости проверять и изменять перед использованием.

Если у кого пример использования класса коллекций.
или вообще стоящая информация по коллекциям

Ответить

  Ответы Всего ответов: 28  

Номер ответа: 1
Автор ответа:
 



Администратор

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #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 Col as new Collection
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-сайт: domkratt.com
 Профиль | | #3
Добавлено: 13.11.07 15:58
в теории можно записать коллекцию в файл, но ОООООЧЕНЬ много гемороя. Проще уж массив структур. Где книжечку получить - не знаю, может залью в ближайшее время.

Ответить

Номер ответа: 4
Автор ответа:
 KreAtoR



Вопросов: 120
Ответов: 438
 Профиль | | #4 Добавлено: 13.11.07 16:13
а как же мне тогда выгодно сохранять файлы. пытался в xml но не удобно искать потом. таблцей было бы классно сохранять, сключами. не подскажешь какой способ выгодней. объектов более сотни но количество переменных одно

Ответить

Номер ответа: 5
Автор ответа:
 



Администратор

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #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-сайт: domkratt.com
 Профиль | | #7
Добавлено: 13.11.07 18:55
есть ограничения на длину строк? можно сделать строки фиксированной длины? вообще, можешь код показать? или в асю отпиши

Ответить

Номер ответа: 8
Автор ответа:
 KreAtoR



Вопросов: 120
Ответов: 438
 Профиль | | #8 Добавлено: 13.11.07 19:19
пока инчего стоящего показать не могу.
есть просто класс в котором объект при инициализации получает последние сохраненные параметры. их просто много (параметров), да и объектов их класса тоже не мало. вот я сижу и думаю, сделать таблицу в которой все понятно и красиво для каждого объекта можно сохранить.
Думал коллекция, точнее сначала думал про SQL но так проблематично я делать не стал хтя вариант был неплохой. ищу альтернативу.

Ответить

Номер ответа: 9
Автор ответа:
 



Администратор

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #9
Добавлено: 13.11.07 19:45
ye3 я тебе сказал, как бы я сделал. могу примерчик накатать, если надо. хотя SQL и MDB-база тоже вариант.

Ответить

Номер ответа: 10
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #10
Добавлено: 13.11.07 20:27
Так может всё-таки юзать тайпы?
Как например в игре Revotron (имхо одна из немногих нормально сделанных DX-игр на VB)
Public Type TronSettings
    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-сайт: winandfx.narod.ru
 Профиль | | #11
Добавлено: 13.11.07 20:28
но как уже говорили длины строк должны быть фиксированными

Ответить

Номер ответа: 12
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #12 Добавлено: 14.11.07 02:02
Да бред это хранить объекты в файле. В файле хранять не объекты, а параметры объекта... а потом при загрузки их востанавливают...

Это мне что-то вспоминается сериализация объектов в пхп.. ну да, там типо можно, но всёравно я считаю это бредом.

Сделай параметры в твоём классе одной переменной или массивом переменных, но своего типа.. и там уже что угодно.. Вообщем, я как и все, склоняюсь к Type.

Ответить

Номер ответа: 13
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #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-сайт: domkratt.com
 Профиль | | #15
Добавлено: 14.11.07 13:54
дык тебе выше пример привели...

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам