Я ОЧЕНЬ новичок в FoxPro, поэтому, пожалуйста, извините, что, скорее всего, очень глупый вопрос. Я пытаюсь объединить мой мозг вокруг нескольких программ FoxPro 9, которые были написаны не-программистом и, никогда раньше не смотрел на код FoxPro, нахожу, что это довольно тяжелая работа, чтобы понять некоторые из ее особенностей.Строка FoxPro, возвращенная с процедуры, усекается
У меня довольно простой оператор SQL, который возвращает информацию из файла Project (используется в качестве таблицы). У меня есть три простые функции, которые обрабатывают предоставление мне полезной информации об объектах (файлах), которые включены в проект.
Речь идет об основной программе, которая запускается. Это не что иное, как один оператор SQL, который использует три простые функции:
SELECT ShortName(Name) AS SName, LongName(Name) AS LName, Type, GetType(Type) AS TypeName ;
FROM <my project file here> ;
ORDER BY Type, SName
SQL-оператор работает нормально, и мои три функции вызываются и все три возвращают данные, которые я ожидаю, за исключением функции GetType. Функция ShortName возвращает только имя файла, функция LongName возвращает весь путь и имя файла, и функция GetType должна возвращать более понятную для пользователя строку, которая сообщает мне, что такое тип файла. Например, «Таблица», «Программа» и т. Д. , ,
ВОТ ПРОБЛЕМА:
Функция GetType бежится и возвращаемое значение создается, но значение возвращается усекается до 6 символов.
Я проверил, что возвращаемое значение функции является полной строкой текста, который я ожидаю только до функциональных выходов. Однако; когда данные отображаются в средстве просмотра, значение усекается.
Почему эти данные усекаются? Две другие функции работают почти одинаково (по крайней мере, из моей полностью «неощутимой» точки зрения), и они не усекаются.
Вот код из функции GetType
PARAMETERS pType
retVal = ""
DO CASE
CASE LEFT(ALLTRIM(pType),1) = 'B'
retVal = "Lable"
CASE LEFT(ALLTRIM(pType),1) = 'D'
retVal = "Table"
CASE LEFT(ALLTRIM(pType),1) = 'd'
retVal = "XBase Table"
CASE LEFT(ALLTRIM(pType),1) = 'F'
retVal = "Format"
CASE LEFT(ALLTRIM(pType),1) = 'H'
retVal = "Header"
CASE LEFT(ALLTRIM(pType),1) = 'I'
retVal = "Index"
CASE LEFT(ALLTRIM(pType),1) = 'L'
retVal = "Library"
CASE LEFT(ALLTRIM(pType),1) = 'M'
retVal = "Menu"
CASE LEFT(ALLTRIM(pType),1) = 'P'
retVal = "Program"
CASE LEFT(ALLTRIM(pType),1) = 'Q'
retVal = "Query"
CASE LEFT(ALLTRIM(pType),1) = 'R'
retVal = "Report Form"
CASE LEFT(ALLTRIM(pType),1) = 's'
retVal = "Screen Table"
CASE LEFT(ALLTRIM(pType),1) = 'S'
retVal = "Screen Program"
CASE LEFT(ALLTRIM(pType),1) = 'T'
retVal = "Configuration File"
CASE LEFT(ALLTRIM(pType),1) = 'x'
retVal = "File"
CASE LEFT(ALLTRIM(pType),1) = 'X'
retVal = "File"
CASE LEFT(ALLTRIM(pType),1) = 'Z'
retVal = "Application"
ENDCASE
RETURN retVal
Dave. , , Спасибо за быстрый (и точный) ответ. Этот подход работал как шарм. Я реализовал его в функции, как отметил DRAP в своем ответе, но я считаю, что это одно и то же. Хотелось бы отметить как ответ – dscarr