admin 管理员组

文章数量: 887032


2023年12月21日发(作者:message用法)

说明:

HelpStr 用于存储文本内容,由于使用字符串指针,文本长度理论上可以达到无限长。tmp 用于存放每行读取的内容。

txt 用于存放文本文件的地址。

ChrNumLine 设定每行读取的长度。

char tmp[255];

char *HelpStr;

char txt[255];

int ChrNumLine=38;

file *fp;

BOOL ret;

sprintf(txt,"%s273HelpFile%",PrjPath (),lpszObjectName);

fp=fopen(txt,"r");

if (fp==NULL)

{

printf("rnOpen file : %s Failed!",txt);

sprintf(HelpStr,"rnError!rnThe Help File - %s does not

exit!",txt);

}

else

{

rewind(fp);

while(!feof(fp))

{

fgets(tmp,ChrNumLine,fp);

strcat(HelpStr,tmp);

strcat(HelpStr,"rn");

}

}

ret=fclose(fp);

if (ret!=0) printf("rnError In fclose file %s",txt);

SetText("Help_","Main",HelpStr);

vb脚本:

Function ReadAllTextFile

Const ForReading = 1, ForWriting = 2

Dim fso, f

Set fso = CreateObject("s stemObject")

Set f = xtFile("c:", ForWriting, True)

"Hello world!"

Set f = xtFile("c:", ForReading)

ReadAllTextFile = l

End Function

===================================================================== 一、将WinCC变量导出到TEXT文件

Sub OnLButtonUp(ByVal Item, ByVal Flags, ByVal x, ByVal y)

Dim fso,File

Dim a

a=("FileName").Read

Const ForWriting = 2

Set fso = CreateObject("stemObject")

Set File = xtFile("D:Export&Import"&CStr(a)&".txt",

ForWriting, True)

ine(("Var_1").read)

ine(("Var_2").read)

ine(("Var_3").read)

ine(("Var_4").read)

ine(("Var_5").read)

MsgBox "文件已经成功导出/Export Successful"

End Sub

二、从TXT文件中读取数据到WinCC变量

Sub OnLButtonUp(ByVal Item, ByVal Flags, ByVal x, ByVal y)

Dim fso

Dim txtfile

Dim a

a=("FileName").Read

Set fso = CreateObject("stemobject")

If ists("D:Export&Import"&CStr(a)&".txt") Then

Set txtfile = xtFile("D:Export&Import"&CStr(a)&".txt")

("Var_1").Write ne

("Var_2").Write ne

("Var_3").Write ne

("Var_4").Write ne

("Var_5").Write ne

MsgBox "导入数据成功/Import Successful"

Else

MsgBox "文件不存在/File is not existing"

End if

End Sub

=============================================================

用c script有两种方法,一种简单的就是使用ansic函数,代码如下:

FILE* lpFile;

char* lpszStr = "hellorn";

lpFile = fopen("c:", "a");

if(lpFile == NULL)

{ printf("can not open filern"); return;}

fprintf(lpfile, lpszStr);

fclose(lpFile);

但是WinCC中使用printf,fprintf等函数最多只能处理360个字符,如果你写的字符串过长,可以使用windows api,代码如下:

#pragma code("")

#include "windows.h" // 这里的window.h必须要装上windows sdk

// 或者装个vc6.0

// 然后把vc98include里的头文件拷贝到

// siemenswinccaplib中

#pragma code()

HANDLE hFile;

DWORD dwPos, dwBytes;

char* lpszText = "hellorn";

int nLen = strlen(lpszText);

hFile = CreateFile("c:", GENERIC_WRITE, 0, NULL,

OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);

if(hFile == INVALID_HANDLE_VALUE)

{printf("can not open filern"); return;}

dwPos = SetFilePointer(hFile, 0, NULL, FILE_END);

LockFile(hFile, dwPos, 0, dwPos + nLen, 0);

WriteFile(hFile, lpszText, nLen, &dwBytes, NULL);

UnLockfile(hFile, dwPos, 0, dwPos + nLen, 0);

CloseHandle(hFile);

ps:如果编译时出现常量没有定义的错误,自行去winbase.h中找到定义并在脚本中自己预定义一下。

Upload By Yelky QQ1216534370


本文标签: 使用 文件 定义 文本