Сравнение FieldValues и FieldByName |
![]() |
![]() |
Статьи |
В большой книге "Delphi 4 Developer's Guide" от Steve Teixeria и Xavier Pacheco они настоятельно рекомендуют, чтобы использовалось свойство FieldValues для чтения или записи значений полей, когда Вы работаете с полями данных. Так как FieldValues установлено как значение по умолчанию, так что писать код легко, примерно так:
Первая инструкция работает в большинстве случаев, но когда Name пусто, возникает исключение. Почему это происходит? Из Онлайн справки мы видим, что свойство FieldValues возвращает Variant, а когда поле Name пусто, будет возвращено NULL, тогда как Delphi требует, чтобы NULL было преобразовано в строку, иначе генерируется ошибка. В этом случае большинство из нас захочет получить пустую строку, когда поле пусто. Чтобы сделать это, мы должны использовать безопасный код:
Есть ли другой способ, чтобы сделать это? Используйте метод FieldByName. Метод FieldByName возвращает значение TField и Вы можете использовать AsString, AsInteger и так далее, чтобы преобразовать значение. Когда поле пусто, AsString возвратит пустую строку и никакого исключения, AsInteger возвратит 0. Сделать можно так:
Итог: Из этой статьи мы узнали, что когда мы будет читать значение поля, лучше использовать FieldByName, хотя нужно будет написать немного лишнего кода. Но это сделает Ваш код безопасным. А когда Вы будете записывать данные в поле, лучше использовать свойство FieldValues, это работает очень хорошо и требуется меньше кода. |