Модераторы: mihanik
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> функция chrW, ну нуб я, нуб. 
V
    Опции темы
Insert
  Дата 17.10.2006, 22:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 13.4.2006

Репутация: нет
Всего: 1



 Здравствуйте,
Так недавно, точнее вчера практически впервые увидел синтаксис VBA, так что ясно какой мой уровень.
 Есть макрос, он должен исправлять в тексте символы с кодировкой Latin на кириллицу. Но траблы пока что не в этом. У меня есть разработки другого программера, он тоже писал весч для поиска и форматирования 
каких то слов, так вот я макрос этот должен переделать. есть как бы матрица в буква русского алвавита соответствует коду символа на latin, так когда я читаю символ из документа я должен распознать его код (чтоб заменить на соответствующий ему символ кириллицы), функция которая возвращаяет код символа
вроде ChrW(здесь я вставляю символ из документа). На этой функции как раз компилятор и ругается, типа не соответствие типов, как я понял она не может работать со строками. Может есть альтернативная функция, которая поможет мне получить код символа? 

  Заранее спасибо. smile 
--------------------
пьяный русский кодер практически непобедим
PM MAIL   Вверх
Romikgy
Дата 17.10.2006, 22:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: нет
Всего: 146



Chr 
разве не это?

Добавлено @ 22:27 
Код

Returns a String containing the character associated with the specified character code.

Syntax

Chr(charcode)

The required charcode argument is a Long that identifies a character.

Remarks

Numbers from 0 – 31 are the same as standard, nonprintable ASCII codes. For example, Chr(10) returns a linefeed character. The normal range for charcode is 0 – 255. However, on DBCS systems, the actual range for charcode is -32768 to 65535.

Note   The ChrB function is used with byte data contained in a String. Instead of returning a character, which may be one or two bytes, ChrB always returns a single byte. The ChrW function returns a String containing the Unicode character except on platforms where Unicode is not supported, in which case, the behavior is identical to the Chr function.

Note   Visual Basic for the Macintosh does not support Unicode strings. Therefore, ChrW(n) cannot return all Unicode characters for n values in the range of 128 – 65,535, as it does in the Windows environment. Instead, ChrW(n) attempts a "best guess" for Unicode values n greater than 127. Therefore, you should not use ChrW in the Macintosh environment.




--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Akina
Дата 17.10.2006, 23:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 26
Всего: 454



Код символа возвращает функция Asc и ее вариации.

Цитата

The Asc, AscB, and AscW Functions

These functions are the inverses of the Chr functions. For instance, AscB takes a single character (byte) ABSTR and returns a byte equal to the character's ANSI code. To see that the return type is a byte, try running the code:

Debug.Print VarType(AscB("h")) = vbByte

(The output is True.) It may appear that AscB will accept a BSTR as input, but in reality, it just takes the first byte in the BSTR.

The Asc function takes a BSTR (but not an ABSTR) and returns an integer equal to the character's Unicode code.


Функция Chr и ее вариации выполняют обратную задачу - возвращают символ с заданным кодом

Цитата

The Chr, ChrB, and ChrW Functions

These three functions have different input ranges and produce different outputs. These differences can seem confusing at first—you may have to read the definitions a few times: 

Chr takes a long value x in the range 0 to 255 and returns a BSTR of length 1. This one character pointed to by the BSTR has Unicode code equal to x. (In this case, the Unicode and ANSI values are actually equal.) Note that, according to the latest documentation, there is no difference between Chr and Chr$. 


ChrB takes a long value x in the range 0 to 255 and returns an ABSTR of length 1 (byte). This one byte pointed to by the ABSTR has ANSI code equal to x. 

ChrW takes a long value x in the range 0 to 65535 and returns a BSTR of length 1. This one character pointed to by the BSTR has Unicode code equal to x. 





--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Insert
Дата 18.10.2006, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 13.4.2006

Репутация: нет
Всего: 1



ok, спасибо.
  Я составил с помощью этих функций таблицу кодов и соответствующих им символов и даже смог интегрировать все это в макрос(другого программера, который форматирует слова, н-р: както на как-то), но все работает отлично, если не одно но, этот макрос за единицу берет слово и его сверяет со словом в своей библиотеке, у меня тоже все работает, когда символ кривой представляет собой слово собственной длины, а если этот кривой символ встречается подряд, то он распознает его как слово сравнивает коды и ясно что ниче не совпадает. Короче мне надо взять за единицу не слово а символ и написать процедуру проверки символов по одному начиная с начала до конца документа , как организовать такой цикл? замену внутри цикла думаю сам напишу.
--------------------
пьяный русский кодер практически непобедим
PM MAIL   Вверх
Insert
Дата 18.10.2006, 18:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 13.4.2006

Репутация: нет
Всего: 1



сорри, ответ на предыдущий пост нашел, но появилась новая трабла:
как заменить весь текст документа на переменную стринг?
--------------------
пьяный русский кодер практически непобедим
PM MAIL   Вверх
Akina
Дата 18.10.2006, 18:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 26
Всего: 454



Еще понять бы где у тебя текст документа? в Ворде? или еще где?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Insert
Дата 18.10.2006, 20:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 13.4.2006

Репутация: нет
Всего: 1



да в ворде я к нему обращатся пытаюсь как Thisdocument. итд.
Появилась новая трабла, когда модуль принес домой, попробовал запустить, то как я понял он не видит текста документа, потому что ThisDocument.Characters.Count на работе выдавала количество символов, а дома всегда 1, не смотря на то есть текст или нету, с чем это может быть связано?
--------------------
пьяный русский кодер практически непобедим
PM MAIL   Вверх
Genyaa
Дата 18.10.2006, 23:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Усердный
*


Профиль
Группа: Участник
Сообщений: 154
Регистрация: 25.9.2006
Где: Москва

Репутация: 2
Всего: 11



Цитата(Insert @ 18.10.2006,  19:25)
как заменить весь текст документа на переменную стринг?

ThisDocument.Content.Text - возвращает текст Этого документа в виде String.
--------------------
Всякое решение плодит новые проблемы.
PM WWW   Вверх
Insert
Дата 19.10.2006, 15:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 13.4.2006

Репутация: нет
Всего: 1



Спасибо большое.
   У меня последний вопрос: как обратится к выделенному тексту и получить от него количество символов и сам текст?
 З.Ы: InStr - что это за функция и что она делает?
ЗЗЫ: можно ли обратится к символу переменной типа стринг по индексу как это в pascal/delphi?


Это сообщение отредактировал(а) Insert - 19.10.2006, 18:06
--------------------
пьяный русский кодер практически непобедим
PM MAIL   Вверх
Aloha
Дата 19.10.2006, 19:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


.
**


Профиль
Группа: Участник Клуба
Сообщений: 351
Регистрация: 14.5.2006

Репутация: 5
Всего: 165



Insert

Цитата
как обратится к выделенному тексту и получить ... сам текст
Код
Selection.Text

_________________________________________
Цитата
как обратится к выделенному тексту и получить от него количество символов
Код
Selection.Characters.Count
или
Код
Len(Selection.Text)

_________________________________________
Цитата
InStr - что это за функция и что она делает
InStr([start,] string1, string2[, compare])
Возвращает Variant (Long) определяющее позицию первого вхождения одной строки в другую
Аргументы функции InStr:
start    Необязательный. Числовое выражение, которое устанавливает начальную позицию для поиска. Если опущено, поиск начинается с первого символа. Требуется, если определен характер сравнения.
string1    Обязательный. Строковое выражение, в котором ведется поиск.
string2    Обязательный. Строковое выражение, поиск которого ведется.
compare    Необязательный. Определяет тип сравнения строк.
_________________________________________
Цитата
можно ли обратится к символу переменной типа стринг по индексу

Mid(string, start[, length])
Код
Mid(v_String, v_CharacterNumber, 1)



Это сообщение отредактировал(а) Aloha - 19.10.2006, 19:49
PM   Вверх
Genyaa
Дата 19.10.2006, 19:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Усердный
*


Профиль
Группа: Участник
Сообщений: 154
Регистрация: 25.9.2006
Где: Москва

Репутация: 2
Всего: 11



Цитата

   У меня последний вопрос: как обратится к выделенному тексту и получить от него количество символов и сам текст?

Selection.Text - выделенный в данный момент текст в виде String
Len(Selection.Text) - длина выделенного текста 
Slection.Characters.Count - количество символов в выделенной области - у меня получилось это равно Len(Selection.Text)
Цитата

 З.Ы: InStr - что это за функция и что она делает?

Возвращает положение (адрес) подстроки в строке, если построка есть в этой строке, иначе 0.
Цитата

ЗЗЫ: можно ли обратится к символу переменной типа стринг по индексу как это в pascal/delphi?

Функция Mid возвращает любую часть строки с указанного символа указанной длины. Например:

Mid("Это пример текста", 8, 1) вернет "м"
--------------------
Всякое решение плодит новые проблемы.
PM WWW   Вверх
Insert
Дата 19.10.2006, 20:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 13.4.2006

Репутация: нет
Всего: 1



Большое вам спасибо) буду пробовать. Aloha твой код попробую оч надеюсь что подойдет.
--------------------
пьяный русский кодер практически непобедим
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование, связанное с MS Office"
mihanik staruha

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами



  • Несанкционированная реклама на форуме запрещена
  • Пожалуйста, давайте своим темам осмысленный, информативный заголовок. Вопль "Помогите!" таковым не является.
  • Чем полнее и яснее Вы изложите проблему, тем быстрее мы её решим.
  • Оставляйте свои записи в "Книге отзывов о работе администрации"
  • А вот тут лежит FAQ нашего подраздела


Если Вам понравилась атмосфера форума, заходите к нам чаще!
С уважением mihanik и staruha.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программирование, связанное с MS Office | Следующая тема »


 




[ Время генерации скрипта: 0.0574 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.