Delphi
<h1 id="p1-第一个程序">P1 第一个程序</h1><p>直接在界面上可加入label、edit文本框以及button按钮<br>
双击图标可进入编程界面<br>
visible:是否可见<br>
showhint hint:悬浮<br>
edit1.text:给edit1添加文本<br>
<code>edit1.Text:='hello'; </code><br>
close:关闭<br>
<code>close;</code><br>
:=:赋值符号<br>
; :语句的结束<br>
caption:修改文字</p>
<h1 id="p2-基本数据与表达式1">P2 基本数据与表达式1</h1>
<p>整型:integer<br>
实型:Real<br>
字符型:Char<br>
字符串型:String<br>
布尔型:Boolean</p>
<h1 id="p3-基本数据与表达式2">P3 基本数据与表达式2</h1>
<p>定义常量:const<br>
<code>const</code><br>
<code>TEMP= 111</code><br>
类型常量:<br>
<code>const</code><br>
<code>TEMP:Integer = 111</code></p>
<p>声明变量:var<br>
三层结构:<br>
interface:其他引用该单元的可使用<br>
implimentation:单元内所有函数可使用<br>
procedure:函数内使用<br>
<code>var</code><br>
<code>temp: Integer</code></p>
<p><code>var</code><br>
<code>n1,n2,n3:Integer;</code><br>
<code>str:String;</code><br>
<code>r1:Real;</code><br>
文字<br>
选中edit表格时,可在objectinspector的events中选择onclick修改<br>
MOD 是相除取余数,DIV是相除取商<br>
StrToInt、IntToStr</p>
<h1 id="p4-基本数据类型与表达式">P4 基本数据类型与表达式</h1>
<h2 id="算术运算符">算术运算符</h2>
<p>取正:+,单目<br>
取负:-,单目<br>
加法:+<br>
减法:-<br>
乘法:*<br>
除法:/,结果为实型数据<br>
整除:div,结果为整型数据,结果为商<br>
取余:mod,两个整数相除,结果为余数<br>
函数:FloatToStr(展示于界面)、StrToFloat(数值运算)</p>
<h2 id="字符串运算符">字符串运算符</h2>
<h1 id="p5基本数据类型与表达式3">P5基本数据类型与表达式3</h1>
<p>位运算符<br>
Not、and、or、Xor、shl、shr</p>
<h1 id="p6-基本数据类型与表达式5">P6 基本数据类型与表达式5</h1>
<h2 id="数学类函数">数学类函数</h2>
<p>绝对值函数:<code>Abs(x):Extended;</code></p>
<p>取整数函数<br>
<code>Trunc(x):Int64;</code> 返回实型数据x的整数部分,舍弃小数部分,类型为Int64<br>
<code>Int(x):Extended</code> 返回整数部分,类似Trunc(x)<br>
'Round(x):Int64;' 返回对实型数据x的小数部分四舍五入后的整数部分</p>
<p>取小数函数<br>
<code>Frac(x):Extended;</code>返回小数部分<br>
<code>x:=Frac(-2.5);</code></p>
<p>平方函数<br>
<code>Sqr(x):Extended;</code><br>
<code>x:=Sqr(-2.5);</code></p>
<p>平方根函数<br>
<code>Sqrt(x):Extended;</code>返回非负实数的算术平方根</p>
<p>三角函数<br>
<code>Sin(x):Extended;</code> 返回弧度为单位的正弦函数值<br>
<code>Con(x):Extended;</code><br>
<code>ArcTan(x):Extended;</code></p>
<p>指数函数<br>
<code>Exp(x):Real;</code></p>
<p>自然对数函数<br>
<code>Ln(x):Real;</code></p>
<p>随机数函数<br>
<code>Random(x);</code>返回大于等于0,小于整数x的随机整数</p>
<h1 id="p7-基本数据类型与表达式6上">P7 基本数据类型与表达式6(上)</h1>
<h2 id="字符串处理函数与过程">字符串处理函数与过程</h2>
<p>大小写转换函数<br>
function 函数名(传入值):返回值<br>
LowerCase(const s:String):String;<br>
<code>x1:=LowerCase('aBc');</code></p>
<p>UpperCase(const s:String):String;<br>
<code>UpperCase(const s :String):String;</code></p>
<p>字符串大小比较函数<br>
CompareStr(const s1,s2:String):Integer;<br>
区分大小写,若前者大于后者,比较终止,返回值大于0;若均相等,返回值为0;小于后者,返回值小于0</p>
<p>CompareText(const s1,s2:String):Intrger;<br>
不区分大小写比较字符串大小<br>
<code>x1:=CompareStr('Abc','abc');</code>返回值:x1: -32<br>
<code>x1:=CompareText('Abc','abc');</code>返回值:x1: 0</p>
<p>求字符串长度函数<br>
Lengths:Integer;<br>
<code>x:=Length('Fishc')</code></p>
<p>查找位置函数<br>
Pos(s1,s2):Integer; 返回子字符串s1在字符串s2中首次出现的位置,若s2中不存在,则返回0。s1必须为s2的子串。<br>
<code>x:=Pos('bc','abcd');</code> 返回值为2</p>
<p>合并字符串过程<br>
AppendStr(var s1,Const s2);执行效率比"s1:=s1+s2;"高</p>
<p>截取子字符串函数<br>
Copy(str,m,n):String; 在字符串str中截取从第m个字符开始长度为n的子字符串,并返回子字符串<br>
<code>Copy(IloveFishc!,6,5);</code> s1值为'Fishc'<br>
<code>s3:=Copy('IloveFishc!',1,1)和s4:=Copy('IloveFishc!',0,1);相同</code></p>
<p>删除子字符串过程<br>
Delete(str,m,n);</p>
<p>插入子字符串过程<br>
Insert(str1,str,k);将字符串str1插入到字符串str中的第k个字符处</p>
<p>数值和字符串相互转换函数<br>
IntToStr(m):String;<br>
StrToInt(s):Integer;<br>
StrToFloat(s):Extended;</p>
<h1 id="p9-结构化程序设计">P9 结构化程序设计</h1>
<h2 id="顺序结构">顺序结构</h2>
<h2 id="选择结构">选择结构</h2>
<p><>:不等于<br>
in:等于<br>
关系表达式:6>4(True)<br>
关系运算符:9个,运算级别相同,从左到右运算,两边的数据类型必须一致</p>
<h3 id="逻辑表达式">逻辑表达式</h3>
<p>逻辑运算符(但不是位运算符):两边的数据为数值时,逻辑运算符转化为位运算符,结果为整数而非逻辑值<br>
优先级:Not>And>Or、Xor:两个表达式的值不同则结果为True<br>
主要用于条件判断:And、Or</p>
<h3 id="单分支语句">单分支语句</h3>
<p>If (条件)Then<br>
语句1;<br>
语句2;</p>
<h3 id="双分支语句">双分支语句</h3>
<p>If (条件) Then<br>
begin<br>
语句1;<br>
语句2;<br>
end;<br>
Else<br>
语句2;</p>
<p>语句1、2可为简单语句或复合语句(复合语句必须包含在begin 和end之间)</p>
<h3 id="多分支case语句">多分支case语句</h3>
<p>Case (表达式) of<br>
值1:语句1;<br>
值2:语句2;<br>
值n:语句n;<br>
Else<br>
语句n+1;<br>
end;</p>
<h3 id="弹窗消息">弹窗消息</h3>
<p><code>ShowMessage('文本');</code><br>
<code>MessageBox(handle,'内容','框标题',MB_OKCANCEL);</code> uses要加上LCLType;推荐使用<br>
<code>MessageDlg();</code></p>
<h3 id="设置edit文本在中间">设置edit文本在中间</h3>
<p>SetWindowLong();</p>
<h2 id="循环结构">循环结构</h2>
<h1 id="p15结构化程序设计3">P15结构化程序设计3</h1>
<h2 id="while语句">while语句</h2>
<p>while (循环条件) do<br>
循环体;(需用begin、end括起来)</p>
<h2 id="break和continue语句">Break和Continue语句</h2>
<p>break:强制终止整个循环<br>
Continue:结束本次循环<br>
通常放在循环体的if语句之后,在满足某个条件时结束循环或本次循环</p>
<h1 id="16-结构化程序设计4">16 结构化程序设计4</h1>
<h2 id="repeat语句">repeat语句</h2>
<p>Repeat<br>
循环体(循环体不需要使用begin、end括起来)<br>
Until(循环条件);</p>
<h2 id="for语句">for语句</h2>
<p>For 循环变量:=初值 To(DownTo【递减循环】) 终值Do<br>
循环体;<br>
循环变量自动会加1</p>
<h1 id="p17-delphi调试">P17 Delphi调试</h1>
<p>F5打断点,右键-CPU-F7/8跳转</p>
<h1 id="p18-关于数组的认识">P18 关于数组的认识</h1>
<h2 id="一维静态数组定义与使用">一维静态数组定义与使用</h2>
<p>type<br>
数组类型名 = Array[下标类型] of 基类型<br>
实例定义<br>
<code>Type number = Array of Integer</code><br>
<code>var num_one:Array of Integer;</code><br>
使用<br>
For i:=1 To 10 do<br>
num1:=i;</p>
<h1 id="p19-关于数组的认识2">P19 关于数组的认识2</h1>
<h2 id="二维静态数组定义">二维静态数组定义</h2>
<p>格式1<br>
type<br>
数组类型名 = Array[下标类型1,下标类型2】 of 基类型<br>
格式2<br>
Type<br>
数组类型名 = Array[下标类型1】 of Array [下标类型2] of 基类型<br>
多维数组以此类推</p>
<h1 id="p20关于数组的认识3">P20关于数组的认识3</h1>
<h2 id="动态数组">动态数组</h2>
<p>Arr_Str:Array of Integer;<br>
SetLength过程设置数组的大小</p>
<h2 id="一维动态数组">一维动态数组</h2>
<p>var<br>
Arr_Str:Array of Integer;<br>
begin<br>
SetLength(Arr_Str,10);//10个整型元素<br>
end;</p>
<h2 id="二维动态数组">二维动态数组</h2>
<p>var<br>
Arrs:Array of Array of Integer;<br>
begin<br>
SetLength(Arrs,2,5);//2行5列的数组<br>
End;<br>
动态数组下标从0开始,静态不是<br>
动态数组各行长度可以不同<br>
Low、High、Length:返回数组的最小下标值、最大下标值、数组长度<br>
Inputpox():3个参数,返回值为输入值</p>
<h1 id="p23浅谈过程与函数1">P23浅谈过程与函数1</h1>
<p>形式参数若有多个,则用分号分隔,而函数或过程调用中,实参用逗号分隔<br>
形参实参要求数量相同,顺序相同</p>
<h1 id="p24浅谈过程与函数2">P24浅谈过程与函数2</h1>
<h2 id="传值与传址">传值与传址</h2>
<p>传值:复制值,不改变原来的值<br>
传址:引用参数,操作的是原始值,会改变实参的值</p>
<h1 id="p25浅谈过程与函数3">P25浅谈过程与函数3</h1>
<p>在语句中至少要给函数名或result赋值一次<br>
Function 函数名(形参表):返回值类型;<br>
局部声明<br>
begin<br>
语句;<br>
end;</p>
<h1 id="p26窗体与组件">P26窗体与组件</h1>
<h1 id="p27窗体与组件2">P27窗体与组件2</h1>
<h2 id="labelstatictexttabcontrolpagecontrol">label、StaticText、TabControl、PageControl</h2>
<p>label、StaticText相似。StaticText:窗口型文本组件。具有窗口句柄。当组件的快捷键必须属于窗口型组件的时候,使用此组件,不可使用label。</p>
<h2 id="tabcontrol组件">TabControl组件:</h2>
<p>Tabs属性:形成Tab标签<br>
Tab width属性<br>
Tabposition:更改tab的位置<br>
TabIndex:tab的索引<br>
Hottrack:鼠标移动时颜色改变<br>
Multiline<br>
MutiSelect:为true时,和style配合使用时可进行多选</p>
<h2 id="pagecontrol组件">pagecontrol组件</h2>
<p>无代码呀,没写<br>
右键添加newpage。每个页面可以有他单独的组件</p>
<h1 id="p28窗体与组件3">P28窗体与组件3</h1>
<h2 id="按钮型组件">按钮型组件</h2>
<p>button BitBtn SpeedButton<br>
button:不能显示位图<br>
SpeedButton没有焦点,一般用于工具栏按钮<br>
BitBtn有kind属性,更改为系统默认的标志,如?help的图像<br>
layout属性:确定按钮中文本和图片的位置<br>
Margin:调整图片与边框的位置,默认为-1<br>
Spacing:图片与文字的间距</p>
<p>RadioButton :单选 使用check属性<br>
CheckBox:两者共拥有check属性。state属性:cbGrayed变灰选中。可多选</p>
<h2 id="编辑型组件">编辑型组件</h2>
<p>Edit组件:passwordchar:* readOnly:只能被读<br>
事件:OnEnter OnChange OnKeypress<br>
实例挑战:修改V3 计算器,使其只接受数字输入(不会啊)</p>
<p>MaskEdit组件:固定文本格式</p>
<p>Memo组件:处理多行文本。Edit处理单行文本<br>
lines:表示memo中以行为单位的文本<br>
memo1.lines.add('增加新行');<br>
memo1.lines.delete(5);<br>
memo1.lines.move(0,3);<br>
memo1.lines.clear();<br>
memo1.lines.Insert(3,'真对');<br>
memo1.lines.count;<br>
LoadFromFile('test.txt');<br>
SaveToFile('test2.txt');<br>
Modified:确定文本是否改动<br>
Scroll Bars:滚动条<br>
Word Wrap:设置文本是否可换行</p>
<p>RichEdit组件保存的是RTF格式</p>
<h1 id="p37文件系统">P37文件系统</h1>
<p>文本文件:TextFile<br>
二进制(记录型)文件:File</p>
<h2 id="常见的实现方法">常见的实现方法</h2>
<p>创建文件<br>
读取文件<br>
向一个文件的末尾添加数据<br>
读文件中某一位置的数据(随机读)<br>
修改文件中某一位置的数据(随机写)</p>
<p>文件指针自动移向下一个数据</p>
<h2 id="定义文本文件变量">定义文本文件变量</h2>
<p><code>var FishcFile:TextFile; </code></p>
<h2 id="文本文件的打开">文本文件的打开</h2>
<p><code>procedure AssignFile(var F; FileName:string); AssignFile(FishFile,'Fishc.txt');</code>关联文件变量,记得带上路径,关联后可使用reset,rewrite,append,rewrite使用得较多<br>
Reset:只读<br>
<code>procedure Reset(var F[:File;RecSize:Word]);</code><br>
Rewrite:只写<br>
<code>procedure Rewrite(var F:File[;Recsize:Word]); Rewrite(FishcFile);</code><br>
若有同名文件将被删除<br>
Append:添加<br>
<code>procedure Append(var F:Text);</code><br>
word为可选参数</p>
<h2 id="文本文件的关闭">文本文件的关闭</h2>
<p><code>procedure CloseFile(var F);' 成对出现 </code>AssignFile(FishcFile,'Fishc.txt');<br>
…………<br>
CloseFile(FishcFile);`</p>
<h2 id="文本的写操作">文本的写操作</h2>
<p>Write:将指定数据加入到文件中<br>
<code>procedure Write(P1[,P2,...,Pn]);</code><br>
Writeln:最常使用,自动加入换行符</p>
<p><code>write(F1,N1:10:5)</code>//10:域宽5:小数点后几位</p>
<h1 id="p38文件系统2">P38文件系统2</h1>
<h2 id="文本文件的读操作">文本文件的读操作</h2>
<p>Read:不跳到下一行<br>
Readln:读取若干个数据后跳到下一行<br>
读取指定数量的字符型,变量类型建议是String</p>
<h2 id="行尾与文件尾的判断">行尾与文件尾的判断</h2>
<p>判断当前文件是否处于行尾和文件尾,通过Eoln和Eof函数实现<br>
Eoln<br>
function Eoln[(var F:Text)]:Boolean;//若文件指针处于行尾,返回值为true,否则返回值为False<br>
Eof(常用)<br>
fuction Eof [(var F:Text)]:Boolean;//注意,若文件为空,Eof函数的返回值也是true</p>
<h1 id="p39文件系统3">P39文件系统3</h1>
<h2 id="记录型文件变量定义">记录型文件变量定义</h2>
<p>步骤一:定义记录类型<br>
type<br>
FishcOil:=record<br>
name:=String;<br>
rdate:Integer;//20111203<br>
sex:Char;//'M' or 'F'<br>
end;<br>
步骤二:定义记录文件类型的变量<br>
var<br>
记录文件类型变量名:记录文件类型;<br>
VFFishcOil:File of FishcOil<br>
AssignFile:关联记录文件变量与实际的磁盘文件<br>
Reset、Rewrite打开记录文件<br>
CloseFile关闭记录文件<br>
注意:不能使用Append打开记录文件,仅限于文本文件。关闭文件的操作对记录文件极为重要,否则可能破坏整个文件。<br>
Reset:打开记录型文件是读或写<br>
Rewrite:创建和写,若文件存在会把文件删除</p>
<h2 id="记录型文件的读写">记录型文件的读写</h2>
<p>Read(VFFishcOil,v1,v2);<br>
Read(VFFishcOil,v1);<br>
Read(VFFishcOil,v2);<br>
注意:用read读取记录,文件位置指针超过文件尾,将会发生运行时错误。因此读取数据时一般要对文件尾进行判断</p>
<p>Write(VFFishcOil,v1);<br>
Write(VFFishcOil,v2);<br>
或者Write(VFFishcOil,v1,v2);</p>
<h2 id="记录型文件的记录数">记录型文件的记录数</h2>
<p>每条记录都有一条编号。记录编号从0开始,最后一个记录的编号是N-1<br>
function FileSize(var F):Integer;//返回记录数</p>
<h2 id="移动与检测记录文件的文件指针">移动与检测记录文件的文件指针</h2>
<p>不管使用reset还是rewrite过程打开文件,文件指针都在文件首<br>
记录的随机存取是通过Seek过程和FilePos函数来实现<br>
procedure Seek(var F;N:Longint);//将文件指针指向文件尾<br>
function FilePos(var F):Longint;</p>
<h2 id="读取并修改记录">读取并修改记录</h2>
<p>读取与VFFishcOil文件型变量相关联的文件的第五条记录:<br>
Seek(VFFishcOil,4);<br>
Read(VFFishcOil,v1);</p>
<p>读取、修改并更新文件中记录:(不明白)<br>
Seek(VFFishcOil,1);<br>
Read(VFFishcOil,v1);<br>
v1.name:='小甲鱼';<br>
Seek(VFFishcOil,1);<br>
write(VFFishcOil,v1);若忘记第二次调用seek过程,结果将用更新后的信息覆盖第三条记录。</p><br><br>
来源:https://www.cnblogs.com/evanial/p/14924881.html
頁:
[1]