![]() |
#2
wcx_cc2025-05-04 21:21
|
deepseek 提供的代码,编译后运行有问题,一直报错502.2,deepseek也一直解决不了,没办法,只好上网继续搜索相关内容。
最后,只好退而求其次,找到其他的语言,再设法翻译成foxpro,好在懂一点点visual basic,参考VB代码,改编了foxpro代码,编译运行后果然成功了。。。
现附上代码,以作抛砖引玉之功效:

* CGI处理示例
* 定义 Windows API 常量
#DEFINE STD_INPUT_HANDLE -10
#DEFINE STD_OUTPUT_HANDLE -11
* 声明 Windows API
DECLARE Sleep IN kernel32 INTEGER dwMilliseconds
DECLARE INTEGER GetStdHandle IN kernel32 INTEGER nStdHandle
DECLARE INTEGER ReadFile IN kernel32 ;
INTEGER hFile, ;
STRING @lpBuffer, ;
INTEGER nNumberOfBytesToRead, ;
INTEGER @lpNumberOfBytesRead, ;
INTEGER lpOverlapped
DECLARE INTEGER WriteFile IN kernel32 ;
INTEGER hFile, ;
STRING lpBuffer, ;
INTEGER nNumberOfBytesToWrite, ;
INTEGER @lpNumberOfBytesWritten, ;
INTEGER lpOverlapped
* CGI 环境变量常量
CGI_CONTENT_LENGTH = "CONTENT_LENGTH"
* 主程序
CLEAR
SET TALK OFF
SET CONSOLE OFF
* 获取标准输入输出句柄
hStdIn = GetStdHandle(STD_INPUT_HANDLE)
hStdOut = GetStdHandle(STD_OUTPUT_HANDLE)
* 调试用暂停(如果需要)
* [color=#808080]=Sleep(60000) && 暂停60秒等待调试器附加[/color]
* 读取POST内容
lcContentLength = GETENV(CGI_CONTENT_LENGTH)
lnContentLength = VAL(lcContentLength)
IF lnContentLength > 0
* 准备缓冲区
lcReadBuffer = REPLICATE(CHR(0), lnContentLength)
lnBytesRead = 0
* 读取输入
=ReadFile(hStdIn, @lcReadBuffer, lnContentLength, @lnBytesRead, 0)
lcReadBuffer = LEFT(lcReadBuffer, lnBytesRead)
* 解析参数
lnPos = AT("=", lcReadBuffer)
IF lnPos > 0
lcValue = SUBSTR(lcReadBuffer, lnPos + 1)
ELSE
lcValue = lcReadBuffer
ENDIF
ELSE
lcValue = ""
ENDIF
* 构建响应
lcResponse = "HTTP/1.0 200 OK" + CHR(13) + CHR(10) + ;
"Content-Type: text/html" + CHR(13) + CHR(10) + ;
CHR(13) + CHR(10) + ;
"Hello World!" + lcValue
* 发送响应
lnBytesWritten = 0
=WriteFile(hStdOut, lcResponse, LEN(lcResponse), @lnBytesWritten, 0)
* 清理
CLEAR DLLS
RETURN
运行后效果如下:
只有本站会员才能查看附件,请 登录