xfile.cpp
来自「该程序是用vc开发的对动态数组进行管理的DLL」· C++ 代码 · 共 2,282 行 · 第 1/3 页
CPP
2,282 行
{ return D2;}void XFileSeis::dispHead(){ if(strcmp(filename(),"")==0) return; int i=1; cio<<enter<<i<<"\tHead.tracl---\t"<<Head.tracl<<enter;i++; cio<<i<<"\tHead.tracr---\t"<<Head.tracr<<enter;i++; cio<<i<<"\tHead.fldr---\t"<<Head.fldr<<enter;i++; cio<<i<<"\tHead.tracf---\t"<<Head.tracf<<enter;i++; cio<<i<<"\tHead.ep---\t"<<Head.ep<<enter;i++; cio<<i<<"\tHead.cdp---\t"<<Head.cdp<<enter;i++; cio<<i<<"\tHead.cdpt---\t"<<Head.cdpt<<enter;i++; cio<<i<<"\tHead.sx---\t"<<Head.sx<<enter;i++; cio<<i<<"\tHead.sy---\t"<<Head.sy<<enter;i++; cio<<i<<"\tHead.gx---\t"<<Head.gx<<enter;i++; cio<<i<<"\tHead.gy---\t"<<Head.gy<<enter;i++; cio<<i<<"\tHead.ns---\t"<<Head.ns<<enter;i++; cio<<i<<"\tHead.dt---\t"<<Head.dt<<enter;i++;}void XFileSeis::dispBhead(){ if(strcmp(filename(),"")==0) return; int i=1; XSegybhead bhed=Bhead; cio<<enter<<i<<"\tbhed.jobid---\t"<<bhed.jobid<<enter;i++; cio<<i<<"\tbhed.lino---\t"<<bhed.lino<<enter;i++; cio<<i<<"\tbhed.reno---\t"<<bhed.reno<<enter;i++; cio<<i<<"\tbhed.ntrpr---\t"<<bhed.ntrpr<<enter;i++; cio<<i<<"\tbhed.nart---\t"<<bhed.nart<<enter;i++; cio<<i<<"\tbhed.hdt---\t"<<bhed.hdt<<enter;i++; //4000 cio<<i<<"\tbhed.dto---\t"<<bhed.dto<<enter;i++; //4000 cio<<i<<"\tbhed.hns---\t"<<bhed.hns<<enter;i++; //751 cio<<i<<"\tbhed.nso---\t"<<bhed.nso<<enter;i++; //751 cio<<i<<"\tbhed.format---\t"<<bhed.format<<enter;i++; //1 cio<<i<<"\tbhed.fold---\t"<<bhed.fold<<enter;i++; //1 cio<<i<<"\tbhed.tsort---\t"<<bhed.tsort<<enter;i++; //4 cio<<i<<"\tbhed.vscode---\t"<<bhed.vscode<<enter;i++; cio<<i<<"\tbhed.hsfs---\t"<<bhed.hsfs<<enter;i++; cio<<i<<"\tbhed.hsfe---\t"<<bhed.hsfe<<enter;i++; cio<<i<<"\tbhed.hslen---\t"<<bhed.hslen<<enter;i++; cio<<i<<"\tbhed.hstyp---\t"<<bhed.hstyp<<enter;i++; cio<<i<<"\tbhed.schn---\t"<<bhed.schn<<enter;i++; cio<<i<<"\tbhed.hstas---\t"<<bhed.hstas<<enter;i++; cio<<i<<"\tbhed.hstae---\t"<<bhed.hstae<<enter;i++; cio<<i<<"\tbhed.htatyp---\t"<<bhed.htatyp<<enter;i++; cio<<i<<"\tbhed.hcorr---\t"<<bhed.hcorr<<enter;i++; cio<<i<<"\tbhed.bgrcv---\t"<<bhed.bgrcv<<enter;i++; cio<<i<<"\tbhed.rcvm---\t"<<bhed.rcvm<<enter;i++; cio<<i<<"\tbhed.mfeet---\t"<<bhed.mfeet<<enter;i++;//2 cio<<i<<"\tbhed.polyt---\t"<<bhed.polyt<<enter;i++; cio<<i<<"\tbhed.vpol---\t"<<bhed.vpol<<enter;i++;}void XFileSeis::write3600(){ XSegybhead bhed; char reel[3200]; memset(reel,'\0',3200); memset(&bhed,'\0',400); int numbertrace=1; bhed.lino=1; bhed.ntrpr=numbertrace; bhed.hdt=DT; bhed.hns=NS; bhed.format=1; bhed.fold=numbertrace; bhed.tsort=4; bhed.vscode=numbertrace; bhed.mfeet=1; write(reel); write(&bhed); }/********************************************************//********************************************************//********************************************************/void pcSegy_Bin(char *srcFile,char *desFile,unsigned short *pnum ,unsigned short *inter , long *tnum ,float *d2 ){ XFileSeis fileRead,fileWrite; fileRead.openr(srcFile,"segy",0); fileWrite.openw(desFile,"bin",0,fileRead.ns()); if(pnum!=NULL)*pnum=fileRead.ns(); if(tnum!=NULL)*tnum=fileRead.nt(); if(inter!=NULL)*inter=fileRead.dt(); if(d2!=NULL)*d2=fileRead.d2(); //fileWrite.write(fileRead.ebc()); //fileWrite.write(fileRead.bhead()); for(int i=0;i<fileRead.nt();i++) { if(i%100==0) cio<<i<<" / "<<fileRead.NT<<enter; fileRead.read( i ); //fileWrite.write(fileRead.head()); fileWrite.write(fileRead.data()); } fileRead.close(); fileWrite.close(); cio<<"pcSegy to Bin convert over\n"; }void wsSegy_Bin(char *srcFile,char *desFile,unsigned short *pnum ,unsigned short *inter , long *tnum ,float *d2 ){ XFileSeis fileRead,fileWrite; fileRead.openr(srcFile,"segy",1); fileWrite.openw(desFile,"bin",0,fileRead.ns()); if(pnum!=NULL)*pnum=fileRead.ns(); if(tnum!=NULL)*tnum=fileRead.nt(); if(inter!=NULL)*inter=fileRead.dt(); if(d2!=NULL)*d2=fileRead.d2(); for(int i=0;i<fileRead.nt();i++) { if(i%100==0) cio<<i<<" / "<<fileRead.NT<<enter; fileRead.read( i ); //fileWrite.write(fileRead.head()); fileWrite.write(fileRead.data()); } cio<<"wsSegy to Bin convert over\n";}void wsSu_Bin(char *srcFile,char *desFile,unsigned short *pnum ,unsigned short *inter , long *tnum ,float *d2 ){ cio<<"-------------------------"; XFileSeis fileRead,fileWrite; fileRead.openr(srcFile,"su",1); fileWrite.openw(desFile,"bin",0,fileRead.ns()); if(pnum!=NULL)*pnum=fileRead.ns(); if(tnum!=NULL)*tnum=fileRead.nt(); if(inter!=NULL)*inter=fileRead.dt(); if(d2!=NULL)*d2=fileRead.d2(); for(int i=0;i<fileRead.nt();i++) { if(i%100==0) cio<<i<<" / "<<fileRead.NT<<enter; fileRead.read( i ); fileWrite.write(fileRead.data()); } cio<<"wsSu to Bin convert over\n";}void pcSu_Bin(char *srcFile,char *desFile,unsigned short *pnum ,unsigned short *inter , long *tnum ,float *d2 ){ XFileSeis fileRead,fileWrite; fileRead.openr(srcFile,"su",0); fileWrite.openw(desFile,"bin",0,fileRead.ns()); if(pnum!=NULL)*pnum=fileRead.ns(); if(tnum!=NULL)*tnum=fileRead.nt(); if(inter!=NULL)*inter=fileRead.dt(); if(d2!=NULL)*d2=fileRead.d2(); for(int i=0;i<fileRead.nt();i++) { if(i%100==0) cio<<i<<" / "<<fileRead.NT<<enter; fileRead.read( i ); fileWrite.write(fileRead.data()); } cio<<"pcSu to Bin convert over\n";}void Bin_Bin(char *srcFile,char *desFile){ char data[10000]; int N=10000; XFileBin file1,file2; file1.openr(srcFile); file2.openw(desFile); int n=file1.length()/N; int m=file1.length()%N; for(int i=0;i<n;i++) { file1.read(data,N); swap4Arr(data,N/4); file2.write(data,N); } file1.read(data,m); swap4Arr(data,m/4); file2.write(data,m); cio<<"Bin to Bin convert over\n"; } void ASC_Bin(char *srcFile,char *desFile,long pnum){ float data[2000]; long n,m; n=pnum/2000; m=pnum%2000; XFileAsc file1; XFileBin file2; file1.openr(srcFile); file2.openw(desFile); for(long i=0;i<n;i++) { file1.read(data,2000); file2.write(data,2000); } file1.read(data,m); file2.write(data,m); cio<<"Asc to Bin convert over\n";}void Bin_ASC(char *srcFile,char *desFile,long Enter){ float d=0; if(Enter<=0) Enter=10;
XFileBin file1; XFileAsc file2; file1.openr(srcFile); file2.openw(desFile);
long n=file1.length()/4;
for(long i=0;i<n;i++)
{
file1.read2(&d,4);
file2<<d<<"\t";
if( (i+1) % Enter == 0 )
file2<<enter;
} cio<<"Bin to Asc convert over\n";}void Bin_pcSegy(char *srcFile,char *desFile,unsigned short pnum,unsigned short inter, float d2){ XFileSeis fileRead,fileWrite; fileRead.openr(srcFile,"bin",0,pnum,inter,d2); fileWrite.openw(desFile,"segy",0,pnum,inter,d2); fileWrite.write3600(); for(int i=0;i<fileRead.nt();i++) { if(i%100==0) cio<<i<<" / "<<fileRead.NT<<enter; fileRead.read( i ); fileWrite.write(fileRead.head()); fileWrite.write(fileRead.data()); } fileRead.close(); fileWrite.close(); cio<<" Bin to pcSegy convert over\n"; } void Bin_wsSegy(char *srcFile,char *desFile,unsigned short pnum,unsigned short inter, float d2){ XFileSeis fileRead,fileWrite; fileRead.openr(srcFile,"bin",0,pnum,inter,d2); fileWrite.openw(desFile,"segy",1,pnum,inter,d2); fileWrite.write3600(); for(int i=0;i<fileRead.nt();i++) { if(i%100==0) cio<<i<<" / "<<fileRead.NT<<enter; fileRead.read( i ); fileWrite.write(fileRead.head()); fileWrite.write(fileRead.data()); } cio<<" Bin to wsSegy convert over\n";}void Bin_wsSu(char *srcFile,char *desFile,unsigned short pnum,unsigned short inter,float d2){ XFileSeis fileRead,fileWrite; fileRead.openr(srcFile,"bin",0,pnum,inter,d2); fileWrite.openw(desFile,"su",1,pnum,inter,d2); fileWrite.write3600(); for(int i=0;i<fileRead.nt();i++) { if(i%100==0) cio<<i<<" / "<<fileRead.NT<<enter; fileRead.read( i ); fileWrite.write(fileRead.head()); fileWrite.write(fileRead.data()); } cio<<" Bin to wsSu convert over\n";}void Bin_pcSu(char *srcFile,char *desFile,unsigned short pnum,unsigned short inter,float d2){ XFileSeis fileRead,fileWrite; fileRead.openr(srcFile,"bin",0,pnum,inter,d2); fileWrite.openw(desFile,"su",0,pnum,inter,d2); fileWrite.write3600(); for(int i=0;i<fileRead.nt();i++) { if(i%100==0) cio<<i<<" / "<<fileRead.NT<<enter; fileRead.read( i ); fileWrite.write(fileRead.head()); fileWrite.write(fileRead.data()); } cio<<" Bin to pcSu convert over\n";}void pcSegy_wsSegy(char *srcFile,char *desFile){ XFileSeis fileRead,fileWrite; fileRead.openr(srcFile,"segy",0); fileWrite.openw(desFile,"segy",1,fileRead.ns(),fileRead.dt()); fileWrite.write(fileRead.ebc()); fileWrite.write(fileRead.bhead()); cio<<fileRead.dt()<<enter; cio<<fileRead.ns()<<enter; cio<<fileRead.nt()<<enter; for(int i=0;i<fileRead.nt();i++) { if(i%100==0) cio<<i<<" / "<<fileRead.NT<<enter; fileRead.read(i); fileWrite.write(fileRead.head()); fileWrite.write(fileRead.data()); } cio<<fileRead.dt()<<enter; cio<<fileRead.ns()<<enter; cio<<fileRead.nt()<<enter; cio<<"pcSegy to wsSegy convert over\n"; }void wsSegy_pcSegy(char *srcFile,char *desFile){ XFileSeis fileRead,fileWrite; fileRead.openr(srcFile,"segy",1); fileWrite.openw(desFile,"segy",0,fileRead.ns(),fileRead.dt()); fileWrite.write(fileRead.ebc()); fileWrite.write(fileRead.bhead()); for(int i=0;i<fileRead.nt();i++) { if(i%100==0) cio<<i<<" / "<<fileRead.NT<<enter; cio<<i<<enter; fileRead.read( i ); fileWrite.write(fileRead.head()); fileWrite.write(fileRead.data()); } cio<<" wsSegy to pcSegy convert over\n"; }void pcSegy_wsSu(char *srcFile,char *desFile){ XFileSeis fileRead,fileWrite; fileRead.openr(srcFile,"segy",0); cio<<fileRead.dt()<<enter; fileWrite.openw(desFile,"su",1,fileRead.ns(),fileRead.dt()); for(int i=0;i<fileRead.nt();i++) { if(i%100==0) cio<<i<<" / "<<fileRead.NT<<enter; fileRead.read( i ); fileWrite.write(fileRead.head()); fileWrite.write(fileRead.data()); } cio<<" pcSegy to wsSu convert over\n"; }void wsSu_pcSegy(char *srcFile,char *desFile){ XFileSeis fileRead,fileWrite; fileRead.openr(srcFile,"su",1); fileWrite.openw(desFile,"segy",0,fileRead.ns(),fileRead.dt(),fileRead.d2()); fileWrite.write3600(); for(int i=0;i<fileRead.nt();i++) { if(i%100==0) cio<<i<<" / "<<fileRead.NT<<enter; fileRead.read( i ); fileWrite.write(fileRead.head()); fileWrite.write(fileRead.data()); } cio<<" wsSu to pcSegy convert over\n"; }void wsSegy_wsSu(char *srcFile,char *desFile){ XFileSeis fileRead,fileWrite; fileRead.openr(srcFile,"segy",1); cio<<fileRead.dt()<<enter; fileWrite.openw(desFile,"su",1,fileRead.ns(),fileRead.dt()); for(int i=0;i<fileRead.nt();i++) { if(i%100==0) cio<<i<<" / "<<fileRead.NT<<enter; fileRead.read( i ); fileWrite.write(fileRead.head()); fileWrite.write(fileRead.data()); } cio<<" wsSegy to wsSu convert over\n"; }void wsSu_wsSegy(char *srcFile,char *desFile){ XFileSeis fileRead,fileWrite; fileRead.openr(srcFile,"su",1); fileWrite.openw(desFile,"segy",1,fileRead.ns(),fileRead.dt(),fileRead.d2()); fileWrite.write3600(); for(int i=0;i<fileRead.nt();i++) { if(i%100==0) cio<<i<<" / "<<fileRead.NT<<enter; fileRead.read( i ); fileWrite.write(fileRead.head()); fileWrite.write(fileRead.data()); } cio<<" wsSu to wsSegy convert over\n"; }void wsSu_pcSu(char *srcFile,char *desFile){ XFileSeis fileRead,fileWrite; fileRead.openr(srcFile,"su",1); fileWrite.openw(desFile,"su",0,fileRead.ns(),fileRead.dt(),fileRead.d2()); fileWrite.write3600(); for(int i=0;i<fileRead.nt();i++) { if(i%100==0) cio<<i<<" / "<<fileRead.NT<<enter; fileRead.read( i ); fileWrite.write(fileRead.head()); fileWrite.write(fileRead.data()); } cio<<" wsSu to wsSegy convert over\n"; }void pcSu_wsSu(char *srcFile,char *desFile){ XFileSeis fileRead,fileWrite; fileRead.openr(srcFile,"su",0); fileWrite.openw(desFile,"su",1,fileRead.ns(),fileRead.dt(),fileRead.d2()); fileWrite.write3600(); for(int i=0;i<fileRead.nt();i++) { if(i%100==0) cio<<i<<" / "<<fileRead.NT<<enter; fileRead.read( i ); fileWrite.write(fileRead.head()); fileWrite.write(fileRead.data()); } cio<<" wsSu to wsSegy convert over\n"; }void transBin(char *srcFile,char *desFile,long pnum,long tnum,int n){ XFileBin file1; XFileBin file2; char d[1000]; file1.openr(srcFile); file2.openw(desFile); for(int i=0;i<pnum;i++) for(int j=0;j<tnum;j++) { file1.toCur(n*j*pnum+i*n); file1.read2(&d,n); file2.write2(&d,n); }
cio<<" transBin convert over\n"; }void transAsc(char *srcFile,char *desFile,long pnum,long tnum){ XFile file1; XFile file2; char d[1000]; file1.openr(srcFile); file2.openw(desFile); for(int i=0;i<pnum;i++) { for(int j=0;j<tnum;j++) { file1.rewind(); for(int k=0;k<j*pnum+i;k++) file1>>d; file1>>d; file2<<d<<" \t\t"; } file2<<enter; } cio<<" transAsc convert over\n"; } void MergeASC_wsSegyShot(char *parFile){ /* parFile: content 4 (files number) AscFileName1 (input file name) AscFileName2 (input file name) AscFileName3 (input file name) AscFileName4 (input file name) SegyFileName (output file name) pnum(np) (number of sample) inter(dt) (interval of sample) tnumshot(nt) (number of trace in every shot) d2(d2) (distance between traces) numshot (number of shot int every file) */ XFile parfile; parfile.openr(parFile); long i,j,fnum; parfile>>fnum; char ascFileName[100][500],segyFileName[500]; for(i=0;i<fnum;i++) parfile>>(ascFileName[i]); parfile>>segyFileName; unsigned short pnum,inter; long tnum,tnumshot,numshot; float d2; parfile>>pnum>>inter>>tnumshot>>d2>>numshot; tnum=tnumshot*numshot; parfile.close(); XFile segyfile; segyfile.openwb(segyFileName); XSegybhead bhead; XSegyhead head; char reel[3200]; memset(&bhead,'\0',400); memset(&head,'\0',240); memset(reel,'\0',3200); bhead.hdt=inter; bhead.dto=inter; bhead.hns=pnum; bhead.nso=pnum; bhead.format=1; bhead.fold=1; bhead.tsort=4; bhead.mfeet=2; segyfile.write(reel,3200); swapXSegybhead(&bhead); segyfile.write(&bhead,400); float data[20000]; long NoTrace=0; for(i=0;i<fnum;i++) { XFileAsc ascfile; ascfile.openr(ascFileName[i]); cio<<"Merge "<<ascFileName[i]<<" ..."<<enter; for(j=0;j<tnum;j++) { NoTrace++; ascfile.read(data,pnum); memset(&head,'\0',240); head.tracl=NoTrace; head.tracr=NoTrace; head.tracf=(NoTrace-1)%tnumshot+1; head.ep =(NoTrace-1)%tnumshot+1; head.fldr =(NoTrace-1)/tnumshot+1; head.ns=pnum; head.dt=inter; head.d2=d2; swapXSegyhead(&head); swap4Arr(data,pnum); segyfile.write(&head,240); segyfile.write(data,pnum*4); } ascfile.close(); } segyfile.close(); cio<<"File : "<<segyFileName<<" is OK!\n"; }void MergeBin_wsSegyShot(char *parFile){ /* parFile: content 4 (files number) BinFileName1 (input file name) BinFileName2 (input file name) BinFileName3 (input file name) BinFileName4 (input file name) SegyFileName (output file name) pnum(np) (number of sample) inter(dt) (interval of sample) tnumshot(nt) (number of trace in every shot) d2(d2) (distance between traces) numshot (number of shot int every file) */ XFile parfile; parfile.openr(parFile); long i,j,fnum; parfile>>fnum; char ascFileName[100][500],segyFileName[500]; for(i=0;i<fnum;i++) parfile>>ascFileName[i]; parfile>>segyFileName; unsigned short pnum,inter; long tnum,tnumshot,numshot; float d2; parfile>>pnum>>inter>>tnumshot>>d2>>numshot; parfile.close(); tnum=tnumshot*numshot; XFile segyfile; segyfile.openwb(segyFileName); XSegybhead bhead; XSegyhead head; char reel[3200]; memset(&bhead,'\0',400); memset(&head,'\0',240); memset(reel,'\0',3200); bhead.hdt=inter; bhead.dto=inter; bhead.hns=pnum; bhead.nso=pnum; bhead.format=1; bhead.fold=1; bhead.tsort=4; bhead.mfeet=2; segyfile.write(reel,3200); swapXSegybhead(&bhead); segyfile.write(&bhead,400); float data[20000]; long NoTrace=0; for(i=0;i<fnum;i++) { XFileBin ascfile; ascfile.openr(ascFileName[i]); cio<<"Merge "<<ascFileName[i]<<" ..."<<enter; for(j=0;j<tnum;j++) { NoTrace++; memset(&head,'\0',240); head.tracl=NoTrace; head.tracr=NoTrace; head.tracf=(NoTrace-1)%tnumshot+1; head.ep =(NoTrace-1)%tnumshot+1; head.fldr =(NoTrace-1)/tnumshot+1; head.ns=pnum; head.dt=inter; head.d2=d2; ascfile.read(data,pnum); swapXSegyhead(&head); swap4Arr(data,pnum); segyfile.write(&head,240); segyfile.write(data,pnum*4); } ascfile.close(); } segyfile.close(); cio<<"File : "<<segyFileName<<" is OK!\n"; }
XString GetFilePath(XString strFileName) //"e:\\vc"
{
char cSign;
if(strFileName.find('\\')>=0)
cSign='\\';
else if(strFileName.find('/')>=0)
cSign='/';
else
return "";
int nTime=strFileName.contain(cSign);
return strFileName.section(cSign,0,nTime-1);
}
XString GetFileMainName(XString strFileName) //"CFileInfo.cpp"
{
char cSign;
if(strFileName.find('\\')>=0)
cSign='\\';
else if(strFileName.find('/')>=0)
cSign='/';
else
return strFileName;
int nTime=strFileName.contain(cSign);
return strFileName.section(cSign,nTime);
}
XString GetFileExtName(XString strFileName) //"cpp"
{
char cSign;
if(strFileName.find('.')>=0)
cSign='.';
else
return "";
int nTime=strFileName.contain(cSign);
return strFileName.section(cSign,nTime);
}
XString GetFileNoExtName(XString strFileName) //"e:\\vc\\CFileInfo"
{
char cSign;
if(strFileName.find('.')>=0)
cSign='.';
else
return strFileName;
int nTime=strFileName.contain(cSign);
return strFileName.section(cSign,0,nTime-1);
}
XString GetFileCoreName(XString strFileName) //"CFileInfo"
{
if(strFileName.find('.')<0)
return strFileName;
XString tmp=GetFileMainName(strFileName);
return tmp.section('.',0);
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?