Форум » [x]Harbour » Вопрос знатокам препроцессора » Ответить

Вопрос знатокам препроцессора

Pasha: Мне надо транслировать выражение _GetIni(aDB, 'Database') в конструкцию aDB['Database'] Пытаюсь сделать это командой: #xtranslate _GetIni(<hHash>, <cName>) =><hHash>[<cName>] Получаю ошибку компиляции. Я так понимаю, что это из-за использования квадратных скобок. Можно ли сделать подобную трансляцию средствами препроцессора ?

Ответов - 7

AlexMyr: Если так как в доке сделать #define O1 [ #define O2 ] #xtranslate _GetIni(<hHash>, <cName>) => <hHash> O1 <cName> O2 то на выходе получим aDB [ "Database" ] надо как-то пробел убрать А лучше у Przemeka спросить.

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

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


AlexMyr: petr707 пишет: а если попробовать #xtranslate _GetIni(<hHash>, <cName>) => <hHash>O1<cName>O2 пробовал, получаем такое aDbO1"DataBase"] Pasha пишет: Да черт с ними, с этими пробелами. да в том и дело что пробел между aDb и ["DataBase"], компилятор ругается.

Pasha: 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" ]) ) и этот код работает.

AlexMyr: Но в рантайме выдает ошибку Error BASE/1003 Variable does not exist: ADB

Pasha: AlexMyr пишет: Но в рантайме выдает ошибку Error BASE/1003 Variable does not exist: ADB Так это же другая ошибка. Наверное, переменная действительно не существует. Ее надо обьявить: local или private



полная версия страницы