使用文心一言生成C/VBS脚本-拼接字符串和写入MSHFlexGrid表格控件

已锁定

荧惑mars

  • 帖子

    156
  • 精华

    6
  • 被关注

    33

论坛等级:侠士

注册时间:2014-02-13

普通 普通 如何晋级?

使用文心一言生成C/VBS脚本-拼接字符串和写入MSHFlexGrid表格控件

3330

3

2023-11-11 18:00:38

背景:PLC这边有四个一维数组,每个都是40个元素,0`39,导入到wincc这边就是一个又一个的变量

通过以下图片,我们可以看出,变量名称的格式,OO_XX[N],N为数组下标。

需求:所有的数组元素值显示在表格控件里。

抱怨:一个个填入好费劲。如果Wincc支持数组变量就无需做多余的工具。


所以,就有了问文心一言的情况

第一问:使用C脚本拼接5个字符串

#include <stdio.h>

#include <string.h>

int main() {

    char str1[] = "Hello";

    char str2[] = ", World!";

    char str3[] = " This is ";

    char str4[] = "a test.";

    char str5[] = " Enjoy!";  

    char result[100] = "";  // 初始化一个足够大的数组来保存结果字符串    

    sprintf(result, "%s%s%s%s%s", str1, str2, str3, str4, str5);  // 使用sprintf来拼接字符串

    strcpy(result, result);  // 使用strcpy来复制结果字符串到另一个变量,因为sprintf的结果是回写到第一个参数的

    strcat(result, str5);  // 使用strcat来将最后一个字符串添加到结果字符串的末尾

    //这句我验证后,是错误的,不需要再拼接最后一个字符串。

    printf("%s", result);  // 输出结果字符串    

    return 0;

}

第二问:使用VBS脚本拼接5个字符串

Option Explicit

Dim str1, str2, str3, str4, str5

Dim result

' 定义五个字符串

str1 = "Hello"

str2 = " World"

str3 = "!"

str4 = " I am"

str5 = " a scripting expert."

' 拼接字符串

result = str1 & str2 & str3 & str4 & str5

' 输出结果

WScript.Echo result

第三问:写一个循环C脚本,拼接4个字符串,字符串内容格式为“名称[N]”,其中N是0到39递增加1变化数字。

#include <stdio.h>

#include <string.h>

int main() {

    char str1[] = "String1";

    char str2[] = "String2";

    char str3[] = "String3";

    char str4[] = "String4";

    char result[200];  // 足够大的数组来保存结果字符串

    int i;

    for (i = 0; i <= 39; i++) {

        sprintf(result, "%s[%d]", str1, i);  // 使用sprintf来拼接字符串

        //估计是我描述的不准确,这里string1是名称,i是遍历下标。

        //但和我的OO_XX[N]大同小异,我再使用sprintf拼接不就是了。

        strcat(result, str2);  // 将str2添加到结果字符串的末尾

        //和第一问一样,是不对的,多余的。也有可能是我描述错误。

        strcat(result, str3);  // 将str3添加到结果字符串的末尾

         //和第一问一样,是不对的,多余的。也有可能是我描述错误。

        strcat(result, str4);  // 将str4添加到结果字符串的末尾

        //和第一问一样,是不对的,多余的。也有可能是我描述错误。

        printf("%s", result);  // 输出结果字符串

    }

    return 0;

}

第四问:写一个循环VBS脚本,拼接4个字符串,字符串内容格式为“名称[N]”,其中N是0到39递增加1变化数字。

Dim str1, str2, str3, str4

Dim result

Dim i

str1 = "String1"

str2 = "String2"

str3 = "String3"

str4 = "String4"

result = ""

For i = 0 To 39

    result = result & str1 & "[" & i & "]" & str2 & str3 & str4 & vbCrLf

Next

WScript.Echo result

第五问:用VBS写一个循环脚本,把一维数组大小为40,写入微软表格控件MSHFlexGrid,表格控件固定一行一列,数组按行写入。

Option Explicit

Dim arr(39) '定义一维数组,大小为40

Dim i, j

Dim MSHFlexGrid1 '定义MSHFlexGrid控件

'初始化数组

For i = 0 To 39

    arr(i) = "Element " & (i + 1)

Next

'创建MSHFlexGrid控件实例

Set MSHFlexGrid1 = CreateObject("MSHFlexGrid.MSHFlexGrid")

MSHFlexGrid1.SetBounds 0, 0, 200, 200 '设置控件边界

MSHFlexGrid1.Font.Name = "Arial" '设置字体

MSHFlexGrid1.Font.Size = 12 '设置字体大小

MSHFlexGrid1.TextMatrix(1, 1) = "Column 1" '设置第一列标题

MSHFlexGrid1.TextMatrix(1, 2) = "Column 2" '设置第二列标题

'循环遍历数组,按行写入数据到MSHFlexGrid控件

For i = 0 To 39 Step 2 '数组大小为40,每两个元素为一行

    MSHFlexGrid1.TextMatrix(i / 2 + 2, 1) = "Row " & (i / 2 + 1) '写入行标题

    For j = 0 To i - 1 '遍历当前行的元素

        MSHFlexGrid1.TextMatrix((i / 2 + 2) * j + i / 2 + 2, 2) = arr(j) '写入元素到第二列

    Next j

Next i

备注:第五问还未验证,不过看着,好像,是可行的样子,小bug可以修改的么。
第六问:用C语言写一个循环脚本,把一维数组大小为40,写入微软表格控件MSHFlexGrid,表格控件固定一行一列,数组按行写入。

对不起,但是用C语言写一个循环脚本将一维数组写入MSHFlexGrid控件可能有点困难,因为MSHFlexGrid控件是Microsoft HTML Help Workshop的一部分,它主要支持HTML和JavaScript,而不是C语言。

如果你想在C语言环境中操作数据并展示在HTML页面上,你可能需要使用一些库来生成HTML页面,或者使用一些Web开发框架如Node.js。


写在最后:

当我们使用wincc的C/VBS脚本无法入门的时候,现在的AI工具值得拥有,前提啊,会问问题!不会问,它给出的答案,和你想象的是两回事。会问问题,也是我们一直在修炼的基本技能,和所有生活工作都有关。

使用文心一言生成C/VBS脚本-拼接字符串和写入MSHFlexGrid表格控件 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC WinCC / Panel

共有32569条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。