随笔分类 - 软件开发:Delphi
摘要://ShowMessage:begin ShowMessage('提示内容'); {标题默认工程名, 如: Proect1} Application.Title := '警告'; {如果修改工程标题...} ShowMessage('提示内容'); {标题是'警告'} ShowMessage('第一行' + #13#10 + '第二行'); {提示信息换行} ShowMessage('第一行'#13'第二行'); {也可以}end;//InputBox:var s:
阅读全文
摘要:Resource可以是任意文件(图像、声音、office都可以),直接打包到编译的exe文件中,调用也非常方便打开一个新的或已有的delphi工程1.先在 Project->resources..添加一个图片,并更改名字为myfirst,类型为RT_RCDATA2.在窗体上方一个image和button3.button代码如下procedure TForm2.Button1Click(Sender: TObject);var rs: TResourceStream; jp: TJPEGImage;begin rs := TResourceStream.Create(HInstance,
阅读全文
摘要:今天在测试delphi2010的DBExpress读取mysql数据库功能的时候,发现了一个问题:我的mysql是5.1版本,字符集全部设置为utf8,使用delphi2010读取intger、tinyint、char、varchar等类型,中文显示正常。但是当读取text类型字段时候,出现乱码。如果将该字段更换为varchar,内容显示正常。这就奇怪了,我百思不得其解。接着,我到网上查询这个问题,发现也有朋友出现类似text类型乱码的问题,但是都没有解决答案(我的character_set_*设置正确,这一点肯定是没问题的)。我又查询了一下mysql手册,针对TEXT字段解释如下:“BLOB
阅读全文
摘要:Delphi中的容器类作者 陈省 从Delphi 5开始VCL中增加了一个新的Contnrs单元,单元中定义了8个新的类,全部都是基于标准的TList 类。 TList 类 TList 类实际上就是一个可以存储指针的容器类,提供了一系列的方法和属性来添加,删除,重排,定位,存取和排序容器中的类,它是基于数组的机制来实现的容器,比较类似于C++中的Vector和Java中的ArrayList,TList 经常用来保存一组对象列表,基于数组实现的机制使得用下标存取容器中的对象非常快,但是随着容器中的对象的增多,插入和删除对象速度会直线下降,因此不适合频繁添加和删除对象的应用场景。下...
阅读全文
摘要:在DLL中封装了Form时使用了Devexpress控件.在程序运行时,主Exe程序可以显示使用的皮肤。可是,调用DLL中的窗口时无法显示皮肤的样式。还是原始的Windows窗口样式。方法:在dll窗体中加入skincontrol控件,然后uses ..., dxGDIPlusAPI,然后在窗体代码文件的后面加入下列代码initialization dxInitializeGDIPlus;finalization dxFinalizeGDIPlus;这样就OK了
阅读全文
摘要:DataSnap 2009的服务器对象的生命周期依赖于DSServerClass组件的设置当DSServer启动时从DSServerClass组件读取LifeCycle属性的值注意:LifeCycle的值由于在启动时就已经读取 启动后再修改LifeCycle的值将没有任何效果LifeCycle属性的值可以是以下三种字符串之一1.Session该选项为默认设置每个连接都会建立一个独立的服务器对象为客户端提供服务,服务器对象在连接关闭后释放因此多个客户端访问的是不同的服务器对象,是线程安全的2.Invocation对于每次服务端方法调用建立一个独立的服务器对象为客户端提供服务,服务器对象在调用结束
阅读全文
摘要:在过去客户端要调用远程服务器的方法需要通过在TLB里添加接口并且在服务器对象中实现在DataSnap 2009中调用远程服务器的方法是基于delphi的RTTI机制的想要一个类允许被远程调用需要做以下两点1.把该类和DSServerClass连接在一起procedure TMainForm.DSServerClassGetClass(DSServerClass: TDSServerClass; var PersistentClass: TPersistentClass);begin PersistentClass := TSM;end;DSServerClass的OnGetClass就是用..
阅读全文
摘要:Delphi 的MIDAS出来了这么多年终于有改进的版本了COM-FREE的DataSnap 2009真是清爽了很多DataSnap 2009 除了不支持回调和Intercept组件以外 其它的该有的都有了 而且还有很多强大的特性第一篇就先写点DataSnap 2009连接方面可能要用到的东西以后再继续写写关于生命周期的管理 对象池的应用 以及远程管理 远程方法调用等方面的东西吧。首先 建立个DataSnap 2009的服务器工程一共用到三个组件DSServer 服务配置组件 用于绑定其它的组件DSServerClass 可以看作是一个类的工厂 用于导出需要远程调用的服务端模块DSTCPSer
阅读全文
摘要:DataSnap 2009的客户端采用了原始的TClientSocket组件实现了通讯层 即简单效率也不错但是如果我们想要设置连接超时怎么办?想要设置代理服务器又该怎么办呢?能不能利用我们常用的网络控件(indy ics synapse...)来替代呢?在这里我基于synapse控件实现了一个自己的DataSnap客户端驱动注: synapase是一套比较不错的开源的第三方控件 这里我们要使用它的TCP控件来扩展支持代理服务器的使用 synapse 官方网址 http://www.synapse.ararat.cz/doku.phpsynapse svn地址 https://synali...
阅读全文
摘要:DataSnap服务器可以通过方法调用向客户端返回数据流,当然,也可以从客户端向服务器上传数据流,都是通过方法调用的方式来实现的。下面以一个简单的例子来演示。服务器端实现:{$METHODINFO ON} TFUService = class(TPersistent) public function ReplaceFile(FileName: string; FileStream: TStream): Integer; function GetFile(schema, FileName: string): TStream; end;{$METHODINFO OFF}//GetFile方法向客户
阅读全文
摘要:如果DataSnap服务器方法的执行时间比较长,这时候可能需要在客户端用进度条显示当前服务器方法的执行进度。要实现这种需求,现在可以利用DataSnap的回调功能,此功能是从Delphi 2010版本开始被引入的。要实现回调,服务器方法需要暴露给客户端一个或多个类型为TDBXCallback的参数。例如:...{$METHODINFO ON} TServerMethods1 = class(TComponent) private { Private declarations } public { Public declarations } function LongTimeRunFunc(In
阅读全文
摘要:之前说到中间层通过向客户端暴露方法的方式提供服务,实现数据库数据的读取和更新。方法调用的方式,其潜在的意义,就是说中间层不保存客户端状态信息,就像WEB服务一样,客户端需要自己保存自己的状态信息。进一步说,就是中间层具体提供方法的业务对象实例,不是也不应该专属于某个客户端,它应该能够为不同的客户端调用提供服务。如果我们把业务对象实例放到对象池中集中存放,调用方法时随用随取,方法结束即放回池中。这样就可以实现业务对象实例服务于不同的客户端调用请求。更重要的是,利用对象池,能够最大化服务器各种资源的使用效率,而且对客户端的响应也更快了,因为业务对象实例早就创建好了,取来即用。其实,DataSnap
阅读全文
摘要:有时候安装一些组件以后会出现: [Fatal Error] Project1.dpr(1): Unit not found: 'System.pas' or binary equivalents (DCU,DPU) 的错误,不知道什么原因,刚开始只有重装Delphi才解决问题,后来察看Borland官方网站得知,其实只是环境库路径丢失造成的,解决方法很简单,如果你D7安装默认的路径,则只需要打开Delphi菜单,选择Tools->Environment Options然后选择Library标签,在Library Path添加如下内容就行了: ---------------
阅读全文
摘要:In this second Delphi Conference 2010 Brazil video, Daniele Teti from Italy explain the Android architecture and how to connect Android applications with Delphi DataSnap Servers, take some time and watch/download this presentation, you will learn a great content and see how open is DataSnap.
阅读全文
摘要:SN:3AAD-DCS8KK-RNN4SD-HA2S安装完成后,覆盖bds.exe和bds.dll即可下载地址:Delphi(C++Builder)XE2破解.rar最新破解更新(Update 3):http://download.csdn.net/detail/maxwoods/4041876
阅读全文
摘要:关于SSDT Hook的理论知识就不多说了。简单的说一下Delphi开发KMD的一些需要注意的地方...这里使用DDDK---有点自己修改过的痕迹不过区别不大...自己可以看代码1.KeServiceDescriptorTable是一个很特殊的函数...如果直接使用implib来进行创建库的话你会发现这个函数是被忽略的...因为偏移为0所以这个函数基本上只能起到标志作用没有任何实用价值....一些代码中出现了代码:function SystemService(AFunc:Pointer):PLONG;beginResult:=PLONG(Cardinal(KeServiceDescriptor
阅读全文
摘要:Delphi(Pascal) code var sqlStr:String;begin sqlStr:= ' begin ' sqlStr:= sqlStr+ 'update table1 set col1 = ''test'' where 1=2;'; sqlStr:= sqlStr+ 'update table1 set col1 = ''test2'' where 1=2;'; sqlStr:= sqlStr+ ' end '; adoquery1.Close;
阅读全文
摘要:function FileCopy(SourceFile,TargetFile : string;ProgressBar :TRzProgressStatus ) : boolean;//function FileCopy(SourceFile,TargetFile : string;ProgressBar :TProgressBar ) : boolean;var getStream,setStream: TFileStream; num, n: Integer; buf: PByte; BufSize,block: Integer;begin result := false; if not
阅读全文
摘要:delphi调用cmd的两种方法vars:string;begins:='cmd.exe /c '+edit1.Text+' >c:\1.txt';winexec(pchar(s),sw_hide);sleep(2000);memo1.Lines.LoadFromFile('c:\1.txt');2shellexecute(handle,nil,'cmd.exe',pchar(form2.edit1.text),nil,sw_hide);WinExec主要运行EXE文件。如:WinExec(’Notepad.exe Read
阅读全文
摘要:Delphi中获取路径的函数 //********获取当前路径***************GetCurrentDir() //获取当前的Windows打开的目录,无斜'\'extractFilepath(application.exeName); //获取某个程序的目录,有斜'\'ExtractFilePath(ParamStr(0)); //获取当前运行文件的目录,有斜'\' ExtractFileDir(Application.Exename); //获取某个程序的目录,无斜'\'ExtractFileName('C
阅读全文
浙公网安备 33010602011771号