转换了半天都没成功,再次教高人!! ( 积分: 100 )

  • 主题发起人 主题发起人 szyc927
  • 开始时间 开始时间
S

szyc927

Unregistered / Unconfirmed
GUEST, unregistred user!
请教高人将下面的C代码转为delphi的!

CString str = m_OpenDlg.GetPathName()

DWORD dwEndTime = 0;
char *s1 = new char[MAX_PATH];
wcstombs(s1,str,MAX_PATH);
m_FilePlayer.OpenFile((signed char *)s1);
if (s1)
delete[] s1;

CString str = m_OpenDlg.GetPathName();//CString对应的delphi是什么类型
char *s1 = new char[MAX_PATH];//这一句在delphi中又应该怎样定义
wcstombs(s1,str,MAX_PATH);
m_FilePlayer.OpenFile((signed char *)s1)
//(signed char *)s1这个又是什么类型的参数,delphi又怎么对应。
 
就没有人能解决这个问题吗?
 
都不懂你那是什么控件与函数,怎转?
 
if OpenDialog1.Execute then
begin
strFile := OpenDialog1.FileName;
m_FilePlayer.OpenFile(strFile);
if FileExists(strFile) then
DeleteFile(strFile);
end;
 
CString str = m_OpenDlg.GetPathName();//CString对应的delphi是什么类型
char *s1 = new char[MAX_PATH];//这一句在delphi中又应该怎样定义
wcstombs(s1,str,MAX_PATH);
m_FilePlayer.OpenFile((signed char *)s1)
//(signed char *)s1这个又是什么类型的参数,delphi又怎么对应。
 
懂C++又懂DELPHI的人很少,我顶.
 
郁闷!郁闷 >_<
 
helloqiner的答案差不多,不过原题目中没有要求删除文件,只是释放了分配的空间而已。
因此正解是
var
strFile: string;
begin
if OpenDialog1.Execute then
begin
strFile := OpenDialog1.FileName;
m_FilePlayer.OpenFile(strFile);
end;
end;
就可以了,没什么为什么那么多。
 
1. C++与Delphi没有多大分别的;
2. 楼主的这段C++也非常简单:
CString str = m_OpenDlg.GetPathName()

// var str : string
str := a_OpenDlg.FileName
// 获得对话框打开的文件名(包括路径)
DWORD dwEndTime = 0

// var dwEndTime : DWORD
dwEndTime := 0
// 定义变常量
char *s1 = new char[MAX_PATH];
// var s1 : pchar
getmem(s1, MAX_PATH)
// 申请内存给字符串指针
wcstombs(s1,str,MAX_PATH)

// strcopy(s1, str)
// 将str的内容复制到字符串指针指向的内存中,后面要用
m_FilePlayer.OpenFile((signed char *)s1)

// 播放,这个要根据Delphi中的m_FilePlayer函数的定义来写, (signed char *) = Delphi的Pchar
// 例如: m_FilePlayer.OpenFile(s1);
if (s1)
delete[] s1;
// free(s1)
//这句话的意思是:如果s1的内存没有清除,这里要清除
 
感谢大家的支持,特别感谢 新世纪 !
 
后退
顶部