关于delphi:Delphi-Format-格式化数字

Format('x=%d', [12]); //'x=12' //最一般Format('x=%3d', [12]); //'x= 12' //指定宽度Format('x=%f', [12.0]); //'x=12.00' //浮点数Format('x=%.3f', [12.0]); //'x=12.000' //指定小数Format('x=%.*f', [5, 12.0]); //'x=12.00000' //动静配置Format('x=%.5d', [12]); //'x=00012' //后面补充0Format('x=%.5x', [12]); //'x=0000C' //十六进制Format('x=%1:d%0:d', [12, 13]); //'x=1312' //应用索引Format('x=%p', [nil]); //'x=00000000' //指针Format('x=%1.1e', [12.0]); //'x=1.2E+001' //迷信记数法Format('x=%%', []); //'x=%' //失去"%"S := Format('%s%d', [S, I]); //S := S + StrToInt(I); //连贯字符串\ function Format(const Format: string; const Args: array of const): string; Format字符串阐明: "%" [index ":"] ["-"] [width] ["." prec] type (1) 格式化字符串必须以%结尾 (2) [index ":"] 索引指的是Args参数列表中要显示的每一项的序号。比方:Args是 ...

July 10, 2023 · 1 min · jiezi

关于delphi:Pascal基础语法一

Pascal根底语法(一)序言有时无聊,翻看pascal,奈何看完即忘.于是记录之pascal据说将被NOIP停用,我没有去验证.管他呢,原本只是好奇 环境用的收费的编译器 fpc [https://www.freepascal.org/] 编辑器轻易找个本人喜爱的就行, IDE 能够选 lazarus[https://www.lazarus-ide.org/],跨平台 pascal版本有更迭,反对的方言很多,基于目前的最佳实际,所有代码里应用 ${mode objfpc } {$H+}{$J-}{$I+}{$R+}{$H+} 开启AnsiString {$J-} const常量不可批改 {$I+} i/o谬误检测 {$R+} 开启越界查看注: {$mode objfpc}也可改为{$mode delphi}此编译指令须要写在uses之前pascal不辨别大小写,习惯使然,则采纳和C#相似的编码标准 正文pascal的正文有多种可选,前两种反对多行,最初一行是单行正文,pascal的正文容许嵌套,然而tp和delphi不反对,为了可移植,倡议正文不要嵌套 (* some comments *){ some comments }// some comments关键字(保留字)语言内置的具备非凡含意的标识符,关键字列表如下 absolute and array asm begin case const constructor destructor div do downto else end file for function goto if implementation in inherited inline interface label mod nil not object of operator or packed procedure program record reintroduce repeat self set shl shr string then to type unit until uses var while with xor as class dispinterface except exports finalization finally initialization inline is library on out packed property raise resourcestring threadvar try 失常状况写不能定义和关键字一样的标识符.有时必须为之(比方调用了c语言开发的dll)则能够在后面加上&符号 ...

January 13, 2022 · 3 min · jiezi

关于delphi:delphi-xe10-IdHTTPServer1问题

IdHTTPServer1激活胜利后,客户端连贯胜利,长连贯,当初有个问题要求教各位大侠:我在其余性能外面须要向这个这些客户端发送信息,请问行不行?该怎么做呢?就像serversocket一样,依据ip地址找到对应的连贯,而后发送,不晓得IdHTTPServer1能够不呢[url]https://www.douban.com/doulis...[/url][url]https://m.douban.com/doulist/...[/url][url]https://book.douban.com/douli...[/url][url]https://movie.douban.com/doul...[/url][url]https://www.douban.com/doulis...[/url][url]https://m.douban.com/doulist/...[/url][url]https://book.douban.com/douli...[/url][url]https://movie.douban.com/doul...[/url][url]https://www.douban.com/doulis...[/url][url]https://m.douban.com/doulist/...[/url][url]https://book.douban.com/douli...[/url][url]https://movie.douban.com/doul...[/url][url]https://www.douban.com/doulis...[/url][url]https://m.douban.com/doulist/...[/url][url]https://book.douban.com/douli...[/url][url]https://movie.douban.com/doul...[/url][url]https://www.douban.com/doulis...[/url][url]https://m.douban.com/doulist/...[/url][url]https://book.douban.com/douli...[/url][url]https://movie.douban.com/doul...[/url][url]https://www.douban.com/doulis...[/url][url]https://m.douban.com/doulist/...[/url][url]https://book.douban.com/douli...[/url][url]https://movie.douban.com/doul...[/url][url]https://www.douban.com/doulis...[/url][url]https://m.douban.com/doulist/...[/url][url]https://book.douban.com/douli...[/url][url]https://movie.douban.com/doul...[/url][url]https://www.douban.com/doulis...[/url][url]https://m.douban.com/doulist/...[/url]

February 18, 2021 · 1 min · jiezi

关于delphi:网络通信感觉就差一点点

这是网上下载的代码,性能是可用的,通信没有问题。我要实现的成果是:客户端获取服务端每个Edit里的内容。[url]https://www.douban.com/doulis...[/url][url]https://m.douban.com/doulist/...[/url][url]https://book.douban.com/douli...[/url][url]https://movie.douban.com/doul...[/url][url]https://www.douban.com/doulis...[/url][url]https://m.douban.com/doulist/...[/url][url]https://book.douban.com/douli...[/url][url]https://movie.douban.com/doul...[/url][url]https://www.douban.com/doulis...[/url][url]https://m.douban.com/doulist/...[/url][url]https://book.douban.com/douli...[/url][url]https://movie.douban.com/doul...[/url][url]https://www.douban.com/doulis...[/url][url]https://m.douban.com/doulist/...[/url][url]https://book.douban.com/douli...[/url][url]https://movie.douban.com/doul...[/url][url]https://www.douban.com/doulis...[/url][url]https://m.douban.com/doulist/...[/url][url]https://book.douban.com/douli...[/url][url]https://movie.douban.com/doul...[/url][url]https://www.douban.com/doulis...[/url][url]https://m.douban.com/doulist/...[/url][url]https://book.douban.com/douli...[/url][url]https://movie.douban.com/doul...[/url][url]https://www.douban.com/doulis...[/url][url]https://m.douban.com/doulist/...[/url][url]https://book.douban.com/douli...[/url][url]https://movie.douban.com/doul...[/url][url]https://www.douban.com/doulis...[/url][url]https://m.douban.com/doulist/...[/url]

February 18, 2021 · 1 min · jiezi

关于delphi:Delphi-的-LiveBinding-小结

 上一篇咱们演示了如何绑定一个对象,这是十分有用的, 不爽的的是在设计期间不能晓得对象有几个属性(FisrtName, LastName, Age在设计期间都看不见), 为了解决这个问题咱们应用TDataGeneratorAdapter控件 一、拖入一个TDataGeneratorAdapter控件并点击Add Field 二、设计实现后连贯StringGrid与TDataGeneratorAdapter绑定 到些设计曾经实现,但咱们依然配置OnCreateAdapter事件 咱们在DataGeneratorAdapter创立的字段匹配TPerson类 如果咱们运行程序会通过 DataGeneratorAdapter通过TObjectBindSourceAdapter 替换成 AdapterBindSource, 如果咱们不须要这个事件, AdapterBindSource会应用DataGeneratorAdapter也能够运行 NOTE: 1.DataGeneratorAdapter相似DataSet 能够编辑、提交、保留 2.当须要一个DataSet时能够应用DataGeneratorAdapter ; "复制代码") MyPeople : TObjectList<TPerson>; procedure TForm1.AdapterBindSource1CreateAdapter(Sender: TObject; var ABindSourceAdapter: TBindSourceAdapter); begin MyPeople := TObjectList<TPerson>.Create(); MyPeople.Add(TPerson.Create('Fred', 'Flintstone', 40));MyPeople.Add(TPerson.Create('Wilma', 'Flintstone', 41));MyPeople.Add(TPerson.Create('Barney', 'Rubble', 40));MyPeople.Add(TPerson.Create('Betty', 'Rubble', 39));ABindSourceAdapter := TListBindSourceAdapter<TPerson>.Create(Self, MyPeople, True); end;; "复制代码")

January 27, 2021 · 1 min · jiezi

关于delphi:Delphi随程序发布BDE

Delphi程序员都晓得,在数据库利用程序开发实现后,要公布程序须要同时公布BDE(Borland Database Engine),否则会引起谬误“A Error occurred while attempingto initilize Borland Database Engine(Error $2109)”。当感觉程序太大而辛辛苦苦精简本人的程序到称心时,却发现BDE管理程序器须要9M之巨,不禁感到丧气,真有点本人的致力被糟践的感觉。不过也不用太丧气,只有肯尝试,还是有方法来精简BDE的。首先来看看BDE目录中的文件,所有文件的确有近9M大吧。不过有些可能是用不到的,要害文件的作用可参见Bde32.HLP中“Introduction to Borland Database Engine”下的“Core BDE Files”,其中列出了BDE的要害文件及其作用,能够以此作为根据来尝试精简BDE驱动程序。上面是各个文件的作用:一、不可短少的文件Blw32.dll:语言驱动函数库。Idapi32.dll:BDE根本函数库。Fareast.bll、Usa.bll:远东语言及美国语言驱动程序,对中文软件不可短少。Idr20009.dll:谬误信息库。二、数据库驱动程序(依据须要抉择一个或多个)Idasci32.dll:Ascii文本数据库驱动程序函数库,如果不必Ascii文本数据库,能够不要。Iddao32.dll:Access数据库驱动程序函数库,如果不必Access数据库,能够不要。Iddbas32.dll:dBase数据库驱动程序函数库,如果不必dBase数据库,能够不要。Idodbc32.dll:ODBC数据库驱动程序函数库,如果不必ODBC数据库,能够不要。Idpdx32.dll:Paradox数据库驱动程序函数库,如果不必Paradox数据库,能够不要。三、其它驱动程序和配置文件(依据须要抉择一个或多个)Idbat32.dll:批操作驱动程序函数库,如果不必TBatchMove控件或DbiBatchMove类函数,能够不要。Iddr32.dll:Data Repository驱动程序函数库,如果不必Data Repository性能,能够不要。Idprov32.dll:BDE DataSet provide驱动程序函数库,如果不必TProvider控件,能够不要。Idqbe32.dll:QBE驱动程序函数库,如果不必Query By Example,能够不要。Idsql32.dll:SQL查问驱动程序函数库,如果不必TQuery进行查问,能够不要。Idapi32.cfg:BDE配置文件,如果程序中没有特殊要求,能够不要。也能够在BDE管理器中设置正确后再散发。四、其它文件(个别不必)BDE32.HLP、BDE32.CNT:BDE帮助文件,能够不要。BdeAdmin.exe、BdeAdmin.HLP、BdeAdmin.CNT:BDE管理器及帮助文件,如果不会产生要求软件用户本人配置BDE的状况时,能够不要。其它*.BLL:其它国家和地区的语言驱动程序,能够不要。DataBump.EXE、DataBump.HLP、DataBump.CNT:数据库数据转移工具及帮助文件,能够不要。Localsql.HLP、Localsql.CNT:SQL查问语句帮助文件,能够不要。Sqllnk32.HLP、Sqllnk32.CNT:SQL连贯帮助文件,能够不要。在依据须要抉择文件后,还要写注册表文件。这个应该不成问题,能够手工设置,但最好在程序中设置,在发现注册表中没有相应键值时写入,用TRegFile对象用不了几行代码的。须要设置的注册表键值有(在调用数据库操作前须要有正确的键值存在):数据驱动程序所在目录的设置:HKEY_LOCAL_MACHINESoftwareBorlandDatabase EngineDLLPATH(字符串值)语言驱动程序所在目录的设置:HKEY_LOCAL_MACHINESoftware BorlandBLW32BLAPIPATH(字符串值)语言驱动程序文件名:HKEY_LOCAL_MACHINE SoftwareBorlandBLW32LOCALE_LIB#(字符串值) 其中#为编号,按程序为0、1、2、3......如: HKEY_LOCAL_MACHINESoftwareBorland\BLW32LOCALE_LIB0="fareasst.bll" HKEY_LOCAL_MACHINESoftwareBorlandBLW32LOCALE_LIB1="usa.bll"就这些了,按此方法即可无效缩小BDE驱动程序的大小,例如只用TTable控件操作Paradox数据库,则只有Idapi32.dll、Blw32.dll、Idr20009.dll、Fareast.bll、Usa.bll、Idpdx32.dll六个文件即可。这些文件可放在任何一个目录,只有在注册表指明即可。OK,BDE由9M多减到不到2M,ZIP一下就700多K了,比原来的利用零碎缩小了不少吧。

January 26, 2021 · 1 min · jiezi

关于delphi:ZMQ-指南第六章-ZMQ绑定Delphi版

ZMQ绑定Delphi版这是一份ZMQ绑定。测试环境Delphi7,BDS2006,FPC 2.6.0(目前仅Window)。 概述程序包中含有一个dll的wrapper(zmq.pas),和一个高层API(zmqapi.pas)。 它应该可能工作于 ZMQ 2.2.0,和 3.2.0rc1(实验性)。要应用 v3.2 的 dll,在zmq.inc中定义zmq3({$define zmq3})。dll来自于官网发行版。 应用你应该应用高层API,那会节俭你大量工夫,而且附带成果是代码也将更容易浏览。 首先,你应该创立一个上下文 context := TZMQContext.Create; 有很多种套接字类型,参见指南,每种都有一个常量。要创立例如一个REP套接字,这么写: socket := context.Socket( stRep ); // 绑定套接字socket.bind( 'tcp://*:5555' ); // 连贯套接字socket.connect( 'tcp://localhost:5555' ); API中有很多中办法来发送音讯。你能够发送单份,或多份音讯,阻塞或非阻塞(v3中称为dontwait不期待)模式。 // 阻塞模式(默认)发送一个字符串就像这么简略:socket.send( 'Hello' ); // 或者用非阻塞模式socket.send( 'Hello', [rsfNoBlock] );// 这种状况下如果音讯无奈入队则将抛出一个EZMQException异样,// 异样类型为EAGAIN。 // 从stream发送数据(别忘了设置stream的地位到读取地位)socket.send( stream, size ); // 发送多段音讯。// 多个字符串:socket.send( ['Hello','World'] ); // 这等同于:socket.send( 'Hello', [rsfSndMore] );socket.send( 'World' ); // 或者应用TStrings。tsl := TStringList.Create;tsl.Add( 'Hello' );tsl.Add( 'World' );socket.send( tsl );tsl.Free; ...

January 22, 2021 · 2 min · jiezi

关于delphi:Pascal游戏开发入门二渲染图片

Pascal游戏开发入门(二):渲染图片渲染动态图片新增一个Texture,而后Render进去创立Texture,并获取尺寸 procedure TGame.Init(title: string; x, y, h, w, flags: integer);begin ..... pt := IMG_LoadTexture(pr, 'assets/run.png'); SDL_QueryTexture(pt, nil, nil, @srcRect.w, @srcRect.h); destRect.x := srcRect.x; destRect.y := srcRect.y; destRect.w := srcRect.w; destRect.h := srcRect.h; ......end; 渲染进去 procedure TGame.Render();begin SDL_SetRenderDrawColor(pr, 238, 238, 238, 255); SDL_RenderClear(pr); SDL_RenderCopy(pr, pt, @srcRect, @destRect); SDL_RenderPresent(pr);end; 渲染动画渲染动画就就疾速交替渲染多张图片 procedure TGame.Update();begin srcRect.x := 96 * (round(SDL_GetTicks() / 100) mod 8);end;动画反转本例中,如果人物须要朝相同方向行走,不必再搞一套素材 SDL_RenderCopyEx(pr, pt, @srcRect, @destRect,0, nil, SDL_FLIP_HORIZONTAL);代码整顿代码滋味 Texture有多个,不能简略的应用变量。要有一个Texture容器渲染时的Rect要和Texture的Render在一起避免错乱新增一个TextureManager来对立的治理Texture,并解决以上两个问题 ...

November 19, 2020 · 1 min · jiezi

关于delphi:Pascal游戏开发入门一概览

前言乱弹常见的游戏开发有c/c++(Unreal), C#(Unity)等, Pascal语言的也有(https://wiki.freepascal.org/G...。对于pascal的劣势,网上都说时易于教学,能够造就良好的程序习惯云云,我只是听之而已。如果说最初须要c++,为什么一开始就面对呢,非要用pascal绕一圈,得失相当的。以上仅是个人观点 为什么有这系列文章在Pascal根底系列文章第一篇我曾写到闲的无聊,学习一下pascal, 目前也是如此。如果为了学习游戏开发,疾速上手天然要用Unreal或者Unity。 从根底做起,预计要学习图形学之类的常识。然而我是闲情偶记(记录的记) 本系列关注于2D Code,不关注游戏性(关卡设计等)以及游戏相干资源(字体,美术,音乐音效等)的创立 环境图形库抉择Pascal是跨平台的,如果要写的程序也要跨平台,可能须要应用OpenGL(相比Vulkan能够反对更多的旧设施)好一些。然而为了偷懒,决定应用SDL2。长处如下 应用宽泛, 材料泛滥上手简略,跨平台编辑器: lazarus 平台: ubuntu18.04装置sdl2sudo apt install libsdl2-dev libsdl2-gfx-dev libsdl2-image-dev libsdl2-mixer-dev libsdl2-net-dev libsdl2-ttf-dev 装置lazarussudo apt install lazarus make sdl2的pascal语言绑定https://github.com/ev1313/Pascal-SDL-2-Headers下载后间接蕴含到我的项目中即可 概览开始之前须要理解游戏的大体的运行机制 graph TDA(初始化) --> B[获取输出]-->C[物理计算]-->D[渲染]-->E(完结)D --> B局部平台的markdown不反对flowchart........... 这就是游戏的根本框架,看起来很简略. 第一个示例创立一个窗口,5秒后会主动敞开 Program test01;{$mode objfpc}{$H+}Uses SysUtils,sdl2;Var pw : PSDL_Window; pr : PSDL_Renderer;Begin // init SDL_Init(SDL_INIT_VIDEO); If SDL_WasInit(SDL_INIT_VIDEO)<>0 Then writeln('video init'); pw := SDL_CreateWindow('Hello',SDL_WINDOWPOS_CENTERED,SDL_WINDOWPOS_CENTERED,800,450, SDL_WINDOW_SHOWN); pr := SDL_CreateRenderer(pw,-1,0); // render SDL_SetRenderDrawColor(pr,0,0,0,255); SDL_RenderClear(pr); SDL_RenderPresent(pr); SDL_Delay(5000); // clean SDL_DestroyWindow(pw); SDL_DestroyRenderer(pr); SDL_Quit();End.接下来退出输出局部(临时疏忽物理计算) ...

November 17, 2020 · 1 min · jiezi

关于delphi:关于delphi-循环

最大的作用就是缩小假死。比方当你执行一个很大的循环语句,这时候程序始终在执行这个循环,那么程序始终在聚精会神的执行,就给人的感觉是程序死了,但实际上没有。如果你加上Application.ProcessMessages就会在执行循环的时候有空去做别的事(能够点击其它的按钮什么的)。 application.ProcessMessages的次要作用使程序在循环时可能相应外界事件。个别状况下,程序在循环的时候不响应外界事件。直到循环完结为止能力承受和响应外界事件。application.ProcessMessages能够无效的解决循环循环的独占问题,可能临时中断应用程序的执行。比方,你要设计一个计算,这个计算须要循环10000次。当循环开始到500次的时候,用户忽然不想计算上来了,它想勾销这个计算,这时候你就能够设置一个cancel按钮,而后在循环体外部适合的地位application.ProcessMessages。来解决cancel按钮的信息,中断循环。如果你在循环体内没有application.ProcessMessages这句。当循环开始后,程序就被10000次的这个循环独占了,直到循环完结为止。在循环的期间,用户的按什么按钮都没有用。

November 15, 2020 · 1 min · jiezi