On-line: tnsr2, гостей 0. Всего: 1 [подробнее..]
АвторСообщение
Администратор




Пост N: 2139
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 19.10.11 13:50. Заголовок: Вопрос знатокам препроцессора


Мне надо транслировать выражение

_GetIni(aDB, 'Database')

в конструкцию

aDB['Database']

Пытаюсь сделать это командой:

#xtranslate _GetIni(<hHash>, <cName>) =><hHash>[<cName>]

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

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 7 [только новые]





Пост N: 299
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 19.10.11 17:05. Заголовок: Если так как в доке ..


Если так как в доке сделать
#define O1 [
#define O2 ]
#xtranslate _GetIni(<hHash>, <cName>) => <hHash> O1 <cName> O2

то на выходе получим
aDB [ "Database" ]

надо как-то пробел убрать
А лучше у Przemeka спросить.

Спасибо: 0 
ПрофильЦитата Ответить



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 19.10.11 18:50. Заголовок: Пробелы


а в оригинале пробелы - есть?
#xtranslate _GetIni(<hHash>, <cName>) => <hHash> O1 <cName> O2

а если попробовать
#xtranslate _GetIni(<hHash>, <cName>) => <hHash>O1<cName>O2


Спасибо: 0 
Цитата Ответить
Администратор




Пост N: 2142
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 19.10.11 19:20. Заголовок: Да черт с ними, с эт..


Да черт с ними, с этими пробелами. Лишь бы правильно транслировалось, и компилятор понимал код.
Спасибо.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 300
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 19.10.11 20:53. Заголовок: petr707 пишет: а ес..


petr707 пишет:

 цитата:
а если попробовать
#xtranslate _GetIni(<hHash>, <cName>) => <hHash>O1<cName>O2


пробовал, получаем такое

aDbO1"DataBase"]

Pasha пишет:

 цитата:
Да черт с ними, с этими пробелами.


да в том и дело что пробел между aDb и ["DataBase"], компилятор ругается.

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 2143
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 20.10.11 08:06. Заголовок: AlexMyr пишет: да в..


AlexMyr пишет:

 цитата:
да в том и дело что пробел между aDb и ["DataBase"], компилятор ругается.



Да нет же, компилирует, причем и xHarbour, и Harbour:

#define o1 [
#define o2 ]
#xtranslate _GetIni(<hHash>, <cName>) => <hHash> o1 <cName> o2

func main
Local aIni := hb_Hash()

aIni[ "Path" ] := hb_Hash()
? ValType(_GetIni(aIni, 'Path'))
retu nil

фрагмент из ppo:

QOut( ValType(aIni [ "Path" ]) )

и этот код работает.


Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 301
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 20.10.11 08:56. Заголовок: Но в рантайме выдает..


Но в рантайме выдает ошибку

Error BASE/1003 Variable does not exist: ADB

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 2144
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 20.10.11 09:30. Заголовок: AlexMyr пишет: Но в..


AlexMyr пишет:

 цитата:
Но в рантайме выдает ошибку

Error BASE/1003 Variable does not exist: ADB



Так это же другая ошибка. Наверное, переменная действительно не существует. Ее надо обьявить: local или private

Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 116
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет