Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.11.18;
Скачать: [xml.tar.bz2];

Вниз

Удаление файла   Найти похожие ветки 

 
DimOk ©   (2007-10-25 16:06) [0]

Добрый день всем. Возникла сложность с "программным" удалением файлов. Есть некая программа, которая читает данные из файла, после выполнения некоторых действий эта программа должна его перенести в другой каталог. (чтение данных проиходит из файла формата *.dbf)

TableDoc.SQL.Text := "select * from " + FileName;
    try
     TableDoc.Active := True;
    except
     ShowMessage("Файл " + FileName + " поврежден или имеет неизвестный формат!");
    end;
    if TableDoc.Active = True then begin
    ..........
    end;
// Собственно та часть которая должна удалять файл
    TableDoc.Active := False;
    CopyFile(OldFile,NewFile,True);
    if DeleteFile(OldFile) then begin
       MessageDlg("Файла удален", mtInformation, [mbOk], 0);
    end;
Файл копируется но не удаляется, пытался ставить на него разрешения типа: Всем-Всё но результат нулевой. Подскажите пожалуйсто как можно реализовать удаление файла.


 
Palladin ©   (2007-10-25 16:10) [1]

хм... TableDoc.Active:=False ни разу не гарантирует закрытие хэндла открытого файла...


 
DimOk ©   (2007-10-25 16:12) [2]


> хм... TableDoc.Active:=False ни разу не гарантирует закрытие
> хэндла открытого файла...

У меня это хозяйство в цикле вертится...... и в качестве FileName передается следующий найденый файл в каталоге, надо Free делать..... :(


 
Reindeer Moss Eater ©   (2007-10-25 16:23) [3]

GetlastError знает почему файл не удаляется


 
clickmaker ©   (2007-10-25 16:30) [4]


> "Файла удален"

надо писать "Файло удалено"


 
DimOk ©   (2007-10-25 16:32) [5]


> надо писать "Файло удалено"

Это для себя, для проверки..... :))


 
DimOk ©   (2007-10-25 16:36) [6]


> GetlastError знает почему файл не удаляется

Ни чего не показывает:
1. Я ей раньше не пользовался и что то не правильно сделал;
2. Возможно это Vista;
3. Возможен 1 и 2 вариант. :)


 
Reindeer Moss Eater ©   (2007-10-25 16:39) [7]

Ни чего не показывает

не показывает?
тогда может хоть рассказывает?


 
clickmaker ©   (2007-10-25 16:39) [8]


> Ни чего не показывает

быть не может
Win32Check(Windows.DeleteFile(OldFile)) что показывает?


 
DimOk ©   (2007-10-25 16:44) [9]


> Win32Check(Windows.DeleteFile(OldFile))

"Синтаксическая ошибка в имени файла, имени папки или метке тома"


 
clickmaker ©   (2007-10-25 16:45) [10]


> Синтаксическая ошибка в имени файла

и как оно выглядит?


 
Reindeer Moss Eater ©   (2007-10-25 16:45) [11]

осталось сделать ShowMessage(OldFile)


 
DimOk ©   (2007-10-25 16:48) [12]


> и как оно выглядит?


> осталось сделать ShowMessage(OldFile)

Даа.... Действительно лажа какая то после:

tmp_str := cDir + FileName;
OldFile := PChar(tmp_str);

OldFile = "иЗQ"#2#1     :)


 
DimOk ©   (2007-10-25 17:05) [13]


> OldFile = "иЗQ"#2#1

Это я исправил, а Win32Check(Windows.DeleteFile(OldFile)) показывает следующее:
"Процесс не может получить доступ к файлу, так как этот файл занят другим процессом"


 
Reindeer Moss Eater ©   (2007-10-25 17:06) [14]

и ты конечно же этому не веришь


 
DimOk ©   (2007-10-25 17:11) [15]


> и ты конечно же этому не веришь

а куда деваться то....


 
Reindeer Moss Eater ©   (2007-10-25 17:15) [16]

try
TableDoc.Active := True;
except
ShowMessage("Файл " + FileName + " поврежден или имеет неизвестный формат!");
end;

Гы.
А если не поврежден и имеет известный формат, но уже открыт эксклюзивно? Или если нет такого файла?


 
DimOk ©   (2007-10-25 17:18) [17]


> Гы.
> А если не поврежден и имеет известный формат, но уже открыт
> эксклюзивно? Или если нет такого файла?

Ну это уже........ Разве это относиться к тому что я спрашиваю... :)


 
Reindeer Moss Eater ©   (2007-10-25 17:19) [18]

Про то, о чем ты спрашивал тебе уже ответили.


 
DimOk ©   (2007-10-25 17:23) [19]


> Про то, о чем ты спрашивал тебе уже ответили.

Наверное ответ, где то очень глубоко спрятан... :) Прям шарада какая то... буду искать... Спасибо.


 
Reindeer Moss Eater ©   (2007-10-25 17:23) [20]

Файл занят, чего еще искать-то?


 
DimOk ©   (2007-10-25 17:25) [21]


> Файл занят, чего еще искать-то?

Я не пойму чем он занят TADOQuery его держит или CopyFile(OldFile,NewFile,True) .....?
Как его "освободить" тогда..... :(


 
Dennis I. Komarov ©   (2007-10-25 17:31) [22]

> [21] DimOk ©   (25.10.07 17:25)

Да кто тебе сказал, что TADOQuery работает прям вот с файлом? :)


 
DimOk ©   (2007-10-25 17:31) [23]

Вообщето ешо держит TADOQuery потомучто я до этого делал просто MoveFile(OldFile, NewFile) и результат был тот же - нулевой.


 
DimOk ©   (2007-10-25 17:34) [24]


> Да кто тебе сказал, что TADOQuery работает прям вот с файлом?
>  

Я не говорю что напрямую берет и открывает файл на чтение или на запись, кроме этого FileName в программе ни где больше не используется, кроме как в формирование строки SQL... кроме того сошлюсь на ... [1]


 
Dennis I. Komarov ©   (2007-10-25 17:41) [25]

> [24] DimOk ©   (25.10.07 17:34)

Ну и отсюда вывод какой должен быть?


 
DimOk ©   (2007-10-25 17:43) [26]


> Ну и отсюда вывод какой должен быть?

У меня был один вариант, но он не прокатывает:
TableDoc.Active := False;
TableDoc.Free;
CopyFile(OldFile,NewFile,True);
if DeleteFile(OldFile) then begin
 MessageDlg("Файла успешно удален", mtInformation, [mbOk], 0);
end;


 
DimOk ©   (2007-10-25 17:51) [27]

А может это SearchRec при поиске файла.......?


 
Dennis I. Komarov ©   (2007-10-25 17:57) [28]

> [27] DimOk ©   (25.10.07 17:51)

Мимо!


 
sniknik ©   (2007-10-25 17:58) [29]

нет, это провайдер данных... если ты используешь провайдер VFP конечно (а то боюсь до этого никогда не дойдешь, о исходной инфе по используемому, а людям может быть интересно)


 
DimOk ©   (2007-10-25 18:00) [30]


> если ты используешь провайдер VFP конечно

Точно в цель, и как выйти из этого положения....


 
Dennis I. Komarov ©   (2007-10-25 18:04) [31]

> [30] DimOk ©   (25.10.07 18:00)

Удалять, пока не надоест :) Или провайдер в связи того, что устал соизволит оставить файл в покое :)


 
DimOk ©   (2007-10-25 18:06) [32]


> Удалять, пока не надоест :) Или провайдер в связи того,
> что устал соизволит оставить файл в покое :)

А если серьезно.... ?:)


 
sniknik ©   (2007-10-25 18:10) [33]

ну, можно например не использовать...

а вообще откуда я знаю как выйти из "этого положения" если не знаю что ты делаешь, смысл, и собственно само положение...
вижу что ты захватываешь файл одним, и тут же пытаешься удалить его другим... это "положение"? или может так и надо, так и задумывалось. (не видно отсюда это глюк, ошибка логике или чтото другое...)

> А если серьезно.... ?:)
только в ответ. будет серьезный вопрос, будет такой же ответ. (попозже, а то рабочий день кончился)


 
Anatoly Podgoretsky ©   (2007-10-25 19:19) [34]

> Dennis I. Komarov  (25.10.2007 18:04:31)  [31]

Ты слышал как китайцы ломали сайт Пентагона?
После 953178657 попытки сервер согласился, что пароль доступа Мао Дзе Дун


 
Anatoly Podgoretsky ©   (2007-10-25 19:20) [35]


>     except
>      ShowMessage("Файл " + FileName + " поврежден или имеет
> неизвестный формат!");
>     end;

Возьми за правило - никогда так не делать.


 
Anatoly Podgoretsky ©   (2007-10-25 19:21) [36]


>     CopyFile(OldFile,NewFile,True);

И так тоже.


 
DimOk ©   (2007-10-26 08:45) [37]


> >     except
> >      ShowMessage("Файл " + FileName + " поврежден или
> имеет
> > неизвестный формат!");
> >     end;
>
> Возьми за правило - никогда так не делать.


> >     CopyFile(OldFile,NewFile,True);
>
> И так тоже.

Буду благодарен за пояснение.... :)
А на счет удаления у меня получилось! :) Спасибо всем кто помогал и направил на путь истинный, в частности отдельная длягодарность sniknik - Большое спасибо!


 
Reindeer Moss Eater ©   (2007-10-26 09:46) [38]

Буду благодарен за пояснение.... :)
except
> >      ShowMessage("Файл " + FileName + " поврежден или
> имеет
> > неизвестный формат!");
> >     end;


такая обработка исключений примерно эквивалентна такой:

except
ShowMessage("Я как программист не знаю, и не хочу знать, что именно произошло и в чем причина ошибки, но это еще не все. Я еще и вам как пользователям не дам узнать истинную причину возникшего отказа.");
end;


 
DimOk ©   (2007-10-26 09:50) [39]

а по поводу CopyFile(OldFile,NewFile,True); ...?


 
DimOk ©   (2007-10-26 09:51) [40]


> ShowMessage("Я как программист не знаю, и не хочу знать,
>  что именно произошло и в чем причина ошибки, но это еще
> не все. Я еще и вам как пользователям не дам узнать истинную
> причину возникшего отказа.");

А это я поправлю, это же черновой набросок - можно так сказать..... :)



Страницы: 1 2 вся ветка

Форум: "Начинающим";
Текущий архив: 2007.11.18;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.54 MB
Время: 0.129 c
15-1192090157
botaniQ
2007-10-11 12:09
2007.11.18
Помогите найти алгоритм SHA-1


15-1192174784
stupka_s
2007-10-12 11:39
2007.11.18
UTF8, String, WideString


15-1192372386
Denis__
2007-10-14 18:33
2007.11.18
Апокалепсис


15-1192431257
KSergey
2007-10-15 10:54
2007.11.18
Миллионер Марк Шаттлворт ... выпускает массовый ноутбук (250$)


2-1193174372
smartleds
2007-10-24 01:19
2007.11.18
Господа подскажите плз , не пойму в чем ошибка





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский