forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Visual Basic (http://forum.boolean.name/forumdisplay.php?f=62)
-   -   Проблемы с переводом (http://forum.boolean.name/showthread.php?t=12664)

Лit}{Ъ 07.10.2010 15:58

Ответ: Проблемы с переводом
 
У меня есть программа. Движок на вб 6.0, там больше 2000 строк. Я хочу перевести его на более современный язык. Это последняя проблема (из тех что обнаружены). В движке очень активно используются типы (например чтобы не заводить массивы XNpc YNpc и т.д. я использую тип NPC с характеристикаим Х и Y) это очень удобная функция(Как нам объясняли это и есть оьъекно ориентированное прогаммирование) очень жаль что её так изнахратили в 2010.

Хотя, я тут подумал - что если создать одну большую процедуру и прогемороиться описать в ней выделение памяти всем массивам?(риторический вопрос)

Другое дело - в 2010 есть ну очень хорошая функция - динамические массивы. Как быть с ними - выделить память N -элементам, а дальше выделять по мере увеличения размера?

h1dd3n 07.10.2010 17:25

Ответ: Проблемы с переводом
 
Цитата:

Сообщение от Лit}{Ъ (Сообщение 164007)
очень жаль что её так изнахратили в 2010.

Каво изнахратили? Создай класс Player с полями int X, int Y и создавай свои объекты как и раньше (хотя думаю в 2010 все так и осталось как раньше просто ты чего-то напутал).
Цитата:

Хотя, я тут подумал - что если создать одну большую процедуру и прогемороиться описать в ней выделение памяти всем массивам?(риторический вопрос)
Выделяй память массивам в конструкторе.
Вот то что ты хочешь (vb .net не знаю это с шарпа конвертировано):
Код:

Imports System.Collections.Generic
Imports System.Linq
Imports System.Text
Public Class Program
    Public Shared Sub Main(ByVal args As String())
        Dim somep As New Player(20, 50)
        Console.Read()
    End Sub
End Class
Public Class Player
    Public Items As Integer()
    Public Sub New(ByVal pX As Integer, ByVal pY As Integer)
        Items = New Integer(99) {}
        X = pX
        Y = pY
    End Sub
    Public X As Integer
    Public Y As Integer
End Class


pax 07.10.2010 20:10

Ответ: Проблемы с переводом
 
Цитата:

Сообщение от Лit}{Ъ (Сообщение 164007)
очень жаль что её так изнахратили в 2010.

Ну и выражение...

Пользоваться конструкторами для классов - это один из способов лучше контролировать свою программу и выделение памяти. То что запретили создавать массивы в структурах с заранее заданными границами - это не проблема. Для программиста написать лишние три строчки кода инициализации массива - это как два байта переслать.

Вот пример с отложенной инициализацией массивов внутри структуры. При первом обращении к массиву через свойство он будет создан. Переменная хранящая массив скрыта.
PHP код:

Public Structure A
        
Private _b() As Long

        
Public ReadOnly Property B() As Long()
            
Get
                
If _b Is Nothing Then
                    Dim c
(100) As Long
                    _b 
c
                End 
If
                Return 
_b
            End Get
        End Property
    End Structure

    
Public Shared C(100) As 



Часовой пояс GMT +4, время: 04:57.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot