Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 05.11.2018
Сообщений: 12

Сбрасываются значения переменных при наследовании

08.11.2018, 12:46. Показов 957. Ответов 8

Студворк — интернет-сервис помощи студентам
Добрый день. Столкнулся с интересной проблемой от которой зависит все.
Есть 3 класса:

Класс 1:
VB.NET
1
2
3
4
5
6
Public Class Variable_Mod
    Protected regL1 As String = ""
    Protected regL2 As String = ""
    Protected regL3 As String = ""
    Protected regL4 As String = ""
End Class
Класс 2:
VB.NET
1
2
3
4
5
6
7
8
9
Public Class c_Query
    Inherits Variable_Mod
    Friend Sub Query_AdminInfo()
        regL1 = dt.Rows(0).Item("Depart_L1").ToString
        regL2 = dt.Rows(0).Item("Depart_L2").ToString
        regL3 = dt.Rows(0).Item("Depart_L3").ToString
        regL4 = dt.Rows(0).Item("Depart_L4").ToString
    End Sub
End Class
Класс 3:
VB.NET
1
2
3
4
5
6
7
8
9
10
Public Class c_WordTabs
    Inherits Variable_Mod
    Public TabsList As New Dictionary(Of String, String)
    Friend Sub Tab()
        TabsList.Add("RegL1", regL1)
        TabsList.Add("RegProps_City__", regL2)
        TabsList.Add("RegProps_Adr__", regL3)
        TabsList.Add("RegProps_Phone__", regL4)
    End Sub
End Class
Когда выполняется процедура из 2 класса, данные в 1 классе остаются заполненными, и не являются значениями по умолчанию (""). Когда начинает выполняться процедура из 3 класса. Значения переменных 1 класса становятся по умолчанию, данные затираются. Как решить эту проблему? Есть ощущение что вся проблема в строке:
VB.NET
1
Inherits Variable_Mod
Еще имеется предположение что я пытаюсь сделать множественное наследование которого в VB нет) Помогите советом как решить проблему)

Добавлено через 44 минуты
И да, забыл добавить как я вызываю эти методы:
VB.NET
1
2
3
4
5
Dim cWordTabs As New c_WordTabs
Dim cQuery As New c_Query
 
cQuery.Query_AdminInfo()
cWordTabs.Tab()
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.11.2018, 12:46
Ответы с готовыми решениями:

Значения переменных сбрасываются при нажатии на кнопку
Доброго времени суток! Пишу симулятор игры BlackJack и столкнулся с проблемой: В процедуре одной из кнопок имеется следующее: ...

При обращении к методу значения переменных сбрасываются на 0
Почему при обращении к методу CalculateTotalPerDiem() значения всех переменных сбрасывается на нуль? class ModelData { ...

Сбрасываются значения переменных в структуре
Доброго времени суток. Есть одна структура. struct { bool AllowInFile; bool AllowInCLI; char * FileName; }...

8
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
08.11.2018, 14:14
Цитата Сообщение от StupidDev Посмотреть сообщение
данные в 1 классе остаются заполненными
Цитата Сообщение от StupidDev Посмотреть сообщение
И да, забыл добавить как я вызываю эти методы:
А где у Вас экземпляры 1-го класса ?
0
0 / 0 / 0
Регистрация: 05.11.2018
Сообщений: 12
08.11.2018, 14:28  [ТС]
Цитата Сообщение от SoftIce Посмотреть сообщение
А где у Вас экземпляры 1-го класса ?
при вызове?
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18279 / 14202 / 5368
Регистрация: 17.03.2014
Сообщений: 28,883
Записей в блоге: 1
08.11.2018, 14:41
StupidDev, наследование здесь ни при чем. Переменные cWordTabs, cQuery это разные экземпляры и их поля это разные переменные. Поэтому изменение в одной переменной никак не отражается на другой.

Добавлено через 1 минуту
В данном коде вобще непонятен смысл наследования. Если опишешь задачу целиком, то можно будет предложить решение.
0
0 / 0 / 0
Регистрация: 05.11.2018
Сообщений: 12
08.11.2018, 14:54  [ТС]
Цитата Сообщение от OwenGlendower Посмотреть сообщение
В данном коде вобще непонятен смысл наследования. Если опишешь задачу целиком, то можно будет предложить решение.
хорошо, постараюсь объяснить)

У меня есть класс, в котором есть только переменные для работы с другими классами (Класс 1), далее есть у меня класс (Класс 2), в котором я выполняю обработку данных и заношу всю полученную инфу в переменные, которые содержаться в Классе 1. Далее мне необходимо из этих данных (которые записаны в Класс 1) составить коллекцию, благодаря которой у меня будет заполняться некий word файл (Класс 3).

В данный момент сохранность данных мне удалось решить благодаря Shared.
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18279 / 14202 / 5368
Регистрация: 17.03.2014
Сообщений: 28,883
Записей в блоге: 1
08.11.2018, 15:04
StupidDev, это описание решения, а не задачи. Зачем тут три класса. Почему бы не сделать один класс с несколькими методами?

Цитата Сообщение от StupidDev Посмотреть сообщение
В данный момент сохранность данных мне удалось решить благодаря Shared.
С большой вероятностью это костыль.
0
0 / 0 / 0
Регистрация: 05.11.2018
Сообщений: 12
08.11.2018, 15:20  [ТС]
Цитата Сообщение от OwenGlendower Посмотреть сообщение
С большой вероятностью это костыль.
Так и есть, потому что ничего путного не придумал)
Цитата Сообщение от OwenGlendower Посмотреть сообщение
StupidDev, это описание решения, а не задачи. Зачем тут три класса. Почему бы не сделать один класс с несколькими методами?
Есть подпрограмма одной большой программы, она работает с документами Word. Суть программы в заполнении документов через закладки в самих документах. Изначально программа была написана чисто на одних модулях с Public правами, и короче не дипломный уровень. Моя задача заключается переделать эту программу до дипломного уровня. Тк там ООП не пахло, пришлось модули переделывать в классы. Тем самым стараясь уложиться в требования. Приходится извращаться( Тупо, но ничего другого нет, это реальная программа с которой работают люди.

А насчет один класс с несколькими методами... Самый большой класс это Класс 2, тк там больше 15 методов. которые по смыслу (обработка данных) собраны одном месте. А вот все остальное разнес по другим.
0
 Аватар для ViterAlex
8951 / 4863 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
08.11.2018, 17:00
Цитата Сообщение от StupidDev Посмотреть сообщение
переделать эту программу до дипломного уровня
Тогда будет полезно в дополнение к ООП прикрутить ещё OpenXML, уйдя от Interop
0
0 / 0 / 0
Регистрация: 05.11.2018
Сообщений: 12
09.11.2018, 08:28  [ТС]
Цитата Сообщение от ViterAlex Посмотреть сообщение
Тогда будет полезно в дополнение к ООП прикрутить ещё OpenXML, уйдя от Interop
Спасибо за предложение, попробую такой еще вариант сделать с файлами.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.11.2018, 08:28
Помогаю со студенческими работами здесь

Ошибка при наследовании с использованием закрытых переменных экземпляров
При изучении наследования с использованием закрытых переменных экземпляров появилась ошибка, относящаяся к строке в файле...

При переходах по формам значения Combobox-ов сбрасываются
Создал 5 форм, на одной форме есть serial port, в другой форме настройка для порта, на следующей форме отправляю команды на порт... Вся...

Сохранение значения переменной при наследовании
Есть ли способ сохранить полученное значение переменной count в дочернем классе B после наследования? Небольшой образец ситуации: ...

Почему при наследовании метода из базового класса получаются одинаковые значения?
столкнулся с такой проблемой. Есть два класса: Player и Dealer, оба наследуют от класса Hand, метод, который записывает в массив две...

Сбрасываются значения компонента option
Добрый вечер, форумчане! Возникла небольшая неприятность при создании простого калькулятора. Имеются три поля для ввода значений, и два...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru