<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Holliesoft Weblog &#187; Delphi</title>
	<atom:link href="http://www.holliesoft.de/weblog/category/delphi/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.holliesoft.de/weblog</link>
	<description>Programmieren &#38; co.</description>
	<lastBuildDate>Fri, 27 Aug 2010 17:30:29 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Delphi: Eine Prozedur in einem anderen Formular ausl&#246;sen, ohne Unit hinzuzuf&#252;gen</title>
		<link>http://www.holliesoft.de/weblog/2010/08/27/delphi-eine-prozedur-in-einem-anderen-formular-auslsen-ohne-unit-hinzuzufgen/</link>
		<comments>http://www.holliesoft.de/weblog/2010/08/27/delphi-eine-prozedur-in-einem-anderen-formular-auslsen-ohne-unit-hinzuzufgen/#comments</comments>
		<pubDate>Fri, 27 Aug 2010 17:21:58 +0000</pubDate>
		<dc:creator>Patrick Hollerbach</dc:creator>
				<category><![CDATA[Delphi]]></category>

		<guid isPermaLink="false">http://www.holliesoft.de/weblog/2010/08/27/delphi-eine-prozedur-in-einem-anderen-formular-auslsen-ohne-unit-hinzuzufgen/</guid>
		<description><![CDATA[Bei einer kleinen selbstprogrammierten Anwendung stand ich vor dem Problem, dass ein Formular auf ein anderes Formular zugreifen muss, das andere Formular jedoch auch eine Aktion auf ersterem Formular ausführen muss.
Wenn ich nun jeweils die andere Unit in den Interface-Teil hinzufüge, meckert der Compiler (zirkuläre Referenz).
Eine mögliche Lösung wäre, die Referenz auf das erste Formular [...]]]></description>
			<content:encoded><![CDATA[<p>Bei einer kleinen selbstprogrammierten Anwendung stand ich vor dem Problem, dass ein Formular auf ein anderes Formular zugreifen muss, das andere Formular jedoch auch eine Aktion auf ersterem Formular ausführen muss.</p>
<p>Wenn ich nun jeweils die andere Unit in den Interface-Teil hinzufüge, meckert der Compiler (zirkuläre Referenz).</p>
<p>Eine mögliche Lösung wäre, die Referenz auf das erste Formular einem public Feld vom Typ “TCustomForm” des zweiten Formulars zuzuweisen, die Unit des ersten Formulars dem Implementation-Abschnitt der 2.Form bekannt zu machen und dann in der entsprechenden Prozedur auf die Klasse der ersten Form casten.</p>
<p>Beispiel:</p>
<div style="border: gray 2px dashed; padding: 10px;">
<pre>
Unit Form2;

interface

uses
  [...]

  type
    TForm2 = class(TForm)
	  [...]
	private
      Form1Ref: TControl;
	  procedure DoSomethingOnForm1;
	  [...]
    public
      [...]
   end;

implementation

 uses
   Form1;

[...]

procedure TForm2.DoSomethingOnForm1;
Var
  Form1: TForm1;
begin
  Form1 := TForm1(Form1Ref);
  Form1.MacheIrgendEtwasAufForm1;
end;
</pre>
</div>
<p>Funktioniert, ist aber hässlich™.</p>
<p>Etwas tippintensiver, aber wesentlich &#8220;hübscher&#8221; geht es mit einem Event:</p>
<div style="border: gray 2px dashed; padding: 10px;">
<pre>
Unit Form2;

interface

uses
  [...]

  type

  TForm2Event = procedure (Sender: TObject) of Object;

    TForm2 = class(TForm)
	  [...]
	private
      FForm2Event: TForm2Event;
	  procedure DoSomethingOnForm1;
	  [...]
    public
      property Form2Event: TForm2Event Read FForm2Event Write FForm2Event;
   end;

implementation

[...]

procedure TForm2.DoSomethingOnForm1;
begin
  // Auslösen des Events
  If Assigned(Form2Event)
    Form2Event(Sender);
end;   

_______________________________________________

Unit Form1;

interface

[...]

Type
  TForm1 = class(TForm)
  [...]
  public
    procedure Form2EventAusfuehren(Sender: TObject);
  end;

  [...]  

  implementation

  TForm1.FormCreate(Sender: TObject);
  begin
    [...]
	Form2.Form2Event := Form2EventAusfuehren;
  end;

  procedure Form1.Form2EventAusfuehren(Sender: TObject);
  begin
    // hier Code der auf Form1 ausgeführt werden soll
  end;
  </pre>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.holliesoft.de/weblog/2010/08/27/delphi-eine-prozedur-in-einem-anderen-formular-auslsen-ohne-unit-hinzuzufgen/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Klebezettel 3.0 erfolgreich auf Delphi 2010 aktualisiert</title>
		<link>http://www.holliesoft.de/weblog/2010/08/23/klebezettel-3-0-erfolgreich-auf-delphi-2010-aktualisiert/</link>
		<comments>http://www.holliesoft.de/weblog/2010/08/23/klebezettel-3-0-erfolgreich-auf-delphi-2010-aktualisiert/#comments</comments>
		<pubDate>Mon, 23 Aug 2010 18:13:48 +0000</pubDate>
		<dc:creator>Patrick Hollerbach</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Klebezettel]]></category>
		<category><![CDATA[Klebezettel Reloaded]]></category>

		<guid isPermaLink="false">http://www.holliesoft.de/weblog/2010/08/23/klebezettel-3-0-erfolgreich-auf-delphi-2010-aktualisiert/</guid>
		<description><![CDATA[Heute habe ich erfolgreich meine bisherigen Entwicklungsergebnisse von Klebezettel 3.0 auf Delphi 2010 aktualisiert, was einfacher war, als gedacht. Nun kann es endlich losgehen mit der Entwicklung  
Sobald die erste Version verfügbar ist, die die grundlegendsten Funktionen implementiert hat (Notizen erstellen, speichern, laden) wird es wöchentliche Snapshots der aktuellen Entwicklungsversion geben.
]]></description>
			<content:encoded><![CDATA[<p>Heute habe ich erfolgreich meine bisherigen Entwicklungsergebnisse von Klebezettel 3.0 auf Delphi 2010 aktualisiert, was einfacher war, als gedacht. Nun kann es endlich losgehen mit der Entwicklung <img src='http://www.holliesoft.de/weblog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Sobald die erste Version verfügbar ist, die die grundlegendsten Funktionen implementiert hat (Notizen erstellen, speichern, laden) wird es wöchentliche Snapshots der aktuellen Entwicklungsversion geben.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.holliesoft.de/weblog/2010/08/23/klebezettel-3-0-erfolgreich-auf-delphi-2010-aktualisiert/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Eine Chance f&#252;r Delphi</title>
		<link>http://www.holliesoft.de/weblog/2010/08/22/eine-chance-fr-delphi/</link>
		<comments>http://www.holliesoft.de/weblog/2010/08/22/eine-chance-fr-delphi/#comments</comments>
		<pubDate>Sun, 22 Aug 2010 19:23:21 +0000</pubDate>
		<dc:creator>Patrick Hollerbach</dc:creator>
				<category><![CDATA[Delphi]]></category>

		<guid isPermaLink="false">http://www.holliesoft.de/weblog/2010/08/22/eine-chance-fr-delphi/</guid>
		<description><![CDATA[Nach langem Überlegen habe ich mich nun doch dazu entschlossen, mit Delphi weiterzuarbeiten.
Um auf dem aktuellen Stand der Technik zu sein, habe ich gestern das Update auf Delphi 2010 Professional erworben – und ich bin begeistert, denn es hat sich im Vergleich zu Delphi 2007 so viel getan (OK, das meiste davon kam mit Delphi [...]]]></description>
			<content:encoded><![CDATA[<p>Nach langem Überlegen habe ich mich nun doch dazu entschlossen, mit Delphi weiterzuarbeiten.</p>
<p>Um auf dem aktuellen Stand der Technik zu sein, habe ich gestern das Update auf Delphi 2010 Professional erworben – und ich bin begeistert, denn es hat sich im Vergleich zu Delphi 2007 so viel getan (OK, das meiste davon kam mit Delphi 2009, aber trotzdem):</p>
<ul>
<li>PNG-Support</li>
<li>Mehrere Button-Styles für Windows Vista und höher, z.B. SplitButton</li>
<li>Natürlich Unicode (Erweiterter Zeichensatz, um z.B. auch exotische Anwendungen (Chinesisch etc.) erstellen zu können)</li>
<li>ButtonedEdit-Control</li>
<li>Hint-Text für Edit-und Combobox-Controls (finde ich ein Super-Feature!)</li>
<li>Style “NumbersOnly” für das Edit-Control</li>
<li>Gruppierung beim TListView</li>
<li>Marquee Style für die ProgressBar</li>
<li>themed Hints</li>
<li>Windows 7 Features</li>
<li>DirectX Support Headers</li>
<li>TDirectory, TFile, TPath</li>
<li>TStringBuilder</li>
<li>Generics</li>
</ul>
<p>Nun kann die <strike>Weiterentwicklung</strike> Neuentwicklung von Klebezettel endlich starten!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.holliesoft.de/weblog/2010/08/22/eine-chance-fr-delphi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wo bleibt die neue Klebezettel-Version?</title>
		<link>http://www.holliesoft.de/weblog/2010/08/17/wo-bleibt-die-neue-klebezettel-version/</link>
		<comments>http://www.holliesoft.de/weblog/2010/08/17/wo-bleibt-die-neue-klebezettel-version/#comments</comments>
		<pubDate>Tue, 17 Aug 2010 20:43:37 +0000</pubDate>
		<dc:creator>Patrick Hollerbach</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Klebezettel]]></category>
		<category><![CDATA[Klebezettel Reloaded]]></category>

		<guid isPermaLink="false">http://www.holliesoft.de/weblog/2010/08/17/wo-bleibt-die-neue-klebezettel-version/</guid>
		<description><![CDATA[Eigentlich habe ich im März mit der Neuentwicklung von Klebezettel begonnen (kommende Version 3.0). Allerdings habe ich seit mehreren Monaten nicht mehr weitergemacht.
Der erste Grund: Zeitmangel. Seit Ende März habe ich eine seht zeitintensive neue Stelle, mit der ich meinen Lebensunterhalt für mich und meine Kinder verdiene.
der Zweite Grund: Unsicherheit, wie es um die Zukunft [...]]]></description>
			<content:encoded><![CDATA[<p>Eigentlich habe ich im März mit der Neuentwicklung von Klebezettel begonnen (kommende Version 3.0). Allerdings habe ich seit mehreren Monaten nicht mehr weitergemacht.</p>
<p>Der erste Grund: Zeitmangel. Seit Ende März habe ich eine seht zeitintensive neue Stelle, mit der ich meinen Lebensunterhalt für mich und meine Kinder verdiene.</p>
<p>der Zweite Grund: Unsicherheit, wie es um die Zukunft der verwendeten Entwicklungsumgebung “Delphi” steht. </p>
<p>Seit Anfang an wird Klebezettel in der Programmiersprache Delphi entwickelt. Diese Programmiersprache stammt ursprünglich von der Firma Borland und wird mittlerweile von der Firma Embarcadero vertrieben. Schon seit einigen Jahren geht es nicht richtig voran in neuen Versionen von Delphi. Die letzte Delphi-Version, die ich gekauft hatte, war Delphi 2007. Seitdem warte ich auf eine neue Delphi-Version, die auch 64bit-Programme erstellen kann. Leider hat Embarcadero die Delphi-Entwickler auch mit der neuen Roadmap erneut vertröstet, eine erste Preview eines 64bit Compilers wird es erst 2011 geben.</p>
<p>Nun stelle ich mir die Frage: ist es überhaupt noch sinnvoll, weiterhin mit Delphi Software zu entwickeln? Nun, einerseits habe ich einige sehr gute Komponenten lizensiert, mit denen man in kurzer Zeit ansprechende, produktive Anwendungen entwickeln kann. Aber mit der wachsenden Unsicherheit bezüglich Delphis Zukunft wächst auch die Unsicherheit, wie lange die Komponentenhersteller ihre Komponenten noch pflegen.</p>
<p>Ich bin schwer am überlegen, eine neue Klebezettelversion wenn überhaupt nur mit c# (.net Framework) zu entwickeln. Mittlerweile haben laut meinem Webserver 25% aller Klebezettel-Nutzer Windows 7, sowie 15% Windows Vista – dort ist das benötigte .net Framework bereits installiert. Auf Windows XP kann das .net Framework ohne Probleme nachinstalliert werden – allerdings wird es dort auch schon in vielen Fällen installiert sein.</p>
<p>Vielleicht kann mir ja jemand bei der Entscheidungsfindung helfen…</p>
]]></content:encoded>
			<wfw:commentRss>http://www.holliesoft.de/weblog/2010/08/17/wo-bleibt-die-neue-klebezettel-version/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Symbol FileAge ist veraltet</title>
		<link>http://www.holliesoft.de/weblog/2008/10/26/symbol-fileage-ist-veraltet/</link>
		<comments>http://www.holliesoft.de/weblog/2008/10/26/symbol-fileage-ist-veraltet/#comments</comments>
		<pubDate>Sun, 26 Oct 2008 19:12:06 +0000</pubDate>
		<dc:creator>Patrick Hollerbach</dc:creator>
				<category><![CDATA[Delphi]]></category>

		<guid isPermaLink="false">http://www.holliesoft.de/weblog/?p=21</guid>
		<description><![CDATA[Beim Compilieren meiner eigenen Tools-Unit ist mir folgende Compiler-Warnung aufgefallen:

[DCC Warnung] PhoUtils.pas(1322): W1000 Symbol 'FileAge' ist veraltet

Die Hilfe brachte keinen Hinweis auf eine Alternativ-Funktion.
Eine Suche bei Google brachte den Hinweis: Die Alternativ-Funktion für FileAge ist&#8230; FileAge!
Die Funktion FileAge ist überladen. Die zweite Version wird wie folgt aufgerufen:

function FileAge(const FileName: string; out FileDateTime: TDateTime): Boolean;

Das Dateidatum [...]]]></description>
			<content:encoded><![CDATA[<p>Beim Compilieren meiner eigenen Tools-Unit ist mir folgende Compiler-Warnung aufgefallen:<br />
<code><br />
[DCC Warnung] PhoUtils.pas(1322): W1000 Symbol 'FileAge' ist veraltet<br />
</code></p>
<p>Die Hilfe brachte keinen Hinweis auf eine Alternativ-Funktion.</p>
<p>Eine Suche bei Google brachte den Hinweis: Die Alternativ-Funktion für FileAge ist&#8230; FileAge!<br />
Die Funktion FileAge ist überladen. Die zweite Version wird wie folgt aufgerufen:</p>
<p><code><br />
function FileAge(const FileName: string; out FileDateTime: TDateTime): Boolean;<br />
</code></p>
<p>Das Dateidatum wird hier über den Parameter FileDateTime zurückgegeben, die Funktion selbst gibt zurück, ob der Aufruf der Funktion erfolgreich war.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.holliesoft.de/weblog/2008/10/26/symbol-fileage-ist-veraltet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Einfache aber gute SQLite3-Wrapper-Klasse für Delphi</title>
		<link>http://www.holliesoft.de/weblog/2008/08/30/einfache-aber-gute-sqlite3-wrapper-klasse-fur-delphi/</link>
		<comments>http://www.holliesoft.de/weblog/2008/08/30/einfache-aber-gute-sqlite3-wrapper-klasse-fur-delphi/#comments</comments>
		<pubDate>Sat, 30 Aug 2008 14:10:11 +0000</pubDate>
		<dc:creator>Patrick Hollerbach</dc:creator>
				<category><![CDATA[Delphi]]></category>

		<guid isPermaLink="false">http://www.holliesoft.de/weblog/?p=18</guid>
		<description><![CDATA[Seit einiger Zeit verwende ich eine SQLite-Wrapperklasse für den Zugriff auf SQLite3-Datenbanken mit Delphi.
Die Klasse ist unter http://www.itwriting.com/blog/a-simple-delphi-wrapper-for-sqlite-3 zu finden.
Die Klasse ermöglicht nicht den Zugriff auf die Daten über Datensteuerungs-Komponenten (DBGrid etc.), sondern muss manuell im Quellcode angesprochen werden. Das ist aber nicht unbedingt ein Nachteil, denn dadurch kann die Klasse auch ohne in Delphi [...]]]></description>
			<content:encoded><![CDATA[<p>Seit einiger Zeit verwende ich eine SQLite-Wrapperklasse für den Zugriff auf SQLite3-Datenbanken mit Delphi.</p>
<p>Die Klasse ist unter <a href="http://www.itwriting.com/blog/a-simple-delphi-wrapper-for-sqlite-3">http://www.itwriting.com/blog/a-simple-delphi-wrapper-for-sqlite-3</a> zu finden.</p>
<p>Die Klasse ermöglicht <em><strong>nicht</strong></em> den Zugriff auf die Daten über Datensteuerungs-Komponenten (DBGrid etc.), sondern muss manuell im Quellcode angesprochen werden. Das ist aber nicht unbedingt ein Nachteil, denn dadurch kann die Klasse auch ohne in Delphi vorhandene Datenbankfunktionalität (z.B. Delphi 7 und Delphi 2005 PE) eingesetzt werden.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.holliesoft.de/weblog/2008/08/30/einfache-aber-gute-sqlite3-wrapper-klasse-fur-delphi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
