Thomas Wölfers Baustatik-Blog

Thomas Wölfers Baustatik-Blog

Delegates mit mehreren Return-Werten


In C# kann ein Delegate mehrere Methoden haben die im zugeordnet sind. (Die Methoden werden ja mit += zugewiesen, und nicht mit = ).

Angenommen man hat einen delegate der einen Rückgabewert hat:

delegate int GetResult( int paramerter );

Und weiter angenommen, diesem Delegate sind mehrere Methoden zugeordnet. Welchen Rückhabewert erhält man nun, wenn der Delegate zurückkehrt?

Antwort: Man bekommt den Rückgabewert der zuletzt aufgerufenen Methode des Delegate. Wenn das nicht ausreicht, kann man mit GetInvocationList() alle zugehörigen Methoden ermitteln und diese einzeln aufrufen. Das muss man dann aber manuell machen.

Dank an Eric Gunnerson.


RSS Reader im Browser


Wer sich lieber keinen RSS Reader installieren möchte, den kann man aber vielleicht von einem kostenlosen in den Internet Explorer integrierten RSS-Reader überzeugen: Pluck.

Wer diesen Text mit seinem Browser liest, den interessiert vielleicht das hier: Was ist RSS ?


D.I.E. Statiksoftware - jetzt auch im Buch vertreten


Vom Bauwerk-Verlag erscheint im Juni ein neues Nachschlagewerk für Bauingenieure. Herausgeber ist Prof. Dr.-Ing. Klaus Holschemacher von der HTWK Leipzig.

Und drin im Buch ist auch eine CD mit den aktuellen Baustatik-Programmen von uns, zum ausprobieren für mehrere Wochen. Dieses Buch ist übrigens überhaupt der Grund für den neuen CD-Browser auf unserer CD. Wenn man sich den Shot vom April genauer ansieht, dann gibts da nämlich auch einen Menü-Eintrag 'Zusatztexte zum Buch'. Dieser Menü-Eintrag ist auf der normalen CD nicht vorhanden: Bei der CD im Buch finden sich darunter zusätzliche Informationen, die im gedruckten Werk nicht enthalten sind.

Mehr Informationen zum Buch gibts bei Amazon.


Räumliches Tragwerk: Graphik schneller machen


Wenn Sie beim Tragwerksprogramm besonders viele Stäbe haben, dann führt das bisweilen dazu, das die Anzeige der Graphik ein wenig lahm wird. Mit vielen Stäben sogar sehr lahm.

Es gibt einen Weg die Anzeige zu beschleunigen - und zwar in zwei Stufen. Stelle Sie als erstes sicher, das unter Werkzeuge -> Optionen -> Sonstiges die Option 'Querschnitte mit hoher Detailgenauigkeit' ausgeschaltet ist. Besonders Profile mit Rundungen sehen dann zwar nicht mehr so hübsch aus - werden aber um ein Vielfaches schneller gezeichnet. (Natürlich können Sie die Anzeige der Querschnitte in den Optionen auch einfach ausschalten...)

Die zweite Performance-Verbesserung erhalten Sie ebenfalls durch einen Verlust an Schönheit: Stellen Sie alle Strichstärken (für die Anzeige, nicht fürs drucken) auf '0'. Das beschleunigt alle Zeichenvorgägnge wesentlich mehr, als man meinen sollte.

Der letzte Tipp funktioniert übrigens bei allen unseren Statikprogrammen, bringt aber am meisten beim Tragwerksprogramm und beim Programm für Plattenberechnungen.


Die Taskleiste verrutscht immer


Auch eine Sache die ich an fremden Rechnern immer wieder sehe, wenn ich jemandem über die Schulter schaue: Eigentlich soll irgendein Button auf der Taskleiste angeklickt oder ein Fensterrand woanders hingezogen werden - aber der Klick oder die Mausbewegung verrutscht und statt dessen befindet sich die Taskleiste plötzlich an einer anderen Stelle auf dem Bildschirm. Oder sie ist doppelt so hoch wie normal. Oder noch größer.

Das muss alles nicht passieren, wenn man das Ding einfach fixiert. Dazu zieht man die Taskleiste einmal an die Stelle an der man sie haben will und bringt sie dann auf die Größe die man haben will. (Vermutlich ist das meist am unteren Bildschirmrand, und genauso hoch wie der Start-Button).

Dann klickt man auf einen freien Bereich der Taskleiste und im dann sichtbaren Objektmenü auf 'Taskleiste fixieren'. Danach bewegt sich das Ding nicht mehr, und wird auch nicht mehr unbeabsichtigt vergrößert oder verkleinert.


C# 2.0 Spezification: Updates ab sofort verfügbar


Die Spezifikation für C# V2.0 ist ab sofort in einer neuen Version verfügbar. Die neue Infos betreffen Generics, Iterators, anonyme Methoden partielle Klassen und 'nullable types'. (Das Ding liegt als Word Dokument vor.) Tatsächlich verfügbar werden die neuen Sprachfeatures aber eigentlich erst mit Visual Studio 2005. Also in einem Jahr. Die Sache hat also keine besondere Eile :-).


Wieso eine DLL Probleme in mehreren Programmen beseitigt


Im Normalfall empfehle ich bei Updates der Statikprogramme grundsätzlich die Installation des CD-Rom Images aus dem Download-Bereich. Das macht die Sache schmerzfrei und stellt sicher, das wirklich immer alle Komponenten vorliegen - und man muss trotzdem nur eine einzelne Datei runterladen.

Trotzdem stellen wir manchmal (heute zum Beispiel :-)) auch einzelne DLLs im 'Patch' Ordner als Download zur Verfügung. Ich rate davon ab diese Patches zu benutzen - möchte aber trotzdem aus einem anderen Gesichtspunkt einmal auf diese DLLs eingehen. Es stellt sich in diesem Zusammenhang nämlich eine interessante Frage: Warum kann eine einzelne DLLs eigentlich ein Problem in mehreren Programmen beseitigen?

Dazu muss man wissen, wie sich Windows-Programme zusammensetzen können (und das im Fall unserer Baustatik-Software auch tun).

Ein Programm besteht aus einer Menge an Einzelteilen: Es gibt vom Computer ausführbaren Code, es gibt statische Daten (wie zum Beispiel die Icons oder die Texte auf den Menüs), es gibt Datenbibliotheken (wie zum Beispiel die Materialdatenbank) und vieles mehr.

Nun ist es so, das sich einige Teile davon eignen, an mehreren Stellen wiederverwendet zu werden. Bei der Materialdatenbank ist das einsichtig: Natürlich macht es Sinn, das alle Programme auf die gleiche Datenbank zugreifen - schließlich sind es ja auch immer die gleichen Materialien um die es geht.

Man kann aber eben nicht nur Daten, sondern auch Programmcode wiederverwenden. Zum Wiederverwenden von Programmcode gibt es diverse Methoden, und eine davon ist die, den Code in eine DLL zu packen. Die DLL wird dann erst zu dem Zeitpunkt mit einem Programm verbunden, zu dem das Programm (also die Datei mit der Erweiterung .EXE) gestartet wird - und nicht schon auf dem Rechner des Entwicklers, wie das mit dem Rest des Programmcodes der in der .EXE-Datei vorliegt geschehen ist.

Ist der Programmcode aber auf diese Art ausgelagert worden, kann er von jedem Programm benutzt werden. Effekt: Hat der Code in der DLL einen Fehler - dann tritt der auch bei allen Programmen auf, die die DLLs benutzen.

Beseitigt man den Fehler, dann sind auf einen Schlag mehrere Programme einen Fehler los. Und genau das ist der Grund, warum eine einzelne DLL mehrere Programme auf einen Schlag korrigieren kann.




Baustatik Demoversion ausprobieren »