帮忙转换两段Delphi代码(转换成C#的),重谢

zhanglizhao 2008-10-20 03:49:26
没接触过Delphi,希望学过的兄弟帮个忙,万分感谢!!


const
titlestr:array[0..15] of byte=
($00,$01,$00,$00,$53,$74,$61,$6E,$64,$61,$72,$64,$20,$4A,$65,$74) ;//对应MDB文件的前16个字节
titlestr2:array[0..15] of byte=
($48,$4A,$00,$58,$55,$43,$48,$41,$4E,$47,$59,$4F,$55,$00,$20,$20) ;//更改后的MDB文件的前16个字节,自己随便写吧,比如写上自己公司的简称或自已的名
produce EncrypMDB(filename:string); //用titlestr2内容替换MDB前16个字节,以便实现加密的作用
var F:TFileStream;
begin
if not fileExists(filename) then exit;
F:=TFileStream.create(filename,fmopenwrite);
try
F.seek($00,soFromBeginning);
F.Write(titlestr2,16);
finally
F.free;
end;
end;
produce uncrypMDB(filename:string); //还原MDB前16个字节
var F:TFileStream;
begin
if not fileExists(filename) then exit;
F:=TFileStream.create(filename,fmopenwrite);
try
F.seek($00,soFromBeginning);
F.Write(titlestr,16);
finally
F.free;
end;
end;

uncrypMDB(App_path+'data\temp.db');
copyfile(pchar(App_path+'data\temp.db'),pchar(APP_path+'\data\account.db'),false);
adoconn.connectionstring:='provider=Microsoft.Jet.OLEDB.4.0;Data Source='+App_path+'data\account.db;Persist Security Info=false'; //adocon是个TADOConnection组件
try
adoconn.connected:=true;
except
MessageBox(handle,'打开数据库出现致命的错误!!!','错误',MB_OK+MB_ICONERROR);
end;
//打开后马上对其加密
copyfile(pchar(APP_path+'\data\account.db'),pchar(app_path+'data\temp.db'),false); //app_path表示程序的当前目录,account.db是个更改了扩展名的MDB文件
EncrypMDB(App_path+'data\temp.db');
copyfile(pchar(App_path+'data\temp.db'),pchar(APP_path+'\data\account.db'),false);
deletefile(App_path+'data\temp.db');

reg:=TRegistry.Create;
try
reg.RootKey:=HKEY_CLASSES_ROOT;
reg.OpenKey('.ldb');
reg.WriteString(','tempfile');
finally
reg.closekey;
reg.free;
end;
...全文
84 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhanglizhao 2008-10-21
  • 打赏
  • 举报
回复
经过近一个小时的尝试,自己已经翻译过来了,呵呵,不过还是非常感谢楼上的兄弟!
wheeler 2008-10-21
  • 打赏
  • 举报
回复

class xxxx
{
byte[] titlestr = new byte[] { 0x00, 0x01, 0x00, 0x00, 0x53, 0x74, 0x61, 0x6E, 0x64, 0x61, 0x72, 0x64, 0x20, 0x4A, 0x65, 0x74 };
byte[] titlestr2 = new byte[] { 0x48, 0x4A, 0x00, 0x58, 0x55, 0x43, 0x48, 0x41, 0x4E, 0x47, 0x59, 0x4F, 0x55, 0x00, 0x20, 0x20 };

public void EncrypMDB (string filename)
{
System.IO.FileStream F;
if (File.Exists(filename) == false)
{
return;
}
F = File.Open(filename, FileMode.OpenOrCreate, FileAccess.Write);
try
{
F.Seek(0x00, soFromBeginning);
F.Write(titlestr2, 0, 16);
}
catch
{
}
finally
{
F.Close();
}
}

public void uncrypMDB (string filename)
{
System.IO.FileStream F;
if (File.Exists(filename) == false)
{
return;
}
try
{
F.Seek(0x00, soFromBeginning);
F.Write(titlestr, 0, 16);
}
catch
{
}
finally
{
F.Close();
}
}

public void XXXXXXX()
{
uncrypMDB(App_path + "data\\temp.db");
File.Copy(App_path+"data\\temp.db", APP_path+"\\data\\account.db", false);
System.Data.OleDb.OleDbConnection adoconn = new System.Data.OleDb.OleDbConnection();
adoconn.ConnectionString = "provider=Microsoft.Jet.OLEDB.4.0;Data Source="+App_path+"data\\account.db;Persist Security Info=false";
try
{
adoconn.Open();
}
catch
{
System.Windows.Forms.MessageBox.Show("打开数据库出现致命的错误!!!", "错误", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);
}
File.Copy(App_path + "data\\account.db", APP_path + "\\data\\temp.db", false);
EncrypMDB(App_path + "data\\temp.db");
File.Copy(App_path + "data\\temp.db", APP_path + "\\data\\account.db", false);
File.Delete(App_path + "data\\temp.db");

Microsoft.Win32.RegistryKey reg
try
{
reg = Microsoft.Win32.Registry.ClassesRoot;
reg.OpenSubKey(".ldb");
reg.SetValue(""/*这里,你的源程序就不对,没法翻译*/, "tempfile");
}
catch
{
}
finally
{
reg.Close();
}
}
}


你试试

App_path没有定义
soFromBeginning没有定义
NIJIA72 2008-10-21
  • 打赏
  • 举报
回复
帮你顶一下
Red_angelX 2008-10-20
  • 打赏
  • 举报
回复
http://www.cnblogs.com/Red_angelX/archive/2007/06/20/790211.html
写文件可以用这个类来生成Buffer
Red_angelX 2008-10-20
  • 打赏
  • 举报
回复
主要就是写文件,注意.net里写文件的高低位和Delphi是反的,处理下就好
accp206 2008-10-20
  • 打赏
  • 举报
回复
虽没接触过Delphi,大概意思倒都能看懂。
涉及到文件、数据库、注册表的操作,都不是太难,就是代码有点多……
可惜现在没太多时间。如果这一两天都没网友回,我倒想试一试,呵呵。

暂时先帮顶啦!祝楼主早日收到满意的答案。呵呵。

110,556

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧