среда, 26 февраля 2014 г.

Делфи - очень делфи.

Допустим у вас есть ADQuery, в которую вы пишете запрос. Допустим UPDATE.
Допустим вам надо дать пользователю возможность отредактировать любое сочетание полей в строке таблицы. И, например, чтобы это сделать, вам надо удалить записанное ранее значение во внешнем ключе. т.е. записать туда NULL. Не 0 - а именно, что ничего.

Вы пишете запрос, добавляете туда параметр... Ну, например:

SQL.Clear;
Params.Clear;
SQL.Add('UPDATE my_table SET my_fk = :NullParam;');


...И начинаете думать, как же мне засунуть туда NULL?
Пара минут гуглинга и вы счастливо пишете что-то в духе:

ParamByName('NullParam').Clear;
ExecSQL;


И... Получаете ошибку "... [AnyDAC][Phys][ODBC]-335.Parameter [NULLPARAM] data typ is unknown. ..."

Как это неизвестный тип, думаете вы?..  Какой ему нужен тип?.. Может быть это что-то вроде " int? " в Шарпе?.. Но нет, просто где-то внутри ему нужен тип параметра, чтобы собрать запрос. И он нужен до значения.
Итак. Нужен тип параметра, чтобы все это собрать. А как задать тип параметра? Что мы делаем обычно. Обычно, мы "отипиваем" параметр и даем ему значение:

ParamByName('NullParam').AsInteger = some_int_var;

Однако, выражение AsInteger требует правой части, написать просто:

ParamByName('NullParam').AsInteger;
ParamByName('NullParam').Clear;


...нам ничем не поможет. Зато нас вполне устроит

ParamByName('NullParam').AsInteger = 0;
ParamByName('NullParam').Clear;


Ура! Все работает.
Однако, любопытно, какой именно вы дадите параметру тип, уже никого после этого не волнует. Запрос будет выполнен в любом случае (если только он не противоречит структуре базы).

Такое вот Делфи.

понедельник, 24 февраля 2014 г.

Honestly, english text is not my strong side. I am too lazy to translate my thoughts. In fact, I sometimes realize I am too lazy to form my thought. So, it is expediant to go on in russian.

Вчера я узнала, что при разработке приложения на андроид все тексты в визуальном оформлении являются переменными .xml. Звучит жутко, а что делать, если читать мануалы сначала и внимательно мне было лень.

Откровенно говоря, это первый раз в моей практике, когда мне удалось разобраться как ставить и настраивать среду разработки до того, как мне удалось понять, что с этой средой делать дальше.

Вывод: быстро-находимые статьи на хабре по теме "как начать разработку под андроид?" пригодны (ну может со второй попытки), чтобы разобраться в вопросе среды разработки. А вот чтобы разобраться с принципами, все-таки придется почитать длинные и нудные мануалы.