Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Microsoft Visual C# Express beendet sich einfach? (https://www.delphipraxis.net/74611-microsoft-visual-c-express-beendet-sich-einfach.html)

Pseudemys Nelsoni 6. Aug 2006 10:52


Microsoft Visual C# Express beendet sich einfach?
 
hi,

ich habe in meinem Projekt eine neue Datei für eine Klasse(Komponente) angelegt, diese sieht ca so aus:

Code:
using System;
using System.Collections.Generic;
using System.Text;
using System.ComponentModel;
using System.Net.Sockets;

namespace IRC
{
    class IRCClient : Component
    {
        const short MESSAGE_BUFFERSIZE = 512;
        private TcpClient tcpClient = new TcpClient();

        public string Hostname
        {
            get { return Hostname; }
            set { Hostname = value; }
        }

        public short Port
        {
            get { return Port; }
            set { Port = value; }
        }

        public delegate void ConnectEventHandler(object sender, EventArgs e);
        public event ConnectEventHandler OnConnect;

        public void Connect()
        {
            tcpClient.Connect(Hostname, Port);
        }

        public void Disconnect()
        {
            tcpClient.Close();
        }

        public void Raw(string Message)
        {
            if (tcpClient != null)
            {
                byte[] buf = new byte[MESSAGE_BUFFERSIZE];
                Message += "\r\n";
                buf = System.Text.Encoding.UTF8.GetBytes(Message.ToCharArray());
                tcpClient.GetStream().Write(buf, 0, buf.Length);
            }
        }

        public void Message(string Target, string Message)
        {
            Raw(String.Format("PRIVMSG {0} :{1}", Target, Message));
        }

        public void Notice(string Target, string Message)
        {
            Raw(String.Format("NOTICE {0} :{1}", Target, Message));
        }

        public void Join(string Channel)
        {
            Raw(String.Format("JOIN {0}", Channel));
        }

        public void Join(string Channel, string Password)
        {
            Raw(String.Format("JOIN {0} {1}", Channel, Password));
        }

        public void Part(string Channel)
        {
            Raw(String.Format("PART {0}", Channel));
        }

        public void Part(string Channel, string Message)
        {
            Raw(String.Format("PART {0} :{1}", Channel, Message));
        }

        public void Quit()
        {
            Raw("QUIT");
        }

        public void Quit(string Message)
        {
            Raw(String.Format("QUIT :{0}", Message));
        }

        public void Invite(string Nickname, string Channel)
        {
            Raw(String.Format("INVITE {0} {1}", Nickname, Channel));
        }

        public void Nick(string Nickname)
        {
            Raw(String.Format("NICK :{0}", Nickname));
        }
    }
}
So, wenn ich nun zum Tab von Form.cs wechsle und mir eine Komponente dieses Codes s.o auf die Form ziehe, beendet sich MSVC#... Hat jemand ne Ahnung wieso? Bug?

Elvis 6. Aug 2006 11:54

Re: Microsoft Visual C# Express beendet sich einfach?
 
Zitat:

Zitat von Pseudemys Nelsoni
hi,
ich habe in meinem Projekt eine neue Datei für eine Klasse(Komponente) angelegt, diese sieht ca so aus:
Code:
...
        public string Hostname
        {
            get { return Hostname; }
            set { Hostname = value; }
        }

        public short Port
        {
            get { return Port; }
            set { Port = value; }
        }
...

Überleg mal ganz genau was hier passiert und warum das nicht gehen kann. ;-)
Zitat:

So, wenn ich nun zum Tab von Form.cs wechsle und mir eine Komponente dieses Codes s.o auf die Form ziehe, beendet sich MSVC#... Hat jemand ne Ahnung wieso? Bug?
Jain. Der Bug ist der Stackoverflow in deiner Komponente. Dass das VS keine Fehlermeldung rausrückt sondern bei Stackoverflows im Designer generell einfach verschwindet könnte man auch als Bug bezeichnen...

Pseudemys Nelsoni 6. Aug 2006 12:06

Re: Microsoft Visual C# Express beendet sich einfach?
 
Moin Elvis,

den Teil den du gequotet hast, der sieht für mich fehlerfrei aus - auch wenn er das wohl nicht sein wird wenn du ihn quotest :???: . Muss ich evtl vorher noch ne Variable für die Properties anlegen? Dachte dass der Kopf der Property selbst schon die Variable ist. Könnte ja sein, dass sich "get" immer wieder endlos aufruft? Also so die Theorie *g*... hmm

DGL-luke 6. Aug 2006 12:08

Re: Microsoft Visual C# Express beendet sich einfach?
 
Aus Delphi kennt man ja da den "private"-Abschnitt mit diversen FVariablen... Ja, du hast da eine Endlosschleife drin.

Elvis 6. Aug 2006 12:14

Re: Microsoft Visual C# Express beendet sich einfach?
 
Zitat:

Zitat von DGL-luke
Aus Delphi kennt man ja da den "private"-Abschnitt mit diversen FVariablen...

Warum nennst du sie nicht einfach Felder? ;)

@Pseudo
Wo denkt du denn, dass eine Instanz deiner Klasse die Werte von HostName und Port ablegt?
Ich kann kein Feld sehen, in dem die Werte liegen könnten.

Pseudemys Nelsoni 6. Aug 2006 12:18

Re: Microsoft Visual C# Express beendet sich einfach?
 
Ich hatte sie nur kurzzeitig als public, weil als ich sie private hatte ist das o.g Phänomen erst aufgetreten *g*. Nun aber auch wenn public ist, d.h daran liegt es wohl nicht - sollte ja auch nicht.

@Elvis:

Ich dachte, dass bei

Code:
        public short Port
        { 
            get { return Port; } 
            set { Port = value; } 
        }
die Property "Port" selbst die Variable repräsentiert, hab ich mich wohl getäuscht hm? *g.

Danke für eure Hilfe :). Mal testen

Elvis 6. Aug 2006 12:21

Re: Microsoft Visual C# Express beendet sich einfach?
 
Zitat:

Zitat von Pseudemys Nelsoni
die Property "Port" selbst die Variable repräsentiert, hab ich mich wohl getäuscht hm? *g.

Was passiert hier in Delphi?
Delphi-Quellcode:
Mööp = class
public
  property HostName : Lala read HostName write HostName;

sakura 6. Aug 2006 12:21

Re: Microsoft Visual C# Express beendet sich einfach?
 
Zitat:

Zitat von Pseudemys Nelsoni
die Property "Port" selbst die Variable repräsentiert, hab ich mich wohl getäuscht hm? *g.

Getäüscht hast Du Dich ;) Port ist auch innerhalb der Getter und Setter die Eigenschaft Port.

Anders gesagt: Im Getter gibst Du zurück, was in der Eigenschaft Port steht. Um dieses zu ermitteln musst Du den Getter von Port aufrufen. Im Getter gibst Du zurück, was in der Eigenschaft Port steht. Um dieses zu ermitteln musst Du den Getter von Port aufrufen. Im Getter gibst Du zurück, was in der Eigenschaft Port steht. Um dieses zu ermitteln musst Du den Getter von Port aufrufen. Im Getter gibst Du zurück, was in der Eigenschaft Port steht. Um dieses zu ermitteln musst Du den Getter von Port aufrufen. Im Getter gibst Du zurück, was in der Eigenschaft Port steht. Um dieses zu ermitteln musst Du den Getter von Port aufrufen. ...

...:cat:...

Elvis 6. Aug 2006 12:24

Re: Microsoft Visual C# Express beendet sich einfach?
 
Zitat:

Zitat von sakura
Anders gesagt: Im Getter gibst Du zurück, was in der Eigenschaft Port steht. Um dieses zu ermitteln musst Du den Getter von Port aufrufen.

Hejlsberg kann deutsch? :gruebel: :mrgreen:

sakura 6. Aug 2006 12:28

Re: Microsoft Visual C# Express beendet sich einfach?
 
Zitat:

Zitat von Elvis
Zitat:

Zitat von sakura
Anders gesagt:

Hejlsberg kann deutsch?

:nerd: :lol:

...:cat:...


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:53 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz