File Dialog Express VI ошибка 43, но не 43
-
- professor
- Сообщения: 3410
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 176 раз
- Контактная информация:
File Dialog Express VI ошибка 43, но не 43
Большая программа, поэтому всю выложить не могу.
Есть File Dialog Express VI, который рекомендуется вместо того VI, который запрятан внутрь этого Express VI, не суть.
В общем, проблема такая.
Программе иногда надо спросить у пользователя файл (что открыть, куда сохранить и пр.). Использую этот Express VI. И всё хорошо, пока не случится что-то странное.
Окно выбора перестаёт появляться, а функция сразу выдаёт ошибку 43 ("пользователь нажал отмену"). Но пользователь ничего не нажимал, потому что окно не появлялось.
Более того, с этого момента окно больше не появится до перезагрузки LV/exe. Вот как это выглядит:
W29nzWMvJTo
И ещё до кучи: с этого момента выбор файла соверешенно не работает: попытался сделать этот снипет, окно тоже не выскочило. Кто-нибудь сталкивался? знаете как чинить или обойти?
LV15, менять крайне нежелательно.
Есть File Dialog Express VI, который рекомендуется вместо того VI, который запрятан внутрь этого Express VI, не суть.
В общем, проблема такая.
Программе иногда надо спросить у пользователя файл (что открыть, куда сохранить и пр.). Использую этот Express VI. И всё хорошо, пока не случится что-то странное.
Окно выбора перестаёт появляться, а функция сразу выдаёт ошибку 43 ("пользователь нажал отмену"). Но пользователь ничего не нажимал, потому что окно не появлялось.
Более того, с этого момента окно больше не появится до перезагрузки LV/exe. Вот как это выглядит:
W29nzWMvJTo
И ещё до кучи: с этого момента выбор файла соверешенно не работает: попытался сделать этот снипет, окно тоже не выскочило. Кто-нибудь сталкивался? знаете как чинить или обойти?
LV15, менять крайне нежелательно.
-
- leader
- Сообщения: 932
- Зарегистрирован: 17 янв 2016, 15:02
- Награды: 1
- Версия LabVIEW: 6.1,8.5,20
Re: File Dialog Express VI ошибка 43, но не 43
Если для создания путей файлов используются функции форматирования строк, проверяйте сформированные строки на зарезервированные символы (коды символов) и запрещенные первый и последний символы в имени файла. Так же убедитесь, что не используются зарезервированные слова (строки), например CON .
filename limitations
https://en.wikipedia.org/wiki/Filename
Naming Conventions
https://docs.microsoft.com/ru-ru/window ... onventions
filename limitations
https://en.wikipedia.org/wiki/Filename
Naming Conventions
https://docs.microsoft.com/ru-ru/window ... onventions
-
- professor
- Сообщения: 3410
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 176 раз
- Контактная информация:
Re: File Dialog Express VI ошибка 43, но не 43
Всё корректное.
Конкретно в этом примере, в базе лежит путь по которому файл лежал раньше. Если прога его не находит (файл перенесли), она спрашивает, где он. Все имена корректные.
Более того, вот такой код Часто становится первенцем, уже на нём выдаёт 43 и после этого ничего не работает. Это разные режимы работы программы, совершенно разные участки кода.
Конкретно в этом примере, в базе лежит путь по которому файл лежал раньше. Если прога его не находит (файл перенесли), она спрашивает, где он. Все имена корректные.
Более того, вот такой код Часто становится первенцем, уже на нём выдаёт 43 и после этого ничего не работает. Это разные режимы работы программы, совершенно разные участки кода.
-
Kosist
- expert
- Сообщения: 1236
- Зарегистрирован: 21 фев 2011, 23:44
- Награды: 2
- Версия LabVIEW: 2013-2020
- Благодарил (а): 23 раза
- Поблагодарили: 30 раз
- Контактная информация:
Re: File Dialog Express VI ошибка 43, но не 43
Попробуйте отдебажить эту експресс- как обычную -ку (конвертируйте, и посмотрите что там происходит). Т.к. сейчас мне не верится, что путь действительно правильный - ведь задается лишь имя файла. А дефолтная директория для файла правильная? Как Вы проверили абсолютный путь к файлу, который обрабатывает функция?
На видео видно, что, например, диалоговое окно для автоматической обработки ошибки - кастомное. Это ведь Вы его переделали? Может, "зацепили" что-то еще, и тепер какую-то встроенную функцию "глючит"?
На видео видно, что, например, диалоговое окно для автоматической обработки ошибки - кастомное. Это ведь Вы его переделали? Может, "зацепили" что-то еще, и тепер какую-то встроенную функцию "глючит"?
Мы делили апельсин - много наших полегло...
-
- professor
- Сообщения: 3410
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 176 раз
- Контактная информация:
Re: File Dialog Express VI ошибка 43, но не 43
оно не кастомное, оно более чем стандартное (обычный dialog с двумя кнопками). Если в итоге работы этой функции всё же случается баг, то программа просто сообщает пользователю, что всё пропало.Kosist писал(а):На видео видно, что, например, диалоговое окно для автоматической обработки ошибки - кастомное. Это ведь Вы его переделали? Может, "зацепили" что-то еще, и тепер какую-то встроенную функцию "глючит"?
а логер сейчас делаю для тотальной слежки за функцией.
-
- professor
- Сообщения: 3410
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 176 раз
- Контактная информация:
Re: File Dialog Express VI ошибка 43, но не 43
Вынул нутро express VI, сдела vi, который полностью отчитывается о проделанной работе. Вот две последние записи.
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, потому что воспроизвести подобный глюк вне полной проги я не могу. Например, снипет из моего первого поста сам пос себе работает без проблем, как бы я над ним ни изголялся с неправильными именами и отменами выбора. Оно всё равно выскакивает.
Код: Выделить всё
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
2) программа не нашла файл camera1[2018-10-09(13-28-20)_2018-10-09(13-46-20)].avi и "спросила", где он. И за 0,01с пользователь как бы отказался выбирать.
возможно дело в связке с vision, потому что воспроизвести подобный глюк вне полной проги я не могу. Например, снипет из моего первого поста сам пос себе работает без проблем, как бы я над ним ни изголялся с неправильными именами и отменами выбора. Оно всё равно выскакивает.
-
Kosist
- expert
- Сообщения: 1236
- Зарегистрирован: 21 фев 2011, 23:44
- Награды: 2
- Версия LabVIEW: 2013-2020
- Благодарил (а): 23 раза
- Поблагодарили: 30 раз
- Контактная информация:
Re: File Dialog Express VI ошибка 43, но не 43
А, я не заметил, что окно появляется в самом конце, что это не автоматическая обработка ошибок...Artem.spb писал(а):оно не кастомное, оно более чем стандартное (обычный dialog с двумя кнопками). Если в итоге работы этой функции всё же случается баг, то программа просто сообщает пользователю, что всё пропало.
Мы делили апельсин - много наших полегло...
-
Kosist
- expert
- Сообщения: 1236
- Зарегистрирован: 21 фев 2011, 23:44
- Награды: 2
- Версия LabVIEW: 2013-2020
- Благодарил (а): 23 раза
- Поблагодарили: 30 раз
- Контактная информация:
Re: File Dialog Express VI ошибка 43, но не 43
Я бы изменил алгоритм. Вначале проверяйте, существует ли файл (Check if File or Folder Exists.vi), и не пустой ли путь - а уже потом открывайте окно для выбора файла. Может, так можно будет избежать этот "глюк".
Мы делили апельсин - много наших полегло...
-
- professor
- Сообщения: 3410
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 176 раз
- Контактная информация:
Re: File Dialog Express VI ошибка 43, но не 43
Я именно так и делаю.
Если нужно открыть файл. проверяю его наличие. Если файла нет, то спрашиваю, где он. Если есть, то открываю сразу.
Если же нужно что-то сохранить, то сразу спрашиваю, куда.
И пустой путь не мешает - много раз вызывал этот диалог со всеми пустыми входами.
Есть какая-то мелочь, которую я упускаю.
Если нужно открыть файл. проверяю его наличие. Если файла нет, то спрашиваю, где он. Если есть, то открываю сразу.
Если же нужно что-то сохранить, то сразу спрашиваю, куда.
И пустой путь не мешает - много раз вызывал этот диалог со всеми пустыми входами.
Есть какая-то мелочь, которую я упускаю.
-
Vitekkz88
- expert
- Сообщения: 1100
- Зарегистрирован: 21 янв 2014, 15:45
- Награды: 3
- Версия LabVIEW: 12,13,14
- Откуда: Томск
- Контактная информация:
Re: File Dialog Express VI ошибка 43, но не 43
Вы пробовали собирать логику без использования Express.vi?И пустой путь не мешает - много раз вызывал этот диалог со всеми пустыми входами.
Могу предложить попробовать в явном виде достать блок File Dialog.vi и проверить работу на нём, либо собрать логику из обычных блоков по работе с файлами. Возможно попробовать использовать отличный от текущего Select Mode. У Вас там было что-то про использование Vision. Пробуйте скрыть Vision-блоки в общей программе и проверять. Express dialog у вас запрятан в несколько subVI, вложенность 3. Попробуйте поднять его выше и так же проверить. Это всё фокусы, но и сама ситуация странная. Ну и константу на путь создайте. Диалог откроется в любом случае, а нам -1 из вариантов возможных проблем.
Инженер - это открыто светящийся интеллект, свободный и не обидный юмор, это легкость и широта мысли...Это воспитанность, тонкость вкусов, хорошая речь, плавно согласованная и без сорных словечек...
-А. И. Солженицын
-А. И. Солженицын
-
- professor
- Сообщения: 3410
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 176 раз
- Контактная информация:
Re: File Dialog Express VI ошибка 43, но не 43
Продолжаю развлекаться
один из первых тестов. Вытащил самое нутро (которым типа нельзя пользоваться). Не помогло.Вы пробовали собирать логику без использования Express.vi?
Могу предложить попробовать в явном виде достать блок File Dialog.vi и проверить работу на нём, либо собрать логику из обычных блоков по работе с файлами.
мне нужно или новый файл для экспорта результатов, или существующий для открытия видео. Другие режимы не пойдут.Возможно попробовать использовать отличный от текущего Select Mode.
пошёл в обратную сторону. Работает без проблем. Если быть точным, ошибка не появилась в пределах времени "кликал пока не надоело".У Вас там было что-то про использование Vision. Пробуйте скрыть Vision-блоки в общей программе и проверять.
тяжко. Он гораздо дальше чем на 3 уровня. После проверки Vision (видимо, отпало), начал грешить на subpanel. Потестил. Тоже не виноваты.Express dialog у вас запрятан в несколько subVI, вложенность 3. Попробуйте поднять его выше и так же проверить. Это всё фокусы, но и сама ситуация странная.
Добавил проверку. Если путь кривой, подаю c:. Не помогло.Ну и константу на путь создайте. Диалог откроется в любом случае, а нам -1 из вариантов возможных проблем.
-
Kosist
- expert
- Сообщения: 1236
- Зарегистрирован: 21 фев 2011, 23:44
- Награды: 2
- Версия LabVIEW: 2013-2020
- Благодарил (а): 23 раза
- Поблагодарили: 30 раз
- Контактная информация:
Re: File Dialog Express VI ошибка 43, но не 43
А у Вас есть возможность сбросить пример в связке с Vision?
Также, а если собрать екзешник - проблема присутствует?
Также, а если собрать екзешник - проблема присутствует?
Мы делили апельсин - много наших полегло...
-
- professor
- Сообщения: 3410
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 176 раз
- Контактная информация:
Re: File Dialog Express VI ошибка 43, но не 43
это и есть он. Есть ещё предположение, что именно индикатор vision всё портит, но нет времени проверять.Kosist писал(а):А у Вас есть возможность сбросить пример в связке с Vision?
Сейчас просто делаю так, чтобы файлы сами знали, куда сохраняться. Иначе тяжело работать пользователям. Эксперименты продолжу позже
Весь проект ~300 функций, раскрывать не готов. А выделять тестовый кусок опять же долго.
она в exe быстрее проявляется. 2-3 диалога и всё. Я при отладке в 2-3 раза дольше жду, когда появится. Иногда даже начинаю думать, что наконец-то, починил.Также, а если собрать екзешник - проблема присутствует?
-
Kosist
- expert
- Сообщения: 1236
- Зарегистрирован: 21 фев 2011, 23:44
- Награды: 2
- Версия LabVIEW: 2013-2020
- Благодарил (а): 23 раза
- Поблагодарили: 30 раз
- Контактная информация:
Re: File Dialog Express VI ошибка 43, но не 43
Ваш пример у меня работает без проблем...
Любопытная деталь. Тестировал свой код, совсем другой функционал чем у Вас. Но, внутри одной из виайки тоже используется File Dialog виайка. И когда я запустил код на cRIO, то тоже получил на выходе этой функции ошибку 43. Т.к. на cRIO диалоговые окна не поддерживаются (узлы свойств и методы, и т.д.). Т.е. виайка не могла открыть диалоговое окно, и выбросила ошибку 43... Но такое поведение происходит потом всегда, а в Вашем же случае - время от времени... Плюс ко всему, Ваша программа исполняется на Windows, проблем по идее не должно было бы быть...
Любопытная деталь. Тестировал свой код, совсем другой функционал чем у Вас. Но, внутри одной из виайки тоже используется File Dialog виайка. И когда я запустил код на cRIO, то тоже получил на выходе этой функции ошибку 43. Т.к. на cRIO диалоговые окна не поддерживаются (узлы свойств и методы, и т.д.). Т.е. виайка не могла открыть диалоговое окно, и выбросила ошибку 43... Но такое поведение происходит потом всегда, а в Вашем же случае - время от времени... Плюс ко всему, Ваша программа исполняется на Windows, проблем по идее не должно было бы быть...
Мы делили апельсин - много наших полегло...
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: File Dialog Express VI ошибка 43, но не 43
Если нативный File Dialog выдаёт ошибку, можно попробовать спуститься ещё ниже и проверить на вот такой встроенной функции: ExtFileDialog, как и жёлтый File Dialog, использует безымянную встроенную функцию, которая чрезвычайно капризна к параметрам и вообще, похоже, не менялась больше десятилетия, а только обрастала обёртками. Вполне возможны баги в работе функции на современных осях в связи с переходом на Common Item Dialog API. В качестве альтернативы можно попробовать арсенал Винды: https://stackoverflow.com/questions/416 ... filedialogArtem.spb писал(а):один из первых тестов. Вытащил самое нутро (которым типа нельзя пользоваться). Не помогло.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение