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 Traumzauberbaum
Thema: Visual Studio 2005 SDK Version 4.0
Am im Forum: Szenenews

Nicht brand neu, aber weils noch nicht hier steht:

Das letzte SDK für Visual Studio 2005 wurde veröffentlicht.

Download


Danach will man sich auf Orcas ausrichten, das langsam auf die Beta zugeht.

Quelle

Thema: C# und Header-Dateien
Am im Forum: Rund um die Programmierung

Das ist nur ein Makro. Wenn du das benutzen willst, kannst du leicht ne Funktion schreiben, die das gleiche macht. Wenn du es nicht benutzen willst, dann ignoriers einfach.

Thema: Cast von generischen Klassen
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

C# unterstützt leider keine Kovarianz für Rückgabewerte. Die beste Lösung sieht wohl so aus:


public interface IInterfaceBase {
}

public interface IInterface2 : IInterfaceBase {
}

public interface IInterface3
{
    IInterfaceBase BusinessLogic { get; }
}

public class Class1<T> : IInterface3
   where T : IInterfaceBase {
   IInterfaceBase IInterface3.BusinessLogic {
      get { return BusinessLogic; }
   }

   public T BusinessLogic {
      get { return default(T); }
   }
}

public class Class2 : Class1<IInterfaceBase> {
}

public class Class3 : Class1<IInterface2> {
}


List<IInterface3> lstClassList = new List<IInterface3>();
Class2 oClass2 = new Class2();
lstClassList.Add(oClass2);

Class3 oClass3 = new Class3();
lstClassList.Add(oClass3);

Thema: C#-Programm mit SQL-Zugriff beschleunigen
Am im Forum: Datentechnologien

Du kannst eine ganze Menge rausholen, wenn du SqlParameter benutzt. Wenn du die richtig konfigurierst, d.h. Datentyp setzen, Länge setzen, und bei Numeric/Decimal Präzession setzen, dann kannst du die Prepare Funktion von SqlCommand aufrufen. Damit wird das ganze als eine Art Stored Procedure hinterlegt, und der SQL Server spart Zeit zum compilieren und optimieren.
Damit konnte ich eine ähnliche Anwendung um ein vielfaches beschleunigen.

Eine zweite Variante wäre alles in eine Datei zu schreiben, und dann BULK INSERT zu benutzen.


Eventuell könntest du auch mit zwei Threads etwas rausholen. Natürlich nicht in der Simulation.
Aber wenn ein Thread die Datei ließt, und ein anderer in die Datenbank schreibt, könnte eventuell die Rechenzeit besser genutzt werden.

Thema: [Artikel] Aspektorientierte Programmierung (mit Rapier-Loom.NET)
Am im Forum: Artikel

Ich hab mich jetzt auch mal mit AOP beschäftigt, und mir gefällt die Idee recht gut.


Ich finde nur leider nichts über eine Lizens von Rapier Loom.NET. Weiß jemand, ob man es in komerziellen Projekten einsetzen kann?

Thema: SharpDevelop 2.1 - Final
Am im Forum: Szenenews

Hier eine Liste der neuen Features:
http://community.sharpdevelop.net/blogs/mattward/archive/2007/03/05/NewFeaturesInSharpDevelop21.aspx

hört sich wirklich gut an

Thema: decimal, float oder double
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Zitat
Original von onlinegurke
Bei 64bit-Systemen sollte aber definitiv Double in absolut jedem Fall schneller sein...

Mit so einer absoluten Aussage, liegst du auf jeden Fall falsch
Der Kontext ist bei heutigen CPUs sehr entscheidend und auch sehr umfangreich. Eine generelle Aussage ist nicht möglich.

Zwei Bytes zu addieren ist z.B. im Allgemeinen nicht schneller als zwei Integer zu addieren. Im Speziellen lassen sich aber Byte Vektoren schneller addieren als Integervektoren mit gleicher Dimension.

Außerdem ist die FPU eigentlich schon länger mit 64bit Registern ausgestattet.

Thema: Xml Serialize Problem
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Zitat
Original von Samba
Naja, ich hab eben einen Serializer vom Typ typeof(PatientenPatient) erstellt und ihm eine PatientenPatient[] übergeben, das müsste dann ja auch funktionieren.

Nein müsste es nicht. Der Serializer den du so erstellst, serialisiert ArrayOfPatientenPatient, eben ein allgemeines Schema für ein Array. Du möchtest ein ganz spezielles Schema in der Ausgabe haben. Dieses spezielle Schema wird von der Klasse Patienten umgesetzt. Es ist wenig verwunderlich, dass nicht dieses spezielle Schema rauskommt, wenn du die darauf zugeschnittene Klasse nicht benutzt.

Thema: Xml Serialize Problem
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Du solltest den XmlSerializer mit typeof(Patienten) erstellen, und dem dann auch ein Objekt vom Typ Patienten geben.

Thema: Exception Abfangen, Bevor sie ausgegeben werden
Am im Forum: Rund um die Programmierung

Zitat
Original von talla
Wie Herbivore schon sagt, für unbehandelte Exceptions gibts das Application.ThreadException Event. Damit fängst du aber nur Exceptions die nirgends anders behandelt werden, in deinem ersten post hat man des net genau rausgehört wie du das nun haben willst.

Wohlgemerkt nur Exceptions, die im GUI Thread geworfen werden. Das gibt es, weil man diverse Bedienungsfehler von Controls nicht mit try-catch abfangen kann.
Sonst sollte man AppDomain.CurrentDomain.UnhandledException benutzen.

Thema: In die EXE des eigenen Programms während Laufzeit schreiben?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Zitat
Original von Taki Haki
Stimmt das so in etwa? X(

So in etwa stimmt das, nur ich versteh nicht so richtig, wo der Unterschied zu einer stinknormalen neu erstellten Datei ist.

Thema: Ballkollision und die Vektoren
Am im Forum: Rund um die Programmierung

Erstmal ein Problem bei dem ich ins Stutzen kam:

Die Speed Membervariablen sind Vektoren oder? Dann wäre der Name Velocity besser gewählt, Speed beschreibt eigentlich nur den Betrag der Geschwindigkeit, und nicht seine Richtung.


Aber die Formel ist eindeutig falsch. Man muss sich nur mal die Einheiten dazudenken, dann kommt am Ende für die gerichtete Geschwindigkeit was mit Gramm raus, was so nicht stimmen kann.

Imo müsste das so aussehen:


float massSum = massA + massB;
float massDiff = massA - massB;

Vector2 impulse = Vector2.Normalize(new Vector2(CollBall.x-this.x,CollBall.y-this.y));
float speedA= Vector2.Dot( impulse, this.speed );
float speedB = Vector2.Dot( impulse, CollBall.speed );
float newSpeedA = (massDiff*speedA + 2*massB*speedB) / massSum;
float newSpeedB = ((-massDiff)*speedB + 2*massA*speedA) / massSum;
this.speed += impulse * (newSpeedA - speedA);
CollBall.speed += impulse * (newSpeedB - speedB);

Das müsste so eigentlich hinhauen... vieleicht kriegst es ja noch cleverer umgeformt, aber das zeigt dem Impulserhaltungssatz glaub ich am Besten. Man zerlegt erstmal die Bewegung in die Anteile in Stoßrichtung (speedA und speedB in Richtung impulse). Dann rechnet man über Impulserhaltung und Energieerhaltung die neuen Anteile in diese Richtung aus (newSpeedA und newSpeedB in Richtung impulse).
Und die neue Bewegung ist die Summe aus den neuen Anteilen, und der Bewegung, die Senkrecht zur Stoßrichtung ist. Senkrecht zur Stoßrichtung wäre:

this.speed - impulse*speedA

die neue Bewegung addiert wäre dann:

this.speed = this.speed - impulse*speedA + impulse*newSpeedA

und etwas zusammengefasst:

this.speed += impulse*(newSpeedA - speedA)

Thema: TCPClient gesendete Daten trennen
Am im Forum: Netzwerktechnologien

Das ist schon ein Protokoll:

Ein Befehl muss mit \n beendet werden.

Ziemlich simpel, aber ein Protokoll.

Thema: C Editor in C#???
Am im Forum: Rund um die Programmierung

Notepad ist zumindest nicht weit von der Elite der C IDEs entfernt was Features angeht

Thema: Replace wird nur 2mal auf einen String ausgeführt ?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Da muss man nur mal ne Weile C/C++ programmieren, und man weiß ganz genau, was an unveränderbaren Strings so toll ist.

Thema: GUI: Selbst coden oder zusammenklicken ?
Am im Forum: Rund um die Programmierung

Bis zu ner gewissen Grenze finde ich den Designer gut. Man kann gut mit dem Layout experimentieren, ein paar Eigenschaften verändern und Controls rumschieben und umsortieren.
Ziemlich ätzend das ohne Designer zu machen. Für jede kleine Änderung neu kompilieren und bis zum gewünschten Control durchklicken, nur um festzustellen, dass es scheiße aussieht...

Für alles was unter der GUI liegt, finde ich den Designer aber eher schlecht. Angefangen bei DataBindings, was über den Designer imo umständlicher ist als über puren Code. Außerdem zerstört das automatische erstellen von Events imo das Gefühl für die Trennung von GUI und Funktionen.

Thema: Typisiertes DataSet verwenden
Am im Forum: Datentechnologien

Also ich blick da nicht ganz durch, aber es sieht mir so aus, als ob die Relationen falsch angegeben sind.

Mit Code kenn ich mich etwas besser aus:
Mit GetChildRows("...") kriegst du auf jeden Fall was du willst.

Solche Befehle stehen ja auch in der CS Datei. Nur eben an der falschen Stelle. In der Datei steht bei PhotometryAnalysis ein GetParentRow, was logischerweise nur eine Row zurückliefert. Dafür steht bei CalibrationCurvesRow ein GetChildRows.

So wie es jetzt ist, hast du also ne n:1 Beziehung zwischen PhotometryAnalysis und CalibrationCurves. Wenn ich das richtig verstehe, soll das aber eine 1:n Beziehung sein.

Also wie auch immer du das gemacht hast, du musst es andersrum machen

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

Also bei mir klappt das z.B. problemlos:

schtasks /create /sc minute /mo 20 /tn "Test Task" /tr ""cmd.exe" /k echo Test"

Thema: MSDN2 langsam
Am im Forum: Smalltalk

Hab nicht den Eindruck, dass es länger dauert. Wenn ich was zum SQL Server nachschlage, dauert das auch recht lange. Und es dauert definitiv zu lange. Man sollte meinen, Microsoft könnte sich ne vernünftige Anbindung leisten.

Thema: reverse engineering mit vs 2005 projekten (UML Diagramm)
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Also bei mir gibts das Reverse Engineer auch im vs 2005.

Thema: delegate Frage
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Der Unterschied ist, dass ThreadStart ein Delegate ist, und Bla eine Klasse. Probier mal das mal mit Bla.DoDelegate bla = new Bla.DoDelegate( . Da zeigt er dann auch an was du willst, weil Bla.DoDelegate auch ein Delegate ist.

Thema: Dictionary Keys durcharbeiten ohne foreach?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Du könntest höchstens die CopyTo Funktion benutzen, um die Informationen in ein Array zu kopieren. Aber foreach mit ner extra Zählvariable ist imo die bessere Variante.

Thema: lock in AutoResetEvent
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Man kann durch locking verhindern, dass das 2. Set aufgerufen wird. Das 2 Sets immer sequenziert werden ist klar. Deswegen muss man ja auch nichts machen, wenn man den gleichen Effekt wünscht, wie wenn es 2 mal hintereinander ausgeführt wird. Genau das wird ja gemacht.
Nur wenn man diesen Effekt nicht wünscht, dann muss man was tun. Genau das hab ich doch gesagt.

Thema: lock in AutoResetEvent
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Kommt drauf an welchen Effekt zu haben willst.

Wenn du bei 2 gleichzeitigen Sets den gleichen Effekt haben willst, wie wenn 2 mal hintereinander Set aufgerufen wird, dann musst du nix machen.

Thema: Stringvergleiche in SQL mit Umlauten
Am im Forum: Datentechnologien

Seien wir mal realistisch, es wird wohl eher wenige Namen mit mehr als 3 Umlauten geben. Daraus folgt, es gibt höchstens 8 Kombinationen. Das ringt der Datenbank auch nur ein Gähnen ab.

Die Variante mit dem IN erscheint mir aber besser als die ORs. Semantisch ist es natürlich das Gleiche, aber der Optimierer kann da doch ganz andere Sachen draus basteln.

Thema: [Kaufberatung] Gamer-PC für 500€
Am im Forum: Smalltalk

Ich hab 512 MB RAM und meine Grafikkarte hat 32 MB RAM und mich hindert öfters schlicht fehlendes Shader als schlechte Framerate am Spielen.

Thema: [Kaufberatung] Gamer-PC für 500€
Am im Forum: Smalltalk

Dell ist finde ich auch nicht gerade die Referenz für günstige Komplett-PCs. Ist zumindest mein Eindruck. Ich hab hier alle Nase lang Angebote von lokalen Händler, die Dell im Preis/Leistung auf allen Leistungsniveaus schlagen.

EDIT: Ich glaube in 2 Monaten werden die Core 2 Duo nochmal ne Eckte billiger, weil sich Intel auf neue Produkte vorbereitet. Das wäre ja mein CPU der Wahl.

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

Ah ja alles klar. Das kann so natürlich nicht gehen, weil das in nem ganz anderen Kontext steht.

Bei dem Beispielcode den du angehängt hast, ist dieses "plugin" in Wirklichkeit ein Type. Also keine Instanz von IRenderer, sondern eine Beschreibung der Klasse, die IRenderer implementiert. Dort kannst du natürlich nicht mit "is" abfragen, "is" testet, ob eine Instanz einen gewissen Typ hat. Nicht, ob ein Type Objekt einen gewissen Typ beschreibt.

Hast du einen Type gegeben und willst testen, ob dieser ein Interface implementiert, dann musst du sowas machen:

if( typeof( IRenderer ).IsAssignableFrom( plugin ) )

Glaub ich jedenfalls. Die Funktion ist die richtige, ich bin nur nicht sicher, ob man die von plugin aufruft mit IRenderer als Parameter, oder andersrum... ich denke so wirds schon passen

Thema: Genereller weg Objekte "sicher" nach aussen zu geben.
Am im Forum: Rund um die Programmierung

Also ich bin nicht sicher, ob ich das richtig verstanden habe, aber wie wärs, wenn du über Remoting nur ein eingeschränktes Interface auslieferst?

D.h. du gibst dem Client per se nur ein Objekt, vom Typ eines Interfaces, was alle notwendigen Funktionen beinhaltet, nicht aber die eigentlich verbotenen Operationen. Wenn er an verbotene Operationen ran will, muss er also schon mutwillig nen Cast auf die echte Klasse machen.
Das fände ich jetzt ne ziemlich unaufwändige und für dein Problem wirksame Methode.


Die zweite Möglichkeit wäre mit CodeAccessSecurity zu arbeiten. Die strittigen Funktionen benötigen eine gewisse Permission. Und die lässt nur den Server rein und weist die Clients ab.
Nachteil daran, man sieht den Fehler erst zur Laufzeit, nicht zur Kompilierzeit. Der Vorteil, es ist wirklich sicher und kann nicht so leicht umgangen werden.
Macht die Sache aber auch komplexer, als es nötig ist, glaube ich.

Thema: String untersuchen
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Mid ist doch nur ein Substring, nur das man dem ganzen einen dämlichen Namen gibt, so dass ein VB Programmierer für alle anderen Programmiersprachen unbrauchbar ist, wie eben bei VB üblich