Out обратно в класс

Простейшие вопросы в области инженерной разработки
Ответить
Аватара пользователя
FireFly

Activity Black
expert
expert
Сообщения: 1321
Зарегистрирован: 25 апр 2009, 08:58
Награды: 2
Версия LabVIEW: 2014
Откуда: Санкт-Петербург
Поблагодарили: 1 раз

Out обратно в класс

Сообщение FireFly »

Если какой-то элемент класса используется в функции имеющей In и Out. В каких случаях надо Out заводить обратно в класс, а в каких можно его проигнорировать (см. картинки)?
Из собственного опыта - можно обратно не заводить DAQmx task, VISA, очереди, refnum открытых файлов, reference на индикаторы и контролы (главное их при выходе из программы тоже закрыть).
Зато когда работал с БД пока я не стал заводить Out обратно у меня были сплошные ошибки.
Кто что скажет?
Вложения
s1.PNG
s1.PNG (4.33 КБ) 2789 просмотров
s2.PNG
s2.PNG (3.87 КБ) 2789 просмотров
Иногда лучше молчать и слыть идиотом, чем заговорить и развеять все сомнения.
Аватара пользователя
Konstantin Sumenko

Activity Bronze
expert
expert
Сообщения: 1439
Зарегистрирован: 17 июл 2008, 12:20
Награды: 2
Версия LabVIEW: 2010
Откуда: Moscow
Поблагодарили: 1 раз
Контактная информация:

Re: Out обратно в класс.

Сообщение Konstantin Sumenko »

С БД не работал. Ссылочные типы можно не заводить. Если объект класса дальше используется по значению, то конечно же заводить.
Аватара пользователя
FireFly

Activity Black
expert
expert
Сообщения: 1321
Зарегистрирован: 25 апр 2009, 08:58
Награды: 2
Версия LabVIEW: 2014
Откуда: Санкт-Петербург
Поблагодарили: 1 раз

Re: Out обратно в класс

Сообщение FireFly »

Да, конечно я имел ввиду ссылочные объекты (DAQmx task, VISA, очереди, refnum открытых файлов, reference на индикаторы и контролы). Никогда не заводил их обратно в класс, т.к. если заводить - блок-диаграмма становится менее упорядоченной, переполненной проводами.
Но вот пока все выходы функций Database Toolkit обратно в клас не завёл - наблюдал ошибки.
Как понять какой объект перед нами - чисто ссылочный или использующий значения?
Вот например refnum открытых файлов - чисто ссылочный объект?
Иногда лучше молчать и слыть идиотом, чем заговорить и развеять все сомнения.
Аватара пользователя
Konstantin Sumenko

Activity Bronze
expert
expert
Сообщения: 1439
Зарегистрирован: 17 июл 2008, 12:20
Награды: 2
Версия LabVIEW: 2010
Откуда: Moscow
Поблагодарили: 1 раз
Контактная информация:

Re: Out обратно в класс

Сообщение Konstantin Sumenko »

refnum открытых файлов чисто ссылочный. Правда стоить сделать оговорку: LV refnum'ы это само собой не просто указатель на объект.

P.S: самый простой способ понять объект ссылочный или нет- заглянуть в палитру refnum controls :D
А так каждый объект имеет дескриптор типа (у refnum они 0x00 - 0x19 и еще дальше какие-то типа 0x1B)
Аватара пользователя
mzu2006

Professionalism Tutorials Black
doctor
doctor
Сообщения: 2456
Зарегистрирован: 16 авг 2008, 02:12
Награды: 3
Версия LabVIEW: 7.1 10 11 12
Откуда: St-Petersburg (RU), Phila, Boston, Washington DC
Контактная информация:

Re: Out обратно в класс

Сообщение mzu2006 »

Вопрос скорее не про классы, а про reference -ы. НЯЗ, ни одна из :vi:, принимающих Refnum и выдающих dup refnum не меняет значение refnum.
Т.е. если функция не подставляет новый объект (например заменяет одну очередь на другую), то можно не заводить refnum обратно в класс.

Большинство refnum вроде просто 32-битное число (как в 64-битной LV - не смотрел).
Аватара пользователя
FireFly

Activity Black
expert
expert
Сообщения: 1321
Зарегистрирован: 25 апр 2009, 08:58
Награды: 2
Версия LabVIEW: 2014
Откуда: Санкт-Петербург
Поблагодарили: 1 раз

Re: Out обратно в класс

Сообщение FireFly »

Что такое НЯЗ?
Иногда лучше молчать и слыть идиотом, чем заговорить и развеять все сомнения.
Аватара пользователя
mzu2006

Professionalism Tutorials Black
doctor
doctor
Сообщения: 2456
Зарегистрирован: 16 авг 2008, 02:12
Награды: 3
Версия LabVIEW: 7.1 10 11 12
Откуда: St-Petersburg (RU), Phila, Boston, Washington DC
Контактная информация:

Re: Out обратно в класс

Сообщение mzu2006 »

НЯЗ = Насколько Я Знаю = AFAIK. :haha:
Ответить

Вернуться в «Для чайников»