Unterhaltung fürs Wochenende

30. Januar 2009 14:27

Die nächsten Termine

29. Januar 2009 10:48

Die Termine für die beiden nächsten Anwenderseminare (in München und Oberhausen) stehen fest - beide sind im März. Details und Links zu den Anmeldeformularen gibt es hier.

Auch der Termin für den nächsten Stammtisch in München steht fest: Der ist am Dienstag den 24.3. ab 19:30, wie immer im Pauls in der Maxvorstadt. Ich bitte um eine kurze Mail (an tw@die.de ), falls Sie kommen wollen - je frühzeitiger, umso besser :-)

Wie man herausfindet, ob die eigene C# Anwendung als x86 oder x64 läuft

24. Januar 2009 16:47

Sofern man die "Platform Target" eines C# Projectes nicht explizit setzt, dann wird die Anwendung zur Laufzeit auf einer x86 Platform eine x86 Anwendung sein, und auf einer x64 Platform eine x64 Anwendung: Das ist praktisch, wenn man es nur mit managed Code zu tun hat, denn man bekommt die 64bit Variante quasi geschenkt.

Wenn man aber auch nativen Code hat muss man - je nachdem wie man die Anwendung baut - in Abhängigkeit der aktuellen Platform unterschiedliche DLLs laden. Also zum Beispiel die Calc32.dll für x86 und die Calc64.dll unter x64. Wie findet man aber nun heraus, ob man sich in einer x86 oder in einer x64 Umgebung befindet? MSDN läst sich zu diesem Thema nicht besonders aus; zumindest konnte ich nichts finden.

Allerdings liegt das vielleicht daran, das die Lösung mehr als einfach ist: Alles was man tun muss ist die Größe eines IntPtr anzusehen. Hat der Zeiger eine Größe von 8 Byte, dann befindet man sich in einer x64 Umgebung. (8 Byte mal 8 Bits => 64 bit).

Manche Dinge sind wirklich deutlich einfacher als man meinen sollte... :-)

Eine Anwender-Konstruktion aus der Baustatik

23. Januar 2009 17:26

Aufwendige Sache: Knapp 800 Knoten, knapp 1200 Stäbe, 21 unterschiedliche Querschnitte, und knapp 20 Faltwerkselemente.

 

Ausdruck von Navigationspunkten: Woher kommen die Überschriften?

23. Januar 2009 15:40

Der Ausdruck von Navigationspunkten - bzw. der Ausdruck von deren Überschriften - ist ein wenig kompliziert. Um genau zu sein: Er funktioniert in der aktuellen nicht wirklich richtig.... was zwar bisher nicht wirklich viele Anwender gestört hat, es wird sich aber im nächsten Updaten trotzdem ändern - und hoffentlich besser werden :-)

Es bleibt aber dabei, das es vielleicht nicht auf den ersten Blick einsichtig ist, woher die Beschriftungen eigentlich kommen. Darum will ich hier einmal versuchen, das zu erklären. Beim Ausdruck eines Navigationspunktes gibt es bis zu zwei Überschriften. Die eine davon ist die Überschrift die angibt, welches Ergebnis gerade angezeigt wird. An dieser Überschrift kann man nichts umstellen und man kann sie auch nicht abschalten: Enthält der Navigationspunkt eine Ergebnisdarstellung, dann wird die Überschrift angezeigt. Enthält er keine, dann gibt es die Überschrift auch nicht.

Oberhalb der Ergebnisbeschreibung gibt es eine (optionale) weitere Überschrift. Diese zweite Überschrift kann man pro Navigationspunkt in der Ausdrucksteuerung ein- und ausschalten: Sie wird also entweder mit ausgegeben oder nicht. Wenn Sie ausgegeben wird, dann zeigt sie einen von zwei möglichen Texten an: Hat man im Navigationspunkt einen Kommentar eingegeben, dann wird der Kommentartext ausgegeben. Hat man keinen Kommentartext eingegeben, dann wird als Überschrift der Text "Abb.: " und der Name des Navigationspunktes ausgegeben.

Unterhaltung fürs Wochenende

23. Januar 2009 15:11

Diesmal: Frogger

Gestern in München: Vortrag von Oliver Scheer zu Silverlight 2

22. Januar 2009 10:24

Etwa 4 Stunden rund um Silverlight 2: Wer es nicht weiss - Silverlight 2 ist im wesentlichen WPF im Browser (Safari, Firefox, IE), für verschiedene Systeme (OS/X, Windows, Linux [in Vorbereitung]) und auch auf verschiedenen Geräten (auch Telefone ohne Window Mobile).

Der Vortrag war nett und unterhaltsam, brachte aber nichts wirklich neues: Wer sich "von selbst" auf dem laufenden hält wird nicht viel gelernt haben - für alle anderen gab es eine schöne Rundum-Ansicht der zu Silverlight gehörenden Infrastruktur und deren Möglichkeiten. Besonders gefiel mir eines von Olivers Lieblingsausdrücken: Das Web 2.0 konforme Rechteck - mit runden Ecken... :-)

Jedenfalls kann ich den Vortrag jedem empfehlen, der sich auf die schnelle einen Einblick in Silverlight verschaffen will - es gibt, so glaube ich - auch noch ein paar Termine.

Von Managed C++ nach C++/CLI

21. Januar 2009 11:38

In VS 2008 ist die Syntax von Managed C++ bereits deprecated - höchste Zeit, auf C++/CLI umzustellen. Die ausführliche Referenz dazu befindet sich hier: C++/CLI Migration Primer - ich denke für die meinsten Fälle kommt man aber mit einer Kurzfassung aus:

Zeiger
Ein Vorteil von C++/CLI über die "managed Extensions" ist die Tatsache, das viele Dinge viel schöner hingeschrieben werden können - und auch besser zu erkennen sind. Das geht mit Zeigern los: Ein Zeiger in den Managed Heap wird nun mit ^ statt mit * markiert:  Faselwurst^ pWurst zeigt also auf eine Instanz vom Typ Faselwurst, die sich im Managed Heap befindet.

Typen
Bisher wurde eine Klasse als gc__ class TypeName definiert - jetzt heist es statt dessen "ref class TypeName".

Arrays
Bisher war ein Array aus Instanzen im Managed Heap ein gc__[] variablenName TypeName. Das heist nun array<Type>(Dimension). Ein Zeiger auf so ein Array ist also ein array<Type>^ varName.

Properties
Die neue Syntax für Properties ähnelt doch sehr stark der von C#:
property int Zahl
{
    int get()
    {
    }
    void set( int v)
    {
        member = v;
    }
}

Interface-Implementierungen
Implementiert eine Klasse ein Interface, dann müssen die implementierten Member nun "virtual" sein.

Die bisher aufgeführten Änderungen sind weiter nicht dramatisch, sonfern man weiss, wie man die Dinge hinschreiben muss: Wirklich falsch machen kann man eigentlich nichts, denn der Compiler bewirft einen schon mit passenden Fehlermeldungen. Das ist in einem besonderen Fall aber nicht so, und dabei geht es um die Destruktoren. Das Problem: Der Compiler meckert hier nichts an, denn man kann zwar weiterhin die "alte" Destruktor-Notation verwenden: Dummerweise hat sich aber deren Semantik verändert. Macht man die Sache aber falsch und reagiert nicht auf die Semantik-Änderung, gibt es Speicher-Lecks im nativen Heap. Das passiert, wenn man eine C++/CLI Instanz hat, die als Member Zeiger auf den nativen Heap hat. Die Instanz an sich wird bei Notwendigkeit brav vom GC eingesammelt und verworfen. Dabei wird der normale Destruktor aber nicht unbedingt aufgerufen - zumindest nicht, wenn man nicht weiter tätig wird. Resultat: Leck. Das war früher nicht so - daher muss man auf diese Problematik gesondert achten. Die ausführliche Referenz zum Thema findet sich hier.

Im Wesentlichen läuft es aber auf folgendes hinaus: Damit die Destruktoren der C++/CLI Typen "richtig" aufgerufen werden, braucht man immer ein Konstrukt dieser Art:

ref class MyType
{
private:
   int* pNative;

// ..... weitere implementierungs-Details in deren Zuge pNative auf allozierten nativen Speicher zeigt.

public:
   // Das wird im IL ein Dispose()
   ~MyType() { Destruct(); }
   // Das wird im IL ein Finalizer.
   !MyType() { Destruct(); }

private:
   void Destruct()
   {
      if( pNative != 0)
      {
           delete pNative;
           pNative = 0;
      }
   }
};

Nur als Hinweis: Das ist so nicht unbedingt die effizienteste Methode, die Sache zu regeln - daher ist es u.U. ganz sinnvoll den oben verlinkten Artikel doch einmal genauer zu studieren.

Kurze Erinnerung: Der Anwenderstammtisch

19. Januar 2009 14:19

Der nächste Münchner Stammtisch findet in der kommenden Woche, am 26.1.2009 statt. Details zum Stammtisch hier.

Unterhaltung fürs Wochenende

16. Januar 2009 15:03

Diesmal: Tetris (auf n-blox klicken)

Ersatzquerschnitte in der Baustatik

16. Januar 2009 10:09

In der Baustatik erscheinen in den Dialogen für Querschnitte und Materialien immer nur die Elemente, die zu den eingangs ausgewählten Normen passen. Was aber, wenn man in einem gegebenen System Ersatzquerschnitte per A/I definieren will? Solche Querschnitte sind naturgegeben nicht Normbehaftet, und werden darum auch im normalen Querschnittsdialog nicht angeboten - denn sie passen ja "nie" zur ausgewählten Norm.

Man kann natürlich trotzdem Ersatzquerschnitte definieren, und das geht so: Zunächst wählt man den Befehl Datei -> Normen auswählen.

Der öffnet den Dialog zum hinzufügen von Normen zum aktuellen Dokument. Dort wählt man dann - ganz gleich, welche Norm(en) schon ausgewählt sind - zusätzlich die Option "Keine Norm".

Wenn man dann auf den Dialog für die Profileauswahl geht, erscheinen dort auch die nicht normbehafteten Querschnitte - und man kann neue per A/I definieren.

Baustatik hat einen Fehler entdeckt und muß beendet werden...

15. Januar 2009 14:40

In letzter Zeit - um genau zu sein: Nach dem letzten Update - habe ich 2 "merkwürdige" Fehler gefunden, die aber dankbarerweise leicht zu beheben sind: Beide machen sich beim Start der Baustatik mit der oben genannten Fehlermeldung bemerkbar. Das Programm zeigt nur sein Logo und dann die Fehlermeldung an - starten tut es nicht.

Das erste Problem scheint mit dem "neue" Installationsprogramm zusammenzuhängen. Aus mir bisher noch immer unklaren Gründen wird manchmal die Komponente "vcredist_x86.exe" aus dem Installationsordner "vcredist_x86" nicht automatisch installiert. In allen unseren Testfällen klappt das natürlich wunderbar - nur gibt es ganz offenkundig Fälle auf Systemen von Kunden, bei denen diese Komponente nicht automatisch mit installiert wird. Wenn das passiert, gibts beim Programmstart die genannte Fehlermeldung. Ich versuche noch herauszufinden, woran das Problem eigentlich liegt - aber bis dahin kann man das Problem lösen, indem man diese Komponente einfach einmal von Hand installiert. (Ist das einmal geschehen braucht man das nicht wieder tun - auch nicht bei zukünftigen Updates: Zumindest so lange nicht, bis wir nicht wieder einmal die Entwicklungswerkzeuge wechseln [Also vermutlich Ende dieses Jahres :-)]).

Nummer 2 hat meiner Ansicht nach nichts mit der neuen Version des Installationsprogrammes zu tun: Aber in einem mir bekannten Fall lag eine "zerstörte" Installation der Baustatik vor, bei der teilweise DLLs einer alten und teilweise DLLs der aktuellen Version vorlagen. Sowas kann man eigentlich mit unserem Installationsprogramm gar nicht erzeugen - ich vermute, das da irgendwelche Anti-Viren (oder ähnliche) Programme im Spiel sind, und fröhlich die richtigen Dateiversionen durch falsche ersetzen - oder sowas in der Art. Das läßt sich aber folgendermaßen lösen: Einmal die "Baustatik" über die Systemsteuerung de-installieren und danach einfach nochmal installieren: Das entfernt alle "falschen" DLLs und stellt wieder eine funktionstüchtige Installation her.

Ausdruck von Überlagerungs-Ergebnissen: So wählt man die Bemessungs-Situation

14. Januar 2009 12:17

Der komplette Ausdruck in der Baustatik wird über die Ausgabesteuerung kontrolliert. Wenn man Ergebnisse einmal nicht graphisch sondern tabellarisch ausdrucken will, dann kann man über die Ausgabesteuerung auch Einfluss darauf nehmen, was genau die Tabellen enthalten sollen. Auf jeder Ebene des Baumes der Ausgabesteuerung kann man dabei unterschiedliche Dinge festlegen, die dann "nach unten" vererbt werden. Um Einfluss auf den tabellarischen Ausdruck von Ergebnissen aus linearen Überlagerungsregeln zu nehmen, öffnet man zunächst den Baum an passender Stelle, und geht dann auf das Element, das man beeinflussen will.

Angenommen, man möchte die Bemessungssituation für den Ausdruck der Verformungen festlegen - dann braucht man folgendes Element:

Im unteren Bereich des Dialoges kann man dann die zugehörigen Parameter einstellen. Zur Auswahl der Bemessungssituation (und der Norm) klappt man die Normauswahl auf: Dort kann man dann alle Situationen auswählen, die man ausdrucken möchte. (Praktischerweise braucht man das alles aber normalerweise nicht zu tun - mit den Voreinstellungen des Programms werden im Allgemeinen schon die Dinge gedruckt, die man will...)

Graphiken mit der Baustatik ausgeben

14. Januar 2009 10:50

Ich hatte heute eine Anfrage, ob es mit der Baustatik eine Möglichkeit gebe - abgesehen von einer Bildschirmhardcopy - Graphiken auf einem Drucker auszugeben. Und in der Tat - natürlich gibt es die: Um genau zu sein gibt es zur Zeit 4 Möglichkeiten.

1.) Per Zwischenablage und einem externen Programm
Dazu zeigt man eine Graphik an, wählt den Befehl Bearbeiten -> Kopieren, öffnet ein Graphikfähiges Programm (Word, Paint, etc.) und wählt dort Bearbeiten -> Einfügen.

2.) Per "Sofortbild"
(Diese Variante entspricht in Wesentlichem der Art und Weise, wie in Xpla gedruckt wurde.) Dazu zeigt man eine Graphik an und wählt dann Datei -> Drucken -> Sofortbild

3.) Per Navigationspunkt im normalen Ausdruckprotokoll
(Das ist die komfortabelste Variante, denn Navigationspunkte "überleben" auch Änderungen am System. Man kann also einen Navigationspunkt von einer Ergebnisgraphik anlegen, und dann das System verändern: Wird dann gedruckt, enthält der Navigationspunkt die Ergebnisse des geänderten Systems.). Dazu zunächst eine Graphik anzeigen, dann einen Navigationspunkt anlegen. Das geht mit dem Button mit der Kamera, oder oer per Erzeugen -> Navigationspunkt anlegen.

Alle Navigationspunkte erscheinen in der Ausgabesteuerung (Datei -> Drucken -> Ausgabesteuerung) und können dort einzeln ein- und ausgeschaltet werden.

4.) Für hochauflösende Graphiken mit "beliebigen" Auflösungen
Das geht mit dem Befehl "Bild aus Navigationspunkt". Der befindet sich im Objektmenü (rechtsklick) der Navigationspunkte in der Dokumenten-Ansicht.

Der neue Dialog für automatische Updates

13. Januar 2009 13:05

Die Baustatik ist mit einem Mechanismus für automatische Updates ausgestattet. Wenn Sie das Programm starten, dann überprüft es, ob auf www.die.de eine neue Version vorliegt. Bisher passierte das alles im Hintergrund und wurde nur mit ein paar Meldungen im Meldungs-Fenster dokumentiert. Das führte allerdings zu einigen Problemen: Einige Kunden haben die Meldungen gar nicht gesehen und anderen fanden dann die heruntergeladene Update-Datei nicht mehr. Darum haben wir den Mechanismus grundlegend verändert - er ist nun viel sichtbarer, als das früher der Fall war.

Wenn das Programm gestartet wurde und eine neue Version verfügbar ist, dann erscheint nun folgende Dialogbox:

Mit den beiden Links rechts auf der Dialogbox öffnen Sie einen Web-Browser, der Hilfsinformationen von unserem Webserver anzeigt. Mit dem Button "Später erinnern" wird der Dialog geschlossen und es gibt erst beim nächsten Programmstart wieder einen Hinweis auf die Updates. Wenn Sie auf "Update herunterladen" klicken, dann öffnet sich ein normalen Datei-Speichern Dialog, mit dem Sie den Ort angeben können, wo die Update-Datei gespeichert werden soll. Danach ändert sich die Dialogbox und sieht so aus:

Der Fortschrittsmelder gibt an, wie weit der Download vorangeschritten ist. Bei mir dauert das mit Version 1.36 etwa eine Minute - das liegt aber nur daran, das das Update aus anderen Gründen dieses Mal sehr groß ausgefallen ist. Wenn einem die Sache zu lange dauert, dann kann man den Download per "Download abbrechen" beenden und das Update zu einem anderen Zeitpunkt herunterladen. Ist alles heruntergeladen, dann sieht der Dialog wie folgt aus:

Zu diesem Zeitpunkt kann man das Fenster mit "OK" schliessen. Danach sollte man das Programm beenden und die "Setup" Datei aus der heruntergeladenen ZIP-Datei ausführen: Erst dieser letzte Schritt installiert das Update auch tatsächlich.

Neue Updates verfügbar

12. Januar 2009 19:16

Ab sofort gibt es ein neues Update der "Baustatik" zum Download. Abgesehen von einem Fehler im Durchlaufträger (Details wie immer im Update-Protokoll) handelt es sich im Wesentlichen um eine Version, die mit den neu bei uns eingesetzten Entwicklungswerkzeugen hergestellt wurde. Bisher wurde die Baustatik mit dem Visual Studio 2005 hergestellt - jetzt nehmen wir das Visual Studio 2008. Das hat aber zunächst noch keinerlei Auswirkungen auf das Programm - zumindest sollte es keine haben. (Es wird bei späteren Updates Auswirkungen haben - zur Zeit aber ging es uns nur um die Umstellung.)

Allerdings haben die neuen Tools natürlich auch neue Laufzeitbibliotheken - und die müssen mit installiert werden. Darum ist bei diesem Update nicht nur die "normale" Setup-Datei mit allen Komponenten ausgestattet, sondern auch die normalerweise viel kleinere "Autoupdate" Datei. Jeder der zur Zeit eine Version kleiner 1.36 einsetzt erhält über die automatischen Updates das "umfangreiche" Paket - in der Zukunft wird es dann wieder ein "kleines" und eine "großes" Paket geben.

Unterhaltung fürs Wochenende

9. Januar 2009 14:29

Diesmal mit Rene Marik: Maulwurf und Titanic

Windows 7: Beta verfügbar

8. Januar 2009 16:45

Ab heute ist es verfügbar, das Beta für den Nachfolger von Vista: Windows 7. Musste ich natürlich sofort ausprobieren - sieht ganz hübsch aus und hat eine ganze Menge "neues" beigepackt.... Die Entwicklungsumgebung für PowerShell 2 kann ich beispielsweise noch gar nicht. Wie gut die Sache mit unseren Programmen klappt werde ich in den nächsten Tagen ausprobieren - es würde mich allerdings wundern, wenn wir irgendwelche Änderungen vornehmen müssen...

Alle Patches da?

7. Januar 2009 15:55

Von Secunia gibt es ein praktisches (für privaten Gebrauch kostenloses) Tool: der Secunia Personal Software Inspector untersucht die auf einem Rechner installierten Programme und überprüft dabei, ob alle bekannten Sicherheitsupdates für dieses Programme installiert wurden. Wenn man die Automatischen Updates für Windows eingeschaltet hat, dann bekommt man natürlich die Windows-Patches (und mit Microsoft-Update auch die für andere Microsoft-Produkte) automatisch: Was aber ist mit der Software von anderen Herstellern? Sind auch tatsächlich die Apple-Programme wie iTunes und Safari auf dem neuesten Stand? Und was ist mit Software von Adobe, Paint.Net und weiteren? Secunia PSI sagt es einem. Download hier.

Kalender

<<  Februar 2012  >>
MoDiMiDoFrSaSo
303112345
6789101112
13141516171819
20212223242526
2728291234
567891011

View posts in large calendar