Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/21: Рейтинг темы: голосов - 21, средняя оценка - 4.57
 Аватар для demon_7
260 / 192 / 60
Регистрация: 12.05.2013
Сообщений: 857

"Ошибка" при сохранении файла через OLE (SaveAs)

06.04.2015, 13:46. Показов 4658. Ответов 13
Метки ole (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго времени суток.
Столкнулся с проблемой у пользователей, на шаге сохранения файла появляется окно "Ошибка" с текстом: "Ошибка".
Что самое странное окно появляется не всегда, а периодически.
Может кто подскажет, где моя ошибка, так как у себя воспроизвести не удалось.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 
NameFile=Edit6->Text+"\\Регламент "+ComboBox1->Text+" "+Edit1->Text+".docx"; //Edit6 строка в которой прописан путь к сохранению
AnsiString full_name, short_name;
full_name=IUS+" "+Edit1->Text; //IUS глобальная переменная с текстом
short_name=ComboBox1->Text+" "+Edit2->Text;
 
 
if(!fStart)
 {
  try
  {
   vVarApp=CreateOleObject("Word.Application");
   fStart=true;
  }
  catch(...)
  {
   MessageBox(0, "Ошибка при открытии Word",
                 "Ошибка Word", MB_OK);
  return;
  }
 }
 
 
 //vVarApp.OlePropertySet("Visible",true);
 vVarDoc=vVarApp.OlePropertyGet("Documents");
 vVarDoc.OleProcedure("Open", doc.c_str());//doc переменная где хранится путь к шаблону, который необходимо открыть
 vVarDoc=vVarDoc.OleFunction("Item",1);
 vVarDoc.OleProcedure("Activate");
 
vVarApp.OlePropertyGet("Selection").OlePropertyGet("Find").OleProcedure("Execute", /*FindText=*/ "полное имя", /*MatchCase=*/false, /*MatchWholeWord=*/ false, /*MatchWildcards=*/false, /*MatchSoundsLike=*/false, /*MatchAllWordForms=*/false, /*Forward=*/true, /*Wrap=*/1, /*Format=*/false, /*ReplaceWith=*/full_name.c_str(), /*Replace=*/2);
vVarApp.OlePropertyGet("Selection").OlePropertyGet("Find").OleProcedure("Execute", /*FindText=*/ "краткое имя", /*MatchCase=*/false, /*MatchWholeWord=*/ false, /*MatchWildcards=*/false, /*MatchSoundsLike=*/false, /*MatchAllWordForms=*/false, /*Forward=*/true, /*Wrap=*/1, /*Format=*/false, /*ReplaceWith=*/short_name.c_str(), /*Replace=*/2);
vVarApp.OlePropertyGet("Selection").OlePropertyGet("Find").OleProcedure("Execute", /*FindText=*/ "режимм", /*MatchCase=*/false, /*MatchWholeWord=*/ false, /*MatchWildcards=*/false, /*MatchSoundsLike=*/false, /*MatchAllWordForms=*/false, /*Forward=*/true, /*Wrap=*/1, /*Format=*/false, /*ReplaceWith=*/ComboBox2->Text.c_str(), /*Replace=*/2);
vVarApp.OlePropertyGet("Selection").OlePropertyGet("Find").OleProcedure("Execute", /*FindText=*/ "взаимодействие", /*MatchCase=*/false, /*MatchWholeWord=*/ false, /*MatchWildcards=*/false, /*MatchSoundsLike=*/false, /*MatchAllWordForms=*/false, /*Forward=*/true, /*Wrap=*/1, /*Format=*/false, /*ReplaceWith=*/Edit3->Text.c_str(), /*Replace=*/2);
vVarApp.OlePropertyGet("Selection").OlePropertyGet("Find").OleProcedure("Execute", /*FindText=*/ "инструкция", /*MatchCase=*/false, /*MatchWholeWord=*/ false, /*MatchWildcards=*/false, /*MatchSoundsLike=*/false, /*MatchAllWordForms=*/false, /*Forward=*/true, /*Wrap=*/1, /*Format=*/false, /*ReplaceWith=*/Edit4->Text.c_str(), /*Replace=*/2);
vVarApp.OlePropertyGet("Selection").OlePropertyGet("Find").OleProcedure("Execute", /*FindText=*/ "исполнитель", /*MatchCase=*/false, /*MatchWholeWord=*/ false, /*MatchWildcards=*/false, /*MatchSoundsLike=*/false, /*MatchAllWordForms=*/false, /*Forward=*/true, /*Wrap=*/1, /*Format=*/false, /*ReplaceWith=*/Edit5->Text.c_str(), /*Replace=*/2);
 
//вот тут и "ошибка" при выполнении сохранения
vVarApp.OlePropertyGet("ActiveDocument").OleProcedure("SaveAs", WideString(NameFile));//Сохраняем
 
 
ShowMessage("Файл был успешно сформирован и сохранен: "+NameFile);
 
if (fStart)
        {
            vVarApp.OleProcedure("Quit");
            fStart = false;
        }
 
if (FileExists(NameFile.c_str())) {
ShellExecute(Handle, "open", NameFile.c_str(), NULL, NULL, SW_SHOW);
}
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.04.2015, 13:46
Ответы с готовыми решениями:

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

Ошибка при сохранении файла через Interop.Word
хелп ми плиз! Вот код var wordApp = new Word.Application(); wordApp.Visible = false; var document =...

Ошибка при сохранении документа в формате PDF: OLE error 800A03EC
Добрый день! Подскажите, пожалуйста, в чем может быть проблема при сохранении документа в формате PDF с помощью метода:...

13
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
06.04.2015, 15:31
Цитата Сообщение от demon_7 Посмотреть сообщение
//вот тут и "ошибка" при выполнении сохранения
То есть ошибка именно в сороковой строке? Точно?
0
 Аватар для demon_7
260 / 192 / 60
Регистрация: 12.05.2013
Сообщений: 857
06.04.2015, 15:40  [ТС]
Цитата Сообщение от SatanaXIII Посмотреть сообщение
То есть ошибка именно в сороковой строке? Точно?
Именно. Я уже думал на наличие прав, так как у себя то я имею права администратора, но такие проблемы иногда замечаются и у пользователей с правами администратора, что меня полностью сбивает с толку.
На своем рабочем месте, ни разу не воспроизводилось.
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
06.04.2015, 15:51
Винда - она такая винда... Да еще и активность антивиря можно взять в расчет. Я давно подметил, что ошибки доступа зависят также и от флуктуаций мирового эфира.

Тут можно попытаться сохранять повторно. Попробовали - не сохранилось. Подождали. Попробовали еще раз.
0
 Аватар для demon_7
260 / 192 / 60
Регистрация: 12.05.2013
Сообщений: 857
06.04.2015, 15:55  [ТС]
Цитата Сообщение от BRcr Посмотреть сообщение
Тут можно попытаться сохранять повторно. Попробовали - не сохранилось. Подождали. Попробовали еще раз.
При повторном нажатии, у пользователей отображается открытый шаблон не смотря на то что он скрыт намеренно
C++
1
//vVarApp.OlePropertySet("Visible",true);
в шаблоне произведены все замены. Его конечно можно пересохранить и изменить название, но я считаю что это лишние манипуляции, которые в последствии приводят к зависании RPC сервера :3
0
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
06.04.2015, 16:02
demon_7, честно сказать, у меня, к сожалению, нет мыслей на этот счет.
Единственное что - поглядеть версии самого ворда на вашем и на пользовательских компутерах.
Ну или, если совсем ничего не придумается, то логировать вообще все, а потом разбираться.
0
 Аватар для demon_7
260 / 192 / 60
Регистрация: 12.05.2013
Сообщений: 857
06.04.2015, 16:17  [ТС]
Да версии первое что проверил, откинул тех у кого 13 офис, но и на 10 так же бывает выскакивает.
Сейчас мысля пришла дать ему путь сохранения на общую папку в шаре, где даже у обычного юсера права бога!
В любом случае спасибо за советы, я думал может из за неопытности работы с OLE чего то упустил.
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
06.04.2015, 16:24
Цитата Сообщение от demon_7 Посмотреть сообщение
В любом случае спасибо за советы, я думал может из за неопытности работы с OLE чего то упустил.
Я не смыслю толком в Ole. Так что отсутствие комментариев мало что значит...
0
1408 / 572 / 127
Регистрация: 31.10.2011
Сообщений: 1,960
06.04.2015, 21:39
а NameFile часом не заканчивается на \ ?
А то
C++
1
NameFile=Edit6->Text+"\\Регламент "+ComboBox1->Text+" "+Edit1->Text+".docx"; //Edit6 строка в которой прописан путь к сохранению
0
 Аватар для demon_7
260 / 192 / 60
Регистрация: 12.05.2013
Сообщений: 857
06.04.2015, 22:19  [ТС]
Цитата Сообщение от _Dimon_ Посмотреть сообщение
а NameFile часом не заканчивается на \ ?
Нет, путь формируется корректно, тем более повторюсь, на моем АРМ'е все работает отлично. а у других пользователей 50/50. Либо ошибка, либо норм.

Добавлено через 13 минут
В конце рабочего дня, выяснил что UAC у пользователей включен, а у меня нет. Думаю провести тесты с отключенным UAC.
0
1408 / 572 / 127
Регистрация: 31.10.2011
Сообщений: 1,960
06.04.2015, 22:22
Цитата Сообщение от demon_7 Посмотреть сообщение
Думаю провести тесты с отключенным UAC.
может с включенным?
0
 Аватар для demon_7
260 / 192 / 60
Регистрация: 12.05.2013
Сообщений: 857
06.04.2015, 22:35  [ТС]
Цитата Сообщение от _Dimon_ Посмотреть сообщение
может с включенным?
Он должен быть отключен, у той группы пользователей. Так как многое корпоративное ПО имеет рекомендации, либо отключать его либо выставить минимал, в любом случае завтра отпишусь.
Удаленно делая тесты из дома, сохраняет на шару, в папку с доступом для всех групп, без проблем.
Так что большее склоняюсь к теории с проблемами в правах пользователей.

Не по теме:

P.S. странно что есть проблемы с правами на своем компе у тех людей кто ведает DNS и выдает всем права :D

0
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
07.04.2015, 09:11
Цитата Сообщение от demon_7 Посмотреть сообщение
Думаю провести тесты с отключенным UAC.
Оговоритесь еще тогда пожалуйста что за версии винды вы там везде используете.
P.S. И нельзя ли получить тестовый обрезанный образец? Можно было б у себя потыкаться и вам доложиться о результатах.
0
 Аватар для demon_7
260 / 192 / 60
Регистрация: 12.05.2013
Сообщений: 857
07.04.2015, 10:10  [ТС]
Цитата Сообщение от SatanaXIII Посмотреть сообщение
Оговоритесь еще тогда пожалуйста что за версии винды вы там везде используете.
P.S. И нельзя ли получить тестовый обрезанный образец? Можно было б у себя потыкаться и вам доложиться о результатах.
У всех Win 7 x64 корпоративная. Образец с инструкциями выслала в ЛС. :3
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.04.2015, 10:10
Помогаю со студенческими работами здесь

Ошибка при сохранении в БД через UpdateAll
Всех приветствую! Извиняюсь за очередную подобную тему, но ответы гугла как и местного форума к положительному результату не привели....

Ошибка при сохранении файла
Почему при сохранении файла, если для формирования его имени использовать DateToStr(Now()) и TimeToStr(Now()) происходит ошибка? void...

Ошибка при сохранении файла
Хотел сохранить файл. Маткад сказал, что сохранить не может, но есть резервная копия. Вышел из маткада. Вхожу - файла нет, всплывает...

Ошибка при сохранении файла из phpexcel
При сохранении файла выдается ошибка: Fatal error: Class 'PHPExcel_Shared_OLE_PPS_File' not found in /Classes/PHPExcel/Writer/Excel5.php...

Ошибка в методе при сохранении файла
Пытаюсь сохранить контейнер в файл, но выводит ошибку в классе tHouse на строчке 86. Понять не могу, в чем проблема. Так же указывает на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru