看了一些控件的源码?发现好多语法问题困扰,无奈。
type TQSData = packed record
P0,P1,P2: TPoint;
Px2,DPx2,Qx: TPoint;
Result: Integer;
Step,Limit: Word;
Mode,Last: Byte;
case Integer of
//问题1:这里的Integer是Integer类型吗?可否用一个Integer类型的变量a来代替呢?
0: (Source,Prev: TPoint);
1: (Rect: TRect);
end;
TPointArray = array[0..$FFFFFF] of TPoint;
//问题2:以上的含义是定义array[0..$FFFFFF] of TPoint类型的数据吗?如果是定义为什么不用
var
TPointArray:array[0..$FFFFFF] of TPoint呢?这两种写法有什么差异?
另外数组定义中$FFFFFF这种表示法与普通如200的表示法有什么差异? PPointArray = ^TPointArray;
//问题3:以上的含义是定义TPointArray类型的指针吧?与Var PPointArray:^TPointArray的差别是
什么呢?
PPoint = ^TPoint;
TPointFunc = function(LType:TLineType;P:PPointArray;I,Count:Integer;var Data: TQSData): Boolean;
//问题4:以上函数的前面是什么意思?为什么要加TPointFunc?加了之后对函数原定义有什么影响?TPointFunc具体的含义是什么呢?
procedure ExtendRect(var R: TRect; const P: TPoint);
//问题5:以上定义的过程,R表示传递应用?P表示传递值,那为什么加const,与不加const有什么差别?
--谢谢 !,另外如果各位能留下MSN在线交流就更方便了:)我的MSN:[email protected]
type TQSData = packed record
P0,P1,P2: TPoint;
Px2,DPx2,Qx: TPoint;
Result: Integer;
Step,Limit: Word;
Mode,Last: Byte;
case Integer of
//问题1:这里的Integer是Integer类型吗?可否用一个Integer类型的变量a来代替呢?
0: (Source,Prev: TPoint);
1: (Rect: TRect);
end;
TPointArray = array[0..$FFFFFF] of TPoint;
//问题2:以上的含义是定义array[0..$FFFFFF] of TPoint类型的数据吗?如果是定义为什么不用
var
TPointArray:array[0..$FFFFFF] of TPoint呢?这两种写法有什么差异?
另外数组定义中$FFFFFF这种表示法与普通如200的表示法有什么差异? PPointArray = ^TPointArray;
//问题3:以上的含义是定义TPointArray类型的指针吧?与Var PPointArray:^TPointArray的差别是
什么呢?
PPoint = ^TPoint;
TPointFunc = function(LType:TLineType;P:PPointArray;I,Count:Integer;var Data: TQSData): Boolean;
//问题4:以上函数的前面是什么意思?为什么要加TPointFunc?加了之后对函数原定义有什么影响?TPointFunc具体的含义是什么呢?
procedure ExtendRect(var R: TRect; const P: TPoint);
//问题5:以上定义的过程,R表示传递应用?P表示传递值,那为什么加const,与不加const有什么差别?
--谢谢 !,另外如果各位能留下MSN在线交流就更方便了:)我的MSN:[email protected]
解决方案 »
- delphi2007做indy编程,代码提示功能不好用
- 请问 WebBrowser 如何 忽略 _blank 直接在本WebBrowser中浏览?
- 请问怎么去掉窗体左上角的小图标,但要保留最小化按钮,关闭按钮等
- cxGrid使用问题
- 关于MP9连续播放的问题!
- 为什么这个 控件在win2000下面使用不了?
- 谁知道怎样改变IP地址的DNS和网关?
- 为何会报错?
- listview refresh的时候是否会按内容的改变而重新排序?
- ListView.Items选中后整行变蓝成功了,可复选框不见了。karma(无为)再帮我一次?!
- 请教Delphi中的语法问题---不见得好回答,谢谢各位帮忙!!!
- 第一次在这里散分 过会揭贴
//问题2:以上的含义是定义array[0..$FFFFFF] of TPoint类型的数据吗?如果是定义为什么不用
var
TPointArray:array[0..$FFFFFF] of TPoint呢?这两种写法有什么差异?
另外数组定义中$FFFFFF这种表示法与普通如200的表示法有什么差异?
///////////////////////////////////////////
TPointArray = array[0..$FFFFFF] of TPoint;是定义一种数据类型,而
var
TPointArray: array[0..$FFFFFF] of TPoint;
刚是定义变量.
应该说var pa: array[0..$FFFFFF] of TPoint;和var pa: TPonintArray;是等同的PPointArray = ^TPointArray;
//问题3:以上的含义是定义TPointArray类型的指针吧?与Var PPointArray:^TPointArray的差别是什么呢?
////////////////////////////////////
和问题2是一样的 TPointFunc = function(LType:TLineType;P:PPointArray;I,Count:Integer;var Data: TQSData): Boolean;
//问题4:以上函数的前面是什么意思?为什么要加TPointFunc?加了之后对函数原定义有什么影响?TPointFunc具体的含义是什么呢?
///////////////////////////////////////
这是定义函数指针procedure ExtendRect(var R: TRect; const P: TPoint);
//问题5:以上定义的过程,R表示传递应用?P表示传递值,那为什么加const,与不加const有什么差别?
///////////////////////////////////////
变量前加const当然表示它是不可修改的
TPointFunc = function(LType:TLineType;P:PPointArray;I,Count:Integer;var Data: TQSData): Boolean;
//问题4:以上函数的前面是什么意思?为什么要加TPointFunc?加了之后对函数原定义有什么影响?TPointFunc具体的含义是什么呢?
///////////////////////////////////////
这是定义函数指针
type SJBID = packed record
dwSize: DWORD;
bSN: array[0..11]of Byte;
wDrive: WORD;
wPID: WORD;
wVID: WORD;
dwMajor: DWORD;
dwMinor: DWORD;
end;
JBID = SJBID;
LPJBID = ^JBID; pDWORD = ^DWORD;type JoyBeeExist = function(Number: pDWORD): LPJBID; cdecl;......
......
procedure TF_main.Button1Click(Sender: TObject);
var
hInst: THandle;
MyJoyBeeExist: JoyBeeExist;
dwNum: DWORD;
retCode: LongInt;
lpJBIDArray: LPJBID;
OSVersion: OSVERSIONINFO;
Space: Double;
temp: Word;
begin
if USBDrive>1 then
begin
Application.MessageBox(PChar(Str12+#13+Str13), 'Joybee 720 Software Upgrade',
MB_ICONINFORMATION+MB_YESNO);
button1.Enabled := False;
Exit;
end;
OSVersion.dwOSVersionInfoSize := Sizeof(OSVERSIONINFO);
GetVersionEx(OSVersion);
dwNum := 0;
if OSVersion.dwMajorVersion >= 5 then
hInst := LoadLibrary('PJoybee720.dll')
else
hInst := LoadLibrary('RJoybee720.dll');
if hInst = 0 then
begin
ShowMessage('Don''t find the Joybee720.dll.');
Exit;
end;
MyJoyBeeExist := GetProcAddress(hInst, 'JoyBeeExist');
lpJBIDArray := MyJoyBeeExist(@dwNum);
if lpJBIDArray <> nil then
begin
if dwNum=0 then
begin
ShowMessage('Don''t find Joybee 720 connected to the system.');
Exit;
end
else
begin
temp := lpJBIDArray.wDrive;
Space := GetDiskSpace(Chr(temp+65)+':');
if (Space>4.5) and (Space<5.0) then
dwDrive := temp
else
dwDrive := Pebble;
if Application.MessageBox(PChar(Str1+#13+Str2), 'Joybee 720 Software Upgrade',
MB_ICONQUESTION+MB_YESNO)=IDYES then
begin
if dwDrive <> 0 then
begin
if Application.MessageBox(PChar(Str3+#13+Str4),
'Joybee 720 Software Upgrade', MB_ICONQUESTION+MB_YESNO)
=IDYES then
begin
//Label1.Caption := 'Formating Joybee 720 system...';
retCode := SHFormatDrive(Application.Handle, dwDrive, $FFFF, 1);
if retCode=0 then
if Application.MessageBox(PChar(Str5+#13+Str6), 'Joybee 720 Software Upgrade',
MB_ICONQUESTION+MB_YESNO)=IDYES then
begin
CopyFiles;
end;
end
else
begin
if Application.MessageBox(PChar(Str6),'Joybee 720 Software Upgrade', MB_ICONQUESTION+MB_YESNO)=IDYES then
begin
CopyFiles;
end;
end;
end;
end;
end;
end
else
begin
Label1.Caption := Str7;
end; FreeLibrary(hInst);
end;