Посылает строки текста, определенные TextLines, на текущее устройство вывода или в переменную памяти. Visual FoxPro посылает строки текста на текущее устройство вывода, пока не встретится предложение ENDTEXT или пока не закончится программа.

Текущее устройство вывода включает главное окно Visual FoxPro, окно, определенное пользователем, принтер, текстовый файл, файл, открытый командами низкого уровня.

TEXT [TO VarName [ADDITIVE] [TEXTMERGE] [NOSHOW] [FLAGS nValue] [PRETEXT eExpression]]
      TextLines
ENDTEXT

Параметры

TextLines

Определяет текст, посылаемый на текущее устройство. TextLines может представлять собой текст, переменную памяти, элемент массива, выражение, функцию или любые комбинации из них.

NoteЗамечание

Visual FoxPro оценивает выражения, функции, переменные памяти и элементы массива, определенные в TextLines, только при установке SET TEXTMERGE в ON с прилагающейся к этому командой, определяющей разделители SET TEXTMERGE DELIMITERS. Если SET TEXTMERGE установлено в OFF, Visual FoxPro выводит выражения, функции, переменные памяти и элементы массива как строковые литералы вместе с разделителями.

Например, Visual FoxPro оценивает и выводит текущую дату, которая определена функцией DATE( ) как TextLines, только если SET TEXTMERGE установлено в ON, и TextLines содержит функцию и подходящие разделители, такие как <<DATE( )>>. Если SET TEXTMERGE установлено в OFF, Visual FoxPro выводит <<DATE( )>> как строковой литерал.

Если вы размещаете комментарии в TEXT...ENDTEXT или после одного символа обратной косой черты (\) или после двойной обратной косой черты (\\), Visual FoxPro выводит комментарии.

TO VarName

Определяет имя переменной памяти для использования пересылки содержимого в TEXT...ENDTEXT. Эта переменная, возможно, уже существует.

Если переменная не объявлена, Visual FoxPro автоматически создает ее как приватную переменную. Фраза TO действует независимо от того, как установлена команда SET TEXTMERGE. Если SET TEXTMERGE установлена в файл, и предложение TO включено, Visual FoxPro выводит как в файл, так и в переменную.

ADDITIVE

Определяет, переписано ли содержимое переменной TO или добавлено к существующей.

NoteЗаметка

Если содержимое TO  VarName не строка, Visual FoxPro всегда переписывает содержимое в VarName.

TEXTMERGE

Разрешает вычислять содержимое, выделенное разделителями, без установки SET TEXTMERGE в ON.

NOSHOW

Запрещает вывод на экран слияния текста.

FLAGS nValue

Определяет цифровое значение, которое определяется, если подавляется вывод в выходной файл, или если пустые строки, предшествующие тексту, включены в выходной файл.

Значение (дополнительно) Описание

1

Подавляет вывод в файл, определенный _TEXT System Variable.

2

Если включено предложение NOSHOW, оно сохраняет пустые строки, предшествующие тексту, который находится в пределах TEXT...ENDTEXT. Установка nValue = 2 разделит текущий TEXT...ENDTEXT вывод от предыдущего TEXT...ENDTEXT вывода переводом строки.

NoteЗамечание

Комбинация установок nValue=2 и PRETEXT=4 отделяет текущий вывод TEXT…ENDTEXT от предыдущего вывода TEXT…ENDTEXT переводом строки и удаляет пустые строки в выводе TEXT...ENDTEXT.

PRETEXT eExpression

Определяет символьную строку, чтобы включать ее перед каждой строкой текста между TEXT...ENDTEXT или цифровое выражение.

Следующая таблица описывает поведение предложения PRETEXT в зависимости от выражения, определенного eExpression.

eExpression PRETEXT behavior

Символьное выражение

Включите выражение перед каждой строкой слияния текста, появляющейся между предложением TEXT...ENDTEXT. При использовании PRETEXT совместно с TEXT...ENDTEXT, eExpression лимитируется максимальной длиной в 255 символов.

eExpression аннулирует содержимое системной переменной _PRETEXT. Если eExpression содержит выражение, которое требует вычислений, например, пользовательская функция (UDF), Visual FoxPro оценивает ее, только когда команда TEXT появляется первой.

Числовое выражение

Определяет доплнительно значение флага, чтобы определить поведение для слияния текста, появляющегося между утверждением TEXT...ENDTEXT.

Например, значение 7 определяет, что Visual FoxPro очищает все пустое пространство, включая пробелы, знаки табуляции и символы перевода строки. Значение, находящееся вне диапазона 0-15, генерирует ошибку.

NoteЗамечание

При присвоении значения нуль пустое пространство не очищается.

Если eExpression является числовым выражением,вы можете использовать системную переменную _PRETEXT, чтобы добавить дополнительный текст после очистки пространства.

Следующая таблица включает число дополнительных флагов, которое вы можете использовать в eExpression, чтобы определить дополнительные характеристики.

Значение (Дополнительно) Описание

1

Очистите пространство перед каждой строкой.

2

Очистите знаки табуляции перед каждой строкой.

4

Очистите символы перевода строки, например, пустые строки, перед каждой строкой.

8

Очистите переводы формата.

NoteЗамечание

В отличие от системной переменной _PRETEXT, предложение PRETEXT не имеет глобальной области и относится только к утверждению TEXT...ENDTEXT, в котором он появляется.

Символы удаляются при использовании фразы PRETEXT только из текста в пределах TEXT...ENDTEXT и не относятся к вычисляемому тексту с cExpression. В следующем примере пробелы с переменной памяти myvar, не удаляются из текста в TEXT...ENDTEXT:

  CopyCode imageCopy Code
myvar = "   AAA"
TEXT TO x NOSHOW ADDITIVE TEXTMERGE PRETEXT 7
Start Line
<<myvar>>
      BBB
   CCC
ENDTEXT

Expand imageЗамечания

По умолчанию, TEXT ... ENDTEXT посылает вывод в главное окноVisual FoxPro или активное окно. Для того, чтобы подавить вывод в главное окно Visual FoxPro или активное окно, используйте SET CONSOLE OFF. Чтобы послать вывод на принтер или в текстовый файл, используйте SET PRINTER. Чтобы послать вывод из TEXT ... ENDTEXT в файл, открытый функциями низкого уровня, который создан или открыт с использованием FCREATE( ) или FOPEN( ), сохраните идентификатор файла, возвращаемый FCREATE( ) или FOPEN( ) в системной переменной _TEXT, которую вы можете использовать, чтобы направить выход в соответствующий низкоуровневый файл.

NoteЗамечание

Процесс слияния текста обычно включает любое количество пустых символов, которые могли появиться перед строкой TEXT...ENDTEXT. Тем не менее, включение пустых символов может привести к ошибке при слиянии текста, например, если XML используется в Web browser. Вы должны удалить такие пустые символы для исключения некорректного форматирования XML.

Вложение предложений TEXT...ENDTEXT не рекомендуется, особенно при использовании фразы PRETEXT, поскольку вложенные предложения могут повлиять на формат выводимого предложения.

Expand imageПример

Пример 1

Следующий файл демонстрирует создание низкоуровневого файла, названного myNamesFile.txt и сохраняет индентификатор файла в системной переменной _TEXT. Программа прекращается, если файл myNamesFile.txt не может быть создан.

Visual FoxPro открывает таблицу customer и выводит имена первых десяти контактов в myNamesFile.txt. Visual FoxPro выводит текст и результат функции в текстовый файл. Пример использует MODIFY FILE для открытия myNamesFile.txt.

  CopyCode imageCopy Code
CLEAR
CLOSE DATABASES
SET TALK OFF
SET TEXTMERGE ON     
STORE FCREATE('myNamesFile.txt') TO _TEXT     
IF _TEXT = -1  
   WAIT WINDOW 'Cannot create an output file. Press a key to exit.'
   CANCEL
ENDIF

CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE customer  

TEXT
         CONTACT NAMES
   <<DATE( )>>    <<TIME( )>>
ENDTEXT
WAIT WINDOW 'Press a key to generate the first ten names.'
SCAN NEXT 10
   TEXT
      <<contact>>
   ENDTEXT
ENDSCAN
CLOSE ALL  
MODIFY FILE myNamesFile.txt
ERASE myNamesFile.txt

Пример 2

Следующий пример показывает изготовленную по заказу процедуру, которая использует TEXT...ENDTEXT, чтобы сохранить в переменной XML DataSet. В примере все пробелы, знаки табуляции и перевода формата исключены.

  CopyCode imageCopy Code
PROCEDURE myProcedure
   DO CASE
   CASE nValue = 1
      TEXT TO myVar NOSHOW TEXT PRETEXT 7
         <?xml version="1.0" encoding="utf-8"?>
         <DataSet xmlns="http://tempuri.org">
         <<ALLTRIM(STRCONV(leRetVal.item(0).xml,9))>>
         </DataSet>
      ENDTEXT
   OTHERWISE
   ENDCASE
ENDPROC

Expand imageСмотрите также