- or how to communicate with the past is possible - kind of...
I am a bit late on congratulating Delphi's anniversary yesterday - so what would fit better than inventing a time machine - or communication setup that could communicated back in time.
There is a nice video by Paul TOTH out there from yesterday: https://www.youtube.com/watch?v=DDp8K3tUn_I, among others. I need to work on my French :)
So I thought that if I just did a simple application in Delphi 1 from 1995 and then compiled the same unchanged code with the latest Delphi 10.1 Berlin Update 2 from late last year, and these two versions could "communicate" that would be fun.
Delphi 1 was great and outstanding, but there were so many things that were in a different state than today - like the landscape of networking - so running my Delphi 1 in a DosBox on Win 3.1 to be as authentic as possible seemed not a good idea - if I wanted to do some "communication".
I ended up installing Delphi 1 on a virtual XP - created the application just using simple Postmessage - recompiled the unchanged code in Delphi 10.1 Berlin Update 2 on a 32-bit Windows 7 - otherwise I would have a problem running my 16-bit Delphi 1 application. The source code is below and the picture above show the two versions running side-by-side Delphi 1 on the left. There was no DatePicker control in Delphi 1, so I used two TMaskEdit :)
unit Unit1;
interface
uses
SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
Forms, Dialogs, StdCtrls, Mask;
type
TForm1 = class(TForm)
MaskEdit1: TMaskEdit;
MaskEdit2: TMaskEdit;
Label1: TLabel;
Label2: TLabel;
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure WndProc(var Message: TMessage); override;
end;
const
MyMessage = 'FutureMsg';
var
Form1: TForm1;
MyMessageID: cardinal;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
var
targetHandle: THandle;
a: array[0..79] of char;
begin
caption := MaskEdit1.Text;
targetHandle := FindWindow(Pchar('TForm1'), StrPCopy(a, MaskEdit2.Text));
if PostMessage(targetHandle, (MyMessageID), 0, 0) then
showmessage('Receiver found.');
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
MyMessageID := RegisterWindowMessage(MyMessage);
end;
procedure TForm1.WndProc(var Message: TMessage);
begin
inherited WndProc(Message);
if Message.Msg = MyMessageID then
begin
showmessage('Got message');
end;
end;
end.
A shout-out to some "developers" could also be in place - there are some people that keep using the past tense when speaking about Delphi - and have been doing that for at least the last 10 years - so either they are not very enlightened, unintelligent or simply to lazy to do their homework - or maybe this is just getting more common in these post factual times we live in.
While we are at the post factual - let me misquote Mark Twain: “The reports of my death are greatly exaggerated.” - which is very true for Delphi.
If it had not been for Delphi - I would probably not still have been a passionate develop@heart.
I have used various other languages before, during, under and besides Delphi over the years - but in most case Delphi has been (is) the best tool for the jobs I get involved in. If a customer dictates the tool I charged extra - and they even pay for an extended period of time because the ineffectiveness of many other tools compared to Delphi.
An old tagline of Borland's was Software Craftsmanship - and you should never dictate what tools a real craftsman uses - otherwise she/he will never give their best.
And I am not saying you should never learn anything new - you should everyday - just look at the "Delphi" stack alone - IoT, FireDAC, MicroServices, Mobile, Linux .... and the list goes on, Delphi has evolved a lot over the years - some have not been paying attention - and others like me just want more and want to enjoy what the future brings :)
BTW: Do you remember how great the help was in Delphi 1 :D
Happy late Valentines Day and Birthday - #ILoveDelphi
No comments:
Post a Comment