Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Portal
  • |
  • Mitglieder
Beiträge von oehrle
Thema: Config.Exe aus definiertem Verzeichnis starten und diese Werte verwe
Am im Forum: Rund um die Programmierung

Ok, danke für die Info. Eine tolle Sache habe ich noch gefunden. Man kann ja auch einen Link auf eine Datei erstellen.
Weil das jetzt auf die "Schnelle" sehr flott ging, habe ich das gemacht, damit die Leute vorerst mit meiner Appliaktion weiterarbeiten können.


Referenz für "Windows Script Host Object Model" hinzufügen,

"using IWshRuntimeLibrary;"
einfügen.


 IwsRntLib.WshShell shell = new IwsRntLib.WshShell();
                
                //// Pfad wo die Verknüpfung abgelegt werden soll
                string path = linkablageverzeichnis + "\\linkName.lnk";
                IwsRntLib.IWshShortcut link = (IwsRntLib.IWshShortcut)shell.CreateShortcut(path);
                
                //// Ziel vom Link (die Datei, die dann verlinkt werden soll). Hier die "xxxx.Config.Exe" abrufen mit "OpenExeConfiguration", dann diesen Pfad übergeben.
                string pfadLink = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None).FilePath;
                link.TargetPath = pfadLink;
                link.WorkingDirectory = pfadLink;
                link.Description = "Verlinkte Config.Exe-Datei";
                //link.IconLocation = ;

                link.Save();

Somit kann man die Cofig.Exe in einem Userbereich in einem gewissen Verzeichnis das evtl. den Namen der Appliaktion per Link ablegen.
Das andere werde ich bei Gelegenheit noch testen.

Thema: Config.Exe aus definiertem Verzeichnis starten und diese Werte verwe
Am im Forum: Rund um die Programmierung

Hallo gfoidl, muss da etwas bestimmtes beachtet werden? Eigentlich ist das so, das ich gerne Applikationsrelevate Daten die Userunabhängig sind das speichern würde. Eigentlich wäre es auch toll, wenn diese daten nach einem "ClickOnce"-Update noch gültig wären.

Also, wenn ich da so eine extra Konfigurationsdatei erstelle, dann wäre das gut wenn man diese so wie die Config.exe behandeln könnte. Allerdings arbeite ich immer nur mit einer "NameValueCollection", dann müßte ich mehr als eine verwenden, weil ich dann mehr als eine Konfigurtionsdateien habe.
Ich glaube da gibt es noch eine weitere Möglichkeit. Man kann in der confi.exe einen Verweis auf eine weitere Konfigurationsdatei erstellen, die über den anegebenen Pfad also auch "userdefiniert" abelegt ist. Muss ich mal abprüfen.

Thema: Config.Exe aus definiertem Verzeichnis starten und diese Werte verwe
Am im Forum: Rund um die Programmierung

Hallo, ich habe eine WPF-Anwendung (FW4.0), bei der verbiege ich bei Appliaktionsstart den Pfad der Konfigurationsdatei xxx.config.exe.

Das passiert so:


 string ExeDatei = Path.GetFileName(Assembly.GetEntryAssembly().GetName().CodeBase);

            programmePfad += ExeDatei.Remove(ExeDatei.Length - 4) + @"\";
            programmePfad += ExeDatei + ".config";
            AppDomain.CurrentDomain.SetData("APP_CONFIG_FILE", programmePfad);

In meiner neuen Applikation funktioniert das nicht mehr. Wenn ich Einträge in das xxx.config.exe zurückschreibe, das funktioniert. Aber beim Programmstart werden die Einträge aus der config.exe aus dem Installationsort von "ClickOnce" abgerufen. Ist doch komisch. Aber beide Applikationen werden mit "ClickOnce" installiert, aktualisiert.
Hat jemand eine Idee an was das lieen könnte?

Thema: Erfahrungen gesucht: Maschinendaten an übergeordnetes System per OPC UA übergeben
Am im Forum: Cross Platform Entwicklung - Mobile und IoT

Hallo Abt, danke für die Infos, vor allem:

Bei OPC-UA ist nur festgelegt wie die Daten übertragen werden, aber nicht der Inhalt oder das Format.

==> Das heißt, die mit dem übergeordneten System muss schon ausgemacht sein, wo die Daten stehen (Reihenfolge), wie sie typisiert sind??
Kann mir jemand sagen wie eigentlich so ein Protokoll aussieht (nur mal grob). Hatte mal mit Microcontroller Daten über die DCI-Schnittstelle (MicroChip). Da gab es ein Frame, in dem in nachfolgenden Bytes die Daten übertragen werden konnten. Der Begin vom Frame war zum Beispiel immer 0x19, darauf mußte man achten, dann die Bytes auswerten.


Bei mir ist das Problem, ich muss die Daten (Zustände der Maschine) in das übergeordnete System kriegen. Dazu müssen die Daten ja verpackt werden. Da ich aber noch keinerlei Erfahrung habe, denke ich, ein Simulator wäre nicht schlecht. Der könnte auf meinem Rechner laufen, und ich könnte die Applikation entwickeln, schauen ob die Daten am Simulator korrekt ankommen.

Jetzt habe ich noch gesehen, das bei OPC UA.NET! eine gute Beschreibung (ich denke die ist gut) und auch Demo / Simulator dabei ist.


MartinH: Die Module von Softing sind schon genau auf die spezielle Steuerung zugeschnitten, so wie ich das sehe. Kommen dann nur Daten die vom Hersteller definiert sind, oder können noch weitere zusätzliche Daten abgefragt oder übergeben werden?

Thema: Erfahrungen gesucht: Maschinendaten an übergeordnetes System per OPC UA übergeben
Am im Forum: Cross Platform Entwicklung - Mobile und IoT

Hallo, hier mal eine Anfrage zu einem Problem von mir. Ich muss von einer Steuerung Daten in ein übergeordnetes System bringen. Auf den Steuerungen läuft eine Appliaktion die in C# geschrieben ist, von mir. Nun könnte ich die Informationen an das übergeordnete System per OPC-UA Protokoll bringen. Hat jemand schon mal sowas gemacht?? Ich habe schon freie OPC-Bibliotheken gesehen. Aber in diesem Fall wäre ich ja der OPC-Server. Gibt es OPC-Simulatoren, oder hat jemand damit schon Erfahrung (taugen die was, siehe Firma Matrikon OPCSimulator)?
Wenn man einen Simulator hätte, dann wäre das ja auch schon einfacher zu entwickeln. Bin schon gespannt was geschrieben wird.

Thema: Parallele Datenverarbeitung ohne "lock"
Am im Forum: Rund um die Programmierung

Hallo, ich habe hin und wieder große Datenmengen die evtl. mit Zusatzdaten zusammengefügt werden müssen. Bei der parallelen Verarbeitung ist da oft auch das Problem, dass die Daten wegen DataRace gegeneinander mit "lock" gesichert werden muss. Das kann aber auch manchmal bremsen.

Ich hatte nun gerade einen einfachen Fall, den ich nun mit einer anderen Sichtweise lösen wollte. Leider bekomme ich eine Exception, bei der parallelen Verarbeitung der Task's.

Hier mal meine Idee (mal ganz egal ob das auch noch anders lösbar ist, die Frage ist wie bekomme ich die Exception weg, da weiss ich nicht weiter).

Ich lese zwei Datentabellen ein: Tabelle "Quelldaten", Tabelle "Infodaten".

Die "Quelldaten" müssen mit den "Infodaten" abgeglichen werden. In einer normalen Schleife dauert das sehr lange. Nun die Idee die Quelldaten Prozessorkernabhängig aufzuteilen und je einen Task erstellen, dann die Tasks parallel starten.

Soweit funktioniert das auch schon, aber bei

 Task.WaitAll(lstTsk.ToArray(), new TimeSpan(0,0,30));


Eventuell kann mir jemand einen Tipp geben.




bekomme ich eine Exception.

Hie rmal der Code:


			//// INFO: 23.02.2017: Hier die Testroutine für parallele Ausführung testen
            // ############################################ TEST ###################################################################

            //// Daten vom SQL-Server einlesen
            DataTable tblPersonenDaten = GetDataSql("Personendaten");
            DataTable tblPersonenZusatzdaten = GetDataSql("PersonenZusatzdaten"); 

			//// List<> erstellen, wo die Datensatzaufteilung Prozessorkernanzahlig aufgeteilt wird 
            List <DataTable> lstTblPersonendaten = new List<DataTable>();
            int anzProzkerne = Environment.ProcessorCount;
            for (int i = 0; i < anzProzkerne; i++)
                lstTblPersonendaten.Add(tblPersonendaten.Clone());

			//// Die Tabellendatensätze dann aufsplitten
            int zaehler = anzProzkerne;
            for (int m = 0; m < tblPersonendaten.Rows.Count; m++)
            {
                if (zaehler == anzProzkerne)
                    zaehler = 0;
                lstTblPersonendaten[zaehler].Rows.Add(lstTblPersonendaten[zaehler].NewRow().ItemArray = tblPersonendaten.Rows[m].ItemArray);
                zaehler++;
            }

            
			//// Nun die parallelen Tasks erstellen und die Daten übergeben
            //// Da die Daten vereinzelt sind, muss kein "lock" verwendet werden, so die Idee
            List<Task> lstTsk = new List<Task>();
            for (int n = 0; n < anzProzkerne; n++)
            {
                lstTsk.Add(Task.Factory.StartNew(() => DatensaetzeAbgleichen(lstTblPersonendaten[n], tblPersonenZusatzdaten.Copy())));
            }
            try
            {
				//// Aufruf der parallelen Abarbeitung (das ist die Zeile 1942 in meinem Code)
				Task.WaitAll(lstTsk.ToArray(), new TimeSpan(0,0,30));
            }
            catch (Exception ex)
            {
                Allgemein.ExceptionMeldungAusgeben(ex, "Fehler bei TPL", "Fehler");
            }

            
            // #####################################################################################################################
			
			
			
			
			
			
			
 /* ========================================================================================================================================================================*/

        /// <summary>
        /// Gleicht die Daten der Tabelle "tblSource" mit den von Tabelle "tblInfos" ab.
        /// </summary>
        /// <param name="tblSource">Quelldaten die mit den Infos befüllt werden.</param>
        /// <param name="tblInfos">Tabelle mit den Info-Daten, welche in die entsprechenden Quelldatensatzspalten eingefügt werden.</param>

        private void DatensaetzeAbgleichen(DataTable tblSource, DataTable tblInfos)
        {
            try
            {
				foreach (DataRow rowSource in tblSource.Rows)
                {
                    DataRow rowScheibenInfo = tblInfos.AsEnumerable().Where(x => x["SapArtikel"] != DBNull.Value && x["SapArtikel"].ToString().Trim() == rowSource["SapArtikel"].ToString().Trim() || x["Systemcode"] != DBNull.Value && x["Systemcode"].ToString().Trim() == rowSource["Zeichnungsnummer"].ToString().Trim()).FirstOrDefault();

                    if(rowScheibenInfo != null)
                    {
                        rowSource["ScheibenInfo"] = rowScheibenInfo["ScheibenInfo"];
                        rowSource["SwInfo"] = rowScheibenInfo["SwInfo"];
                        rowSource["ZusatzInfo"] = rowScheibenInfo["ZusatzInfo"];
                    }
                }
            }
            catch (Exception ex)
            {
                Allgemein.ExceptionMeldungAusgeben(ex, "Fehler in DatensatzAbgleichen() ", "Fehler:");
            }
        }

/* ========================================================================================================================================================================*/




InnerException:
{"Index was out of range. Must be non-negative and less than the size of the collection.\r\nParameter name: index"}

Bin im Moment etwas ratlos.

Thema: WpfControl (userControl) in WinForm verwenden (Eventanmeldung per Lambda-Expression)
Am im Forum: GUI: WPF und XAML

Ne, wird nicht angesprungen. Hatte ich schon getestet.

Thema: WpfControl (userControl) in WinForm verwenden (Eventanmeldung per Lambda-Expression)
Am im Forum: GUI: WPF und XAML

Hallo, ich habe das folgende Problem:

In einer bestehenden WinForm-Anwendung binde ich ein Projekt das mit WPF erstellt ist ein.
Es handelt sich um ein Tool um Daten zu filtern. Nun funktioniert das auch, die Eingabe reagiert auch (was zuerst ein Problem war).

Nun bin ich es gewohn dass ich in WPF im Code manchmal die Events mit direkt mit Lambda-Expression ausstaffiere (geht schnell und übersichtlich). Das wollte ich jetzt mit dem WpfControl in der WinForm-Appliaktion machen. Leider werden nicht alle Eventhandler angesprungen. Habe schon eine ganze Zeit im Netz gesucht, leider aber nichts brauchbares gefunden.
Hat jemand einen Tipp wie ich das machen kann (oder geht das gar nicht) ?

Hier mal mein Code:



  FilterWindow wnd = new FilterWindow(tblMaterialRohkoerper, 1);
            ElementHost.EnableModelessKeyboardInterop(wnd);
            wnd.stp_Zusatzeingaben.Visibility = Visibility.Visible;
            WindowInteropHelper helper = new WindowInteropHelper(wnd);
            helper.Owner = this.Handle;

            string pwzMaterial = "";

  //// Eventhandling, dieser funktioniert !!
  wnd.btn_Datenuebernahme.Click += (sender, args) =>
            {
                tbx_SapMaterial.Text = wnd.tbx_Zusatzeingabe.Text.Trim();
                tbx_PwzMaterial.Text = pwzMaterial;
                wnd.Close();
            };


//// Eventhandling, das niicht funktioniert. Hängt das mit dem unbekannten "DataGrid" für WinForm zusammen ??
wnd.dgFilterdaten.MouseDoubleClick += (sender, args) =>
            {
                if(sender is DataGrid)
                {
                    System.Windows.Controls.DataGrid dgDaten = (System.Windows.Controls.DataGrid) sender;
                    if (wnd.stp_Zusatzeingaben.Visibility == Visibility.Visible)
                    {
                        var xx = dgDaten.Columns.AsEnumerable().Where(x => x.Header.ToString() == "SapMaterial").FirstOrDefault();
                        if (xx != null)
                        {
                            string materialRohkoerper = ((DataRowView)(dgDaten.CurrentItem))["SapMaterial"].ToString();
                            wnd.tbx_Zusatzeingabe.Text = materialRohkoerper;
                            tbx_SapMaterial.Text = materialRohkoerper;

                            //// Z-Artikelcode auslesen
                            if(((DataRowView) (dgDaten.CurrentItem))["ARTCODE"] != DBNull.Value && ((DataRowView) (dgDaten.CurrentItem))["ARTCODE"].ToString().Trim() != "")
                            {
                                zMaterial = ((DataRowView) (dgDaten.CurrentItem))["ARTCODE"].ToString().Trim();
                                tbx_zMaterial.Text = zMaterial;
                            }
                        }

                    }
                }
            };





            wnd.Show();


Thema: Datenbank als XML auf Rechner mit Produktionsdatenbank aktuell halten
Am im Forum: Datentechnologien

Hi T-Virus, danke dir.

Habe gerade mal die DB vom Produktionsserver auf meinen SqlExpress auf mein Rechner übertragen lassen. Das ging sehr schnell, und ich denke MS nutzt da auch das BulkCopy. Von meinem rechner aus habe ich dann eine Sicherung erstellen lassen, das sind 335 MB. Dann gezippt, da waren es nur noch 37 MB.

Ich würde das gerne mit SQLite machen, und die Daten vom Sqlserver mit BulkCopy holen. Würde das mal zuerst bei mir zuhause ausprobieren, wie schnell das geht und ob das praktikabel ist.
Hast du noch Info zu SQLite (Website mit Beispielcode oder mit den Methoden und Hinweisen)?

Wahnsinn: Habe gerade mal den Abgleich nur über ID und Dateiname gemacht. Das geht sehr schnell, noch parallelisieren, dann ist es n och schneller.
Und: Habe auch mal die XML-Datei mit 1,5 GB gezippt, die hat dann gerade mal noch 42 MB. ist doch Wahnsinn, oder. da müssen wohl große Luftblasen drin sein ;-)

Thema: Datenbank als XML auf Rechner mit Produktionsdatenbank aktuell halten
Am im Forum: Datentechnologien

Hallo T-Virus. SQLite-DB-Files habe ich schon mal eingelesen (von einem Maschinenhersteller, der verwaltet seine Programme in SQLite).
Ich habe jetzt aber keine ahnung, ob SQLite sehr schnell ist, aber das kannst du mir bestimmt aus deiner Erfahrung sagen.

Zum Arbeistspeicher: Das wäre denke ich nicht das Problem, die Jungs bei uns haben in der Regel alle 16 GB RAM, was aber nicht heißen soll das ich darauf keine Rücksicht nehme (muss ja nicht verschwenderisch sein).

Ich denke das Problem ist die gezippte DB-Datei von externen Rechnern zu kopieren, das wird auch einiges an Zeit brauchen. Oder denkst du das sich das Datenvolumen durch die gezippte SQLite-Datei drastisch reduziert ?? Was sagt deine Erfahrung dazu?

Was mich dann noch stört, ist das erstellen der Zip-Datei. Das soll alles möglichst automatisiert ablaufen, oder gibt es da etwas am SQL-Server, das er das zykklisch selber macht?

Wäre es möglich mit SqlBulkCopy vom SqlServer direkt in die SQLite zu kopieren ?? Evtl. wäre das auch ein brauchbarer Ansatz.
Die SQLite-Struktur der Tabellen könnte ich bestimmt automatisiert im Code erstellen lassen, falls sich die Struktur der DB-Tabellen auf dem Server ändert (was vorkommen kann).

Dann noch Stichwort Webservice. Noch nie gemacht, nur davon gehört. Ist das schwer, läuft das über ASP (ich mach vorwiegend WPF).


@Sir Rufo:
Die Idee mit den ID's klingt gut, da man die relativ schnell über die Datenverbindung (die langsam ist) abfragen kann.
Aber ich denke das der interne Abgleich auf dem externen Rechner deswegen trotzdem nicht schneller geht (muss ich noch ausprobieren).

Thema: Datenbank als XML auf Rechner mit Produktionsdatenbank aktuell halten
Am im Forum: Datentechnologien

Hallo, danke für euren Beiträge. MMMhh, es ist so, das die DB 28 Tabellen hat. Tabelle 0 ist die Kopftabelle, mit den Kopfangaben zu Werkzeugen. Alle weiteren Tabellen sind Operationen, mit denen das Werkzeug hergestellt wird. Also es gibt somit 27 verschiedene Operationen, mit denen ein Werkzeug hergestellt werden kann. Diese Kopftabelle hat als Schlüssel den Dateinamen zu den anderen Tabellen. Wenn ich also wissen will, mit welchen Operationen Werkzeug X aus der Kopftabelle erstellt wurde, frage ich die Kopftabelle nach dem Dateinamen ab und frage alle weiteren 27 Tabellen ab.
Die Kopftabelle hat so an die 25 Felder, alle weiteren Tabellen jeweils 97 Felder. Ich denke alles in allem sind es bestimmt schon mehr als 1 Mio. Datensätze, über alle Tabellen (in XML 1,4 GByte).
Naja, und die Verbindung bei uns im ländlichen Raum ... DSL gibt es, aber auch nicht überall so schnell (kleine Dörfer ...).
Das nächste ist, da in der Firma einige Programmierer mit dem System arbeiten, wird beim Starten die komplette DB in ein DataSet geholt, damit der Traffic im Firmennetz nicht so groß ist. Das funktioniert auch gut, die Anwendung läuft sehr schnell. Zu Beginn hatte ich die Abfragen immer direkt über den SQL-Server laufen, das war aber wesentlich langsamer. Jetzt habe ich das Problem, das diese Anwendung auch bei einem User extern laufen soll (von zuhause). Wenn er die komplette DB nachhause schaufeln soll, dann geht das mal locker 30 Minuten ( ich weiss nicht genau, aber vielleicht eine 2Mbit-Verbindung).

Dann mal zu dem Zeitstempel. Den habe ich natürlich. Ich habe auch kein Problem die neuen Datensätze zu erfassen, die hinzugekommen sind. Das geht rasend schnell.
Das Problem ist, gelöschte Datensätze aus dem Produktionssystem zu erkennen. Da habe ich das Problem, das möglichst schnell durchlaufen zu lassen.

Wenn ich 80000 Datensätze aus der XML-Sicherung gegen die aktuell abgerufenen Daten aus der Kopftabelle der Produktionsdatenbank 1:1 mit dem Dateinamen überprüfen muss, ob dieser Datensatz noch existieren darf, dann dauert das ewig.

Hatte probiert das mit LinQ über GroupJoin, funzt aber nicht, das ich sofort nur die offenen Datensätze hätte.

Das einfachste wäre natürlich, ich könnte die Daten direkt vom Produktionsserver in das DataSet des externen Rechners laden. Aber T-Virus, wie geht das parallel? Gleichzeitig mehrere SqlDataAdapter oder Reader verwenden und Anfrage absetzen, und dann die verschiedenen Tabellen in das DataSet importieren?

Was denkt ihr?


Da gibt es ja noch das BulkCopy. Schön wäre das, wenn man damit direkt vom Sqlserver in ADO.Net-Tabellen laden könnte. Aber das geht wohl so nicht, oder in irgend einer anderen Form auf den entfernten Rechner kopieren ohne auf dem den SQL-Server installieren zu müssen. Oder gibt es dazu noch eine weitere Option?

Thema: Datenbank als XML auf Rechner mit Produktionsdatenbank aktuell halten
Am im Forum: Datentechnologien

verwendetes Datenbanksystem: <sqlexpress2012>

Hallo, bin gerade dabei eine große Datenbank, die ich mit meiner Applikation pflege und aktualisiere auch auf anderen Rechnern arbeiten zu lassen, die nicht im Firmennetz sind.

Das funktioniert eigentlich auch, nur ist die Datenbank mittlerweile so groß, das bei der Abfrage der Daten man mächtig lange warten muss, bis die Daten vom Server gesaugt sind.

Also, habe ich mir gedacht, ich speichere ein XML-Abbild der DB mit ihren Tabellen auf dem Rechner. Wenn man dann extern arbeitet, muss die Applikation die XML vom Rechner in ein DataSet einlesen. Dann muss die Kopftabelle, mit all ihren Artikeln mit der vom Produktionsserver abgeglichen werden. Das heißt: Wenn man ein paar Tage nicht am Netz war, sind beim Produktionsserver neue Datensätze hinzugekommen. Diese muss ich in der XML-Struktur auf den oder dem externen Rechner aktualisieren.
Wenn ich einen Abgleich der Kopftabelle aus der XML mit der Kopftabelle vom Produktionsserver mache, kann ich alle anderen XML-Tabellen mit den nötigen Informationen aktualisieren und das XML aktualisiert zurückschreiben.

Aber nun zu meinem Problem. Die XML habe ich auf dem Rechner erstellt, ich bin gerade bei dem Abgleich der XML-Kopftabelle mit der Produktions-Kopftabelle.

Ich hatte mir gedacht, ich durchlaufe in einer Schleife die Produktionskopftabelle un dvergleiche jeden mit der XML-Kopftabelle (über den Dateinamen, das ist der Schlüssel).
Leider dauert das ewig, da ca. 80000 Datensätze verglichen werden müssen.

Ich hätte aber gerne sofort nur die Datensätze, die einfach nur fehlen. Habe das schon mit LinQ probiert (GroupJoin), aber ohne Erfolg. Und nur mit Schleife das dauert zu lange.

Hat jemand eine Idee wie man die beiden Tabellen sehr schnell abgleichen kann (also das man ald Ergebnis nur die Datensätze hat bei denen es keine Zuordnung gibt)?

Thema: Nach Update auf Tortoise SVN 1.7 werden keine Symbole mehr angezeigt / Kein übertragen möglich
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Danke david, das war es.
Jetzt klappt es wieder, schwitz ;-)

Thema: Nach Update auf Tortoise SVN 1.7 werden keine Symbole mehr angezeigt / Kein übertragen möglich
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Hallo, hatte die Tortoise SVN VErson 1.6.4 oder so auf dem Rechner und habe damit gearbeitet.
LEtzte Woche habe ich die aktuelle Versoin installiert.

Jatzt kann ich aber nicht mehr einchecken, keine Icons auf en Ordnern, und die lokalen Laufwerke sind in der EInstellung mit den Icons eingestellt.

Kann man das reparieren, oder sind jetzt alle meine Historien und Applikationen futsch?
Hatte jemand das gleiche Problem?

Thema: Suche Lib um Kamerabilder von Messwerten auszuwerten
Am im Forum: Rund um die Programmierung

Hallo es handelt sich um einen Stromzähler da gibt es aber die optische Schnittstelle d0 und diese kann ich ansprechen hat das jemand schon mit einer selbstgebauten Optokoppler Einheit getestet dann würde ich dafür einen Microcontroller verwenden.

Thema: Suche Lib um Kamerabilder von Messwerten auszuwerten
Am im Forum: Rund um die Programmierung

Hallo, ich ahbe eine Frage zur Bildverarbeitung. Und zwar würde ich gerne mit Bildern über eine Webcam oder Handykamera die auf ein kleinses digitales Display zeigt, den aktuellen Messwert der Messung erfassen und auswerten. Nun wäre interessant ob schon jemand so etwas gemacht hat und ob das sehr aufwendig ist.
Gibt es dazu schon gebrauchsfähige DLL's ? oder gibt es in C# schon standardisierte, intergrierte Direktiven?
Würde damit gerne eine Messauswertung laufen lassen, wenn das möglich wäre.

Thema: Wieso Model, wenn man das ViewModel nutzen kann?
Am im Forum: GUI: WPF und XAML

Hallo LaTino, danke für deine Erklärung.
Ich habe noch Fragen.

1. Es ist also so, das man das "Model" nur mit den Properties bestückt, und "NUR PROPERTIES" enthält. Da kommen keine Methoden , Schnittstellen oder sonstiges rein, korrekt?

Das Model (die Daten) kann ja sein das man die noch einer anderen Klasse in der Applikation übergeben möchte, weil diese Klasse die Daten irgendwo archiviert oder ablegt. Macht man das eigentlich so, oder ist das falsch? Ansonsten muss im "ViewModel" dafür gesorgt werden (bei den Properties) das die "Model.Properties" auch aktualisiert werden, korrekt???

Ich bin da sehr verunsichert, ich habe mich an das Beispiel von folgendem Link angelehnt, und da wird im "Model" eine Methode für die Dateierzeugung verwendet.
Ist das korrekt, oder geht diese Lehrmaterial eigentlich auch am Ziel vorbei?

WPF: Von Spaghetticode zu MVVM – Teil 7 von 9

Ich habe gerade eine Applikationserweiterung in einem Programm das mit der CNC von Steuerungen kommuniziert.
Da müssen aus einem ASCII-File das in der Steuerung abgearbeitet wird, Parameter abgeändert werden. Dazu muss ich das ASCII-File aber erst aus der Steuerung auf die Festplatte des Maschinen-PC kopieren, dann die Parameter auswerten, darstellen (in View) damit sie der Bediener anpassen kann, dann wieder auf die Festplatte zurückkschreiben und in die CNC zurück kopieren.

Diese ganze Kopiererrei und Bearbeitung vom ASCII-File würde ich nur in der "ViewModel" machen, oder?
Dann ist noch das Problem, das ich das Zurückschreiben in die CNC in einer speziellen Klasse für die CNC-Kommunikation habe. Kann ich dann an die das "Model" mit dem veränderten ASCII-File übergeben, oder macht man dann diese Kommunikation mit der CNC auch im "ViewModel" ?? Dann muss man die CNC-Kommunikation in mehrern "ViewModels" abbilden, sofern man mehrere "View" hat ??

Thema: Excel: Meldung beim überschreiben der Datei deaktivieren
Am im Forum: Office-Technologien

Problem hat sich gelöst. Ich hatte die DLL mit der Excelverarbeitung nicht auf das Netzlaufwerk übertragen, deswegen hatte es nicht funktioniert.

Also für alle die so ein Problem haben. "DisplayAlerts = false" setzen.

Thema: Excel: Meldung beim überschreiben der Datei deaktivieren
Am im Forum: Office-Technologien

Hallo, folgendes Problem. Ich habe eine C#-Anwendung in der viele Berechnungen durchgeführt werden. Einen Teil von diesen Ergebnissen muss in Excel überführt werden. Nun haben wir unser Ziel soweit erreicht. Eein Problem das noch besteht, ist das überschreiben der Exceldatei. Es kann sein, dass Berechnungen durchgeführt werden. Falls aber der Bediener etwas vergessen hat zu aktivieren , kann er das nochmal machen und die Berechnung erneut starten. Darauf hin wird die Exceldatei nochmal überschrieben, aber ich hätte es gerne, das keine Meldung erscheint.
Das habe ich mit

 XlApp.DisplayAlerts = false;

probiert zu erreichen.
Nun habe ich festgestellt, dass es funktioniert, wenn ich das direkt auf meinem Rechner mit Visual Studio laufen lasse (Starten ohne Debugging).
Lege ich die Exe auf das Netzlaufwerk und starte die Applikation, dann kommt beim überschreiben der Exceldatei wieder jedes mal die nachfrage wegen dem Überschreiben der Datei.
Woran kann das liegen? Spielen da irgend welche Berechtigungen mit rein?

Problem hat sich gelöst. Ich hatte die DLL mit der Excelverarbeitung nicht auf das Netzlaufwerk übertragen, deswegen hatte es nicht funktioniert.

Thema: Wie springe ich nach dem Öffnen eines Excel-Files zu einem bestimmten Worksheet?
Am im Forum: Office-Technologien

Hallo, probier mal das hier:


  //// Sheet über den Namen ansprechen
  XlSheet = (Excel.Worksheet)XlBook.Worksheets.get_Item("Arbeitsplan");

Thema: Wieso Model, wenn man das ViewModel nutzen kann?
Am im Forum: GUI: WPF und XAML

Hallo, baue oder besser gedagt möchte ich auch eine der nächsten Anwendungen mit MVVM ertellen. Ich habe auch schon ein wenig damit gearbeitet.
Ich habe mir mal ein einfaches Besipiel genommen, das z.B. von Rheinwerk Computing: Visual C# 2012 , Kapitel 28.5 MVVM-Pattern.
Da geht es wie in den meisten Beispielen einfach zu. Ein Model in Form einer Person (Vorname, Nachname) eine View und ein ViewModel. Die drei Komponenten sind erstellt. Nun wird Im MainWindow zuerst einmal eine Instanz von Model an das ViewModel übergeben, was ich verstehen kann. Ich ändere nun Daten per CodeBehind (übergebe einen anderen Vornamen), und das ViewModel bekommt die Änderung mit. Das verstehe ich auch. Dann habe ich aber im Code dann mal das Model angeschaut, als die Änderung durchgeführt wurde, es hatte immer noch den Vornamen der zuallererst festgelegt wurde. Sollte sich der nicht auch ändern, sobald im View oder im CodeBehind der Vorname geändert wird???
Kann man das so verstehen, was ich meine?? Ansonsten könnte man sich das Model auch sparen ??

Thema: [Gelöst] PathGeometry, PathFigure: Komponenten mit verschiedenen Farben zeichnen möglich?
Am im Forum: GUI: WPF und XAML

Zitat von ErfinderDesRades
Guck doch in den verlinkten downzuloadenden Code, und sag du's mir: Mache ich dann alles in XAML?

Gibt es das auch für C#??
Ja, ich denke in deinem Fall macht XAML schon Sinn (sehr viel XAML drin).
Bei mir nicht immer, denn es gibt Situationen, in dem mein WIndow dynamisch sein muss, die Controls automatisiert im Code erzeugt werden.
Ich habe auch Anwendungen, bei denen sich das Window nicht anpassen muss.
Und MVVM habe ich auch schon verwendet, bei kleineren Anwendungen aber auch aufwendiger. Aber jedenfalls hast da eine schöne Spielwiese !!

Thema: [Gelöst] PathGeometry, PathFigure: Komponenten mit verschiedenen Farben zeichnen möglich?
Am im Forum: GUI: WPF und XAML

Zitat von ErfinderDesRades
hier mal ein Sample, wo ich so einiges mit Pathes und Kram anstelle - nichts davon im Codebehind:
https://www.vb-paradise.de/index.php/Thread/115664-Linien-Figuren-Formen/

Mal eine Frage: Wenn du eine dynamische Applikation erstellen mußt, in der sich auch Ansichten in der Oberfläche ändern können (zusätzliche Buttons oder ähnliches), ich denke da an ein Zeichenprogramm, machst dann das alles in XAML??

Thema: Problem globale Nullpunktverschiebung/Vorzeichenänderung
Am im Forum: GUI: WPF und XAML

Hallo, bin gearde dabei mir eine Oberfläche für ein kleines Zeichentool zu erstellen.
Dazu habe ich folgendes Problem:

Ich habe ein Canvas definiert, in dem ich Zeichnen möchte.
Wenn ich ein Zylinder oder ähnliches Zeichne, dann sollte man direkt mit definierten Nullpunkten areiten können.

Ich stelle mir das so vor, das ich zuerst eine globale Drehung der Vorzeichen für X- und Y-Achse mache (Scaletransform).
Dann lege ich den Nullpunkt fest, in Y-Achse auf Fenstermitte, in X-Achse 100 Einheiten vom rechten Rand entfernt (TranslateTransform).

Diese beiden Transformationen fasse ich in einer TransformGroup zusammen.
Diese TransformGroup weise ich dann dem Canvas zu. Dann denke ich mir, das alle Elemente die ich dem Canvas zuweise, automatisch nch dieser TransformGroup beim zufügen gezeichnet werden.
Ist aber nicht so, das passt nicht.
Mache ich einen Denkfehler?

Habe mal den Code beigefügt. Die Linie wird über das Click-Event ausgelöst.


 public MainWindow()
        {
            InitializeComponent();
            
            
            //// Transformationen festlegen
            //// Transformation von Stackpanel, damit die Y-Achse mit positiver Richtung nach oben verläuft
            Basistransformation.ScaleTransformGlobal = new ScaleTransform(){ScaleX = 1, ScaleY = -1};

            //// Nullpunktverschiebung in X- und Y-Koordinate festlegen
            //// X-Nullpunkt 20 Einheiten von linkem Rand
            //// Y-Nullpunkt in vertikaler Mitte
            Basistransformation.NullpunktverschiebungGlobal = new TranslateTransform((Canvas.Width / 2.0) + 20, -Canvas.Height / 2.0);
            
            //// Transformgruppe ertellen, dieser die Y-Achsenspiegelung zufügen und dann die TransformGroup dem Canvas zuweisen
            Basistransformation.TransformGroupGlobal = new TransformGroup();
            Basistransformation.TransformGroupGlobal.Children.Add(Basistransformation.ScaleTransformGlobal);
            Basistransformation.TransformGroupGlobal.Children.Add(Basistransformation.NullpunktverschiebungGlobal);


            //// Dem Canvas die globale Transformation zuweisen (Vorzeichenänderung X/Y-Achse, Nullpunktverschiebung)
            Canvas.LayoutTransform = Basistransformation.TransformGroupGlobal;
            



        }


 private void Btn_Test_OnClick(object sender, RoutedEventArgs e)
        {
            //// Path definieren
            Path pthTest = new Path(){Stroke = Brushes.Red, StrokeThickness = 4};
            
            //// PathFigure definieren
            PathFigure pthFgrTest = new PathFigure(){StartPoint = new Point(0,0)};
            pthFgrTest.Segments.Add(new LineSegment(new Point(200,20), true));
            //pthFgrTest.Segments.Add(new LineSegment(new Point(200, -250), true));
            //pthFgrTest.Segments.Add(new LineSegment(new Point(200, -250), true));
            
            //// PathGeometry definieren, zuweisen vpn PathFigure
            PathGeometry pthGeoTest = new PathGeometry();
            pthGeoTest.Figures.Add(pthFgrTest);
            
            //// Dem Path die PathGeomtry zuweisen, 
            pthTest.Data = pthGeoTest;
            //pthTest.LayoutTransform = Basistransformation.TransformGroupGlobal;

            //// Dem Canvas den PAth mit den Zeichnungsinformationen zuweisen
            Canvas.Children.Add(pthTest);
}

Thema: [Gelöst] PathGeometry, PathFigure: Komponenten mit verschiedenen Farben zeichnen möglich?
Am im Forum: GUI: WPF und XAML

Halllo, das geht so nicht, denn die PathGeometry muss einem "Path.Data" zugeordnet werden, und dem "Path.Stroke" wird die Farbe übergeben. Die Farbe ist dann für alle dem Path zugehörigen Elementen gültig.

Somit muss in diee Konstellation für alle Elemente ein eigener "Path" definiert werden.

Thema: Trotz 4GB Ram zeigt Windows nur 2880MB an
Am im Forum: Smalltalk

Hallo, möchte das Thema hier nochmal aufgreifen, weil ich dazu ein paar Fragen zur RAMDISK habe.
Mich würde interessieren, wie in einer RamDisk WinXp läuft. Die Vorraussetzung wäre, dass mein Host mit Win7 oder Win8 ausgestattet ist. Ich lege die RamDisk an, organisiere das alles und starte dann von Win7/8 das "XP-System".
Brauche ich dazu noch eine VM-Software (VM-Ware oder VirtualPC oder ähnliches)??
Wenn "XP-System" läuft, kann man im DOS-Modus z.B. den kompletten Bildschirm ausfüllen lassen, oder geht das nicht (bei XP-Mode geht das ja nicht, da wird max. mit 680x480 Auflösung ein kleines Fenster auf dem Monitor angezeigt)?
Kann ich Netzwerkverbindungen aufbauen?

Evtl. kann mir dazu jemand Infos geben, das wäre toll.

Thema: [Gelöst] PathGeometry, PathFigure: Komponenten mit verschiedenen Farben zeichnen möglich?
Am im Forum: GUI: WPF und XAML

Hallo, ich habe die Aufgabe einen Dorn mit verschidenen Scheiben darzustellen.
Das ganze passiert dynamisch, und in code behind.

Ich habe auch schon verschiedene PathFigure erstellt.

Am Ende werden die PathFigures einer PathGeometry zugefügt.

Die PathGeometry (mit den verschiedenen PathFigure's) werden dann dem Path zugefügt, un dhier habe ich ein Problem.

Ich möchte den PathFigure's verschiedene Farben und Strichstärken geben, damit man sie besser unterschieden kann.

Wie mache ich das?
Muss ich ein ganz anderes Konzept verwenden oder gibt es dafür eine einfache Lösung??

Thema: Wie fremden Namespace in anderen XSD-erstellten Klassen verwenden
Am im Forum: Datentechnologien

verwendetes Datenbanksystem: <SqlExpress 2008>
Hallo. Ich habe ein XSD-File bekommen, dass ich in meinem Prjekt verwenden soll. Also habe ich mit XSD.EXE die Klassen davon erstellen lassen. Das hat dann auch funktioniert. Nun aber habe ich folgendes Problem: Ein anderer Kunde, mit dem ich Daten in XML-Form austauschen soll, hat in sein XML noch etwas zusätzlich eingebaut, was es in diesem XSD noch nicht gibt. Er meint, ich soll dieses Feature einfach als "Fremdnamespace" einbinden.
Kann mir jemand sagen, wie ich so etwas mache?

Thema: ClickOnce Problem: Manifest may not be valid or the file could not be opened
Am im Forum: Rund um die Programmierung

Hallo, ich habe ein Problem mit der Bereitstellung einer applikation über ClickOnce. Die Applikation besteht schon mehrere Jahre, ich erweitere die Applikation immer wieder. Das Update wird dann über ClickOnce gemacht. Jetzt habe ich das Problem, das die Installation nicht anläuft, da ich folgneden Fehler bekomme, siehe Bild im Anhang.

Die Manifestdatei wird bemängelt.

Was bedeuten die Fehlercodes?

Fehler
+ Parsing and DOM creation of the manifest resulted in error. Following parsing errors were noticed:
-HRESULT: 0x80070c81
Start line: 0
Start column: 0
Host file:
+ Exception from HRESULT: 0x80070C81Fehlerbericht

Gibt es einen Hinweis, wie ich das Problem lösen kann? habe schon sämtliche Einstellungen vesucht, ohne Erfolg.

Was wurde in der jetzigen Version geändert? Ich habe einen Zugriff auf eine Excel-Datei ermöglicht, diese Erweiterung habe ich als zusätzliches Projekt in die Projektmappe eingebunden. Kann das mein Problem sein?

Hat jemand eine Idee? Welche Unterschiede in der Manifest machen die Unterschiede aus?

Thema: DataGrid mit Validation.Error: Wie NotifyOnValidation setzen, wenn Datenbindung über ItemsSource
Am im Forum: GUI: WPF und XAML

Zitat von witte
Hi

mal was anderes: Wenn es doch nur ein Filterwert ist, warum nimmst du nicht einfach ein Nullable<int> als Filterwert? Dann sollte der Validator nicht anschlagen.

Hallo, habe das probiert, und es funktioniert. Aber nur in einem Fall, wo ich die Filtertabelle komplett neu erstelle (komplette Struktur und Typiesierung).

Ich habe aber noch einen anderen Fall, wo ich die Struktur der Datentabelle einfach klone und für die Filtertabelle verwende. Da geht das nicht. Ich durchlaufe nach dem klonen die geklonte Tabelle mit all ihren Salten, und ändere alle numerischen Typen mit dem Nullable (?).
Im Test ändert sich aber nichts, ich bekomme den roten Kringel. Beim debuggen vor der Ausgabe wurden auch die Typisierungsänderungen nicht angenommen. Geht das bei geklonten Tabellen nicht?