<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[loloopop的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/loloopop</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; loloopop]]></copyright><item><title><![CDATA[Synopse mORMot框架样例学习-05 - Report created from code]]></title><link>https://blog.youkuaiyun.com/loloopop/article/details/102851631</link><guid>https://blog.youkuaiyun.com/loloopop/article/details/102851631</guid><author>loloopop</author><pubDate>Fri, 01 Nov 2019 10:46:24 +0800</pubDate><description><![CDATA[例01-例04主要讲了ORM操作相关的基本知识,例05说的是报表,我们写东西最终的目的是要展示,从例05的名字就可以看出来,本例是要为我们展示报表,暂且把它翻译成源码级的报表吧(用代码创建报表).这个例子有3个工程文件,SynPdfFormCanvas\SynPdfLayers\TestSQLite3Pages,逐个学习.

1.SynPdfFormCanvas

这个只有工程源码,我们先运行一下...]]></description><category></category></item><item><title><![CDATA[delphi中的val方法]]></title><link>https://blog.youkuaiyun.com/loloopop/article/details/102696640</link><guid>https://blog.youkuaiyun.com/loloopop/article/details/102696640</guid><author>loloopop</author><pubDate>Wed, 23 Oct 2019 10:29:29 +0800</pubDate><description><![CDATA[system.val方法:
  功能:转换一个字符串为数字
  Val(string(s), Result, code);
  s:要转换的字符串
  Result:存放转换后的数字
  code:存放转换出错的字符索引
  如果字符串完全转换成功,代表没有出错,code=0
  如果字符串不完全是由数字和点组成的,则转换到第一个出错的字符索引位置(从1开始计数...]]></description><category></category></item><item><title><![CDATA[Synopse mORMot框架样例学习04 - HTTP Client-Server]]></title><link>https://blog.youkuaiyun.com/loloopop/article/details/102681237</link><guid>https://blog.youkuaiyun.com/loloopop/article/details/102681237</guid><author>loloopop</author><pubDate>Tue, 22 Oct 2019 19:57:50 +0800</pubDate><description><![CDATA[例04展示的是HTTP客户端/服务器的数据库应用.这个示例里边有4个工程,Project04Client.dpr和Project04Server.dpr是一组客户端/服务端数据库示例,这个和例03基本差不多,区别是例04应用的是HTTP协议(例03应用的是命名管道),客户端和服务器通过约定的端口进行通讯,并且例04的主单元Unit2.pas中数据库初始化的时候加上了用户验证表的创建:


DB :...]]></description><category></category></item><item><title><![CDATA[Synopse mORMot框架样例学习03 - NamedPipe Client-Server]]></title><link>https://blog.youkuaiyun.com/loloopop/article/details/102628175</link><guid>https://blog.youkuaiyun.com/loloopop/article/details/102628175</guid><author>loloopop</author><pubDate>Fri, 18 Oct 2019 17:32:57 +0800</pubDate><description><![CDATA[前边的例01和例02分别展示了静态服务器及嵌入式SQLite3服务器的实现方法,例03是命名管道客户端-服务器,例01中用JSON文件存储数据(按我的理解,每一个SQLRecord就是一个表格,在存储的时候多个表格应该需要多个JSON文件取存储),例02中使用SQLite3数据库存储,只需要一个.db3数据库文件就能存放所有的SQLRecord(表格),例03中实现了客户端-服务器的通讯,客户端的...]]></description><category></category></item><item><title><![CDATA[Synopse mORMot框架样例学习02 - Embedded SQLite3 ORM]]></title><link>https://blog.youkuaiyun.com/loloopop/article/details/102613507</link><guid>https://blog.youkuaiyun.com/loloopop/article/details/102613507</guid><author>loloopop</author><pubDate>Thu, 17 Oct 2019 22:14:58 +0800</pubDate><description><![CDATA[通过样例01,学习到了数据单元的定义方法,静态服务器的创建方式,以及ORM的基本使用方法,现在来看看样例02 - Embedded SQLite3 ORM,同样从字面意思猜测它应该是介绍嵌入式SQLite3数据库的ORM方法.

通过例02的源码,可以发现只有Project02.dpr工程文件源码,并没有pas单元文件,在例01里边简单做过说明,是因为例02共用01的所有单元,所以看到的项目管理界...]]></description><category></category></item><item><title><![CDATA[Synopse mORMot框架样例学习-01 In Memory ORM]]></title><link>https://blog.youkuaiyun.com/loloopop/article/details/102593436</link><guid>https://blog.youkuaiyun.com/loloopop/article/details/102593436</guid><author>loloopop</author><pubDate>Wed, 16 Oct 2019 21:16:08 +0800</pubDate><description><![CDATA[Synopse MORMot框架是一个开源的客户端-服务器框架,目前没有看到汉化的文档说明,其实也可以理解,毕竟面对现在这个时代,还在坚持使用Delphi开发的估计也不是太多,更多开发框架和RAD工具让人眼花缭乱,我们甚至不用"知其然且知其所以然"就能开发出一个应用,出于对delhi的热爱,准备把这个框架撸一下.

按照作者的说明,该框架实现了客户端-服务器的SOA/ORM/MVC,可用于开发适应...]]></description><category></category></item><item><title><![CDATA[将博客搬至优快云]]></title><link>https://blog.youkuaiyun.com/loloopop/article/details/102848729</link><guid>https://blog.youkuaiyun.com/loloopop/article/details/102848729</guid><author>loloopop</author><pubDate>Wed, 16 Oct 2019 19:54:00 +0800</pubDate><description><![CDATA[博客已搬家到csdn,请到csdn访问.
]]></description><category></category></item><item><title><![CDATA[(1)第1章对程序错误的处理]]></title><link>https://blog.youkuaiyun.com/loloopop/article/details/102848724</link><guid>https://blog.youkuaiyun.com/loloopop/article/details/102848724</guid><author>loloopop</author><pubDate>Sun, 15 Oct 2017 17:06:00 +0800</pubDate><description><![CDATA[[将书上的摘抄一些,便于自己理解] 1. 既然是写程序,就不能避免错误,了解windows的错误处理是debug的必修课,也就是通过错误处理和返回我们能够知道编写的函数运行成还是失败,按照书上所说,微软编译了一个所有可能的错误代码的列表，并且为每个错误代码分配了一个3 2位的号码。 G e t L a s t E r r o r函数： DWORD GetLastError(); //返回...]]></description><category></category></item><item><title><![CDATA[JAVASCRIPT对象]]></title><link>https://blog.youkuaiyun.com/loloopop/article/details/102848726</link><guid>https://blog.youkuaiyun.com/loloopop/article/details/102848726</guid><author>loloopop</author><pubDate>Sat, 11 Mar 2017 15:04:00 +0800</pubDate><description><![CDATA[越是学习就感觉自己知道的东西越来越少,这是一个必然的过程,再次将知识综合回顾一下.


&lt;!DOCTYPE html&gt;
&lt;html lang="en"&gt;
    &lt;head&gt;
        &lt;meta charset="UTF-8"&gt;
        &lt;title&gt;TESTJAVASCRIPT&lt;/title&gt;
    &lt...]]></description><category></category></item><item><title><![CDATA[关于HTML5的理解]]></title><link>https://blog.youkuaiyun.com/loloopop/article/details/102848722</link><guid>https://blog.youkuaiyun.com/loloopop/article/details/102848722</guid><author>loloopop</author><pubDate>Sat, 11 Mar 2017 14:52:00 +0800</pubDate><description><![CDATA[铺天盖地的HTML5刷新了我们的眼球,新技术的应用也越来越让我们眼花缭乱,对于HTML5,个人是这样理解的:

1.HTML5包含了以往的HTML标记语法,并优化,也许Xhtml也应该算在里边.

2.HTML5开始,HTML不再有6或着7,从5开始就有了一个相对稳定的规范,虽然现在标准还在改变.

3.可以粗略的认为,HTML5=HTML+CSS+JAVASCRIPT,至少现阶段可以这么认为i....]]></description><category></category></item><item><title><![CDATA[子界类型]]></title><link>https://blog.youkuaiyun.com/loloopop/article/details/102848719</link><guid>https://blog.youkuaiyun.com/loloopop/article/details/102848719</guid><author>loloopop</author><pubDate>Wed, 08 Mar 2017 22:32:00 +0800</pubDate><description><![CDATA[program subrange;

{$APPTYPE CONSOLE}

var
  age: 0..100;

begin
  age := 101;{会提示出错}
  Write(age);

  readln;
end.

子界类型用作输入的范围判断很不错,可以减少语句判断的代码量,暂时还不了解子界对内存的占用如何,等学到内存处理了再说.
...]]></description><category></category></item><item><title><![CDATA[字符串查找替换]]></title><link>https://blog.youkuaiyun.com/loloopop/article/details/102848717</link><guid>https://blog.youkuaiyun.com/loloopop/article/details/102848717</guid><author>loloopop</author><pubDate>Wed, 08 Mar 2017 21:48:00 +0800</pubDate><description><![CDATA[program recursion;

{$APPTYPE CONSOLE}
var
  sourcestr, searchstr, replacestr: string;
  i: Integer;

begin
  Write('源字符串:');
  Readln(sourcestr);
  Write('查找字符串:');
  Readln(searchstr);
  Write('替换字...]]></description><category></category></item><item><title><![CDATA[pascal字符串类型]]></title><link>https://blog.youkuaiyun.com/loloopop/article/details/102848712</link><guid>https://blog.youkuaiyun.com/loloopop/article/details/102848712</guid><author>loloopop</author><pubDate>Wed, 08 Mar 2017 20:39:00 +0800</pubDate><description><![CDATA[program arrtest;

{$APPTYPE CONSOLE}
var
  name: string;
  i: Integer;

begin
  {读入一个字符串并输出,下标从1开始}
  Readln(name);
  {Ord(name[0]) free pascal的写法,字符串第一个元素存放其长度}
  {length(name) object pascal的写法,需要计算...]]></description><category></category></item><item><title><![CDATA[二维数组]]></title><link>https://blog.youkuaiyun.com/loloopop/article/details/102848708</link><guid>https://blog.youkuaiyun.com/loloopop/article/details/102848708</guid><author>loloopop</author><pubDate>Wed, 08 Mar 2017 19:10:00 +0800</pubDate><description><![CDATA[program arrtest;

{$APPTYPE CONSOLE}
type
  matrix = array[1..5, 1..4] of Integer;

var
  a: matrix;
  i, j: Integer;

begin
  //数组赋值，按矩阵格式输出
  for I := 1 to 5 do
    for j := 1 to 4 do
    begin
   ...]]></description><category></category></item><item><title><![CDATA[DELPHI版传奇引擎学习菜鸟篇(applem2)-06]]></title><link>https://blog.youkuaiyun.com/loloopop/article/details/102848706</link><guid>https://blog.youkuaiyun.com/loloopop/article/details/102848706</guid><author>loloopop</author><pubDate>Sat, 26 Dec 2015 00:00:00 +0800</pubDate><description><![CDATA[引擎源代码的学习暂时放下了几天,因为需要掌握一些进程处理方面的消息,之前在GAMECENTER中的启动服务过程好好琢磨了一下,将服务启动过程单独拿出来,原先是用主界面的过程判断处理启动,好长的代码,终于提炼出来了一个通用启动过程,停止服务的过程和这个是类似的.


{运行外部程序的函数}
function RunProgram(var ProgramInfo: TProgram; sHandle:...]]></description><category></category></item><item><title><![CDATA[关于FindComponent的使用,简化一些过程]]></title><link>https://blog.youkuaiyun.com/loloopop/article/details/102848703</link><guid>https://blog.youkuaiyun.com/loloopop/article/details/102848703</guid><author>loloopop</author><pubDate>Thu, 24 Dec 2015 19:17:00 +0800</pubDate><description><![CDATA[在游戏配置过程中有一些较长的过程,例如下边判断输入端口合法性的:


{如果较少,还可以挨个判断}
procedure TfrmMain.ButtonNext3Click(Sender: TObject);
var
  nPort: Integer;
begin
  nPort := StrToIntDef(Trim(EditSelGate_GatePort.Text), -1);
  if (n...]]></description><category></category></item><item><title><![CDATA[关于引擎控制台的改进想法]]></title><link>https://blog.youkuaiyun.com/loloopop/article/details/102848700</link><guid>https://blog.youkuaiyun.com/loloopop/article/details/102848700</guid><author>loloopop</author><pubDate>Sun, 20 Dec 2015 22:51:00 +0800</pubDate><description><![CDATA[引擎控制台集成了许多设置处理事件,庞大的单元结构容易让思路不是很清晰,加上引用文件的定义,或多或少会让维护带来不变,在学习的过程中,将它重写一遍,不用第三方控件,实现的思路大概如下:

将操作界面适当扩大,后续按照标签增加服务端的脚本设置功能,所有涉及文本操作和线程监控的都写到一个程序里边,初步的服务端界面已经基本完成,实现的功能:
1.设置服务启动选项,去掉checkbox,原来大概有30多个,...]]></description><category></category></item><item><title><![CDATA[DELPHI版传奇引擎学习菜鸟篇(applem2)-05]]></title><link>https://blog.youkuaiyun.com/loloopop/article/details/102848698</link><guid>https://blog.youkuaiyun.com/loloopop/article/details/102848698</guid><author>loloopop</author><pubDate>Sat, 19 Dec 2015 12:42:00 +0800</pubDate><description><![CDATA[1-4是大概把GAMECENTER过了一遍,终于把消息机制入了一点门,接下来是服务端第一个服务的学习--DBServer.是一个数据库服务器,在学习这个单元的时候,发现了这个端的大概由来,不知道是哪个大牛反编译后重写的,看来之前我理解的是错误的,代码杂乱的原因不是没有考虑到正题设计,这是由DEDEDARK反编译的端,根据自己的经验补写的实现代码,不知道我这辈子能不能达到这样的水平,那得需要对汇编多...]]></description><category></category></item><item><title><![CDATA[学习win32API-消息处理]]></title><link>https://blog.youkuaiyun.com/loloopop/article/details/102848696</link><guid>https://blog.youkuaiyun.com/loloopop/article/details/102848696</guid><author>loloopop</author><pubDate>Thu, 17 Dec 2015 21:45:00 +0800</pubDate><description><![CDATA[消息队列与消息循环(摘自win32API参考)

delphi通过TApplication对象自动对消息进行处理,每一个线程都有自己的消息队列,通过TApplication.ProcessMessages方法实现程序的消息循环:


{Forms}
procedure TApplication.ProcessMessages;
var
  Msg: TMsg;
begin
  while Proc...]]></description><category></category></item><item><title><![CDATA[DELPHI版传奇引擎学习菜鸟篇(applem2)-04]]></title><link>https://blog.youkuaiyun.com/loloopop/article/details/102848695</link><guid>https://blog.youkuaiyun.com/loloopop/article/details/102848695</guid><author>loloopop</author><pubDate>Wed, 16 Dec 2015 18:51:00 +0800</pubDate><description><![CDATA[接着学习,从学习的过程中,我发现了这个引擎控制台的主要功能,这也是一行一行代码敲进去的结果,之前我对这个单元的功能了解的还是少,不知不觉中就发现了它主要实现的功能,对里边的代码理解也进了一步.

从我的理解它大概有如下功能:

a.实现整个服务端的启动配置.

b.进行数据更新,这里指的是对数据库(人物\物品\怪物…)的更新.

c.服务端初始化(清理数据和M2的变量复位)

d.启动所有服务并监...]]></description><category></category></item></channel></rss>