赞
踩
1.设计程序整体框架—
1.思考程序运行流程:
a.客户机启动后连接服务器。关机时退出。——需要网络通信
b.既然需要网络通信,所以需要通信协议。
c.所有客户的数据需要存储在数据库中,需要数据库及权限。
2.思考代码架构和可能用到的知识:
a.易语言基础知识。{变量,数据类型转换,数组……}
b.TCP通信相关。{其他支持库的使用,收发协议写法的完善,
子程序指针动态调用命令,链表的使用,多线程处理数据。}
c.数据库相关。{模块功能的完善,长文本数据的格式化}
d.编写代码以及写法知识和注意事项。
f.程序调试,写日志信息。
3.界面的设计:
a.简单的办法:加一个皮肤模块,调用皮肤命令。
b.使用图片来装饰窗口。
c.使用自绘。
2.细化模块流程—
1.细化程序的功能、模块
数据库模块:管理将数据写入数据库中。
大文本处理方法:取文本、格式化文本、命令。
注意事项:注意写法权限的正确性,***注意可能存在的风险。(sql漏洞)
2.TCP连接相关功能
选择TCP连接的方式:客户端服务器、网络通讯支持库、远程服务支持库。
3.协议流程的编写
传统的方法是:每次数据到达,都分解出当前的参数,判断协议类型是什么。但是这样做,如果在类型非常多时,就要添加很多的注释,非常麻烦。
所以想一下有没有简单高效的方法。能做到,手动添加,然后依次匹配……然后执行对应的方法……
3.开始完整编写数据库模块—
1.应用的知识点
模块的编写与调用;自定义数据类型的使用;线程许可证的使用;
数据库的创建设计与连接。
使用Mysql数据库操作支持库。
检查每一个参数,一些其他情况的思考…
1.回顾自定义数据类型:
自定义数据是指将一些具有特定意义的变量联合起来,变为一个新类型。例如:矩形(表示一个长方形),点(表示x,y两点)
2查看带有自定义数据类型的DLL命令:
昨天介绍的:GetWindowRect,GetVersionEx
这些对应的数据类型都可以在API伴侣中直接查到。
3.如何计算一个自定义数据类型的长度?
将自定义数据类型中的每一项都相加起来,得到的总和就是数据类型的总长度。
4.为什么需要自定义数据类型的长度?
由于有些API在使用自定义数据类型时,需要传递一个长度来确定实际的长度,所以有时需要额外传递一个长度,这么做主要是为了兼容不同的系统版本。
1.子程序指针:
子程序指针表示一个子程序的内存地址,或者说子程序的第一句代码。
2.如何通过子程序指针调用子程序:
a.调用子程序,特殊功能支持库命令。
b.Call,传说的Call,用来调用子程序的。但通常是一个叫法,实际调用还是推荐使用第一种。
3.子程序地址和整数型转换:
为什么子程序指针可以直接转换为整数型,或者可以直接通用?
通过“取数据类型尺寸”来验证。
4.将子程序指针传递给API或其他命令
3.显式调用DLL—
1.什么是显式调用?什么是隐式调用?:
a.隐式调用API:直接将API的库文件名,命令名,参数,返回值写在DLL命令表中,这种固定的方式称之为隐式调用。
b.显式调用API:通过API命令来调用API命令。
需要用到的API命令:LoadLibrary,GetProcAddress,FreeLibrary。
三个命令来调用API,由于该过程是动态的,所以称之为显式。
*揭秘:为何易语言第一次调用GetLastError会错误。
2.查看所有DLL中所有的导出命令:
可以直接通过工具:depends来查看。
3.了解什么是“vc20xx”运行库:
这些都是一些dll文件,里面封装了一些新功能,可以直接调用这些dll中间的公开API。
1.认识API:
API的全称是:应用程序编程接口。API可以看做是一些由系统提供的命令,这些命令可以让我们不接触系统底层就直接进行程序编写。
API不单单只是局限于Windows,其他系统,乃至网页都可以有API。
2.在易语言中声明(API)DLL命令。
3.在易语言中调用API命令并返回值。
回忆之前介绍过的API:
事件对象,信号量,原子锁。。。
a.库文件名:动态库或静态库的文件名。
如果不指定,系统将默认在Windows系统的基本API库中搜寻指定命令。
b.在库中对应命令名:该命令在DLL库中的文件名。默认接受stdcall调用方式,如果是cecel则需要@开头。
c.DLL命令的参数:类型、传址、数组。
1.查找API:
a.通过工具查找API命令:
{
易API伴侣:功能全面,包含API多,部分API有例程参考。
API助手:包含API少,显示更加直观。
msdn: 微软官方文档,权威,说明详细。需要英文阅读能力。
}
b.通过搜索引擎搜索和查看API命令。
2.使用API流程:
a.看文档:需要注意三点。
看命令名,看命令用途,看命令参数。
b.测试命令:将找到的命令先在普通的程序中进行测试。确定无误后再使用到实际代码中。
3.分析发现错误:
使用“取最后错误”来获取API命令执行后的错误。
是一种面向连接的、可靠的、基于字节流的传输层通信协议。
面向连接:发送数据之前需要先进行连接。
可靠的:因为有连接所以可靠。
字节流:可以直接收发基于字节的信息(可以直接发字节集)。
了解,tcp http udp
官网:https://www.mysql.com/
select (列名) from (表名) 基础查询语句,查询指定表中的信息。
where (列名) = (值) 筛选语句,查询符合条件的条目。
多个条件查询使用 AND 或者 OR 进行连接。
模糊匹配:
LIKE 进行模糊匹配。可以使用%作为通配符。
order by (列名) [desc] 对结果进行排序。默认为升序。
如果需要降序排序,则输入desc即可。
安装问题:安装完之后,重新设置配置文件进行配置
C:\Program Files\MySQL\MySQL Server 5.5\bin\MySQLInstanceConfig.exe
Navicat for MySQL下载 :http://wosn.net/821.html
索引,图片保存
数据存储与Sqlite3的介绍
http://www.runoob.com/sqlite/sqlite-installation.html
DateBase数据库管理设计
Sqlite3数据库支持库
重要性:事务处理
数据库排错
JSON 是存储和交换文本信息的语法。类似 XML。
对比:JSON 比 XML 更小、更快,更易解析。
类_JSON
解析JSON时需要注意的问题:
a.正确的解析数组及其成员。
b.对于特殊的键的解法。键名是一个数字?使用[]中括号
JSON.取所有属性名(),来获取所有的键值名。
使用JSON.成员数()来枚举所有的数组成员。
识XML的基本语法:
具体可以参看:http://www.w3school.com.cn/xml/xml_tree.asp
json.解析(数据)
json.取通用属性(数据1[0].数据2)
JSON.置成员 (, , 真) //加入对象
xml.导入(数据)
xml.取节点值(“节点名”,节点值)
两者都有利有弊,需要根据选择使用。
进行取文本时,标识符尽量唯一,如果不能唯一,要保证顺序,
避免因为重复而导致的错误。
将不需要使用且不影响匹配的空字符删除,例如:换行符、制表符(字符(9))
注意:转义符 后面紧接着需要转义的符号。例如:+
如何取出子匹配文本的结果?
使用“取子匹配文本”并填入对应的子匹配索引即可。
注意:这个子匹配索引不要和普通的匹配索引弄混。
a.在程序执行时输出提示:输出调试文本、调试输出。
b.在程序执行到关键点是中断:暂停、断点、条件断点。
c.在程序暂停时,查看当前的各种变量信息——变量表。
d.在程序暂停时查看程序的调用过程——调用表。
公开给其他程序调用
和主程序放一个文件夹
windows dll手册参考
模块封装好参考
将一系列功能性的代码封装到一个dll中,其他程序都可以调用。
动态链接库和模块有什么区别?
a.动态链接库是二进制文件。
b.动态链接库可以被其他语言/程序调用。
如何使用动态链接库?
在程序中引用动态链接库:程序数据=》新Dll命令=》填写命令。
4.如何编写dll及注意事项:
编写dll与编写模块方法相同。
注意事项:
dll中的参数只能使用基本数据类型,且不能是字节集。
1.数据如何存在内存中:
数据拥有类型,根据不同的类型,以不同的长度存储在内存中。
2.系统如何取到这些数据?
数据存在内存中后,会有一个地址,通过地址来找到对应数据。
3.操作数据时应该注意的:
a.确定地址存在。
b.确定地址处的内存里有数据。
c.确定数据类型相符。
4.区分变量地址与变量数据地址:
变量地址:指的是该变量在内存中的地址。
变量数据地址:指的是该变量中数据在内存中的地址。
1.申请内存:
告诉计算机,申请出一块内存,申请后,我们可以直接向内存中写
入数据。
申请之后,返回的就是内存地址。
2.写入数据:
内存申请好后,就可以直接向内存中写入数据了,数据可以是任何
形式或者格式的。前提是内存长度足够容纳。
3.读取数据:
一般可以根据写入内存的数据类型来进行适当的操作。
例如:指针到文本,指针到整数,指针到字节集……等。
4.释放内存:
一个程序的内存是有限的,对于不再使用了的内存,需要将内存删除。也就是要释放内存。
5.什么是缓冲区:
就是一块内存,可以被读写的。
6.如何调用API函数:
GetWindowTextA?这样需要传递一个缓冲区的函数?
1.分割文本命令的使用:
命令解释:将指定文本进行分割,返回分割后的一维文本数组。
2.超级列表框的使用:
a.超级列表框具有“报表”模式,可以显示详细的行列数据。
b.超级列表框分为行与列。横的是行,也称表项。纵的是列。
c.超级列表框的插入表项。
d.超级列表框取标题,取现行选中项。
3.目录中文件的枚举:
a.通配符的使用。
b.多次使用查找文件命令。
4.dll的编写与调用:
a.一般dll的编写。
b.声明一个dll调用。
c.使用“DLL命令调用转向”来调用dll。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。