Laden...
M
markus.bodlos myCSharp.de - Member
Österreich / Steiermark Dabei seit 01.03.2008 205 Beiträge
Benutzerbeschreibung

Forenbeiträge von markus.bodlos Ingesamt 205 Beiträge

26.06.2008 - 20:02 Uhr

Mal so als Idee (hab sleider noch nie getestet) aer kann man üer die Registry nicht auch ein prog starten sobald ein ordner geöffnet wird? also denk mir mal dass es über HKEY_CLASSES_ROOT\Folder\shell\open\command gehen könnte

mfg Markus

26.06.2008 - 18:15 Uhr

Danke für eure Infos! werd mich mal ranmachen!

mfg Markus

26.06.2008 - 17:37 Uhr

@jaensen: danke, aber was durchsuche ich rekursiv? mein dateisystem nach endungen? gehts wirklich nicht einfacher?

mfg

26.06.2008 - 16:52 Uhr

Hallo Peter Bucher,

danke für die Antwort. Will es per Code auslesen, aber auch die assemblys die ich selbst geschrieben habe (z.b. Projectfolder).

mfg Markus

26.06.2008 - 15:12 Uhr

Hallo,

gibt es eine Möglichkeit alle dotnet assemblys auf meinem Rechner (also den Pfad zu den Dateien) ausfindig zu machen? Registry?

mfg Markus

26.06.2008 - 15:09 Uhr

Bins nochmal 😉
Da für längere Codes, diese Art der generierung ja nicht gerade komfortable ist würd mich interessieren obs auch eine Möglichkeit gibt einen Verweis auf eine DLL zu legen und ledilich den Methodenaufruf sowie den Verweis injizieren?

mfg

26.06.2008 - 15:06 Uhr

Schau dir einmal das Steuerelement FileSystemWatcher an

mfg Markus

26.06.2008 - 09:36 Uhr

danke 🙂

26.06.2008 - 09:07 Uhr

Hallo MrLeeh,

bin auch interessiert in die art wie du wrappst. zu deinem codebsp. wie ist die zeile im c# konstruktor zu verstehen?

int iIObjectId = _CreateObject(sFilename);

wo definierst du die variable sFilename, bzw. worin liegt die bedutung dieser?

und in der property StringProperty schreibst du

set{_SetStringProperty(value);}

sollte aber doch

set{_SetStringProperty( iID ,value);}

heißen?!

mfg Markus

26.06.2008 - 00:54 Uhr

Hallo tscherno,

hab mir gerade deinen Artikel durchgelesen. Gute Arbeit! Finde ihn interessant und aufschlußreich.
Wie schaut die Sache aus wenn es zu einem Sytaktischen Fehler kommt? zum beispiel wird eine 2te Main Methode injeziert oder sonst ein Member mit gleichem Namen? Macht dann dass Prog zur Laufzeit probleme oder erkennt cecil solch einen fehler?

mfg Markus

24.06.2008 - 21:02 Uhr

Also bei mir geht dein code. Wo genau liegt den dein problem?

mfg

24.06.2008 - 15:45 Uhr

Hallo,

also bei mir gehts schon so. Hab mal einen Testcode, welcher alle selektierten Items bzw. deren Text in eine Textbox schreibt.


        private void listView1_SelectedIndexChanged(object sender, EventArgs e)
        {
            this.textBox1.Clear();
            foreach (ListViewItem l in this.listView1.SelectedItems)
                this.textBox1.AppendText(l.Text);
        }

Vielleicht liegt es an der Ansicht, ich hab jetzt View = Detail; und eine Coloumn.

mfg Markus

23.06.2008 - 14:07 Uhr

Ah, ok danke

23.06.2008 - 13:43 Uhr

Hallo,

wieso benötigst du denn das überhaupt? Normal meldet ohnehin windows wenn etws nicht passt (z.b. Papierstau).

mfg Markus

22.06.2008 - 23:43 Uhr

Hallo, bei mir hat die variable "b" den wert 17.

Aber wozu brauchst du diese Abfrae überhaupt? bist du dir sicher das enums das richtige sind?

mfg Markus

20.06.2008 - 19:48 Uhr

Da das ganze auch näher an der Hardware dran ist, ist eine Hochsprache wohl das falsche Mittel.

Auch C ist eine Hochsprache.

mfg Markus

16.06.2008 - 23:01 Uhr

Also wenn dich dich jetzt richtig verstanden habe hast du 3 Klassen zur Verfügung welche du nicht verändern kannst, 2 Klassen erben von der dritten und du willst 2 gleiche Methoden in den beiden derivaten implementieren.
Mal ein paar Punkte:

  1. Wieso? höchstwahrscheinlich liegt da ein grober Designfehler vor wenn du 2 gleiche Methoden in 2 Klassen mit gleicher Basis haben willst.

  2. Wenn die Klassen nicht auf Instanzmember zugreifen kannste sie ja statisch machen demzufolge kannst du mithilfe von .net 3 und den Method Extensions eine statische Methode beiden Klassen ohne viel Aufwand hinzufügen.

  3. Poste mal was du genau machen willst

mfg Markus

16.06.2008 - 08:41 Uhr

zur binären Kodierung dachte ich mir das ich sie automatisch binär serialisier.

Wieso serialisierst du nicht gleich alles? Man kann ja uch lesbar serialisieren (bsp. xml)

mfg Markus

15.06.2008 - 21:29 Uhr

Hallo,

kann MichlG nur beipflichten was das Design angeht. Aber zu deinem Problem was verstehst du unter einer Überschrift? Einen fetten Text? Falls du darauf abzielst 2 oder mehrer sich im Font unterscheidende Texte in einer checkbox.text zu haben muss ich dich aber enttäuschen was aber möglich wäre (wie gesagt das Design ist fraglich) ist der Checkbox einen Label hinzuzufügen und in diesem die "Überschrift" darzustellen.

Zu deiner ersten Frage? Vielleicht hilft dir das ListView Control weiter, mit diesem kannst du jede Zeile mit einer Checkbox versehen....

mfg Markus

13.06.2008 - 13:44 Uhr

Ich galub das geht auch über AOP z.B. mit PostSharp. Bin mir zwar nicht sicher obs 100% auch ei vererbung hinhaut aber denk schon. Damit kannst bei Methoden aufruf diese umlegen und mit neuer bzw. in deinem Fall überarbeiteter Funktionalität ausstatten.

mfg Markus

12.06.2008 - 22:01 Uhr

Du hast natürlich recht wenn es sich um Zugriffe auf Daten handelt ohne jegliche offensichtliche logik. Aber bei sachen wie String Methoden a la replace, trim & co würde es keinen Sinn machen eine Eigenschaft zu verwenden und genau bei solchen dingen findet das pattern anwendung.

mfg Markus

PS: Nochmal die Initialisierung war nur ein Beispiel welches das Prinzip nahelegen sollte und nicht ein praktische Anwendung

12.06.2008 - 21:45 Uhr

Hallo,

@Herivore:
Danke für die ausführliche Ergänzung

@Jabe:
Bei diesem Pattern geht es nicht um eine Initialisierung als solche es war halt einfach nur das Beispiel. Viel mehr geht es um die Weiterreichung eines Objektes von einer Methode zur nächsten um einen Fluss zu erzeugen und eben keine methoden definieren welche keinen Rückgabewert besitzen.
Wie in Herbivors String Code Beispiel gut zu sehen ist würde ohne diesen Pattern der Code mehrere Zeilen benötigen. Es ist halt einfach schöner

mfg Markus

12.06.2008 - 20:30 Uhr

es ist viel mehr eine allgemeine art der Initialisierung

falls ich die frage nicht falsch verstanden habe sucht dcna91 doch eine Möglichkeit einer Klasse Werte zuzuweisen welche offensichtlich nicht als Felder/Eigenschaften implementiert sind. Und da würde das doch mit net 3.0 funktionieren


var obj = new { myProp = "Value"};

mfg Markus

12.06.2008 - 19:29 Uhr

Du musst eine Klasse anlegen welche die Eigenschaften/Felder beinhalten sonst kanns ja nicht gehen (ausnahme bildet ≥ net 3.0 mit den anonymous types)

obj.myProp = "bla";

geht auch nur wenn myProp vom Typ string ist

wie man Klassen erstellt wird in diesem Forum vorausgesetzt schau dich bitte in den dokus um :rtfm: 🛈 📗

mfg Markus

12.06.2008 - 18:32 Uhr

Danke, mfg

12.06.2008 - 17:32 Uhr

Hallo,

bin gerade auf das Pattern Fluent Interface auf Golo Roden's Blog gestoßen (Hier

Das ganze ist ja interessant und mächtig jedoch ist mir die Verwendung des Interfaces nicht ganz klar. Denn wenn meine Klasse mehrere Interfaces implemetiert welches nimm ich dann als Rückgabewert? Meine Frage ist nun wieso wird nicht die Klasse als solche als Rückgabewert benutzt?

Abwandlung von Golo's Beispiel ohne Interface:


    public class Rectangle
    {
        private int _height;
        private int _width;

        public Rectangle SetHeight(int height)
        {
            this._height = height;
            return this;
        }

        public Rectangle SetWidth(int width)
        {
            this._width = width;
            return this;
        }
    }

    public class Program
    {
        public static void Main()
        {
            Rectangle rectangle = new Rectangle().SetHeight(23).SetWidth(42);
        }
    }

mfg Markus

12.06.2008 - 16:10 Uhr

Sorry ich hab davon genau 0 Plan

ist ja egal aber eine Suchmaschine kannst sicher bedienen....

In C# ists >>

mfg Markus

11.06.2008 - 19:33 Uhr

Das dumme ist eben dass diese neue Funktionalität in allen Fällen identisch ist und dass diese Klasse eine Menge an öffenlichen Methoden besitzt.

Warum willst du es dann überschreiben???

mfg Markus

09.06.2008 - 18:01 Uhr

Zum erstellen eines Menüs verwendest du einen MenuStrip. Und die Ansicht einer ListView kannst du über die Eigenschaft View ändern.

mfg Markus

09.06.2008 - 14:12 Uhr

Hallo,

ja geht, über die Eigenschaft FileName des SaveFileDialogs kannst du das festlegen.
mfg Markus

09.06.2008 - 14:10 Uhr

was jetzt? das menü oder die ansicht der elemente?

09.06.2008 - 13:10 Uhr

So als ergänzung zum geschriebenen, wenn du einen Tasten druck auf deiner Form auswerten willst musst du auch die Formulareigenschaft KeyPreview auf true setzen da sonst dein Ereignis nicht ausgewertet wird wenn ein Steuerelement deines Formulars den Fokus hat.

mfg Markus

08.06.2008 - 23:27 Uhr

Hallo fd230,

wie michlg bereits schrieb geht dein vorhaben wegen dem casten schief. Deine Zeilen

  
                String ledpic;
                int k = i+1;
                String j = k.ToString();
                String ledp = ledpic + j;

lassen aber vermuten dass du deine PictureBoxen indirekt über deine Variable ansprechen willst. Das geht natürlich nicht so einfach 😜

Es ist über reflection möglich dein Vorhaben ähnlich deines Ansatzes zu realisieren nichts desto trotz ist das keine schöne Art. Versuchs doch mal so:

Du legst dir ein Array von PictureBoxen an (wie das geht findest du im Forum, suche einfach unter "Array von Steuerelementen" || "Steuerelementenfeld").

Die PictureBoxen und somit die Elemente dieses Arrays kannst du dann einfach über den Index ansprechen. Damit wird deine For-Schleife zu:


            for (int i = 0; i < 16; i++)
            {
                 leddic.Add(i, deinArray[i]);
            }

mfg Markus

PS: Möglicherweise brauchst du dann auch kein Dictionary mehr um dir den Index zu merken....

08.06.2008 - 19:42 Uhr

Dort wachsen bzw. schrumpfen Arrays automatisch

in C# machen das Listen, Collections oder Dictionarys. Mithilfe der Befehler add/addrange und remove kannst du diese befüllen. kannst sie aber genau so über den index mit [] ansprechen und das dictionary assoziativ. Such einfach hier im Forum nach einem der Begriffe wirst sicher fündig.

mfg Markus

06.06.2008 - 14:34 Uhr

ist dir vorab bekannt welche typen die liste binhalten kann? wenn ja gehts einfach mit:


        static void Main(string[] args)
        {
            TextBox t = new TextBox();

            foo(t);
        }

        static void foo(object o)
        {
            if (o is TextBox)  // <-
                Console.WriteLine("Text");
        }

ansonsten spricht ja nichts gegen deine lösung über reflection.

05.06.2008 - 01:29 Uhr

HAllo,

ist leider ein bisschen zu spät zum durchprobieren aber hab mir mal ein projekt von mir angesehen wo ich mailversand brauchte hab da die Eighenschaft


                client.DeliveryMethod = SmtpDeliveryMethod.Network;

gesetzt. Vielleicht hilfts...

mfg Markus

03.06.2008 - 23:40 Uhr

Hallo,

hab mal eine kleine Methode geschrieben die alles beinhalten sollte was du gefragt hast bis auf die Ressourcen da bin ich mir selbst nicht sicher, noch nie gebraucht...


private void TestCompilation()
        {
            // Die Pfade zu den .net verweisen, kannst du dir in den Eigenschaften auslesen wenn du den Verweis
            // markierst
            string WinFormDLL = @"C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Windows.Forms.dll";
            string SystemDLL = @"C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.dll";
            string SystemCoreDLL = @"C:\Programme\Reference Assemblies\Microsoft\Framework\v3.5\System.Core.dll";
            
            // Der Pfad in welchen die DLL/EXE geschrieben werden soll
            string OutputPath = @"C:\testprog.dll";

            // Der Code welcher compiliert wird
            string code = 
                    "using System;" +
                    "using System.Windows.Forms;" +
                    "public class TestClass : Form {" +
                    " }";

            // Erstellen eines Compilerdatenobjektes mit Übergabe aller benötigten Pfade (Verweise, Ausgabe)
            CompilerParameters cp = new CompilerParameters(new string[] 
                {
                    SystemCoreDLL,
                    WinFormDLL,
                    SystemDLL
                }, OutputPath);

            // Erstellen eines Code Providers und setzen der zu compilierenden Sprache
            CodeDomProvider cd_prov = CodeDomProvider.CreateProvider("csharp");
            
            // Anlegen eines Objektes für das Ergebnis der compilation
            CompilerResults cr = new CompilerResults(
                new TempFileCollection(Application.StartupPath, false));

            // Compilieren, Übergabe des Objekts mit den Verweisen und natürlich den Code
            cr = cd_prov.CompileAssemblyFromSource
                (cp, new string[] { code });

            // In cr könnte man nach beendigung über die Eigenschaft Errors (->Liste) fehler anzeigen lassen
        }

mfg Markus

02.06.2008 - 22:44 Uhr

Hallo,

etwas kompakter:


        public static string IncludeTrailingBackslash(string path)
        {
            return path + ((path.EndsWith(@"\")) ? "" : @"\");
        }

mfg Markus

29.05.2008 - 15:03 Uhr

Hallo,

adMix = adMix.Remove(0, 1);

mfg Markus

26.05.2008 - 18:25 Uhr

            string s = "Hallo Welt";
            s = s.Replace("l", " ");

mfg Markus

24.05.2008 - 21:46 Uhr

Nur so nabenbei, ich halte es für ungut(ich irre ich sicher) die Variable in der Schleife immer neuzudeklarieren, da die Variable in der Schleife immer neu in den Seicher geschrieben wird.(ist doch so, oder?)

sowas optimiert ja ohnehin der compiler von c#

24.05.2008 - 14:30 Uhr

Hallo,

ruf dein Formular nichtmit Show() sodner mit ShowDialog() auf.
mfg Markus

19.05.2008 - 18:49 Uhr

Du kannst das nicht so global sehen... Die Grundlage unterscheidet sich kaum von der eines "normalen" GUI, natürlich kannst du auch einen Bildschirmaschoner sehr professionel und somit dementsprechend schwierig proggen.

Lade dir doch einfach mal die VS05 express version (weiß nicht ob das 08er deas auch anbietet) und schau dir das Bildschirmschoner Biespielprojekt an.

Gruss

15.05.2008 - 18:15 Uhr

Nur so zur Ergänzung 4 Binäre Nullen, sind 4 Bit nicht 4 Byte.

mfg Markus

08.05.2008 - 23:22 Uhr

Hallo,

du brauchst dafür keine Event feuern, denn wie du sagst das ist eine ganz normale methode, welche du, sofern du KEINE argumente benötigst einfach so aufrufen kannst:


renameInfoLabel(null, new EventArgs());

wenn du aber deinen sender übergeben willst kommt natürlich nicht null als argument in frage.

mfg Markus

07.05.2008 - 21:25 Uhr

Wow das war mir nicht bekannt dass man so einen langen text ohne auch nur einmal das 'e' zu verwenden schreiben kann.

mfg Markus

07.05.2008 - 20:18 Uhr

Hallo,

in mir noch nicht sicher ob ichs verstanden hab, gehts da um eine verschlüsselung bei welcher jeder buchstabe durch ein symbol ersetzt wird? also z.B.: ein 'a' ist immer ein '=', und ein 'm' ist immer ein'.'?
Wenn dem so ist, kannst du das sofern dein Text lange genug ist recht einfach entschlüsseln, schau dir die häufigkeit der buchstaben in der deutschen sprache an (das e ist z.b. am häufigsten) und analysiere die häufigkeit eines symbols in deinem text.

Wie gesagt geht nur wenn der text nicht nur aus einem satz besteht, sollte schon ein wenig länger sein.

mfg Markus

01.05.2008 - 15:15 Uhr

Hallo,

wenn du nicht willst das sich dein Cursor bewegt kannst du die Handled Eienschaft auf true setzen (Ereigniss wird nicht weiter behandelt)


        private void textBox1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Up)
            {
                e.Handled = true;
 
                // Hier dein Code für rauf
            }

            if (e.KeyCode == Keys.Down)
            {
                e.Handled = true;

                // Hier dein Code für runter
            }
        }

Schau dir einfach die Links aus meinem ersten Post an.

BTW:

Optimal ist das aber nicht, weil bei Keys.Up geht der Cursor erst mal an den Anfang der TextBox und erst dann wird das Event ausgelöst. nein genau umgekehrt!

mfg

01.05.2008 - 12:21 Uhr

@juetho:

habs grad ausprobiert, bei mir gehts ohne überscheiben (C#2008, WinXP)


        private void textBox1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Up)
            {

            }

            if (e.KeyCode == Keys.Down)
            {

            }
        }

hab ich was falsch verstanden und kloper82 sucht was anderes?

30.04.2008 - 20:37 Uhr

Hallo,

ich hab zwar kein c# da glaub aber trotzdem das es kein problem sein sollte das KeyDown event zu nutzen, da dies teil von control ist und kein spez. Textbox event. Das Event gibt dir einen Parameter von Typ KeyEventArgs (siehe HIER mit hilfe der Eigenschaft KeyCode kannst du dann auf die konstante Keys.Up abfragen (siehe HIER

Poste mal ein bisschen Code....

mfg Markus