Thomas Woelfers Baustatik Blog

Baustatik-Software und was sonst des Weges kommt

Neue Updates verfügbar

Diesmal für: Xmau (Mauerwerksberechnungen) und Xdur (Durchlaufträger). Alle Details wie immer im Update-Log und im Blog meines Bruders.

Was ich gestern abend gelernt habe: Martini-Cocktails

Die Herstellung von Martini-Cocktails ist interessanter, als man meinen möchte. Das ganze geht so:

Man nimmt ein wenig Martini (~ 1 cl) und tut es in den Cocktailmixer, und zwar zusammen mit Eiswürfeln. Das ganze rührt man dann ordentlich durch.

Jetzt kommt der interessante Teil: Nachdem man genug gerührt hat, kippt man den Martini wieder weg. Und zwar nicht in sich rein, sondern z.B. in den Ausguss. Als Resultat hat man etwas das sich offenbar "parfümierte Eiswürfel" nennt. (Den an dieser Stelle anbringbaren Witz über bestimmte weibliche Menschen lasse ich mal weg. :-))

Zugegebenermassen wird es nun weniger interessant: Man tut die Eiswürfel in ein Cocktail-Glas, in das man vorher eine Olive getan hat. Dann kommt Gin drüber. Fertig.

Outlook Express und die Fehlernummer 0x800C0133

Was ist zu tun, wenn Outlook Express keine eMails mehr abholt, und statt dessen nach einer langen Wartezeit eine Fehlermeldung mit der Fehlernummer 0X800C133 anzeigt?

Outlook Express speichert eingegangene, gelöschte und sonstwie verarbeitete Mails in Dateien mit der Dateierweiterung "dbx". Für jeden Ordner den OE anzeigt, gibt es eine solche Datei. Diese Dateien haben ein Limit bei der Dateigröße von 2 GB. Wird diese Größe überschritten, können keine weiteren Inhalte mehr darin abgelegt werden - und das abholen von Mails schlägt dann mit der angegebenen Fehlernummer fehl.

Wenn der Fehler auftritt kann man die eigene Festplatte einfach nach diesen *.dbx-Dateien durchsuchen, und diejenigen die zu groß geworden sind, umbenennen: Danach geht auch das abholen von Mails wieder.

Outlook aus Office, der große Bruder von Outlook Express, macht das übrigens deutlich besser und hat eine eingebaute Archivfunktion, die sich selbstständig darum kümmert, das die Datenbankdateien nicht zu groß werden.

 

Ein UITypeEditor und ein anonymes Delegate

Angenommen, man braucht einen ganz einfach UITypeEditor, zum Beispiel einen, der in einer Listbox eine Auswahl an Möglichkeiten anbietet. Das ist verhältnismäßig einfach zu haben: Die Kurzform von so einem Ding sieht so aus:

public class StyleFilenameEditor : UITypeEditor
{
   public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
   {
      ListBox listBox = new ListBox();
      listBox.Items.Add("Text 1"); // usw.
      IWindowsFormsEditorService editorService = (IWindowsFormsEditorService)provider.GetService(typeof(IWindowsFormsEditorService));
editorService.DropDownControl(listBox);
   

      return listBox.SelectedItem;
   }

   public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context)
   {   
      return UITypeEditorEditStyle.DropDown;
   }
}

Feine Sache, allerdings mit einem kleinen Haken: Man bekommt die Listbox nicht mehr zu, wenn man den Code so verwendet, wie ich ihn im Beispiel hingeschrieben habe. Grund: Der EditorService erwartet, das man ihm mitteilt, wenn er das zugehörige Drop-Down schliessen soll. Die offensichtliche Art ist dabei die folgende. Dabei merkt man sich den editorServive in einer privaten Variable, und hängt einen Event-Handler an das SelectedIndexChanged-Event der Listbox. In diesem Handler benutzt man dann die private Variable und ruf CloseDropdown auf:

      this.editorSerivce = ...

      listBox.SelectedIndexChanged +=new EventHandler(listBox_SelectedIndexChanged);

      void listBox_SelectedIndexChanged(object sender, EventArgs e)
      {
         this.editorService.CloseDrowDown();
      }

Mit einem anonymen Delegate geht das aber viel schöner. Man braucht keinen separaten Event-Handler und auch keine private Variable:

         listBox.SelectedIndexChanged += delegate(object sender, EventArgs e) { editorService.CloseDropDown(); };

Ein kurzer Tipp für unsichtbare Fenster

Das passiert mir manchmal: Ich verwende Programme die sich ihre "letzte" Fenster-Position merken. Dann verändere ich etwas an der Bildschirmkonfiguration - um beim nächsten Start eines solchen Programmes, ist dessen Fenster nicht mehr sichtbar. Grund: Wegen der veränderten Bildschirmkonfiguration liegt die "letzte" Startposition des Programms nun links oder rechts vom Bildschirm, also "außerhalb" der sichtbaren Fläche.

Jetzt kann man zwei Dinge tun. Erstens: Man sucht in der Registry nach Einträgen des betroffenen Programmes, hofft diejenigen zu finden, die sich mit der Fensterposition beschäftigen, und bastelt daran herum. Bis das Programm wieder an einer sichtbaren Stelle auftaucht - oder irgendwann einfach gar nicht mehr startet, weil seine Registry-Einträge verbastelt sind.

Besser (und viel einfacher) ist folgendes: Man startet das Programm. Dann klickt man in der Taskbar (dort ist das Programm-Icon nämlich auch dann sichtbar, wenn das Fenster unsichtbar ist) mit der rechten Maustaste auf das Programm-Icon und wählt den Befehl "Move" (verschieben). Dann drückt man einfach so lange auf die Cursor-rechts (oder -links) Taste, bis das Fenster zumindest teilweise sichtbar ist. Dann drückt man einmal Return (Enter). Fertig - jetzt kann man das Fenster einfach wieder mit der Maus an die gewünschte Stelle bewegen.

MaxiVista: Neue Version

Ich hatte schonmal drüber geschrieben: MaxiVista, ein Tool, mit dem man seine Arbeitsfläche am Bildschirm prima "aufbessern" kann. Jetzt gibt es eine neue Version davon - was alles neues drin ist, steht hier.

(Hinweis: Die Jungs von MaxiVista haben mich um diesen Hinweis gebeten, und mir dafür eine Voll-Lizenz für die neue Version geschenkt. Allerdings benutze ich MaxiVista momentan selbst nicht, da ich auf dem Desktop bereits mit 3 Bildschirmen ausgestattet bin.)

Killerspiele

Immer wenn solche Tragödien stattfinden, werden kurz danach die Rufe nach einem Verbot von "Killerspielen" laut. Dazu mag man stehen wie man will. Ich finde es aber interessant, das dabei eine simple Tatsache immer gern unter den Tisch fällt: Die Opfer werden meistens nicht mit Killerspiel-Kartons beworfen und dadurch verletzt oder gar getötet, sondern gängigerweise mit Schusswaffen beschossen.

Das scheint aber irgendwie kein Problem zu sein: Liegt vermutlich daran, das Schützenvereine und sonstige Veranstaltungen, mit denen man an derlei Waffen kommt, den verantwortungsvollen Umgang damit hochhalten.

Steckt das Druckerkabel? Ist der Drucker eingeschaltet?

Jeder kennt solche Stories oder hat schon selbst mal aktiv an der Entstehung einer solchen mitgearbeitet. Geschichten, die dafür zuständig sind, das Fragen wie "Steckt das Druckerkabel?" oder "Ist der Drucker auch eingeschaltet?" eine der ersten Fragen sind, die man im Support so stellt.

Genau - sehr lustig: Der Drucker druckt nicht, und der Mensch mit dem Druckerproblem kommt nicht von selbst auf die Idee nachzusehen, ob das blöde Kabel drinsteckt. Was haben wir nicht alle gelacht... :-)

Für zukünftige Updates, die wir per BITS durchführen wollen, habe ich heute den BITS Service auf unserem Webserver aktiviert. Und wollte den natürlich auch testen. Das geht am einfachsten, indem man das BITSAdmin Tool verwendet. Das Ding ist Teil der XP SP2 Support Tools, und die sind zwar auf meinem Laptop, aber nicht auf meinem Desktop installiert.

Also: Laptop angeworfen, und per BITSAdmin versucht, ein File vom Webserver auf den Laptop runterzuladen. Das führte aber dummerweise nur zu einem TRANSIENT_ERROR. Fein: Das lokale Bits konnte das File nicht runterladen, und natürlich gabs auf dem Server auch nicht den geringsten Hinweis auf irgendein Problem. Kein Logfileeintrag. Einfach nichts.

Ich habe also das offensichtliche getan, und alles an technischer Dokumentation zu BITS gelesen, was ich gefunde habe. (Der Beste Artikel zu BITS und .NET ist übrigens der hier.) Das hatte nur einen etwas eingeschränkten Erfolg, den auf meine nächste Frage nach "Bitte ein Bit" meinte BITSAdmin: "TRANSIENT_ERROR". Tolle Sache.

Etwa 3 Stunden später kam dann die Erleuchtung: Es hilft, wenn man das Netzwerkkabel in den Laptop steckt.

Was habe ich gelacht... ;-)

Windows Desktop Search: Mehr Funktionen

Eins vorab: Ich bin letzthin gefragt worden, wofür man die Desktop-Search denn braucht, schliesslich gibt es ja eine Suchfunktion in XP. Das ist auch richtig - aber die ist halt extrem langsam, weil sie jedesmal jede Datei aufs neue Untersucht. Der Desktop Search baut sich hingegen einmal einen Index (das dauert am Anfang ein paar Stunden im Hintergrund) - und liefert danach die Suchergebnisse "instant": Noch während man das Suchwort tippt, werden schon die ersten Ergebnisse angezeigt. Das ganze ist also deutlich schneller als die in Windows eingebaute Suche...

Davon einmal abgesehen: Das Ding kann auch noch mehr als einfach nur suchen. Die komplette verfügbare Syntax findet sich hier.