Laden...

Forenbeiträge von Chris360 Ingesamt 40 Beiträge

29.11.2015 - 14:16 Uhr

Hallo fluxy,

vor dem Problem stand ich auch, als ich eine Windows Forms Anwendung zu WPF migriert hatte. Unter Windows Forms hatte ich noch das Attribut an der main-Methode gesetzt.
Auch bei dir sollte die Ursache die sein, dass die Konfiguration zu spät geladen wird:

Therefore it is imperative to make a logging call as early as possible during the application start-up, and certainly before any external assemblies have been loaded and invoked. Quelle: Apache log4net

Wo stammt das denn her? Ich nutze log4net selber und kann diese Behauptung weder durch die Projektseite noch nuget bestätigt sehen.

Gruß Chris

22.07.2015 - 17:14 Uhr

Verstehe ich das richtig, wenn ich sage, dass der Delegat die Methode Compute ist

Compute ist selbst kein Delegate. Es nimmt nur einen Delegaten als operation an und führt diesen aus, sollte es Abonnenten am Calculated-Event geben. Die Eventauslösung ruft dann jene Abonnenten iterativ auf, sprich ihre Handler-Methoden.

Gruß Chris

21.07.2015 - 17:16 Uhr

Ich muss gleich voraus schicken, dass ich mit Delegates und Events schon immer meine liebe Not

Der Antwort von gfoidl kann ich eigentlich nichts mehr zufügen.
Vielleicht hilft das folgende Mini Beispiel das einen Rechner darstellt der sein Ergebnis nicht direkt zurückgibt sondern durch ein Event verarbeitet wird.


    class Program
    {
        static void Main(string[] args)
        {
            var calc = new CalculatorWithFunc();
            calc.Calculated += (s, e) => Console.WriteLine(string.Format("Computation result: {0}!", e.Result));

            // multiply
            calc.Compute(delegate(double val1, double val2) { return val1 * val2; }, 100, 0.5);

            // add
            calc.Compute((val1, val2) => val1 + val2, 50, 0.5);

            // divide
            calc.Compute(Divide, 100, 2);

            // subtract
            calc.Compute(Subtract, 100, 50);

            Console.ReadKey();
        }

        public static double Divide(double val1, double val2)
        {
            return val1 / val2;
        }

        // Ab C# 6 (Visual Studio 2015)
        public static double Subtract(double val1, double val2) => val1 - val2;
    }

    public class CalculationEventArgs : EventArgs
    {
        public double Result { get; set; }
    }

    public class CalculatorWithFunc
    {
        public event EventHandler<CalculationEventArgs> Calculated;

        public void Compute(Func<double, double, double> operation, double d1, double d2)
        {
            if (Calculated != null)
            {
                var result = operation(d1, d2);
                Calculated(this, new CalculationEventArgs { Result = result });
            }
        }
    }

Gruß Chris

21.07.2015 - 15:34 Uhr

Hallo joshit,

Func ist ein generisches Delegat das eine Rückgabe liefert und 0-n eigene Argumente akzeptiert. Es lassen sich somit alle Methoden angeben die, in deinem Fall, string zurückliefern und zusätzlich int und T als Argumente erwarten.

Alternativ kann natürlich auch ein Lambda Ausdruck übergeben werden:

var names = new List<string> { "Hans", "ist", "ein", "toller", "Hecht" };
var sb = new StringBuilder();
sb.AppendCollection(names, (s, i) => names[i].ToString(), counter);

Neben Func gibt es noch Action und Predicate, die man kennen sollte.

Gruß Chris

02.08.2014 - 14:20 Uhr

Mein Designer Code entspricht den geposteten.
Auch wenn ich eine Klasse händisch von Form erben lasse und diese im Designer anzeige und ändere wird die IntializeComponent() direkt in jene Klasse, mit dem beschriebenen Aufbau, eingefügt (da ja keine *.Designer.cs hierbei angelegt wird).

Gruß Chris

02.08.2014 - 10:59 Uhr

Hallo,

das beschriebene Verhalten kann ich nicht nachvollziehen. Die <Name>.Designer.cs Datei enthält genau diese Definitionen.
IntializeComponent() enthält idR gegen Ende die Form Definitionen und auch die Controls.Add() Aufrufe.

Gruß Chris

01.08.2014 - 19:51 Uhr

Hallo,

ich arbeite momentan an einem Klassendiagramm eines Modellierungsprojekts. Hier habe ich eine Oberklasse mit einem Template Parameter ausgestattet und erhalte ein Problem beim Template Binding auf abgeleiteten Klassen.
Sobald ich das Template Binding von Klassen definiere werden jene über die Code Generierung nicht mehr im Ausgabeprojekt erstellt und zwar nur dann.

Ich habe die Template Konfigurationen, die bei erster Code Generierung eingestellt werden müssen, auf ihren Standardwerten belassen.

Das MSDN (UML Class Diagrams: Guidelines: Template Types) beschreibt das Vorgehen analog.

Hat hier jemand einen Tipp wie sich beschriebenes Verhalten abstellen lässt?

Gruß Chris

28.07.2014 - 17:12 Uhr

Hallo husky410,

wie sieht denn deine aktuelle Lösungsstrategie momentan aus? Oder besteht gar keine?

Selbst wenn die Netzlaufwerke nicht explizit als Offline-Ordner eingerichtet sind empfehle ich mal Methode 1 & 2 aus dem KB Eintrag Cache/Datenbank für Offlinedateien neu initialisieren auszuführen.

Gruß Chris

09.07.2014 - 22:24 Uhr

Hallo tsauter,

wieso willst du über das Status Objekt an Referenzen der Threads gelangen?

So wie ich es verstehe willst du im Client die Aktivität des zweiten Threads überwachen. Dieser könnte doch Updates in eine synchronisierte Queue schreiben (Producer/Consumer). Vielleicht verstehe ich aber die Aufgabe gerade nicht richtig.

Was mir noch auffällt ist das aktive Warten das du beschreibst. Das reagieren auf das NetworkAddressChanged Event wäre sicher eine elegantere Alternative.

Gruß Chris

08.07.2014 - 15:45 Uhr

Hallo ExoWork,

schaut man sich die Vererbungshierarchie an wäre nicht etwas der Art für dich möglich?:


public void Shake(System.Windows.Forms.Control controls) { }

Oder was bietet die Control Oberklasse nicht an was du für deine Zwecke benötigst?

Gruß Chris

04.07.2014 - 11:59 Uhr

Hallo BeZi,

es sollte ADD FOREIGN KEY lauten wie ich das sehe.
Siehe SQL FOREIGN KEY Constraint.

Zudem kannst du den Fremdschlüsseln natürlich auch direkt im CREATE TABLE erstellen lassen. Du führst dazu dann halt zwei unterschiedlich benannte FOREIGN KEY Constraints auf. Im ALTER TABLE entsprechend ein weiteres ADD FOREIGN KEY.

Gruß Chris

19.03.2014 - 16:54 Uhr

Hi baer999,

hast du dir dein verlinktes Manual mal angeguckt? Aus diesem geht klar hervor, dass der Thermodrucker eine serielle Schnittstelle verwendet und keine Ethernet Verbindung anbietet. Du kannst somit die SerialPort-Klasse verwenden um mit dem lokalen Drucker zu arbeiten.
Alternativ den TM-T70 oder TM-T88V auf eure Anforderungen prüfen. Diese können auch per Ethernet angebunden werden.

17.02.2014 - 21:49 Uhr

Hallo Madome31,

du erstellt bei jedem Eintritt des Events einen neuen Thread der deine Bilder vergleicht. Ungünstigerweise synchronisierst du den Zugriff auf "actuallImage" aber nicht, so dass deine Fehlermeldung durch eine Race condition entstehen sollte.
Ich empfehle dir den Zugriff auf actualImage durch lock abzuriegeln.

Zudem würde ich dir empfehlen, das ständige anlegen von Threadobjekten zu überdenken und den Sleep im Event-Handler zu entfernen. Das Event wird ja wahrscheinlich nur dann geworfen wenn tatsächlich auch ein Bild in den EventArgs vorliegt.

Gruß Chris

10.08.2013 - 19:38 Uhr

Hi inflames2k,

pauschal gibt es auf das Symptom natürlich nicht eine behandelnde Problemlösung.

Du schreibst, dass es dir beim Spielen auffällt. Hast du mal, während das Problem anhält, ein tracert auf den Server durchgeführt? Dadurch lässt sich schon mal der Streckenabschnitt, der Route, ausmachen der lange Antwortzeiten erzeugt. Der Streckenabschnitt muss nicht zwingnd im Netz deines ISP liegen.
Du kannst parallel auch ein potentiell konstant schnelles Ziel tracen wie z.b. google.de, ob auch hier lange Ping Zeiten feststellbar sind.

Es lohnt sich auch mal nach Firmware Updates für den Router Ausschau zu halten.

Gibst du dein NAS über deinen Router hinaus frei, so dass besonders dein Upstream durch externe Downloads ausgelastet wird oder wieso schließt du dein NAS für die Ursache mit ein?

Gruß

Chris

27.07.2013 - 18:20 Uhr

Hallo kuehl,

Dein Ausschnitt wird schonmal überhaupt nicht kompilieren und dein Query ist syntaktisch falsch:

sqlString = "UPDATE fluege SET Nachname 'Mueller' ; "  

Um auf deine Frage einzugehen: Welcher Aufruf produziert konkret eine Exception? Kannst du anhand der InnerException das Problem nicht bereits weiter eingrenzen?

Evtl. kommt für dich auch die Verarbeitung mittels MySqlCommandBuilder in Frage.

Gruß Chris

08.03.2013 - 22:15 Uhr

Hallo,

selbiges Phänomen hatte ich Anfang der Woche bei einer Collection festgestellt die mir nicht alle Methoden im Intellisense angeboten hatte. In meinem Fall fehlte lediglich ein

using System.Linq;

.

Vielleicht fehlt dir der Verweis ebenfalls.

Gruß Chris

03.02.2013 - 22:39 Uhr

Hallo Biker,

ich habe dies in einem Projekt vor einer ganzen Weile mal gemacht. Meine Erinnerung ist ein wenig verblasst.

Folgende Dinge kann ich dir aber mit auf den Weg geben:

  • der Parameter /tlb erzeugt beim Aufruf von regasm.exe eine TLB Datei die du in Projekten referenzieren kannst. Ich vermute es ist ungewollt die TLB bei jedem Aufruf der Batch-Datei erstellen zu lassen.
  • Die Assembly muss mit einem sogenannten starken Namen signiert werden. Zumindest konnte ich sie zuvor nicht registrieren.
  • Da du VC2010 erwähnst ist dein Assembly FW evtl. eher .Net 4 statt 2? In diesem Fall wäre die regasm.exe des FW 4 zu nutzen.

Gruß Chris

29.12.2012 - 15:47 Uhr

Hallo Pico1184,

dein Ping timeout ist ja schon recht niedrig gesetzt. Bist du sicher das nicht evtl.

tempConn.Connect();

einen viel höheren timeout besitzt, der die Laufzeit negativ beeinträchtigt?

Zudem fällt mir noch folgendes auf:

  • Das pingen auf 0 und 255 würde ich vermeiden. Dem Anschein nach ist 0 bei dir momentan Netzmaske und 255 Broadcast.
  • Splitte die Prüfung von PingReply in der Ping Methode auf. Falls PingReply null ist wird es beim Zugriff auf das Status Property knallen.
  • Wenn du die BrowseConnector Methode nicht spezialisiert planst, dann verarbeite die Subnetzmaske noch. Das Segment muss nicht zwingend von 1-254 reichen.

Gruß Chris

11.08.2012 - 11:24 Uhr

Das würde aber nicht funktionieren, wenn das Netzlaufwerk von z.B einem NAS mit Linux bereit-gestellt würde

Das ist mir bewusst. Geht aber aus dem Initiator Post nicht hervor.

11.08.2012 - 11:00 Uhr

Hallo C4RL0,

der Server der die SMB Freigaben bereitstellt führt auch Buch darüber. Du kommst mittels "Computerverwaltung > System > Freigegebene Ordner > Geöffnete Dateien" dort hin.
Verwalten von Sitzungen und geöffneten Dateien

Der Namespace System.DirectoryServices stellt dir die nötigen Funktionen bereit, um an die Informationen zu gelangen.

Gruß Chris

08.08.2012 - 21:13 Uhr

Habe da gerade beim Spielen mit den Safari Entwicklertools was im Source der Spiegel Online Seite gefunden (Javascript):


SpOnENV_MapShowCategories = ('true' == 'true');
SpOnENV_MapShowAdvert = ('false' == 'true');

Wieso hier nicht direkt ein boolscher Wert zugewiesen wird find ich sehr strange.

Quelle: http://www.spiegel.de/layout/js/http/javascript-V3-13-8.js

06.08.2012 - 19:09 Uhr

Vielleicht reichen dir die Einstellmöglichkeiten, die du über die command line basierten Wege erreichen kannst:

Besonders die aufgeführten Parameter /Xs, /Ss und /Sr sehen vielversprechend aus.
Wenn du Einstellungen in den Hersteller eigenen Treibermenüs vornehmen willst fällt mir da kein weiterer Weg ein.
Im letzten Fall könnte man vielleicht noch ein UI-loses AutoIt Script in Erwägung ziehen das du aus deiner Anwendung antriggerst.

Gruß Chris

05.08.2012 - 22:41 Uhr

Hallo el_vital,

ich habe dazu einen Beitrag auf CodeProject gefunden - Changing printer settings using C#.

Die aufgeführten DLL Imports sollten dir sicher schon weiterhelfen.

Gruß Chris

16.07.2012 - 21:49 Uhr

Hallo Hellfire76,

man kann z.B. bei den Sparkassen solche Terminals mieten.

Gruß Chris

16.07.2012 - 20:17 Uhr

Hallo Hellfire76,

ich arbeite nicht direkt mit EC-Terminals aber auch mit PoS Peripherie. Etwas Stoff kann ich dazu allerdings liefern.

Hat jemand von euch schonmal diese Geräte programmiert (angesprochen) ? Muss man das ? Oder ist der Netzwerkanschluss nur für die Direktverbindung vom Gerät ins Netz ?

Das ist natürlich maßgeblich von deiner Zielsetzung abhängig. Aus deinem Beitrag entnehme ich mal dass du entweder eine Kassensoftware schreiben oder erweitern willst.
Bei EC-Terminals ist das ZVT-Protokoll verbreitet. Die einzelnen Geräte bringen dann i.d.R. implementierende Bibliotheken mit die du verwenden kannst um Zahlbeträge ans Terminal zu übergeben oder Events wie "Zahlung abgeschlossen" zu empfangen.

Ggf. könnte für dich, in diesem Zusammenhang auch, der UnifiedPOS Standard interessant sein.
Dieser bietet auch .NET Implementierungen.

Gruß Chris

17.06.2012 - 14:05 Uhr

Hallo Uzi,

versteh ich das richtig, dass du die Gesamtlänge in Sekunden bereits hast?
Wenn nicht, wo ist das Schwierigkeit die Gesamtlänge in Bytes in Sekunden umzurechnen, um dann die Wunschsekunde in Bytes zu erhalten.
Stellt ja nur einen Dreisatz dar oder verstehe ich da was falsch 🤔?

Gruß Chris

17.06.2012 - 13:52 Uhr

Hallo Lutziffer,

interessant wäre deine verwendete Plugin Version, um dir konkret zu helfen.

Laut Dokumentation gibt es ein Position property, um die Abspielposition zu bestimmen. das bezieht sich auf Version vor 0.8.5.1.

Das VLC ActiveX v2 stellt das vlc.input.time und vlc.input.position property bereit, um sich im Stream zu navigieren.

Gruß Chris

29.05.2012 - 15:14 Uhr

Hi andre67,

das reader Objekt sollte die Methode GetBoolean bereitstellen. Dieser übergibst du den Spaltennamen als String.

Gruß Chris

21.05.2012 - 23:54 Uhr

Hallo banax,

schau dir mal die erste Antwort des folgenden Threads an:
BadImageFormatException beim Laden einer C++ DLL aus C#

Klingt mir auf Anhieb darauf hinaus zu laufen die Platform Einstellung deines Projekts anzupassen oder eine Bibliothek anderer Platform zu verwenden/ergänzen.

Gruß

Chris

06.04.2012 - 10:49 Uhr

Hi Quadsoft,

ich habe deinen letzten Stand nochmal getestet.
Bei mir wird ein ungültiger Windows Schlüssel ermittelt.
Der zweite Buchstabe des Alphabets wird 25x, mit Bindestrichen unterteilt, dargestellt.

Evtl. hilft es noch, dass ich eine MSDN-AA Linzenz von Windows 7 Pro (x64 - de) verwende.

Office 2010 wird bei mir korrekt dargestellt.

Gruß Chris

06.04.2012 - 10:41 Uhr

Hi MillionsterNutzer,

wenn der Start des SQL Servers und der aufsetzenden Anwendung nicht zwingend zusammen stattfinden muss, dann kannst du natürlich den SQL Server aus regulär als Dienst starten lassen.
Evtl. reicht der zeitliche Versatz zwischen Start des Dienst und Ausführung aus dem Autostart schon.

Die Retry Versuche empfinde ich aber auch sauberer.

Gruß Chris

04.04.2012 - 20:51 Uhr

Hallo Quadsoft,

kurzes Feedback zu deinem Tool:
Unmittelbar nach Ausführung der Anwendung wird eine Exception geworfen. Die Gui ist zu dem Zeitpunkt noch nicht sichtbar:

Fehlermeldung:
************** Ausnahmetext **************
System.IndexOutOfRangeException: Der Index war außerhalb des Arraybereichs.
bei ProductKeyFinder.Helper.GetProductKey(String KeyName)
bei ProductKeyFinder.Helper.GetProductsOffice(String pathEx)
bei ProductKeyFinder.Helper.GetProducts()
bei ProductKeyFinder.Form1.Form1_Load(Object sender, EventArgs e)
bei System.EventHandler.Invoke(Object sender, EventArgs e)
bei System.Windows.Forms.Form.OnLoad(EventArgs e)
bei System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
bei System.Windows.Forms.Control.CreateControl()
bei System.Windows.Forms.Control.WmShowWindow(Message& m)
bei System.Windows.Forms.Control.WndProc(Message& m)
bei System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
bei System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

Meine Umgebung besteht aus Windows 7 64-bit und Office 2010.

Gruß CHris

04.04.2012 - 17:57 Uhr

Hi bredator,

blöde Frage aber hast du mal versucht die Solution und/oder das Projekt zu bereinigen?
Bekämpft zwar nur das Symptom, aber ist die Funktion wieder gegeben wenn du den Projektinhalt in ein neues Leerprojekt übernimmst?

Gruß Chris

26.02.2012 - 20:21 Uhr

Hört sich danach an als wenn du den Timer über die Toolbox angelegt, ihn in die *.Designer.cs abgelegt und das Property Enabled gesetzt hast.

Der erneut erzeugte Timer in deinem Form-Konstruktor ist also ein unabhängiger der noch gar nicht gestartet wurde.

Sollte dies der Fall sein ist das erneute erzeugen natürlich nicht mehr notwendig.

Gruß Chris

11.02.2012 - 23:12 Uhr

Hallo Tom1,

der MSDN kann ich zur BringToFront() Methode gar keine Exceptions entnehmen 🤔.

Allerdings sollte der Z-Index mittels SetChildIndex() geändert werden, obwohl ein Control nicht in der Auflistung deines Panels enthalten ist, kommt es zu deinem beschriebenen Symptom.

Vielleicht hilft es deine Situation dahingehend abzusichern indem du mittels Contains zuerst prüfst, ob das gewünschte Control in der Auflistung enthalten ist, bevor du es nach vorne setzt.

Gruß Chris

19.12.2011 - 15:01 Uhr

Hallo ITNerd,

ggf. ist das noch interessant für dich:
Mit der Identity Eigenschaft auf einer Spalte kannst du ein Feld von Zeile zu Zeile erhöhen lassen IDENTITY (Property) (Transact-SQL).
Vergleichbar mit AutoWert in Access, oder Auto_Increment in MySQL.

Gruß Chris

19.12.2011 - 14:49 Uhr

Hallo balu_luca,

mir fallen da spontan zwei Varianten ein:

  1. Mittels des Geräte-Managers die Eigenschaften der Hardwarekomponente abzuändern.
  2. Über den Befehl CHANGE PORT KB186504: Terminal Server-Befehle: CHANGE

Letzteren kannst du dann natürlich auch mittels Process.Start() bedienen.

Gruß Chris

01.11.2011 - 13:32 Uhr

Hallo Hofi,

wie du beschreibst möchtest du die Farbe aus deiner Konfiguration benutzen.
Du castest auch deinen Wert, der hoffentlich einem der Enumaration entspricht, in ConsoleColor zurück. Wo ist nun das genaue Problem?

Ein Blick in die Metadaten verriet mir dass es nur Farben von 0-15 gibt. Vielleicht hilft das.

Gruß Chris

30.10.2011 - 01:01 Uhr

Hi freundblase,

um auf dein ursprüngliches Problem zurück zukommen: Da sich die Systempfade umbiegen lassen oder Windows auch nicht grundsätzlich auf C: liegt empfiehlt es sich den Pfad über die Umgebungsvariable ProgramFiles reinzuholen:

string programFiles = Environment.GetEnvironmentVariable("ProgramFiles");

Gruß Chris

08.10.2011 - 19:06 Uhr

Hallo Franz,

du gibts nach Angabe deiner ersten Spalte ein Kommata an als würdest du eine zweite ändern wollen. Leider folgt keine sondern du filtern mittels WHERE.

Gruß Chris