Laden...

Forenbeiträge von Crone Ingesamt 168 Beiträge

23.02.2012 - 11:41 Uhr

@winSharp93
mhh Der Code will irgendwie nicht 😄

CreateCommand nimmt die Überladung nicht an und den Commit gibt es irgendwie nicht.

@BerndFfm
Sieht auch sehr intressant aus das könnte villeicht sogar noch schneller gehen ... werde es gleich mal probieren 😉

23.02.2012 - 10:57 Uhr

Richtig 😄 ich bastell dir mir auch immer selbst zusammen auch wenn ich weiß das es Command Builder gibt xDDD ich sollte mich doch endlich mal dazu aufraffen Commandbuilder zu nutzen xDD

Edit:

Wenn man nach ca. 8000 Datensätze ein Insert macht braucht man sogar nur 21 Minuten für 8 Mio Datensätze

23.02.2012 - 10:45 Uhr

hab die lösung schon gefunde

            string myInsertQuery = "INSERT INTO sid (comid) Values" + "(" + line + ")" + ",(" + line2 + ")" usw.

wenn ich alle Daten dran hänge brauch ich für 8.000.000 Datensätze nur 33 Minuten Lokal das reicht 😄

@Equilibrium
Der Server ist ausserhalb und es ist ein root Server 😃

ich bin mal gespannt wie lange ich fürs einfügen aufen Server brauch kann ich aber erst heute abend testen 😃

23.02.2012 - 10:30 Uhr

verwendetes Datenbanksystem: MYSQL

Hallo zusammen Ich hab folgendes problem ich möcht über 8.000.000 Datensätze die ich zuvor ermittelt habe in einer Datenbank speichern. Dies mach ich wie folgt:

            MySqlConnection myConnection = new MySqlConnection(connectionString);
            string myInsertQuery = "INSERT INTO sid (comid) Values(" + id  +")";
            MySqlCommand myCommand = new MySqlCommand(myInsertQuery);
            myCommand.Connection = myConnection;
            myConnection.Open();
            myCommand.ExecuteNonQuery();
            myCommand.Connection.Close();

Ich habe das ganze mal auf einer lokalen Datenbank getestet und habe für das einfügen LOKAL 60 Stunde, 27 Minuten und 7 Sekunden gebraucht was meiner meinung nach extrem lange ist und wenn ich es auf mein Server einfügen will wirds noch länger dauern.

Nun such ich nach eine schneller Lösung, da ich wie man den Code entnehmen kann für jede Zeile eine neue Verbindung öffnen gehe ich mal davon aus, dass wenn man dies nicht macht auch deutlich schneller einfügen kann, jedoch hab ich keine ahung wie ich dies umgehen kann.

Ich hoffe ihr könnt mir da weiterhelfen.

Gruß Crone

27.01.2012 - 16:55 Uhr

Hallo zusammen ich benutze seit Tagen den gleichen Code und alles hat super funktioniert, nun aber hab ich lediglich ein Menü hinzugefügt und eine TCP IP Verbindung die aber in diesen fall überhaupt nicht genutzt wird. Das problem ist das mein KeyDown event nicht ausgelöst wird wenn ich Enter drücke dies hat vorher ohne probleme funktioniert. Ich habe nichts an den Event verändert und dennoch gehts leider nicht mehr...

hier das Keydown Event:

        private void Form1_KeyDown(object sender, KeyEventArgs e)
        {
            switch (e.KeyCode)
            {
                case Keys.Up: P2UP = true; P2DOWN = false;
                    break;
                case Keys.Down: P2DOWN = true; P2UP = false;
                    break;
                case Keys.W: P1UP = true; P1DOWN = false;
                    break;
                case Keys.S: P1DOWN = true; P1UP = false;
                    break;
                case Keys.Enter: label2.Visible = false; play = true;
                    break;
                default: break;
            }
        }

alle anderen Tastenlösen das Event aus.

Lösche ich das Menü und die TCPIP verbindung aus den Programm aber raus funktionierts plötzlich wieder... kann mir jemand zufällig sagen woran es liegen kann das die Enter taste das Event nicht auslöst aber alle anderen Tasten... und wieso dies passiert obwohl der Code überhaupt nichts mit dem Keyevent zu tun hat und zum größten teil nichtmal ausgeführt wird.

danke im vorraus 😉

MFG Marcel

26.01.2012 - 14:25 Uhr

Nimm doch ein Beispiel aus der FAQ ... dann siehst Du aufgrund der Unterschiede wieso Dein Teil nicht so läuft wie Du Dir das vorstellst.


>

Super danke dir dein Beispiel Code den du dort gepostet hast hat mir sehr geholfen jetzt funktioniert alles schnell 😃

25.01.2012 - 21:36 Uhr

Mhh dann versuch ich es mal anhand des FAQ mein Code funktionierte so toll xDDDD aber leider viel zu langsam xDD

23.01.2012 - 14:24 Uhr

So ich habs nun versucht jedoch funktioniert dann das senden oder empfangen nicht mehr richtig

Sender:

        private void sendDate()
        {
            c = new TcpClient("localhost", 4711);
            while (loop)
            {
                try
                {
                    //Thread.Sleep(2000);
                    //c = new TcpClient("localhost", 4711);
                    inOut = c.GetStream();
                    byte[] sendBytes = Encoding.ASCII.GetBytes(DateTime.Now.ToString());
                    inOut.Write(sendBytes, 0, sendBytes.Length);
                    
                }
                catch (Exception e)
                {
                    MessageBox.Show(e.ToString());
                    c.Close();
                    loop = false;
                }
                //c.Close();
            }
            c.Close();
        }

empfänger:

        private void getDate()
        {            
            tcp = new TcpListener(4711);
            tcp.Start();
            while (loop)
            {
                c = tcp.AcceptTcpClient();
                inOut = new StreamReader(c.GetStream());
                try
                {
                    string output = inOut.ReadLine();
                    setText(output);
                    //loop = false;
                }
                catch (Exception)
                {
                    loop = false;
                    c.Close();
                    tcp.Stop();
                }
            }
            c.Close();
            tcp.Stop();
        }

Desweiteren hab ich es mit Read statt ReadLine versucht ... jedoch liefert Read eine integer wert zurück... Ich benutzer dafür einen StreamReader wenn ich Stream benutze erwartet Read argumente die ich erst weiß wenn ich die Daten habe?! Aber ich gehe mal davon aus das es an den immer wiederkehrenden Verbindungsaufbau liegt.

Ich hoffe ihr könnt mir sagen warum dieser nicht funktioniert.

23.01.2012 - 13:35 Uhr

okay danke schonmal werde es direkt mal testen.

23.01.2012 - 12:05 Uhr

Hallo zusammen,

Ich habe mir eine ganz simple Anwendung gebastelt, diese besteht aus zwei Programmen einmal der sender und einmal er zuhöhrer. Der sender sendet das aktuelle Datum + Uhrzeit an den zuhöhrer dieser vorgang dauert aber ca. 1-2 Sekunden. Beide Programme laufen auf einen Computer... eigentlich sollte meine Listbox nur so Voll gespammt werden, jedoch kommt wie bereits erwähnt nur alle 1-2 Sekunden etwas an. Was mache ich falsch?

Hier mein Code:

Info: getDate ist ein eienständiger Thread

Zuhöhrer:

        private void getDate()
        {            
            tcp = new TcpListener(4711);
            tcp.Start();
            while (loop)
            {
                c = tcp.AcceptTcpClient();
                inOut = new StreamReader(c.GetStream());
                try
                {
                    //string output = inOut.ReadLine();
                    setText(inOut.ReadLine()); // setText trägt den string in einer Listbox ein
                    //loop = false;
                }
                catch (Exception)
                {
                    loop = false;
                    c.Close();
                    tcp.Stop();
                }
            }
            c.Close();
            tcp.Stop();
        }

Info: sendDate ist auch ein eigenständer Thread
Sender:

        private void sendDate()
        {
            
            while (loop)
            {
                //Thread.Sleep(2000);
                c = new TcpClient("localhost", 4711);
                inOut = c.GetStream();
                try
                {
                    byte[] sendBytes = Encoding.ASCII.GetBytes(DateTime.Now.ToString());
                    inOut.Write(sendBytes, 0, sendBytes.Length);
                }
                catch (Exception e)
                {
                    MessageBox.Show(e.ToString());
                    c.Close();
                    loop = false;
                }
                c.Close();
            }
        }

Gruß Marcel

06.01.2012 - 11:22 Uhr

Super danke dir genau das hab ich gesucht hab mir schon fast gedacht das es nur damit funktioniert. =)

06.01.2012 - 11:04 Uhr

Guten morgen zusammen,

Bespiel für Anwendung: Outlook 2010 oder IE usw.

Ich habe mir eine Programm geschrieben, diese soll nur dann erscheinen wenn eine andere Anwendung den WindowsState Maximized hat aktiviert werden jedoch soll mein Programm dann nicht die Anwendung überdecken sondern im Hintergrund der Anwendung bleiben. Wird nun die Anwendung minimiert oder der WindowsState in irgend einer andere weise verändert soll meine anwendung wieder minimiert werden.

Ist es möglich abzufragen ob sich irgend eine andere Anwendung in Fullscreen befindet? bzw. den WindowsState zu ermitteln? Und wie verhindere ich das mein Programm sich vor der Anwendung die grade maximiert wird legt.

Das Programm hört sich jetzt villeicht sinnlos an da man die oberfläche dann ja eh nicht sieht aber es geht bei mir nur um einen Visuelen Effekt den ich hervorrufen möchte.

Danke im vorraus

Crone

03.01.2012 - 15:38 Uhr

Danke das sieht schonmal nicht schlecht aus und werde es mir mal in ruhe anschauen.

03.01.2012 - 10:14 Uhr

stimmt hab ich jetzt garnicht dran gedacht 😄 eigentlich will ich die anwendung als hintergrund nutzen da in dieser bestimmte informationen immer sichtbar sein sollen.

03.01.2012 - 09:24 Uhr

Hallo ich weiß nicht ob ihr es kennt... beim VLC player ist es möglich ein Video als Desktop hintergrund abzuspielen. Nun würde ich gerne wissen ob man dies auch in C sharp machen kann. Beim googlen bin leider auf nichts der gleichen gestoßen. Ich hoffe ihr habt ne idee 😉

Crone

22.12.2011 - 08:26 Uhr

Ich machs immer so:

  1. füge dll zu den Resourcen hinzu.

  2. Prüfe ob Dll in pfad vorhanden ist (pfad muss vorher festgelegt sein siehe 3.)

  3. Wenn nicht lass die Dll beim starten in einen Verzeichniss Kopieren z.b. System32 (problem Adminrechte werden oft gebraucht)... such dir einfach einen pfad aus. (nutze nicht System relevante Pfad also z.b. nicht den Windows ordner, da du dort oft keine Adminrechte benötigst)

  4. Verweis deiner anwendung auf den pfad legen wo du die dll hin kopierst.

und schon kann deine Anwendung überall genutzt werden 😃

@chilic eine Native kanns nicht sein, da er die dll per verweis hinzugefügt und und bei ihm aufen rechner es funktioniert. Es ist einfach so das die verweise ja in keiner weise mit in die Anwendung kopiert werden... es handelt sich ledeglich um einen Pfad angabe ... es wird also vorrausgesetzt das auf diesen Pfad die entsprechende Dll liegt. Ist wie ich finde blöd gemacht.

Aber dazu hätte ich auch ne frage ist es möglich DLLs direkt aus den Resourcen zu laden? und wie kann ich diese nutzen ohne das VisuelStudio die ganze zeit anmeckert das es die DLL nicht gibt? Wenn dafür ne einfach lösung gibt kann man sich nämlich das Kopieren und prüfen sich sparren 😉

Gruß Crone

20.12.2011 - 22:09 Uhr

da hat dn!3l vollkommen recht achte auf die richtige Konfiguration grade wenn der Barcodescanner mehrere Sprachen unterstützt kann es dort einige probleme geben ... die hatte ich nämlich auch schon damit 😄

  1. prüfe ob du zum erzeugen des Barcodes auch die benötigten Fonts beseitzt
  2. prüfe ob der Scanner richtig Konfiguriert ist
  3. prüfe ob der Code Scanbar ist
  4. prüfe ob der eingelesene Code richtig ist.

Je nachdem an welchen punkt du scheitest... weißt du immerhin schon mal wo du ansetzen musst.

Das Tool zum ausdrucken des Codes kannst du auch durch Excel ersetzten 😃... hier dazu ein ganz simpler Ansatz.

  1. generiere Code (GUID oder zusammensetzung aus mehren Daten)
  2. Wandel diesen per C# Programm in Excel per der zuvor installieren Schriftart (Font) z.b. Code 39 oder 128 in ein Barcode um
  3. Drucke den Barcode aus den Excel Dokument aus.

Alles was in Excel geschieht kannst du im Hintergrund ohne wissen des Users ausführen Problem ist nur es wird halt Excel benötigt was jedoch nicht wirklich ein Problem darstellen sollte,

19.12.2011 - 17:04 Uhr

Wir haben auch Gutscheine mit Barcords dieser setzt sich aus einer eindeutigen ID den Wert und das Datum zusammen. Jede Nr. kann jemals nur einmal vorkommen und wird beim erstellen in die Datenbank eingetragen. Gibt jemand den Gutschein ab wird dieser auf gespeert gesetzt. Sollte jemand also mit den gleichen Gutschein nochmal kommen oder mit einen gefakten kommt er nicht weit, den um einen zu fälschen muss man schleißlich an die Datenbank ran. Duplizieren hat durch das sperren der Gutschein bei abgabe auch kein sinn. Eine verschlüsselung wie dn!3L vorgeschlagen hat könnte man natürlich auch verwenden 😃

19.12.2011 - 15:39 Uhr

Wenn du doch einen erzeugen und einlesen kannst sollte das Ausdrucken kein problem mehr darstellen. Bei uns in der Firma gibtes auch ein solchen System. Ich glaube das problem bei dir ist das du kein passenden Font hast. Diesen muss du dir passend zur DLL suchen und in System32/fonts einfügen ohne dies gehts nicht.... Sprich es sind richtige Barcodes (bzw. Barcode Schrieftart). Man kann natürlich auf wie gfoidl sagte Barcode Bilder nehmen dies hat den Vorteil das du nicht den entsprechnenden Font brauchst. Wie das mit den Bildern aber genau funktioniert kann ich dir nicht sagen davon hab ich keine ahnung ich weiß nur wie es mit Fonts geht 😄

Such mal nach Code39 Barcode funktioniert bei mir ganz gut und du findest auch gleich den passenden font bei google dazu 😃

MFG Crone

17.12.2011 - 23:43 Uhr

Danke winSharp habs nun raus ... ich brauchte nicht die Koordinaten des Panels in der Form sondern auf den Bildschrim...

Damit das Viereck relativ zu dem panel steht muss man folgendes verwenden

                    int rectangleSize = 200;
            Point p = new Point(pictureBox1.Location.X,pictureBox1.Location.Y);
            Point locationOnForm = PointToScreen(p);
            
            Rectangle ra = new Rectangle(locationOnForm.X - ((rectangleSize / 2) - (pictureBox1.Width / 2)), locationOnForm.Y - ((rectangleSize / 2) - (pictureBox1.Height / 2)), rectangleSize, rectangleSize);

die Linke obere Ecke des Panels und des Vierecks liegen nun genau aufeinander nur das, dass Viereck größer ist. Nun muss nur noch die mitte des Panels berechnen und die größe durch 2 teilen.

puh war das ansträngend und ich hab die ganze Zeit es mit den Koordinaten auf der Form versucht. Ich hab gedacht das wäre richtig... da hab ich mich wohl getäuscht 😃

Danke für euere hilfe.

Crone

17.12.2011 - 22:14 Uhr

Naja ich komm nicht wirklich weiter ich hab alles möglich mit größen probiert es wird immer versetz. Wenn ich von dem Panel mir die X und Y koords nehmen und diese für x und y einsetze müsste die obere Linke ecke von Panel in der mitte sein und vor dort aus zu allen seiten + 100 ...

Rectangle ra = new Rectangle(x,y,100,100);

das ist aber nicht der falle es ist noch immer leicht versetzt zwar nicht mehr ganz so stark aber es geht noch... sobald ich das fenster maximieren sind die vierecke total versetzt.

Ich weiß einfach nicht mehr weiter 😃

17.12.2011 - 10:55 Uhr

Habs gemacht nur werden die Vierecke nun oben in der Linken ecke außerhalb meiner Anwendung angezeigt. Nur um sicher zu gehen Ich nutze Statt Panels mittlerweile PictureBoxen das macht doch kein unterschied oder?

Die PictureBoxen befinden sich ziemlich weit unten und die Vierecke werden übereinander angezeigt beim mehrfach erzeugen von PictureBox. Es scheint so als wenn sie nicht mehr an die PictureBox gebunden wären.

Vorher wo ich noch die Size genutzt hab hatte ich die Probleme nicht. Aber deine Berechnung hätte eigentlich funktionieren sollen... Ich werde einfach nicht schlau draus 😄

Hier mal mein Code auch wenn er so aus dem zusammenhang nicht gut zu verstehen ist.

          int x = 0;
                        int y = 0;
                        //pB ist die PictureBox Collection und in cu werden einige zusätzliche eigenschaften gespeichert die auf einer Bestimmten PictureBox zutreffen
                        x = pB[cu[i].getControl()].Width / 2;
                        y = pB[cu[i].getControl()].Height / 2;
                        //cu[i].getControl() liefert die PictureBox zurück die zu den jewaligen Object gehören
                        pB[cu[i].getControl()].Location = cu[i].Move();
                        //Move bewegt die PictureBox um 5 schritte nach rechts
                        Rectangle ra = new Rectangle(x,y,100,100);
                        Rectangle cr;
                        for (int j = 0; j < cu.Count; j++)
                        {
                            if (cu[i].getControl() != cu[j].getControl())
                            {
                                cr = pB[cu[j].getControl()].RectangleToScreen(pB[cu[j].getControl()].ClientRectangle);
                                // cr ist ein Viereck was die PictureBox einschließt und genau die gleiche größe besitzt es liegt sogesehen 1 zu 1 auf der PictureBox
                                if (cr.IntersectsWith(ra)) 
                                {
                                   // prüft ob cr in ra ist
                                }
                                else
                                {
                                 // zeichnet ein viereck um die PictureBoxen mit einen abstand von 100 bzw. sollte es eigentlich
                                    ControlPaint.DrawReversibleFrame(ra,
                                            this.BackColor, FrameStyle.Dashed);
                                    ControlPaint.DrawReversibleFrame(cr,
                                            this.BackColor, FrameStyle.Dashed);
                                }
                            }
                        }

Das ganze befindet sich in einen Timer mit 500ms intervall.

16.12.2011 - 16:55 Uhr

ich hab es mit + und - 50 versucht ... jedes mal lag das Panel außerhalb des Vierecks.

X und Y stellen den Mittelpunkt da. Wenn ich mich nicht täusche berechne ich den ja wie oben beschrieben.

16.12.2011 - 16:30 Uhr

Auf den Screeshot sieht man das das Panel nicht mittig in den Viereckige Rahmen (bzw. der Rectangle) liegt. Jedoch soll das Panel genau in der Mitte sein.

16.12.2011 - 16:15 Uhr

Hallo zusammen,

ich komme bei einem kleinen problem nicht weiter ich habe ein Panel z.b. an position x = 100 und y = 100 nun möcht ich ein Rectangle erzeugen was von der Panel mitte genau 100 horizontal und vertikal entfernt ist.

dazu hab ich mir erstmal die Panel mitte errechnet

x = location + sizeX / 2
y = location + sizeY / 2

nun hab ich die Mitte und möchte von diesen punkt aus ein abstand von 100 haben

  Rectangle ra = new Rectangle(x,y,100,100);

mit diesen code müsste es schon die richige größe besitzen nun ist das Panel nur leider nicht in der mitte der Rectangle es befindet sich zwar innerhalb der Rectangle aber halt stark versetzt.

Eigentlich müsste doch die Linke obere ecke von der Rectangle genau auf der mitte des Panels sein oder nicht ?

um mir anzuzeigen wo das Panel in der Rectangle liegt nutze ich folgenden Code.

                                 ControlPaint.DrawReversibleFrame(cr,
                                            this.BackColor, FrameStyle.Dashed);

Weiß jemand zufällig was ich falsch machen.

Danke für euere Hilfe

Crone

15.12.2011 - 15:41 Uhr

Folgender Code müsste das bezwecken was du möchtest.


//Den erstellten Panels ein event zuweisen
this.unknown.MouseEnter += new System.EventHandler(this.Panels_MouseEnter);

//nun erstellst du noch folgendes
        private void Panels_MouseEnter(object sender, EventArgs e)
        {
            MessageBox.Show(((Control)sender).Name.ToString());
            ((Control)sender).BackColor = Color.Red;
        }

//jedes mal wenn du jetzt ein Panel betrittst wird per MessageBox z.b. der name ausgegeben.

Das gleiche hab hab ich mir auch gebastelt und eine ähnliche frage dazu hab ich hier auch gestellt per forum suche hättest du es bestimmt gefunden wobei ich hab label genutzt 😄

Über den Sender kannst du auch alle anderen properties abrufen und bearbeiten.

Wenn du das in einen Thread packst muss du den sender also object per ParameterizedThreadStart am besten das sender object übergeben oder natürlich mit invoke arbeiten 😃

Das problem mit der gedrückten Taste hatte ich komischerweise nicht bzw. Ich hatte das problem schon aber es ließ sich extrem einfach lösen aber wie weiß ich nicht mehr genau ich glaube das war irgendwas mit dragdrop oder enable true/false aber genau weiß ich das leider nicht mehr und kann auch leider grade nicht auf das projekt zurückgreifen.

EDIT:

Okay ich weiß wie ich es gemacht hab ich habe dieses viereckige feld zum markieren von meheren objecten erzeugt nur das die linien nicht angzeigt werden anschließend wird geschaut welche elemente in diesen bereich lagen. Diese wurden schließlich rot gefärbt 😄 Code beispiel kann ich dir geben sobald ich zuhause bin 😃

So hier das Code beispiel:

        bool isDrag = false;
        Rectangle theRectangle = new Rectangle
            (new Point(0, 0), new Size(0, 0));
        Point startPoint;
        List<int> id = new List<int>();
        List<Panel> panelCollection = new List<Panel>();

//nicht vergessen alle zur laufzeit erzeugten Panels der collection hinzuzufügen!

        private void Form1_MouseDown(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                id.Clear();
                isDrag = true;
            }
            Control control = (Control)sender;

            startPoint = control.PointToScreen(new Point(e.X, e.Y));

        }

        private void Form1_MouseMove(object sender, MouseEventArgs e)
        {
            if (isDrag)
            {
                movecheck = true;
                id.Clear();

                //ControlPaint.DrawReversibleFrame(theRectangle,
                //    this.BackColor, FrameStyle.Dashed);

                Point endPoint = ((Control)sender).PointToScreen(new Point(e.X, e.Y));

                int width = endPoint.X - startPoint.X;
                int height = endPoint.Y - startPoint.Y;
                theRectangle = new Rectangle(startPoint.X,
                    startPoint.Y, width, height);

                //ControlPaint.DrawReversibleFrame(theRectangle,
                  //  this.BackColor, FrameStyle.Dashed);
            }
        }

        private void Form1_MouseUp(object sender, MouseEventArgs e)
        {
            if (movecheck)
            {
                isDrag = false;

                //ControlPaint.DrawReversibleFrame(theRectangle,
                //    this.BackColor, FrameStyle.Dashed);

                Rectangle controlRectangle;
                for (int i = 0; i < panelCollection.Count; i++)
                {

                    controlRectangle = panelCollection[i].RectangleToScreen
                        (panelCollection[i].ClientRectangle);

                    if (controlRectangle.IntersectsWith(theRectangle))
                    {
                        id.Add(i);
                    }
                }
                movecheck = false;
            }
            else
            {
                //ControlPaint.DrawReversibleFrame(theRectangle,
                //    this.BackColor, FrameStyle.Dashed);
                isDrag = false;
            }
            theRectangle = new Rectangle(0, 0, 0, 0);
        }  

In der id Collection steht nun jeder index der inerhalb des feldes lag drin. Diese Collection gehst du mit einer schleife durch und setzt bei jedem Index die farbe z.b. auf Rot bei mir funktionierts super wobei ich es nur mit PictureBoxen und Labeln getestet habe 😃 aber bei Panels sollte sich nichts verändern. Problem ist das man also ein Viereck um die elemente bilden muss sprich nur eine mal kurz drüber reicht nicht wenn die elemente z.b. auf der Y axe versetzt sind.Wenn aber alle auf gleicher höhe sind reicht einmal grade durchziehen 😃. Vielleicht ist das für dich suboptimal aber mir hat gereicht 😄 wenn du noch das Viereck sehen willst einfach die Kommentare vor "ControlPaint.DrawReversibleFrame" entfernen.

Das ganze geht nur von der Linken oberen Ecke aus sprich fängst du von unten rechts an mit der Maus und gehst nach Links wird kein element hinzugefügt. Man muss immer von oben Links nach unten Rechts. Um das aber auch möglich zu machen muss du noch mehrere abfragen einfügen z.B. in welcher Richtung die Maus von startpunkt aus bewegt wurde, damit du auch die richtige berechnung der Rectangle ausführst.

Ich hoffe das hilft dir weiter.

Crone

15.12.2011 - 10:52 Uhr

Aber Dein Problem ist ja nun gelöst...

Grundsätzlich ja außer es weiß jemand ne möglichkeit dies zu bewerkstelligen ohne die * durch % zu ersezten. Aber ich glaube leider nicht dran das es dafür eine komfortable lösung gibt 😃. Man kann nicht alles haben 😃

Danke für euere hilfe.

15.12.2011 - 09:05 Uhr

war keine absicht 😃 habs einfach nur überlesen 😄

Wenn ich durch % ersetze funktionierts super Danke schonmal dafür 😃

Naja ich glaube das ich doch alle einträge mit * durch % ersetzen darf, was anderes ist denke ich nicht möglich 😄

15.12.2011 - 08:55 Uhr

aso sorry das hab ich noch nicht getestet die * durch % zu ersetzen soll eigentlich auch nich aber ich kanns ja einfachmal machen 😄

15.12.2011 - 08:41 Uhr

Wie gesagt ich habs getestet nur leider liefert es alle einträge zurück 😄

@Abt ich hab keine ahnung wie du drauf kommst das ich von MySQL keine ahnung hab... aber ich nutze MySql ständig und in vielen meiner Programm bis jetzt hat auch alles funktioniert und ich glaub ne Datenbank mit mehreren tausend tabellen und das ich auf der Arbeit nur mit Navision arbeite sagt glaube ich alles über meine kenntnisse. Falls du Navision nicht kennst es ist eigentlich nur Auf Datenbanke ausgericht mit C sided Programmier sprache.

Das problem sind weniger die Kenntniss sondern das problem ist das, dass was ich will gegen jeder logik verstößt und eigentlich kein sinn ergibt aber Performence sparrt, was bei vielen abfragen extrem nützlich ist. Und ich bin mir eigentlich schon fast sicher das es nicht möglich ist das umzusetzen was ich möchte ohne, dabei den String vorher zu bearbeiten.

Aber ich denke immer wieder an Signatur gfoidl.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"
xD

Also ohne die Datenbank zu bearbeiten, den dateinamen in C sharp zu manipulieren oder jeden eintrag einzelt durch zu gehen seh ich zu mindestens keine möglichkeit. Und wie bereits gesagt die Wildcards in den Datenbank einträgen (*) sind nur da weil der such vorgang vorher anders herum lief! 😄

13.12.2011 - 17:13 Uhr

ich habe test_12.12.12.xls

und will damit in der Datenbank test*.xls finden

Das abändern also Spliten des string "test_12.12.12.xls" ist nich vorgesehen da sich die strings (dateinamen) immer komplett unterscheiden!

gefunden wird kein eintrag aber ich werden mal die * in der Datenbank durch % ersetzen auch wenn dies nicht vorgesehen ist aber ich bezweifel das es geht.

Nur noch zur Erinnerung ich will nicht alle Datensätze einzelent durch gehen und vergleich .... falls jemand auf die idee kommen sollte 😄.

12.12.2011 - 19:54 Uhr

Poste mal bitte deine Tabelle mit ein paar Beispieldaten. Ich peil leider nicht ganz was du hier versuchst 😉

ja wiederspricht auch jeder logik was ich vor habe 😄

Tabelle mails
Spalten Email,text,subject,datei

in der Spalte datei steht z.b. folgendens

testdatei*.xls
test1234.xls
1337.xls
testdatei1*.csv
test12341.csv
13371.csv

Das sind so ziemlich alle möglichkeit die es gibt in der Datenbank

ich hab nun z.b. folgenden dateiname mit mein programm auf den PC entdeckt
testdatei_12.12.12.xls
oder
testdatei 12.12.12.xls

anhand diesen dateinahmen möchte ich jetzt den richtigen Datensatz in der SQL datenbank suchen. Sprich mit dem längeren wort such ich das kürzere nicht wie normalerweise mit dem kürzeren das längere.

Jedoch soll das ganze ohne Splitten des Dateinamen passieren. 😉

wiederspricht jeder logik glaube ich XD

12.12.2011 - 17:05 Uhr

In TSQL ginge

SELECT * FROM [Tabelle] WHERE 'test_12.12.12.xls' LIKE FILENAME  

Mit MYSQL kommt es bei der abfrage zu keinen fehler liefert jedoch alle Datensätze zurück.

12.12.2011 - 17:05 Uhr

Du musst quasi jeden Eintrag in der Datenbank mit Deinem Such-Eintrag vergleichen. Bedenke aber, dass es % heißt, und nicht *.

Stern ist richtig weil das ja nicht das statement ist sondern der eintrag in der Datenbank.Sprich ob da sternchen ist oder ?!() oder sonst was ist eigentlich egal. Die stehen deshalb darin weil die suche vorher andersrum verlief dafür muss ich aber alle datensätze durchgehen und das sternchen ist die Wildcard in C#, jedoch will ich nicht mehr alle Datensätze durch gehen sondern mit dem Dateiname den Datensatz suchen.

als beispiel ich suche mit einen ganzen text das wort test in test und test2

so ungefähr kann man sich das vorstellen genau umgekehrt wie es jeder normale Mensch eigentlich machen würde ;D

12.12.2011 - 15:46 Uhr

ganz einfach weil ich ich mit

SELECT * FROM [Tabelle] WHERE FileName LIKE 'test_12.12.12.xls'

suche. Ich habe test_12.12.12.xls als Ausgangspunkt und suche test*.xls in der Datenbank.

12.12.2011 - 15:27 Uhr

verwendetes Datenbanksystem: <bitte immer angeben>MYSQL

Hallo zusammen,

Ich habe mir ein Programm gemacht welches Emails per SMTP versendet. Dies funktioniert auch soweit gut nun möchte ich aber ein anhang versenden was ansich auch kein problem ist jedoch habe ich als Ausgangspunkt nur die Datei.

z.b. test_12.12.12.xls
oder
test.xls

in der Datenbank soll nun nachgeschaut werden welche Person diese Dateien erhalten soll.

In der Datenbank sind die Dateien wie folgt eingetragen

test*.xls

eine oder mehrere Dateien haben einen zeitstempel andere wiederrum nicht. Somit sehe ich keine möglichkeit mit LIKE den Datensatz herraus zu filtern. Kennt wer zufällig eine möglichkeit?

Das abtrennen des Zeistempels ist eigentlich auch nicht möglich da ich ja nicht wissen kann ob die Datei einen hat oder es einfach nur irgendwelche Zahlen Reihenfolgen sind.

Für ein paar gute ideen oder ein SQL statemante wäre ich sehr dankbar.

Zusammengefasst:

Ich möchte mit "test_1234.xls" in der Datenbank "test*.xls" oder "test.xls" suchen.

Mit freundliche Grüßen

Crone

24.11.2011 - 16:30 Uhr

okay danke die lösung war dämlich/einfach xDDD kein wunder das man in google nichts findet xDD

24.11.2011 - 16:18 Uhr

Hallo,

wie der Titel schon verrät habe ich probleme die Position der Maus auf meiner Form wieder zugeben.

mit

Cursor.Position

bekomme ich leider nur die Position auf den gesamten Bildschirm wieder. Da es sich jedoch nicht um eine Fullscreenanwendung handelt ist die position nicht sehr hilfreich.

Ich könnte natürlich anhand der Form Location und Size die 0;0 Position der Form berechnen und diese Position dann nutzen... jedoch bin ich mir schon fast sicher das es für sowas ne vorgefertige Methode gibt? Google und Forum suche haben leider zu keinem Ergenis geführt entweder ist die lösung so dämlich-einfach das keiner die frage gestellt hat oder alle haben einfach die Position selbst berechnet xD

MFG Crone

17.11.2011 - 21:26 Uhr

Ja hab ich auch schon drüber nachgedacht leider hab ich selber noch nie damit gearbeitet und müsstet mich da erst einarbeiteten aber aus mangelnder Zeit neben der Arbeit werde ich mir das denke ich erst in meinem nächsten Urlaub anschauen... ach ne ich mach es in der Firma gehört zur Ausbildung / selbstständigen Weiterbildung.^^

Naja ich werde es mir mal anschauen danke für den Tipp.

@ Muro

Eigentlich gleich beides 😉 sprich am besten wäre es wenn die das Datenbank Passwort nicht haben und auch nicht auf die Passwörter zugreifen können die in dieser gespeichert sind.

17.11.2011 - 21:15 Uhr

Ich Selber war Hauptschüler mit einem ziemlich schlechten Mittlere-reife. Naja ich hab mich dann schließlich für ein Bildungsgang entschieden den es zum ersten mal gab nämlich das Fachabitur in Elektrotechnik in der Profilbildung Imformations- und Kommunikationstechnik. Dieser ist ziemlich stark auf den Beruf Fachinformatiker in Anwendungsentwicklung und Systemintegration ausgelegt wodurch man relativ viel Praxis wissen vermittelt bekommt. Nachdem ich die 2 Jahr hinter mir hatte habe ich nun endlich meine Ausbildung in einer Firma begonnen die Weltweit vertreten ist und mit so ziemlich alle namen-haften Drucker Herstellern und mit Sony zusammen arbeitet. Durch das errungene Praxis-wissen könnte ich nicht nur beim Bewerben ziemlich stark punkten sondern auch während meiner Ausbildung (im Moment im 7 Monat). Bei uns in der Firma wird zwar fast ausschließlich in Navision(C-Side) programmiert, jedoch musste / konnte ich bis jetzt ziemlich viel mit C# entwickeln da man damit relativ einfach Probleme lösen kann die man mit anderen Programmiersprachen nur über komplizierte Wege lösen kann (dank .NET 😃). Also meiner Meinung nach kommt man mit einen Fachabi ziemlich gut zurecht wobei ich auch sagen muss das ich in der Schule ein Überflieger in der Programmierung war durch sehr viel Interesse und durch die Opferung von viel Freizeit zur selbstständigen Weiterbildung. Wobei ich mir überlege nach der Ausbildung auch ein Studium zu beginnen zum einen wegen dem höheren Gehalt zum anderen aber auch deshalb weil man dort jede menge neues lernt. Wer Interesse daran hat viel und neues zu lernen und auch motiviert ist selbstständig zu lernen ist glaub ich mit ein Studium gut dran mir persönlich macht nur die Mathematik sorgen 😃. Aber wer nicht motiviert und interessiert in programmieren ist hat sich sowieso den falschen Beruf aus gesucht ohne das überlebt man den Beruf einfach nicht xD.

Wäre nun Interessant zu wissen was Ihr davon haltet nach der Ausbildung noch ein Studium zu beginnen? Bei eueren antworten bitte immer die Studenten Partys nicht aus den Augen verlieren xD.

Der Text ist relativ zügig mit Smartphone geschrieben wer Rechtschreibfehler findet darf sie bei mir für 5 € kaufen.

Gruß Marcel

17.11.2011 - 20:44 Uhr

danke für euere hilfreichen antworte was mir jetzt spontan dazu einfällt ... ich verschlüssel einfach jedes Passwort mit dem Passwort was er verschlüsseln will somit sind nirgends die Passwörter in Klartext zu finden und auch nirgends in Programm hinterlegt. Sprich er kann so oder so nur mit den Passwort das Passwort entschlüsseln sprich wenn er es entschlüsseln kann bringt es ihm auch nichts mehr xD

zusätzlich geb ich ihm nur ein Benutzer mit read only rechten

Die Anmeldung werde ich dann lieber in ein php script auf ein Server verlagern wo keiner den Code einsehen kann bzw. ich das Passwort aus einer Datei aufrufe die man nur lokal(also nur der Server selbst) einsehen kann. Somit ist alles eigentlich sicher. Oder was meint ihr?

17.11.2011 - 16:36 Uhr

verwendetes Datenbanksystem: MySQL

Hallo,

Ich habe mir eine Datenbank erstellt mit den Feldern ID, Username und Passwort.

Wenn ich nun einen Datenbank zugriff in C sharp mache muss ich leider auch immer das Passwort der Datenbank angeben und somit kann auch jeder der das Progamm Decomiliert auf die Daten zugreifen. Nun hab ich mir gedacht ich verschlüssel einfach die Passwörter aber selbst dann muss ich die nötigen informationen wie z.b. das Entschlüsselungspasswort mit senden. Sprich wieder das gleiche problem wer es decomiliert kann auf alle daten zu greifen.

Meine Idee wäre nun folgendes und zwar das ich das verschlüsselte feld mit den eingegebenen Passwort vergleiche ohne das es per SQL statemant entschlüsselt werden muss. Nun ist die frage ob es sowas überhaupt gibt also eine verschlüsselung die sich in SQL selbst entschlüsselt und diese mit den übergebenen string vergleicht.

Andere alternativen wie man sowas lösen kann wären auch nicht schlecht.

Danke für euere Hilfe.

Mit freundlichen grüßen Marcel

30.09.2011 - 16:35 Uhr

Hallo ich habe ein Programm geschrieben welches ich nun erweitern möchte.
Es soll wenn man eine Datei mit Wildcard sucht den vollen Dateinamen zurück geben. Die datei befindet sich in einer der vorher eingetragenen Pfade

Beispiel:
test*.xls
wiedergabe: test1.xls

Ich hab nur ein weg gefunden mir den vollen Pfad + Dateiname wiedergeben zu lassen.

Ich möchte aber nur den Dateinamen und würde auch nur ungern den String spliten da der Pfad nicht immer gleich ist.

Ich hoffe Ihr kennt eine möglichkeit / Klasse/ Methode um den Dateinamen zu bekommen.

Danke im Vorraus

MFG Marcel

12.09.2011 - 20:31 Uhr

Hallo zusammen.

Zuerst einmal ja ich habe die suchfunktion genutzt und auch google 😉 wenn jemand dennoch ein thread hier in forum findet wäre ich für ein Link sehr dankbar.

So nun zu meinen Problem 😉

Ich würde gerne wissen wie man ein Voice stream also sowas wie skype und Teamspeak realisieren kann in CSharp und ob es da irgendwelche fertigen Klassen schon gibt so etwas.

Die einzige idee die mir jetzt spontan gekommen ist ist etwas aufzunehmen in 1 sek. interval und diese datei aufen server hochzuladen zeitgleich werden sekündlich audio dateien gedownloadet und abgespielt. Jedoch hat das doch zimlich starken einfluss auf die Internet verbindung zudem wäre die verzögerung schon relativ groß.

Es gibt sicherlich bessere lösungen daher bitte ich euch um hilfe und wen möglich mit bespielen (z.b. welche klassen man dafür verwenden könnte bzw. welche man dafür bräuchte).

Mit fruendlichen Grüßen Marcel

01.09.2011 - 08:56 Uhr

So okay habs soweit hinbekommen jedoch ne neue Fehlermeldung.

mein befehl lautet nun:

GetData("SELECT TOP 100 * FROM [dbo].[E_A_F TEST$Bin]");

oder
GetData("SELECT TOP 100 * FROM [DBName].[dbo].[E_A_F TEST$Bin]");

scheinen beide zu funktionieren nun macht aber plötzlich mein DateGridview ärger der zuvor mit einer anderen Datenbank funktioniert hat.

Fehlermeldung:
DateGridView-Ausnahme:

Systen.ArgumentException: Ungültiger Parameter. bei System.Drawing.Image.FormStream(Stream stream, Bollean useEmbeddedColor Managment, Boolean validateImageData)
bei
System.Drawing.ImageConverter.ConvertForm(ITypeDescriptorContext cpntext, CultureInfo culture, Object value) .....

wenn ich das richtig verstanden habe will der ein bild aus der Datenbank bei mir eintragen in dieser sind aber soweit ich weiß keine drin...

das probelm besteht nur bei einer zeile namens timestamp

EDIT: Hat sich erledigt war eine Spalte die nicht benötigt wird. Danke für die hilfe.

01.09.2011 - 08:39 Uhr

Fehlermeldung steht im ersten Beitrag von mir

GetData("SELECT * FROM dbo.[E_A_FTEST$Bin]");

bei mir aufjedenfall nicht 1 zu 1 kopiert hab mit und ohne dbo getestet.

01.09.2011 - 08:17 Uhr

so habs getestet

dbo.[E_A_FTEST$Bin]

funktioniert auch nicht gleich fehler meldung

31.08.2011 - 17:35 Uhr

Werde ich morgen testen Hans aber schon versucht nur hab ich um das EVO auch noch klammern gemacht. Jaja danke schonmal

31.08.2011 - 16:45 Uhr

verwendetes Datenbanksystem: <SQL 2008 R2>

Hallo ich möchte gerne eine Tabelle öffnen, jedoch gibt es probleme mit dem Tabellennamen dieser enthält nach einer Konvertierung ein "$" Zeichen. Nun ist das problem das ich die Tabelle bei mein Programm welches ich grade schreibe nicht aufrufen kann.

Tabellenname: dbo.E_A_FTEST$Bin

mein code:


        private void Form3_Load(object sender, EventArgs e)
        {
            dataGridView1.DataSource = bindingSource1;
            GetData("SELECT * FROM dbo.E_A_FTEST$Bin");
        }

        private void GetData(string selectCommand)
        {
            try
            {
                string connectionString = "Data Source=********;Initial Catalog=******;User ID=********;password=********;Integrated Security=false";
                dataAdapter = new SqlDataAdapter(selectCommand, connectionString);
                SqlCommandBuilder commandBuilder = new SqlCommandBuilder(dataAdapter);
                DataTable table = new DataTable();
                table.Locale = System.Globalization.CultureInfo.InvariantCulture;
                dataAdapter.Fill(table);
                bindingSource1.DataSource = table;
                dataGridView1.AutoResizeColumns(
                    DataGridViewAutoSizeColumnsMode.AllCellsExceptHeader);
            }
            catch (SqlException error)
            {
                MessageBox.Show(error.ToString());
            }
        }

error:

Fehlermeldung:
System.Data.SqlClient.SqlException: Ungültiger Objektname 'dbo.E_A_FTEST$Bin'.
bei System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
bei System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
bei System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
bei System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
bei System.Data.SqlClient.SqlDataReader.ConsumeMetaData()
bei System.Data.SqlClient.SqlDataReader.get_MetaData()
bei System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
bei System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)
bei System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)
bei System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
bei System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
bei System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
bei System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior)
bei System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
bei System.Data.Common.DbDataAdapter.Fill(DataTable[] dataTables, Int32 startRecord, Int32 maxRecords, IDbCommand command, CommandBehavior behavior)
bei System.Data.Common.DbDataAdapter.Fill(DataTable dataTable)
bei sqlverwaltung.Form3.GetData(String selectCommand) in C:\Users\croonenbroeckm\documents\visual studio 2010\Projects\sqlverwaltung\sqlverwaltung\Form3.cs:Zeile 57.

Hat zufällig wer ne idee wie ich das problem löse ohne das die Tabelle umbenannt werden muss?

Mit freundlichen grüßen Marcel

28.08.2011 - 22:04 Uhr

Hallo,

Ich bin grade dabei ein mehrzweck tool zu entwickel was Musik wieder geben kann Screenshots machen kann usw.

Jedoch hab ich probleme mit Tastenbindings. Mein Programm läuft z.b. grade im hintergrund z.b. ins tray system minimiert. Nun möchte ich das man z.b. auf Tastendruck ein Screenshot machen von der aktuell fokusierten Anwedung bzw. wenn man grade aufen Desktop ist natürlich ein Desktop-Screenshot.

Googlen hat mich leider auch nicht wirklich weiter gebracht und würde euch nun um hilfe bitten 😃

Kennt jemand zufällig eine möglichkeit das zu realisieren? Die Tasten sollen frei wählbar sein. Sprich es sollen einfach Tasten nutzbar sein "abc" etc. Zahlen F1-F12 Tastenkombinationen wie strg + p oder strg + alt + p usw.

Für einen beispiel Code oder ein Tutorial oder sowas wäre ich sehr dankbar .

Danke im vorraus.

Mit freundlichen grüßen Marcel