form-create

REST easy with kbmMW #14 – DB Controlled login

孤人 提交于 2021-01-31 05:00:31
介绍 关于如何使用授权和登录管理来构建应用服务器还存在一些问题,其中之一就是用户及其角色如何在在数据库中定义。该文将解释使用TkbmMWAuthorizationManager解决此问题的一种方法。有关其他的信息,可以参考前文 REST easy with kbmMW #4 – Access management 首先,我们应该有一些需要登录支持的服务器。 对于此示例,我选择了FishFact REST服务器。该服务器的实现可参考 kbmMW #12 – Fishfact demo using HTTP.sys transport . 添加安全登录 基于该服务器,我们将 TjkbmMWAuthorizationManager 添加 到主窗体(Unit1)。 然后我们需要确定如何从数据库中存储和访问用户信息。 由于此示例已使用ORM访问数据库,因此继续使用ORM实现用户管理。 让我们添加一个描述用户的类: [kbmMW_Table( ' name:user ' )] TUser = class private FID:kbmMWNullable < string > ; FName:kbmMWNullable < string > ; FPassword:kbmMWNullable < string > ; FRole:kbmMWNullable < string > ;

[转载]delphi实现音频捕捉与播放

拜拜、爱过 提交于 2021-01-28 04:02:00
delphi实现音频捕捉与播放 unit unit1; interface uses SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms, Dialogs, mmsystem, StdCtrls; const memBlockLength = 500; type Tmemblock = array[0..memblocklength] of byte; PmemBlock = ^TmemBlock; TForm1 = class(TForm) procedure FormCreate(Sender: TObject); procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); private { Private declarations } HwaveIn : PHWaveIn ; HWaveOut: PHWaveOut ; close_invoked, close_complete : boolean ; in_count, out_count : integer ; procedure MMOutDone(var msg:Tmessage);message MM_WOM_DONE; procedure

Delphi

浪子不回头ぞ 提交于 2021-01-25 05:07:15
Delphi 实现可执行程序的自动升级 准备工作: 1:Delphi调用TIdHTTP方式开发程序,生成程序打包外壳 说明:程序工程命名为ERP_Update 界面布局如下: 代码实现如下: 1 unit Unit1; 2 3 interface 4 5 uses 6 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 7 Dialogs, StdCtrls, ExtCtrls, 8 IdTCPConnection, SHELLAPI, ComCtrls, jpeg, IdHTTP, 9 IdTCPClient, IdBaseComponent, IdComponent, Registry; 10 11 type 12 TFrm_FTP = class (TForm) 13 Label4: TLabel; 14 IdHTTP1: TIdHTTP; 15 Image1: TImage; 16 ProgressBar1: TProgressBar; 17 Label1: TLabel; 18 procedure RUN_START; 19 procedure FormCreate(Sender: TObject); 20 procedure IdHTTP1Work(Sender:

使用kbmMW#1轻松实现REST

北城以北 提交于 2021-01-16 04:57:34
使用kbmMW很容易创建REST服务器。 首先,我们制作服务器应用程序(或服务......取决于您)。 在这种情况下,我们将添加一个简单的Form,为我们的kbmMW组件提供GUI和位置。 在Delphi中,单击 文件 - 新建 - VCL Forms应用程序 拖放以下两个组件到Form上: TkbmMWServer TkbmMWTCPIPIndyServerTransport 将 kbmMWTCPIPIndyServerTransport1 的Server属性设置 为 kbmMWServer1 。 双击 kbmMWTCPIPIndyServerTransport1 的 Bindings 属性 以打开其编辑器。 为0.0.0.0端口80添加绑定,这是默认的HTTP服务器端口。 您可以选择所需的任何端口其他绑定,但让要REST用户知道。 设置 kbmMWTCPIPIndyTransport1 属性 Streamformat为 REST 。 (译者注:这是必须的一步,表明服务端可以接收REST请求) 现在保存项目,然后双击Form,写OnCreate事件: procedure TForm7.FormCreate(Sender: TObject); begin kbmMWServer1.AutoRegisterServices; // 注册Rest服务 kbmMWServer1

Delphi Code Editor 之 基本操作

Deadly 提交于 2020-11-27 03:02:04
Delphi Code Editor 之 基本操作 毫无疑问,Delphi是高度可视化的。这是使用Delphi进行编程的最大好处之一。当然,任何一个有用的程序中都有大量手工编写的代码。当读者开始编写应用程序的UI部分后,可能会多花些事件来学习Delphi Code Editor。Code Editor有些特性,当大家知道后,一定会喜欢的。 我们将从四个方面进行介绍: 基本的编辑器操作(Basic Editor Operations) 专用编辑器特性(Specialized editor features) Code Editor快捷菜单(The Code Editor context menu) 修改编辑器选项(Changing the editor options) Note Delphi Code Editor允许用户从多种键盘映射配置:Default, IDE Classic, BRIEF,Epsilon,Visual Studio, Visual Basic等中选择一种。如下图,从【Tools | Editor Options…】中的“Key Mappings”中设置。我们默认选择“Default”映射。 编辑器基本操作 对于基本的输入、删除文本、用鼠标加亮显示文本,剪贴、复制、粘贴等等,此处不再介绍了。 Delphi Code Editor是一个典型的代码编辑器

oCam v515.0去广告方法和Reverse分析

╄→гoц情女王★ 提交于 2020-11-09 07:21:45
oCam为Delphi开发,未注册版的主界面下方会有广告,关闭主界面后会出现一个弹窗,这个弹窗要等待3秒才能关闭,关闭弹窗后又会在默认浏览器中打开他们的网站。如果直接用OllyDbg或者x32dbg打开oCam.exe,然后用F8单步执行,若不加任何断点,要不了几步就会提示“已停止,调试结束”,这是oCam刻意加入的反调试技术,可能和812C75处的CreateMutexW有关,我没有深入研究,采取另外一种方法绕过:直接启动oCam,然后用OllyDbg或x32dbg去附加,(使用x32dbg时要注意勾选 调试>高级>隐藏调试器(PEB),否则容易出现异常)。附加后,点击菜单>注册,电子邮箱和序列号随便填,比如都填1,点击“确定”会报“无效的邮件地址”,把邮箱地址改为1@x.com,再点“确定”就会报“无效用户名或注册码”,在报错的同时也会有系统提示音。这个提示音就是PoJie的起点。使用bp MessageBeep命令下断点,点击“确定”后观察栈的内容,可以找到来自79F8A3的调用。79F8A3下方不远处(79F8B2)又有对CreateMessageDialog的调用,说明79F8A3和79F8B2所在的函数79F838就是用来带提示音报错的,在IDA或x32dbg中查找对79F838的引用,发现只有两处引用,其中一处引用是_TfrmRegister_btnOKClick

delphi 判断点在多边形内

倾然丶 夕夏残阳落幕 提交于 2020-08-18 06:42:00
1 unit MainFM; 2 3 interface 4 5 uses 6 Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, 7 Vcl.Controls, Vcl.Forms, Vcl.Dialogs,utils_dvalue, utils_DValue_JSON, math; 8 9 type 10 PPos = ^TPos; 11 TPos = record 12 x: double; 13 y: double; 14 end ; 15 TForm1 = class (TForm) 16 procedure FormCreate(Sender: TObject); 17 procedure FormDestroy(Sender: TObject); 18 private 19 { Private declarations } 20 FInfo: TDValue; 21 min_x, min_y, max_x, max_y: Double; 22 function in _line(p, a, b: TPos):boolean; 23 function in _scope(x, y: double):boolean; 24

js中字符串型正则转化为真正的正则(坑真的大)

跟風遠走 提交于 2020-08-13 20:38:23
背景:最近在做对单表进行增删改查的动态表单,通过后端返回的JSON数据动态渲染,由于项目的技术栈是vue,我就选用了比较好用的动态表单生成器form-create( http://www.form-create.com/ ),最常见的有elementui和iview等版本。 具体要点,通过后端返回配置的正则对表单进行校验。如:后端返回了如下JSON,前端生成一个拥有手机号校验正则的文本框。 { type:"input", title:"手机号", field:"telephone", value:"", props: { "type": "text", "placeholder": "请输入手机号", "pattern":"/^1[3456789]\d{9}$/" } } 但是,form-create pattern字段中,所需格式是一个正则表达式,前端的正则表达式是一个object。后台返回来的是string。 根据下图实验可知,字符串类型的正则不能直接用于校验,则需要想办法转成真正的正则。 想法① 把左右两边的引号去掉不就好了吗?答:❌ 去掉两边引号还是个string啊。想法太片面了,pass 想法②,有没有什么方法可以转换?答:✅ 经查阅许久,发现eval()这个方法可以将字符串正则修改为真正的正则,如下改造: { type:"input", title:"手机号",

Delphi10.3的ListView学习(大图标)

佐手、 提交于 2020-08-09 14:24:43
万一的 Delphi 博客,基础学习ListView 使用 TListView 控件(1) 使用 TListView 控件(2) 使用 TListView 控件(3) 使用 TListView 控件(4) 这里强调一下ImageList是可以改图片尺寸的: 最大256*256 procedure TForm1.FormCreate(Sender: TObject); begin ImageList1.Width: = 256 ; // 1..256 ImageList1.Height:= 256 ; // 1..256 ListView1.LargeImages:=ImageList1; // 大图标 放在ImageList1,放在ImageList1 ListView1.ViewStyle := vsIcon; // 设成 大图标 模式 // 增加记录 with ListView1.Items.Add do begin Caption : = ' 111 ' ; ImageIndex: = 0 ; end ; with ListView1.Items.Add do begin Caption : = ' 222 ' ; ImageIndex: = 1 ; end ; end ; 单击某项Item的事件 procedure TForm1.ListView1Change(Sender

Delphi异步编程:匿名线程与匿名方法

强颜欢笑 提交于 2020-05-09 09:56:10
异步编程,是项目中非常有用的而且常用的一种方法,大多以线程实现。 而Delphi传统方法使用线程略为烦琐,好在其后续版本中,提供一些方法,简化一些操作。 几个概念: 匿名线程:TAnonymousThread,Delphi XE始支持。 匿名方法:reference to procedure|function,Delphi 2009 始支持。 匿名线程 其实只是创建一个线程,传入一匿名方法并执行,实现倒也简单,我就移其入Dephi 2009中。其实义如下: TAnonymousThread = class (TThread) private FProc: TProc; protected procedure Execute; override ; public constructor Create ( const AProc: TProc); end ; { TAnonymousThread } constructor TAnonymousThread. Create ( const AProc: TProc); begin inherited Create (True); FreeOnTerminate : = True; FProc : = AProc; end ; procedure TAnonymousThread.Execute; begin FProc(); end ;