Форум » [x]Harbour » Как создать код блока из статик переменной ? » Ответить

Как создать код блока из статик переменной ?

Andrey: Вот сижу и не могу сделать вроде простую вещь. Имеются две статик переменных, в которые передаю разные поля базы, например для бд CITY: cStPole_Kod := "KCITY" cStPole_Name := "CITY" А в обработке, нужно получить кодоблок из этих переменных: AADD(aColorUsl, { { || cStPole_Kod == 0 } , "12/2" } ) AADD(aColorUsl, { { || LEN(cStPole_Name) == 0 }, "12/3" } ) Помогите пожалуйста.

Ответов - 4

petr707: Цитата: { || cStPole_Kod == 0 } Что-то не так.. это же ( "KCITY" == 0 ), то есть сравнение разных типов - строка и число Может, нужно вычислить { || &cStPole_Kod == 0 } ? Тогда можно { || FieldGet(Fieldnum(cStPole_Kod)) == 0 } если в переменной - точно имя поля , а не любое значение Или добавить две новые функции доступа к этим переменным Function cStPole_Kod() return &cStPole_Kod Function cStPole_Name() return &cStPole_Name тогда блок будет { || cStPole_Kod() == 0 }

Andrey: petr707 пишет: Что-то не так.. это же ( "KCITY" == 0 ), то есть сравнение разных типов - строка и число Мне нужно сделать { || KCITY == 0 } ! petr707 пишет: Может, нужно вычислить { || &cStPole_Kod == 0 } ? При такой макроподстановке - идет ошибка: Harbour 3.2.0dev (r1406261642) Copyright (c) 1999-2014, http://harbour-project.org/ Sel_DimHmg.prg(909) Error E0047 Code block contains both macro and declared symbol references 'CSTPOLE_KOD' Sel_DimHmg.prg(909) Error E0042 Macro of declared symbol '{ || &cStPole_Kod == 0 }' Sel_DimHmg.prg(910) Error E0047 Code block contains both macro and declared symbol references 'CSTPOLE_NAME' Sel_DimHmg.prg(910) Error E0042 Macro of declared symbol '{ || LEN(&cStPole_Name) == 0 }'

petr707: В том и дело, что для типа Static переменной, вроде как, нельзя использовать &cStPole_Kod в блоке кода нужно - или Fieldget(.. - или функции - или { || &(cStPole_Kod) == 0 } - или cStPole_Kod объявить как Public


Andrey: petr707 пишет: { || &(cStPole_Kod) == 0 } Спасибо БОЛЬШОЕ ! Заработало как статик: { || &(cStPole_Kod) == 0 } { || LEN(ALLTRIM(&(cStPole_Name))) == 0 }



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