Если это ваш первый визит, рекомендуем почитать справку по форуму. Для размещения своих сообщений необходимо зарегистрироваться. Для просмотра сообщений выберите раздел. |
Что-то поменялось или в XE6 или в Word2013 не могу понять что. |
Философия, технологии, алгоритмы! |
|
|
Опции темы |
31.07.2014, 18:45 | #1 | |
Форумец
Сообщений: 6,813
Регистрация: 26.04.2006
Возраст: 44
Не в сети |
Что-то поменялось или в XE6 или в Word2013 не могу понять что.
Вот код, рабочий в XE2 и на word2010
Цитата:
Это лишь фрагмент, в полной программе приходится комментировать строки, содержащие обращение к OlePropertySet("Text"..... чтобы ворд не выдавал ошибку. В Ворде поменялось название свойства "Text" ? Как уже в самом ворде посмотреть, на что он ругается? Последний раз редактировалось Eвгений; 01.08.2014 в 00:03. |
|
31.07.2014, 19:08 | #2 |
Форумец
Сообщений: 39,997
Регистрация: 27.05.2003
Возраст: 46
Не в сети |
сделай
VDoc.OlePropertyGet("Paragraphs").OleFunction("Ite m",1).OlePropertyGet("Range").OlePropertyGet("Text "); и посмотри ТИП возвращаемой переменной. Там вариант, кажется возвращается, это класс, у него есть тип. Потом добейся чтобы у тебя передаваемое значение в Set было того же типа. Для этого заведи переменную, ее присвой перед передачей, и проверь тип. Если не совпадает - добейся чтобы совпал. |
31.07.2014, 19:15 | #4 |
Форумец
Сообщений: 39,997
Регистрация: 27.05.2003
Возраст: 46
Не в сети |
присвой переменную того типа, который возвращает эта функция.
тип можно поcмотреть как минимум в Help, поставив курсор на функцию, и нажав F1. это будет что-то типа TVariant (или просто Variant) заведи переменную такого типа, присвой и в отладчике посмотри на содержимое. должен разобраться. там среди пропертей (свойств) будет ТИП ЗНАЧЕНИЯ. |
31.07.2014, 19:24 | #5 | |
Форумец
Сообщений: 6,813
Регистрация: 26.04.2006
Возраст: 44
Не в сети |
Вот что у меня в начале
Цитата:
Я-то попробовал, добавил, в watch list VDoc появился, но пишет "process ot accessible" |
|
31.07.2014, 19:31 | #6 |
Форумец
Сообщений: 39,997
Регистрация: 27.05.2003
Возраст: 46
Не в сети |
тебе нужно САМОМУ завести НОВУЮ переменнуюб типа Variant
Variant eugeny; потом написать строку типа eugeny = VDoc.OlePropertyGet("Paragraphs").OleFunction("Ite m",1).OlePropertyGet("Range").OlePropertyGet("T ext "); ПЕРЕД тем присвоением, которое не работает. поставить на нее Breakpoint, запустить программу, остановиться на нем, ВЫПОЛНИТЬ ЭТУ СТРОКУ (с OlePropertyGet ) и после этого посмотреть содержимое eugeny в Watch List, разверни, там будет в том числе тип. |
31.07.2014, 19:43 | #7 |
Форумец
Сообщений: 39,997
Регистрация: 27.05.2003
Возраст: 46
Не в сети |
|
31.07.2014, 19:50 | #9 |
Форумец
Сообщений: 39,997
Регистрация: 27.05.2003
Возраст: 46
Не в сети |
|
31.07.2014, 19:58 | #11 |
Форумец
Сообщений: 6,813
Регистрация: 26.04.2006
Возраст: 44
Не в сети |
Я уже между делом и так и так попробовал вместо temp_text.c_str() - просто temp_text, AnsiString(temp_text), IntToStr(I), в двойных и одинарных кавычках текст печатал - одно и то же.
Какие еще варианты обращения к свойству можно попробовать, чтобы ворд схавал? |
31.07.2014, 20:04 | #12 |
Форумец
Сообщений: 39,997
Регистрация: 27.05.2003
Возраст: 46
Не в сети |
смотри, ты наверное указатель объявил, на вариант.
поэтому он и не может обратиться к другому процессу, когда упал на бряке. тебе нужно именно значение получить. посмотри, там у варианта должна быть функция. которая возвращает тип, как строку. сохрани ее В ОТДЕЛЬНОЙ ПЕРЕМЕННОЙ (строковой, string, а не вариант), и ПОСЛЕ присвоения посмотри тип (значение этой строковой переменной). т.е. breakpoint должен стоять после этого присвоения. |
31.07.2014, 21:10 | #14 | |
Форумец
Сообщений: 39,997
Регистрация: 27.05.2003
Возраст: 46
Не в сети |
Цитата:
только если это именно локальная переменная типа int (Integer кажется в паскале, давно уже не брал в руки шашек), а не хитрая пропертя какого класса, которая маскируется под обычную переменную. так что если пропертя, то поступи с ней так же, как и с типом варианта - присвой значение в локальную переменную простого типа. |
|
31.07.2014, 22:06 | #18 | |
Форумец
Сообщений: 39,997
Регистрация: 27.05.2003
Возраст: 46
Не в сети |
Цитата:
0x32 - это код символа '2' т.е. кривое преобразование строки в инт. UPD: кавычки двойные попробуй. сраный ваш паскаль... |
|
31.07.2014, 22:22 | #19 |
Форумец
Сообщений: 6,813
Регистрация: 26.04.2006
Возраст: 44
Не в сети |
Да, но оно кривое при кривом написании - кавычки одинарные, если подставлять строковую переменную - то ругается уже ворд.
Нет ли каких-либо глобальных настроек работы со строками? Например как _TCHAR maps to ? |
31.07.2014, 22:27 | #20 | |
Форумец
Сообщений: 39,997
Регистрация: 27.05.2003
Возраст: 46
Не в сети |
Цитата:
присвой ей значение, которое хочешь передать. проверь в отладчике значение. 2) создай переменную типа вариант, присвой ей строковую переменную из шага 1. проверь в отладчике значение и тип. 3) передай эту переменную в Ole-функцию. _TCHAR - это тип одинарных / двойных чаров, а у тебя идет преобразование строкового типа в целочисленный, но возможно кривизна и потому что надо передавать другой тип строк (чаров). |
|
31.07.2014, 22:37 | #21 | |
highly mean
Сообщений: 1,128
Регистрация: 26.05.2011
Возраст: 35
Не в сети |
Цитата:
Паскаль? |
|
31.07.2014, 22:42 | #24 |
highly mean
Сообщений: 1,128
Регистрация: 26.05.2011
Возраст: 35
Не в сети |
Кто их поймет, этих извращенцев… Вообще, для простых документов можно сохранить шаблон в ворде в docx, распаковать это дело (этож зип с эксемельками), и работать каким-нибудь текстовым шаблонизатором.
|
31.07.2014, 23:11 | #26 | |
Форумец
Сообщений: 6,813
Регистрация: 26.04.2006
Возраст: 44
Не в сети |
Spectator,
Цитата:
То есть одинарные кавычки, которые я чисто от нечего делать (А Я ПИСАЛ ОБ ЭТОМ В ПОСТЕ №11) один раз поставил, это для тебя признак паскаля, а целый кусок кода в самом начале ты не идентифицировал как Си? И после этого ты мне будешь о знаниях говорить? Битый час (даже два) пытаюсь добиться от него помощи, а он со мной на паскале разговаривает... |
|
31.07.2014, 23:30 | #28 |
Форумец
Сообщений: 39,997
Регистрация: 27.05.2003
Возраст: 46
Не в сети |
ты не умничай. я паскаль уже 10 лет в глаза не видел и видеть не хочу. поэтому строки в одинарных кавычках - для меня уже признак паскаля. то что это глюк твой, а не ворда или билдера, это однозначно, у тебя криво преобразуется строка в число.
|
31.07.2014, 23:39 | #29 | |
Форумец
Сообщений: 6,813
Регистрация: 26.04.2006
Возраст: 44
Не в сети |
Spectator,
Сделал отладку. Записал в переменную vvv (тип Variant) Цитата:
Последний раз редактировалось Eвгений; 01.08.2014 в 00:10. |
|