【发布时间】:2012-03-19 14:50:40
【问题描述】:
我对 FoxPro 非常陌生,所以请原谅最有可能是一个非常愚蠢的问题。我正试图围绕几个由非程序员编写的 FoxPro 9 程序进行思考,并且在我以前从未看过 FoxPro 代码的情况下,我发现理解其中的一些特性是一件很麻烦的事。
我有一个非常简单的 SQL 语句,它从项目文件(用作表)返回信息。我有三个简单的函数来处理给我一些关于项目中包含的对象(文件)的有用信息。
这是运行的整个主程序。它只是一个使用三个简单函数的 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
【问题讨论】:
标签: visual-foxpro foxpro