这个vc6的数据结构,怎么翻译成delphi的啊,谢谢!(50)

X

xgwzw

Unregistered / Unconfirmed
GUEST, unregistred user!
int nOsdX=10;int nOsdY=40; USHORT Format9[] = {nOsdX, nOsdY, '北', '京', '奥', '运', '/0'};
 
X

xgwzw

Unregistered / Unconfirmed
GUEST, unregistred user!
Format9 里面的汉字怎么填入啊
 
X

xgwzw

Unregistered / Unconfirmed
GUEST, unregistred user!
没有搞错代码,就是这样的要转成delphi的
 

冰力不足

Unregistered / Unconfirmed
GUEST, unregistred user!
有符号整数类型数组里面居然包括字符 应该是抄错代码吧?type Txxx = packed record nOsdX: integer = 10
nOsdY: integer = 10
Format9: array[0..7] of SmallInt = (???);end;
 

冰力不足

Unregistered / Unconfirmed
GUEST, unregistred user!
vc6 里面字符也应该是双引号的啊 怎么是单引号
 
X

xgwzw

Unregistered / Unconfirmed
GUEST, unregistred user!
字符是单引号,vc6这是个demo ,我要改成delphi的
 
X

xgwzw

Unregistered / Unconfirmed
GUEST, unregistred user!
vc6的是个可以编译的demo
 
L

louemusic

Unregistered / Unconfirmed
GUEST, unregistred user!
VC里的那是个_TCHAR字符数组,DELPHI中可以用WIDCHAR.要初始化这个变量方法挺多的,本质只要把值填入相应内存var pw:pWideChar=#0010#0040'北京奥运';//#0000;被编译器自动添加
 
S

Supermay

Unregistered / Unconfirmed
GUEST, unregistred user!
type Txxx = packed record nOsdX: integer = 10
nOsdY: integer = 10
Format9: array[0..7] of SmallInt = (???);//这里不应是8个一个中文是两个的end;在C++的,字符与数字两种类型是可互换的Txxx = packed record nOsdX: integer
nOsdY: integer ;Format9: array[0..7] of SmallInt ;constructor Create(str:String);end;Txxx.Create(str:String);begin nOsdX:=10
nOsdY:=10;Format9[0]:=nOsdX;Format9[1]:=nOsdY;StrPCopy(@Format9[2],Str);end;
 
I

iamy

Unregistered / Unconfirmed
GUEST, unregistred user!
const nOsdX=10
nOsdY=40;var Format9 array of SmallInt = [nOsdX, nOsdY, '北', '京', '奥', '运', #0];
 
X

xgwzw

Unregistered / Unconfirmed
GUEST, unregistred user!
to iamy编译不能通过 integer string 不兼容 还有其他错误你在delhi里面试过了吗?
 
L

louemusic

Unregistered / Unconfirmed
GUEST, unregistred user!
对于语言特性,没有必要追求完全一至.只要二进制代码是兼容的,语言语法是可以很灵活的.你看的VC的这个结构应该是个视频 窗口的 覆盖字样所用到的结构吧,OSDX,OSDY为要输出的文字坐标在DELPHI中,单个汉字是算作一个字符串的,因此使用单 个 '北','京'和使用一个'北京'是一个用法.OBJECTPASCALL 首先是不支持局部变量的初始化的.所以如果想像C/C++一样在变量声明的时候进行是不现实,除非你要求厂家修改语言语法.其次因为汉字是一个字符串,而字符串能初始化的变量则不能为数组.因此,想像C/C++一样定义一个数组来进行初始化的操作必然导致语法错误.除非看看D2007后的语法扩展是否支持.
 

枝上柳绵

Unregistered / Unconfirmed
GUEST, unregistred user!
function WideCharToWord(c:WideChar):word;begin Result:=pword(@c)^;end;//没法初始化const nOsdX=10
nOsdY=40;var nc:WideString;// D7 下面不能用 string ,否则 只能得到一个byte值,而得不到word值 nw:Word
Format9: array[0..1] of word;begin nc:= '北'
nw:= WideCharToWord(nc[1])
Format9[0]:= nw ;//只能赋值了....end;
 
X

xgwzw

Unregistered / Unconfirmed
GUEST, unregistred user!
to louemusic不管是什么方式,只要delphi 能用就可以了,我也没有拘泥语法形式,这个是视频的显示的代码,你是否有类似的经验啊
 
L

louemusic

Unregistered / Unconfirmed
GUEST, unregistred user!
按照你以上使用的情况,OSDX,OSDY为 字幕覆盖坐标.如果要讲好用,那就把OSDX,OSDY单独弄出来,这样好定义坐标.至于汉字的赋值那就是简单的内存拷贝了procedure TForm1.FormCreate(Sender: TObject);type TOSD=packed record x,y:SmallInt
Text:array[0..4]of WideChar
end;var osd:TOSD
pw:pwidechar;begin osd.x:=$30;// x codination osd.y:=$31;// y codination pw:='北京奥运'
Move(PW^,osd.Text,sizeof(osd.Text))
//your video osd function call,maybe formed as follow //SetVideoOsd(...,@osd);//传入OSD地址即可 //OSD在内存中的表现形式与VC那段初始化是一至的,如果要显示的汉字很多, //那就把TEXT数组定义大一点,比如0..100end;
 
W

wql

Unregistered / Unconfirmed
GUEST, unregistred user!
const nOsdX=10
nOsdY=40;var Format9 array of SmallInt = [nOsdX, nOsdY, word('北'), word('京'), word('奥'),word( '运'), 0];
 
X

xgwzw

Unregistered / Unconfirmed
GUEST, unregistred user!
to wql编译不通过
 

Similar threads

S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
854
DelphiTeacher的专栏
D
顶部