lazarus:不安装任何驱动,直接使用csv文件作为数据集

news2024/12/24 20:54:11

目录

1 简介

2 需要的窗体控件很简单

3 定义字段并插入几条记录

4 其他操作

4.1 数据集保存为csv文件

4.2 清空数据

4.3 加载csv文件

5 运行程序

6 导出文件


1 简介

在某些数据操作需求特别简单的情况下,我们希望不要安装任何数据库,甚至连一个驱动dll都不要,因为这些驱动dll可能涉及到版本甚至跨平台问题。这种简单需求,可以直接使用csv文件作为数据集来进行增查删改操作。注意,这不是用某些数据库映射csv文件作为数据库的一个表。

这种直接操作csv文件数据集好处不少,比如不用安装任何驱动,支持跨平台,可以直接使用文本编辑器修改文件,体积极小容易发布等。当然Lazarus还有其他可用的类似方式,比如直接操作电子表格文件、dbf文件等,都不需要安装驱动,都可以实现增查删改功能。

这里简单介绍把csv映射为数据集以及相关的简单操作。

2 需要的窗体控件很简单

核心控件就是这个 CSVDataset,位于控件集的Data Access页签中。

3 定义字段并插入几条记录

在FormCreate事件中,检查是否存在指定名称的csv文件,如果存在就直接加载。如果不存在,则定义字段信息,然后用代码插入几条记录:

procedure TForm1.FormCreate(Sender: TObject);
begin
  CSVDataset1.FileName := Application.Location + FILENAME;
  CSVDataset1.CSVOptions.FirstLineAsFieldNames := true;

  // 程序首次运行,数据文件不存在.
  // 必须创建字段信息.建立数据集。
  if not FileExists(CSVDataset1.FileName) then begin
    with CSVDataset1 do begin
      FieldDefs.Add('FirstName', ftString, 20);
      FieldDefs.Add('LastName', ftstring, 20);
      FieldDefs.Add('City', ftString, 20);
      FieldDefs.Add('Address', ftString, 30);
      FieldDefs.Add('Birthdate', ftDate);
      CreateDataset;

      // 打开数据集...
      Open;

      // ... 增加数据:
      Append;
      FieldByName('FirstName').AsString := 'Walter';
      FieldByName('LastName').AsString := 'Mellon';
      FieldByName('City').AsString := 'Oklahoma City';
      FieldByName('Address').AsString :=  '1261, Main Street';
      FieldbyName('Birthdate').AsDateTime := EncodeDate(1980, 1, 1);
      Post;

      Append;
      FieldByName('FirstName').AsString := 'Mario';
      FieldByName('LastName').AsString := 'Speedwagon';
      FieldByName('City').AsString := 'Hollywood';
      FieldByName('Address').AsString :=  '1500, Hollywood Blvd';
      FieldbyName('Birthdate').AsDateTime := EncodeDate(1982, 12, 17);
      Post;

      Append;
      FieldByName('FirstName').AsString := 'Anna';
      FieldByName('LastName').AsString := 'Mull';
      FieldByName('City').AsString := 'Los Angeles';
      FieldByName('Address').AsString :=  '2202, Capitol Square';
      FieldbyName('Birthdate').AsDateTime := EncodeDate(1982, 12, 17);
      Post;
    end;
  end;

  CSVDataset1.Open;
end;  

4 其他操作

4.1 数据集保存为csv文件

procedure TForm1.Button1Click(Sender: TObject);
begin
  CSVDataset1.SaveToCSVFile('exported.csv');
end; 

4.2 清空数据

procedure TForm1.Button2Click(Sender: TObject);
begin
  CSVDataset1.Clear;
end; 

4.3 加载csv文件

procedure TForm1.Button3Click(Sender: TObject);
begin
  CSVDataset1.LoadFromCSVFile('exported.csv');
end; 

5 运行程序

6 导出文件

导出的csv文件如果有中文,需要以utf8格式查看。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1180138.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

餐饮加盟信息展示预约小程序的内容如何

餐饮业规模持续增加,相关从业者逐渐增多,对中等规模以上的餐饮品牌来说,当有一定规模后除了开多家直营店外,还会开放招商加盟,扩展品牌、提升营收等。 由于餐饮加盟属于准属性业务,因此传统线下方式不太适…

投资理财:买理财亏损不保本怎么办?

大家好,我是财富智星,今天跟大家讨论一下投资理财,银行理财亏损不保本了,普通老百姓应该怎么办? 银行理财已经不再是保本且没有风险的产品了。对于追求稳健增值的大多数普通人来说,银行理财已经不再是他们的…

Python TCP服务端多线程接收RFID网络读卡器上传数据

本示例使用设备介绍:WIFI/TCP/UDP/HTTP协议RFID液显网络读卡器可二次开发语音播报POE-淘宝网 (taobao.com) #python通过缩进来表示代码块,不可以随意更改每行前面的空白,否则程序会运行错误!!!如果缩进不…

「Verilog学习笔记」使用generate…for语句简化代码

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点,刷题网站用的是牛客网 分析 generate…for语句是Verilog HDL语言特有的语句,使用循环结构编写可综合的多个形式相近的代码,循环变量必须由特定关键字genvar声明。 timesca…

IDEA Plugin插件开发相关踩坑

1 前言 最近在研究IDEA插件开发,踩了不少坑,特意在这里记录一下…… 2 Java相关类找不到 照着网上一些资料,想要实现代码审计自动提示功能,需要继承AbstractBaseJavaLocalInspectionTool 结果import一片爆红,找不到相…

StackOverflow调查:2021-2022薪酬最高的编程语言

我应该学习哪种编程语言? 对于有抱负的软件工程师来说,这是最常见的问题,答案始终是:这取决于您的偏好以及您想要构建的内容。 但也许您想采取另一条路线并学习公司为您支付最高费用的语言。 如果是这样的话,这篇文章适…

GPT-2:基于无监督多任务学习的语言模型

欢迎来到魔法宝库,传递AIGC的前沿知识,做有格调的分享❗ 喜欢的话记得点个关注吧! 今天,我们将共同探索OpenAI的GPT-2,跟随论文深入理解其技术细节。 论文:Language Models are Unsupervised Multitask Le…

ORACLE数据库初始化导入

ORACLE数据库初始化导入 文章目录 ORACLE数据库初始化导入创建表空间创建用户用户授权临时目录授权数据库目录授权导入dump文件 环境:linux 数据库:oracle 19c 创建表空间 -- 查询已创建目录 select directory_path,directory_name from all_directori…

Redis之与SSM集成Spring注解式缓存

🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是君易--鑨,一个在CSDN分享笔记的博主。📚📚 🌟推荐给大家我的博客专栏《Redis实战开发》。🎯🎯 …

大数据学习之Spark性能优化

文章目录 Spark三种任务提交模式宽依赖和窄依赖StageSpark Job的三种提交模式 Shuffle机制分析未优化的Hash Based Shuffle优化后的Hash Based ShuffleSort-Based Shuffle Spark之checkpointcheckpoint概述checkpoint与持久化的区别checkPoint的使用checkpoint源码分析 Spark程…

vue前端实现多个url下载并合并为zip文件

一、安装 npm install jszip npm install file-saver 二、引入 import axios from axios import JSZip from "jszip"; import FileSaver from "file-saver"; 三、核心代码 videoData:[/video/26519f026fc012521605563015227403.mp4,/video/f7b9cdae14…

聊聊芯片超净间的颗粒(particle)

在芯片制造领域,颗粒的存在可能对生产过程产生巨大影响。其中,每个微小的颗粒,无论是来自人员、设备,还是自然环境,都有可能在制程中引发故障,从而对产品性能产生负面影响。这就是为什么在芯片厂中&#xf…

【日积月累】SpringBoot 通过注解@CacheConfig @Cacheable @CacheEvict @CachePut @Caching使用缓存

目录 1.前言2.引入依赖3.启动类加入注解EnableCaching4.常用注解4.1CacheConfig4.2Cacheable4.3CacheEvict4.4CachePut4.5Caching 5.总结6.参考 文章所属专区 日积月累 1.前言 Spring在3.1版本,就提供了一条基于注解的缓存策略,实际使用起来还是很丝滑…

【内功修炼】详解函数栈帧的创建和销毁

文章目录 1. 什么是函数栈帧2. 理解函数栈帧能解决什么问题呢?3. 函数栈帧的创建和销毁解析3.1 什么是栈?3.2 认识相关寄存器和汇编指令常见寄存器常用汇编指令 3.3 详解函数栈帧的创建和销毁3.3.1 函数的调用堆栈(main函数也是被其它函数调用…

手握“发展密钥”,TCL科技或迎价值重估?

在高度竞争且快速变化的泛半导体产业,每一次周期性或结构性的变化,都会对企业经营策略带来深远的影响。 2023年前三季度,泛半导体产业迎来结构性复苏。其中,主流显示领域供需关系趋向健康化,半导体显示行业整体上量价…

C语言 每日一题 PTA 11.7 day13

1.求e的近似值 自然常数 e 可以用级数 1 1 / 1! 1 / 2! ⋯ 1 / n! ⋯ 来近似计算。 本题要求对给定的非负整数 n&#xff0c;求该级数的前 n 1 项和。 代码实现 #include<stdio.h> void main() {int a, i, j; double b 1; double c 1;printf("请输入一个数\n…

零信任安全:构建无懈可击的网络防护体系

随着网络技术的飞速发展&#xff0c;信息安全问题日益凸显&#xff0c;传统的安全防护手段已经无法满足复杂多变的安全需求。在此背景下&#xff0c;零信任安全模型逐渐受到广泛关注。本文将探讨零信任安全的概念、优势以及如何构建无懈可击的网络防护体系。 一、零信任安全概念…

Go语言用Colly库编写的图像爬虫程序

下面是一个使用Colly库编写的Go语言图像爬虫程序&#xff0c;该程序会爬取news.qq上的图片&#xff0c;并使用proxy_host:duoip和proxy_port:8000的爬虫IP服务器进行抓取。 package mainimport ("fmt""net/http""github.com/crawlab-collective/go-co…

511-0101-08B 5136-PFB-VME DCS是工厂级数字化的核心

511-0101-08B 5136-PFB-VME DCS是工厂级数字化的核心 在一个预计到2023年全球将达到174亿美元的不断增长的市场中&#xff0c;行业分析公司ARC Advisory Group的一份市场分析报告证实&#xff0c;ABB将其在分布式控制系统(DCS)市场的份额增加到20.0%&#xff0c;保持了其在20世…

木牛第三代4D成像雷达,为高速/城市级NOA的普及化提速

为助力中国汽车行业高速、高质量的发展&#xff0c;推动中国汽车行业智能化向纵深发展&#xff0c;由《证券日报》社与江西省金融控股集团主办、轩元资本与江西省金控投资集团协办的“2023汽车资本论坛”于2023年10月27日在江西南昌举办&#xff0c;本次论坛指导单位为中国经济…