Laden...
D
da_user myCSharp.de - Member
nähe Regensburg Dabei seit 21.08.2008 94 Beiträge
Benutzerbeschreibung

Forenbeiträge von da_user Ingesamt 94 Beiträge

09.04.2016 - 16:34 Uhr

Hi,

ein bisschen konnte ich mich jetzt in die Scheduled Tasks einlesen. Das wäre prinzipiell natürlich eine schönere Methode, da Windows ja hier schon alles mitliefert.

Was wir an den Beispielen bis jetzt auffällt: die starten immer ein Programm. Ich würde aber gerne ein Event innerhalb meines Programmes werfen. Bevor ich mich da jetzt noch weiter mit dn Scheduled Tasks auseinandersetze: ist mit diesen überhaupt das Event werfen möglich? Oder sollte ich mich lieber doch mit Cron.NET auseinandersetzen?

05.04.2016 - 21:34 Uhr

Dann lese ich mich mal da ein.

Danke!

04.04.2016 - 20:18 Uhr

@Lars Schmitt:
Danke schonmal!

@Abt:

Ähm, ist ne gute Frage. Keine App, kein Web. Und eigentlich kein klassisches Desktopprogramm. Das Programm soll in diesem "Infobereich" verschwinden, und sich gefälligst nur zeigen, wenn es was zu melden hat 😉

04.04.2016 - 18:52 Uhr

Hi,

Kurzfassung:

Ich will in meiner Anwendung ein wöchentliches und ein 15min auftretendes Event haben. Ersteres also z.b. jeden Montag der Woche. Ich kenne bis jetzt leider nur die Timerklasse, welche in meinen Augen wohl eher ungeeignet dazu ist, insbesondere für ersteres.

Langfassung:
Mein zu schreibendes Programm soll ein BackUp-Dienst werden, der mich einmal die Woche daran erinnert, eine externe HDD einzustecken und auf diese dann selbsständig das BackUp durchführt. Wenn die Meldung weggeklickt wird, soll diese nach einer gewissen Zeit wieder auftauchen (Dazu dürfte aber wohl die Timerklasse auch reichen).
Ach ja: ein "Rechner war am Erinnerungstag nicht eingeschaltet" werde ich wohl durch eine einfache Kontrolle, wann das letzte BackUp durchgeführt wurde, abfangen können.

Viele Grüße
da_user

11.08.2015 - 20:21 Uhr

Ach.. so ein bisschen Keller tut doch gut, man bekommt gleich einen anderen Blick auf die Sache, und wenn man sich dransetzt, fällt's einem auf.

Ich habe die Methode GetMovieView natürlich erstmal ohne BackGroundWorker entwickelt und getestet.
Da ich das ganze Geraffel mit der Rückgabe des Backgroundworkers noch nicht implementiert hatte, und eigentlich erstmal nur testen wollte, habe ich hinter den Button, der die GetMovieView-Methode aufruft, einfach den Aufruf für GetMovieViewFromBackgroundWorker mit reingeschmissen.

Nun hatte ich die Methode zweimal am laufen, einmal Synchron, einmal im BW. Da es einen Backgroundworker gab, hat mir aber auch die Methode im Synchronen lauf die Events geschmissen. Das hat dann wohl zu einigen kuriosen Fehlern geführt.

Implementiert ist das jetzt so:


        public List<MovieMediaItem> GetMovieView()
        {
            return GetMovieView(false);
        }


        private List<Datatypes.MovieMediaItem> GetMovieView(bool runByBackGroundworker)
        {
             //...
        }


Im DoWork-Event wird die Methode jetzt ziemlich einfach mit

GetMovieView(true)

aufgerufen.

Im Moment muss ich noch einiges testen, aber ich bin auf jeden Fall schonmal wieder eine ganze Erfahrung reicher!

Danke an alle, die sich bemüht haben!

VG
Matthias

11.08.2015 - 16:53 Uhr

Aber das ist auch kein Rätselraten

Leider für mich im Moment schon, und desto mehr ich da jetzt rumtu, desto mehr Fragezeichen bekomme ich.

Da brauchst du nur mal in die Dokumentation schauen.

Stimmt. Ich frage den Backgroundworker jetzt auf null ab, und setzte ihn mit dem RunCompleted-Event nach dem Kündigen der Abos auf null. Damit sollte jetzt entgültig sichergestellt sein, dass ich Events nicht mehrfach abonniere, und immer einen neuen Backgroundworker erhalte.

Ich bin mit dem Debugger nicht so firm. Habe jetzt aber mal mit Hilfe des Debuggers und dem zu-Fuß-mit-Message-Boxen-debuggen mal herausgefunden:

Wenn er durchläuft, wird das RunComplete-Event geschmissen, noch BEVOR er das ProgressChanged-Event schmeißen kann??? Die werden dann anschließend aber trotzdem erfolgreich geworfen.

Wenn ers nicht schafft, dann scheitert er tatsächlich beim schmeißen des ProgressChanged-Events, kommentiere ich das aus, läufts wunderbar. Er scheitert übrigens regelmässig auch beim ersten Durchlauf.

Ich glaube, ich wollte noch den Keller aufräumen. Vielleicht sollte ich das tun, damit ich mal nen Blick auf was anderes habe. Mit etwas Glück fällts mir dann wie Schuppen von den Augen!? Außerdem ist's da kühler 😉

VG
Matthias

11.08.2015 - 15:46 Uhr

Was heisst schnell hintereinander..

Naja, wie man halt auf nen Button klicken kann, Zeit habe ich jetzt hier keine gemessen.

kann das sein, dass Du für alle Abfragen den gleichen BackgroundWorker nimmst und dann auch noch die Events mehrmals registrierst?

Die Idee hatte ich tatsächlich schon, allerdings sollte doch das mit der Zeile:

if (!GetMovieViewWorker.IsBusy)

unterbunden sein, oder?

11.08.2015 - 15:33 Uhr

Hi,

ich habe bastel gerade an einer Klasse dir mir eine mySQL-Datenbank abfragt (nein, kein EntinityFramework - Lerneffekt!). Diese Abfrage habe ich jetzt in einen Backgroundworker gebastelt, und ich bekomme jetzt sporadisch bei Backgroundworker.ReportProgress folgende Fehlermeldung:

Fehlermeldung:
Ein Ausnahmefehler des Typs "System.InvalidOperationException" ist in KodiDatabase.dll aufgetreten.

Zusätzliche Informationen: Für diesen Vorgang wurde OperationCompleted bereits aufgerufen. Weitere Aufrufe sind unzulässig.

Ich versuche mal den Code auf das, meiner Ansicht nach, nötigste Herunterzubrechen:


        BackgroundWorker GetMovieViewWorker;

        public List<Datatypes.MovieMediaItem> GetMovieView()
        {
            //...
            // Instanzieren der MySQL-Verbindung
            //...
            while (Reader.Read())
            {
                //...
                LoadedItems++;
                if (GetMovieViewWorker != null)
                {
                    GetMovieViewWorker.ReportProgress(0, new myEventProgressArgs(TotalItems, LoadedItems));
                }
            }
            //...
            //beenden der MySQL-Verbindung
            //..
            return Result;
        }

        public void GetMovieViewFromBackgroundWorker()
        {
            if (GetMovieViewWorker == null)
            {
                GetMovieViewWorker = new BackgroundWorker();
            }

            if (!GetMovieViewWorker.IsBusy)
            {
                GetMovieViewWorker.WorkerReportsProgress = true;
                GetMovieViewWorker.WorkerSupportsCancellation = true;

                GetMovieViewWorker.DoWork += GetMovieViewWorker_DoWork;
                GetMovieViewWorker.ProgressChanged += GetMovieViewWorker_ProgressChanged;
                GetMovieViewWorker.RunWorkerCompleted += GetMovieViewWorker_RunCompleted;
                

                GetMovieViewWorker.RunWorkerAsync();
            }
        }

        //Diese Methoden fangen die Events vom Backgroundworker auf
        void GetMovieViewWorker_DoWork(object sender, DoWorkEventArgs e)
        {
           //...                       
        }

        void GetMovieViewWorker_ProgressChanged(object sender, ProgressChangedEventArgs e)
        {
            //..
        }

        void GetMovieViewWorker_RunCompleted(object Sender, RunWorkerCompletedEventArgs e)
        {
            //..
            GetMovieViewWorker.DoWork -= GetMovieViewWorker_DoWork;
            GetMovieViewWorker.ProgressChanged -= GetMovieViewWorker_ProgressChanged;
            GetMovieViewWorker.RunWorkerCompleted -= GetMovieViewWorker_RunCompleted;
            GetMovieViewWorker.Dispose();
            //..
        }

Von außen aufgerufen wir die Methode GetMovieViewFromBackgroundWorker(). Die Exception schmeißt die Zeile "GetMovieViewWorker.ReportProgress(0, new myEventProgressArgs(TotalItems, LoadedItems));"

Die Exception taucht nur sporadisch auf. Mal beim ersten durchlauf, mal erst nach dem zehnten. Ich kann sie aber provozieren, wenn ich GetMovieViewFromBackgroundWorker() schnell hintereinander aufrufe.

VG
Matthias

03.08.2015 - 21:16 Uhr

Hi,

Ich habe eine Klassenliste, deren Objekte ebenfalls wiederum eine Liste vom Typ List<string> enthalten:
(Pseudocode):


class1 {
public string Titel;
public List<string> Pfade;
}

class2
{
public List<class1> Elemente;
}

Diese Klasse kann ich jetzt relativ einfach in mein DataGridView schieben:

DataGridView1.DataSource = new class2();

Das Problem: Das DataGridView zeigt nur die Spalte Titel an, nicht aber die Spalte Pfade. Versuche ich die Spalte Pfade mit

DataGridView1.Columns["Pfade"].Visible = true;

sichtbar zu machen, erhalte ich eine > Fehlermeldung:

System.NullReferenceException

Die class1 enthält natürlich viel mehr Felder, und bei weiten sollen nicht alle dieser Felder angezeigt werden. Meine erste Idee war entsprechend, eine spezielle Klasse anzulegen, die nur die Felder enthält, die angezeigt werden müssen. Bei der "konventierung" könnte ich dann die List<string> in einen String umsetzten und die einzelenen ListElemente durch ein Trennzeichen oder NewLine trennen. Bei Bedarf jedenfalls, den nicht alle Pfad-Elemente enthalten mehrere Strings.
Aber der ganze Kram der da dranhängt, macht mir irgendwie Angst... X(

Gibt es einen anderen Weg?
Meine Lieblingslösung wäre, dass, wenn mehrere List-Elemente vorliegen, in der jeweilligen Zeile ein TreeView angezeigt wird, bei dem das erste List-Element quasie die "Überschrift" bildet.

Irgendein Tutorial würde mir, denke ich, schon reichen. Bei meinen Recherchen finde ich irgendwie nur was, wie ich eine Liste<> als Datenquelle verwende.

VG
da_user

03.08.2015 - 15:17 Uhr

Schade.

Danke für die kurze und knacikge Antwort 😉

02.08.2015 - 17:45 Uhr

Hi,

ich spiele mich aus aktuellem Anlass gerade ein bisschen mit den Snippets. Nun habe ich mir ein Snippet erstellt, das im Snippet-Designer ungefähr so aussieht:

Class1.$Variable$ = ($type$)Class2[IndexOf&Variable&];

Mit dieser Variante muss ich den $type$ manuell angeben. Wäre es den Möglich, dass sich das Snippet den $type$ direkt aus "Class1.$var$" ausliest?

VG
Matthias

28.07.2015 - 19:09 Uhr

Hi,

das 3-Schicht-Model ist in der Tat kein schlechter Ansatz. Ich glaub die gewünschte striktere Trennung zwischen der Datenbankkommunikation in der lokalen Datenbank kann auuch in der Datenzugriffsschicht erfolgen.

Ja, ich glaub ich habe da meinen Designansatz noch etwas verbessert. Danke für den Tipp!

27.07.2015 - 22:35 Uhr

Deine eigentliche Frage erschließt sich mir aber nicht so ganz. Du kannst du Felder, welche nicht außerhalb der Klasse bekannt sein sollen, doch einfach private machen.

Sie sollen aber nach außen hin bekannt sein, aber eben nur meiner MySQL-Communications-Klasse.

Warum? Wäre es vllt. einfacher hier gleich einen sprechender Namen zu verwenden? Irgendwo muss ja ohnehin die "Übersetzung" stattfinden.

Ich würde gerne die Übersetzung in meinem Abbild erledigen. ich finde das irgendwie Schlüssiger und einfacher zu programmieren.

Wenn die Datenbank nur eine Tabelle hat, so passt das. Sonst wird es eher pro Tabelle eine Klasse werden.

Und die Tabellenklassen sind in eine Datenbankklasse eingebunden 😉 Natürlich wird das ganze genauer abgebildet, als ich hier angegeben habe.

Betreff O/R-Mapper: ich will auch lernen, wie ich mit ner (My)SQL-Datenbank sprechen muss 😉

27.07.2015 - 21:43 Uhr

Hi,

ich habe ein Problem. Das Problem ist eher Designtechnischer Natur, und die einzige Lösung die mir dazu einfällt, wäre, wenn ich Klassenfelder nur bestimmten anderen Klassen veröffentlichen könnte, ich weiß nicht ob das geht, und wie, und obs überhaupt Sinn macht, darum von Anfang an:

Ich bastel gerade, mehr aus Spaß als aus Verzweiflung (man könnte ja was lernen 😉 ), an einem Viewer für eine MySQL-Kodi-Datenbank. Für alle die Kodi nicht kennen: das ist ein Wohnzimmergerechte Programm um Filme, Serien,... auch über das Netzwerk hinweg zu organisieren und anzusehen.

Nun hat aber die Datenbankdesigner irgendwie der Teufel geritten. Den kompletten Überblick gibt es hier: Kodi-Datenbank Überblick, ich versuche nur auf das wichtigste einzugehen:

Es gibt so z.B. den sprechenden Spaltennamen "c00". Dieser steht sowohl in der Movie- als auch in der EpisodeView mehr oder weniger für den Titel, das ist noch einigermaßen ok.

Bei "c04" wirds schon ne Ecke gemeiner, das steht in der MovieView für "Rating Votes", also die Bewertung, in der EpisodeView aber für den Autor.

Um das ganze nochmal netter zu machen gibt es dann die wichtigen Spalten "strFileName" und "strPath".
"strFileName" speichert den Namen der Datei, "strPath" den Pfad dorthin. NORMALERWEISE! Denn, besteht der Film aus mehreren Dateien, stehen die kompletten Pfade Kommagetrennt in "strFileName" angeführt von einem "stack:", strPath enthält wie gehabt den Pfad zu den Dateien.

Programmtechnisch ist das alles lösbar.

Ich habe mir dazu überlegt, dass ich eine Klasse anlege die quasi die Datenbank mehr oder weniger lokal abbildet. Diese Klasse soll, in meinen Augen, keine Methoden nach außen anbieten, es soll nur private Methoden geben, um z.B. die Konstrukte mit den Dateinamen aufzudröseln.

Für die Kommunikation mit der MySQL-Datenbank habe ich mir auch schon eine Klasse programmiert, die soll die lokale Datenbank befüllen. Programmtechnisch ist es einfacher, wenn die Kommunikationsklasse die Spalte c04 der Datenbank in das Feld c04 in der Klasse schreibt.

Aus meinem eigentlichen Programm heraus würde ich gerne dann über mit get/set hinterlegten Feldern zugreifen:


        /// <summary>
        /// Bewertung - c04
        /// </summary>
        public string RatingVotes
        {
            get { return c04; }
            set { value = c04; }
        }

Das Feld

public List<string> FilePath

würde mir dann eben über eine ähnliche Konstruktion die Dateipfade zurückgeben, bzw. mich diese schreiben lassen.

Mein Designtechnisches Problem sollte jetzt, denke ich klarer sein. Man sollte auf die Datenbankrelevanten Felder nur aus dem MySQL-Objekt zugreifen können, dem Rest des Programmes sollten diese Felder verborgen bleiben. Und andersherum sollte natürlich das gleiche gelten.

Nur: wie realisieren ich das?
Für andere Designvorschläge bin ich natürlich auch offen! 😉

VG
Matthias

25.07.2015 - 21:02 Uhr

Hmm...

dadurch dass ich hier keine Antwort mehr bekomme, und das Problem wohl nicht unbedingt mit dem MySQL-Connecter zu tun hat, ist es hier unter "Datentechnologien" auch schlecht aufgehoben. Ich würde gerne ein neues, passenderes Thema unter "Basistechnologien und allgemeine .NET-Klassen" oder "Rund um die Programmierung" aufmachen.

An die Forengurus und -mods: wäre das ok? Welches Forum wäre besser geeignet?

21.07.2015 - 20:31 Uhr

Hi,

nein, irgendwie hilft mir das nicht weiter. Ich habe aber jetzt mal etwas experimentiert.

Und zwar habe ich mir mal ein "Bare-Minimum" Projekt für meine mySQL-Kommunikations klasse gebastet. Darin funktionierts. Also für mein eigentliches Projekt ein neues Projekt angelegt, alle Daten rüberkopiert und festgestellt, dass die App.config irgendwie komisch ist. Ich habe in meinem Projekt den log4net Logger eingebaut. Jetzt habe ich mal mit der App.config etwas rumexperimentiert, einzelne Elemente dahin geschoben, andere dorthin. Der Erfolg ist jetzt, dass ich zwei gleiche Projekte mit unterschiedlichen App.config habe. In einem funktioniert der Logger nicht, dafür mySQL, im anderen funktioniert der Loger, dafür aber mySQL nicht 🤔 👅

Ich poste jetzt einfach mal die beiden App.config.

Log4net funktioniert, mySQL aber nicht:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  </configSections>
  <log4net>
    <appender name="DebugAppender" type="log4net.Appender.DebugAppender">
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
      </layout>
    </appender>
    <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
      </layout>
    </appender>
    <appender name="MainFormAppender" type="DbEditor4Kodi.MainFormAppender">
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
      </layout>
    </appender>
    <root>
      <level value="ALL" />
      <appender-ref ref="DebugAppender" />
      <appender-ref ref="ConsoleAppender" />
      <appender-ref ref="MainFormAppender" />
    </root>
  </log4net>
  
<system.data>
    <DbProviderFactories>
      <remove invariant="MySql.Data.MySqlClient" />
      <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.9.7.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
    </DbProviderFactories>
  </system.data></configuration>

Log4net funkioniert nicht, dafür aber mySQL:


<?xml version="1.0" encoding="utf-8"?>
<configuration>
    
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  </configSections>

  <log4net>
    <appender name="DebugAppender" type="log4net.Appender.DebugAppender">
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
      </layout>
    </appender>
    <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
      </layout>
    </appender>
    <appender name="MainFormAppender" type="DbEditor4Kodi.MainFormAppender">
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
      </layout>
    </appender>
    <root>
      <level value="ALL" />
      <appender-ref ref="DebugAppender" />
      <appender-ref ref="ConsoleAppender" />
      <appender-ref ref="MainFormAppender" />
    </root>
  </log4net>   
    
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
    </startup>  
  
<system.data>
    <DbProviderFactories>
      <remove invariant="MySql.Data.MySqlClient" />
      <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.9.7.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
    </DbProviderFactories>
  </system.data></configuration>

Edit: ach ja: Wenn ich schreibe "log4net funktioniert nicht", dann meine ich: Es zeigt in keinen der Appender was an. Es gibt keine Fehlermeldung.

log4net würde übrigens auch mit NuGet hinzugefügt.

20.07.2015 - 20:07 Uhr

C# Naming Guidelines

👍 Liste "Capitalization Conventions" in ein Calc-Dokument eingefügt
👍 Liste passend formatiert
👍 Liste ausgedruckt
👍 Liste an den Bildschirm geklebt

Jetzt habe ich sie immer im Blick und kann mir zumindest da mal einen guten Stil angewöhnen. Hoffentlich 😉

Danke!

Jetzt habe ich noch ein nerviges Problem mit so ner Exception.... 🤔 X(

20.07.2015 - 17:53 Uhr

Hallo,

danke für die Rückmeldung und dafür, dass Ihr euch meines Problems annimmts.

Ist das auch die InnerException mit dem FileNotFound?

Wenn ich das gerade richtig gesehen habe, ja. Aber Exception tritt ja erst auf, wenn ich den Pfad umbiege.

Kontrolliere alle Verweise auf die DLL, ob auch die Version stimmt. Anschließend schauen, ob die DLL auch dort liegt, wo Du sie erwartest.

In dem durch NuGet angelegten Verweis stimmt der Pfad, auch die Dateiversion stimmt.

Dazu gehört auch bei einem Deploy dafür zu sorgen, dass alle DLLs mitgeliefert werden, die notwendig sind.

Deploy => Installationsroutine? Soweit bin ich noch gar nicht, bin noch am entwickeln.

Manuell sollte man keine Verweise mehr setzen, wenn man NuGet verwendet.

Ich habe erst angefangen, an den Verweisen zu basteln, als es nicht funktioniert hat. Und da ich nur den Verweis auf die MySQL.Data umgebogen habe, war es kein Problem, den wieder zurückzubiegen.

Und wenn es alles andere fehlschlägt, einfach mal das Assembly Binding Log anschalten:

Habe ich mal gestartet, aber irgendwie kann ich damit nicht umgehen. Folgendes gemacht: mit Adminrechten aus der VS-Shell gestartet, dann mein Projekt im Debug-Modus gestartet, versucht die MySQL-Verbindung aufzubauen. Obig schon genannte Fehlermeldung(en), aber kein einziger Eintrag in der Assembly Binding Log.


Wie von allen untypisierten Collections sollte man von Array die Finger weg lassen.

Stimmt, da hast du recht, muss ich dann Umbiegen. Wichtiger wäre mir jetzt erstmal, dass die Kommunikation grundsätzlich läuft.

BTW, wenn wir schon ein bisschen OT sind:

Ich habe hier im Forum unter der FAQ, in den Artikeln und über die SuFu versucht, so etwas wie einen Design-Guide, oder Design-Rules zu finden. Also was schreibe ich Pascal, was CamelCase, usw. usf. Aber irgendwie war ich zu doof dazu. Gibts hier sowas?

18.07.2015 - 19:20 Uhr

verwendetes Datenbanksystem: <MySQL>

Hi,

ich habe aus einem älteren Programm eine Klasse mit mySQL-Methoden übernommen. In dem älteren Programm habe ich den mySQLConnector noch manuell installiert und den Verweis ( C:\Program Files (x86)\MySQL\Connector.NET 6.9\Assemblies\v4.0\MySql.Data.dll ) hinzugefügt. Gerade getestet: funktioniert immer noch einwandfrei.

Bei meinem neueren Projekt habe ich den Connecter per NuGet hinzugefügt, und zwar als "MySQL.Data". Die DLL liegt im Projektverzeichnis unter: \packages\MySql.Data.6.9.7\lib\net45\MySql.Data.dl

Ich bekomme jetzt bei dem Befehl connection.Open immer eine Exception:> Fehlermeldung:

Ein Ausnahmefehler des Typs "System.TypeInitializationException" ist in MySql.Data.dll aufgetreten.

Zusätzliche Informationen: Der Typeninitialisierer für "MySql.Data.MySqlClient.Replication.ReplicationManager" hat eine Ausnahme verursacht.

Versuchsweise habe ich natürlich probiert, den von NuGet erzeugten Verweis auf den im anderen Projekt funktionierenden zu ändern. Daraus resultiert beim Instanzieren meiner Klasse mit den MySQL-Methoden folgender Fehler:> Fehlermeldung:

Ein Ausnahmefehler des Typs "System.IO.FileNotFoundException" ist in DbEditor4Kodi.exe aufgetreten.

Zusätzliche Informationen: Die Datei oder Assembly "MySql.Data, Version=6.9.7.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" oder eine Abhängigkeit davon wurde nicht gefunden. Das System kann die angegebene Datei nicht finden.

Beim googeln nach den ersten Fehler, bekam ich den Hinweis, ich solle doch in den Projekteinstellungen unter Debuggen das "SQL-Server-Debugging" aktivieren. Erfolg: der gleiche Fehler, => Erfolg = 0;

Wie gesagt, in dem anderen Projekt funktioniert die Klasse einwandfrei. Auch mit den genau gleichen Servereinstellungen (ConnectionString). Die habe ich versuchsweise im auch mal in falsche abgeändert. Im funktionierenden Projekt bekomme ich eine passende Fehlermeldung, dass mit dem ConnectionString was nicht stimmt, im nicht funktionierenden bleibt die Fehlermeldung gleich.

Da die Klasse in dem anderen Projekt einwandfrei funktioniert, bin ich mir nicht sicher, ob ein Posten des Codes relevant ist. Ich mach es zur Sicherheit trotzdem mal auszugsweise:

mySQL-Com-Klasse:


            /// <summary>
            /// Stellt Methoden zur Kommunikation mit einem SQL-Server bereit - mit den angegebenen Verbindungsdaten
            /// </summary>
            /// <param name="sqlServerIp">IP zum MySQL-Server</param>
            /// <param name="sqlServerPort">Port zum MySQL-Server</param>
            /// <param name="sqlUserId">Benutzername zum MySQL-Server</param>
            /// <param name="sqlUserPassword">Password zum MySQL-Server</param>
            public mySQL_Communication(string sqlServerIp, uint sqlServerPort, string sqlUserId, string sqlUserPassword)
            {
                ConnectionString.Server = sqlServerIp;
                ConnectionString.UserID = sqlUserId;
                ConnectionString.Password = sqlUserPassword;
                ConnectionString.Port = sqlServerPort;

                connection.ConnectionString = ConnectionString.GetConnectionString(true);
            }

            /// <summary>
            /// MySQL-Befehl zum Anzeigen der vorhandenen Tabellennamen
            /// </summary>
            const string sqlCommandShowDatabases = "SHOW Databases";

            /// <summary>
            /// Gibt die vorhandenen Tabellenamen zurück
            /// </summary>
            /// <returns>ArrayList mit den Tabellennamen</returns>
            public ArrayList ShowDatabases()
            {
                return GetData(sqlCommandShowDatabases);
            }

            /// <summary>
            /// Führt einen Befehl auf der verbundenen Datenbank aus
            /// </summary>
            /// <param name="command">auszuführender Befehl</param>
            /// <returns>ArrayList mit der Rückgabe der MySQL-Datenbank</returns>
            public ArrayList GetData(string command)
            {
                MySqlCommand sqlCommand = connection.CreateCommand();
                sqlCommand.CommandText = command;
                MySqlDataReader Reader;
                connection.Open();
                Reader = sqlCommand.ExecuteReader();
                ArrayList Rückgabe = new ArrayList();
                while (Reader.Read())
                {
                    string row = "";
                    for (int i = 0; i < Reader.FieldCount; i++)
                    {
                        row += Reader.GetValue(i).ToString() + ", ";
                        Rückgabe.Add(row);
                    }
                }
                connection.Close();
                return Rückgabe;
            }

Initialisieren der Klasse


            mySqlCom = new mySQL_Communication(
                dataBaseConfig.Server,
                (uint)dataBaseConfig.Port,
                dataBaseConfig.UserID,
                dataBaseConfig.Password);

Klasse mit den Servereinstellungen:


    class DatabaseConfig
    {
        public string Server = "192.168.56.2";
        public string UserID = "user";
        public string Password = "password";
        public decimal Port = 3306;
    }

12.02.2015 - 17:56 Uhr

Ich wollte es bei diesem kleinen Projekt noch so machen, bevor ich mich in das MVVM-Zeug einarbeite. Aber wird mir wohl doch nix anderes übrig bleiben 😦

12.02.2015 - 16:17 Uhr

Hi,

das mit dem Konstruktor habe ich gerade eben probiert, Effekt ist der gleiche - keine Meldung, Objekt == null.

Da ich ja dieses Event und die dazugehörige Methode durch den Designer hab erstellen lassen, sollte da ja eigentlich auch nix schief gelaufen sein.

Zur Sicherheit habe ich das übrigens gerade nochmal gemacht. Funktioniert auch nicht

Und dann einmal mit Window_initialized. Das klappt, da bekomme ich die Meldung. Dafür verschluckt sich irgendwas am XAML-Reader, wenn ich meine XML-Datei auslese 😉

12.02.2015 - 15:52 Uhr

Hallo,

ich habe ein sehr komisches Problem. Ich bastel gerade an einem kleinen WPF-Projekt. Nach dem öffnen des Hauptbildschirmes soll mir das Dingens aus einer XML-File einen Schwung von Settings holen. Dazu habe ich ein bisschen was selbstgeschriebenes. Mal kurz die Codes:

XAML:

<Window x:Class="MyProgramm.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525" Loaded="Window_Loaded">
[...]
</Window>

C#:


public MainWindow()
{
    InitializeComponent();
}

private void Window_Loaded(object sender, RoutedEventArgs e)
{
    settings = new SettingsDialog.Settings();
    MessageBox.Show("Window_Loaded");
}

Das Fenster wird geladen, angezeigt, ich kann es auch bedienen. Aber: das Objekt "settings" bleibt null und es erscheint keine MessageBox (welche ich zu Debug-Zwecken eingefügt habe).
Das Event und die dazugehörige Methode habe ich mit Hilfe des Designers erstellt, da sollte also auch nix schief gelaufen sein.

Habe ich da jetzt irgendwo einen Denkfehler drin? Oder irgendeinen doofen Flüchtigkeitsfehler?

05.05.2014 - 19:28 Uhr

Hi,

ich bastel mir gerad ein WPF-Progrämmchen, bei dem der Nutzer "Skins" auswählen können soll. Das klappt soweit auch ganz gut. Nun würde ich das Programm gerne um eine Art-Skin Editor ergänzen. Folgende Codefragmente mal:

Ausschnitt aus der Skin-XAML:


    <sys:String x:Key="skinName">AnotherSkin</sys:String>
    
    <Style x:Key="selectedButton"
           TargetType="{x:Type Button}">
        <Setter Property="Background" Value="DarkGreen"></Setter>
        <Setter Property="Foreground" Value="White"></Setter>
    </Style>    

Hier mal, wie ich den Skin einlese:


            System.IO.FileStream fs;
            ResourceDictionary rd;

                    rd = System.Windows.Markup.XamlReader.Load(fs) as ResourceDictionary;
                    Application.Current.Resources = rd;

                    FrameworkElement fm = new FrameworkElement();

                    skinName = fm.FindResource("skinName") as string;
                    unselectedButton = fm.FindResource("selectedButton") as Style;

Jetzt die Frage: Wie schreibe ich den in diese XAML-Skin-Datei?

VG
da_user

24.03.2014 - 20:07 Uhr

Hi,

mittlerweile konnte ich den Fehler beheben. War eigentlich ganz einfach, man musste unter Verweise nur einen Verweis auf System.Windows.Forms hinzufügen. Hätte ich gleich darauf kommen können.

Nun habe ich aber ein weiteres kleines Problem.

Ich habe ein Dreiachs-Gamepad, sprich: zwei Joysticks und ein Steuerkreuz.

Die X- und Y-Achse sind je nach Gamepadeinstellung das Steuerkreuz oder der linke Joystick. Die Z-Achse ist die Seitwärtsachse vom rechten Joystick. Aber insgesammt fehlen mir hier noch 3-Achsen. Wo finde ich den die in dem SlimDX?

12.03.2014 - 21:19 Uhr

Hi,

ich bin hierauf beim googeln gestoßen, da ich ebenfalls ein Gamepad mit dem SlimDX in eine WPF einbringen möchte.

Das ganze habe ich im MainWindow.xml.cs so drinnen:


            IntPtr windowHandle = new WindowInteropHelper(Application.Current.MainWindow).Handle;
            controller = new GameController.GameController(input, windowHandle, 0);

Der Konstruktor in der GameController-Klasse sieht bei mir Auszugsweise so aus:


public GameController(DirectInput directInput, IntPtr windowHandle, int number)
{
  [....]
   joystick.SetCooperativeLevel(windowHandle, CooperativeLevel.Exclusive | CooperativeLevel.Foreground);
[...]
}

Und genau bei dem joystick.SetCooperativeLevel beschwert er sich:

Der Typ 'System.Windows.Forms.Control' ist in einer nicht referenzierten Assembly definiert.

Es sieht sie aus, als ob hier versucht wird, die Überladung mit einem System.Windows.Forms.Control auszuführen, statt die mit einem IntPtr den ich eigentlich übergebe. Also: was mache ich hier falsch?

VG
Matthias

20.02.2014 - 10:07 Uhr

Hi,

um mal (nicht-)Fortschritte zu melden: ich bin nun endlich dazugekommen eine Reparaturinstallation auszuprobieren => keine Änderung.

Entsprechend installier ich VS2013 jetzt mal neu.

Edit: Ich habe gerade eine Neuinstallation durchgeführt. Inkl. Neustart zwischen deinstallieren und installieren. Immer noch nix.
Interessant finde ich allerdings, dass VS Studio meine persönlichen Einstellungen anscheinend behalten hat. Sprich: beim öffnen eines Projekts öffnen sich die ganzen Fenster/Werkzeugleisten/Fehlerausgabe/... genauso, wie ich das Projekt vor der Deinstallation geschlossen habe. Aber sowas merkt sich VS doch gar nicht im Projekt, oder?

13.02.2014 - 14:13 Uhr

Meinst Du ReSharper? Der überschreibt das IntelliSense-Verhalten von Visual Studio in der Standard-Ausführung.

Ja, das wars. Hier der Link zu dem Google-Suchergebnis, das am besten mein Problem beschreibt, aber nicht die Problemlösung, da ich keinen ReShaper habe, nie hatte und nichtmal weiß, was das ist (mal ergooglen 😉 ):

Visual Studio 2013 intellisense quick info missing while typing

Ich habe deine Tipps trotzdem versucht umzusetzen, die Optionen deaktivert und wieder aktiviert - Ergebnis: nix.

In meinen Benutzerbezogenen Roaming Ordner konnte ich keinen Visual-Studio Ordner finden. Im Benutzerbezogenen Local Ordner befinden sich nur Designer-Daten vom Visual Studio (12.0). Auf die "AppData" des Nutzers "Default" kann ich leider nicht zugreifen.

Auch bei

Und wenn das auch nicht hilft VS mit /setup /resetsettings starten.

bekomme ich "nur" die Meldung: > Fehlermeldung:

Zugriff verweigert

Ich habe jetzt allerdings das VisualStudio mal auf einem anderen Rechner installiert, dort funktioniert das IntelliSense einwandfrei. Also werde ich hier morgen auch einfach mal eine Neuinstallation wagen.

12.02.2014 - 16:40 Uhr

Gut, ich hätte schon Angst, das fällt unter "it's not a Bug, it's a feature".

OS ist win7 pro 64bit.

.NET wird durchs Windows Update ständig aktuell gehalten, dürfte also 4.5 sein. Genau sagen kann ich's aber erst, wenn ich wieder daheim bin.

Wenn ich dann gerade beim nachgucken bin: welche Infos wären noch wichtig?

12.02.2014 - 14:16 Uhr

Hallo,

ich bin vor kurzem vom Visual Studio 2010 Express auf das 2013er umgestiegen.

Nun habe ich das Problem, dass mir Intellisense im 2013 im Gegensatz zum 2010 für die "mitgelieferten" Klassen, Methoden, Felder,... keine Beschreibung anzeigt. Sowohl die "summary" wie auch die Parameterbeschreibung fehlen.
Bei selbsterstellten Elementen, die ich um eine XML-Dokumentation erweitert habe, funktioniert das ganze.
Ich versuche das ganze mal über zwei Teil-Screenshots im Anhang bildlich darzustellen. Ich hoffe mein Problem wird dadurch klarer.

Ich habe natürlich auch schon gegoogelt, allerdings nur Leute gefunden, bei denen Intellisense gar nicht mehr funktioniert hat. Bei dem einzigen Suchergebnis, dass mir weiter hätte helfen können, war wohl ein "Rebuisher" das Problem, sowas habe ich aber nicht.

Ist bestimmt nur ein *** Häckchen das irgendwo fehlt!

Vielen Dank schonmal fürs damit beschäftigen!

Matthias

23.01.2014 - 19:23 Uhr

Hi, danke für die Hinweise.

Ich werde mal beides antesten 😉

VG
Matthias

23.01.2014 - 15:57 Uhr

Hi,

ich muss mal die Experten fragen 😉

Ich schreibe zu meinen Progrämmchen meist eine extra Klasse für die Konfiguration. In der wird alles mögliche gespeichert, was beim nächsten Programmstart wieder da sein soll, IP-Adresse, Ports,... Settings halt. Das ganze wird dann in ein XML-Dokument gebacken.

Zu dieser Klasse schreibe ich mir dann meistens eine eigenen Form mit dem "Einstellungen"-Dialog. Diesem Dialog gebe ich dann die Klasseninstanz mit und muss dann unter Form_Load entsprechend die ganzen Elemente auslesen und in die Controls setzen. Beim Klick auf OK das ganze entsprechend andersrum.

Das ist doch eine ganze Menge Schreibarbeit. Gibts nen Trick/Kniff wie man sich das irgendwie sparen könnte?

VG
Matthias

26.02.2013 - 18:20 Uhr

Hi,

ich kram dieses wohl relativ alte Thema wieder raus, da ich diese Client-Server-Komponente entdeckt und verwenden möchte.

Der Clientteil hat mich (zumindest bis jetzt) vor keine großen Herausforderungen gestellt, allerdings der Serverteil.

Hier ist ja auch der Teil in der ServerGUI relativ dürftig, besteht eigentlich nur aus der Zeile:


server = new Server(typeof(ServerGUI.server_class));

Jetzt scheiterts schonmal daran, dass ich nicht weiß, was ich nach typeof eintippen soll, denn


typeof(MeinProgramm.server_class)

gibt es nicht.

Auch frage ich mich, wie ich mit der Serverkomponente kommunizieren soll? Also wie bekomme ich mit, wenn eine neue Nachricht vom Clienten eingegangen ist, wie komme ich an diese und wie antworte ich dem Clienten dann?

Vielleicht kann mir ja der eine oder andere auf die Sprünge helfen. Mir würde evtl. sogar einfach schonmal der Quellcode zu einem Progrämmchen reichen, das einfach etwas mehr bietet als die ServerGUI, zum spicken halt 😉

VG
Matthias

20.11.2012 - 19:29 Uhr

Ja, denn dort werden keine Extension/Add-Ins für normal unterstützt.

Doof, naja, ich hab ein Onlinetool gefunden, dass mir aus der xml-Datei diese xsd macht: http://www.flame-ware.com/products/xml-2-xsd/

Mit etwas experimentieren habe ich dann auch rausgefunden, wie ich das Konsolentool dazu bewege, mir eine Serialisierungsmethode mit dazuzuschmeißen.
Ich habe jetzt nur den Bereich "Profile" umgewandelt, da ich nicht weiß, was den so alles an der XML-Datei gebastelt wird. Das kann sich die nächsten 10 Jahre wöchentlich bis täglich ändern.

Den Bereich habe ich mir jetzt entsprechend rausgefischt, und übergebe ihn mit einer Convertierung dem Deserialisierer:


            XElement xml = XElement.Load(Pfad);
            XElement xmlProfile = xml.Element("Profile");
            Profile Profile = new Profile();  //die von xsd2Cod erstellte Klasse
            Profile.Deserialize(Convert.ToString(xmlProfile));

Nun schmeißt mir das try-catch-Konstrukt außenrum folgende Fehlermeldung raus:

Fehler beim Reflektieren des Typs 'Profileditor.Profile'

Kurze Google-Suche hat ergeben, dass hier wohl für den Deserialisierer ein Parameterloser Konstruktor fehlt, aber,.. ähm,... das sollte bei xsd2code doch beachtet sein, oder? Ich kenn mich in dem von dem erstellten Code nicht so wirklich aus, und habe da auch irgendwie ein paar Hemmungen, großartig auf gut Glück drin rumzupfuschen...

VG
da_user

20.11.2012 - 17:16 Uhr

Hi,

danke, das AddIn wollte ich gerade installieren. Habs mir heruntergeladen und ausgeführt. Hat dann installiert, aber ich habe den Punkt im Kontextmenü nicht.

Über Google habe ich dann rausgefunden, dass AddIns unter EigeneDokumente/VisualStudio 2010/AddIns rein müssen. Diesen Ordner habe ich aber nicht.

Auch habe ich rausgefunden, dass man anscheinend einen Ordner selbst setzen kann:

Open up Visual Studio > Tools Menu > Options > Environment > Add-In/Macro Security > Add the path "C:\VisualStudioPlugins"

Ich habe unter Umgebung allerdings auch keinen Menüpunkt AddIn-Sicherheit.

Kann es sein, dass das mit VS2010 Express gar nicht erst geht?

So, ich habe jetzt mal das Konsolentool ausprobiert. Folgende Fehlermeldung für meine (komplette) XML-Datei:

Fehlermeldung:
Error: Schema validation failed:
Das Stammelement eines W3C XML-Schemas muss <schema> und sein Namespace 'http://www.w3.org/2001/XMLSchema' lauten.
SubType: Unspecified

Rule:

Press Enter to continue...

Der Beginn meiner XML-Datei sieht so aus:

<?xml version="1.0"?>
<*blubb* xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">

Was läuft den jetzt hier schief?

VG
da_user

19.11.2012 - 23:07 Uhr

Du meinst umsteigen auf das 2012er Studio?

Zu VSE2012 habe ich nur mal in ner Kurznachricht gelesen, dass damit nur Metro-Oberflächen gehen sollen. Seitdem habe ich mich darüber gar nicht mehr informiert.

Werde die Option überdenken, danke 😉

@gfoidl

Zweiter Rechner ist vorhanden, allerdings zwei Schreibtische weiter und ohne VisualStudio und oftmals auch von Kollegen besetzt. Bei einigen Dingen werde ich auch nicht ohne diesen auskommen, für viele andere Dinge würde mir allerdings wohl schon die lokale Hilfe ausreichen.

Gibts den Programme, die mich bei der Registery unterstützen? Also den Voher-/Nachherstatus vergleichen und mir die entsprechenden Schlüssel rausziehen?

19.11.2012 - 23:01 Uhr

Hört sich beides sehr interessant an.

Danke für die Tipps,...

19.11.2012 - 21:52 Uhr

Hi,

ok, ich versuchs...

ich habe eine XML-Datei in der sind, unter vielen anderen Daten, Fahrprofile gespeichert. Dass sieht Auszugsweise so aus:


<A>
  (...) (viele andere Dinge)
</A>
<Profile>
  <Profil>
    <ID>1</ID>
    <Abtastrate>100</Abtastrate>
    (...)
    <Profildaten>
      <int>100</int>
      <int>127</int>
      (...)
      <int>-18384</int>
    </Profidaten>
  </Profil>
<Profil>
  (...)
</Profil>
</Profile>
<A>
  (...)
</A>

Den Teil "Profile" würde ich nun in ein entsprechendes Klassenkonstrukt übertragen, so dass ich da dran fröhlich rumbasteln kann.

VG
da_user

19.11.2012 - 20:15 Uhr

Tag,

der Rechner auf dem ich Entwickle hatte nie einen Internetzugang, hat keinen und bekommt auch nie einen.

Nun wollte ich mir die Hilfedateien herunterladen, so dass ich zumindest die lokale Hilfe nutzen kann. Alle Tutorials die ich dazu gefunden habe, basieren anscheinend auf ältere VisualStudios die noch nicht diesen HilfeManager haben. Und dieser rückt leider auch keinen Link zu den Hilfedateien raus.

Welche Möglichkeiten habe ich den, außer ausdrucken?

VG
da_user

19.11.2012 - 20:06 Uhr

Hi,

danke, habe ich mal etwas in die Sache Linq2XML eingearbeitet. Wie gesagt, bin Anfänger und kannte die ganze Sache noch gar nicht.

Ich kann jetzt aus einer XML-Datei bestimmte Elemente und deren Unterlemente rausziehen. Schreiben dürfte auch nicht allzuschwer sein.

Ich habe mir eine Klasse zusammengewürfelt, dass der Architektur des gewünschten Elemets nachbildet.

Die Tutorials die ich im Netz gefunden haben, machen das meist ganz einfach, und geben das gesuchten Elemet einfach per Console.Write aus. Ich würde das aber gerne in ein entsprechendes Objekt meiner Klasse packen.

Muss ich dazu jetzt wirklich jedes Unterlement einzeln auslesen und zu Fuß eintragen? Sind halt doch einige Arrays dabei, wo das ganze dann etwas komplizierter wird.

VG
da_user

15.11.2012 - 18:58 Uhr

Tag,

ich möchte eine nur teilweise bekannte XML-Datei auslesen und bearbeitet wieder schreiben.

Das ganze habe ich jetzt relativ "zu Fuß" angefangen, in dem ich einfach das XML-Dokument zeilenweise einlese und den Bereich, den ich Bearbeiten will (z.B. von <B> bis </B>) in ein StringArray speichere.

Dieses würde ich jetzt gerne dem Deserializer vorwerfen um die Daten in die passende Klasse zu bekommen. Der frisst mir aber nur FileStreams. Gibt es da eine Möglichkeit, ohne den Umweg über eine Datei, die ich als Anfänger jetzt übersehe?

BTW ist bei der ganzen Sache der Kopf der XML-Datei nicht dabei.

VG
da_user

21.08.2008 - 21:56 Uhr

hmm.. jo, das ist ne Idee die ich die nächsten Tage mal ausprobiere 😉

WindowsNT sollte sich ja normalerweise über WindowsUpdate Updaten lassen? Kann ich irgendwo die Updates die dann heruntergeladen werden einsehen oder sogar irgendwie speichern? Die Anlagenrechner haben nämlich leider keinen netten Inder...

21.08.2008 - 11:51 Uhr

Wenn ich das jetzt richtig gelesen habe, kann eigentlich nur das Fehlen des IE 5.01 zu einem Fehler führen. Ich habe aber den IE 5.5 installiert.

*ratlos*

21.08.2008 - 00:27 Uhr

Tag Leute,
habe gerade eben eurer Forum gefunden und evlt. könnt ihr mir ja endlich helfen. Die Suche brachte leider keine vernüfntigen Ergebnise, also muss ich wohl nen neuen Thread aufmachen:
Ich versuche verzweifelt .NET unter Windows NT (V4.00.1381) zu installieren. Habe mir von MS die entsprechende .NET Version (1.1) runtergeladen, beim Installieren beschwert sich aber RegSvcs. Dank google hab ich das hier gefunden:

http://www.mydigitallife.info/2007/12/27/install-microsoft-net-framework-11-on-windows-vista-fix-regsvcsexe-fails-error/

Allerdings komm ich hier nicht über den ersten Schritt hinaus, da ein paar DLLs fehlen. Diese konnte ich zwar noch nachinstallieren, aber bei der fehlenden machine.config hörts dann auf. .NET Programme laufen auch noch nicht.
Und selbst wenn, ist leider fraglich, ob meine Programme unter .Net 1.1 laufen. 🙁

Wollte auch schon Mono (http://www.mono-project.com/Mono:Windows) probieren, denkste: "This program requies Windows NT 5.0 or later."

Ich habe leider auch nicht die Möglichkeit auf diesen speziellen Rechnern auf ein moderneres BS umzusteigen: Anlagenrechner, seit 2001 in Betrieb, Ersatz frühestens 2010.

Vielleicht durfte sich ja schonmal wer von euch mit dem Problem rumplagen? Für nachfragen stehe ich selbstverständlich zur Verfügung 😉

MfG
da_user