gpt4 book ai didi

visual-foxpro - 从过程返回的 FoxPro 字符串被截断

转载 作者:行者123 更新时间:2023-12-01 22:29:54 29 4
gpt4 key购买 nike

我是 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 个字符。

enter image description here

我已验证该函数的返回值是函数退出前我期望的完整文本字符串。然而;当数据显示在查看器中时,该值被截断。

为什么这个数据被截断了?其他两个函数的工作方式几乎相同(至少从我完全“无知”的角度来看是这样)并且它们没有被截断。

这是 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

最佳答案

实际上,更短的是,让函数 GetType() 始终返回“PADR( retVal, 15 )”(或任何长度)。

原因是。当 VFP 运行查询时,它实际上运行了两次。第一次检查以确保其有效,并查看函数调用以确保结果的给定类型。如果您对第一条记录的查询返回较短的字符串长度值,那么最终游标的列宽也是如此。

通过从您的函数中强制执行完整的恒定长度,您将保证它不会被截断,也不会在其他任何其他 SQL 调用中遗漏。

关于visual-foxpro - 从过程返回的 FoxPro 字符串被截断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9772328/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com