File Dialog Express VI ошибка 43, но не 43

Обсуждение, связанное с разработкой ПО верхнего уровня
Artem.spb

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

File Dialog Express VI ошибка 43, но не 43

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

Большая программа, поэтому всю выложить не могу.
Есть File Dialog Express VI, который рекомендуется вместо того VI, который запрятан внутрь этого Express VI, не суть.

В общем, проблема такая.
Программе иногда надо спросить у пользователя файл (что открыть, куда сохранить и пр.). Использую этот Express VI. И всё хорошо, пока не случится что-то странное.
Окно выбора перестаёт появляться, а функция сразу выдаёт ошибку 43 ("пользователь нажал отмену"). Но пользователь ничего не нажимал, потому что окно не появлялось.
Более того, с этого момента окно больше не появится до перезагрузки LV/exe. Вот как это выглядит:
W29nzWMvJTo

И ещё до кучи: с этого момента выбор файла соверешенно не работает: попытался сделать этот снипет, окно тоже не выскочило.
ExpressVI.png
Кто-нибудь сталкивался? знаете как чинить или обойти?
LV15, менять крайне нежелательно.
Blackman

Activity
leader
leader
Сообщения: 932
Зарегистрирован: 17 янв 2016, 15:02
Награды: 1
Версия LabVIEW: 6.1,8.5,20

Re: File Dialog Express VI ошибка 43, но не 43

Сообщение Blackman »

Если для создания путей файлов используются функции форматирования строк, проверяйте сформированные строки на зарезервированные символы (коды символов) и запрещенные первый и последний символы в имени файла. Так же убедитесь, что не используются зарезервированные слова (строки), например CON :haha: .

filename limitations
https://en.wikipedia.org/wiki/Filename
Naming Conventions
https://docs.microsoft.com/ru-ru/window ... onventions
Artem.spb

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

Re: File Dialog Express VI ошибка 43, но не 43

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

Всё корректное.
Конкретно в этом примере, в базе лежит путь по которому файл лежал раньше. Если прога его не находит (файл перенесли), она спрашивает, где он. Все имена корректные.
Более того, вот такой код
save2.png
Часто становится первенцем, уже на нём выдаёт 43 и после этого ничего не работает. Это разные режимы работы программы, совершенно разные участки кода.
Аватара пользователя
Kosist

Activity Gold
expert
expert
Сообщения: 1236
Зарегистрирован: 21 фев 2011, 23:44
Награды: 2
Версия LabVIEW: 2013-2020
Благодарил (а): 23 раза
Поблагодарили: 30 раз
Контактная информация:

Re: File Dialog Express VI ошибка 43, но не 43

Сообщение Kosist »

Попробуйте отдебажить эту експресс- :vi: как обычную :vi:-ку (конвертируйте, и посмотрите что там происходит). Т.к. сейчас мне не верится, что путь действительно правильный - ведь задается лишь имя файла. А дефолтная директория для файла правильная? Как Вы проверили абсолютный путь к файлу, который обрабатывает функция?
На видео видно, что, например, диалоговое окно для автоматической обработки ошибки - кастомное. Это ведь Вы его переделали? Может, "зацепили" что-то еще, и тепер какую-то встроенную функцию "глючит"?
Мы делили апельсин - много наших полегло...
Artem.spb

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

Re: File Dialog Express VI ошибка 43, но не 43

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

Kosist писал(а):На видео видно, что, например, диалоговое окно для автоматической обработки ошибки - кастомное. Это ведь Вы его переделали? Может, "зацепили" что-то еще, и тепер какую-то встроенную функцию "глючит"?
оно не кастомное, оно более чем стандартное (обычный dialog с двумя кнопками). Если в итоге работы этой функции всё же случается баг, то программа просто сообщает пользователю, что всё пропало.

а логер сейчас делаю для тотальной слежки за функцией.
Artem.spb

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

Re: File Dialog Express VI ошибка 43, но не 43

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

Вынул нутро express VI, сдела vi, который полностью отчитывается о проделанной работе. Вот две последние записи.

Код: Выделить всё

0:42:16 20.05.2019; prompt: ; selMode: new or existing file; path: <Not A Path>; defname: ; errIn: FALSE; code: 0; sourse : ; selPath: C:\Users\User\Desktop\22.png; cancel: FALSE; pattern: *.png; Plabel: ; errOut: FALSE; code: 0; sourse : ; chain: file_dialog.vi -> save_control_image.vi -> data_analise_trecks3D.vi -> data_analise_trecks3D.vi.ACBRProxyCaller.E7E00116
; dt: 3,29

0:42:50 20.05.2019; prompt: Программа не нашла файл "camera1[2018-10-09(13-28-20)_2018-10-09(13-46-20)].avi".
Укажите, где он сейчас располагается; selMode: existing file; path: <Not A Path>; defname: camera1[2018-10-09(13-28-20)_2018-10-09(13-46-20)].avi; errIn: FALSE; code: 0; sourse : ; selPath: <Not A Path>; cancel: TRUE; pattern: ; Plabel: ; errOut: TRUE; code: 43; sourse : file_dialog.vi->correct_check_and_ask_file.vi->corrects.vi->corrects.vi.ACBRProxyCaller.E8C0010E
.ACBRProxyCaller.E8C0010E; chain: file_dialog.vi -> correct_check_and_ask_file.vi -> corrects.vi -> corrects.vi.ACBRProxyCaller.E8C0010E
; dt: 0,01
1) пользователь (я) выбрал для экспорта файл C:\Users\User\Desktop\22.png, заняло это 3,2с
2) программа не нашла файл camera1[2018-10-09(13-28-20)_2018-10-09(13-46-20)].avi и "спросила", где он. И за 0,01с пользователь как бы отказался выбирать.

возможно дело в связке с vision, потому что воспроизвести подобный глюк вне полной проги я не могу. Например, снипет из моего первого поста сам пос себе работает без проблем, как бы я над ним ни изголялся с неправильными именами и отменами выбора. Оно всё равно выскакивает.
Аватара пользователя
Kosist

Activity Gold
expert
expert
Сообщения: 1236
Зарегистрирован: 21 фев 2011, 23:44
Награды: 2
Версия LabVIEW: 2013-2020
Благодарил (а): 23 раза
Поблагодарили: 30 раз
Контактная информация:

Re: File Dialog Express VI ошибка 43, но не 43

Сообщение Kosist »

Artem.spb писал(а):оно не кастомное, оно более чем стандартное (обычный dialog с двумя кнопками). Если в итоге работы этой функции всё же случается баг, то программа просто сообщает пользователю, что всё пропало.
А, я не заметил, что окно появляется в самом конце, что это не автоматическая обработка ошибок...
Мы делили апельсин - много наших полегло...
Аватара пользователя
Kosist

Activity Gold
expert
expert
Сообщения: 1236
Зарегистрирован: 21 фев 2011, 23:44
Награды: 2
Версия LabVIEW: 2013-2020
Благодарил (а): 23 раза
Поблагодарили: 30 раз
Контактная информация:

Re: File Dialog Express VI ошибка 43, но не 43

Сообщение Kosist »

Я бы изменил алгоритм. Вначале проверяйте, существует ли файл (Check if File or Folder Exists.vi), и не пустой ли путь - а уже потом открывайте окно для выбора файла. Может, так можно будет избежать этот "глюк".
Мы делили апельсин - много наших полегло...
Artem.spb

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

Re: File Dialog Express VI ошибка 43, но не 43

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

Я именно так и делаю.
Если нужно открыть файл. проверяю его наличие. Если файла нет, то спрашиваю, где он. Если есть, то открываю сразу.
Если же нужно что-то сохранить, то сразу спрашиваю, куда.

И пустой путь не мешает - много раз вызывал этот диалог со всеми пустыми входами.

Есть какая-то мелочь, которую я упускаю.
Аватара пользователя
Vitekkz88

Activity Silver Автор
expert
expert
Сообщения: 1100
Зарегистрирован: 21 янв 2014, 15:45
Награды: 3
Версия LabVIEW: 12,13,14
Откуда: Томск
Контактная информация:

Re: File Dialog Express VI ошибка 43, но не 43

Сообщение Vitekkz88 »

И пустой путь не мешает - много раз вызывал этот диалог со всеми пустыми входами.
Вы пробовали собирать логику без использования Express.vi?
Могу предложить попробовать в явном виде достать блок File Dialog.vi и проверить работу на нём, либо собрать логику из обычных блоков по работе с файлами. Возможно попробовать использовать отличный от текущего Select Mode. У Вас там было что-то про использование Vision. Пробуйте скрыть Vision-блоки в общей программе и проверять. Express dialog у вас запрятан в несколько subVI, вложенность 3. Попробуйте поднять его выше и так же проверить. Это всё фокусы, но и сама ситуация странная. Ну и константу на путь создайте. Диалог откроется в любом случае, а нам -1 из вариантов возможных проблем.
Вложения
Test.png
Инженер - это открыто светящийся интеллект, свободный и не обидный юмор, это легкость и широта мысли...Это воспитанность, тонкость вкусов, хорошая речь, плавно согласованная и без сорных словечек...
-А. И. Солженицын
Artem.spb

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

Re: File Dialog Express VI ошибка 43, но не 43

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

Продолжаю развлекаться
Вы пробовали собирать логику без использования Express.vi?
Могу предложить попробовать в явном виде достать блок File Dialog.vi и проверить работу на нём, либо собрать логику из обычных блоков по работе с файлами.
один из первых тестов. Вытащил самое нутро (которым типа нельзя пользоваться). Не помогло.
Возможно попробовать использовать отличный от текущего Select Mode.
мне нужно или новый файл для экспорта результатов, или существующий для открытия видео. Другие режимы не пойдут.
У Вас там было что-то про использование Vision. Пробуйте скрыть Vision-блоки в общей программе и проверять.
пошёл в обратную сторону. Работает без проблем. Если быть точным, ошибка не появилась в пределах времени "кликал пока не надоело".
fd2.png
Express dialog у вас запрятан в несколько subVI, вложенность 3. Попробуйте поднять его выше и так же проверить. Это всё фокусы, но и сама ситуация странная.
тяжко. Он гораздо дальше чем на 3 уровня. После проверки Vision (видимо, отпало), начал грешить на subpanel. Потестил. Тоже не виноваты.
Ну и константу на путь создайте. Диалог откроется в любом случае, а нам -1 из вариантов возможных проблем.
Добавил проверку. Если путь кривой, подаю c:. Не помогло.
Аватара пользователя
Kosist

Activity Gold
expert
expert
Сообщения: 1236
Зарегистрирован: 21 фев 2011, 23:44
Награды: 2
Версия LabVIEW: 2013-2020
Благодарил (а): 23 раза
Поблагодарили: 30 раз
Контактная информация:

Re: File Dialog Express VI ошибка 43, но не 43

Сообщение Kosist »

А у Вас есть возможность сбросить пример в связке с Vision?
Также, а если собрать екзешник - проблема присутствует?
Мы делили апельсин - много наших полегло...
Artem.spb

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

Re: File Dialog Express VI ошибка 43, но не 43

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

Kosist писал(а):А у Вас есть возможность сбросить пример в связке с Vision?
это и есть он.
fd2.png
Есть ещё предположение, что именно индикатор vision всё портит, но нет времени проверять.
Сейчас просто делаю так, чтобы файлы сами знали, куда сохраняться. Иначе тяжело работать пользователям. Эксперименты продолжу позже

Весь проект ~300 функций, раскрывать не готов. А выделять тестовый кусок опять же долго.
Также, а если собрать екзешник - проблема присутствует?
она в exe быстрее проявляется. 2-3 диалога и всё. Я при отладке в 2-3 раза дольше жду, когда появится. Иногда даже начинаю думать, что наконец-то, починил.
Аватара пользователя
Kosist

Activity Gold
expert
expert
Сообщения: 1236
Зарегистрирован: 21 фев 2011, 23:44
Награды: 2
Версия LabVIEW: 2013-2020
Благодарил (а): 23 раза
Поблагодарили: 30 раз
Контактная информация:

Re: File Dialog Express VI ошибка 43, но не 43

Сообщение Kosist »

Ваш пример у меня работает без проблем...
Любопытная деталь. Тестировал свой код, совсем другой функционал чем у Вас. Но, внутри одной из виайки тоже используется File Dialog виайка. И когда я запустил код на cRIO, то тоже получил на выходе этой функции ошибку 43. Т.к. на cRIO диалоговые окна не поддерживаются (узлы свойств и методы, и т.д.). Т.е. виайка не могла открыть диалоговое окно, и выбросила ошибку 43... Но такое поведение происходит потом всегда, а в Вашем же случае - время от времени... Плюс ко всему, Ваша программа исполняется на Windows, проблем по идее не должно было бы быть...
Мы делили апельсин - много наших полегло...
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 126 раз
Контактная информация:

Re: File Dialog Express VI ошибка 43, но не 43

Сообщение dadreamer »

Artem.spb писал(а):один из первых тестов. Вытащил самое нутро (которым типа нельзя пользоваться). Не помогло.
Если нативный File Dialog выдаёт ошибку, можно попробовать спуститься ещё ниже и проверить на вот такой встроенной функции:
Untitled 1.vi
ExtFileDialog
lv15
(6.63 КБ) 169 скачиваний
ExtFileDialog, как и жёлтый File Dialog, использует безымянную встроенную функцию, которая чрезвычайно капризна к параметрам и вообще, похоже, не менялась больше десятилетия, а только обрастала обёртками. Вполне возможны баги в работе функции на современных осях в связи с переходом на Common Item Dialog API. В качестве альтернативы можно попробовать арсенал Винды: https://stackoverflow.com/questions/416 ... filedialog
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Лицевая панель»