:: Главная :: Решения :: Статьи :: Проект "Русский help" :: Файловый архив :: Фотоальбом :: Ссылки :: | ||
Л и с о в о д ы в с е х с т р а н, о б ъ е д и н я й т е с ь !!! |
Символьные поля, переменные памяти и константы | ||
---|---|---|
Вопрос
Я формирую запрос через SQLExec() или макроподстановку. Почему не получается сформировать запрос более чем на 255 символов? Ответ Символьные поля, переменные памяти и константы В FoxPro существует отличия в предельно допустимой длине символьных данных в зависимости от того, о чем идет речь: поле таблицы, переменной памяти или константе Ну, с полями таблицы все ясно. Их предельная длина определяется собственно размерностью поля. Однако размерность поля не может превышать 254 символов. Для memo-полей объем не может превышать 2ГБ (2 гигабайта - это 2 и 9 нулей символов). Длина символьной константы не может превышать 255 символов Длина символьной переменной теоретически не может превышать 16,777,184 символов. "Теоретически", потому, что при определенных условиях все-таки может. Просто за последствия такого превышения никто не отвечает. Отдельно следует остановиться на отличии символьной константы от символьной переменной. Начинающие программисты очень часто получают сообщение об ошибке "Command contains unrecognized phrase/keyword (Error 36)" именно в силу непонимания этой разницы. В FoxPro для написания символьных констант можно использовать 3 символа: одинарные кавычки, двойные кавычки, квадратные скобки. В чем отличие символьной константы от символьной переменной проще объяснить на примере. Словами получится долго и невнятно. Например:
Так вот, здесь то, что записано в кавычках и квадратных скобках - это 3 символьные константы, а lcString - это одна символьная переменная Вообще-то, лично мне трудно представить, как можно написать одну символьную константу длиной больше 255 символов. Точнее написать-то такое можно, но как потом это можно редактировать! Получится совершенно не "читабельный" текст. Я рекомендовал бы разбивать длинные символьные константы на небольшие фрагменты с тем, чтобы каждый отдельный фрагмент целиком помещался в окне редактирования. Примерно так:
В FoxPro нет специальных управляющих символов, как, например, в C используется обратный слеш. Поэтому, если Вам надо использовать кавычки не как границу символьной константы, а как собственно символ, то просто обрамляйте их кавычками другого типа:
Следует всегда помнить, что FoхPro отличается определенной "самостоятельностью" в преобразовании данных. Применительно к символьным данным это проявляется в том, что если Вы попытаетесь записать в символьное поле больше символов, чем позволяет его размерность, то ошибки это не вызовет, просто "лишние" символы будут отброшены без каких-либо дополнительных сообщений об ошибках.
Если Вам надо записать в переменную памяти несколько строк текста "как есть", то, начиная с версии Visual FoxPro 7 для этой цели лучше использовать скобки TEXT...ENDTEXT
Как видите, все что находится между TEXT и ENDTEXT воспринимается не как набор команд, а просто как текст. Содержимое переменой m.lcText. Исправлено 1 раз(а). Последнее : Владимир Максимов, 30.12.06 16:22 |
||
Тема | Просмотров | Написано | Написано |
---|---|---|---|
Program | 5563 | Владимир Максимов | 01.03.05 22:02 |
Как определить директорию, из которой запущена программа | 9795 | Владимир Максимов | 22.03.05 10:41 |
Как проверить факт существования переменной памяти, поля таблицы, метода формы | 14030 | Владимир Максимов | 20.04.05 18:31 |
Как работать с ini-файлами | 15793 | Владимир Максимов | 01.05.05 12:17 |
Символьные поля, переменные памяти и константы | 9741 | Владимир Максимов | 25.09.05 13:31 |
Как работать с путями доступа и именами файлов, содержащих пробелы | 7893 | Владимир Максимов | 22.02.06 22:00 |
Как вывести приложение на передний план | 18056 | Владимир Максимов | 04.03.07 14:17 |
Как получить разницу двух дат в формате: лет, месяцев, дней | 10773 | Владимир Максимов | 25.02.08 18:32 |
© 2006 Fox Club  |