请看看这个问题 (20分)

  • 主题发起人 主题发起人 awfigsk
  • 开始时间 开始时间
A

awfigsk

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TForm1.formcreate(sender:TObject);
var
drive:char;
addedindex:integer;
begin
for drive:='a' to 'z' do
begin
case Getdirvetype(pchar(drive+':/')) of //[green]在这条语句中pchar()这种表示是进行强制性转换吗?[/green]
drive_removable:
addedindex:=drivetabset.tabs.addobject(drive,floppy.picture.graphic);
....
procedure TForm1.driveTabSetDrawTab(....)
var
bitmap:TBitmap;
begin
bitmap:=[blue]TBitmap(DriveTabset.tabs.objects[index]);[/blue]
with TabCanvas do
begin
Draw(r.left,r.top+4,bitmap);
[red]TextOut(r.left+2+bitmap.width,r.top+2,drivetabset.tabs[index]);[/red]
end;
end;
在上面的程序段中,请问
1、蓝色标记中DriveTabset.tabs.objects[index]这是个什么值?
2、红色标记中drivetabset.tabs[index]这又是个什么值?
 
0. 是的,强制类型转换
1. DriveTabset.Tabs 是一个 TStrings 类型,一个列表,其中每一项包含两个东西,
一是一个字符串,二是一个对象。因此 DriveTabset.tabs.objects[index] 就是
其中的第 index 个对象(此处可以看出前面某处将该对象赋值为一个位图)
2. drivetabset.tabs[index] 根据刚才讲的,就是其第 index 个字符串。

 
同意1帖看法,补充一些
0,Getdirvetype是WinApi函数,其参数要求是PChar,所以必须将Pascal字符串常量强制
转换成PChar类型;
1,DriveTabset.Tabs 是一个字符串列表类,它主要以列表形式存储若干字符串,但是,
每个字符串可以关联一个TObject类型的对象,省略号上面那一行已经表明,其关联了一个
floppy.picture.graphic;
2,drivetabset.tabs[index] 返回一个字符串,应该是drive。
 
十分感谢各位的回答![:)]
 
后退
顶部