Quantcast
Channel: Planet Object Pascal
Viewing all 1725 articles
Browse latest View live

Firebird News: Report of the 10th FDD is now on-line

$
0
0
The report (with pictures) of the 10th edition of the Brazilian Firebird Developers Day Conference is now on-line (in English and Portuguese).

TPersistent: Delphi Packaging and Pricing a Mystery

$
0
0

If you already upgraded to XE4, but didn’t buy the mobile pack, it appears that EMBT penalizes you if you then want to upgrade to the mobile pack.  According to this pricing page, the mobile pack AddOn is $499 if you already own XE4 or not.  Seems to me it should be $449 to reflect the upgrade cost from XE3 to XE4 if you bought the special, or whatever you paid for your upgrade.

What is also baffling is that there appears to be no way to experiment with the iOS mobile pack.  The trial says it contains “Trial includes Delphi, C++Builder and HTML5 Builder. Instant Trial includes Delphi and C++Builder.”.  There is no mention of the mobile pack which for many would be the primary incentive for buying an upgrade over XE3, and the reason EMBT is reporting year over year growth.

Behind the connection: Delphi XE5 to develop Android applications

$
0
0
Delphi XE5 is about to be announced. I have the chance to use a preview version for several weeks now. I’m very impressed! Using Delphi XE5 I was able to write my first Android application and deploy it to my Nexus 7 in a couple of minutes. OK, for now it is a very basic application: I just took one of the predefined application templates, added a few buttons and labels, hit F9. After a few

Te Waka o Pascal: Are Embarcadero Really Interested in New Users ?

$
0
0
In replying to a comment on his blog post about the pricing of the mobile add-on pack (XE4 – no news on XE5 as yet that I am aware of), Larry Hengen appears to be one of those people still under the belief that there are any “new buyer” type customers for Delphi. Are there […]

The Podcast at Delphi.org: Sneak Peek of Delphi XE5: Android DataSnap

Lazarus Team Anouncements: Lazarus team members present at Dutch Pascon

$
0
0
Blaise Pascal Magazine in collaboration with Barnsten offer a unique Developer Conference packed with in-depth sessions on various technical aspects of Delphi and Object Pascal presented by a panel of internationally renowned speakers.

These Delphi, Fr...

The Wiert Corner - irregular stream of stuff: 20130822-Embarcadero-MVP

$
0
0

20130822-Embarcadero-MVPIt has been in the queue for a really long time. In fact, all started when chatting with Anders Ohlsson during the inception of the Embarcadero MVP program.

But then the paper work (you know, the thing with written signatures, fax machines, etc) got buried under some projects that lasted both a lot longer than initially anticipated, and were far more consuming also meaning I could not make it to the developer conferences I originally planned.

Recently, I dug out the paper work, then found out that Jim McKeeth - now leading the MVP program at Embarcadero– could lessen the paperwork substantially.

A few manual steps were still involved on both sides, but now I am on the MVP Directory | General.

There is more to it. This fall, I will not only be making it to, but also speaking during at least 3, maybe more Delphi related events in Europe:

Given the time frame, and increase of information about a Delphi for Android product, it might be out or available for beta blogging by then. You can sign up for the beta here, and according to the roadmap it is estimated for release later this year. I hope to be able to play with that soon enough to at least demo a few bits and pieces of it using my Nexus 4 and HTC Sensation on some of those events.

Hope to see some of you there!

–jeroen


Filed under: Delphi, Delphi XE4, Development, Software Development

Te Waka o Pascal: Sharing Code Across Platforms in Oxygene

$
0
0
There seems to be a perception among some people that Delphi is in the unique position of allowing developers to share and re-use code across the various platforms that it’s compiler can now (and will soon) target. But this is not the case. Oxygene has had this capability right from the start. To exercise this, […]

DelphiTools.info: DWS WebServer Guide – part 1 – Getting Started

$
0
0
A pre-compiled server executable is available from google code (739 kB), built from current trunk version. Below is a quick start guide to playing with that server, I hope to later find time for more complete guide up to setting up a complete “production server”. Pre-requirements Besides the zip, you’ll need a Windows machine running at…

The road to Delphi: Delphi Dev. Shell Tools New features

$
0
0

I just added a set of new features to the Delphi Dev. Shell Tools like support for Lazarus, a new owner draw panel to the shell menu that shows information about the selected Delphi project file (.dpr, .dproj) like target platforms, framework (FMX, VCL), current configuration (debug, release) and Application Type (library, package, application)

Check the next screenshots



Remember that you can check for new versions of the tool using the check for updates button en the About option.


Te Waka o Pascal: An Exclusive Club and Reassuringly Expensive

$
0
0
In the comments to a previous post there cropped up the complaint that people asking for a realistic Starter Edition are just looking for a cheaper edition of Delphi for themselves. Maybe some of us are, but even so we are – or at least I am – not primarily concerned with the savings to […]

The Wiert Corner - irregular stream of stuff: jpluimers

$
0
0

I like this Delphi program very much: it is one of the database tools with the widest support of back-ends, and friendliest user interface I know.

Oh, and it is by a great Dutch company too: UpScene (:

So this is their release information:

2013-08-19:

Database Workbench 4.4.1 released

This new release of Database Workbench brings new features and fixes for issues reported by our users.

The free Lite Editions will be released later.

Multi-DBMS developer tool

Database Workbench works natively with:

  • Oracle Database
  • Microsoft SQL Server
  • Sybase SQL Anywhere
  • MySQL
  • Firebird
  • InterBase
  • NexusDB

More information about Database Workbench is available at the Database Workbench page, download your copy today via our downloads page, pricing information is available.

This release includes fixes for the InterBase, Firebird, MySQL and Microsoft SQL Server modules, as well as general fixes and small new features.

The full details and list of changes in 4.4.1 is available here.

–jeroen

via: News @ Upscene Productions.


Filed under: Database Development, Delphi, Development, Firebird, InterBase, MySQL, OracleDB, Software Development, SQL, SQL Server, SQL Server 2000, SQL Server 2005, SQL Server 2008, SQL Server 2008 R2, SQL Server 2012, Sybase

twm’s blog: How to waste hours with computer problems

$
0
0

I just wasted several hours with yet another computer problem.

Some Background: We are using a Ubuntu based server which runs Samba as a file server for Windows computers. It also is a local name server and mail server. Yesterday it was that time again that I had to reboot it because of some Linux kernel update. I waited until everybody had gone home, the box rebooted, everything seemed fine.

Until this morning: The first problem was that there was no e-mail telling me about the automatic backup last night. Then my web browser (which uses a proxy running on the server) did not work. Also there were suspiciously no spam emails.

So I investigated and found that the name service did not work, but only on the server itself. All clients could use the service and got the expected answers. But fetchmail and lots of daemons running on the server itself did not work.

Many minutes later I put our Internet provider’s into

/etc/resolv.conf

and name resolution started to work again for external addresses. E-mail was still broken, and I became desperate so I went to
serverfault.com hoping that somebody much more knowledgeable than me might know this problem.

I got quite a few hints on what to check but no luck.

The solution was absolutely unexpected (at least to me):
The loopback interface was not started!

Starting it with …

ifup -v lo

… fixed the problem.

TPersistent: XE5 World Tour Smaller than XE4?

$
0
0

I just checked out the World Tour for XE5, and despite the buzz about iOS development with Android support just around the corner, it appears as if the XE5 tour has fewer stops than the XE4 tour.

EMBT is no longer stopping in Calgary, Alberta, Canada (the IT capital of the west) where I reside.  In fact in Canada the map shows only a single stop in Western Canada, but when you click on it the dialog shows two stops; in Montreal and Toronto.

XE5 World Tour - Single Canadian Destination

XE5 World Tour - Single Canadian Destination

Apparently the map is based on a JPG image file rather than demonstrating Delphi google map integration, and there is no single source of truth, so something has gotten out of sync.

I certainly hope this is not another indicator of the decline of Delphi users.

Lazarus-Dev: Threads with Lazarus

$
0
0
It seems every time I use threads in a program I make, I need to lookup again how threads work. So if you're like me perhaps this will help you.

Here's a more complete tutorial to read.

Threads are a great way to do a large amount of processing in your program while allowing the visual part of your program to remain responsive. If you can split up the processing into several threads you can take advantage of modern processors multi core capability and complete a job in a fraction of the time.

Lazarus programs can use threads in GUI and Console programs. If you use threading in your program you should define the compiler option -dUseCThreads. This can be done in Project->Options->Compiler Options->Other - Custom Options. This does nothing under Windows but on any *nix it includes a needed threadmanager. If your program crashes with the first use of thread.Start; then this is probably your problem.

Now that your program is thread enabled here's some basic information about threads. You must subclass the TThread type and make your own thread type and override the Execute method.

The Execute method is never called directly in your program. It is the method the thread will run on it's own when it is started. If you are using MyThread.Execute then you are making a mistake.

Here's a basic example of a new thread type

type 
  TFooThread = class(TThread) 
  protected
    procedure Execute; override;
  end;

... 

implementation 

procedure TFooThread.Execute;
begin
  // do stuff 
end;

 
To create an instance of your thread you can use

FooThread := TFooThread.Create(True);

The argument True creates the thread in suspended state, meaning the OS thread is created but not yet run. If you use False then the thread begins and Execute is called immediately.  You can of course make your own constructor with whatever parameters you need and use inherited Create(False) there.

To start a thread you should use FooThread.Start. FooThread.Resume is deprecated as well as .Suspend which is not reliable on *nix's and can cause your program to hang.

Now your thread is running and working and making your life easier. Your program is snappier and you decide that you need to make your program display the progress your thread is making processing some data.

So in TFooThread.Execute you add Form1.ProgressBar1.Position := SomeValue.
Bad idea. It may work or your program could immediately crash or it might cause some other harder to find error that happens later. Never ever do this.

The reason this is so bad is because the GUI part of your program is run in a separate thread (duh!) and has it's own memory area. Changing the memory in one thread from another needs to be coordinated carefully. You should never change a LCL control value from a thread other than the main process.

A way to update the main thread from another thread is the Synchronize(@SomeProc) method. The Syncronize method, which is called within a created thread, causes the thread to pause and wait for the main thread to call a procedure. Also see CritialSections from the link at the beginning of this article

When your thread terminates you should assume that any code in it's destructor may be called a thread other than your main process thread, especially if you set FreeOnTerminate to True. If you assign a handler for the OnTerminate property then that procedure will be run in the main thread.

After all the code in the Execute method is run your thread cannot be restarted. You will have to free and create another instance of the thread type you need. It's common to include while not Terminated do begin ... end around the code inside the Execute method in order to use a thread multiple times without having to recreate it.

Most of the basic stuff I have run into is now covered. Go code, or read some more: Threading Tutorial on the Wiki

TPersistent: Second Impression of Lazarus/FPC

$
0
0

I finally had a few hours to work on hcOPF support for FreePascal which I had started some time ago.  I downloaded the Lazarus 1.0.10 installer and ran it in my development VM.  Then I continued creating new FPC projects, attempting to mirror the Delphi ones.  What I found, is that as a Delphi developer, the combination of Lazarus with FreePascal is far from a seamless transition if you are trying to migrate a framework.  There are numerous unit differences and the FreePascal compiler has significant differences from Delphi’s compiler even in Delphi compatibility mode.  The way Lazarus handles package projects is different, as are all GUI dialogs for the compiler paths and conditional defines, and even the IDE windowing.  It all takes a little getting used to.

The compile cycle seems to be longer using Lazarus, and the debugging tools are IMHO much more primitive than Delphi.  For instance, you cannot evaluate expressions such as Person.AttributeByName(’FirstName’).Value like you can in Delphi. The debugger visualizers are also quite a bit different from Delphi.  Due to an incomplete port, the IDE crashed while tracing the code with a 219, resulting in an empty LPI file for subsequent runs.  On the plus side, it loads SO much faster than XE4, being almost instantaneous, that such crashes aren’t a real impediment and I’m sure are an unusual situation.

Of course I miss having GExperts and cnPack functionality.  It’s unfortunate that no other IDE exposes the same OpenTools API interfaces used by such projects, so a developer could take them along.  I also really liked the CompBar substitute for the D7 component palette, and if I could install CodeRush for D7 in Lazarus I would be sold ;-) .

There are a lot of little differences, but a lot of the time, it’s simply an issue of getting familiar with the IDE.  For instance, it took me a while even to figure out that Delphi’s Browse Back/Forward is called “Jump Forward/Back” in Lazarus and was mapped to different keys.  I remapped them (try that in Delphi) to use Alt+Left Arrow/Rt. Arrow and I was happily drilling through the code again.

The demo I am working on porting uses a Firebird database with the IBX connectivity layer.  After looking at all the Lazarus database examples I had decided that it was going to be a longer porting effort until I ran across the IBX port from MWA Software.  I downloaded and installed it, and suddenly I could use my datamodule from Delphi without a problem. I thought I was home free, until I found I needed to install some design-time code into the IDE and I couldn’t resolve “Designer.GetComponent(Value)” in a TComponentProperty editor.

I will continue working on my FPC port as time permits.  Lazarus is truly an impressive IDE with some nice features such as closing All Other Pages in the editor.  I am sure as I spend more time, I will discover many other tools made by developers for developers (not a marketing department), and I really like the back to basics, no fat approach.  It’s as close to having an open source version of D7 as we will ever get.   It is also nice to be able to choose your UI Widgetset instead of being locked into a proprietary vendor solution.  What is equally as impressive is how the open source community is developing viable technologies for iOS and Android in addition to the impressive OS list that the Lazarus/FPC combination could already target.

If you are interested in learning ObjectPascal, or targeting Linux or Mac OS/X with 64 bit native code, or even considering Android/iOS development, the no cost, open source, Lazarus/FPC combination is worth a look.

Firebird News: IBSurgeon FBDataGuard 2.8: Update of monitoring and database protection tool

$
0
0
FBDataGuard, a server-side tool to monitor Firebird databases and prevent corruptions, was just updated to the version 2.8. This version contains stability improvements and minor bug fixes, improved support of SSL and support of SMTP-servers. For ISVs (i.e., companies which produce Firebird-based software and need to protect a lot of installations) IBSurgeon now offers unlimited […]

Lazarus Team Anouncements: Lazarus 1.0.12 release available for download

$
0
0
The Lazarus team is glad to announce the release of Lazarus 1.0.12.

This is a bug fix release, built with fpc 2.6.2.
The previous releases 1.0.8 and 1.0.10 were built with fpc 2.6.2 too, while release 1.0.6 was built with fpc 2.6.0.

Here is the list o...

twm’s blog: jiggling the mouse

$
0
0

Did you ever want to prevent the screen saver to start because your program is displaying something and you didn’t want to force the user to move the mouse every now and then?

Until Windows XP it was possible to prevent the screen saver from becoming active by just handling the WM_SYSCOMMAND message with wParam = SC_SCREENSAVE like this:

procedure Tf_MeasurementGraph.AppMessage(var _Msg: TMsg; var _Handled: Boolean);
begin
  if FIsRecording then
    // prevent screen saver from starting
    if ((WM_SYSCOMMAND = _Msg.Message) and (SC_SCREENSAVE = _Msg.wParam)) then
      _Handled := True;
end;

This apparently stopped working with Windows Vista. Other options introduced then only work if there was no password protection on the screen saver. So I asked the Google oracle and found this answer on Stack Overflow.

My solution then is this procedure:

procedure JiggleMouse;
var
  Inpt: TInput;
begin
  Inpt.Itype := INPUT_MOUSE;
  Inpt.mi.dx := 0;
  Inpt.mi.dy := 0;
  Inpt.mi.mouseData := 0;
  Inpt.mi.dwFlags := MOUSEEVENTF_MOVE;
  Inpt.mi.time := 0;
  Inpt.mi.dwExtraInfo := 0;
  SendInput(1, Inpt, SizeOf(Inpt));
end;

Call it in regular intervals and the screen saver will not start.

This is now (or soon will be) in the u_dzOsUtils unit which is part of my dzlib utility library.

Te Waka o Pascal: Exploding Some Delphi Pricing Myths

$
0
0
More than one commenter to recent posts has trotted out the same tired old myths that, in their view, prevent [insert current owner of Delphi here] from being able to compete fairly on the pricing front. Some of these myths are as old as the Enterprise Customer thinking that is the real problem, and just […]
Viewing all 1725 articles
Browse latest View live