- 金币:
-
- 奖励:
-
- 热心:
-
- 注册时间:
- 2006-11-2
|
|
原帖由 ahjx05 于 2007-1-14 16:19 发表
谢谢迷思!真麻烦,运行你的程序还是要定位。
只好试用funlover朋友C语言程序,但不知道怎么操作,它不能自动链接到全景网上去取数据转换。以下的画面不知怎么操作,要请教funlover了
我的程序要手动到全景网下载资料的
http://www.p5w.net/p5w/home/data/quote/index.html
点击“深市A股行情日报”——“下载文本格式”——“另存为”rbsa_t20070112.txt文件,可以得到源文件1,同样可以获得沪市文件rbha_t20070112.txt作为源文件2。在我的程序中选择这两个文件,其他选项默认,执行合并就OK了。
有位朋友需要源代码,我 附上,供参考。
void CCombinForm::GetData(CString strFile,CString strDate,int nCode,int nEx,BOOL bDelFirst,CString &strDecData)
{
strDecData="";
CString strSrcData;
CFile file;
if(file.Open(strFile,CFile::modeRead|CFile::shareDenyNone))
{
DWORD dw=file.GetLength();
char *pData=(char *)malloc(dw+1);
file.Read(pData,dw);
file.Close();
pData[dw]=0;
strSrcData.Format("%s",pData);
free(pData);
}
else
{
return;
}
CString strTtl;
if(strFile.Find("rbha")<0)
{
if(strFile.Find("rbsa")<0)
{
if(MessageBox("文件名不包含有 rbha 或 rbsa ,继续吗?","合并文件",MB_ICONQUESTION|MB_YESNO)==IDNO) return;
strTtl="";
}
else
{
strTtl="SZ";
}
}
else
{
strTtl="SH";
}
CString strLine,tStr,str;
int p,i;
strSrcData.Replace(" "," ");
strSrcData.Replace("\t"," ");
strSrcData.Trim();
p=strSrcData.Find("\r\n");
if(bDelFirst)
{
strSrcData.Delete(0,p+2);
strSrcData.TrimLeft();
p=strSrcData.Find("\r\n");
}
nCode--;nEx--;
while(p>0)
{
strLine=strSrcData.Left(p);
strSrcData.Delete(0,p+2);
strSrcData.TrimLeft();
for(i=0;i<nCode;i++)
{
p=strLine.Find(" ");
strLine.Delete(0,p);
strLine.TrimLeft();
}
p=strLine.Find(" ");
strDecData+=strTtl+strLine.Left(p);
for(;i<nEx;i++)
{
p=strLine.Find(" ");
strLine.Delete(0,p);
strLine.TrimLeft();
}
p=strLine.Find(" ");
strDecData+="\t"+strDate+"\t"+strLine.Left(p)+"\r\n";
p=strSrcData.Find("\r\n");
}
}
void CCombinForm::OnBnClickedButtonMake()
{
// TODO: 在此添加控件通知处理程序代码
UpdateData();
m_strEditFile1.Trim();
m_strEditFile2.Trim();
m_strEditFileMk.Trim();
if(m_strEditFile1=="" || m_strEditFile2=="")
{
MessageBox("请输入要合并的两个文件名。","合并文件",MB_ICONWARNING);
return;
}
CString strData1,strData2;
CString strDate1=m_strEditFile1.Right(10),strDate2=m_strEditFile2.Right(10);
if(strDate1!=strDate2)
{
if(MessageBox("源文件1与源文件2的日期不同,继续合并这两个文件吗?\r\n(如果继续合并,将取源文件1的日期.)","合并文件",MB_ICONQUESTION|MB_YESNO)==IDNO) return;
}
CString strDate="20"+strDate1.Left(2)+"-"+strDate1.Mid(2,2)+"-"+strDate1.Mid(4,2);
GetData(m_strEditFile1,strDate,m_nEditCode1,m_nEditEx1,m_bCheck1,strData1);
if(strData1=="")
{
MessageBox("打开文件 "+m_strEditFile1+" 出错。","合并文件",MB_ICONWARNING);
return;
}
GetData(m_strEditFile2,strDate,m_nEditCode2,m_nEditEx2,m_bCheck2,strData2);
if(strData2=="")
{
MessageBox("打开文件 "+m_strEditFile2+" 出错。","合并文件",MB_ICONWARNING);
return;
}
CString strPath=m_strEditFile1.Left(m_strEditFile1.ReverseFind('\\')+1);
CFile fileW;
if(!fileW.Open(strPath+m_strEditFileMk,CFile::modeCreate|CFile::modeWrite))
{
MessageBox("创建文件 "+m_strEditFileMk+" 错误。","合并文件",MB_ICONWARNING);
return;
}
CString strAll=strData1+strData2;
fileW.Write(strAll.GetBuffer(0),strAll.GetLength());
fileW.Close();
MessageBox("完成文件合并。","合并文件",MB_ICONINFORMATION);
} |
|
|