mirror of
https://github.com/mangosfour/server.git
synced 2025-12-13 04:37:00 +00:00
Imported MaNGOS revision 6767 from http://mangos.svn.sourceforge.net/svnroot/mangos/trunk/
This commit is contained in:
parent
d767495d5b
commit
800ee76535
3322 changed files with 903437 additions and 0 deletions
769
contrib/dbcEditer/dbcedit.cpp
Normal file
769
contrib/dbcEditer/dbcedit.cpp
Normal file
|
|
@ -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);
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue