Laden...
C
Campac68 myCSharp.de - Member
Dauerlehranstaltsbesucher Dabei seit 04.02.2010 63 Beiträge
Benutzerbeschreibung

Forenbeiträge von Campac68 Ingesamt 63 Beiträge

06.06.2010 - 20:50 Uhr

ne kein fehler dauert nur ewig:

lösung kam bei mir nach 6 1/2 minuten(2.5GHz) kann es sein das du es im Debug Modus ausgeführt hast? Das verlangsamt das ganze etwa um das doppelte^^

06.06.2010 - 20:29 Uhr

jo stimmt mal schauen

EDIT: Ich würde ehrlich gesagt behaupten das mein Code einfach nur relativ lahm ist. Ich hab nicht so auf Performance geachtet...

06.06.2010 - 19:09 Uhr

Meine Lösung für die Soduku Aufgabe. Ich hoffe sie ist ungefähr dem genehm was du wolltest. Ich hab sie mit drei verschiedenen Sudokus verschiedener Schwierigkeitsgrade getestet und sie lieferte immer (ein) richtiges bzw das richtige Ergebnis in unter 300ms(Kann beim Deuggen abweichen). Bei der Eingabe von einem Sudoku, welches(wie bei meiner Lösung standartmäßig) mit Nullen gefüllt ist braucht sie 12 ms um eine oft im Internet als Beispielsudoku gesehene Lösung zu produzieren(ausprobieren;)). Die Klasse Sudoku wurde dabei Immutable gehalten(für die verwendete Rekursion recht praktisch:))

Zu sagen ist, dass man darauf achten sollte immer nur Mehrdimensionale Array mit wenigstens 9*9 Zahlen zu übergeben, anderes wird nicht abgefangen. Der restliche Code sollte nicht zu schnell zusammenbrechen(auch wenn bestimmte Teile nicht oft getestet wurde, da sie letztenendes nicht für die Gesamtlösung verwendet werden). Die entscheidenden Methoden sind die unteren 6(bis 9) welche auch ein wenig kommentiert sind(eher spärlich). Zu sagen ist, das eigentlich alles Null-basiert ist. Der Rest findet sich beim durschauen.

Benutzung:

    class Program
    {
        static void Main(string[] args)
        {
            Sudoku s = new Sudoku(
                new int[9, 9] {
                {0,8,0,4,0,0,2,0,9},
            {0,5,9,0,8,0,0,0,3},
            {0,0,0,0,0,9,0,0,7},
            {8,2,0,0,1,0,0,0,0},
            {5,0,0,0,7,0,0,0,6},
            {0,0,0,0,4,0,0,2,5},
            {3,0,0,7,0,0,0,0,0},
            {9,0,0,0,2,0,3,7,0},
            {7,0,5,0,0,8,0,9,0}}
            );

            /*Sudoku s = new Sudoku(
                new int[9, 9] {
                {0,0,0,0,0,0,0,0,0},
            {0,0,0,0,0,0,0,0,0},
            {0,0,0,0,0,0,0,0,0},
            {0,0,0,0,0,0,0,0,0},
            {0,0,0,0,0,0,0,0,0},
            {0,0,0,0,0,0,0,0,0},
            {0,0,0,0,0,0,0,0,0},
            {0,0,0,0,0,0,0,0,0},
            {0,0,0,0,0,0,0,0,0}}
            );*/

            s.drawToConsole();
            Sudoku solution = new Sudoku();
            
            Stopwatch stopWatch = new Stopwatch();
            stopWatch.Start();
            solution = s.findSolution();
            stopWatch.Stop();
 
            Console.WriteLine("Zeit: " + stopWatch.ElapsedMilliseconds + "ms");

            solution.drawToConsole();
            Console.ReadLine();
        }
    }

Eigentlicher Code:

    class Sudoku
    {
        private int[,] m_content;

        public Sudoku()
        {
            m_content = new int[9, 9];

            for (int row = 0; row < 9; row++)
            {
                for (int column = 0; column < 9; column++)
                {
                    m_content[row, column] = 0;
                }
            }
        }

        public Sudoku(int[,] content)
        {
            m_content = new int[9, 9];

            for (int row = 0; row < 9; row++)
            {
                for (int column = 0; column < 9; column++)
                {
                    m_content[row, column] = content[row, column];
                }
            }
        }

        public void drawToConsole()
        {
            for (int row = 0; row < 9; row++)
            {

                if (row % 3 == 0)
                {
                    Console.WriteLine("-------------");
                }

                for (int column = 0; column < 9; column++)
                {
                    if (column % 3 == 0) Console.Write("|");
                    Console.Write(m_content[row, column]);
                }
                Console.WriteLine("|");
            }
            Console.WriteLine("-------------");
        }

        public int[,] toArray()
        {
            return m_content;
        }

        private bool isRowValid(int row)
        {
            List<int> numbers = new List<int>();

            for (int column = 0; column < 9; column++)
            {
                if (numbers.Contains(m_content[row, column]))
                {
                    return false;
                }
                else if (m_content[row, column] != 0)
                {
                    numbers.Add(m_content[row, column]);
                }
            }
            return true;
        }

        private bool isColumnValid(int column)
        {
            List<int> numbers = new List<int>();

            for (int row = 0; row < 9; row++)
            {
                if (numbers.Contains(m_content[row, column]))
                {
                    return false;
                }
                else if (m_content[row, column] != 0)
                {
                    numbers.Add(m_content[row, column]);
                }
            }
            return true;
        }

        /// <summary>
        /// Zero based!
        /// </summary>
        /// <param name="box">Box numbers from top-left to bottom right in each row from left to right</param>
        /// <returns></returns>
        private bool isBoxValid(int box)
        {
            List<int> numbers = new List<int>();

            int boxRow = box <= 2 ? 0 : box <= 5 ? 1 : 2;
            int boxColumn = box % 3;

            for (int row = boxRow * 3; row < boxRow * 3 + 3; row++)
            {
                for (int column = boxColumn * 3; column < boxColumn * 3 + 3; column++)
                {
                    if (numbers.Contains(m_content[row, column]))
                    {
                        return false;
                    }
                    else if (m_content[row, column] != 0)
                    {
                        numbers.Add(m_content[row, column]);
                    }
                }
            }

            return true;
        }

        public bool isValid()
        {
            for (int i = 0; i < 9; i++)
            {
                if (!(isRowValid(i) && isColumnValid(i) && isBoxValid(i)))
                {
                    Console.WriteLine((!isRowValid(i) ? "Row " : "") + (!isColumnValid(i) ? "Column " : "") + (!isBoxValid(i) ? "Box " : "") + i.ToString());
                    return false;

                }
            }
            return true;
        }

        private bool isNumberValidAt(int row, int column, int value)
        {
            Sudoku s = insertNumberAt(row, column, value);

            int box = (row < 3 ? 0 : (row < 6 ? 1 : 2)) * 3 + (column < 3 ? 0 : (column < 6 ? 1 : 2));

            return s.isRowValid(row) && s.isColumnValid(column) && s.isBoxValid(box);
        }

        private List<int> getValidNumbersAt(int row, int column)
        {
            List<int> validNumbers = new List<int>();
            Sudoku s;
            for (int i = 1; i <= 9; i++)
            {
                s = insertNumberAt(row, column, i);

                int box = (row < 3 ? 0 : (row < 6 ? 1 : 2)) * 3 + (column < 3 ? 0 : (column < 6 ? 1 : 2));

                if (s.isRowValid(row) && s.isColumnValid(column) && s.isBoxValid(box))
                {
                    validNumbers.Add(i);
                }
            }
            return validNumbers;

        }

        public Sudoku insertNumberAt(int row, int column, int value)
        {
            int[,] newContent = m_content;
            newContent[row, column] = value;
            return new Sudoku(newContent);
        }

        public Sudoku findSolution()
        {
            // If the incoming Sudoku is already wrong dont jump into the solution algorithm
            if (isValid())
            {
                Sudoku s = findSolution(0, 0);
                return s == null ? new Sudoku() : s;
            }
            else
            {
                return new Sudoku();
            }
        }

        private Sudoku findSolution(int row, int column)
        {
            // If ready...
            if (row == 9)
                return this;
            
            // If row changed
            if (column == 9)
                column = 0;

            if (m_content[row, column] == 0)
            {
                foreach (int i in getValidNumbersAt(row, column))
                {
                    // Check next field
                    Sudoku s = (insertNumberAt(row, column, i).findSolution(column + 1 == 9 ? row + 1 : row, column + 1));
                    // If something comes back the solution was found!
                    if (s != null) return s;
                }
                return null;
            }
            else
            {
                return new Sudoku(m_content).findSolution(column + 1 == 9 ? row + 1 : row, column + 1);
            }
        }
    }
16.04.2010 - 22:04 Uhr

@herbivore

ja der reflector wäre noch eine idee...
thy

@flotse

danke das geht doch schonmal in die richtung in die ich dachte^^

16.04.2010 - 18:35 Uhr

Hey,

ich bin zZ auf der Suche nach(auszugsweisem) Code für eine TextBox. Da ich derzeit, schulisch bedingt, an einer solchen arbeite wollte ich mir einige Ideen holen bin jedoch über die gängigen Mittel(Forumsuche, Google, Codeproject) nicht fündig geworden...

Ist einem von euch ein solcher offener Quellcode bekannt oder gibt es sowas nur von Microsoft etc. die sich in Schweigen hüllen?

Mfg Campac

12.04.2010 - 17:20 Uhr

Hey,

Also die Kompressionsraten will ich auch. 3kb wäre ja schonmal wow! Was sich positives sagen lässt:

immerhin liegt die richtige zurück[Rechnungs]quote bei über 50%^^(jedenfalls im Schnelltest)

da unter anderem die Zufallszahlen des Framework ärgste Probleme bereiten.

Außerdem würde ich gern verstehen, wie du mit der Verwendung von Zufallszahlen komprimieren willst?

Mfg Campac

07.04.2010 - 00:46 Uhr

Hey,
edit: zu lahm

Zum Problem:
Ich meine, man muss doch eigentlich eine Textdatei angeben und Thunderbird akzeptiert meines Wissens auch nichts anderes an der Stelle, wo man den Pfad zur Signatur eingeben kann. Und das erklärt glaube ich auch dein Problem. Du hast doch an der Stelle wo eine Text-Datei hingehört deine *.exe Datei hingesetzt oder? Thunderbird liest die einfach mit nem StreamReader oder sonstewas aus und bekommt einen sinnlosen Haufen Zeichen. Und das "This programm..." usw. gehört einfach in den Programm Header(von allen Programmen?) rein. Das is schon uralt, hier z.B ein Auszug aus einem meiner Programme:

MZ       ÿÿ  ¸       @                                   €   º ´	Í!¸LÍ!This program cannot be run in DOS mode.

sieht dumm aus oder? Is aber genau der gleiche Anfang wie bei dir, nur komisch formatiert im Notepad++ siehts genauso aus.

Zur Lösung:
Wäre es denn nicht einfacher, wenn du deine Signaturen nur dann erneuerst wenn es wirklich nötig ist? Lies doch meinetwegen jede Stunde einmal aus oder schick automatisch an die anderen Standorte ne Mail wenn sich was ändert

Mfg Campac68

06.04.2010 - 22:25 Uhr

Hey,

bist du sicher das der Pfad existiert? Bei mir heißt der nämlich nur "C:\Users\username\Eigene Bilder".

Mfg Campac

05.04.2010 - 16:48 Uhr

Hey,

meinst du die Position hinsichtlich des Bildschirmrandes ändern/herausfinden?

Mfg Campac

03.04.2010 - 23:00 Uhr

Vielleicht erfüllt die LineDDA aus der WinAPI einen Teil deiner Probleme laut diesem Post?

03.04.2010 - 21:27 Uhr

kann man denn eine asphärische linse sauber durch eine reihe von funktionen beschreiben?

03.04.2010 - 20:03 Uhr

Hey,

Es muß doch eine Möglichkeit geben, daß man auch irgendwie eine Art Array oder so von Windows zurückbekommt, in dem die Koordinaten des zuletzt gezeichneten Graphikobjekts drinstehen.

Ich denke das ist nicht sinnvoll; überleg mal wie viel auf deinem Bildschirm gezeichnet werden muss, da würde es schwierig das zu bekommen was du gezeichnet hast. Läuft wie gesagt Methodenintern. Das einfachst ist wohl deine eigenen Methoden für diese Zwecke zu schreiben.

es gibt diese Fälle für sphärische Linsen. Da wird dann getrickst mit der einfachen Linsengleichung oder es werden die Schnittpunkte von Strahl und Kreis berechnet. Ne ne, das will ich nicht, das ist zu billig.
Ziel ist ein Programm, in dem es beliebig viele beliebig parametriesierte Linsen gibt

Vielleicht solltest du erst einmal sphärischen Linsen versuchen. Das hab ich auch einmal gemacht. Nja war nich so berauschend ich finds nur grad nich. Dann stellt sich mir die Frage wie willst du denn deine Asphärischen Linsen beschreiben?

Mfg Campac

03.04.2010 - 19:41 Uhr

Hallo,

ich suche nach einer Möglichkeit zu überprüfen wann eine CD/DVD/USB-Stick/Speicherkarte usw. eingesteckt/eingelegt wurde bzw. wieder entfernt wurde. Ist einem von euch ein solches Event bekannt?
Mir erscheint es zu aufwändig und zu lastig die ganze zeit zu überprüfen ob denn nun eine CD oder ähnliches drinne liegt oder nicht und falls sich was ändert etwas zu tun. Kennt eventuell jemand eine bessere Lösung mit dem sich das ganze realisieren lässt?

Ziel ist die Realisierung eines sich öffnenden Fensters mit Optionen ähnlich dem Windows Popup welches bei Geräteerkennung kommt.

Danke an alle Ideen
Campac

25.03.2010 - 22:33 Uhr

@markus111:
Man muss soweit ich weiß Youtube Partner sein um Videos hochzuladen die länger als 10 Minuten sind. Dafür muss man natürlich auch Auflagen erfüllen, soweit ich weiß gibts dann auch ne Gewinnbeteiligung an den Werbeeinnahmen.

@eigentliches Topic:
Es gab mal einen Vergleich verschiedener Video Platformen in einer nicht allzu alten c't. Ziemlich sicher. Entweder war es Ende letztes oder Anfang dieses Jahr
Ich glaube nach kurzer Suche war es folgender:
c't 22/2009, S. 124

Außerdem meine ich zu wissen das man bei sevenload und Clipfish unbegrenzt lange Videos(aber nicht große! max. etwa 2GB) hochladen kann.

Mfg Campac

24.03.2010 - 21:50 Uhr

Hey,

das man weitestgehend auf Singleton verzichten kann

wollte nur mal ergänzen das es keinesfalls sinnlos ist das Pattern zu benutzen(bzw. sinnvoll darauf zu verzichten) man sollte es nur nicht übertreiben und nach anderen Lösungen suchen. Hier muss man aber wieder auf ein gutes Aufwand/Ergebnis Verhältnis achten.

Aber eig wollte ich fragen:

Warum sind denn statische Klassen

C#-proprietär

Sie begegnen einem doch in etlichen Programmiersprachen wieder?

Mfg Campac

22.03.2010 - 22:38 Uhr

Hey,

Also unsortiert und ohne Rangfolge mein lieblingsapps(hauptsächlich games aber auch utilyties):
-PapiJump plus (ich weiß nich ob Doodle Jump besser is^^ ich find beide iO)
-JellyCar (lustig für kurze Pausen)
-Pi Cubed (Taschenrechner, wenn man sich dran gewöhnt hat sehr mächtig)
-DoodleJump (tja das App schlechthin)
-Trace (tolles App, gute Ideen, leider zu kurz, sonst sehr schön auch grafisch)
-24 in one Gamebox(is zwar eig. sinnlos von Spielen her aber für 25ct immer mehr Spiele, fast monatlich 2)
-Archers (für 2 spieler)
-FallingBalls (für zwischendurch)
-PHYZIOS std (wenn man mal Zeit hat zum spielen)
-CubeRunner (auch sehr lustiges Endlosspiel in 3D)
-FlightControl (ziemlich taktisches Spiel bei dem man Flugzeuge landen muss)
-Shazam (Ich hab es lange vermisst, funktioniert auch mit den iTouch Mikrofonkopfhörern, super die Musikerkennung)
-Jungle Crash (man muss ein Flugzeug landen welches seitwärts fliegt und immer mehr absinkt, leider zu kurz)
-Die Siedler (Der Klassiker)
-Ganstar (Im GTA Style aber weitaus besser als GTA Chinatown allein wegen der Ansichten)
-Peggle (Leider sehr unbekannt, fesselt aber, is ein wenig im Flipperstyle nur das man 10 anstatt einem Ball hat um jedes Ziel einmal zu treffen)
-MotoX Mayham (Sehr lustig um die Tilt Steuerung zu nutzen, zu kurz aber die Level spielt man immer wieder um Rekorde zu brechen)
-Plants vs. Zombies (Mein Lieblings Tower Defense Spiel)
-TM Zero (Tower Defens in 3D)
-QuickGraph (Fuktionsplotter auch 3D)

Die sind teilweise kostenlos teilweise kostenpflichtig aber nur 2 oder so richtig teuer(sprich 5€)

enttäuscht bin ich von diesen hier:

-IceAge
-GTA Chinatown Wars(wie oben angedeutet)
-FinalFantasy (ich habe mir von dem Klassiker echt mehr erhofft)

Aso ich besitze den iPod Touch 3G

Mfg Campac

18.03.2010 - 20:39 Uhr

Der Hauptfehler ist, daß eine lokale Variable gleichen Namens verwendet wird:

  
AssemblyVersionAttribute version = ...  
  

Nja ich bin davon ausgegangen das das ne flüchtige Idee war die nich funktioniert hat aber noch im Quelltext is^^

18.03.2010 - 20:35 Uhr

ah zu dumm den hab ich nich gesehn^^

18.03.2010 - 20:32 Uhr

wie kommst du an den code?

18.03.2010 - 20:06 Uhr

geht auch nich wenn man z.B. unter Nicknames Beiträge im Profil schauen will

17.03.2010 - 20:56 Uhr

nja aber lässt sich doch halbwegs schnell etwa so realisieren oder?

        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            if (textBox1.Lines.Length > 5)
            {
                int selectionstart = textBox1.SelectionStart;
                int firstlinelength = textBox1.Lines[0].Length;
// Textlänge der ersten Zeile entfernen + die beiden steuerzeichen '\r' und '\n'
                textBox1.Text = textBox1.Text.Remove(0, firstlinelength + 2);
//Caret wieder an seine alte Position setzen
                textBox1.SelectionStart = selectionstart - firstlinelength;
            }
        }

Achtung das is kein fertiger Code!!

17.03.2010 - 18:00 Uhr

Was solls is doch ne nette Idee und wenn ers braucht. Programme entstehen nun mal so ner Not heraus^^

17.03.2010 - 17:56 Uhr

Hey,

Das kommt einfach daher, dass

(AssemblyVersionAttribute)Attribute.GetCustomAttribute(asm, typeof(AssemblyVersionAttribute));

null zurückliefert. Sprich keine Instanz. Warum kann ich dir nicht sagen tut mir Leid, damit kenne ich mich nicht aus. Das könntest du immer abfangen(z.B. mit einem kurzen if) ob denn überhaupt eine Instanz existiert sprich das ganzen ungleich null ist. Ich denke es liegt einfach daran das die Version einfach nicht bekannt ist/ausgelesen werden kann(bei mir funktioniert nur das auslesen von Product-.-).

Mfg Campac

16.03.2010 - 19:49 Uhr

Tja du warst schneller, meiner sähe so aus:

    class MyQueue<T> : IQueue<T>
    {
        private int _count;
        private QueueElement<T> front;

        public MyQueue()
        {
            _count = 0;
        }

        public int Count
        {
            get { return _count; }
        }

        public void Enqueue(T elem)
        {
            if (Count > 0)
            {
                front.enter(elem);
                _count++;
            }
            else
            {
                front = new QueueElement<T>(elem);
                _count++;
            }
        }

        public T Dequeue()
        {
            if (Count > 0)
            {
                T frontContent = front.Content;
                front = front.leave();
                _count--;
                return frontContent;
            }
            else
            {
                return default(T);
            }
        }

        public bool Contains(T elem)
        {
            if (Count > 0)
            {
                return front.Contains(elem);
            }
            else
            {
                return false;
            }
        }

        private class QueueElement<T>
        {
            QueueElement<T> next;
            public T Content
            {
                get;
                private set;
            }

            public QueueElement(T Content)
            {
                this.Content = Content;
            }

            public void enter(T elem)
            {
                if (next != null)
                {
                    next.enter(elem);
                }
                else
                {
                    next = new QueueElement<T>(elem);
                }

            }

            /// <summary>
            /// Gibt die nächste front zurück
            /// </summary>
            /// <returns></returns>
            public QueueElement<T> leave()
            {
                return next;
            }

            public bool Contains(T elem)
            {
                if (next != null)
                {
                    return Content.Equals(elem) || next.Contains(elem);
                }
                else
                {
                    return Content.Equals(elem);
                }
            }
        }
    }

Wurde nich lange getestet aber ich denke vom Prinzip her sollte es so ähnlich sein wie das von Corpsegrinder^^

10.03.2010 - 21:02 Uhr

Hey,

Hattest du denn ein konkretes Spiel im Hinterkopf?

Sonst is die Idee nich schlecht obwohl ich nich wüsste was ich damit anfangen sollte.

Mfg Campac

10.03.2010 - 16:09 Uhr

Ich selber bin seit einem halben Jahr Besitzer eines AcerTravelMate 5730G. Genau das Modell was ich damals für rund 850€ gekauft habe finde ich irgendwie nich mehr aber dieses hier ist vergleichbar:
notebooksbilliger - TM5730-662G25N
Die Unterschiede zu meinem:
-schlechtere Grafikkarte(is ja kein Kriterium für dich)
-schlechterer Prozessor(2,2GHz anstatt 2,2 GHz)
-Double Layer DVD anstatt normal
-dafür isses halt auch 250€ billiger als meins^^

Du wirst jedoch nochmal suchen müssen da dieses Modell kein HDMI besitzt meines hier schon!
Ich bin mit dem Notebook voll zufrieden. Es ist super Verarbeitet und auch gut wartbar(Ich hatte am Anfang ein kleines Staubproblem am Lüfter allerdings lässt sich der ganze Spass super reinigen). Das Display ist gut, auch zur Arbeit im Freien oder in der Sonne obwohl ich darauf lieber verzichte. Der Lüfter ist angenehm leise. Betriebssystem wäre Windows 7 vorinst. Ich selber benutze auch hauptsächlich Win7 aber per Dual Boot auch OpenSUSE(Gnome). Leider hat Ubuntu keinen Treiber für die Graka zur Verfügung, deahalb SUSE. Einziges Manko wäre hier, das SUSE nicht mit der Power-Regulierung der GraKa klar kommt und den Lüfter nur schlecht trimmt.
Vergleich:
-Leerlauf Win7 Akkulaufzeit2 1/2Std. - 3Std.
-Leerlauf SUSE Akkulaufzeit
1Std. - 1 1/2Std.
-Volllast Win7 Akkulaufzeit1Std.
-Vollast SUSE Akkulaufzeit
1Std.
Das einzige was SUSE trimmt is das Display was ja gerade nicht sinnvoll ist wenn man unterwegs ist. Leider ein bisschen schade. Wie es sich mit Fedora verhält weiß ich nicht, würde es aber testen wenn du dich für ein ähnliches Modell entscheiden tätest. Allerdings müsste ich dies in näherer Zukunft wissen da ich plane mein System neuaufzulegen, da könnte ich es schnell probieren(Ich bin mir nich sicher aber SUSE basiert glaub auf Slackware während Fedora von RedHat kommt oder?).

Nja viel glück

Mfg Campac

07.03.2010 - 17:21 Uhr

hmm dann kommst du wohl nicht um eine solche Maus herum

07.03.2010 - 15:41 Uhr

darf man fragen wozu du ein a4 gr0ßes mauspad brauchst? ich nutze von meinem vielleicht 5cmx5cm

07.03.2010 - 13:02 Uhr

Als Alternative, welche ich mal austesten würde ( Am besten ist nunmal noch testen ) wäre die Logitech Cordless Click! Plus Optical Mouse.
Ich besitze die seit (hmm mal raten) 5-6 Jahren und eine Akku Ladung hält rund 1 Woche (immer noch, wenn man konsequent ist und die Maus erst lädt wenn die meckert).

es ging doch um die darkfield technologie. Ich kann mir nicht vorstellen, dass normale optische mäuse das können, sonst gäbe es ja keinen verwendungszweck dafür.

Warum nicht doch in ein gutes mauspad investieren? Die sehen teilweise echt schick aus(und gibts auch in viele farbenbzw. könnte mir sogar vorstellen das man sich iwo eigen mauspads kreieren kann). Wäre vermutlich günstiger und du bist nicht unbedingt auf darkfield technologie angewiesen. Zudem sind mauspads zum arbeiten teilweise komfortabler

EDIT: also meine Logitech RX1500 funktioniert nich auf galsplatten(bzw sie reagiert so gut wie nicht und wenn dochh dann nur stockend

07.03.2010 - 12:35 Uhr

nja wie gesagt die Auflösung packen mindenstens zwei von den drei anschlüssen locker und vga bei ausreichend guter signalqualität

was du beschreibst, kann man in meinen Augen heute mit Fug und Recht als Mindestanforderung ansehen. Gibt es überhaupt noch aktuelle Grafikkarten, die das nicht können?

dem würde ich nicht unbedingt zustimmen. ATI gibt an "Ready for 1080p" und das is ja genau das was du willst, aber ich denke das bezieht sich nicht unbedingt auf 2 bildschirme oder? Die Grafikkarte ist ja als absolutes LoW-End vorgestellt wurden.

Campac

06.03.2010 - 21:17 Uhr

Also laut deinem Testbericht besitzt die Karte ja einen VGA einen DVI und einen DisplayPort Anschluss. Über diese kannst du dann also auch 3 Monitore ansteuern. DVI ist zu 100% Full-HD fähig, DisplayPort soweit ich weiß auch als Konkurrent zu HDMI auch und VGA müsste das bei ausreichend guter Signalqualität auch packen, sonst gibts Bildmatsch. Es hängt wohl eher davon ab was die GraKa so schafft. Ich würde mich nichso festlegen wollen. Es is ja doch ein Low-End Modell.Mit ner Top Signalqualität kann man also nich rechnen. Vielleicht sollte man mal Googlen welche GraKa allein zwei Full-HDs ansteuern kann. Sry hab jetz keine Zeit aber ich glaube das selbst High-End GraKas damit Probleme bekommen müsste man mal schauen

Mfg Campac

06.03.2010 - 21:03 Uhr
  1. wird mit Sicherheit funktionieren.

Vorrausgesetz die Ausgangsqualität an der Graka is gut. sonst sollte man am dvi und am displyport anschluss locker full-hd bekommen. Ob das die Graka selbst schafft sei mal dahingestellt, aber bei normalen Windows-Anwendungen sollte es kein Problem sein

06.03.2010 - 20:17 Uhr

Hey,

also mein Freund ist im Besitz dieser Maus und an sich sehr zufrieden. Wie es mit der Akkulaufzeit steh müsste ich nachfragen, ich weiß nur, dass sie meistens im Ladegerät hängt. Zumindest war er ziemlich begeistert als er sie sich vor... hmm nich so lange her zugelegt hat. Auch in viele Foren und Testberichten wird die doch relativ schwache Akkuleistung bemängelt.

Falls es kein Fake ist würde das hier deine Frage beantworten welcher Akku verbaut wurde:
http://www.handy-heaven.de/shop/images/8002853.jpg
oder auch gleich die Produktbeschreibungsseite:
http://www.handy-heaven.de/akku-logitech-revolution-mouse-liion-p-6331.html

Und ob es Alternative Hersteller gibt... Wenn am 07.10.2009 die Maus noch

...eine der ersten Mäuse, die auf der Darkfield-Technologie [basiert]...

war, dann kann ich mir nicht vorstellen das es seitdem große Neuerungen gab. Zumal es ja eine von Logitech(zwar nicht entwickelte) aber immerhin geschützte Technologie ist.
Chip über die Maus

Mfg Campac

P.S. aber ich denke das die Maus Qualitativ hochwertig ist kann man vorraussetzen, ich selber arbeite an sich fast nur(auch in der Schule) an Logitech Mäuse und hatte noch nie Probleme

01.03.2010 - 22:09 Uhr

Hey

Nach dem lesen dieses Threads ist mir recht schleierhaft was du als Magie bezeichnen würdest. Ich selber habe noch nie übersinnliche Wesen getroffen...
Ich habe auch eine ganze Weile gebraucht bis mir klar war warum solche Ideen aufkommen. Weil nun mal wie bereits gesagt Dinge früher nich erklärlich waren und man eine Begründung gesucht hat. Insofern würde sich mir nicht die frage stellen ob wir in unseren Körpern Enerige freisetzen können. Wozu bräuchten wir dann Mitochondiren die ATP in Energie umwandeln? Ich meine in der Entstehung von Leben mag ja sehr viel Zufall stecken, und dass ich hier sitze und diesen Text schreibe ist unglaublich unwahrscheinlich, aber es hat sich auch gezeigt das alles in der Natur irgenwie einen Sinn hat.

Und außerdem spricht doch das fassen in Regeln gegen diese Übersinnlichkeit und Unbegreifbarkeit selbst oder nicht? Schon allein das Wort bedeutet ja das es keine Regeln gibt.

Mfg Campac

01.03.2010 - 20:40 Uhr

Hey,

Problem soweit gelöst denke ich. Ein paar Sachen muss man an dem Code noch schrauben aber sonst funktioniert er schon ganz gut. Ich werde das dann mal von meiner Testapplikation übertragen:


//------------------------------------------------------------------------------------
//Autor: Campac68
//Demonstriert das ermitteln der Absoluten Caret-Position in einer Textbox
//
//!Achtung: Nicht ausgereift!
//------------------------------------------------------------------------------------
    public partial class Form1 : Form
    {

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            DoubleBuffered = true;
        }

        //Die Position des Carets in der TextBox
        PointF Caret = new PointF();

        private void Form1_Paint(object sender, PaintEventArgs e)
        {
            //Die Position des Carets an der Position des Carets zeichnen
            Graphics g = TextBoxTest.CreateGraphics();
            g.DrawString(Caret.ToString(), TextBoxTest.Font, Brushes.Black, Caret);
            g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;

        }

        private void TextBoxTest_TextChanged(object sender, EventArgs e)
        {
            //Die Position des Carets ermitteln wenn der Text verändert wurde
            int start = TextBoxTest.SelectionStart;
            //Den Text bis zum Caret ermitteln
            string TextBisCaret = TextBoxTest.Text.Substring(0, start);

            TextBoxTest.Font = new Font("Arial", 12);

            //Die Höhe des Textes einfach über TextRenderer ermitteln
            Caret.Y = TextRenderer.MeasureText(TextBisCaret, TextBoxTest.Font).Height;

            if (TextBisCaret.Contains('\n'))
            {
                //Falls der Text bis zum Caret mehr als eine Zeile lang ist, die Textbreite der letzen Zeile ermitteln
                Caret.X = TextRenderer.MeasureText(TextBisCaret.Substring(TextBisCaret.LastIndexOf('\n')), TextBoxTest.Font).Width;
            }
            else
            {
                //Sonst die Breite der ersten Zeile
                Caret.X = TextRenderer.MeasureText(TextBisCaret, TextBoxTest.Font).Width;
            }

            //Die TextBox neu zeichnen(das muss noch verbessert werden, nicht die ganze Box neu zeichnen)
            TextBoxTest.Refresh();
            //Form1 neu zeichnen
            this.Invalidate();
        }

    }

@cat: Trotzdem danke für die Idee aber herbivore hat Recht

Mfg Campac

P.S. Nach dem Motto: "jedes Programm enthält mindestens einen Fehler", wäre ich euch dankbar wenn ihr Bescheid gebt wenn ihr sofort einen groben Fehler seht;)

28.02.2010 - 23:06 Uhr

Hey,

Man will ja nich so sein
Ich glaube das was du suchst is das hier:

 ConsoleKeyInfo c = new ConsoleKeyInfo('s', ConsoleKey.S, false, false, false);
if (Console.ReadKey() == c) {} //usw.

Ist natürlich nicht die einzige Möglichkeit.
Allerdings lass dir wirklich nochmal gesagt sein:
GoTo Anweisungen sind keine sonderlich gute(warum wirst du verstehen wenn du dich mehr damit beschäftigst)/schöne/für dich hauptsächlich schlecht lesbare Programmierweise. Für diesen Fall könntest du z.B. besser eine Schleife benutzen.

Mfg Campac68

PS.Achja wenn du auf GoTo beharrst oder erstmal so programmieren willst, würde ich dir eher ein Sprache wie Basic empfehlen. Hier ist GoTo ein gängiges Konzept. Jedoch sollte man in C# wie auch Java GoTo strikt vermeiden und wenn du es so lernst wirst du vermutlich schwieriger zu einer schönen Programmierweise kommen;)

28.02.2010 - 19:17 Uhr

Wie verschiebst du deine Elemente denn?
Per Drag&Drop oder per Button(Up, Down)?

28.02.2010 - 14:32 Uhr

Hallo zusammen,

mein Problem ist folgendes:
Ich würde gerne die absolute Position des Carets(nicht des Cursors!) in einer TextBox(evtl. RichTextBox falls es leichter ist) ermitteln. Über:

TextBox.SelectionStart

komme ich zwar an die Zeichen-Position des Carets und darüber könnte ich die Zeile bzw. dann die Position in der Zeile berechnen, jedoch erscheint mir das reichlich umständlich.

Kennt jemand eine bessere Lösung um an die (x,y) Position des Carets(wahlweise auch relativ zur Form) zu kommen?

Danke an alle die eine Idee haben:)

Mfg Campac68

27.02.2010 - 22:13 Uhr

Hey,

Du könntest du das ganze statisch machen wenn ich das Problem richtig verstehe.

Mfg Campac

25.02.2010 - 18:38 Uhr

Hey,

Also ich hab das selber mal gebraucht und hab auch eine Lösung gefunden, Quelle:
Ein VB-Forum

Der Code in C#:

using System;
using System.Net;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
using System.Text.RegularExpressions;

namespace Testprogramm
{
    class Program
    {
        [DllImport("user32.dll")]
        public static extern void keybd_event(byte bVk, byte bScan, long dwFlags, long dwExtraInfo);

        const byte MENU_KEYCODE = 91;
        const long KEYEVENTF_KEYUP = 2;
            
        static void Main(string[] args)
        {

            keybd_event(MENU_KEYCODE, 0, 0, 0);
            keybd_event(MENU_KEYCODE, 0, KEYEVENTF_KEYUP, 0);
            System.Threading.Thread.Sleep(1000);
        }
    }
}

Nicht an den usings stören. Soweit ich das verstehe wird ein Windows-Event ausgelöst welches die linke-Windows-Taste drückt(verbessert mich lieber ich will auch noch was lernen;)). Ist vermutlich keine Elegante Lösung aber hat bei mir funktioniert.

Mfg Campac

25.02.2010 - 17:53 Uhr

Hey,

Für deinen Zweck sollte es zumindest unter Linux(mit einigem Aufwand) möglich sein, soweit ich weiß benutzt man in der Firma von meinem Pa ein solches Verfahren. Wie sei jetzt mal dahingestellt...

Aber vermutlich geht es auch unter Windows:
Mit ein bisschen Google stößt man hierauf:
wer-weiss-was über parallele Internetverbindungsnutzung

Hier wird es noch konkreter, und die Aussage ist: Ja, unter Windows, aber nur mit Aufwand und einer Hardware-Lösung(also für Firmen geeignet), Software-Lösung... keine Chance:
myGully zu dem Thema

Für deinen Zweck könntest du versuchen mit verschiedenen Browser verschiedene Internetverbindungen zu nutzen, und vielleicht eine Leitung für deine Messenger zu reservieren. Das erscheint mir sinnvoll. Bei großen Downloads wirst du wohl warten müssen.

Viel Glück
Campac

16.02.2010 - 18:08 Uhr

Hey herbivore,

Für jemand der Vollzeit arbeitet, bedeutet das, dass er 19 Monate, also über anderthalb Jahre lang sechs statt fünf Tage in der Woche arbeitet und gleichzeitig nur einen statt zwei Tage Wochenende zur Entspannung hat. Wenn man es so betrachtet, klingt es schon nicht mehr ganz so einfach, finde ich.

Stimmt daran hab ich gar nicht gedacht, ich muss ja nur zur Schule... hast wohl recht.

@ loki2486

Zumindest viel Spass und vor allem Erfolg bei dem Kurs, kannst ja mal deine Erfahrung posten:)

Mfg Campac

15.02.2010 - 18:05 Uhr

@herbivore

Wollte nur mal ergänzen, mein Post beruht auf der Tatsache das ein Bekannter von mir sich an einem ähnlichem Kurs versucht hat, aber dann gerade wegen einem schlechten Tutor wieder abgebrochen hat. Das Geld war futsch, und er hat dann Java im Alleingang gelernt! Mitlerweile verdient selbiger mit Softwareentwicklung bei einer Medizintechnikfirma sein täglich Brot.

Und eine wöchentliche Arbeitsdauer von 8 Stunden is nich so viel oder? Eine Stunde am Tag...

Mfg Campac

14.02.2010 - 23:29 Uhr

Hi,

is dein Problem jetzt das ändern des Hintergrundbildes?
Das geht so(z.B. jetzt einfach ohne das laden einer Resource):

        private void button1_Click(object sender, EventArgs e)
        {
            Bitmap b = new Bitmap("Dateipfad");
            this.BackgroundImage = b;
        }

oder is das Problem die Resource zu laden?

Mfg Campac

14.02.2010 - 22:05 Uhr

Hi,

würde ich auch so sagen. Ich weiß nicht genau, aber wenn es dir nicht auf den Titel

Geprüfte/r C# Software-Entwickler/in
Staatliche Zulassungsnummer 719 17 08v

ankommt leistet vermutlich ein gutes Buch(zumal ja die 24 Studienhefte sicher eh ähnlich sind), das Internet und ein Forum wie dieses das gleiche und eventuell auch ungezwungeneres Ergebnis(nur halt ohne Titel:)). Ob die 6 Tage Seminar einen Unterschied machen..., falls es dir auf die ankommt habe ich schon öfters von Seminaren gehört die einfach von Universitäten für die breite Öffentlichkeit angeboten werden.

Außerdem würde ich sagen, solange solche Foren kostenlos sind(was sich natürlich nicht ändern soll) und du sowie schon Internet besitzt, benötigst du nur noch ein/zwie ca. 50€ teure/s Buch/Bücher auf Deutsch oder Englisch(voraussichtlich Deutsch), den Rest liefert Praxis, war zumindest bei mir so. Visual C# liefert ja Microsoft als Express Version kostenlos, welche sogar oftmals Büchern beiliegt oder du hier kostenlos downloaden kannst. Damit(ich hab keine genaue Preisangabe von ILS) kommst du vermutlich auch um einiges günstiger weg.

Was hast du denn bisher gemacht, also hast du vielleicht schon Erfahrung in anderen Programmiersprachen?

Mfg Campac

14.02.2010 - 21:00 Uhr

selber kenn ich mich da nicht aus aber vielleicht hilft dir was im FAQ steht(wenn du es nich sowieso schon gelesen hast)

FAQ von mycsharp über Obfuscator

Mfg Campac

14.02.2010 - 12:53 Uhr

Is mir noch nie passiert... Hast du ein Beispiel?

Mfg Campac

14.02.2010 - 12:51 Uhr

is aber iwie genau das gleiche wie mein Code oder? Nur in kürzer... Um zu verhindern das nich das ganze bild neu gezeichnet wird müsstest du meiner Meinung nach versuchen das Bitmap zuzuschneiden.

12.02.2010 - 21:00 Uhr

sieht das immer noch so aus wie auf dem Bild und hast du mal meinen Code versucht?

12.02.2010 - 20:47 Uhr

@ Herbivore

lustigerweise, ich versteh es nicht, funktioniert seine Methode

@Topic

versuch es doch lieber mal so hier, dann wird deutlicher was gemeint ist, und was ich vorhin mit dem Bild auch darstellen wollte.


            if( this.Parent.BackgroundImage != null)
            {
                e.Graphics.DrawImage(this.Parent.BackgroundImage, new Rectangle(new Point(- this.Location.X, - this.Location.Y), new Size(this.Parent.BackgroundImage.Width, this.Parent.BackgroundImage.Height)));
            }