Allgemein


AllgemeinMartin Richter - Sa 28 Jan 2017 09:54

Am 16. und 17. Mai 2017 wird diesmal im Microsoft Hauptquartier in München die nächste Advanced Developers Conference C++ stattfinden.

Hannes Preishuber und sein bewährtes ppedv Team richten wieder eine Konferenz zu C++ aus.
Ich bin gespannt was wohl diesmal an der Abendveranstaltung  am Dienstag geplant sein wird. Diese haben zumindest für mich ja schon fast einen „legendären“ 😉 Ruf und haben immer viel Spaß und Abwechslung geboten.

Neben dem (immer wieder guten) Social-Event bei dem man viele Kollegen treffen kann und darf, werden sicherlich wieder einige gute Vorträge über die nächsten Evolutionsstufen C++17 und C++20 zu erwarten sein. Und ich tippe mal das auch einige Microsoft Sprecher zu hören sein werden (wenn denn es schon bei Microsoft stattfindet). Ich bin gespannt was es vielleicht auch neues mit Microsoft in Verbindung mit C++ zu hören geben wird.

Mehr dazu unter dem Link http://adcpp.de/2017

 

AllgemeinReal LifeSonstigesMartin Richter - Di 11 Aug 2015 20:17

Angeblich gibt es eine Weisheit der Dakota Indianer die besagt: „Wenn Du entdeckst, dass Du ein totes Pferd reitest, steig ab.“

Ich bezweifle schwer, dass die Indianer solch eine Dämlichkeit tatsächlich als Weisheit in Ihren Überlieferungen haben. Wie auch von anderen Quellen im Netz wird dieser Satz eher Börsenspekulanten zugeschrieben, die in etwa so geartet ist wie: Versuche nie, ein fallendes Messer aufzufangen!

Aber ganz egal. Um diese „Weisheit“, die jedem Menschen sofort logisch, emotional und auch inhaltlich einleuchtet ranken sich je nach Betriebsfeld und Umgebung weitere nette hilfreiche Anmerkungen. Ich war im Netz ein wenig Suchen und habe von allen möglichen Seiten (Unternehmensberatungen, Seminaren, Politik) einmal Varianten gesammelt, denn die Sätze gefallen mir einfach und leider gehört es zu unser aller Alltag, dass jeder von uns schon mal ein totes Pferd geritten hat, oder evtl. sogar aktuell eines im Stall stehen hat.

Hier also meine kleine Sammlung, die ich gekürzt und zusammengefasst habe in alphabetischer Ordnung. Dabei darf sich jeder selbst seine Gedanken dazu machen aus welchem Anwendungsbereich der Rat wohl kam. Übrigens finde ich persönlich den Abschnitt mit den Strategien am Besten.
Also viel Spaß beim Schmunzeln! 🙂

  • Das Pensions Eintrittsalter für tote Pferde wird drastisch verringert.
  • Das tote Pferd wird „reengineert“.
  • Es werden Berater engagiert um das Reiten toter Pferde zu optimieren.
  • Es werden Mittel eingekauft, die tote Pferde schneller laufen lassen.
  • Es wird angeordnet, daß Pferde nicht mehr mitten im Fluß gewechselt werden dürfen, weil dies die Ursache des Todes gewesen sein könnte.
  • Es wird restrukturiert, damit das tote Pferd in einem anderen Bereich tätig ist.
  • Im Rahmen eines internationalen Artenschutzabkommens verpflichten sich alle Partner, das Aussterben toter Pferde zu verhindern.
  • Wir beantragen Fördermittel der EU aus dem Landwirtschaftsfond für Pferdehaltung.
  • Wir beauftragen eine renommierte Beratungsfirma mit einem Gutachten, ob es billigere und leistungsfähigere tote Pferde gibt.
  • Wir berufen einen ämterübergreifenden Arbeitskreis, um das tote Pferd zu analysieren.
  • Wir beschäftigen externe Berater, die erklären, wir müssten Personal entlassen, um das tote Pferd preiswerter zum traben zu bringen.
  • Wie beschließen Feinstaubplaketten und Abwrackprämien für Pferde.
  • Wir besorgen eine größere Peitsche.
  • Wir besorgen eine Peitsche die größere Schmerzen verursacht.
  • Wir besorgen eine stärkere Peitsche.
  • Wir besuchen andere Orte, um zu sehen, wie man dort tote Pferde reitet.
  • Wir besuchen andere Verwaltungen, um zu sehen, wie man dort tote Pferde reitet.
  • Wir besuchen teure Seminare um mehr über die Lebensgewohnheiten toter Pferde zu lernen.
  • Wir bezahlen eine Tierarzt, der das Innere des Pferdes umorganisiert.
  • Wir bilden eine neue Abteilung und integrieren alle toten Pferde um Synergien zu nutzen.
  • Wir bilden eine Task-Force, um das Pferd wiederzubeleben.
  • Wir bilden einen Gebetskreis, der das Pferd gesund betet.
  • Wir bilden einen Qualitätszirkel, um eine Verwendung für tote Pferde zu finden.
  • Wir bilden innerhalb der Verwaltung ein neues Sachgebiet mit Integration aller toten Pferde, um Synergieeffekte zu nutzen.
  • Wir bringen die toten Pferde unter einem phantasievollen Namen an die Börse.
  • Wir bringen im Rahmen des Budgets die Produkt- und die Finanzverantwortung des toten Pferdes zur Deckung.
  • Wir definieren ein eigenes Produkt „Reiten toter Pferde“.
  • Wir entwickeln ein Motivationsprogramm für tote Pferde.
  • Wir erhöhen die Qualitätsstandards für den Beritt toter Pferde.
  • Wir erklären, dass ein totes Pferd von Anfang an unser Ziel war.
  • Wir erklären, dass das Reiten toter Pferde alternativlos ist.
  • Wir erklären, dass unser Pferd besser, schneller und billiger tot ist als andere Pferde.
  • Wir erklären: Die Eltern des Pferdes und das Privatfernsehen seien Schuld.
  • Wir erklären: Die toten Pferde anderer Organisationen seien noch toter als unseres.
  • Wir erklären: Durch eine gesamteuropäische Lösung würde das Pferd wieder laufen.
  • Wir erklären: Kein Pferd kann so tot sein, das wir es nicht mehr reiten können.
  • Wir erklären: Kein Pferd kann so tot sein, dass man es nicht doch motivieren könnte.
  • Wir erklären: Kein Pferd kann so tot sein, dass man es nicht noch schlagen könnte.
  • Wir erklären: So haben wir das Pferd doch immer geritten.
  • Wir erklären: Wenn man das tote Pferd schon nicht reiten kann, dann kann es doch wenigstens eine Kutsche ziehen.
  • Wir erläutern dem Pferd, dass sein Verhalten zur Privatisierung öffentlicher Dienstleistungen führen könnte.
  • Wir ernennen einen Verwaltungsmitarbeiter zum Beauftragten für das Totepferdewesen.
  • Wir erschießen alle lebendigen Pferde, um die Chancen unseres toten Pferdes zu erhöhen.
  • Wir erstellen eine Präsentation in der wir aufzeigen, was das Pferd könnte, wenn es noch leben würde.
  • Wir frieren die Pferde ein und warten auf eine neue Technik, die es ihnen ermöglicht, tote Pferde zu reiten.
  • Wir gewähren dem Reiter eine Leistungspämie, um seine Motivation zu erhöhen.
  • Wir gründen einen Arbeitskreis, um das Pferd zu analysieren.
  • Wir gründen eine Kommission, um den Sattel zu analysieren.
  • Wir kaufen etwas zu, das tote Pferde schneller laufen lässt.
  • Wir kaufen Leute von außerhalb ein, die angeblich tote Pferde reiten können.
  • Wir laden zu einem Dead-Horse-20-Gipfel ein, mit vielen Fotos für die Pferdenachrichten.
  • Wir lassen das tote Pferd 48 Stunden ausruhen und probieren aus, ob es danach wieder läuft.
  • Wir lassen das tote Pferd nach DIN EN ISO 9001 zertifizieren.
  • Wir lassen den Stall renovieren.
  • Wir legen das tote Pferd bei jemand anderem in den Stall und behaupten, es sei seines.
  • Wir leugnen, jemals ein Pferd besessen zu haben.
  • Wir machen auf Kosten der Pferdebesitzer Urlaub in anderen Ländern, um zu sehen, wie man dort tote Pferde reitet.
  • Wir machen eine Studie, um zu sehen, ob es bessere oder billigere Pferde gibt.
  • Wir machen eine Studie, um zu sehen, ob es billigere Berater gibt.
  • Wir melden das Pferd bei einem Weiterbildungskursus zur Selbstmotivation an.
  • Wir nennen das tote Pferd „Dead Horse Power“ und bieten es als neuestes Produkt auf dem zentralafrikanischen Markt an.
  • Wir ordnen Überstunden für Reiter und Pferd an.
  • Wir organisieren regelmäßige Teamgespräche mit einem externen Supervisor, um die Kommunikation zwischen Reiter und totem Pferd zu verbesseren.
  • Wir outsourcen das tote Pferd. Der Subunternehmer kann es wahrscheinlich besser reiten.
  • Wir praktizieren „Lean-Horse-Management“, d.h. wir führen Schulungen mit dem Reiter durch, um das tote Pferd mit Hilfe einer optimierten Ernährung von überflüssigen Pfunden zu befreien.
  • Wir richten eine unabhängige Kostenstelle für tote Pferde ein.
  • Wir schicken den Reiter auf ein Weiterbildungsseminar, damit er besser reiten lernt.
  • Wir schieben eine Trainingseinheit ein, um besser reiten zu lernen.
  • Wir schirren mehrere tote Pferde zusammen an, damit sie gemeinsam schneller werden.
  • Wir schlagen dem Personalrat vor, Leistungsanreize für tote Pferde einzuführen.
  • Wir schließen mit dem Personalrat eine Dienstvereinbarung über den Einsatz toter Pferde in der Verwaltung.
  • Wir schließen mit dem Reiter eine Zielvereinbarung über das Reiten toter Pferde.
  • Wir schließen uns einem interkommunalen Vergleichsring an, um entsprechend dem best-practice-Gedanken das tote Pferd zu optimieren.
  • Wir schreiben die Stelle des Reiters des toten Pferdes bundesweit aus, nachdem sich aus dem eigenen Haus kein qualifizierter Bewerber gefunden hat.
  • Wir senden jemandem das tote Pferd als Geschenk. Geschenke darf man nicht zurücksenden.
  • Wir setzen den Reiter um und schreiben die Stelle verwaltungsintern aus.
  • Wir sourcen das Pferd aus.
  • Wir sourcen den Stall für tote Pferde aus, um Futterkosten zu sparen.
  • Wir starten einen internen Ideenwettbewerb zum Reiten toter Pferde.
  • Wir stellen dem Reiter eine Beförderung in Aussicht.
  • Wir stellen fest, dass die anderen auch tote Pferde reiten und erklären dies zum Normalzustand.
  • Wir stellen Vergleiche unterschiedlicher toter Pferde an.
  • Wir strukturieren um damit ein anderer Bereich das tote Pferd bekommt.
  • Wir suchen einen finanzstarken Partner aus der Privatindustrie und gründen zusammen mit dessen toten Pferden ein Public-Private-Partnership-Projekt.
  • Wir suchen einen finanzstarken Partner und gründen zusammen mit dessen toten Pferden ein Joint Venture.
  • Wir tauschen das tote Pferd gegen ein anderes totes Pferd aus, das laut Produktbeschreibung schneller läuft.
  • Wir tauschen das tote Pferd gegen eine tote Kuh aus.
  • Wir verdoppeln die Futterration für das Pferd.
  • Wir vergrößern den Verantwortungsbereich für tote Pferde.
  • Wir verklagen das Pferd zivilrechtlich auf Schadensersatz wegen Nichterbringung einer zugesicherten Leistung.
  • Wir wechseln den Pferdelieferanten.
  • Wir wechseln die Reiter.
  • Wir wechselnd das Stroh im Stall aus.
  • Wir wechselnd den Futterlieferanten.
  • Wir weisen darauf hin, dass im Rahmen des Neuen Kommunalen Finanzmanagements das tote Pferd als bewegliches Anlagevermögen zu bewerten ist.
  • Wir weisen den Reiter an, sitzen zu bleiben, bis das Pferd wieder aufsteht.
  • Wir wenden die Angela-Merkel-Strategie an: Alle dürfen munter sich widersprechende Vorschläge machen und am Schluss ist der Koalitionspartner schuld, wenn das Pferd sich nicht bewegt.
  • Wir wenden die Arbeitsrechtliche-Stragie an: Man kündigt nach Anhörung des Personalrates dem Pferd fristlos, da es sich um einen klaren Fall von Arbeitsverweigerung handelt.
  • Wir wenden die Controlling-Strategie an: Man stellt fest, daß ein totes Pferd kein Futter benötigt und empfiehlt, nur noch tote Pferde zu verwenden.
  • Wir wenden die Freud’sche-Strategie an: Es wird erklärt, daß das Pferd eine schwere Kindheit hatte, und deswegen ausnahmsweise nichts „leisten“ müsse.
  • Wir wenden die Gerhard-Schröder-Strategie an: Wir schnallen dem toten Pferd einen leichteren Sattel um, damit es die Chance hat, sich wieder von selbst zu erholen.
  • Wir wenden die Globalisierungs Strategie an: Man prügelt auf das Pferd ein und ruft dabei: Wenn Du nicht mitspielst, bist Du aus dem Rennen!
  • Wir wenden die Gutachten Strategie an: Das Gutachten stellt fest, dass das tote Pferd kein Futter benötigt und empfiehlt, nur noch tote Pferde zu verwenden.
  • Wir wenden die Helmut-Kohl-Strategie an: Wir setzen uns hin und warten sechzehn Jahre, ob das Pferd sich nicht einfach nur tot stellt.
  • Wir wenden die Juristische-Strategie an: Wir verklagen das Pferd wegen Nichterbringung einer zugesicherten Leistung.
  • Wir wenden die Kommunistische-Strategie an: Die Leistung des toten Pferdes wird als Vorgabe für die Zielvereinbarung für alle anderen Pferde festgeschrieben.
  • Wir verwenden die Reaktionäre-Strategie: Totes Pferd? Wovon reden Sie, Sie linker Spinner?
  • Wir wenden die Managementlösung: Da das tote Pferd nicht 90% seiner Zeit damit beschäftigt ist, sich wichtig zu tun oder selbst darzustellen, wird es auch nicht befördert.
  • Wir wenden die Militärische-Strategie 1 an: Man postuliert, daß nur ein toter Reiter ein totes Pferd reiten kann und erschießt den Reiter.
  • Wir wenden die Militärische-Strategie 2 an: Wir stellen das tote Pferd vor ein Kriegsgericht und lassen es standrechtlich erschiessen.
  • Wir wenden die Motivations Strategie an: Wir versprechen dem Reiter, der die höchste Leistung aus dem toten Pferd heraus holt, eine Prämie; verbunden mit einem beruflichen Aufstieg und dem Titel „General Director of Dead Horses“
  • Wir wenden die PEGIDA-Strategie an: Wir stellen fest, dass das Vieh nur simuliert.
  • Wir wenden die Politische-Strategie an: Das Pferd wird EU–Kommissar und nach Brüssel geschickt.
  • Wir wenden die REFA-Strategie an: Wir messen die Zeit und stellen fest, daß das tote Pferd noch immer die doppelte Leistung eines bundesdeutschen Beamten erbringt. Deshalb wird es verbeamtet.
  • Wir zählen nur solche Pferde in der tote-Pferde-Statistik, die im Stall liegen.
  • Wir ändern die Anforderungen an Reiten und Bewegung und erteilen einen neuen Entwicklungsauftrag.
  • Wir ändern die Kriterien, die besagen, dass ein Pferd tot ist.
  • Wir überarbeiten die Dienstanweisung für das Reiten von Pferden.
  • Wir überarbeiten die Leistungsbedingungen für tote Pferde.
  • Wir überarbeiten die Leistungsbeschreibung für tote Pferde.
  • Wir überlegen die Gründung einer kommunalen GmbH für tote Pferde, nachdem die Einrichtung eines optimierten Regiebetriebes bzw. eines Eigenbetriebes keinen Erfolg brachte.

Und zu guter Letzt:

  • Wenn Du merkst, dass Du ein totes Pferd reitest, sorge für einen bequemen Sattel – es könnte ein langer Ritt werden!
    (Frank Menzel 2008)

Quellen: Ich habe einige Seiten im Internet und in Foren gefunden (siehe Google-Suche). Es war mir unmöglich einzelne Sätze gezielt Quellen zuzuordnen. Die meisten der Sätze kamen mehrfach vor. Insofern konnte ich bis auf den letzten Satz keine „Urheber“ ausfindig machen.

AllgemeinMartin Richter - So 04 Mai 2014 17:39

Ein Fazit und eine kurze Zusammenfassung zu Anfang.

Um die 100 C++ Entwickler kamen dieses Jahr nach Garching zur ADC++, die von ppdev AG (Johannes Preishuber) mit einigen Sponsoren veranstaltet wurden.

Nach Johannnes Preishuber hat der Fußball (Champions League Halbfinale Bayern München – Real Madrid) einen kleinen Strich durch die Veranstaltung gemacht. Es war für viele Interessierte kein Hotelzimmer mehr in der Nähe verfügbar. Dadurch war die Teilnehmerzahl leider nur um die 100.

Lohnend war der Ausflug auf die Konferenz in jedem Fall. Zum einen um etwas über den Tellerrand zu schauen. Zum anderen um zwischen den Sessions auch Kontakte zu pflegen und auch fachlich mal zu erkunden was andere machen und wie andere etwas machen. Für mich sind das immer wieder kleine Aha-Erlebnisse.
Ich bin vielleicht etwas verwöhnt von den beiden ADC’s (2011 Prien am Chiemsee, 2012 Ohlstadt im Zugspitzland). In Bad Aibling 2013 war ich leider nicht dabei.

Die Location war nicht so malerisch. Der Konferenzort funktional, aber nicht ganz so gemütlich und schön.
Toll war in jedem Fall wieder die Abendveranstaltung, die in der Flugzeugwerft Schleißheim in toller Atmosphäre stattfand. Hier  lässt sich ppdev AG immer etwas Tolles einfallen. Mein Lob dafür!

Hier ein kleiner Bericht über die Sessions an denen ich teilgenommen habe.Je nach Struktur und Inhalt kann ich mehr oderweniger wiedergeben. Sollte ich Dinge falsch verstanden haben oder falsch wiedergeben, bitte ich das zu entschuldigen. Ich hoffe jedenfalls hier keine gravierenden Fehler in diesem Bericht gemacht zu haben.

Weiter lesen »

AllgemeinMartin Richter - Do 13 Jan 2011 21:52

Manchmal, wenn man ein kleines Programm entwickelt mag es als Overkill erscheinen extra Code für Minidumps einzubauen.
Was aber, wenn man doch einen Fehler aufspüren möchte und ein Minidump ad hoc ganz praktisch wäre?

Unter Vista und Windows 7 ist es ganz einfach in den WER Einstellungen Einträge vorzunehmen, mit denen man mit nur ein paar Registry Einträgen sofort zu Minidumps kommt.

Nachfolgend die Registry Einträge, die einen Fulldump im Verzeichnis %LOCALAPPDATA%\CrashDumps erzeugen.

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps]
"DumpType"=dword:00000001
"DumpCount"=dword:00000010
"DumpFolder"=hex(2):25,00,4c,00,4f,00,43,00,41,00,4c,00,41,00,50,00,50,00,44,\
00,41,00,54,00,41,00,25,00,5c,00,43,00,72,00,61,00,73,00,68,00,44,00,75,00,\
6d,00,70,00,73,00,00,00

Eine vollständige Liste der Einstellungen findet sich in der MSDN Doku:
http://msdn.microsoft.com/en-us/library/bb787181(VS.85).aspx

PS:
Ich benutze diese Einstellungen aktuell auch einem Bug in VisualStudio 2010 auf die Spur zu kommen, damit ich Crashdumps regelmässig an http://connect.microsoft.com übertragen kann.

PPS: (14.01.2011 nach Hinweis von André)
Wie man auch der Doku ennehmen kann ist fpr dieses Funktion Vista SP1, Windows 2008 Server oder Windows 7 notwendig. Vista RTM hat diese Funktion nicht.

AllgemeinMartin Richter - Mo 20 Dez 2010 21:45

Ein nettes Hilfsmittel ist die Work-Item Suche mit dem Addin http://visualstudiogallery.msdn.microsoft.com/de-de/3f31bfff-5ecb-4e05-8356-04815851b8e7

Leider funktionierte dies bei mir nicht sofort. Ich bekam die folgende Fehlermeldung:

TF248015: Your work item query could not be completed due to an unexpected error returned by the Microsoft SQL Server Full-text engine. Contact your system administrator to check the Application event log for Team Foundation Server.

Na fein ❗ Also muss ich mich selbst kontaktieren weil irgendwas mit der Volltext Suche nicht klappt.

Nach einigem hin und her irren durch alle möglichen Einstellungen entdeckte ich den Missetäter: Der „SQL Full-text Filter Daemon Launcher“ war nicht gestartet. Dies ist ein Dienst, den man in der Computer-Verwaltung oder dem SQL-Server-Konfigurations-Manager findet.
Aus irgend einem mysteriösen Grund war hier ein falsches Dienstkonto angegeben und der Dienst konnte nicht starten.

Nachdem das korrigiert war habe ich danach noch ein Rebuild des Warehouse veranlasst damit die Indizes sofort zur Verfügung aktuell sind. Das erfolgt über die folgende Web Adresse: http://servername:8080/tfs/TeamFoundation/Administration/v3.0/WarehouseControlService.asmx 
in dem man ProcessWarehouse auswählt. Unter collectionName gibt man seine Team Project Collection an um die es geht. Wer die Namen der Collections vergessen hat, findet sie in der Team Foundation Server Administration Console aufgelistet.

AllgemeinMartin Richter - Di 30 Nov 2010 22:39

Ich habe eine DLL die einiges an Datenbank I/O für ein Produkt übernimmt. Diese DLL sollte in einem Service eingesetzt werden.
Eigentlich ist diese DLL immer nur Teil eines vollen UI Projektes und hat auch einige kleine visuelle Komponenten. Entsprechend prüft eine Init Funktion bestimmte Voraussetzungen, die für das korrekte Arbeiten notwendig sind wie: mindestens MS-XML 3.0, IE ab Version 5.1, Common Control 6.0 (also mit Manifest).
Soweit so gut. Die DLL selbst wurde mit einem Manifest (Typ 2) versehen und in den Service mit eingebaut.

Eigentümlicherweise startete der Service nicht. Die Init Funktion meldete immer, dass die Requirements nicht gegeben wären. Was eigentlich nicht sein kann, weil der selbe Code in einem anderen Kontext eines GUI Programms perfekt funktioniert.

Ein wenig debuggen zeigte, dass die Common Control 6.0 nicht gefunden wurden.
Eigentlich kein Wunder. Der Service hat keine UI, es gibt keinen Code der die Common Control 6.0 verwendet, allerdings hatte meine DLL ja ein entsprechendes Manifest für die Common Control 6.0 DLL.
Aber der Versionstest in der DLL lädt immer die 5er Version, also die Version ohne Manifest.

Es dauerte eine Weile bis es bei mir klingelte und ich verstand worin das Problem lag:

  • Wenn man ein Manifest in einer DLL mit dem Code 2 einträgt (ISOLATIONAWARE_MANIFEST_RESOURCE_ID), dann funktioniert dieses Manifest wenn in diesem Moment die ComCtl32.dll implizit geladen werden sollte.
  • In meinem Fall aber klappte das nicht. Die DLL wurde nicht implizit geladen. Die Versionkontrolle später führte LoadLibrary direkt durch und führte dann DllGetVersion aus (mit GetProcAddress ermittelt).
  • In meinem Fall bedeutet das aber, das LoadLibrary im Aktivierungskontext (Activation Context) der EXE ausgeführt wird, und die hat kein ComCtl32 Manifest für die Version 6.0. Es ist ja auch nur ein Service.
  • Damit es funktioniert muss man in jedem Fall auch den folgenden Define setzen.
#define ISOLATION_AWARE_ENABLED 1
  • oder man muss dafür sorgen, dass man seinen eigenen Aktivierungskontext nutzt. Sprich seine Manifeste, die man selber möchte.
  • Durch diesen define, werden bestimmte Funktionen wie CreateWindow, LoadLibrary, CoCreateInstance, SendMessage und andere durch einen inline-Code ersetzt der einen Aktivierungkontext benutzt und die aktuellen Manifeste der DLL bestimmt und benutzt.

In meinem Fall hieß die Lösung nicht LoadLibrary zu benutzen sondern GetModuleHandle und wenn eben ComCtl32 gar nicht im Speicher ist, also auch nicht benutzt wird auch keinen weiteren Test durchzuführen, aber zur Sicherheit habe ich auch ISOLATION_AWARE_ENABLED gesetzt.

Siehe auch:
http://msdn.microsoft.com/en-us/library/aa376607(VS.85).aspx
http://msdn.microsoft.com/en-us/library/aa375197(VS.85).aspx

AllgemeinChristseinReal LifeMartin Richter - Do 01 Jan 2009 22:56

Ansehen und mitmachen:

http://one.org/de/schneller/index.html

AllgemeinChristseinReal LifeMartin Richter - Sa 27 Dez 2008 12:10

Ja ❗

Zumindest für ein Kind in der Welt kann man mit einem Euro am Tag für eine gesicherte Schulausbildung, Ernährung und Gesundheitsfürsorge sorgen. Was sich mit diesem Euro für Kinder verändern kann ist unfassbar für uns Mitteleuropäer.

Wen das mehr interssiert, der sollte sich mal http://www.compassion-de.org ansehen ❗

AllgemeinMartin Richter - Sa 20 Dez 2008 17:26

Das Problem an diesem Code

On Error Resume Next
If MyFunction() Then
    MsgBox "MyFunction succedded"
Else
    MsgBox "MyFunction failed"
End If

MsgBox "... continue execution ..."

Function MyFunction
    MsgBox "Start MyFunction"
    On Error Goto 0
    ' Just a failure here
    i = 1/0
    MsgBox "End MyFunction"
    Test = true
End Function

ist, dass bei einem Fehler in der Funktion MyFunction die Funktion sofort abgebrochen wird. Nach diesem Fehler wird aber als nächste Zeile der Then Block ausgeführt. Die Funktion läuft also in den Bock „MyFunction succeeded“ was nicht unbedingt im Sinne des Erfinders wäre.

Der Entwickler hat zwei Dinge nicht bedacht:

  1. Er wollte, das ein Fehler in MyFunction das Skript terminiert. Das erreicht er aber nicht. MyFunction wird bei einem Fehler abgebrochen, aber On Error Resume Next im nächsten äußeren Scope behandelt den Fehler.
  2. Dem Entwickler war unklar, dass On Error Resume Next bei einem Fehler in einem If Statement zum Ausführen des Then Blocks führt ❗
    Und man kann sich Denken was passiert wenn man eine While MyFunction() Schleife hat? Jaaaaa genau! Wird in MyFunction ein Fehler ausgelöst hat man eine perfekte Endlosschleife!

Am Besten also die Funktion nicht im If-Statement ausführen sondern das Ergebnis in einer Variable Speichern. Sofern die Variable zuvor empty war, ist sie es im Falle ein Fehlers hinterher auch, d.h. sie wird nicht verändert. Nach der Funktion kann man dann zusätzlich auch Err.Number prüfen.

On Error Resume Next
Result = MyFunction()
If Result Then
    MsgBox "MyFunction succedded"
Else
    MsgBox "MyFunction failed"
End If

MsgBox "... continue execution ..."

Function MyFunction
    MsgBox "Start MyFunction"
    On Error Goto 0
    ' Just a failure here
    i = 1/0
    MsgBox "End MyFunction"
    Test = true
End Function

Und was lernen wir daraus ❓
On Error Resume Next ist tückisch und sollte möglichst sofort zurückgesetzt werden und schon gar nicht über den Scope einer eigenen Funktion hinaus verwendet werden.

AllgemeinInstallationSoftwareToolsMartin Richter - Mi 19 Nov 2008 20:30

Wir nutzen in der Firma seit Jahren die Symantec Corporate Edition. Bisher in der Version 10.

Bei der Umstellung auf die neue 11er Version musste ich auf den Clients die alte Software entfernen.
Bei den Rechnern mit einer zentralen Installation wusste ich natürlich das Kennwort für die Deinstallation, denn das wurde von mir eingerichtet und lag im Password Safe.
Allerdings wurden scheinbar auch einige Clients von anderen Admins von CD aus installiert. Hier war mir nun unklar, was für ein Deinstallations Kennwort verwendet wird.

Nach einigem Suchen im Netz bekam ich drei Wege heraus die Corporate Edition zu entfernen:

  • Das Standardkennwort lautet bei einer nicht verwalteten Installation symantec
  • Man kann die Abfrage des Kennwortes bei der Deinstallation aber auch verhindern, indem man den Registryschlüssel UseVPUninstallPassword in HKLM\Software\Intel\LANDesk\VirusProtect6\CurrentVersion\AdministrtatorOnly\Security von 1 auf 0 umsetzt.
  • Symantec selbst bietet auf der Homepage eine komplizierte Beschreibung für die manuelle Deinstallation.
  • Nicht versucht habe ich das Norton Removal Tool, dass es auch gibt.

Nächste Seite »