▼▲Delphi面向对象编程的20条规则

Delphi——面向对象(方法分类及相关案例) **1-**delphi方法的分类 根据前面的保留字的不同,为前向分类 根据后面指示字的不同,为后向分类 方法的内部可以使用变量的限定符,Self,可以通过这个变量调用方法对象实例、类的引用。 2-构造方法、一般方法、析构方法、类方法(如图自上而下)——根据开头保留字的不同分类 构造方法——创建的时候调用,通俗讲,就是创建对象实例的时候调用的一种特殊的方法。 析构方法——销毁的时候调用 注: 1)-由于TObiect是所有类的基类,自定义的析构方法为virtual虚方法; 如果自定义类的话,想要继承自T 阅读详情

▼▲Delphi面向对象编程的20条规则(转载)

楼主ZyxIp(绝望中...) 2003-09-02 14:28:07 在 Delphi / VCL组件开发及应用 提问

作者简介    
  Marco   Cantu是一个知名的Delphi专家,他曾出版过《精通Delphi》系列丛书,《Delphi开发手册》以及电子书《精通Pascal》(该电子书可在网上免费获得)。他讲授的课题是Delphi基础和高级开发技巧。你可以通过他的网站(www.marcocantu.com)获得更多关于他的信息,你也可以他的公共新闻组和他联系,详情请参见他的网站。    
   
  前言    
  大多数Delphi程序员都像使用Visual   Basic   那样使用他们手头上开发工具,而丝毫没有意识到Delphi的强大功能,更谈不上使用这些功能了。(写到这里,编辑惶恐的举起了手,怎么可能呢?)Delphi和Visual   Basic不同,Delphi完全建立在面向对象结构上,这不仅影响到VCL的结构,而且影响到使用Delphi开发的每一个程序。    
  在本文中,我不想涉及到面向对象编程(OOP)的所有理论,只是提出一些简单的经验规则。希望这些规则能够帮助改善你的程序结构。无论你开发的是何种类型的程序,这些经验规则都是适用的。你应当把他们当作一些建议,记住他们并把他们应用到你开发的程序中去。    
  关于面向对象编程,我想强调的一个关键原理是封装。我们都希望创建一些灵活而且强健的类,因为这样的类允许我们以后修改他们的实现方法而不影响到程序中的其他部分,这正是封装给我们带来的好处。虽然封装不是创建一个好的面向对象程序的唯一标准,但是它构成了面相对象编程的基础,所以在本文中我也许会过多的强调封装性,请不要感到奇怪,我有足够充分的理由这么做。    
  最后,我想说明这样一个事实:本文将主要集中说明窗体(Forms)的开发(虽然其中的一些规则对于组件的开发同样适用),因此这些规则对于所有的Delphi程序员都是适用的。那些编写组件的程序员必须把面相对象编程和类(Class)作为核心的元素,但是对于那些使用组件编程的程序员,他们时常会忘记面向对象。对于他们,本文可以当作一个提示,提醒他们始终记住面向对象编程    
   
  第一部分:窗体是类(A   Form   is   A   Class)(rule   1-rule   15)    
  程序员常常将窗体看作是对象,而事实上窗体是类。两者的差别在于你创建基于相同的窗体类的多个窗体对象。令人感到疑惑的是Delphi为你定义的每一个窗体类创建了一个默认的全局对象。这对于新手来说是相当方便的,但是这同样会使他们形成坏习惯。    
   
  第二部分:继承(Inheritance)(rule   15-rule   20)    
  在讲述了一系列关于类特别是关于窗体类的规则后,第二部分将是一些关于类的继承性以及可视化窗体继承的建议和技巧。    
   
  关于代码    
  本文中所有的代码段都可以在本期杂志(《The   Delphi   Magazine》   Issue   47)附带的磁盘中的OopDemo工程中找到。你特别应该查看例程中的frm2   单元(unit)和inher单元。如果你想使用这些代码,请注意构造器必要的初始化设置以及私有组件参照,同时有必要设置好窗体的OldCreateOrder属性。否则,带有组件的窗体构造器的初始化代码将在窗体的OnCreate事件之前得到执行。    
  在这张磁盘上你还可以找到OOP   窗体向导的第一版的编译包,不过我更希望你访问我的网站获得该程序的更完整的版本。    
  规则一:为每一个类创建一个单元(One   Class,One   Unit)    
  请始终牢记这一点:类的私有(private)和保护(protected)的部分只对于其他单元中的类和过程(procedure)才是隐藏的.因此,如果你想得到有效的封装性,你应该为每一个类使用一个不同的单元。对于一些简单的类,比如那些继承其他类的类,你可以使用一个共享的单元。不过共享同一个单元的类的数目是受到限制的:不要在一个简单的单元里放置超过20个复杂的类,虽然Borland公司的VCL代码曾经这样做过。    
  如果你使用窗体的时候,Delphi会默认的遵循“一个类使用一个单元”的规则,这对于程序员来说也是十分方便的。当你向你的项目中添加一个没有窗体的类时,Delphi也会创建一个新的独立的单元。    
   
  规则二:为组件命名(Name   Components)    
  为每一个窗体和单元给出一个有意义的名字是十分重要的。窗体和单元的名字必须是不同的,不过我趋向于为他们两者使用相似的名字,如对于关于窗体和单元可以为他们使用AboutForm   和About.pas.    
  为组件使用带有描述性的名字同样十分重要。最常见的命名方式是使用类的小写字母开头,再加上组件的功能,如BtnAdd   或者editName。采用这样的命名方式为组件命名可能会有很多相似的名字,而且也没有一个最好的名字,到底应该选择那一个应该依据你的个人爱好而定。    
   
  规则三:为事件命名(Name   Events)    
  对于事件处理方法给出合适的名字更加重要。如果你对于组件给出了一个合适的名字,那么系统默认的名字ButtonClick将变成BtnAddClick。虽然从这个名字中我们可以猜到这个事件处理程序的功能,但是我认为使用一个能够描述该方法的作用的名字,而不是采用Delphi附加的名字是一种更好的方式。例如,BtnAdd按钮的OnClick事件可以命名成AddToList。这会使得你的程序可读性更强,特别是当你在这个类的其他方法中调用这个事件处理程序时,而且这会帮助程序员为类似的事件或是不同的组件选用相同的方法。不过我必须声明,使用动作(Actions)是目前开发重要的程序时我最喜欢的方法。    
   
  规则四:使用窗体方法(Use   Form   Methods)    
  窗体都是一些类,因此窗体的代码是以方法组织的。你可以向窗体中添加事件处理程序,这些处理程序完成一些特别的功能,而且他们能被其他方法调用。除了事件处理方法外,你还可以向窗体添加完成动作的特别定义的方法以及访问窗体状态的方法。在窗体中添加一些公共的(Public)方法供其他窗体调用要比其他窗体直接操作他的组件要好。    
   
  规则5:添加窗体构造器(Add   Form   Constructors)    
  在运行时创建的第二个窗体除了一个默认的构造器(从Tcomponent   类继承而来)外还会提供其他特殊的构造器。如果你不需要考虑和Delphi4以前的版本的兼容性问题,我建议你重载(Overload)Create方法,添加必要的初始化参数。具体代码可参见下面的代码:    
  Public    
  Constructor   Create(Text:string):   reintroduce   ;   overload;    
  Constructor   TformDialog.Create(Text:string);    
  Begin    
  Inherited   Create(Application);    
  Edit1.Text:=Text;    
  End;    
  规则6:避免全局变量(Avoid   Global   Variables)    
  应该避免使用全局变量(就是那些在单元的interface   部分定义的变量)。下面将会有一些建议帮助你如何去做。    
  如果你需要为窗体存储额外的数据,你可以向窗体类中添加一些私有数据。这种情况下,每一个窗体实例都会有自己的数据副本。你可以使用单元变量(在单元的implementation部分定义的变量)声明那些供窗体类的多个实例共享的数据。    
  如果你需要在不同类型的窗体之间共享数据,你可以把他们定义在主窗体里来实现共享,或者使用一个全局变量,使用方法或者是属性来获得数据。    
   
  规则7:永远不要在Tform1类中使用Form1(Never   Use   Form1   in   Tform1)    
  你应该避免在类的方法中使用一个特定的对象名称,换句话说,你不应该在TForm1类的方法中直接使用Form1.如果你确实需要使用当前的对象,你可以使用Self关键字。请牢记:大多数时候你都没有必要直接使用当前对象的方法和数据。    
  如果你不遵循这条规则,当你为一个窗体类创建多个实例的时候,你会陷入麻烦当中。    
   
  规则8:尽量避免在其他的窗体中使用Form1(Seldom   Use   Form1   In   Other   Forms   )    
  即使在其他窗体的代码中,你也应该尽量避免直接使用全局变量,如Form1.定义一些局部变量或者私有域供其他窗体使用会比直接调用全局变量要好。    
  例如,程序的主窗体能够为对话框定义一个私有域。很显然,如果你计划为一个派生窗体创建多个实例,这条规则将是十分有用。你可以在主窗体的代码范围内保持一份清单,也可以更简单地使用全局Sreen对象的窗体数组。    
   
  规则9:移除Form1(Remove   Form1)    
  事实上,我的建议是在你的程序中移除Delphi自动创建的全局窗体对象。即使你禁止了窗体的自动添加功能,这也有可能是必要的,因为在Delphi随后仍然可能添加这样的窗体。我给你的建议是应该尽量避免使用全局窗体对象。    
  我认为对于Delphi新手而言,移除全局窗体对象是十分有用的,这样他们不至于对类和全局对象两者的关系感到疑惑。事实上,在全局窗体对象被移除后,所有与它有关的代码都会产生错误。  
   
  问题点数:0、回复次数:112Top

1 楼ZyxIp(绝望中...)回复于 2003-09-02 14:28:22 得分 0

规则10:添加窗体属性(Add   Form   Properties)    
  正如我已经提到过的,当你需要为你的窗体添加数据时,请添加一个私有域。如果你需要访问其他类的数据,可以为你的窗体添加属性。使用这种方法你就能够改变当前窗体的代码和数据(包含在它的用户界面中)而不必改变其他窗体或类的代码。    
  你还应该使用属性或是方法来初始化派生窗体或是对话框,或是访问他们的最终状态。正如我前文所说的,你应该使用构造器来完成初始化工作    
   
  规则11:显示组件属性(Expose   Components   Properties)    
  当你需要访问其他窗体的状态时,你不应该直接访问它的组件。因为这样会将其他窗体或其它类的代码和用户界面结合在一起,而用户界面往往是一个应用程序中最容易发生改变的部分。最好的方法是,为你需要访问的组件属性定义一个窗体属性。要实现这一点,可以通过读取组件状态的Get方法和设置组件状态的Set方法实现。    
  假如你现在需要改变用户界面,用另外一个组件替换现有的组件,那么你只需做的是修改与这个组件属性相关的Get方法和Set方法,而不必查找,修改所有引用这个组件的窗体和类的源码。详细实现方法请参见下面的代码:    
  private    
  function   GetText:String;    
  procedure   SetText(const   Value:String);    
  public    
  property   Text:String;    
  read   GetText   write   SetText;    
  function   TformDialog.GetText:String;    
  begin    
  Result:=Edit1.Text;    
  end;    
  procedure   TformDialog.SetText(const   Value:String);    
  begin    
  Edit1.Text;=Value;    
  end;    
   
  规则12:属性数组(Array   Properties)    
  如果你需要处理窗体中的一系列变量,你可以定义一个属性数组。如果这些变量是一些对于窗体很重要的信息,你还可以把他们定义成窗体默认的属性数组,这样你就可以直接使用SpecialForm[3]来访问他们的值了。    
  下面的代码显示了如何将一个listbox组件的项目定义成窗体默认的属性数组。    
  type    
  TformDialog   =class(TForm)    
  private    
  listItems:TlistBox;    
  function   GetItems(Index:Integer):String;    
  procedure   SetItems(Index:Integer:const   Value:String);    
  public    
  property   Items[Index:Integer]:string;    
  end;    
  function   TFormDialog.GetItems(Index:Integer):string;    
  begin    
  if   Index   >=ListItems.Items.Count   then    
  raise   Exception.Create(‘TformDialog:Out   of   Range’);    
  Result:=ListItems.Items[Index];    
  end;    
  procedure   TformDialog.SetItems(Index:Integer;const   alue:string);    
  begin    
  if   Index   >=ListItems.Items.Count   then    
  raise   Exception.Create(‘TformDialog:Out   of   Range’);    
  ListItems.Items[Index]:=Value;    
  end;    
   
  规则13:使用属性的附加作用(Use   Side-Effects   In   Properties)    
  请记住:使用属性而不是访问全局变量(参见规则10、11、12)的好处之一就是当你设置或者读取属性的值时,你还可能有意想不到的收获。    
  例如,你可以直接在窗体界面上拖拉组件,设置多个属性的值,调用特殊方法,立即改变多个组件的状态,或者撤销一个事件(如果需要的话)等等。    
   
  规则14:隐藏组件(Hide   Components)    
  我经常听见那些面向对象编程的狂热追求者抱怨Delphi窗体中包含一些在published部分声明的组件,这是和面向对象思想的封装性原理不相符合的。他们确实提出了一个重要的议题,但是他们中的大多数人都没有意识到解决方法其实就在他们手边,完全不用重写Delphi代码,也不用转向其他语言。    
  Delphi向窗体中添加的组件参照可以被移到private部分,使得其他窗体不能访问他们。如果你这样做,你就有必要设置一些指向组件的窗体属性(请参见规则11),并且使用它们来访问组件的状态。    
  Delphi将所有的这些组件都放在published部分,这是因为使用这种方式能够保证这些域一定是在.DFM文件中创建的组件。当你改变一个组件的名称时,VCL能够自动地将这个组件对象与它在窗体中的参照关联起来。因为delphi使用RTTI和Tobject方法来实现这种功能,所以如果想要使用这种自动实现功能,就必须把参照放置在published部分(这也正是为什么delphi将所有的组件都放在published部分的缘故)。    
  如果你想知道的更详细一点,可以参看下面的代码:    
   
  procedure   Tcomponent.SetReference(Enable:Boolean);    
  var    
  Field:^Tcomponent;    
  begin    
  If   Fowner<>   nil   then   begin    
  Field:=Fowner.FieldAddress(Fname);    
  If   Field<>nil   then    
  Field^:=Self    
  else    
  Field^:=nil;    
  end;    
  end;    
   
  上面的代码是Tcomponent类的SetReference方法,这个方法可以被InserComponent,RemoveComponent和SetName等方法调用。    
  当你理解了这一点后,你应该不难想到如果你将组件参照从published部分移到了private段,你将失去VCL的自动关联功能。为了解决这个问题,你可以通过在窗体的OnCreate事件中添加如下代码解决:    
  Edit1:=FindComponent(‘Edit1’)   as   Tedit;    
  你接下来应该做的就是在系统中注册这些组件类,当你为他们注册过后就能使RTTI包含在编译程序中并且能够被系统所使用。当你将这些类型的组件参照移到private部分时,对于每一个组件类,你只需为他们注册一次。即使为他们注册不是一定必要的时候,你也可以这样做,因为对于RegisterClasses的额外调用有益无害。通常你应该在单元中负责生成窗体的初始化部分添加以下的代码:    
  RegisterClass([TEdit]);    
   
  规则15:面向对象编程的窗体向导(The   OOP   Form   Wizard)    
  为每一个窗体的每一个组件重复上述两个操作不仅十分的烦人,而且相当的浪费时间。为了避免额外的负担,我已经为此写了一个简单的向导程序。这个程序将会生成一些可以完成以上两步工作的代码,你需要做的仅仅是做几次复制和粘贴就行了。    
  遗憾的是这个向导程序不能自动将代码放置到单元中合适的地方,我目前正在修改这个向导程序,希望能实现这个功能。你可以到我的网站(www.marcocantu.com)查找更加完善的程序。    
   
  规则16:可视化窗体继承(Visual   Form   Inheritance)    
  如果应用得当,这将是一个强大的工具。根据我的经验,你所开发的项目越大,越能体现它的价值。在一个复杂的程序中,你可以使用窗体的不同等级关系来处理一组相关窗体的多态性(polymorphism)。    
  可视化窗体继承允许你共享多个窗体的一些公共的动作:你可以使用共享的方法,公用的属性,甚至是事件处理程序,组件,组件属性,组件事件处理方法等等。    
   
  规则17:限制保护域数据的使用(Limit   Protected   Data)    
  当创建一些具有不同分级体系的类时,一些程序员趋向于主要使用保护域,因为私有数据不能被子类访问。我不能说这没有其合理性,但是这肯定是和封装性不相容和的。保护数据的实现能够被所有继承的窗体所共享,而且一旦这些数据的原始定义发生改变,你必须更改所有的相关部分。    
  请注意,如果你遵循隐藏组件这样一条规则(Rule   14),继承窗体就不可能访问基类的私有组件。在一个继承窗体中,类似Edit1.Text:=’’的代码就不会被编译。虽然这是相当的不方便,但是至少在理论上这是值得肯定的事情,而不是否定的。如果你感觉到实现封装性是最主要,最需要的,就请将这些组件参照放在基类的私有段。    
   
  规则18:保护域中的访问方法(Protected   Access   Methods)    
  在基类中将组件参照放置在私有域中,而为这些组件添加一些访问函数来得到他们的属性,这将是一种更好的方法。如果这些访问函数仅仅在这些类内部使用而且不是类接口的一部分,你应该在保护域声明他们。例如Rule   11中描述过的GetText和SetText方法就可以声明成protected,并且我们可以通过调用SetText(’’)来编辑文本。    
  事实上,当一个方法被镜像到一个属性时,我们可以简单地采用如下代码就可以达到编辑文本地目的:Text:=’’;    
   
  规则19:保护域中的虚拟方法(Protected   Virtual   Methods)    
  实现一个灵活的分级制度的另一个关键点是定义一些你可以从外部类调用的虚拟方法来得到多态性。如果这个方法使用得当,将会很少出现其他公共的方法调用保护域中的虚拟方法的情况。这是一个重要的技巧,因为你可以定制派生类的虚拟方法,来修改对象的动作。    
   
  规则20:用于属性的虚拟方法(Virtual   Methods   For   Properties)    
  即使是访问属性的方法也能定义成virtual,这样派生类就能改变属性的动作而不必重定义他们。虽然这种方法在VCL当中很少使用,但是它确实十分灵活、强大。为了实现这一点,仅仅需要将Rule   11当中的Get   和Set   方法定义成Virtual。基类的代码如下所示:    
  type    
  TformDialog   =   class   (   TForm)    
  Procedure   FormCreate(Sender:Tobject);    
  Private    
  Edit1:Tedit;    
  Protected    
  function   GetText:String;virtual;    
  procedure   SetText(const   Value:String);virtual;    
  public    
  constructor   Create(Text   :String):reintroduce;overload;    
  property   Text:String   read   GetText   write   SetText;    
  end;    
   
  在继承窗体中,你可以添加一些额外的动作来重载虚拟方法SetText:    
  procedure   TformInherit.SetText(const   Value:String);    
  begin    
  inherited   SetText(Value);    
  if   Value=’’   then    
  Button1.Enabled:=False;    
  end;

Delphi面向对象编程思想 万丈高楼根基起,练好基本功,提高综合能力,做出更好的产品 立即下载

相关推荐

Delphi面向对象程序设计

唱江华,邓文新等编著,高校计算机教学系列教材:本书上篇为Delph程序设计,共七章,包括Delphi概述;基本的程序设计方法;图形、图像与多媒体设计;数据库程序设计;Internet程序设计;定制组件及软件的集成技术。下篇为面向对象的程序设计基础,共五章,介绍了Pascal语言语法以及面向对象的程序设计概念。

Delphi容器类之---TList、TStringList、TObjectList,以及一个例程的代码分析

看了这里标题,大家可能以为我会谈TListBox控件,那就错了。我要谈的是Delphi提供给我们的具有列表性质的类:TStringList、TList和TObjectList。TStringList用来存放字符串,TList存放指针,而TObjectList则存放对象(Object)   在我们使用Delphi的过程中,有很多数据的存储是要靠 数组解决的。虽然Delphi现在已经支持了可变数

技术资料收集站 6774

delphi面向对象编程

Delphi,是Windows平台下著名的快速应用程序开发工具(Rapid Application Development,简称RAD)。它的前身,即是DOS时代盛行一时的“BorlandTurbo Pascal”,最早的版本由美国Borland(宝兰)公司于1995年开发。主创者为Anders Hejlsberg。经过数年的发展,此产品也转移至Embarcadero公司旗下。Delphi是一个集成开发环境(IDE),使用的核心是由传统Pascal语言发展而来的Object Pascal,以图形用户界面为开发环境,透过IDE、VCL工具与编译器,配合连结数据库的功能,构成一个以面向对象程序设计为中心的应用程序开发工具。

真正的Delphi面向对象编程(一)

一.实现商业对象 封装了商业规则的类是真正面向对象编程的基础这篇文章我们会涉及程序设计的各个方面,并对质疑一些我们写Delphi程序的惯用方式。这些设计方法背后的基础概念是封装:设计一组清楚定义接口(方法)类,由这些方法去操作他们的属性。这一概念将会贯串整个程序并对数据如何保存和呈现有很大影响。我愿意介绍读者学习Francis Glassborows关于C++的文章,尽管语言不同

刘海东的专栏 4945

TNS-12516及ORA-12516错误解决

在客户端进行sqlplus连接报错如下: ORA-12516: TNS: 监听程序找不到符合协议堆栈要求的可用处理程序 在/home/oracle/product/10.2.0/db_1/network/log/listener.log中查看到错误如下: TNS-12516: TNS:listener could not find available handler with matchin

KEL 2万+

如何从零开始写小程序

看了这篇文章,即使让我现在就从头写一个能够正常运行的小程序,也没有原本想象中的那么难了。 在本文中,我们将会以一个具体的小程序为例,带领大家从零到一完成一个小程序的开发流程,并将这个小程序上传到 FinClip.com 进行小程序提审与上架操作。 我们新建了一个叫做「HelloWorld」的小程序,FIDE 在初始化小程序项目时,会自动在项目目录中补充对应所需要的项目文件。那不妨让我们先从小程序目录下的配置文件开始,逐渐揭开小程序的面纱。 使用 FIDE 编辑小程序 1. 认识 json 文件 在小程序项目

POHOU23的博客 4395

DELPHI基础教程 第二章 Delphi面向对象的编程方法

第二章 Delphi面向对象的编程方法 Delphi的编程语言是以Pascal为基础的。Pascal语言具有可读性好、编写容易的特点,这使得它很适合作为基础的开发语言。同时,使用编译器创建的应用程序只生成单个可执行文件(.EXE),正是这种结合,使得Pascal成为Delphi这种先进开发环境的编程语言。 本章中,我们将讨论Object Pascal的主...

weixin_30566063的博客 234

STM32F103开发实战:如何用CubeMX+CLion调整Flash起始地址(附完整CMake配置)

本文详细介绍了在STM32F103开发中如何使用CubeMX和CLion工具链调整Flash起始地址,包括链接脚本修改、系统文件配置和CMake工程适配。通过实战步骤和完整配置示例,帮助开发者实现固件双备份、OTA升级等高级功能,提升嵌入式开发效率。

5b6n7m8的博客 209

Delphi面向对象的编程方法(一)(转)

Delphi面向对象的编程方法(一): Delphi的编程语言是以Pascal为基础的。Pascal语言具有可读性好、编写容易的特点,这使得它很适合作为基础的开发语言。同时,使用编译器创建的应用程序只生成单个可执...

cuankuangzhong6373的博客 218

SAP S4 MM模块自动记账全流程解析:从评估范围到科目分组的实战配置

本文深入解析SAP S4 MM模块自动记账的全流程,从核心概念评估范围与评估控制入手,详细阐述了评估类、科目分组等关键配置的逻辑关系。通过实战配置步骤,指导如何建立从物料移动(如收货、发料)到自动生成准确财务凭证的完整体系,确保库存价值与总账实时同步,为企业构建可靠的财务业务一体化基石。

weixin_29313547的博客 422

别再只调A*算法了!聊聊ROS机器人导航中,OpenCV视觉信息如何与激光雷达数据“打配合”

本文探讨了ROS机器人导航中激光雷达与OpenCV视觉融合的实战策略,揭示了如何通过多模态感知提升导航精度。文章详细介绍了视觉特征到代价地图的转化方法、系统级挑战的工程解决方案,以及融合感知下的路径规划进化,帮助开发者优化机器人导航系统。

weixin_29278805的博客 226

Delphi面向对象:overload与override

首先,我想单独说明一下overload,为什么呢?因为overload和对象化关联不大,所以,我感觉单独提出来说明比较好。    我们都知道,在Pascal语法规则中,同一个UNIT里是不能存在两个同名的函数的,例如:  代码:function func(): Boolean;function func(const x: Char): Boolean;这样是会出语法错误的,

delphi_csdn的专栏 1133

联想ThinkServer SR588 重装raid5阵列信息(装完centos7后,找不到硬盘)

这里写自定义目录标题找不到硬盘选择光盘启动 找不到硬盘 装完centos7之后,提示重启,重启之后,就一直无法启动。 进入bios 看了,确实是有设置硬盘为第一启动选项。 选择光盘启动 本地标准硬盘也是找不到。 1、 重启进入bios在系统手设置里找到存储信息, 然后找到如图选项回车进入。 选择主目录进入。 进入Configuration Management 里面 先清除原来的设置信息 选择已启用在yes 提示清除成功。 返回上一目录选择,选择 Create Virtual Drive 再选择S

熠铭心时空的博客 2万+

delphi高手突破学习笔记之面向对象类和对象的本质

知识点1:堆和栈 每个应用程序可以获得的内存空间分为两种:堆(heap)和栈(stack)。 堆又称为“自由存储区”,其中的内存空间的分配与释放是必须由程序员来控制的。例如,用GetMem函数获取了一定大小的内存空间,则在使用完后,必须调用FreeMem函数将空间释放,否则就会发生所谓的“内存泄漏”。“借债还钱,天经地义”。 栈又称为“自动存储区”,其中的内存空间的分配与释放是由编译器和系统

苏生-苏米沿的专栏 2864

【WebRTC】【Unity】Unity Web RTC1-Unity中简单实现远程画面

平台:基本常用平台包括安卓,苹果(max和IOS),Windows64,Linux都行。10. 注意,如果从移动设备浏览器连接服务,信令服务器的SSL证书一定要先设好。想要在Unity中实现实时远程桌面,找到了Render Streaming这个手段,本篇介绍相应的使用方法和实例。8. 打开电脑浏览器,地址栏输入http://127.0.0.1,点击Receiver Sample。新建Unity项目,模板选Third Person,Project Name随意。启动App,控制台出现如下信息表示成功。

每日出拳老爷子的博客 2518

【TC3xx芯片】TC3xx DMA模块详解

TC3xx DMA模块详解

qq_36056498的博客 5916

Delphi面向对象编程

静态方法与类字段 implementation {$R *.dfm} type TWorker = class(TObject) public Name: string; Age: Cardinal; procedure SetWorker(sName: string; nAge: Cardinal); end; procedu...

weixin_30750335的博客 327

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Delphi 面向对象编程 第一章

为什么80%的码农都做不了架构师?>>> ...

weixin_34341229的博客 180

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Delphi面向对象的编程方法

Delphi的编程语言是以Pascal为基础的。Pascal语言具有可读性好、编写容易的特点,这使得它很适合作为基础的开发语言。同时,使用编译器创建的应用程序只生成单个可执行文件(.EXE),正是这种结合,使得Pascal成为Delphi这种先进开发环境的编程语言。  本章中,我们将讨论Object Pascal的主要特点,并讲解如何在事件处理过程和其他应用程序中,使用它来编制程序代码。本章将

婷婷小屋 804

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

《Delphi面向对象编程思想》前言

        Delphi面向对象编程思想   刘 艺 著前  言   第一次知道Delphi并不是因为Borland公司的Delphi软件,而是在柏拉图的经典著作《柏拉图对话录》“申辩篇”中读到了这个单词。A friend of mine . . . went to Delphi and boldly asked the or

newdream的专栏 2448

学习Delphi面向对象编程的一点心得

以前我是完全不理解类的概念的,我只是把它当成一个Record来看,只不过它里面可以包含函数和过程罢了。但深入VCL学习后我才发现,原来面向对象的世界是这么精彩。   大家都应该见过闹钟吧?随便给一个人一个闹钟,他都会用,不管是电子钟还是机械钟。但如果给一个人一堆零件,有谁能够将他们组装成一个闹钟呢?如果没有专业的知识,恐怕没有人会。为什么呢?为什么人人都会用但很少人懂得其内部结构呢?因为闹钟这

夜行者 1791

用Delphi学习面向对象的编程

Online Delphi OOP Course submitted by John Barrow John Barrow提交的在线Delphi OOP课程 第1部分OO基础知识简介 ( Part 1 Introduction to OO basics ) Chapter 1 第1章 Chapter 2 第2章 Chapter 3 第3章 第2部分类继承简介 ( Part 2 ...

cumao2792的博客 185

013_《Delphi面向对象编程思想》

这是一本纯粹讨论dlephi面向对象编程的力作。 本书以精通叫delphi面向对象编程为目的,深入浅出地讲解了delphi面向对象的概念和实质、方法和经验、思想和实践;详尽讨论了delphi建立在虚方法、抽象方法、对象接口等动态绑定机制上和向上转型、向下转型、接口转型等类型转换机制上的面向对象高级技巧;并深入研究了通过封装从而实现界面和业务对象的分离,从界面和业务分离逐步实现分布式多层体系结构,进而实现界面和业务应用的跨平台的企业级解决方案。本书还提供了vcl的内幕资料和研究心得。 全书使用delp

敦格 3736

Delphi面向对象的编程方法(六)(转)

Delphi面向对象的编程方法(六): 2.1.10.7 将库单元加入工程  将库单元加入工程是比较简单的。无论是您自己建立的库单元还是Delphi建立的与窗体有关的库单元,如果已经完成,则先打开您想加入库单元的工...

cuankuangzhong6373的博客 256
上一篇: Delphi中预想不到的代码楼主zswang(伴水清清)(专家门诊清洁工)2002-05-16 14:20:38 在 Delphi / VCL组件开发及应用 提问
下一篇: Delphi中建议使用的语句
一剑平江湖
博客等级 码龄18年 207粉丝 1070原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值