Удаление файла

Работа с файлами и базами данных
Ответить
KVS_7
interested
interested
Сообщения: 4
Зарегистрирован: 18 апр 2013, 12:03
Версия LabVIEW: 8.0
Контактная информация:

Удаление файла

Сообщение KVS_7 »

Доброго времени суток. Подскажите, пожалуйста, как без проблем удалить файл в LV? Не вполне понимаю как работает Delete.vi. После попытки удаления папка с удаляемым файлом оказывается занятой процессом LV и Delete.vi. выдает ошибку. В инете прочитал, что последняя открытая папка в LV является заблокированной и к ней нет доступа http://lavag.org/topic/12000-cannot-mov ... w-is-open/. Но даже учитывая это, манипуляции с кодом не помогли. Пожалуйста, подскажите как корректно удалить файл.
Аватара пользователя
IvanLis

Activity Professionalism Tutorials Gold Man of the year 2012
Автор
guru
guru
Сообщения: 5463
Зарегистрирован: 02 дек 2009, 17:44
Награды: 7
Версия LabVIEW: 2015, 2016
Откуда: СССР
Благодарил (а): 28 раз
Поблагодарили: 87 раз

Re: Удаление файла

Сообщение IvanLis »

KVS_7 писал(а):Пожалуйста, подскажите как корректно удалить файл.
В Linux я использую скрипт, передавая ему путь к файлу... а он уже делает всю грязную работу.
По идее и в Windows можно так реализовать... запуск bat-ника с передачей параметра. Там же можно по идее настроить подтверждение.

---------------------
У меня вообще реализовано удаление запущенного (исполняемого) откомпилированного файла. Т.е. программа запускается и через скрипт удаляет сама себя с диска, продолжая работать. Соответственно повторный запуск уже невозможен :D .
Аватара пользователя
dadreamer

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

Re: Удаление файла

Сообщение dadreamer »

KVS_7

Можно сделать через cmd, например так:
Delete.png
Delete.png (9.74 КБ) 4399 просмотров
В принципе, ещё вариант - использовать средства Windows, например функцию DeleteFile, вызвать её можно через Call Library Function Node. Для полного контроля над удалением (любой файл, папка, в том числе непустые каталоги с многоуровневой структурой, а также удаление в корзину) нужно использовать SHFileOperation. Эту функцию также можно запустить через CLFN, правда посложнее, чем DeleteFile. Пример сходу не приведу, надо порыться в гугле. Почитайте здесь или юзайте поиск.

Вот, нашёл ещё NET-способ, позволяющий удалять всё, что угодно, в т.ч. и в корзину.

Касательно SHFileOperation... Здесь есть :vi: , удаляющий файл в корзину через DLL, вызывающую shell32. Плюс исходник враппера на Дельфи. Можно использовать этот способ. А тут я нашел код на C++, можно его перекомпилить и встроить в :labview: . В общем, вариантов много, на самом деле.

P.S.: перекомпилил файл из последней ссылки + чуть-чуть допилил и встроил в :vi: ; см. вложение.
Вложения
Safe Delete.vi
LV8.0
(27.3 КБ) 190 скачиваний
KVS_7
interested
interested
Сообщения: 4
Зарегистрирован: 18 апр 2013, 12:03
Версия LabVIEW: 8.0
Контактная информация:

Re: Удаление файла

Сообщение KVS_7 »

Спасибо, очень благодарен за ответы) Не все успел проверить из предложенного и пока проблема остается. Задача - посмотреть в директорию, отослать их, а затем удалить. Но ни стандартными средствами, ни через командную строку, ни Unlocker'ом не удается их удалить после отсылки. Иногда Unlocker говорит, что директория занята процессом LV, иногда вообще не видит блокирующего дескриптора. При закрытии LV возможность удалить возобновляется. На сколько успел понять, LV блокирует доступ к последней открытой директории. Пробовал открывать другую, не относящуюся к программе директорию последней. Что-то не выходит. Может у Вас есть какие-нибудь соображения?
KVS_7
interested
interested
Сообщения: 4
Зарегистрирован: 18 апр 2013, 12:03
Версия LabVIEW: 8.0
Контактная информация:

Re: Удаление файла

Сообщение KVS_7 »

По идее и в Windows можно так реализовать... запуск bat-ника с передачей параметра. Там же можно по идее настроить подтверждение.
У меня вообще реализовано удаление запущенного (исполняемого) откомпилированного файла. Т.е. программа запускается и через скрипт удаляет сама себя с диска, продолжая работать. Соответственно повторный запуск уже невозможен .
Придется видимо разбираться)
Аватара пользователя
dadreamer

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

Re: Удаление файла

Сообщение dadreamer »

KVS_7
С помощью какого инструмента вы "смотрите" в вашу папку? И вы пытаетесь удалить всю папку целиком? Выложите кусок кода, отвечающий за просмотр папки (можно без передачи куда-то там файлов) и удаление.
KVS_7
interested
interested
Сообщения: 4
Зарегистрирован: 18 апр 2013, 12:03
Версия LabVIEW: 8.0
Контактная информация:

Re: Удаление файла

Сообщение KVS_7 »

P.S.: перекомпилил файл из последней ссылки + чуть-чуть допилил и встроил в ; см. вложение.
Это похоже для 9.0. Можно под 8.0, пожалуйста? )
Аватара пользователя
dadreamer

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

Re: Удаление файла

Сообщение dadreamer »

KVS_7
Специально скачал отсюда и открыл файл в :labview: 7.1, чтобы версию посмотреть. У меня всё правильно :wink:
19-04-2013 10-26-31.jpg
На всякий случай ещё раз пересохранил в 8.0...
Вложения
Safe Delete 8.0.vi
(27.3 КБ) 178 скачиваний
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Сохранение данных»