delphi xe4 for iOS 学习笔记之一:创建简单的sqlite数据库程序

目标:
1 连接sqlite数据库
2 显示sqlite数据库中的内容
3 增加记录操作

iOS 模拟器屏幕快照“2013-9-11 下午1.59.47”

 

上面的图是ios模拟器的效果,open按钮打开sqlite数据库,add按钮增加一条随机记录,也就是只有数字的那些。只有寥寥几行代码。

整个例子基本跟着这里做:http://docwiki.embarcadero.com/RADStudio/XE4/en/IOS_Tutorial:_Using_SQLite_in_an_iOS_Application

数据库连接什么的都很方便,并且通过分发的设置,不用担心路径问题。不需要自己写什么东西。

我用的是listview来通过binding和数据表的字段关联,同样不用任何代码,建立好对应关系即可。

增加记录用了简单的sqlquery中带参数的sql语句而已,和ios没有太大关系,包括随机数函数之类,delphi几十年积累的好东西都延续到了ios平台。

ios_study_20130911a

 

上图是delphi xe4中的开发状态。

下面是所有的代码:

procedure TfrmSqliteTest.btnOpenSqliteClick(Sender: TObject);
begin
  test_sqlite.Open;
  common.Open;
end;

procedure TfrmSqliteTest.btnAddRecordClick(Sender: TObject);
begin
  SqlQueryInsert.ParamByName('cm_money').AsFloat:=RandomRange(100,2000);
  SqlQueryInsert.ExecSQL();
  common.Refresh;
end;

procedure TfrmSqliteTest.test_sqliteBeforeConnect(Sender: TObject);
begin
{$IFDEF IOS}
  test_sqlite.Params.Values['Database'] := GetHomePath + PathDelim + 'Documents' +
    PathDelim + 'money.sqlite'
{$ENDIF}
end;

我觉得几乎不需要解释了,connect连接相关的就是为了分发到ios模拟器或者iphone真机上做准备的,因为ios还是有一套完善的sandbox机制的,需要遵循。

 

开始分享delphi xe4 for iphone的学习

我觉得大部分的程序中的80%是基础的模块,所以我觉得80%的程序员其实也是和我一样是平凡的,不是大牛。

其实,大多数行业都是这样的比例。

这也不光是职业的规律,人生大概也如此。

所以,作为一个平凡的程序员,当然年龄的确比大多数程序员大,和我一起开始编程的,大部分都不再是程序员了(其实我也不是,编程已经是业余爱好了)。分享一下。

delphi本身的语言能力很强,而易博龙从xe2开始引入的firemonkey框架,到了xe4的确更加强大了,用delphi进行智能手机开发,进行iphone开发(以及已经看到的xe5 for android),至少是一个选择。

我自学delphi xe4 for iphone的程序放在了github上,地址: https://github.com/wingfish/delphi_mobile_study

现在只有一个例子程序,文档要延后补了。

我从十年前就不想介入到什么语言好的讨论,合适就行,包容的心,这也是成熟的标志吧!

还记得这样简单的编程么?

从第一次接触vb 3.0 for windows,记得那是大学里的一个暑假,当时已经开始使用windows了,但是vc和borland c++太高的门槛使得在windows下编程非常困难,记得当时即便如borland c++这样强悍的工具,写一个空的窗口,也要整整一页书的代码。

1993年看到vb,1995年看到delphi,无论是运行的效果和介绍的书籍,都让我兴奋不已,在程序员还是一个比较少的工种的年代,也没有太多基于互联网的方式可以分享心情,自己被自己弄得很高兴,感觉在一个虚拟的世界里可以做一下主人了。

20年来,用了很多工具,编程的、开发游戏的、各类应用软件的,直到今天,我还是认为vb和delphi这类开发方式是最强的,因为对vb.net不熟悉,不知道其后来的发展轨迹,单是就delphi而言,在delphi 7的时候达到了令人惊叹的高峰,盛极而衰。(记得当时好像有一套叫做mmtools的控件,可以在设计环境直接通过线条在控件之间的连接拖放来完成程序功能)在开发环境方面,apple是自搞一套,很多的违和感,而由于web的兴起,很多是脚本语言,这也造成了开发工具部分功能的倒退,我以为。

智能手机的兴起,让我们又回到了客户端。

来看看Hello World!

设计的时候拖放控件,然后给按钮一个事件,这里的代码大部分都是生成的,只有一句需要你自己写,运行程序,在mac下面显示了iphone模拟器,效果出来了。就这么简单。和当年的vb、delphi一样自然。

xe4_ios_helloworld_01

unit Unit1;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Dialogs, FMX.StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.fmx}

procedure TForm1.Button1Click(Sender: TObject);
begin
  label1.Text:='Hello';
end;

end.

xe4_ios_helloworld_02

很多人批评很多delphi程序员只会控件拖放,很多基础知识概念没有弄明白,造成程序不可维护。我觉得delphi强大的核心,以及表现出来的面向对象的能力,可以使得程序开发非常迅速、便于扩充等。程序是否可维护和控件拖放没有关系,只和需求分析、技术分析、开发方式、测试、质量控制等有关。

对于一个需要维护的应用,合理的规划,肯定是有益的。但是也没有必要看不起控件拖放,这正是delphi的强大之处,包括现在的binding概念,使得开发效率更高,需要写的代码更少。我们写程序是为了解决问题,而不是炫耀。

初步尝试delphi xe4 for ios开发

把技术类的blog从其他网站逐步转过来,这是一个多月前写的,后来一直没有继续研究。

从delphi xe2开始用freepascal,到delphi xe4,终于基于llvm技术,delphi做到了真正的原生编译。

在功能设计上,的确比之前方便很多,可以先在win32平台下看主要功能和业务逻辑是否正确,然后送到mac机器上测试效果,或者直接通过mac传到真机上测试。

我们为了试验性能,在一个列表框,或者说tableview中显示1000条记录,在真机上基本是2s,这个速度一般应用是足够了。并且这个写程序和调试的过程,几乎不需要学习什么新知识,delphi的强大终于得到了体现。

ContentImage-14855-274810-8677933080_cd12abcc2a_c