10 2013 档案

摘要:unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, StdCtrls, Grids;type TForm1 = class(TForm) tv1: TTreeView; Button1: TButton; Button2: TButton; tv2: TTreeView; Button3: TButton; Button4: TButton; StringGrid... 阅读全文
posted @ 2013-10-28 00:16 GOD攀 阅读(1110) 评论(0) 推荐(0)
摘要:要点:1.代码备注的超级详细,如下:unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls;type TForm1 = class(TForm) lv1: TListView; Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; Button5: TButton; ... 阅读全文
posted @ 2013-10-27 20:36 GOD攀 阅读(1772) 评论(0) 推荐(0)
摘要:很想搞网络编程,Indy,Sockets,但是明显感觉到自己功力不够,源码都看不懂,慢慢来。。。不要太着急了。。。。浪费了1天时间。。。hold!! 阅读全文
posted @ 2013-10-27 16:23 GOD攀 阅读(129) 评论(0) 推荐(0)
摘要:要点:1.如果数组的范围缩小了,超出部分会被清除掉,非基本类型也不会调用析构函数(内存泄漏)program MyArray; //数组{$APPTYPE CONSOLE}uses SysUtils,Windows;{数组成员丢失}procedure MyFunc3();var arr:array of array of string;begin setlength(arr,2,3); arr[1,2]:='田攀QQ382477247'; Writeln(arr[1,2]); {田攀QQ382477247} setlength(arr,0,0); //缩小数组 setleng.. 阅读全文
posted @ 2013-10-27 01:56 GOD攀 阅读(278) 评论(0) 推荐(0)
摘要:要点:1.Ptr函数相当于Pointer,强制转换为指针2.CopyMemory是内存复制,把第二个参数,赋值到第一个后面program MyArray; //数组{$APPTYPE CONSOLE}uses SysUtils,Windows;{合并2个动态数组}procedure MyFunc2();var arr1,arr2: TBytes; len,LastAddr: Integer;begin{设置2个数组长度} SetLength(arr1, 3); SetLength(arr2, 3);{给2个数组赋值} arr1[0] := 65; arr1[1] := 66; ar... 阅读全文
posted @ 2013-10-27 01:30 GOD攀 阅读(1622) 评论(0) 推荐(0)
摘要:要点:1.TBytes和C++里面的数组一样,数组名就是数组的首地址。而array [..] of char 不是指针,需要用取地址符号读地址@2.要获取TBytes某个元素位置的指针, 应该是 @MyTByteArr[x]; 但随着数组的再分配, 这个地址是变化的3.SetLength设置数组长度4.Ord是取字符对应的数字program MyArray; //数组{$APPTYPE CONSOLE}uses SysUtils;{用指针读取数组某个元素}procedure MyFunc1();var i: Integer; p: PByte; MyTByteArr: TBytes;/... 阅读全文
posted @ 2013-10-27 01:13 GOD攀 阅读(1542) 评论(0) 推荐(0)
摘要:要点:1.在内层函数使用TList的时候,也需要Create创建2.使用完毕之后,要记得Free3.一个函数是可以写在另外一个函数里面的program MyPoint; //指针详解{$APPTYPE CONSOLE}uses SysUtils,windows,Generics.Collections ;{函数返回TList}procedure MyFunc11(); function TemFunc():TList; var MyList : TList; begin MyList := TList.Create; MyList.Add(3... 阅读全文
posted @ 2013-10-26 23:24 GOD攀 阅读(1050) 评论(0) 推荐(0)
摘要:要点:1.使用TList的时候,首先要用TList.Create初始化2.TList成员函数Add是增加一项,Count是获取项数3.函数里面用到了Var,来直接操作外层函数的TList。program MyPoint; //指针详解{$APPTYPE CONSOLE}uses SysUtils,windows,Generics.Collections ;{函数var参数TList}Procedure MyFunc10();{插入函数} procedure TemFunc(var TheList : TList); begin TheList.Add(1); ... 阅读全文
posted @ 2013-10-26 23:17 GOD攀 阅读(900) 评论(0) 推荐(0)
摘要:要点:1.给函数传入一个Var的数组变量,然后在函数里面设置数组长度,然后按需要返回。2.Low是取数组的下标最小的成员,High是取数的先最大的成员program MyPoint; //指针详解{$APPTYPE CONSOLE}uses SysUtils,windows,Generics.Collections ;type TArray = array of string;//字符串数组{函数返回数组}procedure MyFunc9();{功能函数} procedure MyArrFunc(var MyArr : TArray); var i : in... 阅读全文
posted @ 2013-10-26 23:13 GOD攀 阅读(2824) 评论(0) 推荐(0)
摘要:要点:1.其实链表,就是每个节点结构体里面多了2个指针,相当于这个节点的左手和右手,左手牵着上一个节点,右手牵着下一个节点。2.注意,需要单独弄个结构体,知道头节点和尾节点。然后头节点一直顺着右手,就可以找到尾节点,从而遍历所有的成员program MyPoint; //指针详解{$APPTYPE CONSOLE}uses SysUtils,windows,Generics.Collections ;{双向链表}procedure MyFunc8();type PNode = ^MyNode; //定义指针 MyNode = record //节点 Text: string;... 阅读全文
posted @ 2013-10-26 23:08 GOD攀 阅读(588) 评论(0) 推荐(0)
摘要:要点:1.我用的Delphi2010,每个Char占2个字节2.指针+1,是加了指针所对应的数据类型的大小的字节。Char型就是+2字节,Integer型就是+4字节。program MyPoint; //指针详解{$APPTYPE CONSOLE}uses SysUtils,windows,Generics.Collections ;{指针与string}procedure MyFunc7();//返回值var MyStr: string; MyPointStr: PChar;//字符串指针 I: Integer; ABC : Char;//测试一下Char的长度begin M... 阅读全文
posted @ 2013-10-26 22:52 GOD攀 阅读(512) 评论(0) 推荐(0)
摘要:要点:1.DLL用exports加函数名表示导出这个函数2.Assigned函数判断参数释放为nil,也就是是否存在3.LoadLibrary用来加载一个DLL文件,参数为完整路径(同一目录下,可只写DLL文件名)。使用完了,要记得用FreeLibrary关闭这个打开的句柄4.GetProcAddress判断dll中,是否存在某个导出的函数,返回值是这个函数的句柄。5.type PMyFunc = procedure (para : Integer); 表示定义了一个名字叫PMyFunc的过程,只有1个Integer型参数program MyPoint; //指针详解{$APPTYPE CO. 阅读全文
posted @ 2013-10-26 22:50 GOD攀 阅读(432) 评论(0) 推荐(0)
摘要:要点:1.数组名称要用@取地址才能作为地址, 与c++有点不同2.StrCopy函数是把第二个参数复制到第一个参数地址里面去3.StrCat函数是把第二个参数字符串内容,接到第一个参数地址后面program MyPoint; //指针详解{$APPTYPE CONSOLE}uses SysUtils,windows,Generics.Collections ;{指针和字符串}procedure MyFunc5();var str : array [1..50] of char; pstr : PChar; //Pchar 也就是 ^Charbegin StrCopy(@str, '田. 阅读全文
posted @ 2013-10-26 22:39 GOD攀 阅读(621) 评论(0) 推荐(0)
摘要:要点:1.GetMem函数是分配内存,第二个参数为分配内存的字节长度2.MyPoint1增加之后,如果需要释放MyPoint1数组,就必须在之前定义MyPoint2保存MyPoint1,用来FreeMem3.指针释放之后,内存残留的数据,如果没有被其他地方修改,还是可以读出来的!program MyPoint; //指针详解{$APPTYPE CONSOLE}uses SysUtils,windows,Generics.Collections ;{动态分配指针长度}procedure MyFunc4();var MyPoint1, MyPoint2 : ^integer;//2个指针 ... 阅读全文
posted @ 2013-10-26 22:35 GOD攀 阅读(450) 评论(0) 推荐(0)
摘要:要点:1.指针指向的内容的大小因数据类型的不同而不同,指针本事的大小,都是4字节2.sizeof函数是取形参所占的内存大小3.IntToHex是把整数型的值,转换为16进制的值,第二个参数是16进制的长度为多少位program MyPoint; //指针详解{$APPTYPE CONSOLE}uses SysUtils,windows,Generics.Collections ;{指针长度}procedure MyFunc3();var MyInt : Integer;//整数 MyPoint : PInteger; //定义指针 MyByte : Byte; MyPintByte... 阅读全文
posted @ 2013-10-26 22:31 GOD攀 阅读(787) 评论(0) 推荐(0)
摘要:效果图如下:要点:1.指针指向的地址或许不一样,也不管指针是多少级的指针,他们指针本身都是一样的,都可以用PInteger来强转换。2.多级指针取地址,要用多个^,比如二级指针,需要PInteger(MyPint2^)^来取值program MyPoint; //指针详解{$APPTYPE CONSOLE}uses SysUtils,windows,Generics.Collections ;{多级指针}procedure MyFunc2();var MyInt : Integer;//整数 MyPint1 : PInteger; //1级指针 MyPint2 : ^Integer;... 阅读全文
posted @ 2013-10-26 22:26 GOD攀 阅读(376) 评论(0) 推荐(0)
摘要:效果图如下:要点:1.指针的2中定义方法 PInteger 和 ^Integer2.取地址符号 @ 和 Addr函数3.取内容符号 ^ ,比如MyPointInt1^则是取MyPointInt1指针所指向的内容了。program MyPoint; //指针详解{$APPTYPE CONSOLE}uses SysUtils,windows,Generics.Collections ;{指针的定义和取值}procedure MyFunc1();var MyInt : Integer;//整数 MyPointInt1 : PInteger;//指针定义1 MyPointInt2 : ^In... 阅读全文
posted @ 2013-10-26 22:14 GOD攀 阅读(1080) 评论(0) 推荐(0)