mormot.core.threads.pas unit
mormot.core.threads.pas unit 中文翻译
Purpose: Framework Core Multi-Threading Support
- this unit is a part of the Open Source Synopse mORMot framework 2, licensed under a MPL/GPL/LGPL three license - see LICENSE.md
目的:框架核心多线程支持
本单元是开源Synopse mORMot框架2的一部分,根据MPL/GPL/LGPL ...
mORMot and Open Source friends SynProject Tutorial (SynProject教程)
mORMot and Open Source friends SynProject Tutorial--(SynProject 教程)
第一步
本页介绍SynProject的一些典型用法。
我们将为mORMot框架本身创建一个源代码存储库和相关的文档。
您要求文档,我们将通过SynProject自动生成它!
我们需要什么
因此,我们在硬盘上的D:\Dev\Lib文件夹中拥有所有mORMot框架源代码文件(主单 ...
SynProject 介绍---(synopse理解的版本控制和文档自动化生成)
SynProject 介绍---(synopse理解的版本控制和文档自动化生成)
Synopse SynProject是一个用于Delphi项目的源代码版本控制和自动化文档生成的开源应用程序。它在GPL许可下发布。
有关其全部功能的完整列表,请参阅SynProject功能。
源代码可从本源代码存储库获取。请选择上方的“文件”按钮,并查看SynProject文件夹。
另 ...
Modern Pascal is Still in the Race (Modern Pascal 仍在竞赛中)
Modern Pascal 仍在竞赛中
作者:Arnaud Bouchez,2022年11月26日。永久链接
Pascal 编程
博客
集合
跨平台
数据库
Delphi
FPC
垃圾回收器
泛型
Go
优秀实践
元编程
mORMot
mORMot2
性能
RTTI
Rust
最近在Lazarus/FPC 论坛上的一项民意调查突显了一个事实:Pascal 程序员比其他大多数程序员年龄都大。通常来说,到了我们 ...
Safe locks for multi-thread applications(多线程应用程序的安全锁)
Safe locks for multi-thread applications(多线程应用程序的安全锁)
由AB4327-GANDI,2016年1月9日。永久链接
开源 › mORMot框架
博客
临界区
Delphi
良好实践
mORMot
多线程
一旦你的应用程序是多线程的,就应该保护并发数据访问。我们已经写过关于调试多线程应用程序可能很困难的文章。
否则,可能会出现“竞态条件 ...
Three Locks To Rule Them All(三把锁统治一切)
Three Locks To Rule Them All(三把锁统治一切)
【英文原文】
为了确保线程安全,特别是在服务器端,我们通常使用临界区(critical sections)或锁(locks)来保护代码。在最近的Delphi版本中,我们引入了TMonitor特性,但我更倾向于信任操作系统提供的锁机制,这些锁是通过Windows临界区或POSIX futex/mutex来实现的。
...
End Of Live OpenSSL 1.1 vs Slow OpenSSL 3.0
End Of Live OpenSSL 1.1 vs Slow OpenSSL 3.0
【英文原文】
你可能已经注意到,OpenSSL 1.1.1 系列将于下周一(2024 年 5 月 27 日)达到寿命终止(EOL)……
最明智的选择是尽快切换到 3.0 或 3.1 版本。
当然,我们的 mORMot 2 OpenSSL 单元在 1.1 和 3.x 分支上运行,并在运行时自适应每个分支之间存在的各种 API 不兼 ...
IDocList/IDocDict JSON for Delphi and FPC
IDocList/IDocDict JSON for Delphi and FPC
【英文原文】
多年来,我们的开源 mORMot 框架提供了多种方法来处理在运行时定义的数组/对象文档的任意组合,例如通过 JSON,具有许多功能和非常高的性能。
我们的 TDocVariant自定义变体类型是处理这类无模式数据的一种强大方式,但一些用户觉得它有些令人困惑。
因此,我们围 ...
Delphi TMSMQTT使用笔记
服务端用的是 mosquitto ,下载地址https://mosquitto.org/download/
安装完成后需要配置
找到安装目录:mosquitto.conf,打开后修改 allow_anonymous false(禁止匿名登录),password_file D:\Program Files\mosquitto\pwfile.example(密码存放位置)
创建新用户,安装目录下执行 mosquitto_passwd ...
delphi安卓动态权限申请
delphi安卓动态权限申请
安卓8及以上版本,除了原来的静态权限申请以外,还需要动态权限申请。
delphi10.3开始支持安卓动态权限申请。
delphi11开始官方改变了安卓动态权限申请的参数类型,导致原来编写的代码,编码报错。
下面的代码,可以很好地解决权限问题。兼顾了delphi10.3和delphi11以后版本。
{sensor 2022-07-12 ...
Quick Library 简介
QuickLib 是一个快速开发库
QuickLib是一个快速开发库,它提供了诸如AutoMapper、LinQ、IOC依赖注入、MemoryCache、计划任务、Json和Yml配置、序列化程序等多种功能。这个库特别支持Delphi和Firemonkey的多平台开发,包括Windows、Linux、Android、OSX和IOS。同时,QuickLib也支持freepascal,使得开发人员能够更轻松地构建 ...
delphi ORM和泛型模板实现CRUD
delphi ORM和泛型模板实现CRUD
1)定义数据模型(data-model)
数据模型是ORM数据序列/还原所必需的。
TTable<T: record> = record //1个表
rows: TArray<T>; //表的行
end;
TTable2<T, T2: record> = record //2个表
table1: TTable<T>; //表1
table2: TTable<T2>; ...
Delphi提高开发效率之GExperts专家的使用说明
GExperts是一组通过扩展集成开发环境(IDE)来提高Delphi和C++ Builer程序员工作效率的工具。是一款开源的IDE扩展专家,由于去外网下载GExperts非常的麻烦,这里直接提供了Delphi7和Delphi11.1下的GExperts安装包,并连带最新源码一起打包,方便大家使用学习。下面直接看他具有哪些功能,留下实用的功能,去掉非必要的功能 ...
Delphi TDictionary字典类
TDictionary 是一个开放哈希表,支持泛型,并提供了以下常用属性和方法:
属性:
Count:返回字典中元素的数量。Keys:返回字典中所有键所组成的动态数组。Values:返回字典中所有值所组成的动态数组。
方法:
Add:向字典中添加一个键和其对应的值。Clear:清空字典中的所有元素。ContainsKey:判断字典中是否包含指定的键 ...
delphi Byte 与 字符串(AnsiString、WideString) 相互转换
Byte 与 字符串(AnsiString、WideString) 相互转换
代码
String转Byte
procedure TForm1.Button1Click(Sender: TObject);
var
buf: TBytes;
I: Integer;
begin
//ANSI编码
buf := BytesOf('测试内容');
Memo1.Lines.Add('ANSI编码');
for I := 0 to Length(buf) - 1 do
Memo1.Lines.Add(buf.ToString);
...
Delphi 实现刘谦春晚魔术
看了博友的C# 实现刘谦春晚魔术很好,改成了delphi版的。
1 program Project1;
2
3 {$APPTYPE CONSOLE}
4 {$R *.res}
5
6 uses
7 System.SysUtils,
8 System.Classes;
9
10 var
11 list, removeElement: TStringList;
12 i, NameCount, insertIndex, directCount, sexCount: Intege ...
delphi GUID相关操作
GUID相关操作
代码
procedure TForm1.Button1Click(Sender: TObject);
var
GUID1, GUID2: TGUID;
begin
//创建GUID
if CreateGUID(GUID1) <> 0 then
Memo1.Lines.Add('创建失败');
//转换为字符串
Memo1.Lines.Add(GUIDToString(GUID1));
//分段输出
Memo1.Lines.Add(Format('D1 %x', [GUID1.D1]));
M ...
delphi 里 多用TArray 而不是 array of
今天写代码发现个bug,是delphi 编译器 核心层面的:
unit ddx.att;
interface
uses System.Generics.Collections, System.Rtti;
type
xstring = string;
InstanceName = class(TCustomAttribute)
private
Fvalue: array of string;
public
constructor Create(AValue: array of string);
end;
im ...
Delphi Animation
AnimateFloat 是 Delphi 中用于创建简单动画效果的一个函数,它可以让你平滑地改变控件的属性值,例如位置、大小、透明度等。通过指定起始值和目标值,以及动画持续时间,AnimateFloat 函数可以实现属性值的过渡动画效果。
下面是 AnimateFloat 函数的语法:
procedure AnimateFloat(const AObject: TObject; const ...
delphi的bpl、dcp 、dcu
BPL 英文全称 Borland Package library ,是一种特殊的DLL文件,用于代码重用和减少可执行文件。编译bpl时,仅需要添加相应功能的pas文件,如果有窗体,则需要添加dfm文件。既然是DLL文件,那就是在运行时所需要的文件。BPL相当于C++中的DLL
DCP 英文全称:delphi co ...