Laden...
Avatar #avatar-3073.png
DavidT myCSharp.de - Member
Student Winterberg Dabei seit 30.05.2007 998 Beiträge
Benutzerbeschreibung

Forenbeiträge von DavidT Ingesamt 998 Beiträge

01.09.2008 - 20:00 Uhr

Oken, vielen Dank!

Gruß David

01.09.2008 - 18:57 Uhr

Denke die Neuheiten habe ich schon drauf, allerdings hat mich interessiert wie man mit den neuen Dingen die Entwurfsmuster besser implementieren kann g

Davon mal ab, darf man mal fragen wozu Ihr das Decorator-Pattern so einsetzt? Nützlich klingt es für mich alle male, aber wirklich Verwendung sehe ich nicht (so in vergangenen Projekten).

Gruß David

01.09.2008 - 18:48 Uhr

Echt ein geniales Buch und was für Java gilt kann grösstenteils 1:1 in C# übernommen werden (Abgesehen von Eigenschaften und Observer)

Ja, richtig. Leider hatte ich das Buch nur aus der Bib geliehen und wollte jetzt für 10€ weniger lieber ein Buch wo auch noch alles mit C# 3.0 erklärt wird, naja evtl. wirds ja noch besser 🙂

Gruß David

01.09.2008 - 18:37 Uhr

Ähh nein, das Buch meine ich nicht, sondern "C# 3.0 Entwurfsmuster" Das Kopf bis Fuß buch hatte ich auch mal (Es ist einfach nur genial, das beste Stück Programmierliteratur das ich je gelesen habe), aber da ich ein Buch zu C# 3.0 UND Entwurfsmustern haben wollte, kam mir das genau zur rechten Zeit 🙂

generell zu dem Buch: Nicht empfehlenswert: C# 3.0 Entwurfsmuster

Mist... Wenigstens hat es dahin gehend etwas gebracht, das ich bei den abgeleiteten Decoratoren von Form ebenfalls arge Zweifel hatte ob das Sinnvoll ist und mir auch sonst die dort angesprochenen Themen aufgefallen sind.

Gruß David

01.09.2008 - 18:28 Uhr

Oh, entschuldigung, du hast recht.

Auf die Weise behelfe ich mir immer bei der Java 2D API, da geht das.

Gruß David

01.09.2008 - 18:20 Uhr

Hallo Peter, herbivore

nein, es geht in dem Absatz tatsächlich darum das wenn man Decorator nicht von Component ableiten kann (weil sie sealed ist und nicht mehr verändert werden kann) soll man die Version mit dem Interface nehmen (Component und Decorator implementieren IComponent) aber ohne den Quellcode zu ändern kann ich eine Klasse kein Interface implementieren lassen, daher stocke ich an der stelle.

Edit: Danke für den Link peter, verstanden habe ich es schon, nur mir war grad schleierhaft wie man das Decorator-Pattern in einer Klasse einsetzen soll, die Sealed ist und nicht mehr verändert werden kann. Mit einem Wrapper könnte ich mir das noch vorstellen, aber nicht wie es da im Buch beschrieben ist.

Gruß David

01.09.2008 - 18:10 Uhr

Hmm wenn das so ist zeichne lieber eine Linie der Länge 1, klingt zwar haarspalterisch, aber wenn du sehr sehr viele Pixel setzt, spart dir das 3/4 der Zeit ein.

Gruß David

01.09.2008 - 18:09 Uhr

Hallo,

ich habe mal ein problem der etwas anderen Art. Da ich sowohl mal ein aktuelles Buch zu C# als auch zu Entwurfsmustern haben wollte, habe ich mit "C# 3.0 Entwurfsmuster" von O'reilly zugelegt.

Dort wird beim Decorator-Pattern beschrieben, das man die Variante mit einem Interface der Variante mit der direkten Vererbung des Decorators vorziehen soll, wenn man die Basisklasse nicht mehr verändern kann. Aber das Decorator Pattern mit Interfaces setzt doch voraus, das die Component-Klasse ein Interface implementiert, aber das soll ich doch gar nicht mehr können....

"... Wenn das nicht der Fall ist und wir die Klasse Component auch nicht ändern können, ist ein Interface notwenig...."

Ich bin verwirrt, kann man eine Klasse nachträglich ein Interface implementieren lassen? Bitte stempelt mich jetzt nicht als Idioten ab, aber wie sonst soll ich den Absatz dort deuten?

Gruß David

01.09.2008 - 17:37 Uhr

SetPixel() sollte deine Wahl sein.

Gruß David

01.09.2008 - 15:53 Uhr

Ein Control was ein Bild von einer IP-Kamera darstellt, in das gezoomt werden kann und in dem man navigieren kann, also über Mausbewegungen.

Gruß David

01.09.2008 - 15:23 Uhr

Aaach sooo ist das, danke schön. Wie wird sowas denn normal gelöst? Rufe ich dann am Ende von jeder OnPaint-Methode die Paint von dem transparenten Panel auf von dem du geschrieben hast?

Gruß David

01.09.2008 - 14:47 Uhr

Ja nein, das war mir schon klar, mit "im UserControl" meinte ich die Klasse. Meiner Meinung nach sollte das OnPaint (ausserhalb der Klasse) doch auf alles andere "draufzeichenen" oder nicht?

Gruß David

01.09.2008 - 13:44 Uhr

Ja wenn du doch eh schon Spalten-Objekte hast, nutz doch einfach lock auf die jeweilige Spalten-Objekte?!?!

Versteh das Problem nicht ganz, du hast die Lösung doch schon fast selbst beschrieben 🙂

Gruß David

01.09.2008 - 13:40 Uhr

Hier das Projekt, evtl. findet ihr es ja heraus. Es scheint als müßte man nochmal OnPaint aufrufen nachdem man etwas in dem Control gezeichnet hat, aber wirklich durchblicken tu ich das nicht.

Gruß David

01.09.2008 - 13:32 Uhr

Entschuldigt wenn ich nochmal zum Verständins frage, aber ich bin grad etwas verwirrt, wenn ich Threads aus einem Threadpool nutze, werden die Threads automatisch auf die vorhandenen Cores verteilt?

Gruß David

01.09.2008 - 13:29 Uhr

Oh, ehrlich? Interessant zu wissen.

Gruß David

01.09.2008 - 11:36 Uhr

Also könnte ich nicht explizit sagen das Thread X auf Core 1 und Thread Y auf Core 2 starten soll?!?

Wenn ich ein Programm mit nur einem Thread erzeuge und dort eine Endlosschleife erzeuge, geht die CPU-Last bis maximal 50% hoch, müssten es nach deiner Beschreibung dann nicht 100% sein?

Danke für den Tip mit der dot net pro, hoffe sowas gibt hier beim Zeitschriftenhändler (Habe nur das dot net magazin aboniert).

Gruß David

01.09.2008 - 11:16 Uhr

Also die Idee mit der generischen List finde ich persönlich nicht so gut wie die mit der Queue, weil die Queue nur mal für genau soetwas gedacht ist g

Mal eine Frage meinerseits, wenn ich 2 Threads starte, werden die auch automatisch auf meiner beiden Prozessoren verteilt? Geschieht das explizit oder implizit?

Gruß David

01.09.2008 - 11:10 Uhr

Es gibt eine SQL-Funktion IsNULL die für solche Fälle gedacht ist, google mal danach.

Gruß David

01.09.2008 - 11:08 Uhr

Du mußt ja im Prinzip nur eine Logik zum einloggen und eune Logik zum auslesen der Nachrichten machen. Das Einloggen ist halt standard und falls die Portale für das abrufen der Nachrichten keine XML-Schnittstelle bieten, mußt du mit einem XML-Document halt die Seite auslesen und dir die einzelnen Informationen raussuchen.

Gruß David

31.08.2008 - 23:44 Uhr

Ich hab auf den XPDays mal einen Vortag zu einfachheit gehört, da wäre das hier ein Musterbeispiel für g

Gruß David

31.08.2008 - 22:05 Uhr

Öhh, ich habe das Panel bereits abgeleitet (ein BufferedPanel zum zeichnen), aber auf die Idee bin ich ehrlich gesagt noch nicht gekommen g Probiere das direkt morgen mal aus.

Die Version mit dem neusetzen der Values ist nicht so vorteilhaft, da erst der Wert gesetzt wird vom Event und dann von mir zurück gesetzt wird, dann flackert das Panel so hässlich g

Euch 3en schon mal nen riesen Dank für die Mühe, melde morgen mal obs geklappt hat 🙂

Gruß David

31.08.2008 - 21:54 Uhr

Ist der Server-Dienst überhaupt gestartet? g

Gruß David

31.08.2008 - 21:44 Uhr

con.ConnectionString = "Data Source=(local);" + 
                       "Initial Catalog=RealTimeData;" + 
                       "Integrated Security=sspi";

Versuch es so.

Gruß David

31.08.2008 - 21:29 Uhr

Hmm, hast du auch einen praktischen Anwendungsfall für den vergleich? Argumente wie das cachen von Daten sind ja fast irrelevant, wenn man alle jubeljahre mal den Server abfragt 🙂

Also ein Grund der mir spontant einfällt ist (ohne von den ASP leuten nun einen auf den Deckel zu bekommen) bei Weblösungen bist du von den Möglichkeiten beschränkter als bei einer Clientlösung. (Bin da nicht so der Experte, kenne das nur noch aus PHP-Zeiten)

Gruß David

31.08.2008 - 21:27 Uhr

Na nach dem Connecten links im Objektbrower das Wurzelelement.

Gruß David

31.08.2008 - 21:25 Uhr

Welche Exception wirft er genau?

Gruß David

31.08.2008 - 21:15 Uhr

Hallo JuyJuka,

es ist die Absicht von niemandem jemanden hier zu beleidigen oder gar als minderwertig darzustellen. Was er damit meint, ist das man sich C# "nebenbei" beibringen kann, ohne großartig hilfe. Ich z.B. habe mir C# neben dem Studium selbst beigebracht, weil die Hochschulen leider eher auf java fixiert sind, als auf .NET. Trotzdem kann ich behaupten das ich ordentlich Software entwickel, auch wenn es hier und da mal Probleme gibt. Hätte ich mir aber Stochastik, Numerik, Theoretische Informatik oder Compilerbau selbst beibringen wollen, wäre ich mit sicherheit noch heute dabei, da es ohne universitäre Hilfe fast unmöglich ist (zumindest für mich).

Er wollte damit weder Studierte gut machen noch nicht Studierte schlecht, aber Hochschulabsolventen arbeiten später zu 99% in Berufsfeldern in denen man mit einer Ausbildung oder etwas vergleichbarem nichts zu suchen hätte, das ist auf keinem Fall abwertend gemeint, diese leute haben eben halt eine akademische Ausbildung.

Gruß David

31.08.2008 - 21:05 Uhr

wo kann ich sehen, wie mein sqlserver heisst - vielleicht liegt es ja daran??

Normal ist es (glaube ich) der Computername, schau aber am besten per Management Studio kurz nach.

Gruß David

31.08.2008 - 20:47 Uhr

Oh, ich dachte die Mühe da rein zu gucken macht sich eh keiner, nun bin ich daheim, reiche es morgen aber direkt nach 🙂

Danke schon mal für eure Hilfe.

Gruß David

31.08.2008 - 20:16 Uhr

@Virussoul

Das mit der Berufspraxis war darauf bezogen, das ein Bachelor bereits ca. 3 Jahre Berufserfahrung hat, wenn ein Dipl.-Ing. mit dem Studium fertig ist.

Gruß David

31.08.2008 - 19:36 Uhr

Ok, nun bin ich total verwirrt, ich hoffe jemand von euch kann mir helfen und mir dieses (in meinen Augen mysteriöse) Verhalten mal erklären:

Ich habe ein UserControl gebaut (ein einfaches um den "FEhler" nachzustellen), in dem sich ein Panel befindet. Auf dieses Panel (Siehe schwarzes Recheck unten) zeichne ich ein rotes Rechteck (Siehe Bild unten), soweit so gut!.

Nun ziehe ich dieses UserControl auf eine Form und behandle dort das Paint-Ereignis des UserControls und zeichne darauf ein grünes Rechteck!

Jetzt meine Frage: Warum zum Geier ist das Grüne Rechteck hinter dem Panel bzw. dem Label? Wenn ich doch das UserControl-Paint-Event abboniere, möchte ich doch AUF das UserControl zeichnen und nicht auf die unterste Ebene, oer was mache ich verkerht??!?

Versteht ihr das?

@Jack In meinem eigentlichen Projekt schon, aber in diesem Testprojekt jetzt nicht (zumindest nicht explizit)

Gruß David

31.08.2008 - 18:34 Uhr

Hallo,

ich habe ein userControl gebastelt in dem u.a. gezeichnet wird. Nun möchte ich, nach dem ich das Control auf eine Form gezogen habe, ebenfalls AUF dem Control mit OnPaint etwas zeichnen. Nur leider passiert nichts, also er durchläuft zwar den Code (und auf anderen Controls macht er auch was er soll) aber auf dem Control scheint das zeichnen nicht zu funktionieren, habt ihr eine Ahnung woran das liegen könnte?

Gruß David

31.08.2008 - 18:20 Uhr

Dann muß ich aber auch die Logik zum einblenden, ausblenden und dem entsprechenden neuberechnen des Zeichenbereiches implementieren, das würde ich nur sehr ungerne machen.

Aber danke erstmal für eure Anregungen 🙂

Gruß David

31.08.2008 - 18:18 Uhr

Stimme ich dir voll und ganz zu, allerdings die Aussage der TU9 sollte auch wirklich nur auf Uni's übertragen werden, für FH's ist der Bachelor schon näher am Ingenieur als auf der Uni, allerdings sollte man auch beachten das 30% des Stoffes in Universitäten für spätere Forschungsarbeiten relevant sind und dir in der praxis nichts bringen wird (Wer benötigt schon Cantors Trick um zu zeigen das es mehr Potenzmengenelemente als natürliche Zahlen gibt 😉 ), daher halte ich einen FH Bachelor schon für ausreichend. Aber gut das ist das ewige Uni vs FH-Thema, jeder hat halt seine Vorteile und damit ist gut 🙂

Gruß David

31.08.2008 - 17:04 Uhr

Klaro, also ein Scanner zerlegt einen String (ein Quellcode ist ja ein sehr langer string) in bestimmte token.

Aus welchem Codesegmet was für ein Token wird, wird durch eine Tokenlist angegeben (Meist als regulärer Ausdruck), z.B.


datatype = "float","int","double";
identifier = "[_a-zA-z][_0-9a-zA-Z]*";
operator = +, -, *;
assign = "=";
semi = ";";
num = "[0-9]*";

Wenn nun z.B. folgender Quelltext kommt:


int zahl = 12;

zerlegt der Scanner das ganze so:


datatype identifier assign num semi

dann wird diese Tokenliste an einen Parser geschickt, in dem ist mit sogn. Grammatiken festgelegt, wie die Sprache C# aufgebaut ist. Der könnte nun z.B. prüfen, dass die Tokenliste oben gültig ist oder nicht. Wenn nicht gäbe es einen "parse error", kennst du ja sicherlich aus VS.

Quellcode für den Scanner und Parser kannst du dir mit den angesprochenen Scanner- & Parsergeneratoren ganz leicht generieren lassen und die Scannerlist und Grammatik für C# gibt es ebenfalls. Nun mußt du einfach in der Scannerliste den Bereich für datatype (in dem beispiel oben) so anpassen, das wenn man z.B. IntPtr schreibt, das ganze von deinem Scanner nicht erkannt wird! Dann wird ein scannerfehler ausgelöst und wird nicht kompiliert.

Hoffe das ist nun etwas einleuchtender.

Gruß David

31.08.2008 - 16:51 Uhr

Hehe, das habe ich gesehen, ich möchte das die Vertikale Bildlaufleiste das Event nicht mehr verarbeitet, also muß ich dazu wissen welches die EventMethode des MouseWheel-Events ist, die das Ereignis in der Scrollbar verarbeitet. Wenn ich das wüsste, könnte ich es so machen wie du es vorschlägst. Allerdings weiß ich nicht wie ich an den Namen der Methode komme.

Gruß David

31.08.2008 - 16:42 Uhr

Nein, also ich hol mal etwas aus:

Ich habe ein Panel auf das ich einen Bildausschnitt zeichne. Damit man auch scrollen kanns teht AutoScroll auf true und über AutoScrollminsize regel ich das "virtuelle"-scrolling (ich bestimmte damit ja nur welchen bereich ich zeichne". Nun möchte ich das MouseWheel-Event verarbeiten und dort etwas machen, was auch funktioniert. Allerdings jedes mal wenn ich das Mausrad über dem Panel betätige, wird die Vertikale-Scrollbar mitgescrollt und das möchte ich nicht, die soll auf das Ereignis gar nicht mehr reagieren.

Gruß David

31.08.2008 - 16:32 Uhr

Jaja, das ist mir klar. Nur wie heißt denn die Methode die für das Scrollen der HorizontalScrollBar zuständig ist?

Gruß David

31.08.2008 - 16:24 Uhr

Wie sollte ich das machen? Es handelt sich dabei um ein Panel mit AutoScroll=true, wie "lösche" ich das Event denn dann?

Gruß David

31.08.2008 - 16:17 Uhr

Hallo,

ich habe in Panel in dem gescrollt wird. Gibt es eine Möglichkeit das scrollen per MouseWheel zu unterbinden?

Grund: Ich möchte mit dem MouseWheel etwas anderes steuern.

Gruß David

31.08.2008 - 16:10 Uhr

Es gibt auf einigen Seiten sowohl die Grammatik von C# als auch die Scannerliste und soweit ich weiß können diese in einem flex-ähnlichen Programm als Template eingesetzt werden (Ich habe mal einen Artikel auf codeproject dazu gelesen). Der war frei verfügbar und konnte in eigene Projekte integriert werden. Wenn du jetzt aus der Scannerliste die Typen die du nicht möchtest einfach löscht, müßtest du beim Scannen ja einen Fehler bekommen und hättest diese damit verbannt.

Edit: Grade nochmal geschaut, such einfach mal bei Codeproject nach "parser" und "scanner"

Gruß David

31.08.2008 - 15:53 Uhr

Ich könnte nun einen Screenshot anhängen, der zeigt das

Dass man besser Action<T> als einen eigenen Delegat-Typen verwendet, hat ja nichts mit der verwendeten Schreibweise zu tun.

eben noch nicht dort stand und nun plötzlich ohne das ein "Dieser Beitrag wurde zuletzt editiert..." da steht, aber ehrlich gesagt ist mir das zu blöd!

Gruß David

31.08.2008 - 15:44 Uhr

Herbivore ich denke wenn man jemandem einen gutgemeinten Tip zum Programmierstil geben möchte, sollte das erlaubt sein und sollte auch von dir respektiert werden! Wir sind hier eine Community die mit sicherheit nichts aus böser absicht macht und nur versucht sich gegenseitig nach vorne zu bringen. Das allerletzte was meine ABsicht ist, ist es mich über den Programmierstil des Threadstartes zu beschweren, es war einfach nur ein gut gemeinter Tip meinerseits, nachdem ich letztens entdeckt habe was es im Framework doch für kompfortable Möglichkeiten gibt, dieses "Problem" zu lösen!

Gruß David

31.08.2008 - 15:35 Uhr

und welches Steuerelement benutze ich am besten um text anzeigen zu lassen?

am besten mit einer RichTextBox. Asonsten kann ich winSharp93 nur zustimmen, ohne dir die erforderlichen Grundlage per openbook angeeignet zu haben, solltest du erst gar nicht loslegen.

Gruß David

31.08.2008 - 15:31 Uhr

Weil du mit deiner Schreibweise immer für jede Methode die du wegen einem anderen Thread invoken mußt einen neuen Delegaten deklarieren mußt, quasi für jede Methodensignatur einen. So brauchst du keine Delegaten und hast alles übersichtlich in einer Methode.

Es macht ja z.B. keinen Sinn einen Delegaten für nur einen Parameter zu deklarieren, wenn das Framework für solche Fälle bereits etwas generisches bereitstellt. Golo hat dazu was nettes verfasst

Gruß David

31.08.2008 - 15:25 Uhr

public partial class Form1 : Form
    {
        private bool _btnClicked;
        private byte _btnValue;
        
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            _btnClicked = !_btnClicked;
            if (_btnClicked)
            {
                button1.BackColor = Color.Green;
                _btnValue = 100;
            }
            else
            {
                button1.BackColor = Color.Red;
                _btnValue = 0;
            }
        }
    }

Das sollte gehen.

Gruß David

31.08.2008 - 15:18 Uhr

Oh, sorry!

Gruß David

31.08.2008 - 15:14 Uhr

Hallo Qwald,

Das stimmt ja auch, Bachelor Studenten sind normalerweise deutlich geringer qualifiziert als Diplomer. Hängt einfach mit den 6 Semester Studienzeit bei Bachelor und 9 (meistens 12-14) Semestern bei Diplomer zusammen.
Da kann man gar nicht gleich qualifiziert sein.

Bei mir waren die vergleiche auf ein FH Studium bezogen, dort betrug die Regelstudienzeit für Diplomer 8 Semester und für Bachelor nun 6 Semester, von daher war der unterschied nicht soooo groß. Davon gibt es im Hauptstudium meistens mehrere Vertiefungsrichtungen, während es beim Bachelor nur eine gibt. Wenn der Bachelor später in genau der einen Richtung arbeitet halte ich ihn nicht für wesentlich unterqualifizierter als einen Diplomer, wobei der Bachelor zum selben Zeitpunhkt bereits meist 3 Jahre mehr Berufserfahrung hat, was man auch nicht vernachlässigen sollte!

Das ist eine Aussage, die mir ehrlich gesagt absolut neu ist.

Das war darauf bezogen das zu Begin (das Bachelor/Master-Konzept ist ja noch relativ neu) in der Industrie sehr wenig Kenntnis vorhanden war, was ein Bachelor denn nun genau im Vergleich zu einem Dipl.-Ing. ist und sie wurden oftmals gleich gestellt. Mittlerweile ist aber auch dort bekannt wie viel weniger qualifiziert die Absolventen sind. So meinte ich das.

Genrell denke ich siehst du die Lage der Bachelor etwas überspitzt, es gibt viele Berufe die früher mit einem Dipl.-Ing. besetzt wurden, welche dafür jedoch überqualifiziert waren (Dazu zählen in meinem Augen u.a. Softwareentwickler). Heute erfüllen die Bachelor genau diese Anforderungen, bekommen jedoch weniger, was ja auch gerecht ist wenn man bedenkt das ein Master nochmal zusätzliche 4 Semester (mindestens) ausmachen.

Ansonsten hast du vollkommen recht, besonders im Hinblick auf bessere Aufstiegsmöglichkeiten sollte man eine Bachelor/Master-"Karriere" an einer Uni oder FH anstreben.

Gruß David

31.08.2008 - 14:52 Uhr

Normal ist es ja so das Lüfter in einem Bereich von 0V bis 5V (glaube ich) operieren, also wäre ein erster Versuch, dass du eine serielle Schnittstelle nimmst und damit einen A/D-Wandler ansteuerst an dem (per Transistor) der Lüfter hängt. Da die Daten ja seriell kommen muß du wahrscheinlich noch ein Schieberegister zwischen Serielle-Schnittstelle und A/D-Wandler hängen. Wenn du mehrere Lüfter steuern willst könntest du das recht elegant mit einem Multiplexer regeln.

Also von der Theorie her ist es ganz einfach 😁

Gruß David