用 Delphi 开发 APP 时程序参数的设置修改以及保存方法

DELPHI 安卓开发小手段 本文主要记录一些安卓开发时,使用的小功能,我称之为小手段,算是一个学习笔记吧,而本文中关于一些公共的功能,我仅在第一次需要时编写,后面将不再重复,比如动态权限申请之类的。{$ENDIF}目录前言如何调用手机震动功能申请震动权限建立震动函数调用震动函数如何调整手机音量如何关闭EDIT虚拟键盘动态控件属性修改无边窗体如何拖动。 阅读详情

做一个程序,总会有一些参数,是需要在运行时,让用户去选择设置的。用户设置完成后,需要保存,这样下次程序启动后,工作参数就是上次用户设置的参数。

传统的 Windows 底下,最常用的方式,是采用 ini 文件来保存参数。然后通过读写 TIniFile 来获取参数,或者将参数写入 ini 文件。不过用 ini 文件,采用 TIniFile 来打开 ini 文件,程序员需要写很多读写 TIniFile 的代码,逐个参数读出来,给界面元素赋值。用户修改界面元素后,要逐个从界面元素读出来,写入 TIniFile,然后将 TIniFile 保存为 ini 文件。这个过程,需要写很多代码。

另外一种方式,是采用数据库的方式。做一个数据库的表,这个表的字段,就是需要的参数。然后所有对参数的读写,采用数据库的操作。用户界面操作的界面元素,采用数据绑定的方式,基本上不用写代码,就能完成界面元素对参数值的显示,以及用户操作修改参数后自动写入数据库的工作。

不过,用数据库的麻烦是,如果修改了参数,比如增加了一条参数,则需要去修改数据库的表结构,导致程序里面很多地方都需要跟着做修改,会比较麻烦。而且要查看数据库的内容也比较麻烦,需要数据库工具。

还有一种方式,是将所有需要参数,采用对象的属性的方式。也就是做一个参数类,各条参数是这个类的属性。采用数据绑定的方式,将界面元素绑定到参数对象对应的属性上面。然后,这个对象的属性值,从哪里获得?有两种办法:

1. 采用 Json 的方式,将对象序列化为 JSON 字符串,然后将字符串保存为本地文本文件。加载参数时,则反序列化 JSON 字符串为对象。但 Delphi 自己带的 JSON 序列化对象的代码,不稳定,有一些问题。并且,在 D10.2.1 底下能工作的 JSON 序列化对象的代码,到 D10.3 底下居然编译都会出错。因此看起来 Delphi 自己带的 JSON 库还是有问题。当然可以考虑采用一些第三方开源的 JSON 库。采用第三方的库同样存在当 Delphi 本身升级后,那个库有没有跟着升级的问题。

2. 简单实用稳定的办法:将参数采用 TStringList 的方式来存储。一个参数就是这个 StringList 里面的一条 Key=Value 的字符串。参数对象的参数属性的 read 和 write 方法里面,就是从这个 StringList 读取 Key=Value 的值,或者写入一条 Key=Value 的值。TStringList 在 Delphi 里存在很久了,也算是一个简单的类,基本上不会跟着 Delphi 的升级而变化,写好的代码无需因为 Delphi 的升级而需要修改。再次情况下,再将对象属性绑定到界面元素,则基本上无需写什么代码,就能将参数文件的值,逐条显示到界面元素上,也能将用户操作界面元素修改的参数,自动化地写回参数文件。因此这是一个比较不错的方法。

至于,如何将一个我们自己构造的类在运行期创建的对象,采用 DataBinding 的方式绑定到界面元素上,请参考俺的这篇博客:

 

Delphi 利用 LiveBinding 将对象绑定到界面元素

Delphi实现的三种内存修改器代码实例 Delphi,作为Pascal语言的一个分支,自1995年推出以来,一直是开发人员喜爱的编程语言之一。它以其强大的编译器、丰富的组件库和高效的运行时性能而闻名。Delphi不仅仅是一个快速应用开发(RAD)工具,更是一个成熟、稳定的开发环境,尤其在Windows平台上有着无可比拟的优势。本章将带你了解Delphi的基本特点和它的独特之处,同时也将探讨其在现代开发环境中的地位和作用。内存修改器(Memory Editor)是一种用于在运行时查看和修改计算机程序内存中数据的工具。 阅读详情

相关推荐

Delphi AI开发实战:TMS AI Studio控件集成与LLM应用开发指南

在现代软件开发中,大型语言模型(LLM)的集成已成为提升应用智能化的关键技术。其原理是通过API调用将云端AI能力嵌入本地应用,实现自然语言处理、代码生成等高级功能。这一技术为传统桌面开发工具带来了新的生命力,特别是在Delphi这样的成熟RAD环境中。通过封装底层HTTP通信和JSON解析的复杂性,开发者可以专注于业务逻辑实现,快速构建具备AI对话、文本分析和图像处理能力的桌面与移动应用。TMS AI Studio作为Delphi生态中的AI功能集成套件,正是这一趋势的典型代表。它通过组件化的设计,将Op

weixin_34252686的博客 552

Delphi INI文件保存与读取

//需要引用IniFiles uses system.IniFiles; //保存INI配置文件 procedure TForm1.btnSaveClick(Sender: TObject); var   myIniFile: TIniFile;   filepath: string; begin   filepath := ExtractFilePath(Application.Exen...

qin_yaping的博客 1030

TRichView跨平台开发指南:从Delphi控件到Lazarus迁移实战

图文混排控件是桌面应用开发中的核心组件,它通过结构化文档模型实现复杂格式内容的渲染与编辑。其技术原理在于将文本、表格、图片等元素封装为独立对象,通过样式系统控制视觉呈现,为开发者提供接近专业文字处理软件的文档处理能力。在工程实践中,这类控件能显著提升报表生成、办公系统、内容编辑器等场景的开发效率。随着跨平台需求增长,基于VCL框架的传统控件面临移植挑战。TRichView作为Delphi生态中的老牌图文混排控件,通过提供Lazarus版本支持,为开发者保留了现有代码资产的同时,打开了通往macOS和Linu

weixin_34277853的博客 393

使Delphi程序记忆参数的设置

对于我们这个程序来说主要需要记录的信息是窗口关闭时的Top,Left,Height,Width。      ---- 注意:要想使Delphi可以操作注册表,必须包括registry单元。      ---- 以下是源程序和相关注释:  转自:http://sch

期待下集是个可爱梦儿 478

Delphi 在开发程序时数据库配置信息的保存位置.rar

一个Delphi7实例源码,在开发程序时数据库配置信息的保存位置,例子将从ini文件中连接数据源,演示了从外部配置文件读取数据,然后将修改的设置再保存到INI文件中。目前有非常多的应用软件都是把INI文件作为配置文件,使用简单方便。

修改delphi7.0程序图标的超级工具

修改delphi7.0程序图标的超级工具,非常好用,与大家分享!

delphi10android保存数据,DELPHI XE5 Android – SDCard的SAVE / LOAD文件

我正在使用Delphi XE5进行Android开发.我喜欢将TStringList保存并加载到SDCard上的文本文件中.当我将TStringList保存到文件时,一切正常.保存后我可以调用LoadFromFile并加载文件.问题是我关闭应用程序并再次打开它.文件不存在?这是文件位置FileName:=’/ data / data / [com.MY.APP] /files/File.txt’在...

weixin_39640157的博客 487

无刷电机控制避坑指南:六步换向 vs FOC的5个关键差异

本文深入对比了无刷电机控制中六步换向与FOC(磁场定向控制)的五大核心差异。从控制逻辑、性能表现、效率能耗、硬件成本到应用场景,详细解析了FOC如何通过矢量合成实现平滑的正弦波控制与更高效率,而六步换向则以低成本实现简单开关驱动。旨在帮助工程师根据项目需求,在性能、成本与复杂度间做出最佳选择。

weixin_29216957的博客 509

Delphi直接读取XmL

有时,只需要用XML作一些小的应用,比如只是简单地保存日志或者一些配置,这时我们只需要直接读写XML就好,效率第一。 Delphi盒子有一个直接读写XML文件 (例子和代码),其核心函数为下面两个函数(一读一写): {------------------------------------------------------------------------------- ...

dkopg24406的专栏 312

Zephyr,设备树概述

Zephyr使用设备树(DTS)描述硬件配置,通过设备树源码和绑定文件生成C头文件供开发使用。设备树采用树状结构,节点对应硬件设备,属性描述硬件特性。示例展示了I2C总线及其外设的节点层级关系,包括单元地址、兼容性标识等关键属性。构建系统将设备树转换为devicetree.h中的宏,使开发者能通过DT_前缀宏访问硬件信息,同时保留Kconfig覆盖默认值的能力。

汽车电子软件领域知识分享 723

用STC8单片机解码EV1527遥控信号:从波形分析到C代码实现(附完整库)

本文详细介绍了如何使用STC8单片机解码EV1527遥控信号,从波形分析到C代码实现的完整过程。内容包括EV1527协议解析、硬件搭建、信号捕获技巧、解码算法实现及优化策略,并附有完整库代码,帮助开发者快速实现智能家居设备的无线控制。

weixin_34093995的博客 296

Delphi D10.X 在安卓APP开发中使用Jar包的注意事项

写完上一篇博客《对于《关于使用Delphi XE10 进行android开发的一些总结》的补充》考虑了一下,应该把一些在开发安卓APP时使用到JAR包的注意事项也再讲一下。 请注意:这里是一些注意事项,或说“在开发过程中可能遇到的坑”,不是具体的怎么做JAR的调用开发。 需要准备的一些工具 工欲善其事必先利其器,以下这些工具对你开发会起到帮助作用的。当然,不用工具也是可以的,只要你愿意,什么事会做...

tanqth的专栏 4134

从CLIP到AnomalyCLIP:零样本异常检测的跨领域进化之路

本文探讨了从CLIP到AnomalyCLIP的技术演进,重点介绍了零样本异常检测在跨领域应用中的突破。AnomalyCLIP通过对象无关提示学习和多尺度特征提取,显著提升了工业质检、医疗影像等领域的检测精度,实现了高达96.4%的金属螺母划痕检测精度和85.7%的皮肤癌敏感度。这一技术为多模态模型在异常检测中的应用开辟了新路径。

r2s3t4的博客 111

delphi中TBytesToTJavaArray的使用

在使用delphi开发过程中,多数情况下使用TJavaArray数据类型的时候,应该是可以直接用TBytesToTJavaArray进行数据类型的转换并使用,但涉及到与流处理相关的时候,需要在使用完成后去释放清理。

tanqth的专栏 2848

一起玩转GNU Radio:调制解调大合集

本文汇总了GNU Radio中多种常见的调制解调方法及其参考文献链接,便于今后查看,供大家参考!

无线通信实验室 1万+

标题:Stata17安装后遇到Java安装问题解决方法

设置JAVA_HOME环境变量:在Windows上,您需要设置JAVA_HOME环境变量以告诉Stata Java的安装路径。d. 输入变量名为JAVA_HOME,变量值为Java安装路径。注意:请确保您的Java版本与Stata兼容,并使用正确的Java安装路径。设置Stata的Java安装路径:现在,您需要告诉Stata Java的安装路径。如果您看到Java版本信息,则表示Java已成功安装。如果没有安装,请先下载并安装Java。确认Java已安装:首先,请确保您的计算机上已经正确安装了Java。

CyberSparkZ的博客 2867

Delphi错误:Stack overflow的解决方法

====================================================== 注:本文源代码点此下载 ====================================================== 原作者信息:http://www.piaoyi.org/computer/delphi-stack-overflow.html author:f

javazhuanzai的专栏 1376

清洁机器人之屏幕(中,大LCD)方案--ITE 联阳986x系列 soc显控芯片介绍

清洁机器人之屏幕(中,大LCD)方案--ITE 联阳986x系列 soc显控芯片介绍

AIoT深度探索者 | 嵌入式系统架构师 深耕物联网(IoT)与人工智能(AI)融合技术,聚焦​​边缘计算、图像开发、低功耗通信协议​​,致力于智能硬件,关注我获取最新技术文章信息与海量资源~ 2666

全Delphi代码实现安卓扫码程序

全Delphi代码实现的扫码程序,扫码过程流畅不卡顿。主要功能已封装好,直接使用,简单方便、安全高效。封装代码仅可用于安卓系统,已处理好动态权限等细节工作。

tanqth的专栏 1万+

HBase学习二:RegionServer详解

RegionServer是HBase系统中最核心的组件,主要负责用户数据写入、读取等基础操作。RegionServer组件实际上是一个综合体系,包含多个各司其职的核心模块:HLog、MemStore、HFile以及BlockCache。一个RegionServer由一个(或多个)HLog、一个BlockCache以及多个Region组成。其中,HLog用来保证数据写入的可靠性;BlockCache可以将数据块缓存在内存中以提升数据读取性能;

qwerty1372431588的博客 747

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Delphi D10.X快速实现安卓状态栏沉浸模式

使用Delphi开发安卓APP时,我们经常想要实现状态栏沉浸样式,但这方面资料较少。目前 据我所查询资料了解的,这是在delphi中实现安卓沉浸最为方便、快捷、适配效果最好的方式。

tanqth的专栏 1万+

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

delphi过时了吗?王者归来!从Pascal到Embarcadero Delphi 10.4.1的发展历史回顾

Delphi是一种通过使用对象Pascal快速开发本机Windows,macOS,Linux,iOS和Android应用程序的语言。该名称指的是Delphi语言及其库,编译器和IDE,用于帮助编辑和调试Delphi项目。 Delphi是用于快速开发本机Windows,OS X,Linux,iOS和Android应用程序的通用语言。 Delphi 10.4 该名称曾经用于指代Delphi语言,但开发人员决定将语言恢复为原始名称Object Pascal,从而将该名称限制在IDE中,该IDE用于帮助更有

Delphi开发局QQ群:32422310 4962

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

简化Delphi编程代码

====================================================== 注:本文源代码点此下载 ====================================================== 在delphi应用程序开发中,程序设计人员的大部分工作是在组件的事件句柄中添加自己的程序代码,以实现具体的应用。在开发一些较大的应用程序时,为了完

javazhuanzai的专栏 528

delphi的ActiveForm的开发几点总结

1.打开多个包含控件的页面出错在delphi7中开发的控件就有这个问题,原因出在本身开发环境的类库代码有问题。目前没有好的解决方法,官方给出过修改办法,我没有试验成功,使用delphi2007开发,到目前为止没有出现这类问题。2.资源的释放重载Destroy; override;

1312

没落的delphi的日志类log4delphi

以前用过.net 和C++的日志类log4net log4cpp发现非常好用,性能稳定。 最近修改一个以前的delphi程序,想增加个日志功能。描述程序运行情况。经过简单的查找log4delphi,与上述是相同的开源网站提供的。 安装: 从http://sourceforge.net/projects/log4delphi/files/下载0.8版本,解压到文件夹。打开文件夹"...\log

Pipi0714的专栏 7131
上一篇: Delphi 编译发布安卓的APP名字问题
下一篇: Delphi 安卓 APP 动态权限申请
pcplayer
博客等级 码龄26年 633粉丝 284原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值