Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C++CLI / VB .Net / .Net-Framework » komischer fehler in visual studio

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] > 2 <
010
17.02.2006, 22:16 Uhr
Uwe
C/C++ Master
(Administrator)


Hallo,
ohne Quellcode... Schwierig. Hast Du evtl. die Eigenschaft ForeColor geändert? Wenn diese z.B.
auf "HighlightText" eingestellt ist, kannst Du nicht viel sehen.
--
"Es ist schwierig, ein Programm wirklich idiotensicher zu machen, weil Idioten so genial sind."

Bis dann...
Uwe
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
18.02.2006, 12:27 Uhr
~aha
Gast


gut hier der quellcode uwe :-)


C++:
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Net;
using System.Net.Sockets;
using System.Threading;
using System.IO;
using System.Diagnostics;

namespace Schulchat
{

    /// <summary>
    /// Zusammenfassung für Form1.
    /// </summary>
    public class Form1 : System.Windows.Forms.Form
    {
        int a;
        private System.Windows.Forms.RichTextBox sende;
        private System.Windows.Forms.Button button1;
        private System.Windows.Forms.RichTextBox gotmsg;
        private System.Windows.Forms.Button send;
        /// <summary>
        /// Erforderliche Designervariable.
        /// </summary>
        private System.ComponentModel.Container components = null;

        public Form1()
        {
            //
            // Erforderlich für die Windows Form-Designerunterstützung
            //
            InitializeComponent();

            //
            // TODO: Fügen Sie den Konstruktorcode nach dem Aufruf von InitializeComponent hinzu
            //
        }

        /// <summary>
        /// Die verwendeten Ressourcen bereinigen.
        /// </summary>
        protected override void Dispose( bool disposing )
        {
            if( disposing )
            {
                if (components != null)
                {
                    components.Dispose();

                }
            }
            base.Dispose( disposing );
        }

        #region Vom Windows Form-Designer generierter Code
        /// <summary>
        /// Erforderliche Methode für die Designerunterstützung.
        /// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden.
        /// </summary>
        private void InitializeComponent()
        {
            this.gotmsg = new System.Windows.Forms.RichTextBox();
            this.sende = new System.Windows.Forms.RichTextBox();
            this.button1 = new System.Windows.Forms.Button();
            this.send = new System.Windows.Forms.Button();
            this.SuspendLayout();
            //
            // gotmsg
            //
            this.gotmsg.Location = new System.Drawing.Point(8, 24);
            this.gotmsg.Name = "gotmsg";
            this.gotmsg.Size = new System.Drawing.Size(512, 224);
            this.gotmsg.TabIndex = 0;
            this.gotmsg.Text = "";
            this.gotmsg.TextChanged += new System.EventHandler(this.richTextBox1_TextChanged);
            //
            // sende
            //
            this.sende.Location = new System.Drawing.Point(8, 296);
            this.sende.Name = "sende";
            this.sende.Size = new System.Drawing.Size(504, 80);
            this.sende.TabIndex = 1;
            this.sende.Text = "";
            //
            // button1
            //
            this.button1.Location = new System.Drawing.Point(8, 384);
            this.button1.Name = "button1";
            this.button1.Size = new System.Drawing.Size(72, 24);
            this.button1.TabIndex = 2;
            this.button1.Text = "Chatstart";
            this.button1.Click += new System.EventHandler(this.button1_Click);
            //
            // send
            //
            this.send.Location = new System.Drawing.Point(440, 384);
            this.send.Name = "send";
            this.send.Size = new System.Drawing.Size(72, 24);
            this.send.TabIndex = 3;
            this.send.Text = "Senden";
            this.send.Click += new System.EventHandler(this.send_Click);
            //
            // Form1
            //
            this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
            this.ClientSize = new System.Drawing.Size(528, 478);
            this.Controls.Add(this.send);
            this.Controls.Add(this.button1);
            this.Controls.Add(this.sende);
            this.Controls.Add(this.gotmsg);
            this.Name = "Form1";
            this.Text = "Form1";
            this.Load += new System.EventHandler(this.Form1_Load);
            this.ResumeLayout(false);

        }
        #endregion

        /// <summary>
        /// Der Haupteinstiegspunkt für die Anwendung.
        /// </summary>
        
        
        static void Main()
        {
            Application.Run(new Form1());
        }

        private void Form1_Load(object sender, System.EventArgs e)
        {
        
        }
        
        public void SendMessage()
        {
            while (true)
            {
                int a = 1;
                if (File.Exists("C:\\set.txt"))
                {
                    if (a == 1)
                    {
                        sende.Text = "test";
                        sende.Invalidate();
                        sende.Update();
                        //MessageBox.Show("fett", "fd");
                        a = 0;
                    }
                    try
                    {
                        File.Delete("C:\\set.txt");
                        Thread.Sleep(500);
                    }
                    catch
                    {
                        //nix
                    }
                
                }
            }
        }

        public void GetMessage()
        {
            //Objekt der Klasse Form1 erstellen
            Form1 obj = new Form1();
            //string muss nicht immer neu erstellt werden
            string st = " hi ";
            //5 tausenstel warten bis es weiter geht
            Thread.Sleep(50);
            //Listener machen auf port 4711
            TcpListener msg = new TcpListener(4711);
            //starten
            msg.Start();
            //Socket erstellen
            Socket smsg = msg.AcceptSocket();
            //Network Stream zum kommunizieren erstellen
            NetworkStream ntwk = new NetworkStream(smsg);
            //Stream Reader erstellen um Nachrichten zu empfangen
            StreamReader x = new StreamReader(ntwk);
            //StreamWriter erstellen um Nachrichten zu senden
            StreamWriter y = new StreamWriter(ntwk);
            //Den Stream falls gesendet auch einlesen
            //muss jetzt mit try verbunden werden, falls nicths gsendet wurde darf kein fehler entstehen
            //Empfangen muss auch immer geprüft werden!!!
            while (true)
            {
                try
                {
                    new Thread(new ThreadStart(obj.SendMessage)).Start();
                    //Nachricht an den "Client" senden
                    y.WriteLine(st);
                    //Stream flushen
                    y.Flush();
                    //Lesen
                    st = x.ReadLine();
                    //In ner MessageBox darstellen
                    MessageBox.Show(st, "test");
                    //wegen schreiben testen
                    

                }
                catch
                {
                    //im prinzip kein fehler; einfach keine nachrichten reinbekommen
                    //programm entlasten indem kein befehl ausgeführt wird
                }
                //Socket und Listener nicht beenden!
            }
        }

        public void setport()
        {
            //In dieser Funktion werden die Ports geöffnet
            //Der Übergangsparameter port muss immer +1 für jeden weiteren Port sein
            //Falls nicht wird der Catch Teil ausgelöst
            int zahl = 0;
            Int32 port = 12001;
            string lese = "Keine Daten reingekommen";

            while (zahl <= 10)
            {
                TcpListener listen = new TcpListener(port);
                try
                {
                    listen.Start();
                }
                catch
                {
                    //scheißegal
                }
                try
                {
                    Socket socket1 = listen.AcceptSocket();

                    if (socket1.Connected)
                    {

                        //Hier kommt dann später der ganze Code rein
                        NetworkStream news = new NetworkStream(socket1);
                        StreamReader wartenews = new StreamReader(news);
                        lese = wartenews.ReadLine();
                        

                        listen.Stop();
                    }    
                }
                catch
                {
                    //so was von scheißegal
                }
                zahl++;
                port = port + 1;
            }
        }

        private void button1_Click(object sender, System.EventArgs e)
        {
            /* Hier wird der Chat initialisiert, das bedeutet die Listener werden gesetzt
             * die in der Port Range von 12000-13000 liegen. 1000 Ports Spielraum, falls
             * irgendwelche Ports dazwischen besetzt sein sollten.*/

            Int32 porttcp = 12001;        //Port Nummer 1 ist auf Standart 12001

            //Ein neues Objekt der Klasse Form1 anlegen
            Form1 objekt = new Form1();
            //Erster Thread starten, der dann die Ports öffnet und auf Verbindugen wartet
            new Thread(new ThreadStart(objekt.setport)).Start();
            //Eine 10tel Sekunde warten
            Thread.Sleep(100);
            new Thread(new ThreadStart(objekt.GetMessage)).Start();

        }

        private void richTextBox1_TextChanged(object sender, System.EventArgs e)
        {
        
        }

        private void send_Click(object sender, System.EventArgs e)
        {
            //StreamWriter setzen
            StreamWriter test = new StreamWriter("C:\\set.txt");
            test.WriteLine("NICHT LÖSCHEN!!!!!!!!!!!!!!!!!");
            test.Close();
            /* In der Funktion GetMessages kann dann geprüft werden ob
             * die Datei set.txt existiert und falls dies der Fall ist,
             * soll der Text gesendet werden.*/


        }
    }
}


 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
18.02.2006, 17:20 Uhr
Uwe
C/C++ Master
(Administrator)


Hallo,
gotmsg.Text wird nirgendwo ein Wert zugewiesen.
sende.Text = "test" wird nie ausgeführt, weil SendMessage() nie aufgerufen wird. Außerdem dürfte diese beim Aufruf in einer Endlosschleife hängen.
--
"Es ist schwierig, ein Programm wirklich idiotensicher zu machen, weil Idioten so genial sind."

Bis dann...
Uwe
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
013
18.02.2006, 18:43 Uhr
~ojeoje
Gast


also noch folgendes einbauen???


C++:
new Thread(new ThreadStart(objekt.SendMessage)).Start();




mfg
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
014
18.02.2006, 19:07 Uhr
Uwe
C/C++ Master
(Administrator)


Hallo,
jein! Jetzt seh ich erst worauf Du hinaus gehst.

C++:
//Ein neues Objekt der Klasse Form1 anlegen
Form1 objekt = new Form1();


Du erzeugst eine neue Instanz von Form1. Mit dieser arbeitest Du dann weiter. Da die neue Form aber nicht sichtbar ist, kannst Du somit auch kein Ergebnis sehen, was die TextBox betrifft. Deine MessageBox hingegen ist Formularunabhängig. Also kein Bug von VS. Wenn Du hingegen auf die bestehende Form verweist, dann sollte zumindest Dein gewünschtes Ergebnis zu sehen sein.

C++:
Form1 objekt = this;
....
....


Vorsicht,

C++:
while (true)
{}


ist eine Endlosschleife.
--
"Es ist schwierig, ein Programm wirklich idiotensicher zu machen, weil Idioten so genial sind."

Bis dann...
Uwe

Dieser Post wurde am 18.02.2006 um 19:10 Uhr von Uwe editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
015
19.02.2006, 17:00 Uhr
~ojeoje
Gast


hallo

habe jetzt das mit
Form1 objekt = this;
eingebaut, jedoch wird immer noch kein text angezeigt :-(

mfg
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
016
19.02.2006, 18:49 Uhr
Uwe
C/C++ Master
(Administrator)


Hallo,
mal ohne den tieferen Sinn Deines Quellcodes zu analysieren, aber folgendes sollte funktionieren:

C++:
public void SendMessage()
{
    //while (true)
    //{
        int a = 1;
        if (File.Exists("C:\\set.txt"))
        {
            if (a == 1)
                {
                sende.Text = "test";
                a = 0;
            }
            try
            {
                //File.Delete("C:\\set.txt");
                //Thread.Sleep(500);
            }
            catch
            {
                //nix
            }
                
        }
    //}
}
private void send_Click(object sender, System.EventArgs e)
{
    // Das alles macht im Moment - wenig Sinn funzt aber auch
    // Form1 objekt =  this;
    // new Thread(new ThreadStart(objekt.SendMessage)).Start();
    // oder
    // SendMessage();
    // oder
    new Thread(new ThreadStart(SendMessage)).Start();
}


--
"Es ist schwierig, ein Programm wirklich idiotensicher zu machen, weil Idioten so genial sind."

Bis dann...
Uwe
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 <     [ C++CLI / VB .Net / .Net-Framework ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: