Next I'll try to tackle DataSnap... ;)
Enjoy!
unit Unit1;
{$IFDEF FPC}
{$mode objfpc}{$H+}
{$modeswitch objectivec1}
{$ENDIF}
interface
uses
SysUtils, Types, UITypes, Classes, Variants, FMX_Types, FMX_Controls, FMX_Forms,
FMX_Dialogs, FMX_Layouts, FMX_Memo
{$IFDEF FPC}
, iPhoneAll, SQLite3db, SQLite
{$ENDIF}
;
type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
procedure Log(Msg : String);
begin
{$IFDEF FPC}
NSLog(NSSTR(PChar(Msg)));
{$ENDIF}
end;
{$IFDEF FPC}
function MyDirectory : NSString;
var
paths : NSArray;
fileName : NSString;
begin
paths := NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, True);
fileName := paths.objectAtIndex(0);
Result := fileName;
end;
{$ENDIF}
procedure TForm1.Button1Click(Sender: TObject);
{$IFDEF FPC}
var
FileName, SQL : String;
DB : TSQLite;
SL : Classes.TStringList;
{$ENDIF}
begin
{$IFDEF FPC}
FileName := String(MyDirectory.UTF8String)+'/MyDB.sqlite';
Log(FileName);
DB := TSQLite.Create(FileName);
(*
// Drop the table and start from scratch
SQL := 'drop table Customers';
DB.Query(SQL,nil);
*)
// Create the table
SQL := 'create table Customers (Id integer not null, LastName char(25), FirstName char(25))';
DB.Query(SQL,nil);
// Insert a couple of records
SQL := 'insert into Customers values(1, "Ohlsson", "Anders")';
DB.Query(SQL,nil);
SQL := 'insert into Customers values(2, "Intersimone", "David")';
DB.Query(SQL,nil);
// Get the records back and list them in the memo
SL := Classes.TStringList.Create;
SQL := 'select * from Customers';
if DB.Query(SQL,SL) then
Memo1.Text := SL.Text;
SL.Free;
DB.Free;
{$ENDIF}
end;
end.
Be aware that the units you are using (SQLite or SQLite3DB) are part of the standard FPC library, and will certainly not be available in the next version of Delphi, when the FPC compiler will be replaced by a pure Embarcadero's product.
ReplyDeleteI'd recommend using {$mode delphi} rather than {$mode objfpc}. ObjFPC syntax is different from Delphi syntax in a couple of situations (primarily related to procedure variables, but there are more).
ReplyDelete@A. Bouchez: While that may be so, people need examples today. And I'm happy to tinker around and provide examples. In fact, all my latest examples will probably have to change sooner or later. They're not set in stone.
ReplyDelete@Jonas: I think I had to go ObjC mode for some reason, but I'll check to see if I can remove it. I may have removed code that needed it.
FPC has no problem combining Objective-Pascal with Delphi-style Pascal. {$mode objfpc} and {$mode delphi} set the basic syntax mode. {$modeswitch objectivec1} is a modeswitch rather than a full syntax mode, and as such simply adds functionality to the current syntax mode. It can even be combined with {$mode tp} if for some reason you'd like to combine Turbo Pascal-style code with Objective-Pascal :)
ReplyDeleteSo you can use:
{$ifdef fpc}
{$mode delphi}
{$modeswitch objectivec1}
{$endif}
({$h+} is the default in Delphi mode, just like it is in Delphi itself)
Also, you may want to use {$modeswitch objectivec2} instead of {$modeswitch objectivec1} in case you are targeting iOS and/or Mac OS X 10.5 or later (FPC still supports 10.4 as well). That allows you to use the for..in statement with Objective-C classes that support fast enumeration (http://developer.apple.com/library/ios/#documentation/cocoa/conceptual/objectivec/Chapters/ocFastEnumeration.html )
ReplyDeleteThanks! To be honest, I just copied and pasted from an example I was given by R&D. Sometimes when I use a construct and forget about the modeswitch, Xcode will yell quite clearly and say I have to add them. I haven't double checked this example per se, but eventually I'll clean up and distribute a whole bunch of example.
ReplyDeleteHello! I'm from Brazil and I have a doubt, the possibility of something I can connect to a mysql based online and in firemonkey ios.
ReplyDeleteHowever I would like to make that connection without DataSnap.
Please try to help me!
thank you
shaka41@gmail.com
Can someone tell me how to acquire the (SQLite or SQLite3DB) units used in this? I have downloaded and installed FPC but cannot determine how to get usable units from the files.
ReplyDeleteThanks!
Robert
Outstanding Music Direction
ReplyDeleteThanks for the informative post. I was thinking about this subject just yesterday. I am wanting to learn creating an easy fast site, so like it a lot ! I will check back regularly. Keep up the good work!
ReplyDeletestamped concrete joints...
ReplyDeleteThe Hackers Corner » Blog Archive » Super simple SQLite application for iOS FireMonkey...
What are the best colleges for creative writing and screenwriting?
ReplyDeleteI have been wanting to start blogging and/or vlogging for a while, and I was wondering what to do to prepare to start vlogging and what type of camera to get and just anything information you could give me on the subject. This would be a tremendous help to me. Serious answers only please. Thank you..
ReplyDeleteThe Hacker’s Corner » Blog Archive » Super simple SQLite application for iOS FireMonkey
ReplyDeleteakehvpfih
[url=http://www.g074qk188wa1ky9ox0udzu37vl753l72s.org/]ukehvpfih[/url]
kehvpfih http://www.g074qk188wa1ky9ox0udzu37vl753l72s.org/
Where can I find free images?. Which images are usually considered free?. When is it ok to insert a picture from a website?.
ReplyDeleteI need a computer program that will automatically start another program and not let that program close for a work computer. So basically, when the computer starts up, this program I am looking for will start a work-related program and force it to stay open, so that the only use of that computer would be to use the work program. Thank you!.
ReplyDeleteI recently started a blog, and I was just wondering how people have promoted their blogs online to get more followers so you aren't just typing to nothing out in the internet?. Oh, and for my blog, I don't really want my friends to be my followers, unless they find it on their own. My blog is about something that most of my friend's can't really help me with. (Photography is the main subject).
ReplyDeleteDoes everyone like blogspot or is there a better way to go?
ReplyDeleteThe Hacker’s Corner » Blog Archive » Super simple SQLite application for iOS FireMonkey
ReplyDelete[url=http://www.g08vs4f131tyh3a3na5czp4226e0n43zs.org/]uvsbltiterv[/url]
vsbltiterv http://www.g08vs4f131tyh3a3na5czp4226e0n43zs.org/
avsbltiterv
you are in reality a excellent webmaster. The website loading speed is amazing. It seems that you are doing any unique trick. Also, The contents are masterpiece. you have performed a wonderful task on this matter!|
ReplyDeleteHello just wanted to give you a quick heads up and let you know a few of the pictures aren't loading correctly. I'm not sure why but I think its a linking issue. I've tried it in two different web browsers and both show the same results.|
ReplyDeleteIt's awesome designed for me to have a web page, which is valuable in support of my know-how.
ReplyDeletethanks admin
When I originally commented I clicked the "Notify me when new comments are added" checkbox and now each time a comment is added I get four e-mails with the same comment. Is there any way you can remove people from that service? Many thanks!|
ReplyDeleteI think that everything posted made a great deal of sense. But, what about this? what if you were to create a killer headline? I ain't suggesting your content is not solid., but suppose you added something to possibly get a person's attention? I mean %BLOG_TITLE% is kinda plain. You might peek at Yahoo's front page and see how they create article headlines to grab people to click. You might add a video or a picture or two to get people interested about what you've got to say. In my opinion, it would bring your website a little livelier.|
ReplyDeleteAppreciating the hard work you put into your blog and detailed information you present. It's great to come across a blog every once in a while that isn't the same unwanted rehashed information. Wonderful read! I've bookmarked your site and I'm including your RSS feeds to my Google account.|
ReplyDeleteHello exceptional website! Does running a blog such as this take a massive amount work? I've no knowledge of computer programming but I had been hoping to start my own blog soon. Anyhow, should you have any recommendations or techniques for new blog owners please share. I know this is off topic nevertheless I just had to ask. Thanks!|
ReplyDeleteI just could not go away your web site prior to suggesting that I actually loved the usual information a person supply on your guests? Is going to be again regularly to check out new posts|
ReplyDeleteI simply couldn't depart your site prior to suggesting that I extremely loved the usual info a person provide on your guests?
ReplyDeleteIs gonna be back continuously in order to investigate cross-check new posts
Here is my homepage porn
Wonderful blog! Do you have any hints for aspiring writers?
ReplyDeleteI'm planning to start my own site soon but I'm a little lost on everything.
Would you propose starting with a free platform like
Wordpress or go for a paid option? There are so many choices out there that I'm totally confused ..
Any recommendations? Thank you!
Also visit my web-site; iron knights Hack
Spot on with this write-up, I honestly think this amazing site needs far more attention. I'll probably be returning to
ReplyDeleteread more, thanks for the information!
Look at my web-site ... Line Ranger Hack
According to a recent blog post by Brown, "Drivers, both professional and amateur, who have driven this awesome CSR-69 concept car, agree it is arguably the best handling Mustang they have ever driven. By dumping your man, you've made a wise and powerful decision. Qualifying for the Honda Indy Grand Prix of Alabama takes place Saturday, April 26 at 2 p.
ReplyDeleteHere is my blog post; cheats for Csr racing android
It's remarkable to pay a quick visit this web page and reading the views of all friends about this
ReplyDeletearticle, while I am also eager of getting experience.