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 Corpsegrinder
Thema: MVC Umsetzungsproblem - Kommunikation(sbeziehung) zwischen V und C
Am im Forum: Rund um die Programmierung

Naja.. wie schon gesagt... das ist meine Meinung. Ich frage mich halt einfach, warum die Form den Controller kennen soll? Es reicht vollkommen aus, wenn der Controller die Form kennt. In Frameworks, wo die Form in einem XML Format gespeichert wird (z.B. Qt) geht es auch nicht anders (außer man schreibt die Form von Hand als Klasse).

Thema: MVC Umsetzungsproblem - Kommunikation(sbeziehung) zwischen V und C
Am im Forum: Rund um die Programmierung

Nein, du hast weiterhin deine normale Main(), aber dort erstellst du einen MainFormController und rufst dann Application.Run(controller.View) auf.

edit:

gerade noch nen guten Link gefunden: http://www.programgood.net/2009/07/17/SimpleMVCInWinForms.aspx

Thema: MVC Umsetzungsproblem - Kommunikation(sbeziehung) zwischen V und C
Am im Forum: Rund um die Programmierung

Hab ich irgendwo das Gegenteil behauptet? Ich sagte nur, dass man den Controller nicht in der Form instanziieren soll, sondern andersrum.

Thema: MVC Umsetzungsproblem - Kommunikation(sbeziehung) zwischen V und C
Am im Forum: Rund um die Programmierung

Neee.... dann haste ja ne Instanz vom Controller in der Form und andersum... Du könntest z.B. die FOrm im Controller instanziieren und nur über den Controller Zugriff darauf gewähren.

Thema: MVC Umsetzungsproblem - Kommunikation(sbeziehung) zwischen V und C
Am im Forum: Rund um die Programmierung

Also die vorgehensweise, die ich am häufigsten gesehen habe (z.B. Qt, iPhone SDK...) ist die, dass der Controller eine Referenz auf die View hat und über öffentliche Methoden/Properties die View verändern kann. Ist imho auch der beste Weg, da man da nicht in die Versuchung kommt Logik in die Forms zu packen. Auch das Abonnieren eines Events ist imho etwas, was nicht in die View gehört, da dort ja wieder Logik ausgeführt wird.

Thema: Algo. für längsten Pfad in einem gerichteten Graph
Am im Forum: Rund um die Programmierung

Ich könnte dir noch die ACO (Ant Colony Optimization) empfehlen. Ist allerdings nur eine Heuristik. Haben wir in Algorithmen und Datenstrukturen mal implementiert. Bringt - wenn man es richtig macht - recht schnell gute Ergebnisse.

Thema: Suche Grafikkarte mit Steckleiste rechts
Am im Forum: Smalltalk

Zitat von MarsStein
Wir haben in der Firma einige Dell-PC's, kann man mit ganz normalen Karten erweitern.

Das habe ich auch nicht dementiert. Nur ist bei vielen Dell PCs das Mainboard auf der linken Seite, was bei den meisten PCs aber rechts ist, weshalb man die Karten einfach andersum einbauen muss.


edit:

Hier zu sehen: http://www.billigdrucker.de/computer_dell_dell-dimension-5100.html

Thema: Suche Grafikkarte mit Steckleiste rechts
Am im Forum: Smalltalk

Ich glaube bei Dell PCs ist das alles andersrum. Aber die bauen das imho einfach andersrum ein.

Thema: Multithreading lock statement
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hi,

gibt es einen bestimmten Grund, warum die das Suchen nicht in einer Kopie der Liste erledigen kannst? Damit müsstest du das Lock nur für den Kopiervorgang setzen.

edit: Okay... das hat sich ja nun auch geklärt...

Thema: Visualisierung eines Stammbaumes
Am im Forum: GUI: WPF und XAML

Eine fertige Bibliothek zur Graphenvisualisierung findest du hier: http://www.yworks.com/en/products_yfileswpf_about.html

Gibt es für akademische Zwecke auch kostenlos.



Gruß

Dario

Thema: [erledigt] Wie "einmalig" ist ein MD5-Hash? Reicht ein MD5-Hash um Duplikate sicher zu erkennen?
Am im Forum: Rund um die Programmierung

Hi,

wenn du sicher gehen willst, dass es einzigartige Hashes sind, dann nimm einen der SHA-2 Hashes, bei denen wurden bisher keine Kollisionen gefunden.

Thema: Coding Styles Horror
Am im Forum: Smalltalk

Zitat von Cat
Und seit wann ist 'ArrayList' ein Generic?
Zitat
List<List<String>> oldlist = new ArrayList<List<String>> ();

In Java ist ArrayList ein Generic ;-)

Thema: Event: Soundkarte - Stecker reingesteckt / rausgezogen
Am im Forum: Grafik und Sound

IMMNotificationClient Interface

Hoffe das hilft dir ;-)

Thema: Coding Styles Horror
Am im Forum: Smalltalk

Das hier ist ein Neighbour-Joining-Algorithmus für phylogenetische Bäume.... mit sowas muss man sich als Student rumschlagen... schlimm genug.... aber wenn die Kommilitonen dann so einen Code produzieren wird es pervers...


private static BinaryTree neighbourJoin (List<List<String>> list) {
   BinaryTree resTree=null;


   //Iteration des Algorithmuss
   for (int u=0;u<list.size ()-1;u++){

      //list kopieren nach oldlist
      List<List<String>> oldlist = new ArrayList<List<String>> ();
      for (int i =0;i<list.size ();i++){
         oldlist.add (new ArrayList<String> ());
         for (int k=0;k<list.size ()-1;k++){
            oldlist.get (i).add (new String (list.get (i).get (k)));
         }
      }

      // Nettodivergenz Schritt1
      System.out.println ("Schritt 1 Matrix"+list);
      Map<String, Double> nettodivergenz = new HashMap<String, Double> ();
      double nettodiv = 0.0;
      double nettodivsum = 0.0;
      int j = 0;
      for (int i = 1; i < list.size (); i++) {
         nettodivsum = 0.0;
         for (int k = 0; k < list.size () - 1; k++) {
            nettodivsum += Double.parseDouble (list.get (i).get (k));
         }
         nettodiv = (1.0 / (list.size () - 1 - 2) * nettodivsum);
         nettodivergenz.put (list.get (0).get (j), nettodiv);
         j++;
      }
      System.out.println ("Schritt 1 Nettodovergenz: "+nettodivergenz);

      //Schritt 2
      List<List<String>> zwischenMatrix = new ArrayList<List<String>> ();
      double zMvalue = 0.0;
      for (int i = 1; i < list.size (); i++) {
         List<String> innerList = new ArrayList<String> ();
         for (int k = 0; k < list.size () - 1; k++) {
            if (i - 1 == k) {
               zMvalue = 0.0;
               innerList.add (String.valueOf (zMvalue));
            } else {
               zMvalue = Double.parseDouble (list.get (i).get (k))
                     - (nettodivergenz.get (list.get (0).get (i - 1))
                     + nettodivergenz.get (list.get (0).get (k)));
               innerList.add (String.valueOf (zMvalue));
            }
         }
         zwischenMatrix.add (innerList);
      }
      System.out.println ("Schritt 2 ZwischenMatrix: "+zwischenMatrix);

      // Schritt 3
      double min = Double.parseDouble (zwischenMatrix.get (0).get (0));
      List<Number> minVals = new ArrayList<Number> ();
      for (int i = 0; i < zwischenMatrix.size (); i++) {
         for (int k = 0; k < zwischenMatrix.size (); k++) {
            if (Double.parseDouble (zwischenMatrix.get (i).get (k)) < min) {
               min = Double.parseDouble (zwischenMatrix.get (i).get (k));
               minVals.add (min);
               minVals.add (i);
               minVals.add (k);
            }
         }
      }
      double disij=Double.valueOf (list.get ((Integer)minVals.get (1)+1).get ((Integer)minVals.get (2)));
      String iij = list.get (0).get ((Integer)minVals.get (1));
      String jij = list.get (0).get ((Integer)minVals.get (2));
      String ij = iij+jij;
      double disiij= (disij+nettodivergenz.get (iij)
            -nettodivergenz.get (jij))/2;
      double disjij= (disij+nettodivergenz.get (jij)
            -nettodivergenz.get (iij))/2;
      System.out.println ("Schritt 3 MinVal: " +minVals);
      System.out.println ("Schritt 3 "+ij+" zu "+iij+" "+disiij);
      System.out.println ("Schritt 3 "+ij+" zu "+jij+" "+disjij);

      //--> Teilbaum erzeugen
      BinaryTree t = Graphs.leaf (iij);
      BinaryTree t1 = Graphs.leaf (jij);
      BinaryTree combined = t.concat (t1,disiij, disjij);
      System.out.println ("Schritt 3 Teilbaum: "+combined);


      //Schritt 4
      list.remove ((Integer)minVals.get (2)+1);
      list.remove ((Integer)minVals.get (1)+1);
      for (int i=0;i<list.size ();i++){
         int a = (Integer)minVals.get (2);
         int b = (Integer)minVals.get (1);
         list.get (i).remove (a);
         list.get (i).remove (b);
      }
      System.out.println ("Schritt 4 Löschung: "+list);
      List<String> duklist = new ArrayList<String> ();
      for (int i=1;i<list.size ();i++){
         double dik=Double.valueOf (oldlist.get ((Integer)minVals.get (2)+1).get (i+1));
         double djk=Double.valueOf (oldlist.get ((Integer)minVals.get (1)+1).get (i+1));
         double dij=Double.valueOf (oldlist.get ((Integer)minVals.get (1)+1).get ((Integer)minVals.get (2)));
         double duk= (dik+djk-dij)/2;
         duklist.add (String.valueOf (duk));
      }
      duklist.add (String.valueOf (0.0));
      int s = list.size ();
      list.get (0).add (ij);
      for (int i=0;i<s+1;i++){
         if (i==s)list.add (duklist);
         if (i>0&&i<s)list.get (i).add (duklist.get (i-1));
      }
      System.out.println ("Schritt 4 duklist: "+duklist);
      System.out.println ("Schritt 4 Ergebnisliste: "+list);


      //Teilbaum erzeugen Teil 2
      if (resTree==null)resTree=combined;
      else if (list.size ()-1==2){
         resTree=resTree.concat (combined,Double.valueOf (duklist.get (0))/2);
      }else{
         resTree=resTree.concat (combined,disij);
         System.out.println (resTree);
      }


   }
   return resTree;
}

Thema: Das Programmier-Spiel: nette Übungsaufgaben für zwischendurch
Am im Forum: Smalltalk

Jajaja... muss ja erstmal was überlegen...

Eine hübsche Rekursive Implementation der Russian Peasant Multiplication / Ancient Egyptian Multiplication...


Viel Spaß :-D

Thema: Das Programmier-Spiel: nette Übungsaufgaben für zwischendurch
Am im Forum: Smalltalk

Okay... wieder was gelernt... den Weg kannte ich noch nicht :-)


public static int square(int val)
{
  if (val == 1)
    return 1;
  else
    return val + (val - 1) + square(val - 1);
}

Achso... Quelle: http://en.wikipedia.org/wiki/Square_(algebra)

Thema: Das Programmier-Spiel: nette Übungsaufgaben für zwischendurch
Am im Forum: Smalltalk

Zitat von zommi
Also meine Aufgabe:

programmiere eine einzige Methode f(n) zum Berechnen der Quadratzahl n^2.
Allerdings sind * und / nicht zugelassen. Was als arithmetische Operation zugelassen ist, sind: + und - .
Ahso und lokale/temporäre Variablen sind natürlich auch nich zugelassen ;)

beste Grüße
zommi

Also ich bezweifel, dass es mit nur einer Methode möglich ist ;-) du musst ja irgendwie ne Laufvariable und ne tmp mitgeben. Hab das aber mal in Scala gelöst mit nur "einer" Methode :D

def square(value: Int) = {
    def sq(value: Int, tmp: Int, count: Int): Int = {
      if(count == 0)
        tmp
      else
        sq(value, tmp + value, count-1)
    }
    sq(value, 0, value)
  }

Thema: Das Programmier-Spiel: nette Übungsaufgaben für zwischendurch
Am im Forum: Smalltalk

Ja dann hau ma die nächste Aufgabe rein :D

Thema: Erfahrungen mit LED-Schreibtischleuchten?
Am im Forum: Smalltalk

Also eine normale Schreibtischlampe mit Kathode oder Halogen sollte ja auch keine Unmengen an Strom erbrauchen... Lass es 10W sein, dann kommste im Winter bei sagen wir 8h Laufzeit auf einen Tagesverbrauch von 80W/h = 0,08kW/h... das kostet dich dann ca. 2 Cent.


edit: naja... die meisten liegen bei 20-30 W, gerade geschaut, aber dan sind es auch nur 5-6 Cent :D

Thema: Was war euer erstes Projekt? Was waren eure ersten Schritte beim Programmieren?
Am im Forum: Smalltalk

Hmmm.... also nach den ersten "C/C++" Erfahrungen in der Schule und ein wenig X/HTML, PHP und JavaScript habe ich mein erstes Richtiges Programm in meinem Praktikum für die FH-Reife erstellt. Das war ein Bildbetrachtungsprogramm in C# mit WPF Oberfläche. Danach habe ich in der gleichen Firma einen Syslog-Viewer/-Empfänger in C# mit WinForms geschrieben und ein paar kleinere Tools in C++ und C#. Im Studium bin ich dann im ersten Semester mit Ruby in Berührung gekommen, welches noch einer anfänglichen Abneigung doch sehr interessant für mich war, besonders im aktuellen Semester in Verbindung mit Rails. Im 2. und auch im jetzigen 3. Semester kam dann Java dazu, was meiner Meinung nach mehr ein Zustand ist.... also wirklich nicht mein Fall. Und ein wenig Scala, was mir die wunderbare Welt der funktionalen Programmierung näher gebracht hat, weshalb ich nächstes Semester auch den Wahlpflichtkurs Scala belege. Nebenbei programmiere ich noch in Objective-C für das iPhone und einige kleinere Shop-Plugins in PHP und ActionScript/Flex. Desweiteren werden wir im nächsten Semester im Software Engineering 2 Praktikum ein Spiel für das Microsoft Surface auf Basis von XNA entwickeln.

Wenn ich mir das jetzt so angucke ist das viel Querbeet, aber Syntax ist ja zum Glück das einfachste :D

Thema: AVL Baum best case beim füllen
Am im Forum: Rund um die Programmierung

Hm... Also ein AVL-Baum sollte bei Veränderungen (einfügen oder löschen von Elementen) selber wissen, ob er rebalanciert werden muss, oder nicht. Daher gibt es kein "möglichst balanziertes Auffüllen". 100 Werte einfügen geht doch ganz einfach mit einer Schleife. Und Zeit messen ist mehr als unsinnig, weil die Zeit auf jedem System anders ist. Bei Operationen auf ADT´s und Algorithmen bestimmt man normalerweise das Big-O. Das gibt an, wieviele Operationen für den Algorthmus im Worst-Case notwendig sind. Z.B. ist es beim Suchen in einem AVL-Baum (bzw. in allen Binär-Bäumen) O(log n).

Ich hoffe das hilft dir etwas weiter.


Gruß

Dario

Thema: Programmiersprache der Zukunft
Am im Forum: Rund um die Programmierung

Zitat von pdelvo
f# ist keine konkurenz zu c#. genau so wenig wie c# fu f# keine ist. die sprachen sind komplett unterschiedlich. manche aufgaben lassen sich in c# sehr umständlich lösen, wogegen das in f# ganz leicht ist. wiederum andere sind in f# nur sehr unschön möglich, und in c# kein problem. sie decken unterschiedliche bereiche ab.

Welche Aufgaben sind denn in F# unschöner zu lösen, als in C#?

Thema: Programmiersprache der Zukunft
Am im Forum: Rund um die Programmierung

Also ich sehe auch C# und Java aussterben, wenn sich nicht schnellstens was in Richtung Concurrency tut. Das Thema wird nunmal immer wichtiger und wurde bisher leider nur sehr Stiefmütterlich behandelt. Wenn die C# Entwickler nicht aufpassen werden die bald von F# aus dem Rennen gekickt.

Thema: Was wünscht ihr euch für C# 5?
Am im Forum: Rund um die Programmierung

Zitat von Florian Reischl
Die Möglichkeit in einem Interface einen Constructor zu definieren. Mit ISerializable zeigt .NET recht schön, dass das Feature manchmal nicht schlecht wäre.

Ich würde sogar so weit gehen und sagen, dass man ganze Methoden in Interfaces implementieren können sollte. Das ganze funktioniert in Scala mit Traits wunderbar! Bin ein echter Fan davon geworden.

Thema: Programmiersprache der Zukunft
Am im Forum: Rund um die Programmierung

Also in naher Zukunft wird es sicherlich in Richtung funktionale Programmiersprachen gehen, da die Multicoresysteme sonst einfach nicht handzuhaben sind. Selbst C# unterstützt seit der Sprachversion 3.0 und dem zugehörigen Framework einige funktionale Konzepte, wenn auch noch lange nicht genug. F# ist ein weiteres Beispiel und der Versuch von Microsoft sein Stück vom funktionalen Kuchen abzuschneiden^^. Dann gibt es z.B. noch Clojure, welches eine LISP implementation für die JVM ist (wer´s mag). Aber mein klarer Favorit ist Scala. Die Mischung aus funktionaler und objektorienterter Sprache (beides wird voll unterstützt) ist einfach genial. Im Bereich Multicore punktet Scala eindeutig mit den Aktoren, welche aus Erlang stammen und ein besseres Konzept bieten als herkömmliche Threads.

Thema: Schleifenparallelisierung?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Ansonsten gäbe es da noch die Parallel Extensions, die schon parallele Schleifen enthalten.

Thema: Anwendung überwachen
Am im Forum: Rund um die Programmierung

Keine Window-Messages... Wie herbivore bereits geschrieben hat ist das nicht zukunftssicher udn ausserdem gibt es bessere Mittel :-). Ich habe dir hier mal ein kleines Tutorial gesucht: http://www.codeguru.com/csharp/csharp/cs_syntax/remoting/article.php/c9251/

Das sollte eigentlich reichen, um deine Anwendungen kommunizieren zu lassen.

Thema: Float als "vier unsigdner char" speichern
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hinter das ToCharArray noch Klammern.

Thema: Float als "vier unsigdner char" speichern
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

BinaryWriter.Write(string) schreibt einen length prefixed string. Das heisst, dass vor dem String die Länge geschrieben wird. Rufe es einfach mit BinaryWriter.Write(string.ToCharArray()) auf, dann sollte es klappen.



edit: Klammern vergessen ;-)

Thema: Anwendung überwachen
Am im Forum: Rund um die Programmierung

Ob ein Programm noch reagiert kannst du mit Process.Responding herausfinden. Sollte die Oberfläche nicht auf Benutzereingaben reagieren liefert es false. Wenn keine Oberfläche vorhanden ist liefert es immer true. Also geht es nur mit einem GUI. Beenden kannst du den Prozess dann einfach mit Process.Kill und starten mit Process.Start.