diff options
Diffstat (limited to 'contrib/dbcEditer/dbcedit.cpp')
-rw-r--r-- | contrib/dbcEditer/dbcedit.cpp | 769 |
1 files changed, 769 insertions, 0 deletions
diff --git a/contrib/dbcEditer/dbcedit.cpp b/contrib/dbcEditer/dbcedit.cpp new file mode 100644 index 00000000000..2812a3f7071 --- /dev/null +++ b/contrib/dbcEditer/dbcedit.cpp @@ -0,0 +1,769 @@ +//--------------------------------------------------------------------------- + +#include <vcl.h> +#pragma hdrstop + +#include "dbcedit.h" +#include "stdio.h" +#include "IdGlobal.hpp" +#include <inifiles.hpp> +#include "TitleFrm.h" +#include <dir.h> +#include "thOpenSource.h" +#include "SearchFrm.h" +//#include "SysUtils.hpp" + + +//--------------------------------------------------------------------------- +#pragma package(smart_init) +#pragma resource "*.dfm" +TFrmMain *FrmMain; +//--------------------------------------------------------------------------- +__fastcall TFrmMain::TFrmMain(TComponent* Owner) + : TForm(Owner) +{ + OpenOk=false; + Term=false; +} +//--------------------------------------------------------------------------- + +void __fastcall TFrmMain::btOpenClick(TObject *Sender) +{ + if(OpenDialog1->Execute()){ + if (FileExists(OpenDialog1->FileName)){ + OpenOk=false; + if(thOpen){ + thOpen->Terminate(); + } + thOpen = new thOpenFile(false); + //thOpen->Priority = tpTimeCritical; + pnFileName->Caption = OpenDialog1->FileName; + }else{ + OpenOk=false; + pnFileName->Caption = ""; + } + } +} +//--------------------------------------------------------------------------- +void __fastcall TFrmMain::btSaveClick(TObject *Sender) +{ + //CurrentOpenFile; + if(OpenOk){ + SaveToFile(CurrentOpenFile.c_str()); + }else{ + ShowMessage("文件未打开完成!"); + } +} +//--------------------------------------------------------------------------- + +void TFrmMain::SaveToFile(const char * pszFileName) +{ + char szFileName[255]; + FILE *stream; + + + + + fnsplit(pszFileName, 0, 0, szFileName, 0); + strcat(szFileName, "_new.dbc"); + + + AnsiString NewFileName=ExtractFilePath(Application->ExeName)+szFileName;//=pszFileName; + int iFileHandle; //文件句柄 + AnsiString iniSetFile=ExtractFilePath(Application->ExeName)+"BcdEditer.ini"; + AnsiString SectionName=ExtractFileName(CurrentOpenFile); + + DWORD w; + + CopyFileTo(pszFileName,NewFileName); + + iFileHandle = FileOpen(NewFileName, fmOpenRead|fmOpenWrite);//打开文件 + + if ((stream = fopen(CurrentOpenFile.c_str(), "r+")) + == NULL) + { + ShowMessage("打开文件出错"); + return; + } + + + int iVal; + float fVal; + bool isFloat; + int ColType; + + FileSeek(iFileHandle,0x14,0); + TIniFile *ini; + ini = new TIniFile( iniSetFile ); + + for(int i=1; i<sgEdit->RowCount; i++) + { + for(int j=1; j<sgEdit->ColCount; j++) + { + if(j==1){ //ID + iVal=StrToInt(sgEdit->Cells[j][i]); + FileWrite(iFileHandle, &iVal, 4); + }else{ + + //ColType= ini->ReadInteger(SectionName,"ColType"+IntToStr(j-1),0); + //thOpen->ColType[10000]; + + switch (thOpen->ColType[j]) + { + case 0: //整型 + iVal=StrToFloat(sgEdit->Cells[j][i]); + FileWrite(iFileHandle, &iVal, 4); + break; + case 1: //浮点 + fVal=StrToFloat(sgEdit->Cells[j][i]); + FileWrite(iFileHandle, &fVal, 4); + break; + case 2: //文本 + fseek(stream, 0x14+(i*(sgEdit->ColCount-1)+(j-1))*4, 0); + fread(&iVal, 4, 1, stream); + FileWrite(iFileHandle, &iVal, 4); + break; + default: //整型 + iVal=StrToFloat(sgEdit->Cells[j][i]); + FileWrite(iFileHandle, &iVal, 4); + } + } + } + } + FileClose(iFileHandle); + fclose(stream); + + delete ini; + ShowMessage("Save To File:"+NewFileName); +} +void __fastcall TFrmMain::btIntTypeClick(TObject *Sender) +{ +if(OpenOk==true){ + AnsiString iniSetFile=ExtractFilePath(Application->ExeName)+"BcdEditer.ini"; + AnsiString SectionName=ExtractFileName(CurrentOpenFile); + TIniFile *ini; + ini = new TIniFile( iniSetFile ); + ini->WriteInteger(SectionName,"ColType"+IntToStr(sgEdit->Col),0); + delete ini; + thOpen->ColType[sgEdit->Col]=0; + //重新打开对应列的值 + //OpenFileCol(AnsiString FileName,int ColType); + OpenFileCol(CurrentOpenFile,sgEdit->Col,0); +} +} +//--------------------------------------------------------------------------- + + +void __fastcall TFrmMain::btFloatTypeClick(TObject *Sender) +{ +if(OpenOk==true){ + AnsiString iniSetFile=ExtractFilePath(Application->ExeName)+"BcdEditer.ini"; + AnsiString SectionName=ExtractFileName(CurrentOpenFile); + TIniFile *ini; + ini = new TIniFile( iniSetFile ); + ini->WriteInteger(SectionName,"ColType"+IntToStr(sgEdit->Col),1); + delete ini; + thOpen->ColType[sgEdit->Col]=1; + OpenFileCol(CurrentOpenFile,sgEdit->Col,1); +} +} +//--------------------------------------------------------------------------- + +void __fastcall TFrmMain::PopupMenu1Popup(TObject *Sender) +{ +if(OpenOk==true){ + AnsiString iniSetFile=ExtractFilePath(Application->ExeName)+"BcdEditer.ini"; + AnsiString SectionName=ExtractFileName(CurrentOpenFile); + int ColType; + TIniFile *ini; + ini = new TIniFile( iniSetFile ); + ColType=ini->ReadInteger(SectionName,"ColType"+IntToStr(sgEdit->Col),0); + delete ini; + switch (ColType) + { + case 0: + btIntType->Checked=true; + btFloatType->Checked=false; + btTxtType->Checked=false; + break; + case 1: + btIntType->Checked=false; + btFloatType->Checked=true; + btTxtType->Checked=false; + break; + case 2: + btIntType->Checked=false; + btFloatType->Checked=false; + btTxtType->Checked=true; + break; + default: + btIntType->Checked=true; + btFloatType->Checked=false; + } +} +} +//--------------------------------------------------------------------------- + +void __fastcall TFrmMain::N1Click(TObject *Sender) +{ + AnsiString iniSetFile=ExtractFilePath(Application->ExeName)+"BcdEditer.ini"; + AnsiString SectionName=ExtractFileName(CurrentOpenFile); + int ColType; + FrmTitle->edTitle->Text=sgEdit->Cells[sgEdit->Col][0]; + if(FrmTitle->ShowModal()==mrOk){ + TIniFile *ini; + ini = new TIniFile( iniSetFile ); + ini->WriteString(SectionName,"ColTitle"+IntToStr(sgEdit->Col),FrmTitle->edTitle->Text); + delete ini; + sgEdit->Cells[sgEdit->Col][0]=FrmTitle->edTitle->Text; + } +} +//--------------------------------------------------------------------------- + + + +void __fastcall TFrmMain::FormDestroy(TObject *Sender) +{ + if(thOpen){ + thOpen->Terminate(); + SleepEx(200,0); + } +} +//--------------------------------------------------------------------------- + +void __fastcall TFrmMain::ToolButton1Click(TObject *Sender) +{ + bool SeFlag=true; + if(FrmSearch->ShowModal()==mrOk){ + switch (FrmSearch->rgSI->ItemIndex) + { + case 0: //向上找; + for(int i=sgEdit->ColCount*sgEdit->Row+sgEdit->Col-1;i>sgEdit->ColCount;i--){ + if(i%sgEdit->ColCount!=0){ + if( 0==CompareStr(sgEdit->Cells[i-sgEdit->ColCount*(i/sgEdit->ColCount)][i/sgEdit->ColCount], + FrmSearch->edSeach->Text)){ //找到了 + sgEdit->Col=i-sgEdit->ColCount*i/sgEdit->ColCount; + sgEdit->Row=i/sgEdit->ColCount; + SeFlag=false; + break; + } + } + } + if(SeFlag) ShowMessage("Seach Top,Find Nothing."); + break; + case 1: //向下找; + for(int i=sgEdit->ColCount*sgEdit->Row+sgEdit->Col+1;i<sgEdit->ColCount*sgEdit->RowCount;i++){ + if(i%sgEdit->ColCount!=0){ + if( 0==CompareStr(sgEdit->Cells[i-sgEdit->ColCount*(i/sgEdit->ColCount)][i/sgEdit->ColCount], + FrmSearch->edSeach->Text)){ //找到了 + sgEdit->Col=i-sgEdit->ColCount*(i/sgEdit->ColCount); + sgEdit->Row=i/sgEdit->ColCount; + SeFlag=false; + break; + } + } + } + if(SeFlag) ShowMessage("Seach End,Find Nothing"); + break; + case 2: //当前列向上找; + for(int i=sgEdit->Row;i>1;i--){ + if( 0==CompareStr(sgEdit->Cells[sgEdit->Col][i], + FrmSearch->edSeach->Text)){ //找到了 + sgEdit->Row=i; + SeFlag=false; + break; + } + } + if(SeFlag) ShowMessage("Seach col top,Find Nothing"); + break; + case 3: //当前列向下找; + for(int i=sgEdit->Row;i<sgEdit->RowCount;i++){ + if( 0==CompareStr(sgEdit->Cells[sgEdit->Col][i], + FrmSearch->edSeach->Text)){ //找到了 + sgEdit->Row=i; + SeFlag=false; + break; + } + } + if(SeFlag) ShowMessage("Seach col end,Find Nothing."); + break; + } + } +} +//--------------------------------------------------------------------------- + +void __fastcall TFrmMain::sgEditKeyDown(TObject *Sender, WORD &Key, + TShiftState Shift) +{ + + bool SeFlag=true; + if(Key==VK_F3){ + switch (FrmSearch->rgSI->ItemIndex) + { + case 0: //向上找; + for(int i=sgEdit->ColCount*sgEdit->Row+sgEdit->Col-1;i>sgEdit->ColCount;i--){ + if(i%sgEdit->ColCount!=0){ + if( 0==CompareStr(sgEdit->Cells[i-sgEdit->ColCount*(i/sgEdit->ColCount)][i/sgEdit->ColCount], + FrmSearch->edSeach->Text)){ //找到了 + sgEdit->Col=i-sgEdit->ColCount*i/sgEdit->ColCount; + sgEdit->Row=i/sgEdit->ColCount; + SeFlag=false; + break; + } + } + } + if(SeFlag) ShowMessage("Seach Top,Find Nothing."); + break; + case 1: //向下找; + for(int i=sgEdit->ColCount*sgEdit->Row+sgEdit->Col+1;i<sgEdit->ColCount*sgEdit->RowCount;i++){ + if(i%sgEdit->ColCount!=0){ + if( 0==CompareStr(sgEdit->Cells[i-sgEdit->ColCount*(i/sgEdit->ColCount)][i/sgEdit->ColCount], + FrmSearch->edSeach->Text)){ //找到了 + sgEdit->Col=i-sgEdit->ColCount*(i/sgEdit->ColCount); + sgEdit->Row=i/sgEdit->ColCount; + SeFlag=false; + break; + } + } + } + if(SeFlag) ShowMessage("Seach End,Find Nothing."); + break; + case 2: //当前列向上找; + for(int i=sgEdit->Row;i>1;i--){ + if( 0==CompareStr(sgEdit->Cells[sgEdit->Col][i], + FrmSearch->edSeach->Text)){ //找到了 + sgEdit->Row=i; + SeFlag=false; + break; + } + } + if(SeFlag) ShowMessage("Seach col Top,Find Nothing."); + break; + case 3: //当前列向下找; + for(int i=sgEdit->Row;i<sgEdit->RowCount;i++){ + if( 0==CompareStr(sgEdit->Cells[sgEdit->Col][i], + FrmSearch->edSeach->Text)){ //找到了 + sgEdit->Row=i; + SeFlag=false; + break; + } + } + if(SeFlag) ShowMessage("Seach col end,Find Nothing."); + break; + } + } +} +//--------------------------------------------------------------------------- + +void __fastcall TFrmMain::sgEditSelectCell(TObject *Sender, int ACol, + int ARow, bool &CanSelect) +{ +// +} +//--------------------------------------------------------------------------- +void __fastcall TFrmMain::OpenFileCol(AnsiString FileName,int ColIndex,int ColType) +{ + int iFileHandle; //文件句柄 + char Txtbuf[255]; + int iVal; + float fVal; + FILE *stream; + long curpos, length; + DWORD dwRows, dwCols, dwRowLen, dwTextLen; + + DWORD dwTextStartPos; + char* pTextPtr ; + + + if ((stream = fopen(FileName.c_str(), "r+")) + == NULL) + { + ShowMessage("Open File Error"); + return; + } + + curpos = ftell(stream); + fseek(stream, 0L, SEEK_END); + length = ftell(stream); + + + switch (ColType) + { + case 0: //整型值 Int + for(int i=0;i<sgEdit->RowCount-1;i++){ + fseek(stream, 0x14+(i*(sgEdit->ColCount-1)+(ColIndex-1))*4, 0); + fread(&iVal, 4, 1, stream); + sgEdit->Cells[ColIndex][i+1]=IntToStr(iVal); + } + break; + case 1: //浮点值 Float + for(int i=0;i<sgEdit->RowCount-1;i++){ + fseek(stream, 0x14+(i*(sgEdit->ColCount-1)+(ColIndex-1))*4, 0); + fread(&fVal, 4, 1, stream); + sgEdit->Cells[ColIndex][i+1]=FloatToStr(fVal); + } + break; + case 2: //文本 Text + fseek(stream,0x4,0); + fread(&iVal, 4, 1, stream); + dwRows= iVal; + fread(&iVal, 4, 1, stream); + dwCols = iVal; + fread(&iVal, 4, 1, stream); + dwRowLen = iVal; + fread(&iVal, 4, 1, stream); + dwTextLen = iVal; + + dwTextStartPos = dwRows*dwRowLen+20; + for(int i=0;i<sgEdit->RowCount-1;i++){ + fseek(stream, 0x14+(i*(sgEdit->ColCount-1)+(ColIndex-1))*4, 0); + fread(&iVal, 4, 1, stream); + sgEdit->Cells[ColIndex][i+1]=IntToStr(iVal); + if(dwTextStartPos + iVal < length){ + fseek(stream,dwTextStartPos + iVal,0); + fread(Txtbuf, 1, 255, stream); + //pTextPtr = pBuff + dwTextStartPos + lTemp; + sgEdit->Cells[ColIndex][i+1]=Txtbuf; + }else{ + sgEdit->Cells[ColIndex][i+1]="This Col Not Text!"; + } + } + break; + } + fclose(stream); +} +void __fastcall TFrmMain::Timer1Timer(TObject *Sender) +{ + if(OpenOk){ + lbOpState->Caption = "Open File Ok."; + }else{ + lbOpState->Caption = "Open Now....."; + } +} +//--------------------------------------------------------------------------- +//当前格子写入修改文件中 +void __fastcall TFrmMain::N4Click(TObject *Sender) +{ + if(!thOpen) return; + + int iFileHandle; //文件句柄 + char buf[4]; + int iVal; + float fVal; + FILE *stream; +/* + if ((stream = fopen(CurrentOpenFile.c_str(), "r+")) + == NULL) + { + ShowMessage("打开文件出错"); + return; + } +*/ + iFileHandle = FileOpen(CurrentOpenFile, fmOpenRead|fmOpenWrite);//打开文件 + + switch (thOpen->ColType[sgEdit->Col]) + { + case 0: //整型值 + //for(int i=0;i<sgEdit->RowCount-1;i++){ + /* + fseek(stream, 0x14+((sgEdit->Row-1)*(sgEdit->ColCount-1)+(sgEdit->Col-1))*4, 0); + iVal=StrToInt(sgEdit->Cells[sgEdit->Col][sgEdit->Row]); + memcpy(buf, &iVal, 4); + for(int i=0;i<4;i++) + fwrite(buf+i, 1, 1, stream); + */ + iVal=StrToInt(sgEdit->Cells[sgEdit->Col][sgEdit->Row]); + memcpy(buf, &iVal, 4); + FileSeek(iFileHandle,0x14+((sgEdit->Row-1)*(sgEdit->ColCount-1)+(sgEdit->Col-1))*4,0); + FileWrite(iFileHandle,buf,4); + //} + break; + case 1: //浮点值 + //fseek(stream, 0x14+((sgEdit->Row-1)*(sgEdit->ColCount-1)+(sgEdit->Col-1))*4, 0); + //fVal=StrToFloat(sgEdit->Cells[sgEdit->Col][sgEdit->Row]); + //fwrite(&fVal, 4, 1, stream); + fVal=StrToFloat(sgEdit->Cells[sgEdit->Col][sgEdit->Row]); + memcpy(buf, &fVal, 4); + FileSeek(iFileHandle,0x14+((sgEdit->Row-1)*(sgEdit->ColCount-1)+(sgEdit->Col-1))*4,0); + FileWrite(iFileHandle,buf,4); + break; + case 2: //文本不写入 + break; + } + + // fclose(stream); + FileClose(iFileHandle); +} +//--------------------------------------------------------------------------- + +void __fastcall TFrmMain::btTxtTypeClick(TObject *Sender) +{ +if(OpenOk==true){ + AnsiString iniSetFile=ExtractFilePath(Application->ExeName)+"BcdEditer.ini"; + AnsiString SectionName=ExtractFileName(CurrentOpenFile); + TIniFile *ini; + ini = new TIniFile( iniSetFile ); + ini->WriteInteger(SectionName,"ColType"+IntToStr(sgEdit->Col),2); + delete ini; + thOpen->ColType[sgEdit->Col]=2; + OpenFileCol(CurrentOpenFile,sgEdit->Col,2); +} +} +//--------------------------------------------------------------------------- + +void __fastcall TFrmMain::ToolButton3Click(TObject *Sender) +{ + int OldCol; + int OldRow; + OldRow=sgEdit->Row; + OldCol=sgEdit->Col; + if(sgEdit->FixedCols==1){ + sgEdit->FixedCols =2; + if(OldCol!=1) + sgEdit->Col=OldCol; + sgEdit->Row=OldRow; + }else{ + sgEdit->FixedCols =1; + sgEdit->Row=OldRow; + if(OldCol!=2) + sgEdit->Col=OldCol; + } +} +//--------------------------------------------------------------------------- + +void __fastcall TFrmMain::btRowSaveClick(TObject *Sender) +{ +if(OpenOk==false) return; + + int iFileHandle; //文件句柄 + char Txtbuf[255]; + int iVal; + char buf[4]; + float fVal; + FILE *stream; + long curpos, length; + DWORD dwRows, dwCols, dwRowLen, dwTextLen; + + DWORD dwTextStartPos; + char* pTextPtr ; + + + //if ((stream = fopen(CurrentOpenFile.c_str(), "r+")) + // == NULL) + //{ + // ShowMessage("打开文件出错"); + // return; + //} + + //curpos = ftell(stream); + //fseek(stream, 0L, SEEK_END); + //length = ftell(stream); + iFileHandle = FileOpen(CurrentOpenFile, fmOpenRead|fmOpenWrite);//打开文件 + +for(int i=0;i<sgEdit->ColCount-1;i++){ + switch (thOpen->ColType[i]) + { + case 0: //整型值 sgEdit->Row + //fseek(stream, 0x14+((sgEdit->Row-1)*(sgEdit->ColCount-1)+i)*4, 0); + //iVal=StrToInt(sgEdit->Cells[i+1][sgEdit->Row]); + //fwrite(&iVal, 4, 1, stream); + iVal=StrToInt(sgEdit->Cells[i+1][sgEdit->Row]); + memcpy(buf, &iVal, 4); + FileSeek(iFileHandle,0x14+((sgEdit->Row-1)*(sgEdit->ColCount-1)+i)*4,0); + FileWrite(iFileHandle,buf,4); + break; + case 1: //浮点值 + //fseek(stream, 0x14+((sgEdit->Row-1)*(sgEdit->ColCount-1)+i)*4, 0); + //fVal=StrToFloat(sgEdit->Cells[i+1][sgEdit->Row]); + //fwrite(&fVal, 4, 1, stream); + fVal=StrToFloat(sgEdit->Cells[i+1][sgEdit->Row]); + memcpy(buf, &fVal, 4); + FileSeek(iFileHandle,0x14+((sgEdit->Row-1)*(sgEdit->ColCount-1)+i)*4,0); + FileWrite(iFileHandle,buf,4); + break; + case 2: //文本 不存 + break; + } +} + //fclose(stream); + FileClose(iFileHandle); + ShowMessage("The "+IntToStr(sgEdit->Row)+" Row Write Ok!"); +} +//--------------------------------------------------------------------------- + +void __fastcall TFrmMain::btColSaveClick(TObject *Sender) +{ +if(OpenOk==false) return; + + int iFileHandle; //文件句柄 + char Txtbuf[255]; + int iVal; + char buf[4]; + float fVal; + FILE *stream; + long curpos, length; + DWORD dwRows, dwCols, dwRowLen, dwTextLen; + + DWORD dwTextStartPos; + char* pTextPtr ; + + iFileHandle = FileOpen(CurrentOpenFile, fmOpenRead|fmOpenWrite);//打开文件 + + //if ((stream = fopen(CurrentOpenFile.c_str(), "r+")) + // == NULL) + //{ + // ShowMessage("打开文件出错"); + // return; + //} + + //curpos = ftell(stream); + //fseek(stream, 0L, SEEK_END); + //length = ftell(stream); + + + switch (thOpen->ColType[sgEdit->Col]) + { + case 0: //整型值 + for(int i=0;i<sgEdit->RowCount-1;i++){ + //fseek(stream, 0x14+(i*(sgEdit->ColCount-1)+(sgEdit->Col-1))*4, 0); + //iVal=StrToInt(sgEdit->Cells[sgEdit->Col][i+1]); + //fwrite(&iVal, 4, 1, stream); + iVal=StrToInt(sgEdit->Cells[sgEdit->Col][i+1]); + memcpy(buf, &iVal, 4); + FileSeek(iFileHandle,0x14+(i*(sgEdit->ColCount-1)+(sgEdit->Col-1))*4,0); + FileWrite(iFileHandle,buf,4); + } + break; + case 1: //浮点值 + for(int i=0;i<sgEdit->RowCount-1;i++){ + //fseek(stream, 0x14+(i*(sgEdit->ColCount-1)+(sgEdit->Col-1))*4, 0); + //fVal=StrToFloat(sgEdit->Cells[sgEdit->Col][i+1]); + //fwrite(&fVal, 4, 1, stream); + fVal=StrToFloat(sgEdit->Cells[sgEdit->Col][i+1]); + memcpy(buf, &fVal, 4); + FileSeek(iFileHandle,0x14+(i*(sgEdit->ColCount-1)+(sgEdit->Col-1))*4,0); + FileWrite(iFileHandle,buf,4); + } + break; + case 2: //文本 不存 + break; + } + //fclose(stream); + + FileClose(iFileHandle); + ShowMessage("The "+IntToStr(sgEdit->Col)+"Col Write Ok!"); +} +//--------------------------------------------------------------------------- + +void __fastcall TFrmMain::btRowClearClick(TObject *Sender) +{ +if(OpenOk==false) return; + + int iFileHandle; //文件句柄 + char Txtbuf[255]; + int iVal; + float fVal; + FILE *stream; + long curpos, length; + DWORD dwRows, dwCols, dwRowLen, dwTextLen; + + DWORD dwTextStartPos; + char* pTextPtr ; + + + if ((stream = fopen(CurrentOpenFile.c_str(), "r+")) + == NULL) + { + ShowMessage("Open File Error!"); + return; + } + + curpos = ftell(stream); + fseek(stream, 0L, SEEK_END); + length = ftell(stream); + +for(int i=1;i<sgEdit->ColCount-1;i++){ + switch (thOpen->ColType[i]) + { + case 0: //整型值 sgEdit->Row + //fseek(stream, 0x14+(sgEdit->Row*(sgEdit->ColCount-1)+i)*4, 0); + //iVal=StrToInt(sgEdit->Cells[i+1][sgEdit->Row]); + //fwrite(&iVal, 4, 1, stream); + sgEdit->Cells[i+1][sgEdit->Row]="0"; + break; + case 1: //浮点值 + //fseek(stream, 0x14+(sgEdit->Row*(sgEdit->ColCount-1)+i)*4, 0); + //fVal=StrToFloat(sgEdit->Cells[i+1][sgEdit->Row]); + //fwrite(&fVal, 4, 1, stream); + sgEdit->Cells[i+1][sgEdit->Row]="0"; + break; + case 2: //文本 不存 + break; + } +} + fclose(stream); +} +//--------------------------------------------------------------------------- + +void __fastcall TFrmMain::btColClearClick(TObject *Sender) +{ +if(OpenOk==false) return; + + int iFileHandle; //文件句柄 + char Txtbuf[255]; + int iVal; + float fVal; + FILE *stream; + long curpos, length; + DWORD dwRows, dwCols, dwRowLen, dwTextLen; + + DWORD dwTextStartPos; + char* pTextPtr ; + + + if ((stream = fopen(CurrentOpenFile.c_str(), "r+")) + == NULL) + { + ShowMessage("Open File Error!"); + return; + } + + curpos = ftell(stream); + fseek(stream, 0L, SEEK_END); + length = ftell(stream); + + + switch (thOpen->ColType[sgEdit->Col]) + { + case 0: //整型值 + for(int i=0;i<sgEdit->RowCount-1;i++){ + //fseek(stream, 0x14+(i*(sgEdit->ColCount-1)+(ColIndex-1))*4, 0); + //iVal=StrToInt(sgEdit->Cells[ColIndex][i+1]); + //fwrite(&iVal, 4, 1, stream); + sgEdit->Cells[sgEdit->Col][i+1]="0"; + } + break; + case 1: //浮点值 + for(int i=0;i<sgEdit->RowCount-1;i++){ + //fseek(stream, 0x14+(i*(sgEdit->ColCount-1)+(ColIndex-1))*4, 0); + //fVal=StrToFloat(sgEdit->Cells[ColIndex][i+1]); + //fwrite(&fVal, 4, 1, stream); + sgEdit->Cells[sgEdit->Col][i+1]="0"; + } + break; + case 2: //文本 不存 + break; + } + fclose(stream); +} +//--------------------------------------------------------------------------- + +void __fastcall TFrmMain::ToolButton4Click(TObject *Sender) +{ + AnsiString Cmd; + Cmd = "calc.exe"; + WinExec(Cmd.c_str(), SW_SHOWNORMAL); +} +//--------------------------------------------------------------------------- + + |