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
版权声明:本文标题:WinCC如何读写txt文件 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/free/1703163918h440546.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论