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

Вниз

Не возникает ошибка при удалении открытого документа (WORD)   Найти похожие ветки 

 
Раиса ©   (2008-07-14 12:40) [0]

Пишу так:

try
DeleteFile(S);
except
Application.MessageBox("Ошибка! Вероятно, открыт документ с именем разрешения!","Сообщение",mb_Ok+mb_ICONINFORMATION);
Exit;
end;

и мечтаю, что вывалится ошибка,если документ (вордовый) с таким именем уже открыт.
Но в try .... Except программа не заходит.
Вопрос: почему? и что нужно сделать, чтобы проверить, открыт или нет документ с таким именем?


 
Palladin ©   (2008-07-14 12:41) [1]

потому что DeleteFile - функция и никакого исключения она не возбуждает...


 
Johnmen ©   (2008-07-14 12:44) [2]

DeleteFile+F1, как обычно.


 
Раиса ©   (2008-07-14 12:47) [3]

Вот я и интересуюсь:
1. или чем заменить DeleteFile, чтобы было как в Винде получить сообщение о невозможности удаления ткрытого файла
2. или как проверить, что вордовый файл уже открыт.


 
Поросенок Винни-Пух ©   (2008-07-14 12:49) [4]

deletefile скажет тебе человеческим голосом что файл нельзя удалить


 
Palladin ©   (2008-07-14 12:49) [5]

1. Зачем его заменять?
2. Повторяю, DeleteFile - это функция. Ты знаешь что такое функция?


 
Раиса ©   (2008-07-14 12:50) [6]

Не хочу проверять на наличие файла и на False/True возвращает Deleeile.


 
Поросенок Винни-Пух ©   (2008-07-14 12:51) [7]

Раиса Захаровна, вас поуговаривать?


 
Раиса ©   (2008-07-14 12:52) [8]

deletefile возвращает False, если файл не удаляется (то ли нету его, то ли нельзя удалить)


 
Поросенок Винни-Пух ©   (2008-07-14 12:52) [9]

Удалено модератором


 
Palladin ©   (2008-07-14 12:53) [10]

мдя... :) бывает...


 
Раиса ©   (2008-07-14 12:54) [11]

Поросенок Винни-Пух ©   (14.07.08 12:51) [7]

Я не хочу:
1. проверять на Exists
2. на то, что возвращает DeleteFile

Хочу поприличнее написать. Вот и спрашиваю, как.


 
Palladin ©   (2008-07-14 12:56) [12]


> Раиса ©   (14.07.08 12:54) [11]

используй Windows.DeleteFile, см. справку Windows SDK на предмет этой функции и все желания твои будут исполнены...


 
Правильный$Вася   (2008-07-14 12:57) [13]


> Я не хочу:1. проверять на Exists2. на то, что возвращает
> DeleteFile

религия запрещает?
это и есть "поприличнее"


 
oldman ©   (2008-07-14 12:58) [14]


> Не возникает ошибка при удалении открытого документа (WORD)


А как себя ведет собственно WORD при данном казусе?

(извините уж, но сам проверять не хочу)


 
Palladin ©   (2008-07-14 12:59) [15]


> oldman ©   (14.07.08 12:58) [14]

а как он должен себя вести?


 
Раиса ©   (2008-07-14 12:59) [16]

Поросенок Винни-Пух ©   (14.07.08 12:51) [7]
А попроще отчество нельзя было придумать?

Palladin ©   (14.07.08 12:56) [12]
Спасибо, посмотрю.

Это я пока еще хочу удалить файл, а завтра,  может быть, не захочу, но проверять на открыт или нет вордовый файл все равно надо будет.

Вот и спрашиваю как...


 
Поросенок Винни-Пух ©   (2008-07-14 13:01) [17]

"Людк, а Людк! тьфу деревня"


 
oldman ©   (2008-07-14 13:02) [18]


> Palladin ©   (14.07.08 12:59) [15]
> а как он должен себя вести?


Как минимум, возмутиться, что, мол, открытое мною испарилось без разрешения...


 
Palladin ©   (2008-07-14 13:05) [19]

ну ептыть... хочу не хочу... буду не буду...
программирование ничего общего с мужской особью не имеет и не надо эээ... <вырезано цензурой> мозги

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


 
Поросенок Винни-Пух ©   (2008-07-14 13:06) [20]

Пишу так:

try
DeleteFile(S);
except
Application.MessageBox("Ошибка! Вероятно, открыт документ с именем разрешения!","Сообщение",mb_Ok+mb_ICONINFORMATION);
Exit;
end;


Пиши так
if not DeleteFile then Raise Exception.CreateFmt("Ошибка! Вероятно, открыт документ с именем разрешения!",[GetLastError])


 
Palladin ©   (2008-07-14 13:07) [21]


> oldman ©   (14.07.08 13:02) [18]

не возмутится, потому как открывает с флагом ShareDenyWrite


 
Игорь Шевченко ©   (2008-07-14 13:07) [22]


> Это я пока еще хочу удалить файл, а завтра,  может быть,
>  не захочу


> Вот и спрашиваю как...


завтра и спроси :)


 
дядя Митя   (2008-07-14 13:19) [23]

Удалено модератором


 
дядя Митя   (2008-07-14 13:21) [24]

Удалено модератором


 
Anatoly Podgoretsky ©   (2008-07-14 13:51) [25]


> Раиса ©   (14.07.08 12:59) [16]

Win32Check (DeleteFile(...));


 
Раиса ©   (2008-07-14 14:11) [26]

1.Ошибка возникает при сохранении вордового файла (saveAs).
2. Вопрос, как проверить, что файл с определенным именем открыт.

Ответов не было.


 
Плохиш ©   (2008-07-14 14:18) [27]


> Ответов не было.

Свова экзамен мы не сдали, ах какая жаласть...


 
имя   (2008-07-14 14:20) [28]

Удалено модератором


 
Palladin ©   (2008-07-14 14:24) [29]


> Раиса ©   (14.07.08 14:11) [26]

читать [19] второй абзац до полного просветления...


 
Раиса ©   (2008-07-14 14:31) [30]

Palladin ©   (14.07.08 14:24) [29]
А Вы не заметили, что ответ был в
Раиса ©   (14.07.08 14:11) [26] ?
1.Ошибка возникает при сохранении вордового файла (saveAs).

Но для того, чтобы дойти до SaveAs, нужно сделать
CreateOleObject("Word.Application");
и при этом WinWord появится в Диспетчере задач. Quit почему-то не помогает для завершения процесса.


 
Игорь Шевченко ©   (2008-07-14 14:34) [31]


> Quit почему-то не помогает для завершения процесса.


еще интерфейс бы обнулить...


 
Palladin ©   (2008-07-14 14:38) [32]


> Раиса ©   (14.07.08 14:31) [30]

ах... это ответ был... хем...


> нужно сделать CreateOleObject("Word.Application");

ну да... нужно... а какое это отношение имеет к ошибке сохранения? пусть объект создается, создается документ и прочая мишура, а потом проходит попытка сохранения... но при чем тут тогда DeleteFile?

задача не ясна, что именно делается и что именно нужно сделать? начали с DeleteFile закончили вызовом SaveAs...


 
Раиса ©   (2008-07-14 14:44) [33]

Начнем сначала.
Проверить, открыт или нет вордовый документ. Если да, то выдать сообщение. Если документ есть, но не открыт, то после вопроса удалить его или нет.


 
Kolan ©   (2008-07-14 14:47) [34]

> [33] Раиса ©   (14.07.08 14:44)

Это похоже на задание, а не на вопрос. Что из этого непонятно?


 
Поросенок Винни-Пух ©   (2008-07-14 14:47) [35]

он может быть и не открыт, но при этом и удалить его не получится


 
Поросенок Винни-Пух ©   (2008-07-14 14:50) [36]

Если документ есть, но не открыт, то после вопроса удалить его или нет.

неправильно.
Если есть и не открыт, то снова проверить не открыт ли он сразу после первой проверки на неоткрытость.


 
Kolan ©   (2008-07-14 14:50) [37]

> он может быть и не открыт, но при этом и удалить его не
> получится

Пожалей автора :).


 
Palladin ©   (2008-07-14 14:53) [38]


> Раиса ©   (14.07.08 14:44) [33]

либо это не с самого начала, либо все таки читать [19] второй абзац до полного просветления

задача так и не озвучена, что нужно от файла, просто его удалить или всетаки записать, что то с тем же именем


 
Раиса ©   (2008-07-14 14:57) [39]

Задача:все-таки записать, что-то с тем же именем. Но вордовый файл может быть открыт или нет (программно или вручную).


 
Palladin ©   (2008-07-14 14:58) [40]


> Раиса ©   (14.07.08 14:57) [39]

"ну вот, а то мама мама..."
вот при попытке записи чего то с этим именем и нужно делать анализ результата этой попытки, и не нужно ничего удалять


 
Раиса ©   (2008-07-14 15:04) [41]

Palladin ©   (14.07.08 14:58) [40]
см.Раиса ©   (14.07.08 14:31) [30]
Но для того, чтобы дойти до SaveAs, нужно сделать
CreateOleObject("Word.Application");
и при этом WinWord появится в Диспетчере задач. Quit почему-то не помогает для завершения процесса.


 
Palladin ©   (2008-07-14 15:16) [42]


> Раиса ©   (14.07.08 15:04) [41]

[19] второй абзац не помогает... просветлятся не хотим... доктор сказал в морг значит в морг...

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

CreateOleObject никакого отношения к сохранению и более того к наличию присутствия какого либо файла либо его занятости не имеет и провести его вызов помешать может только религиозные убеждения. какое отношение к существованию и занясти файла имеет вызов функции Quit? никакого! WinWord остается в памяти потому как небыл обнулен интерфейс. wdApp:=Unassigned; о чем и сказал Игорь, но в чукчу-писателя играть интересней...


 
Kolan ©   (2008-07-14 15:20) [43]

Удалено модератором


 
Раиса ©   (2008-07-14 15:28) [44]

Palladin ©   (14.07.08 15:16) [42]
MsWord:=unAssigned; - это есть. Может, не в нужном месте, но после MSWord.Visible:=True;  

1. Создали программно документ с именем 1.doc и оставили открытым
2. Второй раз создаем документ с этим же именем с использованием CreateOleObject. Вываливается ошибка на SaveAs, обрабатываем ошибку, но при этом WinWord появится в Диспетчере задач.
Как выход, хотелось не доходить до CreateOleObject, а проверить открыт или нет документ до CreateOleObject..

Что непонятного-то?


 
Плохиш ©   (2008-07-14 15:45) [45]


> Как выход, хотелось не доходить до CreateOleObject, а проверить
> открыт или нет документ до CreateOleObject..

По логике надо использовать GetActiveOleObject

> Что непонятного-то?

О, так это у нас проблема оказывается...


 
Johnmen ©   (2008-07-14 15:46) [46]


> хотелось не доходить до CreateOleObject, а проверить открыт
> или нет документ до CreateOleObject.

Конечно открыт -

> Создали программно документ с именем 1.doc и оставили открытым

ЗЫ
Как говаривал И.Шевченко, Kinder, Kuche, Kirche.
Я бы ещё добавил Kleider. Чтоб не так уныло...
:)


 
Раиса ©   (2008-07-14 16:03) [47]

Johnmen ©   (14.07.08 15:46) [46]
Конечно открыт -> Создали программно документ с именем 1.doc и оставили открытым

А могли этого не делать (не создавать и не открывать). Тогда программа нормально рботает.

После использования GetActiveOleObject не появляется WinWord в диспетчере.

try
MSWord.ActiveDocument.SaveAs(S);
MSWord.Visible:=True;
MsWord:=unAssigned;
except
 Application.MessageBox("Ошибка","---",mb_Ok+mb_ICONINFORMATION);
 MSWord.Quit;
 Exit;
end;

Появляется вопрос о сохранении в Документе 2. Как от него избавится?


 
oldman ©   (2008-07-14 16:15) [48]


> Раиса ©   (14.07.08 16:03) [47]
> Johnmen ©   (14.07.08 15:46) [46]
> Конечно открыт -> Создали программно документ с именем 1.
> doc и оставили открытым
>
> А могли этого не делать


Вот и не делайте.
А открыли - закройте. Программно.


 
Raisa   (2008-07-15 00:09) [49]

oldman ©   (14.07.08 16:15) [48]
Открываем программно, а пользователь сам закрывает документ или нет (после того, как, например, распечатает его или насмотрится вдоволь).

Johnmen ©   (14.07.08 15:46) [46]
Kinder, Kuche, Kirche.Я бы ещё добавил Kleider.
Раз Вы такой знаток немецкого, пишите, пожалуйста, с артиклями, чтобы не выглядело так убого. И умляюты не забывайте, чтобы слова выглядели прилично.

К моменту моего возвращения из командировки (через неделю) хотелось бы увидеть ответы на вопросы, а не упражнения в остроумии (мягко говоря).
1. Как проверить, что файл с определенным именем открыт?
2. Появляется вопрос о сохранении в Документе 2. Как от него избавится? (В Excel  у меня получается закрывать без вопроса).


 
Плохиш ©   (2008-07-15 00:45) [50]


> Raisa   (15.07.08 00:09) [49]
> Раз Вы такой знаток немецкого, пишите, пожалуйста, с артиклями

Вот кайзеру Вилхелму второму предъява, так предъява :-)

> К моменту моего возвращения из командировки (через неделю)
> хотелось бы увидеть ответы на вопросы

Спасибо, мамочка, но мы как-нибуть сами разберёмся, чем заняться...


 
brother ©   (2008-07-15 06:40) [51]

К моменту моего возвращения из командировки (через неделю)
к этому времени и ветки то уже не будет, и правильно... на форуме Вам никто ничего не должен (читаем правила)...


 
Virgo_Style ©   (2008-07-15 18:14) [52]

Раиса ©   (14.07.08 16:03) [47]
Raisa   (15.07.08 0:09) [49]

хотелось бы верить, что это разные Раисы, иначе совсем безрадостно


 
Игорь Шевченко ©   (2008-07-15 19:52) [53]


> К моменту моего возвращения из командировки (через неделю)
> хотелось бы увидеть ответы на вопросы, а не упражнения в
> остроумии (мягко говоря).
> 1. Как проверить, что файл с определенным именем открыт?
>
> 2. Появляется вопрос о сохранении в Документе 2. Как от
> него избавится? (В Excel  у меня получается закрывать без
> вопроса).


http://ln.com.ua/~openxs/articles/smart-questions-ru.html



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

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

Наверх





Память: 0.59 MB
Время: 0.111 c
15-1213957352
AlexDan
2008-06-20 14:22
2008.08.17
Полетел принтер..


2-1216047370
TUserClass
2008-07-14 18:56
2008.08.17
Транзакции, господа...выручайте...


2-1215788028
GrieVeR-13
2008-07-11 18:53
2008.08.17
Событие OnTimer


2-1215942865
Саша
2008-07-13 13:54
2008.08.17
Шифрование RSA.


4-1194334678
Mamed
2007-11-06 10:37
2008.08.17
Lan Card Disable





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский