|
13.06.2010, 06:48
|
#1
|
ПроЭктировщик
Регистрация: 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
|
Unity/C# кодер
Регистрация: 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
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
13.06.2010, 12:46
|
#3
|
ПроЭктировщик
Регистрация: 24.10.2009
Сообщений: 143
Написано 5 полезных сообщений (для 7 пользователей)
|
Ответ: Проблемы с переводом
Огромное спасибо ! Я ужепытался классы в Strukture пихать и описывать такую переменную в каждом классе (так функции с прцедурами работали ). Уфф.. Проблемой меньше...
__________________
Гомоморфный образ группы - путь во славу коммунизма - изоморфен фактор группе по ядру гомоморфизма.
|
(Offline)
|
|
13.06.2010, 12:51
|
#4
|
ПроЭктировщик
Регистрация: 24.10.2009
Сообщений: 143
Написано 5 полезных сообщений (для 7 пользователей)
|
Ответ: Проблемы с переводом
Вопрос любознательного человека - Что именно подразумевается под этими ставами?
Сообщение от pax
создать его экземпляр
|
Вы имели ввиду тупое копирование функции или что то иное?
__________________
Гомоморфный образ группы - путь во славу коммунизма - изоморфен фактор группе по ядру гомоморфизма.
|
(Offline)
|
|
13.06.2010, 16:58
|
#5
|
Unity/C# кодер
Регистрация: 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
Сто лет на бэйсике не писал, так что могу ошибок наделать, но смотрится вроде правильно ))
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
13.06.2010, 21:00
|
#6
|
ПроЭктировщик
Регистрация: 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
|
Мастер
Регистрация: 27.01.2008
Адрес: Россия, СКФО, ЧР, Грозный
Сообщений: 1,144
Написано 578 полезных сообщений (для 2,207 пользователей)
|
Ответ: Проблемы с переводом
слушай чувак, не надо так много постов подряд писать, можно же предыдущие изменять
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
14.06.2010, 00:06
|
#8
|
Unity/C# кодер
Регистрация: 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]")
Т.е. работать уже с функцией самого класса, а не с его экземпляром.
Надеюсь объяснить смог )))
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
14.06.2010, 06:49
|
#9
|
ПроЭктировщик
Регистрация: 24.10.2009
Сообщений: 143
Написано 5 полезных сообщений (для 7 пользователей)
|
Ответ: Проблемы с переводом
Сообщение от Hurrit
слушай чувак, не надо так много постов подряд писать, можно же предыдущие изменять
|
__________________
Гомоморфный образ группы - путь во славу коммунизма - изоморфен фактор группе по ядру гомоморфизма.
|
(Offline)
|
|
01.07.2010, 16:30
|
#10
|
ПроЭктировщик
Регистрация: 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
|
Злобный Админ
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений (для 9,330 пользователей)
|
Ответ: Проблемы с переводом
неплохо бы указывать на какой вам язык перевести
Чисто алгоритмически:
Открыть файл "C:\1.txt" для чтения с идентификатором 1 (хотя это быдлокод ппц какой)
прочитать из файла значение в переменную a (от типа переменной будет зависеть число прочитаных байт и интерпретация их)
прочитать из файла значение в переменную b
закрыть файл
__________________
|
(Offline)
|
|
01.07.2010, 18:33
|
#12
|
ПроЭктировщик
Регистрация: 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
|
Злобный Админ
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений (для 9,330 пользователей)
|
Ответ: Проблемы с переводом
Быдло код потому что в строке открытия файла прописан хендл открытого файла жестко, так делать нельзя может так случится что не будет он доступен.
Для получения валидного хендла файла есть функция h = FreeFile
Которая занесёт в переменную h свободный id файла.
__________________
|
(Offline)
|
|
02.07.2010, 08:24
|
#14
|
ПроЭктировщик
Регистрация: 24.10.2009
Сообщений: 143
Написано 5 полезных сообщений (для 7 пользователей)
|
Ответ: Проблемы с переводом
Ещё один вопрос - Чем OpenAcces.Read отличается от OpenMode.Input (в случае чтения файлов)?
__________________
Гомоморфный образ группы - путь во славу коммунизма - изоморфен фактор группе по ядру гомоморфизма.
|
(Offline)
|
|
02.07.2010, 10:39
|
#15
|
Злобный Админ
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений (для 9,330 пользователей)
|
Ответ: Проблемы с переводом
Блин ты на каком языке пишешь для начала? Узать костыль совместимости со старым VB это верх идиотизма при наличии прекрасного BinaryReader.
Отличие в том что разрешениена чтение почти всегда гарантировано получишь у системы в вот на Чтение/Запись могут и отказать.
__________________
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 01:50.
|