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 bloody_fighter
Thema: Silverlight: Einfache Elemente zeichnen mit C#
Am im Forum: GUI: WPF und XAML

Guten Tag,
gibt es die Möglichkeit, in Silverlight einfache Elemente(Linien o.ä.) zu zeichnen?
Ich suche soetwas wie eine Picturebox in C#, wo man dann auf das graphic element zugreifen und darauf zeichnen kann. Das ganze möchte ich in Silverlight dann allerdings auch wenn möglich ausschließlich mit C# Code realisieren, ohne dass ich eigenen xaml code schreiben muss.
Beste Grüße
Daniel

Thema: Tiefe Kopie vom DataGridView erstellen [==> besser nicht]
Am im Forum: GUI: Windows-Forms

gibt es keine Möglichkeit, das DGV selber zu kopieren? weil da wäre dann z.B. die "sortierung" auch gleich..Ansonsten schonmal vielen Dank.

Thema: Tiefe Kopie vom DataGridView erstellen [==> besser nicht]
Am im Forum: GUI: Windows-Forms

Guten Tag,
ich würde gerne eine tiefe Kopie von einem DataGridView erstellen. Gibt es dazu irgendeine Möglichkeit?
Mit freundlichen Grüßen

Thema: Rekursion grundsätzlich langsamer?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Ja so viel ich weiß verbraucht Rekursion ja mehr Arbeitsspeicher im Stack, deswegen dachte ich mir, dass es vielleicht auch langsamer sein könnte. Ja das Problem, das ich habe, handelt um eine AlphaBeta Suche im Skat..und das ganze ist doch sehr zeitintensiv, letztendlich wird mir wohl nichts übrig bleiben als auf C / C++ umzusteigen...
Ausschreiben würde ich es so, dass ich die Funktion quasi in sich selber hardgecodet reinschreiben würe, was natürlich extrem unschön wäre.

Thema: Rekursion grundsätzlich langsamer?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Guten Tag,
ich gehe eine Baumstruktur mit bis zu 32 Ebenen rekursiv durch. Jetzt frage ich mich, ob Rekursion denn grundsätzlich langsamer ist, als wenn ich alles "ausschreiben" würde?
Beste Grüße,
Daniel

Thema: Programm mit Adminrechten ausführen
Am im Forum: Rund um die Programmierung

danke, das mit dem Studio als Admin starten funktioniert optimal. Habe es vorher so ähnlcih getestet und versucht, die Projektdatei als Admin zu öffnen, was aber nicht funktioniert, da es keine Exe ist. Aber das Studio kann ich so öffnen, und dann einfach über "Projekt öffnen"..
Schönen tag noch,
Daniel

Thema: Programm mit Adminrechten ausführen
Am im Forum: Rund um die Programmierung

Guten Tag,
ich arbeite derzeit an einer Testautomatisierung und muss dazu mit dem RanorexStudio auf die Oberfläche in einem Programm zugreifen. Das Programm hat beim Start eine Sicherheitsabfrage, ob Änderungen am System vorgenommen werden dürfen. Das führt dazu, dass das Programm auf einem anderen Sicherheitslevel ist als meine Testautomatisierung. Wenn ich die Testautomatisierungsexe von Hand mit "Als Administrator ausführen" öffne funktioniert alles. Wenn ich das Programm aber von meinem Studio aus öffne funktioniert es aufgrund der Sicherheitsebenen nicht.
Auch wenn das Studio nicht gleich ist wie das VisualStudio, ist es doch sehr ähnlich und deshalb hoffe ich, dass ihr mir weiter helfen könnt. Gibt es eine Möglichkeit, dass das ganze automatisch mit Adminrechten geöffnet wird?
Viele Grüße,

Thema: rekursive Methode wirft ArgumentOutOfRange
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Okay, ich habe endlich den Fehler gefunden. Ich ändere ja die Variable spielerDerDranIst in jedem Schleifendruchlauf, anstatt nur die geänderte Variable zu übergeben X(
Vielen dank für eure Hilfe!

Thema: rekursive Methode wirft ArgumentOutOfRange
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

aber ich entferne es doch in der kopierten liste?

Thema: rekursive Methode wirft ArgumentOutOfRange
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Ja, das dachte ich auch, ich habe es aber nicht hinbekommen..ich habe auch lange alle möglichen Variablen mitgeloggt und versucht, das dann im nachhinein zu analysieren, bin aber zu keinem Ergebnis gekommen..an sich sollte das ganze ja tatsächlich kein Problem sein, den MinMax Algorithmus ( "Vorversion" von AlphaBeta) habe ich schon mal implementiert mit dem gleichen Rekursionsaufbau, nur dass es damals funktioniert hat. Wäre also sehr erfreut, wenn mir jemand auf die Sprünge helfen könnte. Was ich nicht verstehe ist, wieso er eine ArgumentOutOfRangeException bringt, wenn oben in der forschleife die Bedingung dafür, dass er überhaupt in die forschleife geht, ist, dass die Anzahl eben größer als 0 ist und das i dürfte ja auch nicht größergleich werden als die Anzahl in der entsprechenden Liste..

Thema: rekursive Methode wirft ArgumentOutOfRange
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

ich verstehe nicht ganz, was das ja bedeutet..da ich die Listen ja jedes mal kopiere, bevor ich sie übergebe, darf das i doch eigentlich nicht größer werden?

Thema: rekursive Methode wirft ArgumentOutOfRange
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

in dem unteren Codebeispiel in:
kopiekarten[spielerDerDranIst].RemoveAt(i);
Gibt ne ArgumentOutOfRangeException

Thema: rekursive Methode wirft ArgumentOutOfRange
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

das Problem ist auf lange sicht nicht ohne Rekursion lösbar, da die Listen ja auch noch größer werden und da später dann auch noch ein Algorithmus ( Alpha Beta) darauf läuft..
Zu der Abbruchbedingung:
Am anfang hatte ich noch über dem ganzen die Abfrage:
if (karten[spielerDerDranIst].Count > 0)
Das hat aber am Inhalt nichts geändert, da die Schleife das ja quasi auch abfrägt.
Wäre cool wenn sich das jemand mal genauer anschauen könnte, habe jetzt schon viel Zeit damit verbracht, finde den Fehler aber einfach nicht..:(

Thema: rekursive Methode wirft ArgumentOutOfRange
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hier das ganze nochmal auf das nötigste reduziert:

        private void hinzufuegen2(List<List<Karte>> karten, int bspielerDerDranIst)
        {
            
            int spielerDerDranIst = bspielerDerDranIst;
            int anzahlDurchlaeufe = karten[spielerDerDranIst].Count;
            for (int i = 0; i < anzahlDurchlaeufe; i++)
            {
                List<Karte> a0 = new List<Karte>(karten[0]);
                List<Karte> a1 = new List<Karte>(karten[1]);
                List<Karte> a2 = new List<Karte>(karten[2]);
                List<List<Karte>> kopiekarten = new List<List<Karte>>();
                kopiekarten.Add(a0);
                kopiekarten.Add(a1);
                kopiekarten.Add(a2);
                kopiekarten[spielerDerDranIst].RemoveAt(i);
                spielerDerDranIst++;
                if (spielerDerDranIst == 3)
                {
                    spielerDerDranIst = 0;
                }

                hinzufuegen2(kopiekarten,  spielerDerDranIst);          

            }
        }

karten enthält also 3 Listen vom Typ List<Karte>. Jede dieser Listen repräsentiert die Karten, die der jeweilige Spieler auf der Hand hat. Die funktion soll alle verlaufsmöglichkeiten durchgehen(und dann in einem Treeview anzeigen).

Thema: rekursive Methode wirft ArgumentOutOfRange
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Guten Tag,
ich habe eine Rekursive funktion geschrieben und finde einfach nicht, warum sie nicht funktioniert (immer nach einigen "durchläufen" eine ArgumentOutOfRange Exception wirft)...
Nach 20 mal Debuggen bin ich langsam am verzweifeln und hoffe, dass sich jemand von euch mal die Zeit nimmt, sich das anzuschauen!


private void hinzufuegen(TreeNode bknoten, List<List<Karte>> karten, 
            List<Karte> stich, int bspielerDerDranIst ,int vorhand)
        {
            TreeNode knoten = bknoten;
            int spielerDerDranIst = bspielerDerDranIst;     
                
            int anzahlDurchlaeufe = karten[spielerDerDranIst].Count;
              for (int i = 0; i < anzahlDurchlaeufe; i++)
                {          
                    try
                    {
                        knoten.Nodes.Add(karten[spielerDerDranIst][i].name);
                        stich.Add(karten[spielerDerDranIst][i]);

                        if (stich.Count == 3)
                        {
                            stich.RemoveRange(0, 3);
                        }                   
  
                        List<Karte> a0 = new List<Karte>(karten[0]);
                        List<Karte> a1 = new List<Karte>(karten[1]);
                        List<Karte> a2 = new List<Karte>(karten[2]);
                        List<List<Karte>> kopiekarten = new List<List<Karte>>();
                        kopiekarten.Add(a0);
                        kopiekarten.Add(a1);
                        kopiekarten.Add(a2);
                        kopiekarten[spielerDerDranIst].RemoveAt(i);
                        spielerDerDranIst++;
                        if (spielerDerDranIst == 3)
                        {
                            spielerDerDranIst = 0;
                        }
                        hinzufuegen(knoten.Nodes[i], kopiekarten, stich, spielerDerDranIst, 0);
                    }
                    catch (ArgumentOutOfRangeException)
                    {
                        textBox1.Text += "Exception! \r\n";
                    }

                }
            



        }

In meinem Fall sind in Karten immer 2 Karten drin, die ersten 6 durchläufe funktionieren auch fehlerfrei.

Viele Grüße,
Daniel

Thema: Alpha-Beta Algorithmus: Wie groß ist der Overhead durch Objektorientierung?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

@WinSharp, nein, denke ich nicht, aber ich dachte mir halt, dass es sicher nicht schaden kann, das von anfang an "optimierter" zu machen...z.B. übergebe ich jedes mal 3 Listen (/Arrays) aus Karten....Karten wäre hierbei dann ja ein Objekt, die Listen auch ein Objekt...alternativ könnte ich dann ja auch feste Arrays übergeben mit den jeweiligen eigenschafen der karte....wobei das erste deutlich übersichtlicher ist.
@JAck30lena, wieso ist es in F# deutlich schneller?

Thema: Alpha-Beta Algorithmus: Wie groß ist der Overhead durch Objektorientierung?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Es geht darum, dass ich den Alpha-Beta Algorithmus für das Kartenspiel Skat implementieren möchte, da kämen dann auch sehr sehr viele Objekte zustande...deshalb habe ich mir die Frage gestellt, ob ich meiner rekursiven Funktion immer ein Objekt übergeben soll (bzw. 2, 3, je nachdem) oder ob ich alles als extra Parameter übergeben soll....die Objekte werden auch teilweise kopiert, das macht dann vielleicht auch noch einen Einfluss für die Entscheidung?

Thema: Alpha-Beta Algorithmus: Wie groß ist der Overhead durch Objektorientierung?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Guten Tag,

macht es denn einen Unterschied, wenn ich einen Algorithmus mit Objekten löse oder alles ohne eigene Objekte realisiere?
also angenommen mein Objekt hat die Attribute int a, String b und die funktion meineMethode().
Ist es jetzt schneller, wenn ich, anstatt das Objekt zu erzeugen, nur int a, String b und meineMethode(a,b) habe? Oder "erkennt" der Compiler das und macht da keinen unterschied?

Thema: mehrdimensionales bzw jagged Array effizient kopieren
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Also es wird immer kopiert und eine einzige position wird dann geändert. Theoretisch könnte ich also auch immer nur z.B. die entsprechende Zeile kopieren und für die anderen Zeilen dann nur den Verweis kopieren, aber ob das so viel bringt weiß ich nicht...als alternative habe ich mir überlegt, einfach jedesmal die Änderung wieder rückgängig zu machen. Denkt ihr, dass das Performancetechnisch Sinn ergeben würde?

Thema: mehrdimensionales bzw jagged Array effizient kopieren
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

So, habe es jetzt umgesetzt. Jetzt braucht es nur noch 10% anstatt 40% der Gesamtdauer, also weit mehr als eine vervierfachung der geschwindigkeit des kopierens!

Thema: mehrdimensionales bzw jagged Array effizient kopieren
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Ersteinmal vielen Dank für die vielen Antworten.
@TH69, ja, es ist zwingend erforderlich, dass ich jedes mal eine DeepCopy mache. Das ganze Programm arbeitet Rekursiv und ruft sich jedes mal etwa 20 mal selbst auf(also die Funktion), dafür muss dann aber auch jedes mal ein neues Feld übergeben werden. Ansonsten werde ich dann wohl auf einen 2Dimensionalen Array umsteigen und dafür die Liste weglassen, das scheint dann ja wohl ordentlich schneller zu gehen ;)

Thema: mehrdimensionales bzw jagged Array effizient kopieren
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Guten Abend,
Ich bin derzeit dabei ein Programm zu programmieren, das sehr Rechenintensiv ist.
Dabei muss ich unter anderem ein Objekt sehr oft kopieren, welches eine 2 Dimensionale Liste enthält. Bisher braucht dieser Vorgang 40% der rechenzeit.
Ich mache es bisher so:
Das ist die Klasse deren Instanzen kopiert werden sollen mit ihrem Konstruktor:

    class Feld
    {
        public List<List<int>> feld = new List<List<int>>();
        public int breite;
        public Feld(int breite)
        {
            this.breite = breite;
            for (int i = 0; i < breite; i++)
            {
                List<int> liste = new List<int>();
                for (int j = 0; j < breite; j++)
                {
                    liste.Add(0);
                }
                feld.Add(liste);
            }
        }

Das ist die Funktion in der Klasse, mit der ich bisher kopiere:

public Feld KopieErstellen()
        {
            
            Feld b = new Feld(breite);
            
            for(int i = 0; i < breite; i++)
            {
                b.feld.Add(new List<int>());
                for (int j = 0; j < breite; j++)
                {
                    b.feld[i].Add(new int());
                    b.feld[i][j] = feld[i][j];
                }
            }             

            return b;
        }

Wie kann ich das ganze schneller machen??
Liebe Grüße,
Daniel

Thema: "Klasse" zur Laufzeit öffnen
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Guten Tag,
Ich möchte ein Spiel programmieren, bei dem man selber eine künstliche intelligenz spielen lassen kann. Es gäbe dann also eine Klasse Spieler, die eben eine bestimmte Funktion hat und von dieser Klasse kann man dann seine eigene Klasse ableiten. Diese sollte man nach Programmstart einfach mit dem Programm "laden"/öffnen können. Wie kann ich das am besten realisieren??

Thema: Suche Klasse zum Lösen von lineraen Gleichungssystemen
Am im Forum: Rund um die Programmierung

Hab das ganze jetzt ausprobiert nach seinem Beispiel...wenn man ein LGS hat, das genau eine Lösung hat, funktioniert das ganze...aber ansonsten.....:(

Thema: Suche Klasse zum Lösen von lineraen Gleichungssystemen
Am im Forum: Rund um die Programmierung

Habe jetzt eine Ganze weile in google gesucht, aber keine Klasse zum lösen eines lineraen gleichungssystems gefunden..
Kann mir da jemand helfen?
liebe Grüße :)

Thema: Nur Zahlen und Sonderzeichen in TextBox zulassen
Am im Forum: GUI: Windows-Forms

okay, also erstmal vielen Danke für die Gute Klasse.
Ich habe damit aber ein kleines Problem, dass ich nicht verstehe.

Also ich gehe so vor, dass ich normale Textboxen erstelle und dann im Formdesigner an beiden Stellen einfach den Typ ändere. Das funktioniert dann auch so weit. Nur, wenn ich jetzt die erlaubten Zeichen ändere, in meinem Fall ein "E" hinzufüge, dann wird das nicht übernommen für die alten Textboxen. Wenn ich jetzt aber wie oben beschrieben eine neue Textbox erstelle und diese dann entsprechend ändere , dann funktioniert das neue Zeichen bei dieser neuen Textbox. Ich habe dann also zwei Textboxen, die von der gleichen Klasse sind aber unterschiedlich funktionieren, die vor der Änderung erstellte Textbox akzeptiert das neue Zeichen nicht, die neue schon. Kann mir das jemand erklären?
Und noch eine zweite Frage, das Symbol der Klasse ist nicht das gewohnte Symbol sondern ziemlich komisch (kann es nicht beschreiben). Woran liegt das?
liebe Grüße

Thema: openfiledialog über picturebox mit eventhandler
Am im Forum: GUI: Windows-Forms

naja, ich wusste ja nicht warum es nicht funktioniert, deshalb konnte ich das ganze auch nicht genauer posten...UNd wie finde ich heraus, ob irgend eines der Controls den Focus hat?

Thema: openfiledialog über picturebox mit eventhandler
Am im Forum: GUI: Windows-Forms

okay,also ich glaube, die zweite Methode ist einfacher... Hierzu habe ich folgendes gefunden:
if (Focused)
{
}
So funktioniert es aber nicht, wenn ich diesen Code einfach in der Form1 verwende..aber weshalb nicht?

Thema: openfiledialog über picturebox mit eventhandler
Am im Forum: GUI: Windows-Forms

okay, jetzt stellt sich mir aber die Frage, wie ich heraus finde, ob der OpenFileDialog geöffnet ist...habe in den Eigenschaften leider nichts gefunden :(

Thema: openfiledialog über picturebox mit eventhandler
Am im Forum: GUI: Windows-Forms

Also in meinem Programm ist eine Picturebox, welche darauf reagiert, wenn die Maus darin "gezogen" wird, mit diesen beiden Funktionen:

private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
        {
            gedrücktX = Convert.ToInt16(e.X);
            gedrücktY = Convert.ToInt16(e.Y);          

        }

private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
        {
            int dx = gedrücktX - e.X;
            int dy = gedrücktY - e.Y;            
            verschieben(dx, dy);            
        }

Jetzt möchte ich eine Datei öffnen, dazu nehme ich einen Openfiledialog. Wenn ich in diesem Dialog jetzt eine Datei auswähle mit Doppelklick, dann wird die verschieben() funktion aufgerufen. Dies passiert aber nur, wenn die Datei, auf die ich klicke, "über" der Picturebox ist. WEnn ich die Datei mit Enter öffne tritt der Fehler auch nicht auf.
Wie kann ich das verhindern??
liebe Grüße