Работа с массивом

Простейшие вопросы в области инженерной разработки
Ответить
Sergey Puzanov
assistant
assistant
Сообщения: 113
Зарегистрирован: 05 ноя 2020, 08:26
Версия LabVIEW: 18, 20.0f1
Благодарил (а): 23 раза
Поблагодарили: 3 раза
Контактная информация:

Работа с массивом

Сообщение Sergey Puzanov »

Добрый день. Есть пара вопросов про организацию и взаимодействие с массивом.
1. Есть кластер с combobox и numeric control (выбор типа аргумента и собственно сам аргумент). Создан массив кластеров. Хотелось бы для при выборе типа аргумента в numeric control задавать свои лимиты на вводимые значения, но я так понимаю, что в массиве это не так просто сделать, или невозможно. Есть какой-то иной вариант это сделать?
2. Другой массив - двумерный, у которого видимый размер ограничен условно 2 строки и 10 столбцов, но столбцов на самом деле больше. Если установить курсор на первый элемент и пользоваться клавишей TAB для перехода к следующему элементу, то после последнего видимого в строке курсор перейдёт на вторую строку. Как заставить нажатием клавиши TAB прокручивать массив сначала до конца строки по числу элементов, а только потом переходить на следующую строку?
Спасибо.
Аватара пользователя
zxc_pavel
adviser
adviser
Сообщения: 242
Зарегистрирован: 02 июн 2016, 12:07
Версия LabVIEW: 15
Благодарил (а): 9 раз
Поблагодарили: 23 раза
Контактная информация:

Re: Работа с массивом

Сообщение zxc_pavel »

1. Так Вы обрабатывайте значения массива - если ввели значение больше (или меньше), чем нужно, то устанавливайте программно границу.
2. Видимо это нельзя сделать. Конкретно запросить номер выделенной ячейки кривыми путями можно, но при скроллинге выбранная ячейка становится не активной и нужно опять ее выбирать. Попробовал - прикладываю код.
Вложения
1304-2.png
1304-2.vi
(16.76 КБ) 64 скачивания
Sergey Puzanov
assistant
assistant
Сообщения: 113
Зарегистрирован: 05 ноя 2020, 08:26
Версия LabVIEW: 18, 20.0f1
Благодарил (а): 23 раза
Поблагодарили: 3 раза
Контактная информация:

Re: Работа с массивом

Сообщение Sergey Puzanov »

zxc_pavel писал(а): 13 апр 2023, 11:34 1. Так Вы обрабатывайте значения массива - если ввели значение больше (или меньше), чем нужно, то устанавливайте программно границу.
Думал только о том, что сразу границы ставить при выборе типа, но эти границы устанавливались у всего столбца контролов, вне зависимости от типа. Но каждый раз при вводе проверять границы в зависимости от типа в этой строке это да, сработает, спасибо!
zxc_pavel писал(а): 13 апр 2023, 11:34 2. Видимо это нельзя сделать. Конкретно запросить номер выделенной ячейки кривыми путями можно, но при скроллинге выбранная ячейка становится не активной и нужно опять ее выбирать. Попробовал - прикладываю код.
Без колдовства в таких вещах точно не обойтись, буду пробовать, благодарю!
Sergey Puzanov
assistant
assistant
Сообщения: 113
Зарегистрирован: 05 ноя 2020, 08:26
Версия LabVIEW: 18, 20.0f1
Благодарил (а): 23 раза
Поблагодарили: 3 раза
Контактная информация:

Re: Работа с массивом

Сообщение Sergey Puzanov »

Всё таки упёрся в проблему с 1 пунктом (добавились новые ограничения), и видимо проще пересмотреть саму структуру, но пока не могу придумать, как реализовать. Необходим массив, представляющий из себя массив аргументов преобразования. Каждый аргумент может быть 3 типов:
изображение_2023-04-17_161813073.png
изображение_2023-04-17_161813073.png (4.74 КБ) 2389 просмотров
Но эту структуру нельзя добавить в массив, так как разные по числу контролов кластеры из-за третьего аргумента. Каким образом можно это реализовать? Спасибо
Artem.spb

Activity Автор
professor
professor
Сообщения: 3391
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 49 раз
Поблагодарили: 172 раза
Контактная информация:

Re: Работа с массивом

Сообщение Artem.spb »

Как не все йогурты одинаково полезны, так и не все интерфейсы легко даются.
Из описанного я могу сочинить только набор независимых кластеров, которые меняются по ходу пьесы. Когда пользователь выбирает тип, поля ввода подстраиваются под него.
Если вам нужен именно "массив", прикрутите скролбар рядом для симуляции перемотки и при его изменении обновляйте содержимое кластеров
Sergey Puzanov
assistant
assistant
Сообщения: 113
Зарегистрирован: 05 ноя 2020, 08:26
Версия LabVIEW: 18, 20.0f1
Благодарил (а): 23 раза
Поблагодарили: 3 раза
Контактная информация:

Re: Работа с массивом

Сообщение Sergey Puzanov »

Решил немного изменить вид представления канала, поэтому будет использоваться строковый контрол, и в зависимости от типа через те же регулярные выражения проводить проверки на правильность ввода. Тогда массив будет возможен и выглядеть будет вполне цивильно. Всем спасибо
Artem.spb

Activity Автор
professor
professor
Сообщения: 3391
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 49 раз
Поблагодарили: 172 раза
Контактная информация:

Re: Работа с массивом

Сообщение Artem.spb »

Не думаю, что это хорошая идея.
У нумерика есть ряд преимуществ, а так вы вешаете на пользователя ненужные сложности по правильному вводу информации.
Sergey Puzanov
assistant
assistant
Сообщения: 113
Зарегистрирован: 05 ноя 2020, 08:26
Версия LabVIEW: 18, 20.0f1
Благодарил (а): 23 раза
Поблагодарили: 3 раза
Контактная информация:

Re: Работа с массивом

Сообщение Sergey Puzanov »

Идея не самая лучшая, но по совокупности "интерфейс-простота реализации", как по мне, самая быстрая и простая. Ограничения на формат ввода будут лишь на канал, остальное всё будет корректироваться по мере ввода символов, для пользователя никаких видимых трудностей не будет.
Artem.spb

Activity Автор
professor
professor
Сообщения: 3391
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 49 раз
Поблагодарили: 172 раза
Контактная информация:

Re: Работа с массивом

Сообщение Artem.spb »

Sergey Puzanov писал(а): 20 апр 2023, 07:59 для пользователя никаких видимых трудностей не будет.
Ну это вы так думаете, спрашивать надо реального пользователя, а не вашу фантазию о нём.
Простой пример, о котором я не задумывался в начале своего программерского пути, а понял только после прочтения умных книг. Раньше программисты считали очень умным сделать кнопку "нажми меня", а при нажатии выдать гневное окно "ну нельзя же нажимать". Пользователь при этом ощущает себя дураком, а никто не любит ощущать себя дураком и в такой момент всякий пользователь проклинает программиста :)

как по мне, самая быстрая и простая
В тех же умных книгах есть ценная мысль: программы должны быть для пользователей, а не программистов.
Реализация должны быть простой для пользователя, а не для вас.

Если я правильно понимаю словесное описание хода ваших мыслей, вы хотите заставить пользователя вводить два числа в строку. При этом в другом режиме будет ввод дробного числа.
Через точку, или запятую? Вы будете обрабатывать региональные настройки, или пользователь должен будет подстраиваться под то, что удобно программисту?
Sergey Puzanov
assistant
assistant
Сообщения: 113
Зарегистрирован: 05 ноя 2020, 08:26
Версия LabVIEW: 18, 20.0f1
Благодарил (а): 23 раза
Поблагодарили: 3 раза
Контактная информация:

Re: Работа с массивом

Сообщение Sergey Puzanov »

Artem.spb писал(а): 20 апр 2023, 13:14 Ну это вы так думаете, спрашивать надо реального пользователя, а не вашу фантазию о нём.
Это вы так думаете, что я так думаю :) Пользователи данного ПО - я и мои коллеги, которые всегда только за удобный и простой интерфейс, и все тонкости, в том числе и некоторые моменты реализации, обговариваются и находится оптимальное для нас, пользователей, решение.

Если я правильно понимаю словесное описание хода ваших мыслей, вы хотите заставить пользователя вводить два числа в строку. При этом в другом режиме будет ввод дробного числа.
Через точку, или запятую? Вы будете обрабатывать региональные настройки, или пользователь должен будет подстраиваться под то, что удобно программисту?
Точки и запятые будут автоматом заменяться на нужный программе символ, пользователю можно вводить то, что ему удобнее/ближе/привычнее.
А про пользователей-дураков - тоже был в их числе, и даже приходилось исправлять кучу чужого кода, лишь бы для конечного потребителя, в том числе и для меня, было меньше неловких и непонятных ситуаций. Да и свои дураки будут знать, как пользоваться ПО, а для чужих документацию напишем :)
Artem.spb

Activity Автор
professor
professor
Сообщения: 3391
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 49 раз
Поблагодарили: 172 раза
Контактная информация:

Re: Работа с массивом

Сообщение Artem.spb »

Sergey Puzanov писал(а): 20 апр 2023, 13:59 а для чужих документацию напишем :)
Ну вот вы фантазируете, что кто-то читает инструкции :)
Sergey Puzanov
assistant
assistant
Сообщения: 113
Зарегистрирован: 05 ноя 2020, 08:26
Версия LabVIEW: 18, 20.0f1
Благодарил (а): 23 раза
Поблагодарили: 3 раза
Контактная информация:

Re: Работа с массивом

Сообщение Sergey Puzanov »

У нас к каждой мелкой программке руководство оператора есть, которое испытывается на подопытных (на соседних отделах), так что его приходится не только читать, а ещё и находить неточности и дорабатывать)
Bovee
interested
interested
Сообщения: 7
Зарегистрирован: 24 май 2023, 22:01
Версия LabVIEW: 2020
Контактная информация:

Re: Работа с массивом

Сообщение Bovee »

Здравствуйте! У меня такая проблема, на фото ниже программа, которая передает запросы по локальной сети на другой компьютер и обратно принимает. Задача состоит в том, чтобы фиксировать время отправления и прибытия запросов. Нужно сформировать какой-то массив, так как количество итераций множество и по результатам построить график. Как можно это реализовать?
Вложения
Снимок.PNG
Снимок.PNG2.PNG
Снимок.PNG2.PNG (7.47 КБ) 2082 просмотра
Artem.spb

Activity Автор
professor
professor
Сообщения: 3391
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 49 раз
Поблагодарили: 172 раза
Контактная информация:

Re: Работа с массивом

Сообщение Artem.spb »

Bovee писал(а): 24 май 2023, 22:14 Здравствуйте! У меня такая проблема, на фото ниже программа,
У вас не такая проблема :)
У вас непонимание потока данных для начала. Верхние два цикла как бы должны работать параллельно, но на самом деле второй стартует только после первого.
Вам нужно разобраться с основами, а потом уже измерять время передачи данных по сети.
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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