DELPHI怎样定义全局变量
1、方法一:
Delphi也有全局变量。一种办法是选择菜单的Project source项,这时代码窗口会出现Program等内容,在这部分定义的变量就是全局变量,但除了DLL项目以外,
Delphi程序员很少使用这种方式。更常见的办法是在单元(unit)中的interface部分定义变量供其它单元使用,这部分变量也是全局变量。其它单元使用时只要在uses部分加上要引用单元就可以。
2、方法二:
直接在IMPLEMETION下面定义 VAR
G_varial: INTEGER
不过需要引用它,必须要USE它所在的那个单元 3、方法三: 设置成全局变量 unit Unit1; interface uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject); private
{ Private declarations } public
{ Public declarations } end; var
Form1: TForm1; //在这里设 4、方法四:
unit1中引用unit2的edit1中的文本 unit1中加入 uses unit2 在代码中就可以
procedure TForm1.Button1Click(Sender: TObject); begin
showmessage(Form2.edit1.text); end;
用Delphi7.0开发DirectX游戏
这不是一篇关于DirectX的祥细教程,而是讲解如何用DELPHI开发DirectX游戏.因为不管是网上或是书店,关于DirectX的书基本上是用C++或VC描述的.用DELPHI开发游戏的资料是少之又少,这篇文章的目的就是让读者能够学会如何利用已有的资料
学习来开发游戏. 这篇文章面向的是对DirectX有一定了解,却不知道如何在DELPHI下开发DirectX游戏的读
者.DELPHI能不能开发游戏?回答是当然,网上很多游戏论坛有不少人都认为开发游戏只能用C++或VC. DELPHI只适合来做做桌面应用,劝有这些观点的人先反汇编看看DELPHI和VC编释出来的代码,或是看看"奇迹时代"这个游戏,"奇迹时代"就是用DELPHI开发的,速度和画面优于帝国时代.DELPHI是完全面向对象,并能内嵌汇编,支持MMX指今(DELPHI中MMX寄存器为mm0-mm7).完全适合游戏开发的需要.其实不论VC,DELPHI都只是工具,只要内功好都能做出来好的
程序或是游戏.
调试经验:开发全屏游戏时最好把
设计时的屏幕分辩率设为和游戏一样的分辩率,以免调试时频繁切换分辩率而损伤屏幕.开发全屏游戏最好是在WIN2000/XP下,不然在98下调试时游戏进入死循环或产生异常时.机子很容易就会当掉.在2000/XP下全屏游戏进入死循环时可以按ALT+TAB切换到DELPHI中(但这时由于DirectX游戏是全屏,独占了屏幕,屏幕上不会有变化,所以要多试几次),按CTRL+F2就可以结束游戏.如果是异常的话,切换到DELPHI中先按下回车再按CTRL+F2就可以结束调试游戏了.
注意:
如果你是使用DELPHI7的话,请把DirectDraw.pas中的145行{$IFDEF VER140}改为{$IFDEF VER150}才能正常编释.
最好使用API的方式来建立游戏主窗口而不是使用VCL的TFORM类. 先让我们来看看用C++和DELPHI初始化DirectDraw对像的代码段. c++版:
BOOL InitDDraw( ) {
LPDIRECTDRAW7 lpDD; // DirectDraw对象的指针
if ( DirectDrawCreateEx (NULL, (void **)&;lpDD, IID_IDirectDraw7, NULL) != DD_OK )
return FALSE; {创建DirectDraw对象}
{里使用了 if ( xxx != DD_OK) 的方法进行错误检测,这是最
常用的方法}
if (lpDD->SetCooperativeLevel(hwnd,DDSCL_EXCLUSIVE|DDSCL_FULLSCREEN) != DD_OK )
return FALSE; {设置DirectDraw控制级} if ( lpDD->SetDisplayMode( 640, 480, 32, 0, DDSDM_STANDARDVGAMODE ) != DD_OK ) return FALSE; {置显示模式} }
DELPHI版:
function TForm1.InitDirectDraw: Boolean; var
lpDD: IDirectDraw7; begin
Result := False; {先假设初始化失败} {建立DirectDraw对象}
if DirectDrawCreateEx(nil, lpDD, IID_IDIRECTDRAW7, nil) <> DD_OK then exit;
{设定DirectDraw的控制级