文本文件的格式如下:第一列为FixtureID,第二列为PCAREV,第三列为Pname.
FIXTUREID PCAREV PROGRAM NAME
G01308AB B P01308010C
G01309AC B P01308E044
G01376AE B P013084345
、、、、、、、、、、、 3列100行,每行中字符串以一个Tab间隔。程序的目的是从对话框中输入FixtureID和PCAREV,点击OK后读取文本文件中的内容与之比较,如果输入的FixtureID和PCAREV 与文本文件一行中的FixtureID,PCAREV一致,则读取第三列的Pname并将其插入c:\\USER\\OBJECT\\startup.bch文件中第1,7,15行中%s位置,其他内容不能改变。
1:!! copy M:\QLogic\%s \%s .* C:\User\OBJECT\%s.*
2:
3:!! del *.obc
4:
5:/* TRANSLATE AFTER FILE LOADING */
6:TRAN
7:NAME=%s
8:su=ica
9:RUN
10:
11:!! del *.tpg
12:
13:/* RUN TEST PROGRAM */
14:DIAGNOSE
15:NAME=%s
16:Mode=TEST
17:Messages=CRT
18:RUN
19:
20:/* DEL ALL FILE AFTER ABORT */
21:
22:!! rm *
23:
24:/* SHUT OUT MONITOR PAGER */
25:
26:SHUT
27:
现在有如下的程序,是gg606大哥帮修改过的,但还有点问题,请教一下该如何修改啊?
//========================
struct PROGRAM
{ char FixtureID[20];
char PCAREV[5];
char Pname[30];
}prog[100];
//========================void CStartTestDlg::OnOKToStartTest()
{
UpdateData(TRUE); //更新m_FixtureID、m_PCAREV
//============================================================================= FILE *fp; int i;
i = 0;fp = fopen("C:\\USER\\Program.txt","rt");//以读模式打开文本文件
if(NULL == fp)
{
//报告打开文件失败
return;
} for(i=0;i<99;i++)
{
//program_type progType;
while ( !EOF( fscanf("%S%S%S", prog[i].FixtureID, prog[i].PCAREV, prog[i].Pname)) )
{
if(m_FixtureID == prog[i].FixtureID && m_PCAREV == prog[i].PCAREV)
{ //strText.Format(_T("!! copy M:\\QLogic\\%s\\%sC:\\User\\OBJECT\\%s.*"、、、、、、、、、、)); CString path("c:\\USER\\OBJECT\\startup.bch");
try
{
CStdioFile f(path, CFile::modeWrite|CFile::modeCreate|CFile::typeText );
f.WriteString(prog[i].Pname);
f.Close();
break;
}
catch(CFileException * e)
{
e->ReportError();
e->Delete();
f.Abort();
break;
}
}
}
fclose(fp);
ShellExecute(NULL,NULL,_T("DownLoad.cmd"),NULL,_T("c:\\USER\\Start\\"), SW_SHOW);
EndDialog(IDOK); }急用,在线等待、、、
FIXTUREID PCAREV PROGRAM NAME
G01308AB B P01308010C
G01309AC B P01308E044
G01376AE B P013084345
、、、、、、、、、、、 3列100行,每行中字符串以一个Tab间隔。程序的目的是从对话框中输入FixtureID和PCAREV,点击OK后读取文本文件中的内容与之比较,如果输入的FixtureID和PCAREV 与文本文件一行中的FixtureID,PCAREV一致,则读取第三列的Pname并将其插入c:\\USER\\OBJECT\\startup.bch文件中第1,7,15行中%s位置,其他内容不能改变。
1:!! copy M:\QLogic\%s \%s .* C:\User\OBJECT\%s.*
2:
3:!! del *.obc
4:
5:/* TRANSLATE AFTER FILE LOADING */
6:TRAN
7:NAME=%s
8:su=ica
9:RUN
10:
11:!! del *.tpg
12:
13:/* RUN TEST PROGRAM */
14:DIAGNOSE
15:NAME=%s
16:Mode=TEST
17:Messages=CRT
18:RUN
19:
20:/* DEL ALL FILE AFTER ABORT */
21:
22:!! rm *
23:
24:/* SHUT OUT MONITOR PAGER */
25:
26:SHUT
27:
现在有如下的程序,是gg606大哥帮修改过的,但还有点问题,请教一下该如何修改啊?
//========================
struct PROGRAM
{ char FixtureID[20];
char PCAREV[5];
char Pname[30];
}prog[100];
//========================void CStartTestDlg::OnOKToStartTest()
{
UpdateData(TRUE); //更新m_FixtureID、m_PCAREV
//============================================================================= FILE *fp; int i;
i = 0;fp = fopen("C:\\USER\\Program.txt","rt");//以读模式打开文本文件
if(NULL == fp)
{
//报告打开文件失败
return;
} for(i=0;i<99;i++)
{
//program_type progType;
while ( !EOF( fscanf("%S%S%S", prog[i].FixtureID, prog[i].PCAREV, prog[i].Pname)) )
{
if(m_FixtureID == prog[i].FixtureID && m_PCAREV == prog[i].PCAREV)
{ //strText.Format(_T("!! copy M:\\QLogic\\%s\\%sC:\\User\\OBJECT\\%s.*"、、、、、、、、、、)); CString path("c:\\USER\\OBJECT\\startup.bch");
try
{
CStdioFile f(path, CFile::modeWrite|CFile::modeCreate|CFile::typeText );
f.WriteString(prog[i].Pname);
f.Close();
break;
}
catch(CFileException * e)
{
e->ReportError();
e->Delete();
f.Abort();
break;
}
}
}
fclose(fp);
ShellExecute(NULL,NULL,_T("DownLoad.cmd"),NULL,_T("c:\\USER\\Start\\"), SW_SHOW);
EndDialog(IDOK); }急用,在线等待、、、
struct PROGRAM
{
char FixtureID[20];
char PCAREV[5];
char Pname[30];
};//prog[100];
void CStartTestDlg::OnOKToStartTest()
{
UpdateData(TRUE); //这一句就可以更新m_FixtureID、m_PCAREV
//============================================================================= FILE *fp;
fp = fopen("C:\\USER\\Program.txt","rt");//以读模式打开文本文件
if(NULL == fp)
{
//报告打开文件失败
return;
} program_type progType;
while ( EOF != fscanf("%S%S%S", progType.FixtureID, progType.PCAREV, progType.Pname) )
{
if(m_FixtureID == progType.FixtureID && m_PCAREV == progType.PCAREV)
{
//这一句搞什么?
CFile f
strText.Format(_T("!! copy M:\\QLogic\\+Pname+\\+Pname+.* C:\\User\\OBJECT\\+Pname+.*")); // CString path("c:\\USER\\OBJECT\\startup.bch");
try
{
CFile f(path, CFile::modeReadWrite);
int len = f.GetLength();
// char * pbuf = new char[len+1];
CString str;
char * pbuf = str.GetBufferSetLength(len+100);
f.Read(pbuf, len);
pbuf[len] = 0; //加结束符
CString str1;
str1.Format(pbuf, progType.Pname, progType.Pname, progType.Pname,
progType.Pname, progType.Pname);
f.SeekToBegin();
f.Write(str1.operator LPCTSTR(), str1.GetLength());
str.ReleaseBuffer();
f.Close();
break;
}
catch(CFileException * e)
{
e->ReportError();
e->Delete();
f.Abort();
break;
}
}
}
fclose(fp); //??
ShellExecute(NULL,NULL,_T("DownLoad.cmd"),NULL,_T("c:\\USER\\Start\\"), SW_SHOW);
EndDialog(IDOK); }
这里的"%s%s%s", s用小写!如果你要多次执行这样的操作,建议先将最初的startup.bch文件做一个备份,
然后每次读取这个备份文件的内容作为格式串用。
struct PROGRAM
{
char FixtureID[20];
char PCAREV[5];
char Pname[30];
};//prog[100]; void CStartTestDlg::OnOKToStartTest()
{
UpdateData(TRUE); //这一句就可以更新m_FixtureID、m_PCAREV
//============================================================================= FILE *fp;
fp = fopen("C:\\USER\\Program.txt","rt");//以读模式打开文本文件
if(NULL == fp)
{
//报告打开文件失败
return;
} program_type progType;
while ( EOF != fscanf("%s%s%s", progType.FixtureID, progType.PCAREV, progType.Pname) )
{
if(m_FixtureID == progType.FixtureID && m_PCAREV == progType.PCAREV)
{
//这一句搞什么?
CFile f
CFileException fex;
if(!f.Open("c:\\USER\\OBJECT\\startup.bch.bak", CFile::modeRead, &fex))
{
fex.ReportError();
break;
}
int len = f.GetLength();
char * pbuf = new char[len+2];
f.Read(pbuf, len);
pbuf[len] = 0; //加结束符
f.Close(); if(!f.Open("c:\\USER\\OBJECT\\startup.bch", CFile::modeReadWrite, &fex))
{
fex.ReportError();
break;
}
CString str;
str.Format(pbuf, progType.Pname, progType.Pname, progType.Pname,
progType.Pname, progType.Pname);
delete [] pbuf;
f.Write(str.operator LPCTSTR(), str.GetLength());
f.Close();
break;
}
}
fclose(fp); //??
ShellExecute(NULL,NULL,_T("DownLoad.cmd"),NULL,_T("c:\\USER\\Start\\"), SW_SHOW);
EndDialog(IDOK); }