Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Visual Basic

Ответ
 
Опции темы
Старый 13.06.2010, 06:48   #1
Лit}{Ъ
ПроЭктировщик
 
Аватар для Лit}{Ъ
 
Регистрация: 24.10.2009
Сообщений: 143
Написано 5 полезных сообщений
(для 7 пользователей)
Смущение Проблемы с переводом

Напрод, я вот пытаюсь перевести прогу с 6 вб на 2010 (из VisualStudio). На данный момент исправленны почти все проблеммы, кроме следующей: Прога что то криво связывается по классам, т.е. (описываю свои действия) Бывшие *.bas модули одзываю *.vb грохаю нафиг "Attribute VB_Name=" в модулях, присоединяю к проекту и окружаю текст каждого модуля сторками Public Class ****(имя модуля) и End Class. Проблемма следующая, из классов корректно везде используются только Типы (бывшие в вб 6.0 Type ныне Structure) и константы. Переменные же, функции и процедуры (Всё Public - классы, и они сами) не читабтся в упор, даже при прописывании ИмяМодуля.Функция (Со Structure именно так и сработало). Подскажите плиз чё делать?
__________________
Гомоморфный образ группы - путь во славу коммунизма - изоморфен фактор группе по ядру гомоморфизма.
(Offline)
 
Ответить с цитированием
Старый 13.06.2010, 10:49   #2
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Проблемы с переводом

Для решения проблемы надо использовать Shared модификатор. Т.к. каласс - это объект, чтобы воспользоваться его функциями - надо либо создать его экземпляр, либо сделать все его методы/поля Shared (общедоступными).

Ключевое слово Shared

т.е. объявлять все эти функции и поля так:
Public Shared Function Func() As Integer
....
End Function

Public Shared FieldName as Integer
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Лit}{Ъ (13.06.2010)
Старый 13.06.2010, 12:46   #3
Лit}{Ъ
ПроЭктировщик
 
Аватар для Лit}{Ъ
 
Регистрация: 24.10.2009
Сообщений: 143
Написано 5 полезных сообщений
(для 7 пользователей)
Хорошо Ответ: Проблемы с переводом

Огромное спасибо ! Я ужепытался классы в Strukture пихать и описывать такую переменную в каждом классе (так функции с прцедурами работали ). Уфф.. Проблемой меньше...
__________________
Гомоморфный образ группы - путь во славу коммунизма - изоморфен фактор группе по ядру гомоморфизма.
(Offline)
 
Ответить с цитированием
Старый 13.06.2010, 12:51   #4
Лit}{Ъ
ПроЭктировщик
 
Аватар для Лit}{Ъ
 
Регистрация: 24.10.2009
Сообщений: 143
Написано 5 полезных сообщений
(для 7 пользователей)
Сообщение Ответ: Проблемы с переводом

Вопрос любознательного человека - Что именно подразумевается под этими ставами?

Сообщение от pax Посмотреть сообщение
создать его экземпляр
Вы имели ввиду тупое копирование функции или что то иное?
__________________
Гомоморфный образ группы - путь во славу коммунизма - изоморфен фактор группе по ядру гомоморфизма.
(Offline)
 
Ответить с цитированием
Старый 13.06.2010, 16:58   #5
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Проблемы с переводом

Я имел ввиду создание объекта:
Class Foo

  Public myField as Integer

End Class

'Другой класс использует первый как экземпляр

Class Boo

  Public myFoo as Foo = new Foo()

  Public Sub SetFooValue( Value as Integer)
       myFoo.myField = Value;
  End Sub

  Public Function GetFooValue() as Integer
       Return myFoo.myField;
  End Function

End Class
Сто лет на бэйсике не писал, так что могу ошибок наделать, но смотрится вроде правильно ))
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Лit}{Ъ (13.06.2010)
Старый 13.06.2010, 21:00   #6
Лit}{Ъ
ПроЭктировщик
 
Аватар для Лit}{Ъ
 
Регистрация: 24.10.2009
Сообщений: 143
Написано 5 полезных сообщений
(для 7 пользователей)
Кстати, я правильно понял, что Public - это значит доступен из всех классов в данном *.vb файле, а Shared доступен из всех *.vb файлов? И Как будет работать Private Shared (если верить мануалу, так можно).

ППЦ. Ошибка "Cannot refer to an instanse member of a class from within a shared mamber initializer without an explicit instanse of the class" - вылазит когда я пытаюсь воспользоватся внутриклассовой функцией (Private) , Что не так? (Внеклассовые работают ОК)

Подскажите есть ли возможность в Structure описать массив фиксированного размера? Если есть то как?
__________________
Гомоморфный образ группы - путь во славу коммунизма - изоморфен фактор группе по ядру гомоморфизма.

Последний раз редактировалось SBJoker, 13.06.2010 в 23:27.
(Offline)
 
Ответить с цитированием
Старый 13.06.2010, 22:45   #7
Hurrit
Мастер
 
Аватар для Hurrit
 
Регистрация: 27.01.2008
Адрес: Россия, СКФО, ЧР, Грозный
Сообщений: 1,144
Написано 578 полезных сообщений
(для 2,207 пользователей)
Ответ: Проблемы с переводом

слушай чувак, не надо так много постов подряд писать, можно же предыдущие изменять
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Лit}{Ъ (14.06.2010)
Старый 14.06.2010, 00:06   #8
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Проблемы с переводом

Public - видимость членов класса внутри и вне класса для его экземпляров.
Private - видимо тока внутри класса.
Shared - объявление членов для всех экземпляров, т.е. общих.

Например допустим что у нас есть класс, описывающий данные отдельного человека:
Public Class Person
  Public Name As String
  Public Email As String
End Class
Можно создать два экземпляра для двух разных людей и не Shared поля будут предоставлять различные данные для каждого из них:

Dim Person1 As Person = New Person ()
Person1.Name = "Лit}{Ъ"
Person1.Email = "Лit}{Ъ@blabla.ru"

Dim Person2 As Person = New Person ()
Person2.Name = "PAX"
Person2.Email = "[email protected]"
Допустим теперь, что класс Person имеет общедоступный метод, к которому можно обращаться без создания экземпляров этого класса. Например представим, что у нас есть база данных с уже сохраненными этими двумя людьми, описанными выше. И есть метод, который из базы данных может по электронному адресу человека создать экземпляр записи базы данных со всеми заполненными полями. Выглядело бы это следующим образом:

Public Class Person
  Public Name As String
  Public Email As String
  Public Shared Function GetPersonFromDB(email As String) As Person
     Dim Person1 As Person = New Person ()
     ' далее поиск по базе данных
     '...
     ' назначение полей
     Person1.Name = dataRow["Name"].ToString()
     Person1.Email = dataRow["Email"].ToString()
     Return Person1 
  End Function
End Class

А использование уже где-то из вне можно было бы выполнить следующим образом:
Dim Person1 As Person = Person.GetPersonFromDB("Лit}{Ъ@blabla.ru")
Dim Person2 As Person = Person.GetPersonFromDB("[email protected]")
Т.е. работать уже с функцией самого класса, а не с его экземпляром.

Надеюсь объяснить смог )))
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Лit}{Ъ (14.06.2010)
Старый 14.06.2010, 06:49   #9
Лit}{Ъ
ПроЭктировщик
 
Аватар для Лit}{Ъ
 
Регистрация: 24.10.2009
Сообщений: 143
Написано 5 полезных сообщений
(для 7 пользователей)
Смущение Ответ: Проблемы с переводом

Сообщение от Hurrit Посмотреть сообщение
слушай чувак, не надо так много постов подряд писать, можно же предыдущие изменять
Сори... Учту
__________________
Гомоморфный образ группы - путь во славу коммунизма - изоморфен фактор группе по ядру гомоморфизма.
(Offline)
 
Ответить с цитированием
Старый 01.07.2010, 16:30   #10
Лit}{Ъ
ПроЭктировщик
 
Аватар для Лit}{Ъ
 
Регистрация: 24.10.2009
Сообщений: 143
Написано 5 полезных сообщений
(для 7 пользователей)
Смущение Ответ: Проблемы с переводом

Ещё одина прозьба. Если не сложно - пожалуйста напишите аналог следующего текста.
Open "C:\1.txt" for input as #1
input #1, a
input #1, b
Close #1
Зарание сенкаса!
__________________
Гомоморфный образ группы - путь во славу коммунизма - изоморфен фактор группе по ядру гомоморфизма.
(Offline)
 
Ответить с цитированием
Старый 01.07.2010, 16:40   #11
SBJoker
Злобный Админ
 
Аватар для SBJoker
 
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений
(для 9,330 пользователей)
Ответ: Проблемы с переводом

неплохо бы указывать на какой вам язык перевести
Чисто алгоритмически:
Открыть файл "C:\1.txt" для чтения с идентификатором 1 (хотя это быдлокод ппц какой)
прочитать из файла значение в переменную a (от типа переменной будет зависеть число прочитаных байт и интерпретация их)
прочитать из файла значение в переменную b
закрыть файл
__________________
(Offline)
 
Ответить с цитированием
Старый 01.07.2010, 18:33   #12
Лit}{Ъ
ПроЭктировщик
 
Аватар для Лit}{Ъ
 
Регистрация: 24.10.2009
Сообщений: 143
Написано 5 полезных сообщений
(для 7 пользователей)
Ответ: Проблемы с переводом

Я не в том смысле! На русском я и так знаю. Как это звучит на VB 2010?

Спустя некоторое время...

Всё, решение найдено, на случай если кто пойдёт по моим стопам - код следующий.
Microsoft.VisualBasic.FileOpen(1, "C:\1.txt", OpenAccess.Read)
Microsoft.VisualBasic.Input(1, a)
Microsoft.VisualBasic.Input(1, b)
Microsoft.VisualBasic.FileClose(1)

Кста, можно сделать так чтобы он не ругался на строку
"With Microsoft.VisualBasic"? Геморно каждый раз писать...

И ещё - вопрос к Joker. Почему быдлокод то?
__________________
Гомоморфный образ группы - путь во славу коммунизма - изоморфен фактор группе по ядру гомоморфизма.
(Offline)
 
Ответить с цитированием
Старый 02.07.2010, 00:27   #13
SBJoker
Злобный Админ
 
Аватар для SBJoker
 
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений
(для 9,330 пользователей)
Ответ: Проблемы с переводом

Быдло код потому что в строке открытия файла прописан хендл открытого файла жестко, так делать нельзя может так случится что не будет он доступен.
Для получения валидного хендла файла есть функция h = FreeFile
Которая занесёт в переменную h свободный id файла.
__________________
(Offline)
 
Ответить с цитированием
Старый 02.07.2010, 08:24   #14
Лit}{Ъ
ПроЭктировщик
 
Аватар для Лit}{Ъ
 
Регистрация: 24.10.2009
Сообщений: 143
Написано 5 полезных сообщений
(для 7 пользователей)
Сообщение Ответ: Проблемы с переводом

Ещё один вопрос - Чем OpenAcces.Read отличается от OpenMode.Input (в случае чтения файлов)?
__________________
Гомоморфный образ группы - путь во славу коммунизма - изоморфен фактор группе по ядру гомоморфизма.
(Offline)
 
Ответить с цитированием
Старый 02.07.2010, 10:39   #15
SBJoker
Злобный Админ
 
Аватар для SBJoker
 
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений
(для 9,330 пользователей)
Ответ: Проблемы с переводом

Блин ты на каком языке пишешь для начала? Узать костыль совместимости со старым VB это верх идиотизма при наличии прекрасного BinaryReader.

Отличие в том что разрешениена чтение почти всегда гарантировано получишь у системы в вот на Чтение/Запись могут и отказать.
__________________
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com