Проблемы с переводом
Напрод, я вот пытаюсь перевести прогу с 6 вб на 2010 (из VisualStudio). На данный момент исправленны почти все проблеммы, кроме следующей: Прога что то криво связывается по классам, т.е. (описываю свои действия) Бывшие *.bas модули одзываю *.vb грохаю нафиг "Attribute VB_Name=" в модулях, присоединяю к проекту и окружаю текст каждого модуля сторками Public Class ****(имя модуля) и End Class. Проблемма следующая, из классов корректно везде используются только Типы (бывшие в вб 6.0 Type ныне Structure) и константы. Переменные же, функции и процедуры (Всё Public - классы, и они сами) не читабтся в упор, даже при прописывании ИмяМодуля.Функция (Со Structure именно так и сработало). Подскажите плиз чё делать? :SOS:
|
Ответ: Проблемы с переводом
Для решения проблемы надо использовать Shared модификатор. Т.к. каласс - это объект, чтобы воспользоваться его функциями - надо либо создать его экземпляр, либо сделать все его методы/поля Shared (общедоступными).
Ключевое слово Shared т.е. объявлять все эти функции и поля так: Код:
Public Shared Function Func() As Integer |
Ответ: Проблемы с переводом
Огромное спасибо :super: ! Я ужепытался классы в Strukture пихать и описывать такую переменную в каждом классе (так функции с прцедурами работали:-) ). Уфф.. Проблемой меньше...
|
Ответ: Проблемы с переводом
Вопрос любознательного человека - Что именно подразумевается под этими ставами?
Цитата:
|
Ответ: Проблемы с переводом
Я имел ввиду создание объекта:
Код:
Class Foo |
Кстати, я правильно понял, что 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 описать массив фиксированного размера? Если есть то как? |
Ответ: Проблемы с переводом
|
Ответ: Проблемы с переводом
Public - видимость членов класса внутри и вне класса для его экземпляров.
Private - видимо тока внутри класса. Shared - объявление членов для всех экземпляров, т.е. общих. Например допустим что у нас есть класс, описывающий данные отдельного человека: Код:
Public Class Person Код:
Dim Person1 As Person = New Person () Код:
Public Class Person А использование уже где-то из вне можно было бы выполнить следующим образом: Код:
Dim Person1 As Person = Person.GetPersonFromDB("Лit}{Ъ@blabla.ru") Надеюсь объяснить смог ))) |
Ответ: Проблемы с переводом
Цитата:
|
Ответ: Проблемы с переводом
Ещё одина прозьба. Если не сложно - пожалуйста напишите аналог следующего текста.
Open "C:\1.txt" for input as #1 input #1, a input #1, b Close #1 Зарание сенкаса! |
Ответ: Проблемы с переводом
неплохо бы указывать на какой вам язык перевести ;)
Чисто алгоритмически: Открыть файл "C:\1.txt" для чтения с идентификатором 1 (хотя это быдлокод ппц какой) прочитать из файла значение в переменную a (от типа переменной будет зависеть число прочитаных байт и интерпретация их) прочитать из файла значение в переменную b закрыть файл |
Ответ: Проблемы с переводом
Я не в том смысле! На русском я и так знаю. Как это звучит на 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. Почему быдлокод то? |
Ответ: Проблемы с переводом
Быдло код потому что в строке открытия файла прописан хендл открытого файла жестко, так делать нельзя может так случится что не будет он доступен.
Для получения валидного хендла файла есть функция h = FreeFile Которая занесёт в переменную h свободный id файла. |
Ответ: Проблемы с переводом
Ещё один вопрос - Чем OpenAcces.Read отличается от OpenMode.Input (в случае чтения файлов)?
|
Ответ: Проблемы с переводом
Блин ты на каком языке пишешь для начала? Узать костыль совместимости со старым VB это верх идиотизма при наличии прекрасного BinaryReader.
Отличие в том что разрешениена чтение почти всегда гарантировано получишь у системы в вот на Чтение/Запись могут и отказать. |
Часовой пояс GMT +4, время: 09:43. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot