Laden...
O
onlinegurke myCSharp.de - Member
Student/Hilfswissenschaftler Dresdner in Karlsruhe Dabei seit 15.01.2007 778 Beiträge

Forenbeiträge von onlinegurke Ingesamt 778 Beiträge

22.11.2007 - 15:30 Uhr

Die Aussage schreibgeschützt ist aber so auch nicht richtig. Vielmehr wird eine Referenz auf das Objekt in die Variable kopiert.

x="....."

ist also rein syntaktisch völlig i.O., ändert nur halt nix an der Auflistung, weil dann eine Referenz auf ein anderes Objekt in die Variable (wohlgemerkt nicht in die Auflistung) kopiert wird.

Blöd finde ich foreach aber nicht... 😉

22.11.2007 - 15:08 Uhr

wär eher für sowas hier:

public class Team
{
private string mName;

public Team(String name) {mName=name;}

public Name{ get{return mName;}}

static void Main()
{
 TeamCollection teams=new TeamCollection();
 teams.Add(new Team("AlphaTeam"))
}
}

public class TeamCollection:thumbsup:bjectModel.KeyedCollection<String, Team>
{

overrides String GetKeyForItem(Team item) { return item.Name;}

}

//edit: [/csharp] vergessen...

22.11.2007 - 13:16 Uhr

ganz ohne Ahnung gehts nicht. Schau dir mal die Links unter Ressourcen an und meld dich, wenn du dann konkrete Probleme hast.

22.11.2007 - 13:12 Uhr
Team t=new Team();

oder was meinst du? Objekte werden IMMER zur Laufzeit erstellt. Lies dir mal bitte erstmal das durch, sollte bei den meisten Fragen helfen...

22.11.2007 - 13:05 Uhr

schonmal mit "FFFF" als Input getestet? Durerfte an dieser Stelle:

data = Convert.ToByte(oneByte,16); 

einen Fehler bringen, weil es aus dem Bereich von Byte rausgeht. Verwende UInt16. Muesste es auch eine Methode geben (Convert.ToUInt16)

//edit: sry, hab einen denkfehler gehabt, dachte du meintest zwei Byte und nicht zwei Zeichen

22.11.2007 - 12:54 Uhr

@JuyJuka:

Achso? Von welchen denn nicht?

21.11.2007 - 13:06 Uhr

Fehlende using-Direktive auf System.Text.RegularExpressions

ansonsten ist der Code so syntaktisch korrekt, aber es wär hal günstiger den Regex gleich einmal zu kompilieren.

20.11.2007 - 17:49 Uhr

Man denkt doch beim Schach auch nicht, "Kann ich auf F4 mal die Dame stellen?" sondern eher "Kann ich die Dame mal auf F4 stellen?". Maßgeblich sind doch nicht die Felder, sondern die Figuren...

20.11.2007 - 17:46 Uhr

Warum nehmt ihr das Spielfeld als Grundlage für das Objektmodell, warum nicht die Spielfiguren? Die eignen sich doch viel besser! Eine Basisklasse Spielfigur, die sowas anbietet wie Position und KannDahin(position) und eine Spielerklasse mit meinetwegen einen Namen und eine Figuren Eigenschaft. Würd ich logischer finden...

20.11.2007 - 11:59 Uhr

Hab mich mit 3.0 aber bisher auch kaum beschäftigt...

20.11.2007 - 11:58 Uhr

Wie meinst du selbst beibringen? Programm mit WPF schreiben versuchen, Buch durchlesen oder Tutorials durcharbeiten (oder alles davon)? Ich würd vor allem Buch lesen und dann Tutorials...

19.11.2007 - 16:06 Uhr

Mein Orcas Express Beta 1 (und jetzt auch 2) ärgert mich zur Zeit leider öfters mit der Fehlermeldung, dass EntityName in Zeile 2, Position 74 nicht geparst werden kann. Das tritt auf bei verschiedenen Designern, e.g. Windows-Forms-Designer und SQL Compact Edition Designer. Beim WPF-Designer ist mir das noch nicht aufgefallen, den benutz ich aber auch so gut wie gar nicht. Einen klaren Grund dafür (evtl. schlechte eigene Steuerelemente oder so) gibts nicht wirklich, das Problem tritt auch schon auf, wenn ich mich auf Framework-Steuerelemente beschränke.

Gibt es da außer mir noch jemanden, der das Problem hat, oder bin ich da auf verlorenem Posten?

19.11.2007 - 16:00 Uhr

Mir ist bewußt das dies das Konzept von EARLY Binding untergräbt.

Naja, wenn du die Funktionalität der Menüeinträge über eine Schnittstelle definierst und dann auf die Schnittstelle castest, dann würde ich das nicht als Verstoß bezeichnen. Aber was anderes: Wenn du wie svenson das vorgeschlagen hast Activator.CreateInstance benutzt solltest du a einen parameterlosen Konstruktor anbieten und b in der Datenbank nicht nur class_1, sondern den vollqualifizierenden Namen (d.h., incl. Assembly) speichern.

19.11.2007 - 13:31 Uhr

Wie wäre es mit

Select SignalID, AVG(Value) as Mittelwert From Tabelle Group by SignalID
16.11.2007 - 14:41 Uhr

Ich würd dir auch dringend empfehlen, Run() als virtual zu markieren, dann kannst du in abgeleiteten Klassen vielleicht noch andere schoene Dinge mit den Dateien machen als Diagnostics.Process.Start

16.11.2007 - 12:47 Uhr

Naja, was ist denn ueberhaupt ein Muss? Bestimmte Sachen kann man ausschliesslich mit Attributen machen, manche Sachen gehen damit einfacher. Wo zum Beispiel exzessiv Attribute verwendet werden (muessen) ist Entwurfszeitunterstuetzung, schreibst ein Steuerelement und moechtest, dass es genauso angezeigt wird, wie die .NET-Steuerelemente, oder ein Objekt, was du im Property Grid anzeigfen willst. Solche Sachen gehen (beinahe ausschliesslich) ueber Attribute. An der Stelle ist auch die Eigenschaft von Attributen wichtig, dass sie erst zur Laufzeit geladen werden, denn nur so ist es moeglich, dass die Beschreibungen und Kategoriebezeichnungen der Steuerelemente lokalisiert und nicht in Englisch geladen werden koennen.

//edit: Mist, zu spaet...

15.11.2007 - 18:35 Uhr

_Original von talla_ich glaube das Team macht seinen Job gut.

ich kann dem nur zustimmen. Und nur, dass es auch mal ein "normaler" User gesagt hat: Ich finde das, was herbivore in dem Thread gemacht hat vollkommen in Ordnung und kann auch den letzten Beitraegen von talla hier nur zustimmen.

15.11.2007 - 16:17 Uhr

da das Assembly frei ist

Wie frei?

14.11.2007 - 14:40 Uhr

@JuyJuka:

Da würde ich widersprechen wollen, Events kann prinzipiell jeder und alles an- und abmelden, nur eben halt alles einzeln, nicht "Mal ebene alle Abbonements weg!". Ich wuerde sogar sagen, dass man Handler, die auf private Methoden verweisen, auch extern wieder abmelden kann, dazu waere aber ein tiefer Eingriff in Reflection notwendig, aber es muesste gehen...

13.11.2007 - 19:04 Uhr

wenn das property auf readonly gesetzt ist, ist das egal, aber wenn du value zurückgibst, dann unterstützt dein Editor auch "normale" properties

13.11.2007 - 18:22 Uhr

Ja, stimmt. Ich meinte ja nur, dass das öffentliche "Ueberleben" von derartigen Seiten drauf hinweist, das so etwas grundsätzlich möglich ist, nicht von vorn herein illegal. Aber ist eigentlich Blödsinn, prinzipiell ist alles legal, es ist alles eine Frage der Abkommen mit den Betreibern, die benötigt werden. Ziehe meine Aussage zurück 🙂

13.11.2007 - 16:22 Uhr

Also allein die Existenz von Metasuchmaschienen (das was du da machen willst ist ja auch eine) weist eigentlich darauf hin, das es da keine generellen Urheberrechtsprobleme gibt, ich würde es aber trotzdem nochmal nochmal mit den einzelnen Anbietern abklären

13.11.2007 - 15:05 Uhr

Wenn ich dann ParameterInfo.DefaultValue aufrufe, bekomme ich immer System.DBNull zurück (auch bei boolean zum Beispiel).

Sicher System.DBNull? Nicht einfach nur null? Naja, egal, die Werte, die dem Konstruktor übergeben werden kannst du nur im Konstruktor selbst in dem Moment, wo er aufgerufen wird feststellen, oder was meinst du? Defaultwerte kriegst du genau so, wie du's gemacht hast. System.DBNull oder null zeigt wahrscheinlich an, dass es keinen Defaultwert gibt (wobei ich das Design unsauber finden würde, kann's grad nicht prüfen, hab kein VS auf Arbeit)

//edit: Nur mal so gefragt, was hast du den ungefär für eine Tippgeschwindigkeit, herbivore? Bist ja geschwindigkeitstechnisch gar nicht zu schlagen... 🙁

13.11.2007 - 11:14 Uhr

du musst an SetValue ja auch eine Instanz des Typs, nicht das Typobjekt, übergeben. Bei statischen properties müsste man den ersten Parameter gämzlich weglassen (null), der zweite Parameter ist immer der Wert und der dritte, ja, der dritte sind die Parameter für den Aufruf. Als C#er gibt es aber genau eine Art von parametrisierten properties, nämlich Indexer. Aber wenn du Code aufrufst, der e.g. in VB.NET geschrieben wurde, dann ist da tw. auch ein dritter Parameter notwendig.

13.11.2007 - 10:19 Uhr

SOA ist an sich auch ne tolle Sache, gerade auch so, wie es Microsoft bei den Entwurfszeitmustern durchzieht, aber so dokumentiert nuetzt das halt nicht allzu viel...

zum nick:
Woher kommen eure Nicknames?

aber langsam überlege ich, mir doch einen neuen nickname auszudenken oder zumindest mal n bild von mir reinzustellen...

12.11.2007 - 16:18 Uhr

Du hast einen Serviceprovider zur Verfuegung, der nur dazu da ist, dir Serviceobjekte wie dieses zu liefern. Entwurfszeitkomponenten, Designer und so'n Kram ist alles SOA, d.h., man muss im wesentlichen nur wissen, welchen Servicetyp man gerade braucht (und ob der Provider diesen liefern kann). Leider gibt es keine Moeglichkeit rauszukriegen, welche Servicetypen VS unterstuetzt. Aber ich meine, selbst wenn, dann setzt dir jemand eine andere IDE an den Code, e.g. #dev, die diesen Service vielleicht nicht unterstuetzt, und sch wars. Lieber immer pruefen. Aber das hast du ja im Fall des IWindowsFormsEditorServices auch gemacht 🙂

12.11.2007 - 15:07 Uhr

Ich wuerde es auch erstmal, wie Qwald schon gesagt hat, mit Microsofts AntMe probieren. Da gibt es glaube ich auch neben den "normalen" AntMe Starterpacks auch ein Starterpack fuer welche wie dich, die in die managed DirectX-Programmierung einsteigen wollen.

12.11.2007 - 13:25 Uhr

Tu das nicht. Wenn du das tust, dann funktioniert es recht nicht mehr. lösche lieber den INHALT der Auflistung und dann fuege die Elemente einzeln neu hinzu. Das sollte funktionieren. So wie du es jetzt machst erstellst du eine neue Collection, und das ist mit readonly properties natürlich inkompatibel. Aber mir fällt grad ein, woran es liegt. Wenn du Aenderungen an einem Objekt durchfuehren willst, dann musst du das dem DesignerHost auch mitteilen, lass dir mal ein IComponentChangeService geben und benachrichtige den, wenn du die Collection loeschst und neu befuellst.

12.11.2007 - 11:16 Uhr

hast du auch in der property das DesignerSerializationAttribute auf Content gesetzt? Da würde ich das Problem vermuten...

12.11.2007 - 09:31 Uhr

Was herbivore meint, ist, dass du erstmal nach vorhandenen EventArgs-Klassen benutzen, und wenn du Ereignisdatenklassen von EventArgs ableitest, dann kannst du immer auch Generika verwenden, mindestens beim Delegate (EventHandler<T>)

09.11.2007 - 13:52 Uhr

sieht komplexer aus (ist es auch 🙂), aber ist auch deutlich leistungsfähiger, da du fuer die Implementierung einer neuen Methode die Methode nur erstellen musst und nicht dauernd was in der Switch-Anweisung machen...

09.11.2007 - 13:20 Uhr

Die Anforderungen erinnern mich ganz stark an die DockPanelSuite, ich glaub die steht unter LGPL...

09.11.2007 - 12:00 Uhr

wenn du weisst von welcher Klasse das eine statische Methode ist, bzw, auf welches Objekt du diuese Methode anwenden sollst, dann geht das.

09.11.2007 - 11:00 Uhr

richtig ne eigene Homepage hab ich nich, nur n Blog zusammen mit meiner Freundin, allerdings so ziemlich ohne auch nur der Erwähnung das ich mich jemals mit Programmieren beschäftigt hab...

http://sinaundgeorg.blogspot.com

08.11.2007 - 17:12 Uhr

wenn du nicht vor hast den Debugger zu benutzen, warum verwendest du ihn dann? Aendere mal die Konfiguration in x86, oder starte das Projekt ohne Debugger...

08.11.2007 - 14:40 Uhr

Ja, das sollte gehen, wenn du die selben Codedateien mit verschiedenen Projetdateien referenzieren. Dann musst du dann in den Compileoptionen der Projekte halt verschiedene Konstanten definieren...

08.11.2007 - 14:35 Uhr

Ich denk mir Klassendesign und Lösungen zu Architekturfragen beim Fahrradfahren aus und setze sie dann später um 🙂, entwickle momentan noch ausreichend wenig, dass das ausreicht...

08.11.2007 - 14:31 Uhr

ach ja, Namen des Threads aendern geht einfach, indem du den ersten Beitrag editierst...

08.11.2007 - 14:31 Uhr

sry ich meinte die ControlCollection der IBar, ja 🙂

Literatur gibts ganz wenig, stimmt 🙁 aber generell gibts dazu ein Beispiel von MS, TaskPane heissts glaub ich, hat mir seehr geholfen...

08.11.2007 - 12:29 Uhr

Nur wegen dem korrekten Namensgebrauch: Es handelt sich in diesem Moment dann nicht mehr um ein Control, sondern um ein Component. Component ist aber der generelle Oberbegriff fuer alle Klassen, die eine Unterstuetzung fuer Designer bereitstellen (e.g. VS WinForms Designer).

08.11.2007 - 12:18 Uhr

IDesigner ist ein Irrweg. Ueberschreib die ControlCollection von QuickBar, und ueberschreibe da die Add-Methode.

//edit: Mittlerweile waere es glaub'ich sinnvoll den Namen des Threads mal zu aendern, weil es so ueberhaupt gar nicht um automatische Namensvergabe geht...

08.11.2007 - 08:11 Uhr

Die Unterschiede sind tatsaechlich nur Feature vorhanden / nicht vorhanden. Bei vielen Sachen greift VS ja - sowohl Express als auch die anderen Versionen - auf externe Programme zurueck (e.g. csc) und die sind in jedem Fall gleich. Der Lieferumfang ist einfach groesser, es gibt eine PlugIn-Unterstuetzung, etc.

07.11.2007 - 14:56 Uhr

Das BrowsableAttribute ist das falsche Attribute, verwende stattdessen EditorBrowsableAttribute und setz den Wert am besten auf Advanced, damit man ueberhaupt noch rankommt, aber die auch ausblenden kann. Browsable wirkt sich nur auf die Darstellung zB im PropertyGrid aus.

07.11.2007 - 14:47 Uhr

ja, das hat etwas damit zu tun. Deine Aufzaehlung gibts du aber wahrscheinlich nur als readonly property nach außen, da verursacht

[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]

natuerlich nur Fehler und wird nicht ausgefuehrt. Nimm stattdessen

[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]

Visible ist die Defaulteinstellungen. Das .NET-Framework ist aber scheinbar nicht intelligent genug, readonly propertys standardmaessig mit Content zu behandeln, deswegen muss das bei jedem einzelnen readonly property hin.

07.11.2007 - 13:57 Uhr

Ich vermute mal, das ganze Problem ist, dass du die Location der neu hinzugefügten QuickBarItems nicht einstellt. Sie kommen alle, aber sind dann alle uebereinander

06.11.2007 - 15:57 Uhr

Ich glaube mit Activator.CreateInstance(..) schieße ich mit Kanonen auf Spatzen.

solange das aber so performante Kanonen sind ist auch das kein Problem. Im Gegenteil, dann ist es auch kein Problem, wenn sich die Spatzen noch zu ausgewachsenen Raubvoegeln entwickeln... 🙂

05.11.2007 - 17:12 Uhr

Wenn es einfach um die Darstellung von Zahlen geht (was potentiell sehr viele sein können): Ja 🙂, abhaengig vom Kontext der Formatierung kann es aber auch total unerwuenscht sein, "x Atome" zu schreiben. Wenn du in einem Steuerelement in einer Anwendung die Eingabe nur Zahlen etc. begrenzen willst wäre es von vornherein ausgeschlossen, dass da noch irgendwas anderes formatiert wird.

Auf der anderen Seite ist das weiß Gott kein komplizierter Parservorgang, der Performanceverlust ist dürfte also auch beim Formatieren von 10.000 Zahlen noch keinen Flaschenhals verursachen...

Insofern hast du Recht, zumal der Wartbarkeitsvorteil von String.Format u.U. recht groß ist. Hab halt noch nicht so viel Praxis 🙁

05.11.2007 - 13:44 Uhr

ich persönlich hege auch eine tiefe Abneigung gegen die Convert-Klasse, aber das ist quasi die Abkürzung, wenn du String.Format aufrufst, dann muss der Formatcode ja erst geparst werden - um die geparste Zeichenkette dann an Convert zu übergeben. Auch beim Aufruf von (int).ToString(formatcode), was meine persönlich bevorzugte Variante ist, geht der Aufruf intern an Convert...

05.11.2007 - 12:53 Uhr

Wozu willst du denn die Einträge sortieren?

Ich würde aber auf gar keinen Fall den Verbindungsstatus als Zeichenkette speichern, codier es lieber entweder fest (Enumeration) oder Variabel (Zahlen), wenn es nur zwei Zustände gibt und geben kann, wie es deine Beispiele vermuten lassen kannst du auch Booleans nehmen.

Insgesamt würde ich dir aber vorschlagen gleich eine komplett neue Datenstruktur für ein Telefon zu erstellen, dann kannst du auch Suchen implementieren wie "finde alle freien Telefone in meiner Abteilung". Dazu müsste aber gespeichert sein, zu welcher Abteilung das Telefon (oder vielmehr der dazugehörige Mitarbeiter) gehört (nicht nur die Rufnummer).

05.11.2007 - 12:45 Uhr

Im Zusammenhang mit Komponenten würd ich dir aber dringend von der Verwendung von Internal abraten, denn damit machst du dir alle Vorteile, die du mit (hoffentlich über Schnittstellen definierten) Komponenten erschlagen hast: Austauschbarkeit geht dann nur, wenn die neue Komponente auch im selben Projekt ist und das ist nicht Sinn und Zweck der Sache.

Nimm Events