帮忙翻译成DELPHI代码,谢谢. 300分... ( 积分: 300 )

  • 主题发起人 主题发起人 jxgxy
  • 开始时间 开始时间
J

jxgxy

Unregistered / Unconfirmed
GUEST, unregistred user!
//最重要的数据结构 Is Here
//保证结构体占的内存大小为 7404字节 一个int型4字节 一个char型1字节
typedef struct STRUCT_TOOL_INFO {
int id;
char strName[32];
int att1;
int att2;
int att3;
int att4;
char str1[1088];
int att5;
int att6;
int att7;
int att8;
int att9;
char str2[4096];
char Temp[2148];
} TOOL_INFO;

//将文件内容读到内存中去(外部指定文件名)
BOOL CTblReadDlg::ReadFile(CString &strPathName)
{
BOOL RetVal = 0;
CFile FileManager;

TOOL_INFO * pCurInfo = NULL;
long iToolNum = 0;
CString strBuf = _T("");
CString strFileName = _T("");

long lToolNum = 0;

//简单判断是否有效文件名
if (strPathName.GetLength() < 4)
return RetVal;

//清空左边的列表框
m_ToolList.DeleteAllItems();

//判断文件名是否 NpcBase.tbl
strFileName = strPathName.Right(strPathName.GetLength() - strPathName.ReverseFind('//') - 1);
if (0 != strFileName.CompareNoCase("NpcBase.tbl")
&& IDYES != MessageBox("本程序只处理NpcBase.tbl, 确定打开所选文件?", "Tips", MB_YESNO|MB_ICONASTERISK))
return 0;

//在界面上显示文件名
GetDlgItem(IDC__FILENAME)->SetWindowText(strPathName);

//打开文件,准备读数据
RetVal = FileManager.Open(strPathName, CFile::modeRead|CFile::typeBinary);
if (!RetVal)
{
AfxMessageBox("打开文件失败!");
return RetVal;
}

//清空内存
SafeDelete();

//#####################################################################
//#####################################################################
//文件前4个字节表示个数
FileManager.Read(&m_lToolNum, 4);

//根据得到的个数分配内存 内存大小为 道具个数n*每个需要的内存
m_pToolInfo = new TOOL_INFO[m_lToolNum];
memset(m_pToolInfo, 0, m_lToolNum*sizeof(TOOL_INFO));

//将所有信息读入内存
FileManager.Read(m_pToolInfo, m_lToolNum*sizeof(TOOL_INFO));
//#####################################################################
//#####################################################################
 
type
STRUCT_TOOL_INFO =record
id : integer;
strName : array[0..31] of char;
att1 : integer;
att2 : integer;
att3 : integer;
att4 : integer;
strl : array[0..1087] of char;
att5 : integer;
att6 : integer;
att7 : integer;
att8 : integer;
att9 : integer;
str2 : array[0..4095] of char;
Temp : array[0..2147] of char;
end;
TOOL_INFO=STRUCT_TOOL_INFO;
//-------------------------------------实现--------------------------
function ReadFile(strPathName : string):Boolean;
var
FileManager:TFileStream;
m_pToolInfo :array of TOOL_INFO;
m_lToolNum : Integer;
i : integer;
begin
Result:=false;

//简单判断是否有效文件名
if Length(strPathName)<4 then
Exit;

//清空左边的列表框 这个根据控件的不同而不同
//如果为ListView,则为Clear方法
//判断文件名是否 NpcBase.tbl
if Pos('NpcBase.tbl',strPathName)=0 then
if MessageDlg('本程序只处理NpcBase.tbl, 确定打开所选文件?',mtConfirmation, [mbYes,mbNo],0)<>mrYes then
Exit;

//在界面上显示文件名--这个不用写了吧,方法多的是
//打开文件,准备读数据
try
FileManager:=TFileStream.Create(strPathName,fmOpenRead,fmShareDenyNone);
except
MessageDlg('系统找不到指定文件或读文件出错',mtError,[mbOK],0);
Exit;
end;

//清空内存--这个你自己写吧,与语言无关

//文件前4个字节表示个数
FileManager.Read(m_lToolNum, 4);

//根据得到的个数分配内存 内存大小为 道具个数n*每个需要的内存
SetLength(m_pToolInfo,m_lToolNum);

//下面这段可以不要的,在SetLength时已经初始化了
for i := 0 to m_lToolNum - 1 do
FillChar(m_pToolInfo,sizeof(TOOL_INFO),0);
或者用一句话:FillChar(m_pToolInfo[0],sizeof(TOOL_INFO)*m_lToolNum,0);

//将所有信息读入内存
for i := 0 to m_lToolNum - 1 do
FileManager.Read(m_pToolInfo, sizeof(TOOL_INFO));
end;
 
支持楼上的.............
 
to:xingkong97

可以加我QQ吗?还有些细节问题向您请教,分到时再加给您,TKS

我QQ:84461376.
 
我上班时不能用QQ,你可以给我发邮件。andy67@softwareintegrated.com
 
翻译啥
太菜
没搞懂
 
这么容易的翻译啊!分就是这么容易拿的?
eloveme@tom.com传的源文件给我``我也来拿分`
 
接受答案了.
 
后退
顶部