0
- 02.02.2015 - 23:37
|
В Delphi7 выполняется обычный код: pchDDECommand := StrAlloc(Length(sDDECommand) + 1); StrPCopy(pchDDECommand, sDDECommand); sDDECommand заполнена командами VisualBasic, в отладке хорошо видно, сто начинается строка со слов WordBasic.FileOpen !!! Запускаем макрос в Word ddeclientCaptain.ExecuteMacro(pchDDECommand, false) и видим ошибку: Что за мистические dim в начале? Кто-нибудь сталкивался с подобным? Хоть в каком направлении копать? :-) | |
1
- 03.02.2015 - 00:49
|
Приблизительно понятно, в чём дело... Дело в двойных кавычках. Где-то в параметрах команды WordBasic.Insert встретились двойные кавычки - и для стали "переменными"... Хорошо, двойные кавычки " мы удвоим. А угловые кавычки вообще не отображаются в конечном документе вместе со своим содержимым! А как же тогда угловые кавычки «» внести в параметры команды WordBasic.Insert? | |
2
- 03.02.2015 - 09:05
| Для справки: dim в VisualBasic обозначает объявление локальной переменной. | |
3
- 03.02.2015 - 13:49
|
2225777 - на скрине в 14-й строке подсвечен не ASCII-смовол, обозначенный знаком ? - это ошибка. Возможно она следствие грубого копирования текста из чего-то непотребного типа Блокнота... Блокнот - самоя вредная программа и привычка для программистов. Поставьте в Word VBA IDE нормальный простой пропорциональный шрифт (Courier New Cyr) - и будете легко отличать парные, косые и типографские кавычки в тексте кода. У вас в коде ВЕЗДЕ не те кавычки, допустимы ТОЛЬКО простые - " Обычная типографская кавычка - " - CHR(34) Если позарез нужны в параметры команды WordBasic.Insert всунуть разнонаправленные "парные" кавычки, то это коды 147/148, а также "русские"-умолчальные в Word, коды 171, 187. Кстати, парные кавычки даже в самом Word-е неправильно разворачиваются в целом ряде случаев. Поэтому для серьезных дел от них отказываются. Это такой же маразм, как писать инициалы перед ФИО, в то время как везде в компьютерной обработке наоборот. Стандартописателям обоих полов надо вырвать парные органы, чтобы не плодили свои стандарты... | |
4
- 03.02.2015 - 17:13
|
2 economist: Спасибо большое за Ваши дельные советы! :-) К сожалению, я сама не управляю кавычками именно в среде VisualBasic - код передаётся из Delphi7, а в Delphi - обычная запись: sDDECommand := '[FileOpen "' + sSelectedDoc + '" ][StartOfDocument]' + ... '[EditBookmark .Name = "clientsName02", .Goto][Insert "' + sClnName + '"]' + '[ViewPage]' + sCommandDate + sCommandFileSave; То есть, просто ввожу в строке, заключаемой в одинарные кавычки, - двойные кавычки с клавиатуры. А насчёт символов 171 и 187 вот на такой код из Delphi7 str:= StringReplace(str, '«', '" + Chr(171) + "', [rfReplaceAll]); str:= StringReplace(str, '»', '" + Chr(187) + "', [rfReplaceAll]); товарищ VisualBasic сказал вот это :-) | |
5
- 03.02.2015 - 17:16
|
На скрине не видно подсвечивание ошибки: это Chr___(171) и Chr___(187)... Как же тогда написать, чтобы функция Chr перестала быть неопределённой? :-) | |
6
- 05.02.2015 - 10:40
|
Мдя, вот изврат-то какой в исполнении программистов: вставлять кодом на Delphi код VBA, и при этом еще и парсить его криво. Впрочем, дельфийских поделок вокруг столько, что проще переделать систему сбора заявок на чистом VBA (я бы так поступил). У вас не работает код потому что неправильно вставился код функций - нельзя ____ ! Просто Chr(171) и Chr(187) И еще раз подумайте - нахрена вам парность кавычек? Что за антиинформационный перфекционизм? Ставьте обычные в выражении вот так: "Адрес: " & "Ул. Мира, д. 5, корпус ""б""" Получится вот так: Адрес: Ул. Мира, д. 5, корпус "б" И еще - замените все косые кавычки в коде на ровные, как зубы у зайца - " И попробуйте в Delphi str:= StringReplace(str, '«', '""', [rfReplaceAll]); или str:= StringReplace(str, '«', '"', [rfReplaceAll]); | |
7
- 05.02.2015 - 10:43
|
Чтобы видеть в Форуме код как код, моноширинным грифтом - его надо заключить в теги: Код:
| |
8
- 05.02.2015 - 10:50
|
теги code /code все в квадратных скобках | |
| Интернет-форум Краснодарского края и Краснодара |