Laden...
S
s.cript0r myCSharp.de - Member
Fachinformatiker - Anwendungsentwicklung Nackenheim bei Mainz Dabei seit 12.01.2006 55 Beiträge
Benutzerbeschreibung

Forenbeiträge von s.cript0r Ingesamt 55 Beiträge

16.01.2008 - 15:15 Uhr

Habe Dank dir auch das hier gefunden, was deine Aussage bestätigt:

After the controls have been positioned, at any time, when you access a control, if you want to know whether that control is the most top object, you can call its GetTopLevel() method. Its syntax is:

proteced bool GetTopLevel();

Das Problem: ich kann auf meine Controls diese Methode nicht ausführen. Ich kann sie nur innerhalb des eigentlichen Controls aufrufen (bool b = GetTopLevel()). Dazu habe ich dann eine Methode gebastelt

public bool getZ()
{
     bool b = GetTopLevel();
     return b;
}

Liefert jedoch false, auch wenn sie eigetnlich TopLevel ist.

16.01.2008 - 14:35 Uhr

BringToFront() und den Gegensatz dazu ist mir ja bekannt und leider nicht für meinen Zweck verwendbar.

Ich habe 4 UserControls und 4 Buttons. Jeder Button ist einem UserControl zugeordnet und macht <BringToFront()> bei Klick (sollte er zum ersten Mal geklickt sein, wird ein neues Objekt erstellt). Die Buttons sind auf einer Form - auf der gleichen werden die UserControls gezeichnet.
Ein neuer Button namens "Neues Formular" soll nicht <BringToFront()> verursachen, sondern eben wie geschrieben <Dispose() => new UserControl() => BringToFront()>. Aber es soll DAS UserControl neu erstellen, welches man gerade sieht - also den z-order-Wert 0 hat.

Gibt es eine günstige Alternative für meinen Plan?

Hab nur noch die Idee, beim Klick von einem der 4 Buttons einen Marker zu setzen (etwa string), welches Control zuletzt nach vorne gebracht wurde und mit switch abfragen.

16.01.2008 - 13:22 Uhr

Hallo,

ich habe einen Button, bei dessen Click-Event das oberste (aktuell angezeigte) UserControl ermittelt werden muss. Dass es daran liegt, in welcher Reihenfolge sie im Control hinzugefügt wurden und somit der z-order ist mir bekannt, nur WIE kann ich die z-order beeinflussen? In diesem Fall brauche ich sowas wie Control.getZOrder.

Im Prinzip muss ich beim Button-Klick das aktuelle Formular (UserControl) Löschen (Dispose), neu erstellen (new) und anschließend wieder anzeigen.

Vllt geht das, indem ich die ControllCollection der Parent Form manage, aber ich halte das für viel zu umständlich und weis auch nicht sicher, ob das zu meinem Ziel führt.

08.05.2007 - 10:01 Uhr

Ja so funktioniert es, ich konnte halt aus deinem Schreiben nicht herauslesen dass du damit meinst, dass man die Zuweisung in String setzt. ("c.TypeName").

Und dass man genau die Antwort bei der Suche nach DisplayMember findet is auch nicht ohne, habe ja davor in google und im forum die Suchfunktion benutzt und irgendwann halt direkt gefragt weil mir keine Antwort zugute kam. Aber jetzt erinnere ich mich auch Dunkel.

Jedenfalls Danke.

08.05.2007 - 09:25 Uhr

Aber da steht a) nicht "TName" sondern "ObjectGenerator.Rectangle" und b) wenn ich debugge, oder mit MessageBox mir Display anzeige, steht IM DisplayMember der korrekte Wert "Rechteck: B: 5, H: 4" .

Nach deiner Aussage müsste selbst beim Debuggen oder in der MessageBox "TName" stehen.

Edit: Im Debugmodus läuft er in die get-Methode des Properties rein und holt sich den Wert. Eben nochmal nachgeschaut. Zudem wenn ich direkt mit

private string Test = "Es klappt!"; (und dazu die Propertie)

definiere, zeigt er mir auch im Formular "Es klappt!" an und nicht "Test" - Sprich genau den Wert un nicht den Namen des Properties.

07.05.2007 - 16:24 Uhr

Aber im Debugger zeigt er mir bei Displaymember "Rechteck B: 40 H: 50" - so wie er das soll, im formular "ObjectGenerator.Rectangle"

07.05.2007 - 15:33 Uhr

Rectangle ist meine eigene Klasse und das Attribut natürlich public (Property).
Wie gesagt das Problem liegt in der Anzeige im Formular, weil wenn ich Debugge, dann steht in DisplayMember genau der Wert der da rein soll. Also im Speicher ist es quasi so wie es sein soll, aber nicht in der anzeige.

07.05.2007 - 14:24 Uhr

Hi,

Ich füge meiner ComboBox ein Objekt zu und sage, dass der DisplayMember der ComboBox ein Attribut des Objektes ist.

Hier der nötige Ausschnitt aus dem Code:


                        // Mein Objekt
                        Rectangle rect = new Rectangle();

                        // Objekt wird initialisiert (dabei ein String Attribut aus den Werten des Objektes definiert
                        rect.initRectangle(_recIn.RectWidth, _recIn.RectHeight);
                        
                        // Objekt wird in die ComboBox hinzugefügt
                        _cbObjLst.Items.Add(rect);

                        // und hier sage ich, dass "TName" der Anzeigewert ist (wie gesagt, string)
                        _cbObjLst.DisplayMember = rect.TName;


Nichts außergewöhnliches also, im Code beim Debuggen hat der DisplayMember den richtigen Wert (den, der auch angezeigt werden soll) ...
... aber im Formular wird der komplette Objektname angezeigt (ObjectGenerator.Rect).
Ist das ein bekannter Bug oder wieso will die Logik nicht?

04.05.2007 - 14:10 Uhr

Hallo,

zunächst einmal, ich habe mir das Graphics Tut von herbie angeguckt 😉

Zum Fall:

Der User erstellt im Programm anhand eingegebenen Daten Objekte (Kreis, Rechteck etc. ). Daraus werden die restlichen Daten des Objektes (Diagonale, Fläche etc. ) ausgerechnet und in eine Liste hinzugefügt. Aus dieser Liste kann der User durch Koordinateneingabe X und Y nun die Objekte ins KoordinatenSystem übertragen (Klick auf Button).

Mein Problem ist, dass ich in dem Koordinatencontrol die Objekte nicht zeichnen kann.


void ucCoord_Paint(object sender, PaintEventArgs e)
        {
            Graphics g = e.Graphics;
            g.DrawLine(new Pen(Color.Black), new Point(0, _Ymax / 2), new Point(_Xmax, _Ymax / 2));
            g.DrawLine(new Pen(Color.Black), new Point(_Xmax / 2, 0), new Point(_Xmax / 2, _Ymax));

        }

        public void drawObject(int X, int Y, object O)
        {
            Type ObjType = O.GetType();

            if (ObjType == typeof(Rectangle))
            {
                Rectangle rect = (Rectangle)O;
                Graphics g;
                g.DrawRectangle(new Pen(Color.Red), new System.Drawing.Rectangle(X, Y, (int)rect.Width, (int)rect.Height));

            }

Ja so müsste es eigentlich klappen ... aber "g" ist hier irgendwie "ungültig?" da ich sie nicht von e.Graphics beziehe (wie in der Paint Methode).
Zeichnen kann ich ja eigetnliclh nur in der Paint Methode, aber ich weis doch nicht welche Objekte ich nun zeichnen muss, da sie erst zur Laufzeit definiert werden.

Ich vermute ich muss die Logik in die PaintMethode einbauen. Das heißt ich übergebe in diese Koordinatenklasse mein Objekt + Koordinaten (Member, Liste) und die Paint Methode hat dann sowas wie

[Pseudocode]

Geh die Liste durch.
Für jedes Obejkt schau dir Typ an,
wenn Rechteck, zeichne Rechteck mit den gegebenen Attributen,
wenn ...

[/Pseudocode]

lieg ich da richtig? Bzw. wieso funktioniert auf einmal in der Klasse LinkedList nicht mehr oder was eignet sich am besten zum speichern eines objektes, X Wert und Y Wert ? Ich wollte LinkedList nehmen (LinkedList<object, int[]>)j.

12.04.2007 - 12:29 Uhr

Hm ja, Clear ist mir auch bekannt, aber dann muss ich jedes einzelne Control wieder adden, das eigentlich immer angezeigt werden soll. Man müsste dann wohl eine komplett eigene ControlInitialisierungs-Methode haben, die NUR die StandardControls lädt und dann kann man ohne Bedenken die Clear Methode von Controls aufrufen. Währe das Sinngemäß?

12.04.2007 - 12:14 Uhr
 void _cbNewObj_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (_cbNewObj.Text == "Kreis")
            {
                if (Controls.Contains(_cubIn)) Controls.Remove(_cubIn);
                if (Controls.Contains(_recIn)) Controls.Remove(_recIn);

                Controls.Add(_cirIn);
            }
            else if (_cbNewObj.Text == "Zylinder")
            {
                if (Controls.Contains(_cirIn)) Controls.Remove(_cirIn);
                if (Controls.Contains(_recIn)) Controls.Remove(_recIn);

                Controls.Add(_cubIn);
            }
            else if (_cbNewObj.Text == "Kugel")
            {
                if (Controls.Contains(_cubIn)) Controls.Remove(_cubIn);
                if (Controls.Contains(_recIn)) Controls.Remove(_recIn);

                Controls.Add(_cirIn);
            }
            else if (_cbNewObj.Text == "Rechteck")
            {
                if (Controls.Contains(_cubIn)) Controls.Remove(_cubIn);
                if (Controls.Contains(_cirIn)) Controls.Remove(_cirIn);

                Controls.Add(_recIn);
            }
            else
            {
                if (Controls.Contains(_cirIn)) Controls.Remove(_cirIn);
                if (Controls.Contains(_recIn)) Controls.Remove(_recIn);

                Controls.Add(_cubIn);
            }
        }

Tatsächlich - altes Control musste nur entfernt werden. Zwar habe ich das als erstes versucht, doch wollte er irgendwie nicht. Wie auch immer jetzt klappt es.
Wegen der Performance hast du recht, herbivore, hab nicht so darauf geachtet ^^. Naja nun erstelle ich erst ein Control, wenn das Object noch nicht initialisiert wurde, so passiert nix, wenn der User 1000 mal hintereinander auf eine Option klickt.

Gibt es sowas ähnliches wie "Control.RemoveRange"? 🙂 Ich wage es kaum vorzustellen wenn ich 100 Controls erst prüfen muss bevor ich sie lösche.

NOTE
Hab den Code etwas logisch optimiert. Die Controls kann ich während dem Initialisieren erstellen und bei bedarf einfach laden bzw. austauschen.

12.04.2007 - 11:41 Uhr

Hallo liebe Leser,

ich habe eine ComboBox, diese beinhaltet einige Daten (=> Optionen).
Je nach Wahl des ComboBox-Items soll ein anderes (bestimmtes) UserControl angezeigt werden.

Ich habe das nun so gelöst, dass ich im "SelectedIndexChanged" Event zunächst prüfe, welche Option gerade gewählt wurde (sind strings) und anschließend das dafür vorgesehene UserControl erstelle, Position sezte und "Controls" hinzufüge.

Das klappt beim ersten Mal so wie ich es will bzw. so wie es sein soll. Wähle ich nun aber eine andere Option, zeichnet er mir kein neues UserControl. Ich habe schon sämtliches probiert von Invalidate bis Controls.Remove("old") + anschließend das aktuelle Controls.Add("new"), er zeichnet mir einfach nicht das neue UserControl.

Hier der Code:

void _cbNewObj_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (_cbNewObj.Text == "Kreis")
            {
                _cirIn = new ucCircle();
                _cirIn.Location = new Point(5, 75);
                Controls.Add(_cirIn);
            }
            else if (_cbNewObj.Text == "Zylinder")
            {
                _cubIn = new ucCuboid();
                _recIn.Location = new Point(5, 75);
                Controls.Add(_recIn);
            }
            else if (_cbNewObj.Text == "Kugel")
            {
                _cirIn = new ucCircle();
                _cirIn.Location = new Point(5, 75);
                Controls.Add(_cirIn);
            }
            else if (_cbNewObj.Text == "Rechteck")
            {
                _recIn = new ucRectangle();
                _recIn.Location = new Point(5, 75);
                Controls.Add(_recIn);
            }
            else
            {
                _cubIn = new ucCuboid();
                _cubIn.Location = new Point(5, 75);
                Controls.Add(_cubIn);
            }
        }
03.04.2007 - 14:03 Uhr

Hallo,

wenn ich bei einer Datenbank eine Single to Many Beziehung habe, dann hat das "many" objekt den Verweis auf das "single" objekt.
Also praktisch so:

Einkaufsliste
// Eigenschaften der Einkaufsliste

Artikel
// Eigenschaften Artikel + Verwais auf eine Einkaufsliste, der der Artikel gehört (Einkaufsliste_ID).

In meiner Anwendung habe ich allerdings (sinngemäß der OOP) in der Einkaufsliste die Liste der Artikel.

Einkaufsliste
// Eigenschaften der Einkaufsliste + Liste der Artikel

Artikel
// Eigenschaften des Artikels

... sehe ich das richtig so oder soll ich in meiner Anwendung das genau so abbilden wie in der Datenbank, dass das Objekt "Artikel" den Verwais auf die Liste hat, der er gehört?

Meine zweite Frage geht nahtlos über:
Wenn ich in meinem Programm mit Datenbankdaten arbeite, arbeite ich direkt auf DataTables etc. oder wandele ich sie erst in meine Programmstruktur um (dass ich dann das DataTable in strings, ints, Lists etc. der betroffenen Objekte umwandel und vor dem Update die Daten wieder in ein DataTable packe).

28.03.2007 - 10:30 Uhr

In der Tat, betrachtet man das allerdings nur im Rahmen des Usernamens und gibt dem Anwender beim Registrieren bescheid, dass der Username gescheit gewählt werden soll da er künftig nicht mehr geändert werden kann (wie bei so vielen Programmen) so kann da nicht mehr viel passieren oder? Ich habe gehört dass Geschwindigkeit da auch eine Rolle spielt (da Zahlen schneller verarbeitet werden).

28.03.2007 - 10:24 Uhr

Hallo,

gewöhnlicherweise hat man bei jeder Tabelle eine ID-Spalte, die unique ist und, bei Relationen, den Primary Key bildet (Bezugspunkt). Sehr sinnvoll. Betrachte ich allerdings eine Accounttabelle, so stelle ich fest, dass die Spalte "Username" genauso eindeutig ist (gewöhnlicherweise). Ist es nicht sinnvoller, die Spalte "ID" da weg zu lassen und stattdessen dem Usernamen den Primary Key vergeben? Damit kann man doch angenehmer arbeiten, weil man Klartext hat.
Beispiel:

Table Account

Username: Heinz (Primary Key)
Column1: ...
Column2: ...
...

Table Order

ID: 3 (Primary + Index)
Acc_UName: Heinz (Foreign Key)
Column1: ...

03.11.2006 - 14:33 Uhr

Original von Bullit
...kann mir einer sagen welche sprachen am geieignetsten sind zum spiele schreiben? ...

ojeee - das programmiert dir aber gewiss keiner... 😜

Sprachen: C# bzw Java würde ich dir empfehlen (sry für das Wort Java, liebe Admins^^). Grund: OOP, OOP solltest du dir definitiv antun, aber auch hier gilt: informier dich zunächst, entscheide dich dann. Ein Programmierer (wenn du was machen willst) muss die Fähigkeit haben, über den Tellerrand schauen zu können. D.h. wenn du was brauchst, musst du selbst an die Infos kommen können und das ist bei dir etwas problematsich 😉 . Selbst dieses Forum setzt eigentlich voraus, dass bevor man einen Thread erstellt, dass man es vorher selbst versucht hat, jedoch gescheitert bzw nicht zum gewünschten Ergebnis gekommen ist.

Also ein guter Ratschlag: eigne es dir an, ansonsten scheiterst du schneller als du denkst.

PS: es kann echt brutal hart sein, an ein gewünschtes Ergebnis zu kommen, aber es gehört dazu 😉

03.11.2006 - 12:44 Uhr

Definitiv mit TryParse()!

@apollo
"wenn der compiler damit nicht einverstanden ist wird er schon meckern,..."

Das willst du dem user doch nicht wirklich antun oder^^ Zum Entwicklungszeitpunkt ist das ja nciht so schlimm, aber für den user, der keine Ahnung von Programmieren hat und höchstwahrscheinlich nicht mal den Code vorliegen hat...

Achja und wie der Vorposter schon sagt: es gibt keine Probleme mit TryParse(), im Gegenteil.

02.11.2006 - 15:51 Uhr

Original von Bullit
...nur das programieren hinter den knöpfen dauert noch ein bisschen da...


class demo
    {
        Button bServerIP = new Button();
        Button bClientIP = new Button();

        public demo()
        {
            bServerIP.Click += new EventHandler(bServerIP_Click);
            bClientIP.Click += new EventHandler(bClientIP_Click);
        }

        void bServerIP_Click(object sender, EventArgs ea)
        {
            paintServerIP(); // genau das und nicht mehr passiert hinter den Kollissen
        }

        void bClientIP_Click(object sender, EventArgs ea)
        {
            paintClientIP(); // ""
        }

wie man zeichnet, weiste ja ...

02.11.2006 - 11:27 Uhr

Original von Bullit
jup thx das ist nicht mein problem...

Dann drück dich genauer aus, denn "Stichwort abgeben und auf Ergebnise warten" kann ja Google. Ein Abstand zwischen den Bars heißt für mich nun mal wie groß der Raum zwischen den einzelnen Bars ist. (und nicht, wie ich client/server ips wechsel oder einen Zeitraum aussuche)

Wechseln IP´s Server / IP´s Client: du hast zwei Buttons oder eine Radioselection oder Combobox [oder...] und je nach dem was du auswählst, wird dort die Funktion aufgerufen, die den passenden Graph zeichnet.
Fällt dir vllt etwas auf? Ich glaube ich übertreibe nicht, wenn ich sage, wenn du auch nur ein bisschen überlegt hättest, würdest du selbst drauf kommen. Auf diese Logik/Lösung kommen auch Anfänger.

Für dich mag ich vllt kritisch wirken, aber ich meine es nur gut. Nimm dir die zwei Bücher, die ich aufgelistet habe und arbeite dich da rein. Du wirst sehen, vieles fällt dann viel einfacher und du tust dir damit eher ein Gefallen. Aber so wie es aussieht hast du nicht die Lust dazu.

02.11.2006 - 08:52 Uhr

Jede Anzeige ist doch ein eigener Graph, also ein eigenes Objekt (z.B. Rectangle) und das kannst du per x,y Koordinaten dahin setzen wo du willst. Du brauchst halt noch für jeden Graph einen eigenen Algorithmus, der den Graph sinnvoll anzeigt. Also pro IP 5 pixel oder so (währe dann im Beispielfall: Länge = AnzahlIP * 5).

31.10.2006 - 11:23 Uhr

http://www.galileocomputing.de/katalog/openbook?GalileoSession=15426645A2.tX7-0n7o

Also das ist mein favourit. So ein openbook (damals war es php) hat mich in die Welt der Programmierung sanft hingeführt ("sanft"^^ wenn ich jetzt noch an die Zeit zurückdenke =) )

Für dich interessant:
#Praxisbuch der Objektorientierung
#Visual C# 2005

Die Bücher kannst du ( wie du siehst ) kostenlos downloaden, ohne Anmeldung o.ä. .

30.10.2006 - 16:16 Uhr

Ohne Fleiß kein Preis. Du musst dir kein Buch kaufen, es gibt im Inet genug Stoff zum Nachlesen (und sogar kostenlose, gute!!! Bücher zum download). Wenn es schulisch ist, musst du dich früher oder später sowieso damit auseinander setzten und zwar so, dass du es selbst vertehst (falls du eine entsprechende Note erwartest). Aber wenn du schon selbst schreibst, dass es unvollständig, falsch ist und einfach alles reingeschmissen um einfach mal etwas in csharps tags einzuklammern, dann kann ich dich nur zu meinem ersten Post verwaisen. Alleine die ersten paar Seiten eines Anfänger-Buches (oder Artikel) reichen schon aus, um wenigstens den Code richtig rein zu hacken.

30.10.2006 - 15:42 Uhr

Deine Entwicklungsumgebung compiliert doch erst gar nicht den Code. Da sind ja lauter Syntax Fehler wie z.B. eine fehlende einleitende geschweifte Klammer bei der for-Schleife. Deine if-Anweisung ist ebenfalls sinnlos und falsch. Also aus dem Code heraus gelesen, rate ich dir echt, erstmal die Basics von C# UND der OOP bzw allgemeinen Programmierung zu lernen. Ansonsten kommst du nie weiter...


//1. Hole Wert Wi der Variablen iVar
iVar = h [Wi];

iVar bekommst du doch als Parameter rein, wieso veränderst du den dann? Eigentlich wird es andersum gemacht: du bekommst einen Parameter rein (in dem Fall iVar) und veränderst DAMIT irgend etwas (sonst währe es ja sinnlos, einen Parameter zu benutzen).
z.B.


int x;
void setX(int ValIn)
{
	x = ValIn;	
}

Zum Zeitpunkt " iVar = h [Wi]; " hast du in iVar den Wert, den du aus der Hashtable zuweist (und nicht mehr den Input, der davor drinnen war, d.h. du hast eine Information verloren). Was machst du jetzt damit? Du verlässt die Schleife ohne mit iVar was gemacht zu haben. (Wobei ich hier davon ausgehe, dass du Wi sonst wo definiert hast und hier den Zugriff hast) Genau so bei deiner if-Anweisung:


if(true) ... was denn?

(Beispiel)


if(Z_Wi != null) // Bedingung
{
	// Anweisung
	Z_Wi++;
}



else
{
	int i = 1;
	object o = i;
}

und jetzt? Was machst du mit den Variablen? Du benutzt sie gar nicht. Die sind doch nur da drinnen gültig.

Fazit: der Code (wie du schon sagst) sagt überhaupt nichts aus und ich kann auch nirgends herauslesen, was mit "Zähler herausholen" gemeint ist, denn die Anzahl der Schleifendurchläufe hast du auch in Vector.Count.

Edit: @daSchroeter
Nach Pseudocode sieht es nicht aus, da werden Variablen ja auch nicht sinnlos Verwendet und durcheinander geworfen...

30.10.2006 - 14:19 Uhr

Kommt ganz auf den Zusammenhang an. Wenn du im Programm irgendwo einen Counter hast, dann wird der wohl damit gemeint. In einer Schleife die Wiederholrate. Wie gesagt, je nach dem...

30.10.2006 - 12:36 Uhr

Also so bekommst du sicher keine Hilfestellung. Stellst hier deine Aufgaben rein, ohne dafür was getan zu haben - und das merkt man ganz dolle, glaub mir (mehrere Beitrag-Regeln missachtet und das auch noch mehrmals, inkonkrete Fragen, wo du nicht mal selbst weißt was du brauchst). Sieht aus als hätte dir jemand eine Aufgabe gestellt, dazu was erklärt und da du nur Bahnhof verstanden hast, direkt mal das Inet gefragt, ohne selbst Gedanken gemacht zu haben. Dann "leitet" dich die nette Community schon in die richtige Richtung und du bist solange nicht zufrieden, bis die exakte Lösung da steht (ich denke da jetzt speziel an die CSharp-Code-Tags).
Also wenn du genau erklärst, WO deine Probleme sind und nicht indirekt nach der Lösung frägst und dazu die Fragen mal genauer stellst, bin ich mir sicher, dass hier der ein oder andere motiviert helfen kann - selbst wenn es Hausaufgaben sind.

24.08.2006 - 11:07 Uhr

Ich denke nach ein paar Anwendungen beider Varianten wird mir der Unterschied im Blut liegen. Aber vielen Dank für eure Mühe und sinnvolle Antworten!

23.08.2006 - 14:42 Uhr

Achso, na klar! Ich widerspreche mich oben ja selbst ^^.

23.08.2006 - 14:05 Uhr

Danke, deine Antwort war verständlich und passt super zu meinem aktuellen Beispiel 😉 Ich beschäftige mich nämlich zur Zeit mit Reflection und da brauche ich beides (genau da ist mir nämlich die Frage aufgefallen, die ich gepostet habe). Also an dem Tutorial, das ich gerade hier vor mir liegen habe, kan man gut erkennen (wenn man weiß^^) dass GetType dort angewendet wird, wenn ich zur Laufzeit einen Typ brauche und typeof wenn ich "statisch" einen Typ definiere.

Beispiel typeof:
System.Type [] ParamTypes = new Type[] { typeof(int),typeof(int) };
// Ich definiere ein Type-Array, das zu Beginn des Programms (beim Start) initialisiert wird...

Beispiel GetType:
Type TypeToReflect = Type.GetType("System.String");
// Ich hole mir während der Laufzeit den Typ...

Also wenn es das ist, dann habe ich es verstanden =)

Danke nochmals!

23.08.2006 - 13:31 Uhr

Hallo allerseits!

Mir ist aufgefallen, dass Type t = Type.GetType("...") äquivalent zu Type t = typeof(...) ist. Wo liegt der Unterschied? Ich vermute mal es gibt einen (bzw mehrere). Aus der MSDN wurde ich leider nicht komplett schlau.

03.08.2006 - 12:11 Uhr

Hm... sehr schade, das bedeutet so viel wie wenn du das Projekt auslieferst, gibts den Source Code gratis dazu. Trozdem vielen Dank!

03.08.2006 - 11:56 Uhr

Aber es gibt doch sicherlich Möglichkeiten, den Code zu verschleiern. Ich meine ich möchte den Code nicht 99.999% sichern, jedoch solllte es dem Hacker/Cracker schon eine "ach is mir zu blöd jetzt" Einstellung geben. Was ist mit ngen, das wandelt doch die .exe in binary um oder? Aber recht interessant, dass es nichts kostenloses in der Richtung gibt, zumindest nichts gescheites, scheint sich wohl nicht zu rentieren oder es bringt einfach nicht so viel, wie du es sagst ^^ .

03.08.2006 - 11:20 Uhr

Hallo allerseits!

Ich möchte mein Projekt nicht als MSIL compiliert, sondern in binary-code ausliefern. Bekanntlich wird der Source Code erst in MSIL, dann @runtime durch den JIT in binary umgewandelt. Unter MSIL ausgelieferte Projekte sind jedoch lesbar und genau das möchte ich vermeiden. Ich habe dazu mich mit Obfuscators, tools und Methoden, wie man den Code verschleiert beschäftigt. Da es auch nichts kosten darf, bin ich auf 2 tools gestoßen: den Dotfuscator Community Edition und ein adose.obfuscator (oder so ähnlich). Nach längerem testen musste ich jedoch feststellen dass keine der Programme gescheit funktioniert oder ich kenne mich nicht gut genug damit aus, jedenfalls hatte ich keine Ergebnise erzielen können. Die behandelten .exen waren immer noch im Klartext. Nach zwei Tagen rumprobieren und suchen bin ich schließlich an die Grenzen gestoßen und wende mich deshalb an euch. Ich habe mir auch das, was hier im Forum ist paar mal durchgelesen, allerdings hat es mich nur weitergebracht jedoch das Problem nicht wirklich gelöst.
Meine Frage währe also: Wie kann ich meinen Code nicht in Bytecode (also MSIL) sondern direkt in Binary ausliefern?

s.cript[0]r

25.07.2006 - 14:30 Uhr

Huhu =)

Ich habe auch mal ein BrowserGame programmiert, das leider auch nicht ganz fertig wurde. Dies waren Teilbereiche und das Notwendigste, wie z.B. Bauscript, Ressourcenberechnung, LoginSystem, Rassenwahl (je nach Rasse natürlich auch andere Boni) etc. Das ganze hat auch soweit funktioniert, war jedoch mein erstes größeres Projekt und somit auch sehr viel abgeguckt und wenn ich mir jetzt den Code angucke, dann hätte ich so einiges anders gemacht 😁 . Naja, es hat genau einen Grund, wieso das Browsergame nicht fertig wurde - ich habe nämlich umüberlegt und beschlossen, daraus ein echtes Spiel zu machen. Tja und jetzt bin ich die ganze Zeit dabei, meine Fähigkeiten auszuüben und habe sogar schon das ein oder das andere vorerst fertig (Bauscript, Schiffsbau) wobei das ganze erst Proto ist und das ganze sicherlich noch umstrukturiert wird. Das Spiel schreibe ich natürlich in C#.

25.07.2006 - 11:00 Uhr

... und somit ein elementares Attribut...

25.07.2006 - 10:18 Uhr

=> PM (es gibt Leute (ich z.B.) die gucken nie die PM nach =) sollte ich mir angewöhnen )

25.07.2006 - 09:50 Uhr

Wenn das ganze System funktioniert, würde ich gerne mitmachen 😉 - Mache ebenfalls Ausbildung zum FI-AE und programmiere privat an einem Spiel (noch nicht so sonderlich weit, da es ein richtiges Spiel ist und mit den Kenntnissen die ich z.Z. habe, kann ich halt nur Teilbereiche programmieren). Ich möchte auch selbstständig werden, aber dazu muss ich noch sehr viel lernen, vorher ist es mir zu riskant. Wenn du (Thread-Ersteller) genau so viel Ehrgeiz und Durchhaltevermögen hast, sehe ich grün =)
... fals dieser Thread noch gilt...

12.05.2006 - 11:32 Uhr

Genau so hieß es ^^ - Vielen dank!

12.05.2006 - 10:33 Uhr

Hallo allerseits

Kann mir jemand bitte sagen, ob und wo es Tools gibt, die man auf seine Website einbauen kann und dann C#-Code Korrekt (also nicht als einfachen Text) anzeigen kann. Ich finde das passende Wort nicht für Google, er spuckt mir Zeug raus, das mich nicht weiterbringt 😦 .

PS Meine Website ist **nicht **.net und ASP-Fähig

Vielen Dank

04.05.2006 - 15:57 Uhr

Bzw welche Vor- und Nachteile treten auf, wenn man es auf der untersten Socket-Ebene macht oder mit TCPListener. TCPListener ist ja wesentlich leichter, hat aber sicherlich den ein oder anderen hacken - vllt Flexibilität?

04.05.2006 - 15:38 Uhr

Ich denke mal du meinst UDP - ja, es ist schneller, allerdings nicht so sicher wie ein TCP-Protokoll. Deshalb ist mir TCP schon wichtig. Bezüglich DirectPlay schaue ich mich nochmal um, gibt ja 2 Aussagen 😉

04.05.2006 - 15:29 Uhr

Vielen Dank! DirectX - Antwort auf alle Fragen =)

Ich habe gedacht, dass DirectPlay für C# nicht geeignet ist und es dadurch nur zu Probleme kommen würde.

04.05.2006 - 15:04 Uhr

Hallo allerseits,

nachdem ich mich im Internet/Foren gründlich umgeschaut habe und keine Antwort auf meine Frage/Problem gefunden habe, wende ich mich an euch und hoffe, ihr könnt das.

Es geht um die Wahl der Kommunikation zwischen Client und Server bei einem MMOG, d.h. also bei einer massiven Anzahl an Clients. Auf welche Art sollte man das realisieren? Wie ich hier im Forum gelesen habe, fällt remoting weg. Ich dachte an TCPClient/TCPListener. Möglich währen auch Web Services habe ich mir sagen lassen, haben jedoch den Nachteil dass sie langsam sind (und bei einer massiven Client-Anzahl spielt es nehme ich an eine gewaltige Rolle). Das ganze auf Sockets-Ebene zu programmieren währe auch eine Wahl ... aber welche von den ganzen währe für ein MMOG am ehesten geeignet? Vllt habt ihr ja auch selber Erfahrungen gemacht.

08.02.2006 - 21:53 Uhr

wow, 2 Jahre- ich beschäftige mich damit seit 2-3 Monaten^^. Nunja, also absoluter Neuling in OOP bin ich nicht, ich bin froh, die ersten schweren Hindernisse hinter mir zu haben (wie z.b. Sinn/Aufbau, habe ich aber glaube ich schon erwähnt....und ich weis dass ich noch vieeeeeeeeeeeeeeeeeeeeeeel vor mir habe^^). Ich könnte ja auch Fragen, wie man am besten diese Logik "lernt"/aneignet, aber auch das ist nicht zu beantworten, also lasse ich es 😉 . Ich versuche ja auch meinen eigenen Weg, der wo ich denke, dass ich es so am besten verstehe, zu finden und beschäftige mich derzeit viel mit UML, also ich stell kleine Probleme dar, wo ich dann Anhand UML versuche, die Beziehungen, und wie die Klassen aufgebaut sind, wo was reinkommt und so Abstrakt wie möglich zu gestalten etc etc etc das Problem zu lösen. Ich denke es ist ein guter Weg. Und zum glück steht mir noch mein Kollege bei der mir immer wieder auf die Füße tritt und mich in die richtige Richtung zerrt 🙂

s.cript[0]r

08.02.2006 - 15:49 Uhr

hehe, ja, ich verstehe dich^^ - das mit "lernen" war nur eine Definition, dass OOP eigetnlich eine Logik ist, ist mir auch bewusst, und dementsprechend meinte ich, wie schnell/langsam man diese Logik versteht. Ich denke hierzu kann man nur die Erfahrungen mitteilen, das sind nämlich feste und sichere Aussagen^^. Der Sinn und der Aufbau von OOP ist mir vollkommen klar, nur bei der Anwendung habe ich noch so meine Probleme 🤔 - aber naja, ich weis dass es eigentlich eine recht komplexe Sache ist, und aber einmal gelernt, nie wieder verlernt...

s.cript[0]r

08.02.2006 - 15:29 Uhr

Hallo Forum!

Ich habe eine etwas abstrakte Frage^^. Aber in welchem Zeitraum lernt man, sinnvoll, gescheit und ordentlich mit OOP umzugehen/programmieren, bzw wie lange dauert es ungefähr durchschnittlich. Ich weis, es kommt darauf an, wie viel Zeit man investiert, wie schnell der lernende Dinge versteht etc., aber es gibt bestimmt eine grobe Aussage. Bzw könntet ihr Eure Erfahrungen mitteilen, wie lange es bei Euch gedauert hat, das würde mir auch helfen. Ich bin nämlich am Erlernen von C# (davor etwas php, also theoretisch kompletter Neueinstieg in die Programmierung ^^) und somit natürlich auch das Konzept der OOP.

s.cript[0]r

18.01.2006 - 15:48 Uhr

Zu dem Label habe ich im nächsten post schon was gesagt, das habe ich schnell wieder geändert und trozdem nichts - weil ich nich nur den letzten label sehe, sondern nur einen...

17.01.2006 - 17:49 Uhr

Ich habe schon etliches gelesen, auch ADO und das mehrmals bei mehreren Seiten. Deshalb wende ich mich auch ans Forum. Ich habe nichts gefunden oder halt die ganze Zeit etwas übersehen. Zu dem Label: das habe ich auch gemerkt als ich gepostet habe un das sofort geändert in (test-zwecksweise i10 und i15, das heißt die position müsste sich immer verschieben, auch wenn gering) doch das hat auch keine Auswirkungen, zudem zeigt er IMMER das erste feld an... und wieso nicht das DataGrid(View) habe ich auch bereits geschrieben, damit gehts aber ich will das anders darstellen, z.B. in einer gezeichneten Tabelle oder in html Tabelle.
Die Schleife, so wie es aussieht, läuft nur einmal durch, weil wenn ich den counter oben änder, dann zeigt er ein anderes Feld an, das bedeutet, er hat die Daten, nur läuft die Schleife einmal durch und zeigt somit eine Information an.

s.cript0r

17.01.2006 - 17:34 Uhr

und wie gebe ich dann meine Tabelle aus? bzw gibt es ja mehrere Möglichkeiten. Ich schaffe es einfach nicht, die Tabelle auszugeben 🙁 muss ja irgendwie mit Schleifen funktionieren, habe schon etliches ausprobiert und immer noch nichts...

void loadAdresses()
        {
            DataSet ds;
            ds = db_request.SELECT("SELECT * FROM Adresslist", "Adresslist"); // Hier ist meine Hilfsklasse definiert in db_request. Dort funktioniert alles wunderbar...

            dt = ds.Tables["Adresslist"];

            sbPanel.Text = "["+dt.Rows.Count.ToString()+"]" + " Einträge im Adressbuch gefunden";
            //dv = new DataView(ds.Tables["Adresslist"]);
            //adresses.DataSource = dv;
  
            try
            {
                for (int i = 0; i < dt.Rows.Count; i++ )
                {
                    for (int j = 0; j < dt.Columns.Count; j++ )
                    {
                        //dt.ToString();
                        Label l = new Label();
                        Controls.Add(l);
                        l.Top = 300; l.Left = 400;



                        l.Text = dt.Rows[i][j] + ""; //Ausgabe: 1 (ID, erstes feld, erste zeile)

                    }
                }
               // adresses.DataMember = "Adresslist";
            }
            catch (Exception e) { MessageBox.Show(e.Message); }
        }

... und so weis ich dass dt alle Daten hat, denn sobald ich in der Schleife die zahlen änder, kommt jeweils der andere Eintrag, das Problem ist, er liest ned die gesammte Tabelle aus, sondern NUR ein FELD 🙁 - irgendwas an der SChleife stimmt nicht, aber ich habe sie auch schon umgedreht wie es nur geht...

s.cript0r

17.01.2006 - 14:49 Uhr

hm... also falls da die Antwort auf die Frage war, dann bin ich nich daraus schlau geworden. Das einzigste, was ich jetzt verstanden habe, ist, dass das DataView das DataSet ersetzt?! Aber irgendwie kann es nicht sein, weil ich für DataView DataSet brauche ?( ?( ⚠ ⚠

s.cript0r