【面试题目】成败在此一举 Delphi转换c# 求高手

jjcl521 2010-05-29 04:22:02
先大概说说我的面试情况,本来是骑驴找马,本周一公司给我打电话让去面试没太在意,第二天又打电话来问。大概了解一下情况还不错,就去面试了,那人是个搞技术的,开始去很是热情,见面到面试完毕主动和我握手 三次 真不容易啊有点小感动,他大概问一些技术方面的,聊了一些项目经验,没有笔试这点还挺不错的。最后问我socket会不,这个我还真不会就如实说了,我感觉有点完了可能他们主要做这方面的吧。走的时候说是在周末之前给我回话。。。。接着就是等待,星期四上午打来电话说是让我做一个socket server client 这样的东东,星期五能做完就去公司,完不了下周了。然后我就疯狂的baidu,google终于在周五上午完成了,就又去面试了,拿去做的东西就一个简单的server,client好像不符合他的要求,又感到要被pass了。。。还好他说要找个人,把现有的系统(用Delphi写的)改成c#,这个项目完了后面还能做开发的,就给我一个dll,明天要去公司要实现一个小功能,成败在此一举!!!


现在有一个dll(应该硬件厂商,我要做的是针对硬件的开发。。。),应该是Delphi写的,他已经用Delphi实现了,让我明天去公司用c#实现一个小的功能,求高手成败在此一举!!!



//这个是调用 ****.dll 为了保密我就用*代替那个dll了,谁要可以传给你
function NET_DVR_Login_V30(sDVRIP: PChar;
wDVRPort: Word;
sUserName: PChar;
sPassword: PChar;
lpDeviceInfo: LPNET_DVR_DEVICEINFO_V30): Longint ;stdcall;external '****.dll'


type
NET_DVR_DEVICEINFO_V30 = record
sSerialNumber: Array[0..SERIALNO_LEN-1] of BYTE;
byAlarmInPortNum: BYTE;
byAlarmOutPortNum: BYTE;
byDiskNum: BYTE;
byDVRType: BYTE;
byChanNum: BYTE;
byStartChan: BYTE;
byAudioChanNum: BYTE;
byIPChanNum: BYTE;
byRes1: Array[0..24-1] of BYTE;
end {NET_DVR_DEVICEINFO_V30};


ds: NET_DVR_DEVICEINFO_V30;

var bRet: LongBool;

//这个就是实现的小功能
bRet := NET_DVR_Init();
lUserID := NET_DVR_Login_V30('192.168.1.160', 8000, 'admin', '12345', @ds);
NET_DVR_SetAlarmOut(lUserID,0,1);






//以上代码怎么才能转换成c#的呢?,还有一个Delphi 的dll



...全文
156 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
周药师 2010-05-29
  • 打赏
  • 举报
回复


public struct NET_DVR_DEVICEINFO_V30
{
byte byAlarmInPortNum;
byte byAlarmOutPortNum;
byte byDiskNum;
byte byDVRType;
byte byChanNum;
byte byStartChan;
byte byAudioChanNum;
byte byIPChanNum;

[MarshalAs(UnmanagedType.ByValArray, SizeConst = 23)]
public byte[] byRes1 ;

[MarshalAs(UnmanagedType.ByValArray, SizeConst = SERIALNO_LEN - 1)]
public byte[] sSerialNumber ;
}

wangan2008 2010-05-29
  • 打赏
  • 举报
回复
贵在学习!!
兔子-顾问 2010-05-29
  • 打赏
  • 举报
回复
到delphi版块区看。伴水和那个谁来着,都是delphi和.net的高手。
jjcl521 2010-05-29
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 zhouzhangkui 的回复:]
也不是你说的那样,反正都去过两次了,明天就再跑一趟了
也不完全是语法问题,我要引用一个Delphi的dll

用c#实现一个小的功能
[/Quote]



//当我引用******.dll的时候应该得这样写?然后就直接调用 Test.NET_DVR_Login_V30 这个方法?
public class Test
{
[DllImport("******.dll")]
public static extern void NET_DVR_Login_V30(string sDVRIP, ushort wDVRPort, string sUserName, string sPassword, NET_DVR_DEVICEINFO_V30 lpDeviceInfo);

}
public struct NET_DVR_DEVICEINFO_V30
{
byte byAlarmInPortNum;
byte byAlarmOutPortNum;
byte byDiskNum;
byte byDVRType;
byte byChanNum;
byte byStartChan;
byte byAudioChanNum;
byte byIPChanNum;

//结构中不能有实例字段初始值设定项
byte[] byRes1 = new byte[23];
byte[] sSerialNumber = new byte[SERIALNO_LEN - 1];

}

周药师 2010-05-29
  • 打赏
  • 举报
回复

public int NET_DVR_Login_V30(string sDVRIP, ushort wDVRPort, string sUserName, string sPassword, LPNET_DVR_DEVICEINFO_V30 lpDeviceInfo)
{
return 1;
}

public struct NET_DVR_DEVICEINFO_V30
{
byte[] sSerialNumber = new byte[SERIALNO_LEN - 1];
byte byAlarmInPortNum;
byte byAlarmOutPortNum;
byte byDiskNum;
byte byDVRType;
byte byChanNum;
byte byStartChan;
byte byAudioChanNum;
byte byIPChanNum;
byte[] byRes1 = new byte[23];
}
qq234121906 2010-05-29
  • 打赏
  • 举报
回复
额,有高手。
周药师 2010-05-29
  • 打赏
  • 举报
回复
这个叫什么面试题?
这分明是公司的人搞不定,请所谓的枪手来帮他们解决问题
即使你搞定了 也不一定会要你的

上面的代码就是语法问题 没有什么特殊的东西 看看语法就知道如何翻译了
qq234121906 2010-05-29
  • 打赏
  • 举报
回复
做个记号,我去写一下。
liaoyukun111 2010-05-29
  • 打赏
  • 举报
回复
现顶下吧
jjcl521 2010-05-29
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 ly302 的回复:]
Delphi不是很熟,帮你顶一下
[/Quote]

谢谢
皇城龙三 2010-05-29
  • 打赏
  • 举报
回复
Delphi不是很熟,帮你顶一下

1,979

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 其他语言讨论
社区管理员
  • 其他语言社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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