小编hyp*_*eni的帖子

NSIS 多个 if 条件

我可以在 NSIS 脚本中实现以下 C 代码吗?

代码

if ( (value1 == 1) && ((value2 == "text") || (value3 >= 100)) )
  //Do something
Run Code Online (Sandbox Code Playgroud)

国家统计局代码

${If} $value2 == "text"
${OrIf} $value3 >= 100
Run Code Online (Sandbox Code Playgroud)

但我不认为在上述条件下我可以添加另一个${AndIf}声明。相反,我需要执行以下操作:

${If} $value1 == 1
    ${If} $value2 == "text"
    ${OrIf} $value3 >= 100
        //Condition success
    ${EndIf}
${Else}
    //Conditon failed
${EndIf}
Run Code Online (Sandbox Code Playgroud)

我是正确的还是有更好的方法来做到这一点?

nsis

5
推荐指数
1
解决办法
9404
查看次数

CFile读取数据到缓冲区

我正在尝试从文件中获取所有字节以在 BYTE* 变量上读取。我正在尝试将整个 xml 文件数据读入内存,如下所示:

\n\n
<?xml version="1.0" encoding="utf-8"?>\n<DataBlock xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">\n    <Device>3867242</Device>\n    <Manufacturer>COMPANY LTD</Manufacturer>\n    <Data>15</Data>\n    <VendorID>00-291-647</VendorID>\n    <TimeStamp>2014-08-13 12:40:11</TimeStamp>\n</DataBlock>\n
Run Code Online (Sandbox Code Playgroud)\n\n

但最终读到类似的内容:

\n\n
"<?xml version="1.0" encoding="utf-8"?>\n<DataBlock xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">\n    <Device>3867242</Device>\n    <Manufacturer>COMPANY LTD</Manufacturer>\n    <Data>15</Data>\n    <VendorID>00-291-647</VendorID>\n    <TimeStamp>2014-08-13 12:40:11</TimeStamp>\n</DataBlock>\xc3\xbd\xc3\xbd\xc3\xbd\xc3\xbd\xc2\xab\xc2\xab\xc2\xab\xc2\xab\xc2\xab\xc2\xab\xc2\xab\xc2\xab\xc3\xbe"\n
Run Code Online (Sandbox Code Playgroud)\n\n

下面是阅读它的代码..

\n\n
CFile oFile;\nif(oFile.Open(filePath, CFile::modeRead) == FALSE)\n  return NULL;\n\nlong iFileSiz = oFile.GetLength();\nBYTE* pData = new BYTE[iFileSiz];\n\noFile.Read(pData, iFileSiz);\noFile.Close();\n
Run Code Online (Sandbox Code Playgroud)\n\n

我在缓冲区末尾收到一些垃圾字符,或者某些文件无法完全读取。

\n\n

输出是从 Visual Studio 调试器捕获的。

\n

c++ mfc

3
推荐指数
1
解决办法
1万
查看次数

运行超过 49 天的系统上的 GetTickCount

根据MSDN GetTickCount API 仅当系统没有连续运行 49.7 天时才返回系统经过时间。如果它的运行超过这个,它将返回 0。

有没有人遇到过这个API在运行超过49.7天的系统上实际返回0的事件?

我需要根据 GetTickCount 报告的值做出一些决定,如果我发现 0,我会将其视为特殊情况并要求用户重新启动系统。

windows winapi

2
推荐指数
1
解决办法
1143
查看次数

真的需要memcpy start index吗?

问题是当我们使用时复制任何字节数组时,我们是否memcpy()应该显式声明目标缓冲区的起始(第0)索引,或者简单地提到它就足够了.让我举例说明我在说什么.前提是我们正在尝试将源缓冲区复制到目标缓冲区的启动.

BYTE *pucInputData; // we have some data here
BYTE ucOutputData[20] = {0};
Run Code Online (Sandbox Code Playgroud)

代码1

memcpy((void*)&ucOutputData, (void*)pucInputData, 20);
Run Code Online (Sandbox Code Playgroud)

代码2

memcpy((void*)&ucOutputData[0], (void*)pucInputData, 20);
Run Code Online (Sandbox Code Playgroud)

c arrays memcpy

2
推荐指数
1
解决办法
1103
查看次数

标签 统计

arrays ×1

c ×1

c++ ×1

memcpy ×1

mfc ×1

nsis ×1

winapi ×1

windows ×1