Delphi源程序格式书写规范

2023-05-16

1.规范简介
本规范主要规定Delphi源程序在书写过程中所应遵循的规则及注意事项。编写该规范的目的是使公司软件开发人员的源代码书写习惯保持一致。这样做可以使每一个组员都可以理解其它组员的代码,以便于源代码的二次开发记忆系统的维护。
2.一般格式规范
2.1缩进
缩进就是在当源程序的级改变时为增加可读性而露出的两个空格。缩进的规则为每一级缩进两个空格。不准许使用Tab。因为Tab会因为用户所作的设置不同而产生不同的效果。当遇到begin 或进入判断、循环、异常处理、with语句、记录类型声明、类声明等的时侯增加一级, 当遇到end或退出判断、循环、异常处理、with语句、记录类型声明、类声明等的时侯减少一级。例如:
if TmpInt <> 100 then
  TmpInt := 100;
2.2 Begin..End
begin语句和end语句在源程序中要独占一行,例如:
for I := 0 to 10 do begin //不正确的用法
end;
for I := 0 to 10 do        //正确的用法
begin
end;
2.3空格
在操作符及逻辑判断符号的两端添加空格,例如:I := I + 1;,a and b 等,但添加括号时不需要空格。例如:if ( a > b ) then  //错误的用法
If (a > b) then //正确的用法
又例如:procedure Test(Param1: integer; Param3: string);
3. Object Pascal语法书写格式规范
3.1保留字
Object Pascal 语言的保留字或关键词应全部使用小写字母。
3.2过程和函数
3.2.1命名及格式
过程和函数的名称应全部使用有意义的单词组成,并且所有单词的第一个字母应该使用大写字母。例如:
procedure formatharddisk;//不正确的命名
procedure FormatHardDisk;//正确的命名
设置变量内容的过程和函数,应使用Set作为前缀,例如:
procedure SetUserName;
读取变量内容的过程和函数,应使用Get作为前缀,例如:
function GetUserName: string;
3.2.2 过程和函数的参数
3.2.2.1命名
统一类型的参数写在同一句中:
procedure Foo(Param1, Param2, Param3: Integer; Param4: string);
3.2.2.2命名
所有参数必须是有意义的;并且当参数名称和其它属性名称重了的时候,加一个前缀‘A’, 例如:
procedure SomeProc(AUserName: string; AUserAge: integer);
3.2.2.3命名冲突
当使用的两个unit中包括一个重名的函数或过程时, 那幺当你引用这一函数或过程时,将执行在use 子句中后声明的那个unit中的函数或过程。为了避免这种‘uses-clause-dependent’需要在引用函数或过程时,写完整函数或过程的出处。例如:
SysUtils.FindClose(SR);
Windows.FindClose(Handle);
3.3 变量
3.3.1 变量命名及格式
首先所有变量必须起有意义的名字,使其它组员可以很容易读懂变量所代表的意义,变量命名可以采用同义的英文命名,可使用几个英文单词,但每一单词的首字母必须大写。例如:
var
  WriteFormat::string;
同时对于一些特定类型可采用一定的简写如下:
指针类型
 P
 
纪录类型
 Rec
 
数组类型
 Arr
 

 Class
 
循环控制变量通常使用单一的字符如:i, j, 或 k。 另外使用一个有意义的名字例如:UserIndex ,也是准许的。
3.3.2 局部变量
在过程中使用局部变量遵循所有其它变量的命名规则。
3.3.3 全局变量
尽量不使用全局变量,如必须使用全局变量则必须加前缀‘g’,同时应在变量名称中体现变量的类型。例如:
  gprecUserCount: point;//名称为UserCount的全局变量,其类型为指向一结构的指针
但是在模块内部可以使用全局变量。所有模块内全局变量必须用‘F’为前缀。如果几个模块之间需要进行资料交换,则需要通过声明属性的方法来实现。例如:
type
  TFormOverdraftReturn = class(TForm)
  private
{ Private declarations }
FuserName: string;
FuserCount: Integer;
Procedure SetUserName(Value: string);
Function GetUserName: string;
  public
{ Public declarations }
property UserName: string read GetUserName write SetUserName;
property UserCount: Integer read FuserCount write FuserCount;
  end;
3.4类型
3.4.1 大小写协议
保留字的类型名称必须全部小写。Win32 API 的类型通常全部大写,对于其它类型则首字母大写,其余字母小写,例如:
var
  MyString: string;   // reserved word
  WindowHandle: HWND; // Win32 API type
  I: Integer;    // type identifier introduced in System unit
3.4.2 浮点类型
尽量不使用 Real 类型,他只是为了和旧的Pascal代码兼容,尽量使用Double 类型。Double 类型是对处理器和数据总线做过最优化的并且是IEEE定义的标准数据结构。当数值超出Double的范围时,使用Extended 。但Extended不被Jave支持。但使用其它语言编写的DLL时可能会使用Single 类型。
3.4.3 枚举类型
枚举类型的名字必须有意义并且类型的名字之前要加前缀‘T’。枚举类型的内容的名字必须包含枚举类型名称的简写,例如:
TSongType = (stRock, stClassical, stCountry, stAlternative, stHeavyMetal, stRB);
3.4.4 数组类型
数组类型的名字必须有意义并且类型的名字之前要加前缀‘T’。如果声明一个指向数组类型的指针必须在该类型的名字之前加前缀‘P’,例如:
type
  PCycleArray = ^TCycleArray;
  TCycleArray = array[1..100] of integer;
3.4.5记录类型
记录类型的名字必须有意义并且类型的名字之前要加前缀‘T’。如果声明一个指向数组类型的指针必须在该类型的名字之前加前缀‘P’,例如:
type
  PEmployee = ^TEmployee;
  TEmployee = record
    EmployeeName: string
    EmployeeRate: Double;
  end;
3.5类
3.5.1 命名及格式
类的名字必须有意义并且类型的名字之前要加前缀‘T’。例如:
type
  TCustomer = class(TObject)
类实例的名字通常是去掉‘T’的类的名字。例如:
var
  Customer: TCustomer;
3.5.2 类中的变量
3.5.2.1命名及格式
类的名字必须有意义并且类型的名字之前要加前缀‘F’。所有的变量必须是四有的。如果需要从外部访问此变量则需要声明一属性
3.5.3 方法
3.5.3.1命名及格式
同函数和过程的命名及格式。
3.5.3.2 属性访问方法
所有的属性访问方法必须出现在private 或 protected 中。属性访问方法的命名同函数和过程的命名另外读方法(reader method)必须使用前缀‘Get’. 写方法(writer method)必须使用前缀‘Set’。写方法的参数必须命名为‘Value’,其类型同所要写的属性相一致。例如:
TSomeClass = class(TObject)
private
  FSomeField: Integer;
protected
  function GetSomeField: Integer;
  procedure SetSomeField( Value: Integer);
public
  property SomeField: Integer read GetSomeField write SetSomeField;
end;
3.6属性
3.6.1 命名及格式
同其用操作的,出去前缀‘F’的类的变量的名称相一致 。
3.7文件
3.7.1项目文件
3.7.1.1项目目录结构
程序主目录--Bin(应用程序所在路径)
                           -Db(本地数据库所在路径)
                          -Doc(文档所在路径)
                    -Hlp(帮助文件所在路径)
                           -Backup(备份路径)
                           -Tmp(临时文件路径)
3.7.1.2命名
项目文件必须使用一个有意义的名字。例如: Delphi中系统信息的项目文件被命名为 SysInfo.dpr。
3.7.2 Form 文件
3.7.2.1命名
同Form的名称相一致:例如:Form的名称为FormMain则Form文件的名称就为FormMain.frm。
3.7.3 Data Module 文件
3.7.3.1命名
data module文件的命名应该有意义,并且使用‘DM’作为前缀。例如: 用户data module 被命名为‘DMCustomers.dfm’。
3.7.4 Remote Data Module 文件
3.7.4.1 命名
remote data module文件的命名应该有意义,并且使用‘RDM’作为前缀。例如:用户remote data module 被命名为‘RDMCustomers.dfm’。
3.7.5 Unit文件
3.7.5.1普通 Unit
3.7.5.1.1 Unit文件命名
unit文件的命名应该有意义,并且使用‘unit’作为前缀。例如: 通用unit 被命名为‘UnitGeneral’。
3.7.5.2 Form Units
3.7.5.2.1命名
Form unit 文件的名字必须和Form的名称保持一致。例如:主窗体叫FormMain.pas 则Form Unit文件的名字为:UnitFormMain。
3.7.5.3 Data Module Units
3.7.5.3.1命名
Data Module unit 文件的名字必须和Data Module的名称保持一致。例如:主Data Module叫DMMain.pas 则Data Module Unit文件的名字为:UnitDMMain。
3.7.5.4 文件头
在所有文件的头部应写上此文件的用途,作者,日期及输入和输出。例如:
{
修改日期:
作者:
用途:
本模块结构组成:
}
3.7.6 Forms和Data Modules Forms
3.7.6.1 Form类
1. Form类命名标准
Forms类的命名应该有意义,并且使用‘TForm’作为前缀。例如: About Form类的名字为:
TAboutForm = class(TForm)
主窗体的名字为
TMainForm = class(TForm)
2. Form类实例的命名标准
Form 的类实例的名字应同期掉‘T’的Form类的名字相一致。例如:
Type Name
 Instance Name
 
TaboutForm
 AboutForm
 
TmainForm
 MainForm
 
TCustomerEntryForm
 CustomerEntryForm
 
 
3.7.6.2 Data Modules Form
3.7.6.2.1. Data Module Form 命名标准
Data Modules Forms类的命名应该有意义,并且使用‘TDM’作为前缀。例如:
TDMCustomer = class(TDataModule)
TDMOrders = class(TDataModule)
3.7.6.2.2. Data Module 实例命名标准
Data Module Form 的类实例的名字应同期掉‘T’的Data Module Form类的名字相一致。例如:
Type Name
 Instance Name
 
TCustomerDataModule
 CustomerDataModule
 
TordersDataModule
 OrdersDataModule
 
3.8控件
3.8.1 控件实例的命名
控件的实例应使用去掉‘T’该控件类的名称作为前缀,例如:
输入用户姓名的Tedit的名字为:EditUserName。
3.8.2 控件的简写
控件的名称可使用以下简写,但所用简写于控件名称之间药添加‘_’:
3.8.2.1 Standard Tab
mm TMainMenu
pm TPopupMenu
mmi TMainMenuItem
pmi TPopupMenuItem
lbl TLabel
edt TEdit
mem TMemo
btn TButton
cb TCheckBox
rb TRadioButton
lb TListBox
cb TComboBox
scb TScrollBar
gb TGroupBox
rg TRadioGroup
pnl TPanel
cl TCommandList
3.8.2.2 Additional Tab
bbtn TBitBtn
sb TSpeedButton
me TMaskEdit
sg TStringGrid
dg TDrawGrid
img TImage
shp TShape
bvl TBevel
sbx TScrollBox
clb TCheckListbox
spl TSplitter
stx TStaticText
cht TChart
3.8.2.3 Win32 Tab
tbc TTabControl
pgc TPageControl
il TImageList
re TRichEdit
tbr TTrackBar
prb TProgressBar
ud TUpDown
hk THotKey
ani TAnimate
dtp TDateTimePicker
tv TTreeView
lv TListView
hdr THeaderControl
stb TStatusBar
tlb TToolBar
clb TCoolBar
3.8.2.4 System Tab
tm TTimer
pb TPaintBox
mp TMediaPlayer
olec TOleContainer
ddcc TDDEClientConv
ddci TDDEClientItem
ddsc TDDEServerConv
ddsi TDDEServerItem
3.8.2.5 Internet Tab
csk TClientSocket
ssk TServerSocket
wbd TWebDispatcher
pp TPageProducer
tp TQueryTableProducer
dstp TDataSetTableProducer
nmdt TNMDayTime
nec TNMEcho
nf TNMFinger
nftp TNMFtp
nhttp TNMHttp
nMsg TNMMsg
nmsg TNMMSGServ
nntp TNMNNTP
npop TNMPop3
nuup TNMUUProcessor
smtp TNMSMTP
nst TNMStrm
nsts TNMStrmServ
ntm TNMTime
nudp TNMUdp
psk TPowerSock
ngs TNMGeneralServer
html THtml
url TNMUrl
sml TSimpleMail
3.8.2.6 Data Access Tab
ds TDataSource
tbl TTable
qry TQuery
sp TStoredProc
db TDataBase
ssn TSession
bm TBatchMove
usql TUpdateSQL
3.8.2.7 Data Controls Tab
dbg TDBGrid
dbn TDBNavigator
dbt TDBText
dbe TDBEdit
dbm TDBMemo
dbi TDBImage
dblb TDBListBox
dbcb TDBComboBox
dbch TDBCheckBox
dbrg TDBRadioGroup
dbll TDBLookupListBox
dblc TDBLookupComboBox
dbre TDBRichEdit
dbcg TDBCtrlGrid
dbch TDBChart
3.8.2.8 Decision Cube Tab
dcb TDecisionCube
dcq TDecisionQuery
dcs TDecisionSource
dcp TDecisionPivot
dcg TDecisionGrid
dcgr TDecisionGraph
3.8.2.9 QReport Tab
qr TQuickReport
qrsd TQRSubDetail
qrb TQRBand
qrcb TQRChildBand
qrg TQRGroup
qrl TQRLabel
qrt TQRText
qre TQRExpr
qrs TQRSysData
qrm TQRMemo
qrrt TQRRichText
qrdr TQRDBRichText
qrsh TQRShape
qri TQRImage
qrdi TQRDBMImage
qrcr TQRCompositeReport
qrp TQRPreview
qrch TQRChart
3.8.2.10 Dialogs Tab
OpenDialog TOpenDialog
SaveDialog TSaveDialog
OpenPictureDialog TOpenPictureDialog
SavePictureDialog TSavePictureDialog
FontDialog TFontDialog
ColorDialog TColorDialog
PrintDialog TPrintDialog
PrinterSetupDialog TPrintSetupDialog
FindDialog TFindDialog
ReplaceDialog TReplaceDialog
3.8.2.11 Win31 Tab
dbll TDBLookupList
dblc TDBLookupCombo
ts TTabSet
ol TOutline
tnb TTabbedNoteBook
nb TNoteBook
hdr THeader
flb TFileListBox
dlb TDirectoryListBox
dcb TDriveComboBox
fcb TFilterComboBox
3.8.2.12 Samples Tab
gg TGauge
cg TColorGrid
spb TSpinButton
spe TSpinEdit
dol TDirectoryOutline
cal TCalendar
ibea TIBEventAlerter
3.8.2.13 ActiveX Tab
cfx TChartFX
vsp TVSSpell
f1b TF1Book
vtc TVTChart
grp TGraph
3.8.2.14 Midas Tab
prv TProvider
cds TClientDataSet
qcds TQueryClientDataSet
dcom TDCOMConnection
olee TOleEnterpriseConnection
sck TSocketConnection
rms TRemoteServer
mid TmidasConnection
4.修改规范
       本规则所做的规定仅适用于已经纳入配置管理的程序。在这类修改中,要求保留修改前的内容、并标识出修改和新增的内容。并在文件头加入修改人、修改日期、修改说明等必要的信息。
4.1修改历史记录
       对源文件进行经过批准的修改时,修改者应在程序文件头加入修改历史项。在以后的每一次修改时,修改者都必须在该项目中填写下列信息:
       修改人
       修改时间
       修改原因
       修改说明即如何修改
4.2新增代码行
       新增代码行的前后应有注释行说明。
       // 修改人,修改时间,修改说明
       新增代码行
       // 修改结束
4.3删除代码行
       删除代码行的前后用注释行说明。
       //修改人,修改时间,修改说明
              //要删除的代码行(将要删除的语句进行注释)
       //修改结束
4.4修改代码行
       修改代码行以删除代码行后在新增代码行的方式进行。
       //修改人,修改时间,修改说明
              //修改前的代码行
//修改结束
       //修改后的代码行
              修改后的代码行
//修改结束

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Delphi源程序格式书写规范 的相关文章

  • 如何从该 JAVA 文件中提取 Delphi 类以与 Android 一起使用?

    我的Delphi XE7项目需要与FTDI FT311 Android 配件芯片 http www ftdichip com Products ICs FT311D html 他们帮助提供了一个 Android 演示 其中包括他们的 JAV
  • Delphi 中表单分发与其生命周期相关的接口对象的安全方法?

    我有一个 Delphi 表单 它提供接口对象背后的功能 代码的其他部分也通过属于该表单的属性获取引用 我无法将接口功能委托给子对象 因为太多的功能是由表单上的控件 组件提供的 我无法使用 TAggregateObject 或 TContai
  • FireMonkey iOS RAD Studio XE2 - 在从 URL 加载的表单上显示图像

    是否可以将 TImage 放置在 iOS 的 FMX 表单上 并将图像 jpg 从 URL 加载到此 TImage 中以在 iOS 应用程序中显示 我尝试过但没有成功 任何正确方向的提示或指出都会受到赞赏 将 TButton TImageC
  • 如何在按键时识别 unicode 键?

    我的应用程序使用 unicode 字符 并且我有几个文本字段 我想限制用户输入特殊字符 例如 begin if not Key in a z A Z 0 9 13 8 then Key 0 if Key 13 then bOk Click
  • D2010编译行数差异

    构建项目时 有两个地方会报告源代码行数 在编译进度对话框中 项目下 信息 在 Delphi 2007 中 对于我们正在构建的项目 这两个数字是相同的 在 Delphi 2010 中 这两个数字截然不同 1st 计数多出 100 万行或 40
  • 对于大型简单数据库,SQLite 和 DISQLite 有何比较?

    两者有什么区别SQLite http www sqlite org and DISQLite http www yunqa de delphi doku php products sqlite3 index为什么我要选择其中一个而不是另一个
  • (发件人:TObject)

    发件人 TObject 是什么意思 如 procedure TForm1 Button1Click Sender TObject var s Integer begin end Sender 是对触发事件的组件的引用 在这种情况下 Send
  • 在 Delphi 中将对象转换为 OleVariant

    有没有办法在 OleVariant 中传递包装并解开 TObject 后代 我正在尝试跨自动化对象传递 TObject 我知道这不是一个好主意 但我没有更好的选择 该对象将在来自同一自动化 dll 的对象之间传递 如果这有什么区别的话 像这
  • Delphi 2005 Web 服务问题

    我在尝试通过 Delphi 访问 Web 服务时遇到问题 我使用了 2007 版 WSDLimp 工具的 java WSDL 看起来它已正确创建了所有对象 然而 当我制作一个调用该服务的测试程序时 每个对象都是空的 如果我在 HTTPRIO
  • 使用远程数据编写 Android、iPad、iPhone 客户端的技术

    我需要探索世界 你写了一个杀手级应用程序 但你有 Android iPhone iPad 客户端吗 我的问题是 1 向这些设备发送数据的最佳方式是什么 按照建议进行肥皂和休息here https stackoverflow com ques
  • Windows 更新后 Active 设置为 False 时 TIdHttpServer 冻结

    我们有一个 Indy 版本 10 6 1 5235 TIdHttpServer 服务 多年来一直与 Delphi 2007 配合良好 在最新的 Windows 更新 KB4338815 和 KB4338830 之后 我们注意到当 TIdHt
  • 德尔福和Doxygen

    我想使用 doxygen pas2dox 记录我的源代码 当我设置好所有内容 包括过滤器和提取选项 提取所有内容 时 doxygen 运行良好 但生成的文档仅包含源文件作为链接 并且没有提取类型 方法 过滤后的源看起来不错 有任何提示如何定
  • 通过“修改日期”确定文件夹中的哪个文件是最新的?

    我需要扫描特定文件夹中的最新文件 基本上检查修改日期以查看哪个是最新的 但请记住这些文件具有随机名称 这是我到目前为止得到的 procedure TForm1 Button1Click Sender TObject begin ftp Ho
  • Soap Delphi 客户端因 1MB 调用超时而结束

    我们正在开发 SOAP Web 服务 Apache PHP 所有小规模调用都运行良好 但对于 1Mb 的 Soap 调用 HTTPS 调用大小为 1MB 我们的 Delphi Soap 客户端在除一台 PC 之外的所有 PC 上都因超时而停
  • 我可以在 Delphi 中使用字符串“IsEmpty”方法吗

    内河码头文件 IsEmpty 方法 http docs embarcadero com products rad studio delphiAndcpp2009 HelpUpdate2 EN html delphivclwin32 Syst
  • Delphi 是否在构造对象之前分配变量?

    Delphi 是否在对象完全构造之前分配实例变量 换句话说 给定一个变量 var customer TCustomer nil 然后我们构造一个客户并将其分配给变量 customer TCustomer Create 有没有可能custom
  • 是否可以在虚拟树视图中选择多个列?

    我需要添加功能来复制节点和列的矩形选择 但我找不到任何方法来实际选择虚拟树视图中的多个列 除了 toFullRowSelect 之外 我只是错过了什么吗 如果没有 是否有一个后代具有类似网格的多列选择支持 经过一些测试后 我得出了以下结论
  • DBX 错误:驱动程序无法正确初始化

    我在跑步德尔福XE3 终极版 MySQL 数据库 这是我点击时收到的错误Test Connection 作为回应 我在 xampp 目录中找到了 libmysql 库 并将其复制到我的 System32 目录中 但这是行不通的 此消息指的是
  • 如何在Delphi中实现人工神经网络? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想要一个人工神经网络 42 个输入神经元 168 个隐藏神经元 7个输出神经元 这个网络就是玩 连四子 的游戏 每场比赛结束时 网络
  • 如何等到我启动的程序使用完该文件后才删除该文件?

    我一直在寻找一种方法来打开通过 Delphi 应用程序及其适当的应用程序保存到我的计算机上的文件 该文件存储在 SQL 数据库中的 Varbinary 字段中 加载到内存流中 然后通过 TMemoryStream 的 SavetoFile

随机推荐

  • ubuntu断网、网络设置消失的解决办法

    不知道为啥 xff0c Ubuntu20 04搭配VM16Pro时有很大概率的出现这Bug xff0c 虽然网络上有了很多的帖子记录了解决办法 xff0c 但遇到了还是要记录一下的 环境 1 span class token punctua
  • 特殊三分图匹配

    特殊三分图匹配 64 LOJ 一般三分图的匹配需要运用基于拉格朗日松弛的分支定界法 xff0c 并运用启发式算法得到较优的初始下界 已被证明是NPC问题 出题者在此说明一般三分图的匹配可以解决本题 题目描述 三个点集X xff0c Y xf
  • sort函数中的cmp函数使用

    sort函数中的cmp函数使用 在leetcode上面刷题的时候发现大家使用sort函数的时候总能用出一些与众不同的比较方式 xff0c 其中使用cmp自己定义排序放的非常的方便 xff0c 因此我们这里记录一下cmp的使用 首先我们先来看
  • IDEA中Maven依赖提示红线下载不了的解决方案

    主要原因 xff1a 本地出现了不完整的依赖包 xff08 可以在本地仓库中检查是否有以 lastUpdated结尾的文件而非项目所需要的具体jar包 xff09 出现 lastUpdated文件的原因一般是在网络问题下 xff0c Mav
  • python练习100题(5)

    题目054 xff1a 取一个整数a从右端开始的4 7位 切片是左闭右开的 a span class token operator 61 span span class token number 123456789 span a span
  • 云服务器ECS

    云服务器 Elastic Compute Service ECS 是一种简单高效 安全可靠 处理能力可弹性伸缩的计算服务 其管理方式比物理服务器更简单高效 用户无需提前购买硬件 xff0c 即可迅速创建或释放任意多台云服务器 借助云服务器能
  • 【macOS】Desktop桌面文件突然消失不见解决办法

    问题出现 今天整理桌面的时候 xff0c 移动某个文件夹然后松手后突然就不见了 xff0c 但是在Finder中搜索文件夹找到该文件夹并查看简介 xff0c 发现确实显示是Desktop文件夹下 xff0c 并且不是隐藏文件夹 xff0c
  • 远程登录

    详情请参考 xff1a http www hzol com cn bbs dispbbs asp boardid 61 137 amp id 61 27352 win2003 远程登录 解析WIN2003之远程桌面连接 远程桌面连接 是为W
  • ffmpeg转换avi、mp4等视频格式为yuv格式

    使用ffmpeg转换视频文件为yuv420 xff08 NV12 xff09 格式命令 xff1a ffmpeg i xxx avi pix fmt nv12 s 2880x1620 ss 00 03 12 t 00 00 28 y xxx
  • 免费资料 | RoboMaster资料包分享,备赛福利来啦

    资料包链接 xff1a 腾讯文档 RoboMaster 产品资料全集合 RoboMaster 产品资料全集合 2021年天之博特参与协办的首届RMUA人工智能挑战赛中国赛赛事 xff0c 见证了各个高校参赛队伍每一个奋力拼搏的瞬间 xff0
  • PostgreSQL与MySQL对比

    PostgreSQL与MySQL对比 都属于开放源码的一员 xff0c 性能和功能都在高速地提高和增强 MySQL AB的人们和PostgreSQL的开发者们都在尽可能地把各自的数据库改得越来越好 xff0c 所以对于任何商业数据库使用其中
  • 最简单最节省成本的锂电池充电电路!拆开火火兔,搬起小板凳,听老梁分析...

    作者 xff1a LR梁锐 xff0c 整理 xff1a 晓宇 微信公众号 xff1a 芯片之家 xff08 ID xff1a chiphome dy xff09 用了一年的火火兔坏了 xff0c 充不了电 作为一名合格的电工 xff0c
  • 题解 教主的魔法(分块学习记录)

    64 luogu 看到询问个数少 xff0c 分块的复杂度能过 xff0c 于是人生第一次打了分块 xff0c 居然A了 据说也有线段树瞎搞的 xff0c 不过我不会写 总之 xff0c 边角暴力 xff0c 块内二分 xff0c 受影响的
  • Ubuntu虚拟机找不到共享文件夹的解决办法

    Ubuntu虚拟机找不到共享文件夹的解决办法 一 查看共享文件夹是否设置成功 vmware hgfsclient 二 挂载共享文件夹到 mnt目录下 sudo vmhgfs fuse host mnt o nonempty o allow
  • 秒懂函数回调机制,回调函数看这篇就够了

    什么是回调函数 友情提示 xff1a 原理介绍部分摘自 xff1a https www jianshu com p 2f695d6fd64f 有一定基础的直接跳过即可 xff0c 直接查看后面精彩部分 回调函数就是一个通过函数指针调用的函数
  • vbox下安装archlinux

    博主linux小白一个 xff0c 一直想试试archlinux xff0c 最近终于有时间了 xff0c 一番努力之后成功了 xff0c 写出来与大家分享 archlinux版本 2013 06 01 archlinux的优点就不说了 x
  • IDL环境下,HDF文件转TIFF格式

    在IDL环境下 xff0c 将HDF文件转TIFF格式 在遥感图像处理过程中 xff0c 我们经常遇到HDF文件 xff0c 如modis影像数据 那么HDF数据到底是怎样的呢 xff1f 百科的解释 xff1a HDF是用于存储和分发科学
  • ModuleNotFoundError:No Module named‘lpips‘问题怎么解决?

    今天在复现论文的时候 xff0c 发现配置环境中缺少一个 34 lpips 34 的包 这里记录一下 xff0c 给有需要的小伙伴 废话不多说 xff0c 直接上干货 xff1a 1 打开 https pypi org xff0c 输入缺少
  • bat文件批处理vcbuild、msbuild或者devenv

    最近用bat文件调用vcbuild或者msbuild xff0c 对于只调用简单的命令行 xff0c 可以很快上手 xff0c 可以查询msdn的关于msbuild的使用指导http msdn microsoft com zh cn lib
  • Delphi源程序格式书写规范

    1 规范简介 本规范主要规定Delphi源程序在书写过程中所应遵循的规则及注意事项 编写该规范的目的是使公司软件开发人员的源代码书写习惯保持一致 这样做可以使每一个组员都可以理解其它组员的代码 xff0c 以便于源代码的二次开发记忆系统的维