这是我的示例代码:
int main()
{
const wchar_t *envpath = L"hello\\";
const wchar_t *dir = L"hello2\\";
const wchar_t *core = L"hello3";
wchar_t *corepath = new wchar_t[
wcslen(envpath) +
wcslen(dir) +
wcslen(core)
];
wcscpy_s(corepath, wcslen(corepath) + wcslen(envpath) + 1, envpath);
wcscat_s(corepath, wcslen(corepath) + wcslen(dir) + 1, dir);
wcscat_s(corepath, wcslen(corepath) + wcslen(core) + 1, core);
delete []corepath;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在delete []corepath命令中,触发断点.
可能是什么原因?
如果我以这种方式重写代码:
wcscpy_s(corepath, wcslen(envpath) + 1, envpath);
wcscat_s(corepath, wcslen(corepath) + wcslen(dir) + 1, dir);
wcscat_s(corepath, wcslen(corepath) + wcslen(core) + 1, …Run Code Online (Sandbox Code Playgroud) 我想fecth行并在RPG(免费)中更新它们.使用旧式操作码我会这样做:
READE %KDS(KEY) FILE;
processRecord();
UPDATE FILE;
Run Code Online (Sandbox Code Playgroud)
SQL操作码出现问题:
EXEC SQL FETCH MYCURSOR INTO :VAR;
processRecord();
????
Run Code Online (Sandbox Code Playgroud)
使用EXEC SQL UPDATE FILE... SET... WHERE KEY...返回SQLCOD错误.
有特定的技术吗?
我问自己,在IBMi中RPGLE和CL之间的数据类型的正确比较是什么.
所以:
*DEC <> Packed numeric (es DCL-S ... PACKED(7:0))
*CHAR <> Fixed length string (es DCL-S ... CHAR(10))
*LGL <> Indicator (es DCL-S ... IND)
*PTR <> Pointer (es DCL-S ... POINTER)
Run Code Online (Sandbox Code Playgroud)
我缺少的是*INT和*UINT.阅读IBM知识中心我发现:
对于字符或整数CL变量,请指定CL变量的字节数.
然后,他们BINDEC(在位置上B)或INT/UNS(I/U)数据类型?
知道那ptr <> *null,两段代码功能相同吗?
dealloc(en) ptr;
ptr = %alloc(500);
Run Code Online (Sandbox Code Playgroud)
和
ptr = %realloc(ptr:500);
Run Code Online (Sandbox Code Playgroud) ibm-midrange ×3
rpgle ×3
pointers ×2
breakpoints ×1
c++ ×1
db2 ×1
rpg ×1
sql ×1
triggers ×1
types ×1