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 gaussmath
Thema: Technologiekonzept für eine kontextsensitive Hilfe
Am im Forum: GUI: WPF und XAML

Danke für deine Antwort. Was spricht gegen den Einsatz von Tooltips?

Thema: Technologiekonzept für eine kontextsensitive Hilfe
Am im Forum: GUI: WPF und XAML

Hallo,

das GUI meiner Anwendung wurde mit WPF und dem Caliburn.Micro Framework entwickelt. Die Hilfe innerhalb der Anwendung soll kontextsensitiv gestaltet werden. Es gibt einen globalen Button in einer Art Ribbon Bar, der, bei Betätigen, die Hilfe aufruft. Neben den Controls sollen Texte erscheinen, die deren Funktionalität erklären. Es sollen in einem View, das gerade aktiv ist, alle Texte gleichzeitig erscheinen und auch gleichzeitig wieder ausgeblendet werden. Bei Verschieben des Hauptfensters sollen sich die Container der Texte gleichermaßen mit verschieben. Bei aktiver Hilfe soll das aktuelle View leicht verschwommen im Hintergrund dargestellt werden, die Texte und deren Container on top, natürlich nicht verschwommen.

Die Anforderungen stehen also, nur ist die Wahl der Technologie noch nicht klar. Wie würdet ihr das machen? Die Idee ist, die Tooltips der Controls zu verwenden und entsprechend zu verwalten. Ist das mit den Anforderungen vereinbar? Welche Alternative Technologien gibt es? Allgemein mit AdornedControls?

Danke und Grüße,
gm

Thema: Deserialisieren eines Enums mit Kombinationen
Am im Forum: Datentechnologien

Hallo t0ms3n,

in der Tat! Das Problem lag/liegt woanders. Ich bin der Sache auch bereits auf der Spur...

Grüße, Marc

Thema: Deserialisieren eines Enums mit Kombinationen
Am im Forum: Datentechnologien

Hallo Scavanger,

ich habe natürlich zuvor gegoogelt und herausgefunden, dass man [Flags] setzen muss, wenn man mit Kombinationen arbeitet. Leider hilft das nicht beim Deserialisieren.

Grüße, Marc

Thema: Deserialisieren eines Enums mit Kombinationen
Am im Forum: Datentechnologien

Hallo Spook,

ich erhalte mit


    [FlagsAttribute]
    [Serializable]
    public enum WeekDays
    {
        [XmlEnum("1")]
        Sunday = 1,
        [XmlEnum("2")]
        Monday = 2,
        [XmlEnum("4")]
        Tuesday = 4,
        [XmlEnum("8")]
        Wednesday = 8,
        [XmlEnum("16")]
        Thursday = 16,
        [XmlEnum("32")]
        Friday = 32,
        [XmlEnum("64")]
        Saturday = 64,
        [XmlEnum("65")]
        WeekendDays = Sunday | Saturday,
        [XmlEnum("62")]
        WorkDays = Monday | Tuesday | Wednesday | Thursday | Friday,
        [XmlEnum("127")]
        EveryDay = WeekendDays | WorkDays
    }

die gleiche Fehlermeldung: "{"Instanzvalidierungsfehler: '10' ist kein gültiger Wert für global::RecurrenceLibary.WeekDays."}"

[Flags]


habe ich auch bereits versucht.

Danke und Grüße, Marc

Thema: Deserialisieren eines Enums mit Kombinationen
Am im Forum: Datentechnologien

Hallo,

ich verwende folgendes Enum innerhalb eines Objektes, dass ich deserialisieren möchte. Das klappt soweit prima.


    [Serializable]
    public enum WeekDays
    {
        [XmlEnum("1")]
        Sunday = 1,
        [XmlEnum("2")]
        Monday = 2,
        [XmlEnum("4")]
        Tuesday = 4,
        [XmlEnum("8")]
        Wednesday = 8,
        [XmlEnum("16")]
        Thursday = 16,
        [XmlEnum("32")]
        Friday = 32,
        [XmlEnum("64")]
        Saturday = 64,
        [XmlEnum("65")]
        WeekendDays = Sunday | Saturday,
        [XmlEnum("62")]
        WorkDays = Monday | Tuesday | Wednesday | Thursday | Friday,
        [XmlEnum("127")]
        EveryDay = WeekendDays | WorkDays
    }

Nun ergibt sich aber die Problematik, dass ich Kombinationen derart ( Monday | Wednesday o.ä.) deserialisieren möchte. Ich erhalte eine Exception, dass der Wert nicht vorhanden ist.
Ich möchte natürlich unbedingt verhindern, dass ich alle Kombinationen explizit definieren muss. Wie kann ich das umgehen?

Danke und Grüße,
Marc

Thema: Objekt aus speziellem XML-String erstellen
Am im Forum: Datentechnologien

So ich habe es jetzt hinbekommen:


object obj;
using (XmlReader reader = XmlReader.Create(new StringReader(recurrenceInfo)))
{
    reader.MoveToContent();
    switch (reader.Name)
    {
        case "RecurrenceInfo":
            obj = new XmlSerializer(typeof(RecurrenceLibary.RecurrenceInfo)).Deserialize(reader);
            break;
        default:
            throw new NotSupportedException("Unexpected: " + reader.Name);
    }
}

Danke, unconnected für deine Tipps!

Thema: Objekt aus speziellem XML-String erstellen
Am im Forum: Datentechnologien

Hallo,

danke für deine Antwort. Ich habe das gleich ausprobiert! Das Problem vor dem ich nun stehe, ist, dass die Information als ein String vorliegt. Wie kann ich dem Serializer das "beibringen"?

Grüße, Marc

Thema: Objekt aus speziellem XML-String erstellen
Am im Forum: Datentechnologien

verwendetes Datenbanksystem: <SQL 2008>

Hallo,

ich habe folgenden XML-String:


<RecurrenceInfo Start="02/07/2013 00:00:00" End="02/07/2013 00:00:00" Id="8169acc8-7280-41f6-a58e-288cd6d66ce6" />


Ich möchte gerne daraus ein Objekt vom Typ RecurrenceInfo erzeugen, allerdings komme ich mit dem Format nicht klar. Wie kann ich da vorgehen?

Muss/ kann ich mit XmlDocument arbeiten?

Grüße und Danke, Marc

Thema: Überschreiben eines Arrays ab einem bestimmten Index mit dem Inhalt eines anderen Arrays
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo,

ich möchte ein Array der Größe n ab einschließlich dem Index 1 (Position 2) mit einem Array der Größe n-2 überschreiben. Wie geht das ohne eine Schleife?

Danke und Grüße, gm

Thema: Kommunikation zwischen .NET Anwendungen
Am im Forum: Datentechnologien

Danke für deine Antwort. Ich habe das hier entdeckt: http://w3studi.informatik.uni-stuttgart.de/~bischowg/languages/CSharp/CSRemoting.html

Gibt es denn eine Möglichkeit ohne die ThirdParty Bibliothek IIOP?

Edit: IIOP .NET Project: http://sourceforge.net/projects/iiop-net/

Thema: Kommunikation zwischen .NET Anwendungen
Am im Forum: Datentechnologien

Hallo,

wie gestalte ich die Kommunikation zwischen zwei .NET Anwendungen A und B? Es geht um Datenaustausch und Steuerung der Anwendung B durch die Anwendung A über ein Netzwerk.
Eine Datenbank spielt dabei erstmal keine Rolle? Wäre WCF Data Services etwas für mich? Was ich dazu bisher recherchiert habe, überzeugt mich allerdings nicht.

Besten Dank und Grüße
gaussmath

Thema: Performancebetrachtungen Fortran - C#
Am im Forum: Rund um die Programmierung

Der Thread ist wirklich sehr interessant. Ich habe mich auch mit der Thematik beschäftigt, und ich werde letztlich die Vorteile beider Sprachen verwenden, indem ich zeitkritische Berechnungen auslagere und damit Fortran-DLLs "beauftrage".

Erste Tests haben gezeigt, dass die Performancevorteile sehr groß sind. Nachteil: Man muss einen teuren Compiler kaufen...

Thema: Die ersten n Nachkommastellen ermitteln
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Vielen Dank für eure Antworten! Die Vorschläge sind hilfreich. :-)

Thema: Die ersten n Nachkommastellen ermitteln
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo,

wie kann ich komfortabel die ersten n Nachkommastellen ermitteln, ohne (explizit) auf integer casten zu müssen?

Grüße, Marc

Thema: Fortran Compiler: Einbinden der LAPACK Bibliothek
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Auch das Problem mit der DLL hat sich erledigt!

Thema: Fortran Compiler: Einbinden der LAPACK Bibliothek
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Ja, natürlich befinden sich EXE und DLL im selben Ordner. Ich vermute, dass es daran liegt, dass ich eine Demoversion verwende und die Software daher systemgebunden ist.

Edit: An der Demoversion liegt es auch nicht. Eine Test-EXE läuft auch auf anderen Systemen.

Thema: Fortran Compiler: Einbinden der LAPACK Bibliothek
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Hallo herbivore!

Danke für deine Antwort! Das Ausgangsproblem habe ich gelöst. Allerdings stellt sich nun das Problem, dass meine DLL nicht gefunden werden kann, wenn ich die Exe und DLL auf einem anderen System teste. Ich habe den Pfad relativ angeben. Auf meinem System läuft das auch prima.

Grüße, gaussmath

Thema: Fortran Compiler: Einbinden der LAPACK Bibliothek
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Hallo,

falls jemand den Intel Fortran Compiler als Integration ins MS Visual Studio verwendet:

Ich versuche über "use" die LAPACK Bibliothek einzubinden und erhalte den Fehler, dass der externe Verweis nicht aufgelöst werden kann.

Was kann ich tun? Googlen hat mich nicht wirklich schlauer gemacht.

Grüße, gaussmath

Thema: [erledigt] Performancevergleich C# - Fortran
Am im Forum: Rund um die Programmierung

Ja, ihr habt recht, es muss am Compiler liegen. Jetzt heißt es, die Optionen zu checken...

Edit: In der Tat, es lag an den Compilereinstellungen!!! Damit hat sich das Thema erledigt. Ich bedanke mich für die rege Beteiligung. :-)

Thema: [erledigt] Performancevergleich C# - Fortran
Am im Forum: Rund um die Programmierung

Hallo herbivore,

ich fühle mich ein wenig gescholten, aber nichts für ungut...

So einfach und klar ist die Sache nicht, weil

1. ich die Fortran.exe und Fortran-DLL (so wie ich sie in der C#-Anwendung aufrufe) unter denselben Bedingungen bzw. mit denselben Einstellungen kompiliert habe.

2. ich die DLL so konzipiert habe, dass diese nur EINMAL aufgerufen wird, so dass Overhead durch zu häufige Aufrufe ausgeschlossen werden kann. Der Subroutine "permut" wird indes mit O(n!) sehr häufig aufgerufen, das allerdings innerhalb des nativen Codes. Wie ich gemessen habe, wird doch aus meinen Codebeispielen heraus klar.

Mir ist unterm Strich noch überhaupt nicht klar, woher diese Laufzeitunterschiede kommen.

Grüße, gaussmath

Thema: [erledigt] Performancevergleich C# - Fortran
Am im Forum: Rund um die Programmierung

Welche Sprünge sollen das sein? Hat jemand vielleicht irgendwelche Referenzen von Microsoft selbst, wo ich etwas über den Performanceverlust beim Aufrufen von nativem Code nachlesen kann?

Was bedeutet dann, dass P-Invokes gejittet werden?

Thema: [erledigt] Performancevergleich C# - Fortran
Am im Forum: Rund um die Programmierung

Zitat von Xynratron
nein, der kompilierte Fortram-Code wird nicht nochmal übersetzt. Sonst würden ja auch Systemaufrufe (z.B. für Windows-Messages, Paint-Aufforderung etc.) immer decompiliert.

Gut, aber warum läuft die FORTAN-DLL dann so viel langsamer?

Thema: [erledigt] Performancevergleich C# - Fortran
Am im Forum: Rund um die Programmierung

Zitat von FZelle
Der native code läuft nicht langsamer.

Wird da nicht grundsätzlich noch der Fortran-Maschinencode in MSIL übersetzt, die dann wiederum gejittet wird?!

Thema: [erledigt] Performancevergleich C# - Fortran
Am im Forum: Rund um die Programmierung

Zitat von Floste
Auch pinvokes werden gejittet. Hast du den ersten aufruf mit dem zweiten verglichen?

Eine etwas späte Reaktion auf diesen Beitrag. Wieso P-Invoke? Ich verwende doch "using System.Runtime.InteropServices;", also COM Interop?!

EDIT: Diese Frage hat sich erledigt!

Thema: [erledigt] Performancevergleich C# - Fortran
Am im Forum: Rund um die Programmierung

Also gut, ich werde höchstwahrscheinlich reinen Fortran-Code schreiben. Dann muss man eben die Schnittstelle zur Hauptanwendung an einer anderen Stelle geschaffen werden.

Aber noch einmal die konkrete Frage: Warum genau läuft der native Code langsamer, wenn eine .NET-Anwendung diese Bibliothek aufruft?

Thema: [erledigt] Performancevergleich C# - Fortran
Am im Forum: Rund um die Programmierung

Danke nochmal für eure Antworten. F# wäre eine Alternative. Da dies aber ebenfalls auf dem CLR-Konzept aufsetzt, sehe ich da keine Performancevorteile.

@Siassei: Meine Anwendung ist extrem zeitkritisch. Das ist eine wichtige a priori Erkenntnis. Daher versuche ich Berechnungen auszulagern, um die Laufzeit zu optimieren.

Es sei aber nochmal betont, dass C# auch auf mein Beispiel bezogen nicht schneller ist. Programmiere ich eine reine FORTRAN-Anwendung, ist diese mit derselben DLL rund zweimal schneller. Der Flaschenhals entsteht beim Aufrufen der DLL innerhalb der C#-Anwendung.

Hier einmal der C#-Code zum Aufrufen der DLL:


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
using CSharpDllTest;

namespace FortranDllCallTest
{

    class Program
    {
        static void Main(string[] args)
        {
            int[] arr = {1,2,3,4,5,6,7,8,9,10,11};

            int arraySize = arr.Length;


            //************Aufruf der CSharp DLL****************

            PERMUTATIONUD csharpdll = new PERMUTATIONUD();
            csharpdll.PERMUTATIONUDMAIN(arr, arr.Length);

            //************Aufruf der Fortan DLL****************

            FortranDllWrap.FPERMUTATIONUD(arr, ref arraySize);
            //FortranDllWrap.FPERMUTATIONUD();


            Console.ReadKey();
        }

    }

    public class FortranDllWrap
    {

        // CallingConvention.Cdecl must be used since the stack is

        // cleaned up by the caller in Intel Fortran by default

        [DllImport("D:/Algorithmen/Fortran/Testcode/DllTest/DllTest/Debug/DllTest.dll", CallingConvention = CallingConvention.Cdecl)]
        public static extern void FPERMUTATIONUD(int[] arr, ref int arraySize);

        //public static extern void FPERMUTATIONUD();
 
    }

}

Thema: [erledigt] Performancevergleich C# - Fortran
Am im Forum: Rund um die Programmierung

OK, ich formuliere einmal meine Zielstellung. Ich programmiere ein Planungstool in C#. Zu Optimierungszwecken möchte ich (numerische) Berechnungen nach Fortran-DLLen auslagern. Denn, kurzum, möchte man Rechnen und gigantische numerische Objekte "wälzen" ist Fortran schneller.

Die Frage ist nun, wie ich das praktisch umsetzen kann. Ich habe also eine kleine Beispiel-DLL in Fortran erstellt und rufe diese aus meiner C#-Anwendung heraus auf. Jetzt muss ich aber feststellen, dass das ganze dann langsamer wird.

Rufe ich dieselbe DLL aus einer Fortran-Anwendung heraus auf, benötigt der Durchlauf für n=11 1,2 Sekunden, aus C# heraus jedoch 5 Sekunden.

Woran liegt das? Ist es ein zusätzlicher Verwaltungsaufwand des .NET Frameworks? Wenn ja, was kann ich optimieren?

Die Hauptfrage ist aber, lohnt sich das Auslagern nach Fortran-Bibliotheken überhaupt? Mein bisherigen Versuche haben gezeigt, dass dies nicht der Fall ist.

Thema: [erledigt] Performancevergleich C# - Fortran
Am im Forum: Rund um die Programmierung

Ja, habe ich getan. C# schneidet immer besser ab. Nach dem zweiten, dritten Durchlauf sogar noch besser.

Thema: [erledigt] Performancevergleich C# - Fortran
Am im Forum: Rund um die Programmierung

Zitat von Floste
Hast du den ersten aufruf mit dem zweiten verglichen?

Wie meinst du das?