Laden...
O
onlinegurke myCSharp.de - Member
Student/Hilfswissenschaftler Dresdner in Karlsruhe Dabei seit 15.01.2007
Benutzerbeschreibung

Forenbeiträge von onlinegurke Ingesamt 778 Beiträge

19.05.2008 - 12:34 Uhr

von mir auch herzlichen Glückwunsch

19.05.2008 - 12:03 Uhr

hm,

The file is damaged and could not be repaired.

16.05.2008 - 16:19 Uhr

imho ruft das PropertyGrid aber immer mit ITypeDescriptorContext auf, wobei das Objekt dann m.e. das PropertyView ist, also ein untergeordnetes Steuerelement des PropertyGrids, sodass du dich mit den WinForms-Parents bis ganz nach oben zur Form durchschaufeln kannst.

14.05.2008 - 17:26 Uhr

Was denn überladen?

TypeConverter c = TypeDescriptor.GetTypeConverter(t);
if (c.CanConvertFrom(typeof(string)))
{
return c.ConvertFrom(typeof(string),value);
}

(ungetestet und ich verbuerge mich auch nicht fuer die korrekte Schreibweise der Methoden, hier kein VS zur Hand...)

Der Vorteil davon gegenüber Convert.ChangeType ist, dass man reagieren kann, wenn keine Konvertierung moeglich ist ohne irgendwelche Exceptions behandeln zu müssen und die meisten wichtigen Frameworkklassen auch einen TypeConverter anbieten, auch nicht ganz elementare wie Point oder Rectangle, Margin oder Padding.

13.05.2008 - 13:16 Uhr

Diplomarbeit? Schule? Ein Diplom ist doch ein Universitätsabschluss, kein Schulabschluss???

13.05.2008 - 11:57 Uhr

Naja, C# deckt zwar fast das komplette Leistungsspektrum von IL ab, aber eben halt nur fast, C# hat z.B. die Einschränkung, dass Variablennamen alphanumerisch sein müssen, was in IL nicht zwingend der Fall ist. Wenn die Assembly nun in einer anderen .NET-Sprache (oder gleich in IL) geschrieben wurde, die diese Moeglichkeit besitzt (wuesste nicht welche, aber von der Theorie her egal), dann haette der Reflector an der Stelle keine Chance den Code 1:1 in C# zu uebersetzen. Auf der anderen Seite ist das ja auch gar nicht der Sinn des Reflectors. Der Reflector dient ja nur dazu, dass man die Struktur und die Implementierungsdetails einsehen kann (sofern die Assembly nicht Disassembling verhindert), nicht aber, dass man die Moeglichkeit hat die Funktionalitaet mal eben zu kopieren, weil streng genommen ist ja schon das Kopieren des Reflector-generierten Codes ein Urheberrechtsverstoss.

07.05.2008 - 10:00 Uhr

Hab jetzt auch mal Safari getestet, muss schon sagen, deutlich schneller als der IE. Aber macht allerhand Probleme. Erstmal oeffnet er sich in 4:3 (hab Breitbildlaptop), was schonmal laestig ist weil jedesmal noch maximieren, dann haelt er sich nicht an imho bedienungsstandards wie click auf mittlere Maustaste oeffnet in neuem Tab. Selbst wenn man ihm explizit sagt er soll ein Fenster in einem neuen Tab aufmachen (via Strg) macht er's nicht und ausserdem gefaellt mir die Metalloptik garnicht.

Und da die Fehlermeldung im IE 7 bei Gmail jetzt weg ist werd ich den jetzt zuhause benutzen. Firefox fuer Notfaelle.

Auf Arbeit ganz klar Firefox Portable 🙂

05.05.2008 - 09:48 Uhr

Streams sind nicht zwingend unmanaged Ressourcen (System.IO.MemoryStream 🙂). Using ist ja nun aber kein Selbstzweck. Man wuerde ja nicht IDisposable implementieren, damit man using einsetzen kann, sondern using einsetzen, um sauber mit Klassen umzugehen, die IDisposable implementieren.

05.05.2008 - 09:30 Uhr

Also bei WCF und WF gibt es in der Tat ein Zusammenspiel (seit .NET 3.5) mit den Send- und Receiveactivities. Aber ein Zusammenspiel von einem der beiden mit WPF? Eher im Gegenteil (Der WF-Designer ist noch WinForms-basiert). Klar kannst du WPF zusammen mit WCF und WF benutzen, aber dann agieren die beiden Technologien unabhängig voneinander. Es macht auch keinen Sinn eine GUI-Technologie (WPF) mit einer Kommunikations- bzw. Workflowtechnologie zu koppeln, erstere ist Clientseitig, zweitere zur Haelfte Serverseitig, wo GUI egal ist (bzw. noch gar nicht mal vorhanden). Du wirst evtl Buecher finden, die dir das Zusammenspiel von WCF und WF erlaeutern, aber WPF wird darin nicht erwaehnt werden.

02.05.2008 - 10:05 Uhr

Hi an alle,

hab schon ueberlegt, ob ich das an den letzten Thread Unis an denen C# gelehrt wird einfach dranhaenge, aber es ist ja doch irgendwie eigenstaendig. Ich hab mich jetzt dazu durchgerungen Informatik zu studieren (statt Mathematik), nur leider bin ich mir noch ueberhaupt nicht sicher wo. Ich hab ein saechsisches Abi mit 2.0 und vertiefter mathematisch-naturwissenschaftlichem Profil und Studiengebuehren sind fuer mich kein Thema (genuegend Geschwister 🙂). Mich wuerde da an der Stelle jetzt zwei Sachen gesondert interessieren, naemlich zum einen, wie umfassend ist das Studium gerade auch im Hinblick auf Software-Entwicklung mit .NET, zum anderen wie angesehen ist der Abschluss.

Vielen Dank im Voraus fuer alle Rueckmeldungen

29.04.2008 - 16:33 Uhr

Naja, wenn du nur untersuchen willst, IEnumerable<> ist dankenswerterweise von IEnumerable abgeleitet (ist nur bei IEnumerable so, bei ICollection oder IList hast du ueber den Weg keine Chance). Dann hol dir doch den Enumerator und damit kannst du dann die Auflistung erschlagen.

29.04.2008 - 13:18 Uhr

wozu sollte es die auch geben. Man kann ja eh nicht auf die Methoden und Eigenschaften zugreifen, weil die ja nicht bekannt ist.

Wenn du es unbedingt brauchst kannst du dich auch mit Reflection von hinten durch die Brust ins Auge mogeln, aber erwarte dann keine Performance oder Lesbarkeit.

29.04.2008 - 10:02 Uhr

kenn ich, ich hab bei mir nicht einmal WndProc oder sowas, was das irgendwie beeinflussen haette koennen. Ab einer gewissenen Formulargroesse hat sich Designer einfach nicht mehr geladen, auch wenn nur Standardkomponenten verbaut waren und ich auf solche Sachen wie vererbte Formulare verzichtet hab.

28.04.2008 - 11:38 Uhr

Hm, Endlosschleife, sollte mal irgendwas mit dem Server nicht stimmen...

Irgendwie n Timeout mit reinzubringen in die Geschichte waere da schon von Vorteil...

28.04.2008 - 11:17 Uhr

Ich hab mal irgendwo (weiss leider nicht mehr wo) gelesen, dass das Zeichen aus Japan kommt. Japaner wuerden demzufolge beim Gesichtsausdruck mehr Wert auf die Augen legen als die Amis, die 🙂 erfunden haben (Ich glaube das wurde in Amiland erfunden). Dem Bericht nach gibt es sogar Studien, die das belegen (das Japaner Stimmungen mehr an den Augen erkennen). Mittlerweile wuerde sich naemlich der Trend zum ^^ andeuten, zumal das aufrecht steht. In Amerika ist aber wahrscheinlich wieder anders, zumal ^^ auf ner amerikanischen Tastatur (sitz selber grad vor einer) echt scheisse zu tippen ist. ^^

//edit: Bin fuendig geworden

24.04.2008 - 16:59 Uhr

Und was hat das jetzt mit DoEvents zu tun? Wo verwendest du das?

24.04.2008 - 16:23 Uhr

dann verlangt [Serializable], dass alle öffentlichen Member auch serialisierbar sein müssen

nicht alle, aber alle, die zu serialisieren sind. Man kann einzelne Feldrer ja per NonSerialized ausschliessen. Aber naja, mir schweben da als Ausnahmen Objekte vor, bei denen man sicher gehen will, dass sie ueber eine Factory erzeugt werden, um deren Enstehung kontrollieren zu koennen. Oder aber das eine Klasse auf externe Ressourcen zugreift und nur erstellt werden koennen soll, wenn diese Ressource auch verfuegbar ist. Wenn man so eine Klasse einfach per Serialisierung persistiert, dann ist das deserialisierte Objekt quasi nutzlos oder "illegal" entstanden. Um das zu verhindern denk ich mal...

Warum man aber nicht haette sagen koennen, dass alle Klassen serialisierbar sind und man das per Attribut einschraenken kann ist mir schleierhaft.

24.04.2008 - 15:31 Uhr

Es werden aber genau die gleichen Sprachkonstrukte zur Verfuegung gestellt, d.h., sogar dieselben. Die Methoden eines VB.NET Moduls werden auch ueber Klassen aufgerufen, aber das sind Klassen wie System.IO.Path, die man gar nicht instanzieren kann (das es seit FW 1.0 statische Methoden gibt ist mir klar, aber statische Klassen war m.E. eine Neuerung von C# 3.0). Der einzige Unterschied ist jetzt, das diese Module noch mit einem Attribut (StandardModule, was wie gesagt in der Microsoft.VisualBasic.dll enthalten ist) gekennzeichnet ist.

Das verursacht, dass der Compiler bei einer Methode, die ohne Klasse dasteht, automatisch alle Module in allen eingebundenen Namensraeumen durchsucht ob diese Methode da existiert. Wenn sie existiert und eindeutig ist, dann nimmt er sie, ansonsten muss der Modulename [und evtl Namensraum] noch angegeben werden. Das ist so aehnlich, als wuerde man statt System.IO.Path.Combine() nur noch Combine schreiben.

Generell gilt, dass sowohl C#, als auch VB.NET (im Gegensatz zu manchen anderen .NET-Sprachen) IL voll ausnutzen (Was mit unsafe Code gemacht wird ist mir ehrlich gesagt schleierhaft)

@FZelle: Eben drum, man bildet nichts nach, man macht nicht nur das gleiche, sondern sogar das selbe.

@JAck30lena: Ich kann es im Moment nicht ueberpruefen, aber es sollte das gleiche rauskommen wie eine statische Klasse in C# mit dem Attribut StandardModule aus dem Namensraum Microsoft.VisualBasic.CompilerServices oder so

24.04.2008 - 10:37 Uhr

Noch eine Ergaenzung und Bitte an Taladan: Aendere mal bitte den Thread-Titel in die Richtung Module aus VB.NET in C# (bzw. aus VB6 oder was halt passt). Ansonsten koennte das zu Verwirrungen fuehren, da der Begriff Modul im Sinne von .NET allgemein was ganz anderes ist (siehe ..NET-Glossar).

24.04.2008 - 10:27 Uhr

doch 🙂

VB.NET konnte das, was C# mit nichtinstanzierbaren Klassen erst seit C# 3.0 kann, schon immer. Ganz korrekt muesstest du die Klasse dann noch mit dem Attribut StandardModule kennzeichnen, um ein komplettes Aequivalent hinzukriegen.

Man sollte sich nicht fragen: "Wie habe ich das in VB genutzt", sondern viel eher "Wie kann ich mein Problem mit den von C# angebotenen Mitteln lösen"

Die von C# angebotenen Mittel sind aber fast 1:1 die von IL angebotenen Mittel, gleiches gilt fuer VB.NET, auch wenn die beiden Sprachen komplett anders aussehen sind sie letzten Endes von der Leistungsfaehigkeit und Semantik aequivalent. Die einzigen Unterschiede zwischen C# und VB.NET sind im wesentlichen:
*C# kann compilergenerierte Felder mit Attributen ausstatten *C# kann unsafe Code (ist aber kein grosser Vorteil, weil der eh nicht eingesetzt werden sollte) *VB.NET refenziert immer die VisualBasic.dll *VB.NET besitzt standardmaessig einige Operatoren (die in der VisualBasic.dll definiert sind), die man theoretisch auch mit C# benutzen koennte, was aber wiederum keiner wirklich macht *Visual Studio generiert bei VB.NET-Projekten noch allerhand teilweise recht nuetzlichen, teilweise aber auch Bullshit-Code

//edit: Aus dem Beispielcode wuerde ich herausnehmen, das du eigentlich VB.NET meinst (weil z.B. Verwendung DataSet). Wenn du aber wirklich VB meinst (bis einschliesslich VB6), dann sieht die Sache natuerlich ganz anders aus.

23.04.2008 - 16:12 Uhr

Es gibt hier im Forum irgendwo eine Hosting-Komponente, die du nur unwesentlich erweitern musst, um sie WF-fähig zu machen. Der WF-Designer ist im Grunde nichts anderes als ein leicht erweiterter WinForms-Designer.

//edit: Hab sie gefunden: click mich

18.04.2008 - 16:30 Uhr

Naja, der Bruteforce ist genauso wie der, den zommi vorgeschlagen hatte. jede Ziffer kann entweder mit 1, 10 oder 100 multipliziert werden, woraus sich bei einer n-stelligen Zahl sofort in erster Annaeherung 3^n Moeglichkeiten ergeben. Das sind bei einer 10-stelligen Zahl "nur" knapp 60.000. Und wenn man jetzt noch eine Schleife einbaut, die sagt, dass wenn eine Zahl mit 100 multipliziert wird, dann wird die naechste mit 10 und die uebernaechste mit 1 multipliziert, damit killst du auch nochmal ein erheblichen Teil der Faelle.

09.04.2008 - 16:14 Uhr

Oder übersehe ich da etwas?

Ja

Wird die Übergebene PLZ im Array nicht gefunden, so soll die Sonnenstundenzahl der nächstkleineren PLZ verwendet werden
-Ist die eingegebene PLZ kleiner als die kleinste im Array vorhandene PLZ wird -1 zurückgegeben.

09.04.2008 - 14:10 Uhr

Naja, im Prinzip entscheidet ja bei Vier gewinnt immer nur die Spalte, in die man die Steinchen legt. Wenn du das ganze objektorientiert runterbrechen willst, dann ist hier das MVC Pattern angesagt. Das heisst, die Buttons sind Views, das heisst, ihre Funktion besteht im wesentlichen darin, dem User zu sagen wo bereits welche Steine liegen. Ausserdem delegieren sie den Input, soll heissen, sie schreien laut auf dass jemand einen Stein in die entsprechende Spalte geschmissen hat. Damit darauf was passiert muessen sie natuerlich entweder gezielt jemanden anschreien (Methodenaufruf) oder in die Welt hinausschreien und irgendjemand hoert dann zu (Ereignisbasiert).

Der, der angeschriene wird oder zuhoert ist der Controller, d.h., der, der das ganze steuert. Der Controller (eigene Klasse) muss dann erkennen wer den Stein gelegt hat, ob die Spalte schon voll ist, ob sonst irgendjemand irgendwelche Einwaende hat, ob derjenige, der am Zug war, damit vielleicht gewonnen hat, ob er damit irgendwelche boesartigen Fallen stellen will, etc.

Falls es nichts einzuwenden gibt, dann aendert der Controller das Datenmodell (wiederum eigene Klasse), d.h., in der zweiten Reihe dritte Spalte ist jetzt ein neuer gelber Stein. Dazu muss muss das Datenmodell nun eine Methode bereitstellen, mit der man ihm sagen kann, dass in der zweiten Reihe dritte Spalte jetzt ein gelber Stein ist. Das Datenmodell muss dann alle relevanten Datenaenderungen, die dadurch entstanden sind (Hey, da ist ein gelber Stein zweite Reihe dritte Spalte!), na ch aussen geben. Das geht theoretisch auch wieder per Methodenaufruf oder Ereignisorientierung, aber praktisch muss das immer Ereignisorientiert abgefackelt werden, weil das Datenmodell den View, der darauf dann natuerlich wieder reagieren muss, nicht kennen darf. Die dazu passenden Grafiken findest du in jedem guten Tutorial ueber Objektorientierung.

09.04.2008 - 13:38 Uhr

Hm, die Variante das Ganze komplett ueber Buttons zu realisieren halte ich persoenlich fuer schlecht. Der Aufwand, den du hast, wenn du einfach ein UserControl nimmst, bei dem du OnPaint ueberschreibst und die Steine mit e.Graphics.DrawEllipse zeichnest, ist nicht wirklich gross. In welche Spalte der user clickt musst du nur die x koordinate durch ein siebtel der Breite des Controls teilen und abrunden. Insgesamt ist der Aufwand, da ueber Buttons zu gehen viel groesser, als wenn du dich ein kleines bisschen in gdi+ einarbeitest, und schoener ist die variante mit gdi+ allemal (auch oo-orientierter)

04.04.2008 - 14:21 Uhr

Warum auch nicht? Das Rad neu zu erfinden ist immerhin eine gute Methode, damit man versteht, wie das Rad denn nun aufgebaut ist oder auch wozu es eigentlich da ist. Das echte Rad ist sicher auch nicht nur einmal erfunden worden...

Und sich durch die Doku von solchen ja recht komplexen Microkernels zu lesen macht auch nicht wirklich mehr Spaß als sich selbst einen zu schreiben...

28.03.2008 - 15:51 Uhr

Ich kann diese Frage zwar nicht sicher beantworten, aber zumindest habe ich eine (zumindest fuer mich) logische Erklaerung dafuer: Ich denke intern ist ein Event ganz aenhlich einem Property nur eine Semantik um ein Feld, also letztendlich nur ein Wrapper um ein Feld. Im Gegensatz zu den Properties verbirgt C# aber standardmaessig das zugrundeliegende Feld (wie in C# 3.0 automated Properties), wobei man dieses Verhalten auch umstellen kann, was dann wieder den "normalen" Properties aehnelt. Nun laesst es der C#-Compiler aber natuerlich nicht zu, dass ein Feldattribut auf ein Event oder Property angewendet wird, nur weil der Programmierer das zugrundeliegende Feld nicht sieht. Mit dem Modifikator field gibst du dann aber dem Compiler die Anweisung, dass das Attribut auf das generierte Feld und nicht auf das Event angewendet werden soll, aehnlich dem Assembly-Operator, der ja im Prinzip auch nichts anderes macht, als dem Compiler zu sagen, dass das Attribut auf die Assembly angewendet werden soll.

Bin mal gespannt, ob die Bemerkung, dass VB.NET das nicht kann tatsaechlich stimmt, ansonsten waer das mal ein handfester Grund (mehr) fuer C# im Vergleich zu VB.NET, aber im Moment ist der Laptop im ... (Gericom und Luefter kaputt, das wird so schnell wohl nix mehr)

28.03.2008 - 12:58 Uhr

Wenn du aber nur prüfst mit IsGeneric Type, dann kriegst bei Sachren wie FooCollection:IList<Foo> Probleme. Der einzige Ausweg aus dem ganzen Debakel lautet Durchiterieren durch die Interfacemap und die Interfaces dann pruefen, ob die ICollection oder IList von irgendwas sind. Dann kannst du mit type.GetGenericParameters den Typ der Auflistung bestimmen...

25.03.2008 - 08:25 Uhr

...wobei es da ja noch teilweise Unstimmigkeiten gibt 🙂

20.03.2008 - 19:51 Uhr

Das einzige, was du "falsch" machst, ist an der Stelle (würde ich vermuten), dass du eine Express Version benutzt, wo es bedeutend weniger vorinstallierte Itemtemplates gibt. Die Funktionalität kriegst du aber auch hin, in dem du einfach selbst eine Klasse neu erstellst und die entsprechend ableitest.

20.03.2008 - 19:14 Uhr

Hallo Team,

eine Frage, die ich mir in letzter Zeit immer öfter stelle: Warum steht der deutsche MSDN Webcast-Finder nicht mit in den Resourcen? Im Gegensatz zu dem amerikanischen Pendant ist der a gut gestaltet und b übersichtlich. Und bietet ungeheure Mengen an Webcasts (der entsprechende Ordner bei mir ist 13,6Gb groß 🙂). Sicherlich ist ein guter Teil davon "veraltet", aber wenn zum Beispiel jemand eine Einführung in WCF/WF haben will, dann sind 11h MVP für verteilte Systeme (Christian Weyer) eine nicht von der Hand zu weisende wertvolle Informationssquelle.

20.03.2008 - 18:47 Uhr

Und auch immer eine gute Quelle:

MSDN Webcast-Finder

gibt da ne ganze Serie von Berndt Marquardt (glaub ich) zu Windows Forms.

20.03.2008 - 16:07 Uhr

bei Artministrator.NET kann ich mir vorstellen, dass die Leute von Artministrator dann auf die Barrikaden gehen weil es halt doch irgendwie so klingt als waere es das gleiche, nur mit .NET (besser) realisiert.

20.03.2008 - 12:15 Uhr

Ich hab die Performance von DynamicMethod ehrlich gesagt noch nie getestet, kann mir aber nicht wirklich vorstellen, dass der Delegate-Zugriff soo viel langsamer ist als der Zugriff über Interface. Momentan kann ich's auch nicht überprüfen (Lüfter vom Laptop kaputt X()

19.03.2008 - 11:21 Uhr

Vielleicht wird es irgendwann einmal ein Format geben, das .NET benutzt.

wohl eher nicht. Zumindest nicht mit dem vollen Umfang, die Silverlight CLR koennt ich mir schon eher fuer dvd player vorstellen. Mit dem .NET Framework wuerdest du ja Linux und so alle ausschliessen.

Ich kann aber zum DVD Menue erstellen die Shareware DVDLab empfehlen

18.03.2008 - 18:24 Uhr

Blöde Frage: Warum benutzt du nicht einfach System.Reflection.Emit.DynamicMethod? So hab ich's bei meinen Cheatmeisen gemacht (AntMe), die dann in der Lage waren sich selbst zu heilen und die Käfer für tot zu erklären 🙂 :evil:

Aber Spaß beiseite, mit DynamicMethod geht das ganze viel einfacher, da du m.E. nach einfach an den bestehenden Typen zur Laufzeit quasi eine Methode dranhaengst. Der Zugriff erfolgt dann per Delegate, aber den kann man ja kapseln.

Und ein bisschen (konstruktive) Kritik hab ich auch noch übrig 🙂 Du rufst Properties immer ueber callvirt auf, das ist aber nur bei virtuellen Properties notwendig.

18.03.2008 - 12:24 Uhr

in terms of surface area for developers

die tatsächlich komplette Statistik wuerde mich auch mal interessieren, weil ein guter Teil ja auch nicht für den Entwickler zugänglich unter der Oberfläche arbeitet (Man schaue sich mal mit dem Reflector den Namensraum System.Windows.Forms.PropertyGridInternal an), da schlummern glaub auch noch mal ein paar Tausend Klassen, die bei der Statistik dem Zitat nach nicht erfasst sind.

13.03.2008 - 10:13 Uhr

es geht nicht um das wie ich es verkaufen will sondern wieviel ich es damit verdiennen will, aber das ist Marktwirtschaft, deswegen gehen viele Pleite weil sie es nicht umdenken wollen. gehört aber hier nicht ins Programmierforum.

tut mir leid, aber das ist m.E. echt komplett am Thema vorbei. Es geht ja gerade darum, dass dieses Forum eben nicht marktwirtschaftlich ist, ansonsten waere es nicht kostenlos. Und wenn du nun an der Wuerstchenbude stehst, mit dem Verkauf deiner Wuerstchen (zum Selbstkostenpreis) keinen einzigen cent verdienst, dann gehen dir die Leute, die da staendig draengeln und um den Preis feilschen irgendwann auf die Nerven. Und ich finde es an der Stelle sehr ehrenhaft, dass die Leute im Team dann eben nicht das Wuerstchenverkaufen aufgeben, sondern eben trotzdem weitermachen, auch mit der m.E. sehr verstaendlichen Bitte, dass in Zukunft weniger gedraengelt werden soll.

12.03.2008 - 14:39 Uhr

Das ist das "Auto"-Fenster beim Debuggen, sollte normalerweise unter Debug|Auto zu finden sein...

//edit: Bloedsinn, es ist wahrscheinlich das "Lokal"-Fenster, aber "Auto" ist auch zu empfehlen (zeigt die, die an der Stelle auch tatsaechlich verwendet wurden und sich im Stack befinden)

11.03.2008 - 19:16 Uhr

Bei 8000 Zeilen wuerde es sich glaub ich lohnen statt mit SetValue mithilfe einer dynamischen Zugriffsmethode auf die Eigenschaft zuzugreifen. Das koenntest du dann machen mit DynamicMethod. Musst aber aufpassen, dass du zwischen virtuellen und "tatsaechlichen" unterscheidest

10.03.2008 - 16:08 Uhr

http://www.microsoft.com/germany/msdn/webcasts/finder/default.mspx

Ich finde das ist einfach mal die beste Fundgrube fuer .NET Tutorials. Wenn man alle durchhat, dann hat nman glaub ich schon wenigstens so ein bisschen ahnung von allem, egal ob wf, wcf, wpf, software architektur, verteilte systeme, sicherheit, asp.net und/oder ajax

07.03.2008 - 18:44 Uhr

Außerdem ändere mal die Zeile

for (int i = 0; i < c.Length; i++)

in

for (int i = 0; i < 3; i+=2)

ansonsten hagelt es bei jedem Aufruf mit einer gültigen Farbe eine IndexOutOfRangeException!

07.03.2008 - 18:36 Uhr

Hi ChMaster,

zu dieser Komponente mal ein paar Anregungspunkte:

  1. Wenn deine Komponente einen String übergeben bekommt, der nicht in diesem Format ist, dann gibt sie immer Weiß zurück. Besser wäre an der Stelle eine Fehlermeldung, dass das Format nicht stimmt. Wenn du weiterhin weiß zurückgeben willst, dann musst du das auch dokumentieren. Besser würde ich, wenn du keinen Fehler zurückgeben willst, an der Stelle aber Color.Empty finden.

  2. Was macht dein Code mit der Farbe #XXXXXX? Einen Fehler ausgeben!

  3. Konvertierungen von Zahlen in Zeichenketten geht einfacher mit int.ToString oder Convert.ToString(int), auf jeden Fall nicht "" + int

  4. Du kannst der ToString Methode auch Parameter mitgeben, "x" gibt die entsprechende Zahl als hexadezimale Zeichenkette zurück.

  5. Aehnlich wie 4. gibt es auch einen Parameter um direkt hexadezimale Zeichenketten als Zahlen einzulesen (man kann int.Parse auch entsprechende Parameter mitgeben, wlche das sind kann ich im Moment nicht sagen, hab gerade kein VS vor mir)

Außerdem wäre es schön, wenn der Code auch mit Farbworten (die in HTML ja auch erlaubt sind, z.b. blue, red, etc.) umgehen könnte.

07.03.2008 - 16:45 Uhr

Ich schätze mal, damit wollte MS dazu beisteuern Bugs zu dezimieren. Anders kann ich mir das nicht erklaeren. Ueberflüssige Initialisierungen weg zu optimieren ist ja nun kein Problem, aber mit was die Variable initialisiert wurde kann man nicht erraten. Bei Feldern würd ich vermuten da wird davon ausgegangen, dass die zumindest in manchen (in der Praxis wahrscheinlich ja sogar in den meisten Fällen) per Properties nach außen getragen werden - und daher keiner expliziten Initialisierung bedürfen, weil die eh überschrieben werden würde.

Interessanterweise macht der VB-Kompiler das nur bei Referenztypen, offenbar hat MS bei VBlern eine etwas andere Programmierkultur vermutet, hat aber wenigstens NullReferenceExceptions verhindern wollen... 🙂

//edit: Bugs dezimieren, indem Variableninitialisierungen nicht vergessen werden

07.03.2008 - 15:47 Uhr

wenn es dir aber nur um die Darstellung im Intellisense oder im PropertyGrid geht würde sonst ein darueber gelegtes Private Property (new Schluesselwort in C#) auch funktionieren. Sei dir aber im Klaren, dass das gegen die objektorientierte Kapselung verstößt, demzufolge nur im Notfall wenn gar nichts anderes geht verwendet werden sollte.

02.03.2008 - 22:40 Uhr

jein, VS bietet dir diese Option nicht, aber du kannst natürlich eigene Projekttemplates á la Konsolenanwendung mit .NET 2.0 machen...

29.02.2008 - 16:50 Uhr

also der Fehler kommt sofort nach dem Start der Taskleiste und die Systemwerte sind Humbug (100% Auslastung und 9999Mb von 9999Mb belegt). Offen sind Remote Desktop Connection, Outlook, IE, Firefox, WMP. System ist Englisch

27.02.2008 - 10:42 Uhr

hm, nachdem ich nun mal in den Genuss eines Dualscreen Systems gekommen bin hab ich das Programm (Version vom 22.2) auch mal ausprobiert (allerdings unter Windows XP), aber kam folgender Fehler 🙁

System.ArgumentOutOfRangeException: Length cannot be less than zero.
Parameter name: length
at System.String.InternalSubStringWithChecks(Int32 startIndex, Int32 length, Boolean fAlwaysCopy)
at System.String.Substring(Int32 startIndex, Int32 length)
at Taskleiste.TaskleisteMain.timerZeit_Tick(Object sender, EventArgs e)
at System.Windows.Forms.Timer.OnTick(EventArgs e)
at System.Windows.Forms.Timer.TimerNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

//edit: achso, ganz vergessen, hab ja auch keine admin Rechte 🙁

26.02.2008 - 00:16 Uhr

also m.E. nach müsste es #######**.**00 sein, da .NET die englischen Formatierungszeichen benutzt 🙂

Aber du müsstest theoretisch auch explizit ein + vor die positiven Beträge bekommen können, ist halt nur etwas komplexer: "+######.00;-######.00;0.00" glaub ich (nicht nachgeguckt, aber lieber vorher Reihenfolge nochmal nachschlagen, aber ich glaube es war positiv;negativ;null)