blog content

How to use TServiceManager to manage Windows services

October 27, 2006 by Marc Dürst | Categories: Programmieren | Pascal/Delphi

How to use the TServiceManager Frederik and myself wrote? That's what I got asked a couple of time so post here kind of a how-to.

More...


Randomly executed INITIALIZATION blocks

March 25, 2004 by Marc Dürst | Categories: Programmieren | Pascal/Delphi

Sometimes it can happen that Delphi executes the initialization block in a "wrong" order. This means that they are not executed in the order as expected from the uses clause.

This happen if no full build is done. If Delphi doesn't need to compile a unit (.dcu) it will not update the order of initialization execution.

To get around this you should do the following:

  1. Try to make initialization blocks not dependant on others.
  2. Do a full build ("Build all") to make sure the order gets linked correctly.

Btw: This problem does not only happen in Delphi but in C/C++ as well and has to do with compiler optimizations to get faster turn around time when compiling.


Collections - Listen mit Designtime-Support

July 15, 2003 by Marc Dürst | Categories: Pascal/Delphi | Programmieren

Was sind Collections?

Nun, alle von Euch haben schon Collections verwendet - vermutlich ohne es zu wissen :) Jedes Property im Object Inspector, welches bei einem Doppelklick darauf eine Liste ffnet, in welcher man Elemente editieren kann, ist eine Ableitung von TCollection. z.B. Spalendefintion der Gride, Felderdefinitionen von TTable, Listview-Columns etc.

Collections kann man am ehesten mit TList bzw. TObjectList vergleichen. Es handelt sich um eine Liste, welche als Eintrge weitere Klassen verwendet. Ein Collection-Item kann auch wieder beliebig viele Subcollections haben, was das ganze definitiv unübersichtlich macht ;-)

"Für was brauch ich Collections, wenn ich doch schon Listen habe?", fragt Ihr Euch vielleicht. Nun, der Gag an den Collections ist, dass sie Component-Streaming unterstützen, was heisst, dass Ihr vollen Designtime-Support darin habt. Die Collection kümmert sich entsprechend um das Speichern und Laden der Collection-Items ohne, das Ihr nur eine Zeile Load-/Save-Code schreiben müsst. Ist doch noch ganz handlich, nicht? :) Am meisten werden Collections entsprechend fr Komponenten gebraucht.

More...


Singeltons - Ein anderer Weg

July 15, 2003 by Marc Dürst | Categories: Pascal/Delphi | Programmieren

Singletons sind Objekte die nur genau einmal erzeugt werden und nicht von aussen instanziert werden knnen.

Ein Logger könnte zum Beispiel so ein Singleton werden, da man z.B. aus allen Thread s immer auf denselben Logger gehen möchte und nicht pro Thread einen eigenen Logger benötigt.

Auch Borland verwendet in der VCL Singeltons. Beispiele hierfür sind die Objekte Application, Printer oder auch Clipboard. Hier soll allerdings ein etwas anderer Weg für Singelton's aufgezeigt werden, als wie die Borland macht. Der Vorteil dieser Variante ist, dass es hier unmöglich ist, mehr als eine Instanz der Singelton-Klasse zu erzeugen, was beim Borland-Weg nicht der Fall ist.

More...


Garbage Collection / Managed Objects

July 15, 2003 by Marc Dürst | Categories: Programmieren | Pascal/Delphi

Dieses Pattern soll einen Weg aufzeigen, wie man auch mit Delphi eine Art Garbage Collection bzw. Managed Objects implementieren kann. Was bedeutet das? Gaaaanz einfach: das Ziel ist es, dass eine Instanziertes Objekt automatisch freigegeben (destroyed) wird, sobald es "out of Scope" (ausserhalb des Gültikkeitsbereiches) ist.

More...

Bug Prevention mit Assertions

July 15, 2003 by Marc Dürst | Categories: Programmieren | Pascal/Delphi

In diesem Artikel geht es darum, dem ausliefern von Bugs mittels Assertions vorzubeugen. Ich denke mal, die meissten von Euch wissen, das es Assertions gibt und für was die sind, hier trotzdem ein kleiner Crashkurs.

More...

Exceptions

July 15, 2003 by Marc Dürst | Categories: Pascal/Delphi | Programmieren

Mit Exceptions werden Ausnahmesituation in einem Programmablauf gekennzeichnet. D.h. es handelt sich nicht zwangsläufig um einen Fehler bzw. um etwas "Schlechtes". Je nach Programmierstil gibt es auch mehr oder weniger der "guten Exceptions". Der Umgang mit Exceptions (= Exception handling) ist für die Stabilität und Zuverlässigkeit von Programmen entscheidend. Ein sauberes und konsequentes Exceptions-Handling ist also kein nice-to-have sondern PFLICHT!

In diesem Artikel sollen die Grundlagen von Exceptions in Delphi/Pascal sowie erweiterte Möglichkeiten aufgezeigt werden.

More...


Methodenaufrufe absichern

March 15, 2003 by Marc Dürst | Categories: Programmieren | Pascal/Delphi

Mal wieder etwas zum Thema stabiler Code. Ihr kennt das Problem, wenn eine Objekt nicht sauber instanziert wurde, weil z.B. der Konstruktor (Create()) mal wieder vergessen wurde. Nun wollen wir versuchen, unsere Klasse etwas abzusichern, dass sie nicht mehr einfach mit den üblichen Access-Violations crasht. Denn wenn dies passiert, kommt häufig auch der Delphi-Debuger etwas aus dem Tritt. Das Ziel soll also sein, eine saubere Assertion zu generieren, wenn das Objekt nicht sauber angelegt haben.

More...

Blog Navigation