菜鸟学delphi(大家都来交流) (0分)

  • 主题发起人 刘亚林
  • 开始时间

刘亚林

Unregistered / Unconfirmed
GUEST, unregistred user!
我想到这里来的不一定就是提问和答疑的高手吧。如果有和我一样对delphi还是刚入门,对它很敬畏的菜鸟的话,我很愿意把自己学到看到的东西和大家分享。以下就是我看书的心得。欢迎大虾进来指正。菜鸟进来学习。

不知道版主通不通过呢?如果可以的话,我将继续写下去。

盼回。
 
G

goodzp

Unregistered / Unconfirmed
GUEST, unregistred user!
我支持你,哎,可惜我不是版主.
 
L

luyear

Unregistered / Unconfirmed
GUEST, unregistred user!
心得可以笔记的形式发表
 

新手101010

Unregistered / Unconfirmed
GUEST, unregistred user!
我也支持,可惜我也不是版主.
 
K

kl78pgy

Unregistered / Unconfirmed
GUEST, unregistred user!
你写吧,好东西是不分菜鸟与高人的
 

刘亚林

Unregistered / Unconfirmed
GUEST, unregistred user!
就是不知道老版允不允许啊,毕竟这是他的地盘呀,:)
 

黎永欢

Unregistered / Unconfirmed
GUEST, unregistred user!
to 刘亚林:
我还在入门路前,请多多指教, wzlyhcn@163.net
 
D

duron187

Unregistered / Unconfirmed
GUEST, unregistred user!
有的人准备当菜鸟,
有的人正在当菜鸟,
有的人曾经当菜鸟.
 
H

hrp123

Unregistered / Unconfirmed
GUEST, unregistred user!
这样做,你的水平也会上到一个新的档次
 
W

WoDing

Unregistered / Unconfirmed
GUEST, unregistred user!
如果你怕版主不答应,就写笔记,笔记是谁也不会管的,只要不违法,什么都可以,并且可以一天一天的写。大富翁的笔记真是让人爽死了!DFW的笔记和CSDN的个人文档不同,CSDN的个人文档是做为杂志的稿源而搞的。
 

刘亚林

Unregistered / Unconfirmed
GUEST, unregistred user!
这里的老版是不是看帖不回帖呀,晕~~

这是我第一天写的笔记,大家看看.

当然只适合于象我一样的菜鸟看啦~~前面几章打算全写object pasical。都是我的笔记以及一些幼稚的想法。希望所有的和我一样的菜鸟能一起来学。

以后的笔记我都会在这里跟帖。
 

刘亚林

Unregistered / Unconfirmed
GUEST, unregistred user!
菜鸟学delphi笔记

一、数据类型
各位好,学东西要从最基本的入手方能学得扎实,(这道理好象谁都懂啊,西红柿,砖头~~)好了,废话少说,下面让我们开始打基础。
object pasical的数据类型有六种。分别是:简单类型,字符串类型,结构类型(即复杂类型),指针类型,变体类型,过程和函数类型。

首先,我们来看简单类型,它又分有序类型和实数类型。
下面分别介绍有序类型和实数类型。
有序类型:包括整型,字符型,布尔型,枚举型,子界型五种。这些分类咱们得弄清楚,我的意思就是说得记住。因为在还没有什么编程经验的时候要说通过编程来熟悉这些有点不切实际。反正就这么五种类型,闭一下老眼,掐一下指头,一个手就数过来了。
1. 整型有以下类型(它们的数值范围我就不写啦,因这想记也记不住呀,写程序的时候超过范围编译的时候就会报错~~到时看到错误定位在类型这里的话,就换种数值范围更宽的类型。--偷懒!当然最好是实际编程的时候拿本基础一点的书,用到整数类型的时候看看哪种最合适,多了自然就熟了^^):
integer(最常用啦,咱记着它),shortint,smallint,longint(和C差不多嘛),Byte,Word,longword,Cardinal(了解)。
2.字符型,三种类型,少吧,嘿嘿。
ansichar,标准的一字节的ansi字符!
widechar,两字节的Unicode字符,Unicode字符集的前256个字符与ansi字符集相同。(Unicode和ansi是否两种不同的标准?我猜是,写完我查一下资料,再编辑一下)。
char,相当于widechar。
注意:不知道大家是否和我一样,认为一个字符就是占一个字节的空间。其实并不是,所以在要想知道一个类型或实例的所占字节长度的时候就要用sizeof()函数,这个函数是用来返回类型或实例的字节长度的。
3.布尔型,大家都知道吧,其值对应的就是true和false了。对应1和0。但我们得知道它又分几种类型,实际编程中,经常得用到它们。
boolean, Byteboolean 这两个为单字节。
wordboolean,双字节。
Longboolean,四字节。看名字就知道啦~~
4.枚举类型:
它由一组有序的数据类型,也就是由上面的整型,字符型,布尔型组成。难得说,给你看个例子就明白了。
type
Tdays=(Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday);
var
Newday:Tdays;
注意:那么象这个里面的Sunday啊,Monday等等就不能再在程序中当变量用了,因为一但定义了枚举型,那么其元素就成为标识符了。
5.子界类型:
由以上四种类型某一范围内的值。举个例子啦。
type
Thours=0..24;
Tchars='A'..'G';

Tdays=(Sun,Mon,Tue,Wed,Thu);
Tzj=Mon..Wed;//根据上面的 Tdays(枚举类型)来定义Tzj为子界类型。
     说明:子界型限定了变量的可能取值范围,所以要打开范围检查。
        在库单元的implementation后面有{$R*.DFM}字样,它表示范围检查打开了。 如果没有,那就可在Options|Project|ComplierOptions中选择Range Checking来打开范围检查。

实数类型:Real48,Single,Double,Extended,Comp,Currency.
 

刘亚林

Unregistered / Unconfirmed
GUEST, unregistred user!
接下来就是字符串类型了哦。
 

黎永欢

Unregistered / Unconfirmed
GUEST, unregistred user!
加强一下:

True 和 False 对应的是 “非零” 和 “全零”。
即,不是零的就是 True。
Boolean(123) = True
Boolean(0) = False
 

黎永欢

Unregistered / Unconfirmed
GUEST, unregistred user!
sizeof() 这个内部指令,只能对编译器明确的类型才有意义的。
比如:
var
v: Variant;
begin
v := 'Hello, I am a variable of the type of variant.';
ShowMessage(IntToStr(sizeof(v)))
// 这里 sizeof() 不能做你想做的
end;

sizeof(v) 只能返回 4,因为 v 只是一个引用(指针),它在 Win32 系统中永远只能是 4,Win32中的虚拟地址空间的地址长度是32位的。
 

黎永欢

Unregistered / Unconfirmed
GUEST, unregistred user!
还有就是:
sizeof() 的值是编译器在编译期间计算出来的,所以它是一个常量表达式,可以出现在常量表达式可以出现的任何地方,只要类型匹配就可以了。

比如:

// 当然,这是人为搞出来的,没有实际意义,但足可以描述这个问题了。

function GetTypeNameBySize(Size: Integer): string;
begin
Result := '';
case Size of
sizeof(Byte): Result := 'Byte';
sizeof(Integer): Result := 'Integer';
sizeof(Int64): Result := 'Int64';
else
Result := 'Other Type';
end;
end;

 

黎永欢

Unregistered / Unconfirmed
GUEST, unregistred user!
说说集合类型吧,我相信有很多初学者还搞不清这个的。
但,要强调类型的特性和内部表示。
 

刘亚林

Unregistered / Unconfirmed
GUEST, unregistred user!
多谢黎黎补充!我又学到东西啦,哈哈

好的,那就讲集合类型。
 

刀剑如梦

Unregistered / Unconfirmed
GUEST, unregistred user!
主题应该去掉(版主进来)这一段.我老早就看到此贴了,一直没有打开,就因为后面的(版主进来).这里交流的东东很不错,希望继续下去!
 

刀剑如梦

Unregistered / Unconfirmed
GUEST, unregistred user!
Flash播放器源码分析
procedure TFlashPlayFileFrm.MouseRightMessage(var Msg: TMsg

var Handled: Boolean)

begin
if (Msg.message = WM_RBUTTONDOWN) and (Msg.hwnd = ShockwaveFlash.Handle) then
begin
Handled := True

RightPM.Popup(Mouse.CursorPos.X,Mouse.CursorPos.y)

end

end


procedure TFlashPlayFileFrm.FormCreate(Sender: TObject)

var
hMenuHandle:Integer

begin
hMenuHandle:=GetSystemMenu(Handle,False)

if (hMenuHandle<>0) then
DeleteMenu(hMenuHandle,SC_CLOSE,MF_BYCOMMAND)

Application.OnMessage:= MouseRightMessage

end


procedure TFlashPlayFileFrm.WMSYSCommand(var msg: TWMSYSCommand)

begin
if (Msg.CmdType = SC_MAXIMIZE) then
WindowMaximize
else
DefaultHandler(Msg)

end


procedure TFlashPlayFileFrm.WindowMaximize

begin
Setwindowlong(Handle,GWL_STYLE,Getwindowlong(Handle,GWL_STYLE)and not WS_CAPTION)

WindowState := wsMaximized

end;
 
顶部