Laden...

Forenbeiträge von xSeppelx Ingesamt 31 Beiträge

19.08.2010 - 16:46 Uhr

Hi,

ich habe ein Problem und zwar möchte ich mehrere Einträge aus einem Listview löschen.
Dazu erst mal mein Code:


 int anzahl = listView1.CheckedItems.Count;
        int[] x = new int[anzahl];
               int i = 0;
               while(i < anzahl){


                                     
                   x[i] = listView1.CheckedItems[i].Index;

                   if (listView1.CheckedItems[i].Checked)
                   {
                       listView1.Items.RemoveAt(x[i]);
                   }

                   i++;
                   

              }

Wenn ich jetzt mehrere Einträge auswähle gibt es einen Error das der Index zu hoch ist(also i).

Mal ein Beispiel:
Ich wähle 4 Elemente aus, 2 werden gelöscht und beim dritten zeigt er be dem Code
x_ = listView1.CheckedItems_.Index; folgendes an:
InvalidArgument=Value mit dem Wert 2 ist für index ungültig.
Parametername: index

Was kann das Problem sein?

mfg
Seppel

03.05.2010 - 19:50 Uhr

Hab gelesen das man mit List die neuen Mails bekommt, theor. sogar die Anzahl.
Bei meinem Test mit einem T-Online Account bekam ich aber nur die Antwort Ok, und wenn ich dann z.B. die Mail 1 öffnen will bekomme ich verschieden nummerierte Zahlen ausgegeben.
Seltsam...

03.05.2010 - 16:39 Uhr

Ok gesucht, probiert und gefunden:


                TcpClient tcpClient = new TcpClient();
                tcpClient.Connect(textBox1.Text, Convert.ToInt32(textBox4.Text));
//Server + Port
                NetworkStream netStrm = tcpClient.GetStream();
                System.IO.StreamReader strRead = new   System.IO.StreamReader(netStrm);
                if (tcpClient.Connected)
                {
                    MessageBox.Show("connected: " + strRead.ReadLine());
                }
                string login = "USER " + textBox2.Text + "\r\n";
                byte[] WriteBuffer = new byte[1024];
                ASCIIEncoding en = new System.Text.ASCIIEncoding();
                WriteBuffer = en.GetBytes(login);
                netStrm.Write(WriteBuffer, 0, WriteBuffer.Length);
                MessageBox.Show("response: " + strRead.ReadLine());
                login = "PASS" + textBox3.Text + "\r\n";
                WriteBuffer = en.GetBytes(login);
                netStrm.Write(WriteBuffer, 0, WriteBuffer.Length);
                MessageBox.Show("response: " + strRead.ReadLine());

                login = "LIST\r\n";
                WriteBuffer = en.GetBytes(login);
                netStrm.Write(WriteBuffer, 0, WriteBuffer.Length);
              /* Rauskommentiert weils über 100 Antworten gibt...
  string resp;
                while (true)
                {
                    resp = strRead.ReadLine();
                    MessageBox.Show("could resp be .\r\n " + resp);
                    if (resp == ".")
                    {
                        MessageBox.Show("yes");
                        break;
                    }
                    else
                    {
                        //MessageBox.Show("list: " + resp);
                        continue;
                    }
                }*/

                // Disconnect from the POP3 server
                login = "QUIT\r\n";
                WriteBuffer = en.GetBytes(login);
                netStrm.Write(WriteBuffer, 0, WriteBuffer.Length);
                MessageBox.Show("response: " + strRead.ReadLine());
            }
            catch (Exception ex)
            { Console.WriteLine(ex.ToString()); }

So das ganze habe ich teils im Inet gefunden.
Verbindung funktioniert, beim Quit am ende sagt er allerdings
Response: leer und davor –ERR unkown Command
So jetzt ist natürlich die Frage ist das Gerüst in Ordnung?
Und dann zur eigentlichen Aufgabe, wie lese ich das jetzt aus?^^

edit:
Code mal etwas sortiert und verbessert^^:



string CRLF = "\r\n";	
            //z.B. pop.gmx.net,110
            Server = new TcpClient(textBox1.Text, Convert.ToInt32(textBox4.Text));
            Status.Items.Clear(); //Listbox, dient als Log!

            try
            {
                NetStrm = Server.GetStream();
                RdStrm = new StreamReader(Server.GetStream());
                Status.Items.Add(RdStrm.ReadLine());

                Data = "USER " + textBox2.Text + CRLF;
                szData = System.Text.Encoding.ASCII.GetBytes(Data.ToCharArray());
                NetStrm.Write(szData, 0, szData.Length);
                Status.Items.Add(RdStrm.ReadLine());

                //MessageBox.Show(textBox2.Text);
                //MessageBox.Show(textBox3.Text);

                Data = "PASS " + textBox3.Text + CRLF;
                szData = System.Text.Encoding.ASCII.GetBytes(Data.ToCharArray());
                NetStrm.Write(szData, 0, szData.Length);
                Status.Items.Add(RdStrm.ReadLine());

                Data = "STAT" + CRLF;
                szData = System.Text.Encoding.ASCII.GetBytes(Data.ToCharArray());
                NetStrm.Write(szData, 0, szData.Length);
    
                Status.Items.Add(RdStrm.ReadLine());
            
//List muss ich ja zwangsläufig machen, damit ich die Mails bekomme oder?
                Data = "LIST" + CRLF;
                szData = System.Text.Encoding.ASCII.GetBytes(Data.ToCharArray());
                NetStrm.Write(szData, 0, szData.Length);
                Status.Items.Add(RdStrm.ReadLine());

                string szTemp;
                try
                {
                    // Hoffe mal ich habe das richtig verstanden das ich die Mail mit dem Index 1 bekomme...
                    Data = "RETR" + "1" + CRLF;
                    szData = System.Text.Encoding.ASCII.GetBytes(Data.ToCharArray());
                    NetStrm.Write(szData, 0, szData.Length);

                    szTemp = RdStrm.ReadLine();
                    if (szTemp[0] != '-')
                    {

                        while (szTemp != ".")
                        {
                            Message.Text += szTemp + CRLF;
                            szTemp = RdStrm.ReadLine();
                        }
                    }
                    else
                    {
                        Status.Items.Add(szTemp);
                    }

             
                }
                catch (InvalidOperationException err)
                {
                    Status.Items.Add("Error: " + err.ToString());
                }


            }
            catch (InvalidOperationException err)
            {
                Status.Items.Add("Error: " + err.ToString());
            }

Ich beziehie mich mal auf folgende Seite:
http://www.elektronik-kompendium.de/sites/net/0903091.htm
bzgl. des POP3 Protokolls.

jetzt weiß ich aber immer noch nicht wie ich die Anzahl der neuen Mails lesen soll^^

02.05.2010 - 18:02 Uhr

ok hab ein wenig gesucht, jetzt aber meine Frage:
Welche Pop3 Klasse soll ich denn am besten nutzen?
Gibt es da eine schlichte kleine die für meinen Zweck vollstens ausreicht?

02.05.2010 - 16:34 Uhr

Hi,

mir ist gerade die Idee gekommen mittels C# auf ungelesene Nachrichten zu prüfen, so dass ich mich nicht immer in mein Webmail Konto einloggen muss und dann doch nichts neues vorfinde(Außer Spam^^).

Nun zur Umsetzung:
Hab mich mal zu Pop3 und co. informiert, aber ich finde zu meinem Problem leider nichts.
Mails lesen und versicken ist recht klar, aber ich will die Mail nicht öffnen, nur prüfen ob ungelesene vorliegen.

Hoffe ihr könnt mir helfen.

mfg
Seppel

31.03.2010 - 21:36 Uhr

Danke für den Tipp, sieht auf jedenfall auch besser aus!

31.03.2010 - 16:32 Uhr

Ok gut, werd ich die erst mal weglassen 😉
Also ich werd das dann folgendermaßen umsetzen:

Abfrage ob Datei exisitiert:
Wenn ja:
Append Mode usw.

Wenn nein:
Datei anlegen und reinschreiben.
Wenn das dann im Prozess selbst aufgerufen wird geht es zur ersten Abfrage über.

31.03.2010 - 14:48 Uhr

Ja das wäre einfacher, aber ich hab die Problematik das in gewissen Fällen die Datei nicht vorhanden sein könnte. Also dann am besten eine Verzweigung?
Erst prüfen ob vorhanden, wenn nicht erstellen und ansonsten den Inhalt hinzufügen?

31.03.2010 - 14:41 Uhr

Ok Danke wäre sonst auch sehr komisch gewesen, warum es nicht geklappt hätte 😉
Wenn ich den Inhalt der Datei nicht jedesmal überschreiben will, muss ich das erst auslesen und wieder vor dem eigentliche Eintrag reinschreiben oder?

31.03.2010 - 14:14 Uhr

Nein ich frage mich ob ich den Code zu den anderen Öffentlichen Definitionen stellen soll,
so dass ich im Code dann immer auf die selbe Datei zugreifen kann, sprich wenn ich die Funktion xy aufrufe und die dann in die .txt Datei schreib Funktion xy aufgerufen, dann soll die Funktion abc das auch machen.

Zu "leider funktioniert das nicht", sorry falsch beschrieben.
Naja ich starte das Programm und in der Log datei steht nichts drin 😉
Das ist das Problem, folgendes mache ich aber:

 try
            {
                stream = new FileStream(path1, FileMode.Create);
                myWriter = new StreamWriter(stream);
            }
            catch { 
//Fehlerabfangen... kommt noch
}

            DateTime aktuell = new DateTime();
            myWriter.WriteLine("-------------");
            myWriter.WriteLine("Datum + Uhrzeit:" + aktuell);

Path1 wird über Public Form definiert und initiallisiert.
Das es nicht Funktioniert ist das eine Problem, das zweite das es nur bei der gezeigten Funktion funktioniert 😉 (also momentan ja auch nicht)

31.03.2010 - 13:54 Uhr

Hi,

Das ist der Code mit dem ich momentan versuche in eine Text Datei Einträge zu schreiben. Leider funktioniert das nicht ,denn ich weiß nicht an welcher Stelle ich die diesen Code schreiben soll?
Im Programm selbst muss ich mehrmals in die Datei schreiben...
Hoffe ihr versteht die Problematik, wenn nicht bitte fragen 😉

String path1 = System.Threading.Thread.GetDomain().BaseDirectory.ToString() + @"Protokoll.txt";
 stream = new FileStream(path1, FileMode.Create);
                myWriter = new StreamWriter(stream);
12.03.2010 - 16:44 Uhr

Ok deine Lösung ist wesentlich eleganter hatte eben was mit dem Ticker gebastelt, was auch funktioniert, aber eigentlich viel zu umständlich ist.
Danke!

12.03.2010 - 16:35 Uhr

Ok,
mit forms.timer kann meine IDE nichts anfangen oder meinst du das Steuerelement Timer?^^

12.03.2010 - 16:21 Uhr

Hi,

ich bastel gerade an einem Programm das einen Screenshot erstellen kann.
Das Problem ist aber das die Form im weg ist 😉
this.hide() und dann wieder show() sorgen nicht ausreichend dafür, da das Fenster dann immer noch so halb da ist.
Auch this.WindowState = FormWindowState.Minimized; lässt die Form im Bild nicht verschwinden...

Ich überlege gerade eine kurze Wartezeit nach dem minimieren oder verstecken einzubauen, meint ihr denn das nützt was? und wenn ja wie realisiert man so was am besten.

28.01.2010 - 18:55 Uhr

Stimmt punkto Geschwindigkeit kann ich auch bestätigen.
Aber ich hab ja 2008 auch noch installiert 😉
Ob 2008 angenehmer ist weiß ich nicht genau, arbeite mit beiden gerne.(Wobei du wahrscheinlich auch auf das Design herauszielst und das stimmt, da ist schlichtes besser!)

28.01.2010 - 15:52 Uhr

Gut weil ich setze seit ca. 2Wochen Visual Studio 2010 ein und bin eigentlich damit zufrieden. Mir kamen nur ein paar Bedenken weil es eine Beta ist.

28.01.2010 - 15:37 Uhr

Hi,

sollte man Visual Studio 2010 schon den Vorzug vor 2008 geben?
ich benutze von 2008 die Express Edition und von 2010 jetzt die Professional.(Werde mir dann aber wieder die 2010Express holen, wenn die Beta ausläuft.)

mfg
Seppel

28.01.2010 - 15:34 Uhr

Hi,

wenn man meine Awendung minimiert wird sie in den Tray geschoben, wenn man auf das Icon dann klickt oder via rechte maustaste im Menü dann auf Show klickt wird die Form wieder geladen.
Allerdings ist sie minimiert und ich würde sie gerne wiederherstellen, bzw. den Focus darauf setzen.

So sieht der aktuelle Code aus:


   this.Visible = true;
  
            this.Activate();

26.01.2010 - 12:05 Uhr

Clickonce habe ich mir auch angeschaut... ja aber da ist mir eine andere Lösung leiber.
Werd mir das mal ansehen was du noch gepostet hast.

edit:
AppDater ist ja schön und gut, aber einfach zu komplex für so ne Kleinigkeit...

26.01.2010 - 11:57 Uhr

Hi,

ich will in meinem Programm eine Update Funktion anbieten, so das man nicht immer ins Web muss, um die neuste Version zu erhalten. Zu dem möchte ich es umkompliziert darstellen, sprich Update drücken und fertig.

Ich habe mir das so gedacht:
Version übers Netz mit einer txt Datei abgleichen.
Wenn die Versionen nicht gleich sind Update freigeben.
Dann kann man den Update Button drücken und er lädt die neuen Dateien herunter.

Mein Programm besteht nur aus einer .exe.

Versions abgleich habe ich schon gemacht, jetzt aber zum eigentlichen Problem.

Wie kann ich das Update umsetzen?
Weil ich kann ja nicht einfach eine Datei ersetzen die gerade geöffnet ist.
Also habe ich zwei Möglichkeiten, extra eine Update.exe oder das ganze irgendwie temporär lösen.
Würde gerne letzteres machen, aber wie? Ich hab gegooglet und was von einer Schattenkopie gelesen, klang interessant, aber ohne Code und dann noch auf Holländisch^^(Vielleicht kennt sich ja hier jemand mit der Schattenkopie aus)

Dann wenn ich die Datei herunterladen will, muss ich sie als .exe auf den Server laden. Sollte man die dann vlt. noch verpacken oder anders nennen?

Danke für die Hilfe schon mal.

mfg

20.01.2010 - 16:13 Uhr

Was soll ich denn sonst verwenden?
Ich will eigentlich nur eine kleine Datenbankanwendung realisieren, Mehrfachausführung ist nicht erforderlich und es soll halt nur lesen und schreiben können 😉

20.01.2010 - 15:02 Uhr

Hi,

ich suche ein einfaches aber umfangreiches Tutorial, von mir aus auch nur ein Beispiel Programm was ADO.Net in Grundzügen umfasst 😉
Ich will eigentlich nur lesen, schreiben, updaten und löschen können und das mit XML oder Access. Mehr nicht xD

Hoffe jemand kann mir so ein Tutorial nahe legen, denn alle die ich kenne sind doch zu komplex für quasi einen Datenbank Einsteiger.

17.01.2010 - 17:17 Uhr

hab sowas noch nie gemacht^^
kannst du das mal "näher" erläutern.

17.01.2010 - 15:40 Uhr

Hi,

ich bin gerade dabei eine XML Datei über ein datagridview zu verwalten.
Der Inhalt wird derzeit in Textboxen geladen wenn man auf eine Zelle drückt.(Also die Spalte dann)

Jedenfalls habe ich mir jetzt überlegt, das wenn ich doch da was bearbeiten will das ich eine ID brauche?
Weil woher weiß er sonst wie er was bearbeiten soll?

Genauso wenn man über die Columns sortiert, danach werden einem auch andere Werte angezeigt.

Löschen und hinzufügen ja genauso...

17.01.2010 - 15:28 Uhr

Danke für die Antwort, ja war nur ein Denkfehler 😉

Das Endergebnis will ich nicht verheimlichen:


    TextBox[] TextBoxes = new TextBox[4];
                TextBoxes[0] = textBox1;
                TextBoxes[1] = textBox2;
                TextBoxes[2] = textBox3;
                TextBoxes[3] = textBox4;
                TextBoxes[4] = textBox5;

            for( int x = 0; x < dataGridView1.Columns.Count; x++ ){
                TextBoxes[x].Text = dataGridView1.CurrentRow.Cells[x].Value.ToString();
   
            }

17.01.2010 - 15:03 Uhr

Moin,

ich habe jetzt ein gefülltes datagridview und wenn ich auf die erste Zelle klicke(z.B.) will ich das die gesamte Row(hoffe ich sage gerade das richtige, also die ganze Reihe die zur Zelle dazu gehört) in jeweils eine für jedes Column vorgesehene Textbox geladen wird.

Aktuell habe ich etwas das überhaupt nicht funktioniert:


int i = dataGridView1.CurrentRow.Index;
               
                textBox1.Text = dataGridView1.SelectedCells[i].Value.ToString();

Aber ich glaub ich hab da einfach einen Denkfehler und kenne den Befehl nicht.

Hoffe jemand versteht mein Problem und kann mir helfen.

16.01.2010 - 10:35 Uhr

Hab eben auf einer Seite etwas gefunden:


 XDocument loaded = XDocument.Load(@System.Threading.Thread.GetDomain().BaseDirectory+"/Film.xml");

            var Datenbank= from x in loaded.Descendants("FILM")
                        select new
                        {
                            Titel = x.Descendants("TITEL").First().Value,
                            Genre = x.Descendants("GENRE").First().Value,
                            Darsteller = x.Descendants("Darsteller").First().Value,
                            Dauer = x.Descendants("Dauer").First().Value,
                            Format = x.Descendants("Format").First().Value,
                        }; //Returns an anonymous custom type
           
//Fehler
            lvwResult.DataSource = Datenbank;
            lvwResult.DataBind();


letzteres wird als Fehler angezeigt, felht mir da eine using Anweisung?

15.01.2010 - 16:27 Uhr

kk werde ich mir mal anschauen.
Prinzipiell verstehe ich XML ja, nur habe ich keine ahnung wie ich es in C# verwenden soll.

Danke schon mal.

15.01.2010 - 14:41 Uhr

Also ich habe überhaupt keine Ahnung wie ich die Daten aus der XML Datei in ein listview(oder soll man da was anderes nehmen) schieben soll.
Deswegen suche ich ja auch nach nem guten XML Tutorial 😉

Da XML nicht ganz so schwer ist hoffe ich, werde ich wohl das nehmen.

Hoffe jemand kann mir helfen.

14.01.2010 - 19:45 Uhr

Hi,

ich schreibe mir gerade eine Film Datenbank.(Um meine doch etwas größere Filmdatenbank zu verwalten)
Ich habe mich für XML entschieden, da ich von den anderen Datenbanktechnologien wenig ahnung habe und leider keine gescheite Anleitung finde wo erklärt wird welche Datenbanktechnologie für welches Problem benutzt werden soll.

Die XML Datei hat derzeit folgenden Aufbau:

<?xml version="1.0"?>
<DATENBANK>
<FILM>
<TITEL>BATMAN</TITEL>
<GENRE>Action</GENRE>
<DARSTELLER>Test</DARSTELLER>
<DAUER>200minuten</DAUER>
<FORMAT>DVD</FORMAT>
</FILM>
<FILM>
<TITEL>BATMAN</TITEL>
<GENRE>Action</GENRE>
<DARSTELLER>Test</DARSTELLER>
<DAUER>200minuten</DAUER>
<FORMAT>DVD</FORMAT>
</FILM><FILM>
<TITEL>BATMAN</TITEL>
<GENRE>Action</GENRE>
<DARSTELLER>Test</DARSTELLER>
<DAUER>200minuten</DAUER>
<FORMAT>DVD</FORMAT>
</FILM>
</DATENBANK>

Beim Programm habe ich momentan noch wenig, außer der GUI.(und ein paar Kleinigkeiten)

Ich würde gerne den XML Inhalt in ein Listview laden.
Die Frage ist nur wie das geht 😉

Hoffe jemand kann mir helfen oder ein gutes Tutorial geben, leider finde ich keins...(Wirklich).