The Wiert Corner – irregular stream of stuff

Jeroen W. Pluimers on .NET, C#, Delphi, databases, and personal interests

  • My badges

  • Twitter Updates

  • My Flickr Stream

  • Pages

  • All categories

  • Enter your email address to subscribe to this blog and receive notifications of new posts by email.

    Join 1,862 other subscribers

Archive for the ‘Delphi’ Category

Debugging Session – Brian Long, 2001

Posted by jpluimers on 2018/09/27

I’m amazed how little things have changed when doing hardcore Delphi debugging: [WayBackDebugging Session

–jeroen

Posted in Delphi, Development, Software Development | Leave a Comment »

Scalable HTTP sockets for the cloud, Part 2 – grijjy blog

Posted by jpluimers on 2018/09/26

Interesting stuff:

In this article we will expand on our TgoHttpClient class by adding some core new features including non-blocking http responses, unifying HTTP 1.1, HTTP/S and HTTP/2 support into a common class…

Source: [WayBackScalable HTTP sockets for the cloud, Part 2 – grijjy blog

I’d also be interested in the server part of this, but it seems not there yet.

The client side part 1 is here: [WayBackScalable HTTP/S and TCP client sockets for the cloud – grijjy blog

–jeroen

Posted in Delphi, Development, Software Development | Leave a Comment »

Modern Object Pascal Introduction for Programmers

Posted by jpluimers on 2018/09/25

[WayBackModern Object Pascal Introduction for Programmers

via:

–jeroen

Posted in Conference Topics, Conferences, Delphi, Development, Event, Object Pascal, Pascal, Software Development | 4 Comments »

MahdiSafsafi/ImmersiveColors: Easy way to access Windows 10 Immersive colors

Posted by jpluimers on 2018/09/20

Source: MahdiSafsafi/ImmersiveColors: Easy way to access Windows 10 Immersive colors

via: [WayBack] This is just what I tried to find, but could not figure out what those colors are called :)But anyways some Delphi-superhero has done all work for us… – Tommi Prami – Google+

–jeroen

Posted in Color (software development), Delphi, Development, Software Development | Leave a Comment »

Reminder to self: check if this has been solved – [RSP-19557] TParallel.Join does not create enough threads – Embarcadero Technologies

Posted by jpluimers on 2018/09/19

Delphi 10.1 Berlin broke [RSP-19557] TParallel,Join does not create enough threads – Embarcadero Technologies. It was reported 9 months ago, and since it took quite some longer than a year for a new Delphi version to be released, I wonder if it is fixed by now.

Related:

–jeroen

 

Posted in Delphi, Development, Software Development | 2 Comments »

When a Delphi TCP server causes sudden EIdConnClosedGracefully Exceptions on the client

Posted by jpluimers on 2018/09/19

I always forget which sides of the connection throw this error, but the client side does as explained in [WayBackdelphi – Troubleshooting EIdConnClosedGracefully Exceptions? – Stack Overflow by [WayBackRemy Lebeau the main Indy contributor:

EIdConnClosedGracefully means the other party … has disconnected its end of the connection. Once that exception has been raised, you cannot send more data to the other party. You must reconnect first.

Read the rest of this entry »

Posted in Delphi, Development, Software Development | 2 Comments »

I tend to forget there is a record intialiser TPair.Create(Key, Value) – via: delphi – TDictionary populated during create example code – Stack Overflow

Posted by jpluimers on 2018/09/18

I tend to forget that since TPair – introduced in Delphi 2009 – has had a TPair.Create(Key, Value)record initialiser since Delphi 2010, though only fully documented since Delphi XE4:

With some spart short methods, Cosmin Prund shows a really nice helper at [WayBack] delphi – TDictionary populated during create example code – Stack Overflow allowing a call like this:

  with TDictHelper<Integer, string> do
    Dict := Make([P(1, 'one'), P(2, 'two')]);

His answer has all the details (including describing the pros and conse), so here is only the helper:

uses
  SysUtils, Generics.Collections;

type
  TDictHelper<Key, Value> = class
  public
    class function P(const K:Key; const V:Value): TPair<Key, Value>;
    class function Make(init: array of TPair<Key, Value>): TDictionary<Key, Value>;overload;
    class function Make(KeyArray: array of Key; ValueArray: array of Value): TDictionary<Key, Value>;overload;
  end;

{ TDictHelper<Key, Value> }

class function TDictHelper<Key, Value>.Make(init: array of TPair<Key, Value>): TDictionary<Key, Value>;
var P: TPair<Key, Value>;
begin
  Result := TDictionary<Key, Value>.Create;
  for P in init do
    Result.AddOrSetValue(P.Key, P.Value);
end;

class function TDictHelper<Key, Value>.Make(KeyArray: array of Key;
  ValueArray: array of Value): TDictionary<Key, Value>;
var i:Integer;
begin
  if Length(KeyArray) <> Length(ValueArray) then
    raise Exception.Create('Number of keys does not match number of values.');
  Result := TDictionary<Key, Value>.Create;
  for i:=0 to High(KeyArray) do
    Result.AddOrSetValue(KeyArray[i], ValueArray[i]);
end;

class function TDictHelper<Key, Value>.P(const K: Key;
  const V: Value): TPair<Key, Value>;
begin
  Result := TPair<Key, Value>.Create(K, V);
end;

–jeroen

Posted in Conference Topics, Conferences, Delphi, Development, Event, Software Development | 7 Comments »

YouTube video how to use DDetours library to hook Win32 API in Delphi

Posted by jpluimers on 2018/09/18

via [WayBack] Just was sneaking around YouTube and found this video showing how to use DDetours library to hook Win32 api. – Mahdi Safsafi – Google+

–jeroen

Read the rest of this entry »

Posted in Delphi, Development, Software Development | 3 Comments »

chrisrolliston/CCR.PrefsIniFile: TCustomIniFile decendants for Delphi wrapping the Android, iOS and OS X Preferences APIs

Posted by jpluimers on 2018/09/13

If you need cross platform settings storage: [WayBackchrisrolliston/CCR.PrefsIniFile: TCustomIniFile decendants for Delphi wrapping the Android, iOS and OS X Preferences APIs

Via: [WayBack] In my application I use System.Win.Registry unit file to read or write to Windows Registry. Now that I have added MAC paltform I need an equivalent method to edit the plist file… – Dimitra Ger – Google+

–jeroen

Posted in Delphi, Development, Software Development | Leave a Comment »

TIdHTTPWebBrokerBridge example for a standalone Indy based SOAP service

Posted by jpluimers on 2018/09/12

Since I tend to forget what bits and pieces are needed for TIdHTTPWebBrokerBridge, the below code piece from:

The [WayBack] WebReq.WebRequestHandler Function returns a reference to the global [WayBackTWebRequestHandler object. This object manages all the Web modules in the application, and creates Web request and response objects when the application receives HTTP request messages: TWebRequestHandler keeps a pool of active Web modules. In response to a request from the application, TWebRequestHandler creates a request object and assigns it to one of the active Web modules.

The code below is the Indy counterpart of hooking up a classic WebSnap WebBroker (you could also hook the Web.WebBroker.Application.WebModuleClass to TMyWebModule instead of the WebRequestHandler.WebModuleClass, as Web.WebBroker.Application.WebModuleClass is a TWebApplication which inherits from TWebRequestHandler).

Read the rest of this entry »

Posted in Conference Topics, Conferences, Delphi, Development, Event, Software Development | Leave a Comment »