Laden...
T
thejudge myCSharp.de - Member
Student Darmstadt Dabei seit 15.10.2006 94 Beiträge
Benutzerbeschreibung

Forenbeiträge von thejudge Ingesamt 94 Beiträge

04.12.2006 - 13:49 Uhr

Hallo,

hier erstmal der code:


        # region COMMON SOCKET Vars/Events
        /// <summary>
        ///  Common things
        /// </summary>

        private const int _port = 10000;
        public Socket listener;
        public Socket sclient;
        public Socket client;
        private byte[] data = new byte[1024];
        delegate void TTTGetStrings(string msg);
        private event TTTGetStrings tttgetstring;

        void OnStringInterpret(string msg)
        {
            listBox1.Items.Add(msg);
        }

        # endregion

        # region TTTSOCKETLISTENER
        /// <summary>
        ///  Server settings
        /// </summary>

        public void startlisten()
        {
            listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            listener.Bind(new IPEndPoint(IPAddress.Loopback, _port));	// For use with localhost 127.0.0.1
            listener.Listen(1);
            listener.BeginAccept(new AsyncCallback(OnConnectRequest), listener);
        }
        void OnConnectRequest(IAsyncResult ar)
        {
            Socket listener = (Socket)ar.AsyncState;
            Socket sclient = listener.EndAccept(ar);
            string senddata = "TTT: Successfully Connected";
            byte[] msg = Encoding.ASCII.GetBytes(senddata);
            sclient.BeginSend(msg, 0, msg.Length, SocketFlags.None, new AsyncCallback(ToClientSendData), sclient);
        }

        void ToClientSendData(IAsyncResult ar)
        {
            Socket sclient = (Socket)ar.AsyncState;
            int sent = sclient.EndSend(ar);
            sclient.BeginReceive(data, 0, data.Length, SocketFlags.None, new AsyncCallback(OnReceive), sclient);
        }
        void SendToClient(string message)
        {
            byte[] msg = Encoding.ASCII.GetBytes(message);
            try
            {
                sclient.BeginSend(msg, 0, msg.Length, SocketFlags.None, new AsyncCallback(ToClientSendData), sclient); // <--- FEHLER!
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }

        void OnReceive(IAsyncResult ar)
        {
            Socket sclient = (Socket)ar.AsyncState;
            int recv = sclient.EndReceive(ar);
            if (recv == 0)
            {
                sclient.Close();
                listener.BeginAccept(new AsyncCallback(OnConnectRequest), listener);
                return;
            }
            string receiveddata = Encoding.ASCII.GetString(data, 0, recv);
            Invoke(tttgetstring, new string[] { receiveddata });
            sclient.BeginReceive(data, 0, data.Length, SocketFlags.None, new AsyncCallback(OnReceive), sclient);
        }

        # endregion

        # region TTTSOCKETCLIENT
        /// <summary>
        ///  Client settings
        /// </summary>

        public void startconnect()
        {
            Socket newsock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            newsock.Blocking = false;
            IPEndPoint iep = new IPEndPoint(IPAddress.Parse("127.0.0.1"), _port);
            listBox1.Items.Add("Connecting...");
            newsock.BeginConnect(iep, new AsyncCallback(OnConnect), newsock);
        }
        void OnConnect(IAsyncResult ar)
        {
            client = (Socket)ar.AsyncState;
            try
            {
                client.EndConnect(ar);
                client.BeginReceive(data, 0, data.Length, SocketFlags.None, new AsyncCallback(COnReceive), client);
            }
            catch (Exception)
            {
                listBox1.Items.Add("Es konnte keine Verbindung aufgebaut werden");
            }
        }
        void COnReceive(IAsyncResult ar)
        {
            Socket remote = (Socket)ar.AsyncState;
            int recv = remote.EndReceive(ar);
            string receiveddata = Encoding.ASCII.GetString(data, 0, recv);
            Invoke(tttgetstring, new string[] { receiveddata });
            client.BeginReceive(data, 0, data.Length, SocketFlags.None, new AsyncCallback(COnReceive), client);
        }
        void COnSent(IAsyncResult ar)
        {
            Socket remote = (Socket)ar.AsyncState;
            int sent = remote.EndSend(ar);
            remote.BeginReceive(data, 0, data.Length, SocketFlags.None, new AsyncCallback(COnReceive), remote);
        }

        # endregion

Der Client teil funktioniert ohne probleme. kann messages versenden und empfangen
der server macht das aber nich so wie er soll. messages empfangen und verarbeiten sind kein problem aber selber messages senden kann er nich (im sentoclient teil).
Fehlermeldung: "NullReferenceException: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt."
Fehlerzeile ist markiert oben. es kann sich eigtl nur um sclient handeln aber das funkioniert ja wenn er die successfully connected msg senden soll, also die versendet er. nur das SendToClient macht probleme und ich weiß nich warum.

hoffe jemand kann mir helfen ;D (is bestimmt nurn doofer fehler den ich grad nich seh)

mfg

03.12.2006 - 18:40 Uhr

so das is zwar schon ne ganze weile her, aber ich hab mich erst seit gestern wieder damit befasst und nun auch ne lösung gefunden.
ich poste hier einfach mal den code, da ich mir gut vorstellen kann, dass es noch mehrere leute mit diesem problem geben wird.


        #region IRCCONNECTION

        private Socket client;
        private byte[] data = new byte[4096];
        private delegate void Addmsgs(string msg);
        private event Addmsgs Addmsg;
        public void ircconnect()
        {
            Socket newsock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            IPEndPoint iep = new IPEndPoint(IPAddress.Parse("194.159.164.211"), 6668); //in diesem fall ein uk server
            newsock.Blocking = false;
            newsock.BeginConnect(iep, new AsyncCallback(OnConnect), newsock);
        }
        public void OnConnect(IAsyncResult ar)
        {
            client = (Socket)ar.AsyncState;
            try
            {
                client.EndConnect(ar);
                client.BeginReceive(data, 0, data.Length, SocketFlags.None, new AsyncCallback(OnReceive), client);
            }
            catch (Exception)
            {
                MessageBox.Show("Es konnte keine Verbindung aufgebaut werden.", "Verbindungsfehler");
            }
        }
        public void OnReceive(IAsyncResult ar)
        {
            try
            {
                Socket remote = (Socket)ar.AsyncState;
                int recv = remote.EndReceive(ar);
                string receiveddata = Encoding.ASCII.GetString(data, 0, recv);
                Invoke(Addmsg, new string[] { receiveddata });
                remote.BeginReceive(data, 0, data.Length, SocketFlags.None, new AsyncCallback(OnReceive), remote);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
        public void OnSend(IAsyncResult ar)
        {
            try
            {
                Socket remote = (Socket)ar.AsyncState;
                int sent = remote.EndSend(ar);
                remote.BeginReceive(data, 0, data.Length, SocketFlags.None, new AsyncCallback(OnReceive), remote);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        public void IRCCommand(string msg)
        {
            richTextBox1.Text = richTextBox1.Text + msg + "\nNEU\n";
            if (Regex.IsMatch(msg, @"NOTICE AUTH \:\*\*\* Checking Ident"))
            {
                string send = "USER TESTER * * :nreal anyname\r\nNICK anyname\r\n";
                byte[] bytes = Encoding.ASCII.GetBytes(send);
                client.BeginSend(bytes, 0, bytes.Length, SocketFlags.None, new AsyncCallback(OnSend), client);
            }
            else if (Regex.IsMatch(msg, @"^PING :(\d+)"))
            {
                Match m = Regex.Match(msg, @"(\d+)");
                if (m.Success)
                {
                    byte[] bytes = Encoding.ASCII.GetBytes("PONG :"+m.Value+"\r\n");
                    client.BeginSend(bytes, 0, bytes.Length, SocketFlags.None, new AsyncCallback(OnSend), client);
                }
            }
        }

        #endregion

mit ircconnect(); startet die ganze sache. auf ner form sollte es eine richtextbox1 geben.
ins form1() muss noch

Addmsg = new Addmsgs(IRCCommand);

rein.

weitere commands senden:


        private void button1_Click(object sender, EventArgs e)
        {
            if (textBox1.Text != "")
            {
                byte[] bytes = Encoding.ASCII.GetBytes(textBox1.Text+"\r\n");
                client.BeginSend(bytes, 0, bytes.Length, SocketFlags.None, new AsyncCallback(OnSend), client);
            }
        }

mfg

ps: falls wer was an dem code zu meckern hat, kann gerne verbesserungsvorschläge machen ;D

02.12.2006 - 16:12 Uhr

jo hat geholfen thanks

02.12.2006 - 14:44 Uhr

hallo,

irgendwie hab ich nen komischen fehler.
wenn ich debug und er somit die form startet nimmt VS keine änderungen mehr an.
ich glaub das ganze ist seitdem ich das teil abgespeichert hab. wie krieg ichs wieder hin dass er änderungen vornimmt?
(bild im anhang)

mfg

28.11.2006 - 12:51 Uhr

http://www.asp.net/learn/videos/default.aspx?tabid=63

schau dir mal die videos for beginners an.. das wird dir sehr helfen

mfg

28.11.2006 - 12:38 Uhr

Original von xxxprod
Mir is bei dem Thema wohl die Kreativität ausgegangen. Hätt gerne meine Programmierkentnisse unter "Beweis" gestellt aber für den Inhalt der Fenster ist mir einfach nichts "Gscheites" eingefallen also hab ichs bleiben lassen.

geht mir genauso. das grundgerüst hatte ich schon fertig.. ich hätte nur noch die türen füllen müssen aber dazu war ich dann zu faul 🙁

26.11.2006 - 22:34 Uhr

du könntest die rectangles in einer List speichern und dann im mouseclick event durchgehen und schauen ob der punkt im rechteck liegt und falls ja was machen


private List<Rectangle> Frectlist = new List<Rectangle>();

//und im mouseclickevent vom picturebox (oder auch form)
foreach (Rectangle r in Frectlist)
{
 if (r.Contains(e.X, e.Y)) // evtl musses auch r.Contains(new Point(e.X, e.Y)) sein
 { 
   //mach was
 }
}

das sollte es tun

mfg

26.11.2006 - 15:48 Uhr

ne idee:
wieso machste des was du mit den sessions machen willst net im page load event? und wenn du die seite herausfinden willst, welche geöffnet wurde etc, dazu gibts klassen die das für dich ausgeben.

mfg

26.11.2006 - 11:27 Uhr

hört sich an als würdest du masterpages gut gebrauchen können. hierzu mal ein link zu video webcasts die dir das gut beibringen:
page: http://asp.net/learn/videos/default.aspx?tabid=63
css & master page webcast: http://msdn.microsoft.com/vstudio/express/media/en/AbsoluteBeginner/vwd/06vcs.wvx

und lesson 9 kannste dir auch ma anguggn. da werden die login controls erklärt.

mfg

23.11.2006 - 22:15 Uhr

der stream bereits nach dem lesen der willkommensnachricht wieder geschlossen werden...

lösung: asynchrone sockets http://www.codeproject.com/cs/internet/socketsincs.asp

zudem:
dir ist klar dass du das rfc verarbeiten musst!?
http://www.faqs.org/rfcs/rfc959.html

22.11.2006 - 14:48 Uhr

in der if einfach Form1.Width bzw Height verwenden
=>


if ((x < Form1.Width) && (y < Form1.Height))

mfg

21.11.2006 - 19:02 Uhr

also wenn du die treeview erstellst kannst du doch im property window auf Nodes klicken und an nem knotenpunkt die eigenschaft expanded auf true stellen und dann bleibt das teil die ganze zeit geöffnet, so wie dus willst.

solltest du die treeview erst später erstellen, kannste ja immernoch die property ändern.

mfg

21.11.2006 - 16:51 Uhr

wenn du die knoten bearbeitest, sag doch grad, dass expanded true sein soll und schon ist immer der knoten expanded! das ist ja das was du haben willst, wenn ich dich richtig verstanden habe..

mfg

21.11.2006 - 13:11 Uhr

für ASP.NET
http://asp.net/learn/videos/default.aspx?tabid=63
Videos for ASP.NET 2.0 Beginners - Lesson 7 & 8
(gibt bestimmt noch gute tuts über google zu finden)

visual c#
http://www.galileocomputing.de/openbook/visual_csharp/visual_csharp_26_000.htm#Xxx999338

ich denke, dass man nicht unbedingt ein buch dafür kaufen muss ;>

ansonsten guck dir das mal an (Link)
so ziemlich alle ms press bücher sollen gut sein (hab "c# schritt für schritt" gelesen und das ist sehr gut)

20.11.2006 - 21:51 Uhr

hallo,

der Link sollte recht informativ für dich sein

wenn ich dich richtig verstehe hast du deine form zu nem übergeordneten MDI-Formular gemacht und willst das ganze aber gleichzeitig mit nem untergeordneten starten.
=> im form load würd ich einfach eins erstellen und gleich anzeigen lassen.

mfg

20.11.2006 - 17:06 Uhr

hallo

also auslesen sollte mit streamreader funktionieren (forumsuche falls nötig oder msdn)

den inhalt würd ich dann mit regex splitten


            MatchCollection matches = Regex.Matches("|inhalt1|inhalt2|", @"\|?[^\|]+\|");
            foreach (Match m in matches)
                Console.WriteLine(m.ToString().Replace("|", ""));

mfg

//edit: grml jedes ma vergesse ichs dazu zu schreiben => namespace für regex


using System.Text.RegularExpressions;

18.11.2006 - 17:09 Uhr

generelle syntax: "Insert into tabelle (felder) VALUES (werte)";

wenn ich dich richtig verstehe sieht deine tabelle zb so aus

tabelle kunden:
ID int... (auto increment und primary key)
Kunde varchar(15)...
Irgendwas varchar(15)...
//so oder so ähnlich

das wäre dann "insert into kunden (Kunde, Irgendwas) VALUES ('Meier', 'irgendwas')";

ansonsten hilft dir die sql dokumentation zu deinem DBMS (datenbank management system) sicher gerne

mfg

18.11.2006 - 13:15 Uhr

der username wird dann ja wohl per textbox eingegeben, also setzt man die maxlength der texbox auf 10 😉
man könnte noch im TextChanged event überprüfen, dass keine exception aufgeufen wird oder ich würd das textbox.text != "" und ≥ 10 im buttonclick überprüfen und dann kann nichts schief gehen, aber da hast du ja keinen einfluss drauf!?

wenn du also die form selber nich machst und nicht sicher gehen kannst, dass der gui entwickler das auch so macht, dann is das mit der exception wohl die beste lösung..

mfg

18.11.2006 - 09:41 Uhr

naja, dass es in einer zeile ist, macht ja nix, wie ich auch schon geschrieben hab. du kannst die zeile ja so splitten wie dus brauchst


using System.Text.RegularExpressions;

MatchCollection collection = Regex.Matches("1a 2b Hallo 3c 4d", @"([^\s]+\s|[^\s]+$)"); // den pattern musst du natürlich anpassen
            foreach (Match m in collection)
               Console.WriteLine(m);

es würde auch string.Split() funktionieren, wenn du mit regex nich klar kommst.
falls dus dennoch nich hinkriegst, kannst du ja die zeile hier posten und ich versuch mich dran

mfg

18.11.2006 - 09:19 Uhr

ich wollte ihm nicht das komplette programm schreiben 😉
er muss ja einfach nur nen else noch reinpacken


                if ((value.CompareTo(new DateTime(2005, 10, 10)) >= 0) && (value.CompareTo(new DateTime(2006,12,12)) == -1))
                { // datum liegt zwischen drin
                    this.birthday = value;
                }
                else
                {
                    //liegt nich zwischendrin
                }

zudem sieht er ja so wie es funktioniert und kanns sichs so basteln wie er will 😉
und "// datetime must between 10.10.2005 and 12.12.2006" <- die bedingung will er ja anscheinend haben

mfg

18.11.2006 - 01:58 Uhr

nabend

    
class User
    {
        public User()
        {
        }
        public DateTime Birthday
        {
            get { return this.birthday; }
            set 
            {
                if ((value.CompareTo(new DateTime(2005, 10, 10)) >= 0) && (value.CompareTo(new DateTime(2006,12,12)) == -1))
                {
                    this.birthday = value;
                }
            }
        }
        private DateTime birthday = new DateTime(1900, 1, 1);
    }

du willst nun über textboxes einen neuen user anlegen!? dann erstelle 3 textboxes (jahr, monat, tag) und mach dann sowas


            User b = new User();
            int x = Int32.Parse(textBox1.Text), y = Int32.Parse(textBox2.Text), z = Int32.Parse(textBox3.Text);
            DateTime d = new DateTime(x, y, z);
            b.Birthday = d;
            MessageBox.Show(b.Birthday.ToShortDateString());

falls du nun aus ner xml datei lesen willst dann speicher den geburtstag entweder einzeln also
<jahr>2006</jahr>
<monat>12</monat>
<tag>10</tag>
und wandel das einfach wieder in nen int typ um und erstelle dein user objekt.
willst du das als
<geburtstag>..</geburtstag>
haben, dann splitte den string einfach mit regex, aber am besten wärs mit jahr monat tag tags

mfg

18.11.2006 - 00:59 Uhr

nabend.

das ganze dürfte recht leicht durchzuführen sein. du erstellst eine liste mit rectangles und die liste gehst du mit nem foreach durch und überprüfst ob das rechteck ein anderes rechteck schneidet


private List<Rectangle> FRectangle = new List<Rectangle>(); // hier speicherst du die rechtecke rein
foreach (Rectangle rec in FRectangle)
{
 foreach (Rectangle r2 in FRectangle)
 {
   Ifcheck:
   if ((rec.IntersectsWith(r2)) && (rec != r2))  // hoffe das geht so
   {
     //hier kannste dann r2 verschieben und die if nochma prüfen. nochmals überprüfen zb mit goto
     GoTo Ifcheck; // sollte klappen
   }
 }
} // ungetestet und nur schnell erstellt ohne großartig nachzudenken ^^!

das war nur als anregung gedacht.. falls dus doch nich hinkriegst, setz ich mich morgen früh evtl mal ran.. das ganze hört sich recht spannend an ;D

mfg

17.11.2006 - 21:23 Uhr

du willst eine neu erstellte form öffnen?


Form2 f = new Form2();
f.Show();

//edit: grad noch ne idee was du noch meinen könntest..


//in form1.cs

class form1...
{
 public Klasse test;
 public Form1()
 {
  ...
 }
}

//in form2.cs
//irgendwo:

Form1 f = new Form1();
//mit f.test kannste dann mit rumspielen

17.11.2006 - 21:01 Uhr

Original von BerndFfm

  • Microsoft SQL Server Everywhere (heisst jetzt irgendwie anders)

Microsoft SQL Server 2005 Compact Edition RC1 (Link)

Ich selber benutze MS SQL Server express + Management express edition. Von daher schließe ich mich der empfehlung bernds an 😉
Als ich damals auf der suche nach nem DBMS wollte ich zuerst mysql nehmen aber hab dafür keine passenden treiber für oledb gefunden (dabei hatte ich sogar die von der offiziellen seite gesaugt, naja ^^) 😠
MS SQL Server + c# lief dann ohne probleme also bin ich dabei geblieben.

mfg

17.11.2006 - 19:54 Uhr

du kannst nich mit Form1.Button oder sowas auf controls zugreifen.. is einfach nich drinne 😉

was du machen kannst is ein array mit controls zu erstellen und dann wie oben beschrieben die controls mim konstruktor zu übergeben


// also ein control[] array erstellen und dann übergeben
// Control[] cons = new Control[100]; evtl auch mal über Liste<> probieren, wäre eine bessere Lösung wenns geht List<Control> cons = new List<Control>();
// cons[0] = button1; mit list dann halt cons.add(buton1);

class test
{
 public test(params control[] parameterliste)
 {
   this.controls = parameterliste;
 }
 private control[] controls;
}
// so oder so ähnlich sollte es funktionieren ;)

mfg

17.11.2006 - 17:17 Uhr

hallo

[FAQ] Kommunikation von 2 Forms
das sollte dir weiterhelfen.

mfg

//edit:

falls du aus einer klasse heraus auf ein control von form1 zugreifen willst so würd ich das zb mit dem konstruktor übergeben zB


class test
{
 public test(progressBar pb)
 {
   this.pb = pb;
 }
 public void something()
 {
   pb.value = 50;
 }
 private progressBar pb = null;
}

falls du nichts von beidem brauchst hab ich deine frage nich verstanden 😉

17.11.2006 - 16:58 Uhr

hallo

  1. im forum gibt es extra einen bereich für bücher, von daher sollte der thread noch verschoben werden ^^

  2. wenn du eins für anfänger suchst, so würd ich "Visual C# 2005 Schritt für Schritt" von John Sharp empfehlen.. dort wird auch auf das wesentliche von ASP.Net und ADO.NET eingangen.

mfg

//edit: btw falls du das inhaltsverzeichnis haben willst schreib mir ne pm und ich scans dir ein (das buch is schon sehr umfangreich)

16.11.2006 - 18:16 Uhr

            MatchCollection collection = Regex.Matches("1a 2b Hallo 3c 4d", @"([^\s]+\s|[^\s]+$)", RegexOptions.IgnoreCase);
            foreach (Match m in collection)
               Console.WriteLine(m);

\s = whitespace character
[^\s]+ = alle zeichen, solang kein \s dabei ist
$ = string ende

andere lösung wäre halt herbivores vorschlag => string.Split

mfg

/edit: btw du musst noch


using System.Text.RegularExpressions; 

hinzufügen falls du meine lösung nehmen willst

16.11.2006 - 07:56 Uhr

Original von kleines_eichhoernchen
Wie sieht es us mit der Verständlichkeit solcher Umsetzungen. Also wenn ihr zum Bleistift im Inet ein Regex findet (mehr oder weniger Komplex), habt ihr dann Probleme das zulesen, bzw. zu verstehen, für was der Regex da ist? Wenn ich einen fremden Regex sehe interessiert mich der nich wirklich, kann mit fremden implementierungen nix anfangen.

ich guck mir regexen immer an, da man so auch evtl dazulernt (deswegen liest man ja auch die threads im forum ;D). idR hab ich eigtl keine probleme damit regexe zu verstehen. kommt halt immer darauf an, wie lange man sich schon mit der materie befasst.

zum 2.)
ich setz den pattern immer direkt in die if mit rein bzw ins IsMatch oder was ich halt brauch, also im grunde so wie du
performance probleme hab ich noch keine bemerkt.

15.11.2006 - 21:35 Uhr

ich hab mir regex vor 3-4jahren beigebracht (damals noch für MSL - mirc scripting language ;D)
regex benutz ich sehr viel da es einfach die beste methode ist um strings auf zeichen zu überprüfen und gefundene resultate sofort zu verarbeiten (MatchCollection + Regex.Matches und mit nem foreach alles durchgehen)

beispiel: zb bei formularen ob eine vom syntax her passende email adresse eingegeben wurde oder zb wenn man ne IP adresse überprüfen will

oder in msl hatte ich mir mal einen regex geschrieben das alle html tags aus einem string löscht und somit ich den reinen text hatte.

es lohnt sich auf jedenfall sich das ganze beizubringen:

Regex tutorial einfach mal durcharbeiten. im grunde is regex in allen sprachen mit kleinen abweichungen gleich

mfg

15.11.2006 - 13:29 Uhr

using System.Text.RegularExpressions;

if (Regex.IsMatch(textBox1.Text,@"^\d+$"))
{
 // do something
}

mfg

14.11.2006 - 22:54 Uhr

da mach ich mit 😉.. nich sehr schön der code aber funzt ;>


        private void generate()
        {
            int len;
            for (int x = 100; x <= 999; x++)
            {
                for (int n = 100; n <= 999; n++)
                {
                    len = n + x;
                    if (len.ToString().Length == 3)
                    {
                        if (check(x, n, len))
                            Console.WriteLine(x.ToString() + " + " + n.ToString() + " = " + len.ToString());
                            //listBox1.Items.Add(x.ToString() + " + " + n.ToString() + " = " + len.ToString());
                    }
                }
            }
        }
        private static bool check(int a, int b, int c)
        {
            if (a.ToString().Contains("0")) return false;
            else if (b.ToString().Contains("0")) return false;
            else if (c.ToString().Contains("0")) return false;
            string check = a.ToString() + b.ToString() + c.ToString();
            string cut = check;
            string blub = check;
            for (int y = 9; y >= 1; y--)
            {
                blub = cut.Substring(0, 1);
                cut = cut.Remove(0, 1);
                if (cut.Contains(blub)) return false;
            }
            return true;
        }

Ergebnisse:

124 + 659 = 783
125 + 739 = 864
127 + 359 = 486
127 + 368 = 495
128 + 367 = 495
128 + 439 = 567
129 + 357 = 486
129 + 438 = 567
129 + 654 = 783
129 + 735 = 864
134 + 658 = 792
135 + 729 = 864
138 + 429 = 567
138 + 654 = 792
139 + 428 = 567
139 + 725 = 864
142 + 596 = 738
142 + 695 = 837
143 + 586 = 729
145 + 692 = 837
146 + 583 = 729
146 + 592 = 738
152 + 487 = 639
152 + 784 = 936
154 + 629 = 783
154 + 638 = 792
154 + 782 = 936
157 + 329 = 486
157 + 482 = 639
158 + 634 = 792
159 + 327 = 486
159 + 624 = 783
162 + 387 = 549
162 + 783 = 945
163 + 782 = 945
167 + 328 = 495
167 + 382 = 549
168 + 327 = 495
173 + 286 = 459
173 + 295 = 468
175 + 293 = 468
176 + 283 = 459
182 + 367 = 549
182 + 394 = 576
182 + 457 = 639
182 + 493 = 675
182 + 754 = 936
182 + 763 = 945
183 + 276 = 459
183 + 492 = 675
183 + 546 = 729
183 + 762 = 945
184 + 392 = 576
184 + 752 = 936
186 + 273 = 459
186 + 543 = 729
187 + 362 = 549
187 + 452 = 639
192 + 384 = 576
192 + 483 = 675
192 + 546 = 738
192 + 645 = 837
193 + 275 = 468
193 + 482 = 675
194 + 382 = 576
195 + 273 = 468
195 + 642 = 837
196 + 542 = 738
214 + 569 = 783
214 + 659 = 873
215 + 478 = 693
215 + 748 = 963
216 + 378 = 594
216 + 738 = 954
218 + 349 = 567
218 + 376 = 594
218 + 439 = 657
218 + 475 = 693
218 + 736 = 954
218 + 745 = 963
219 + 348 = 567
219 + 438 = 657
219 + 564 = 783
219 + 654 = 873
234 + 657 = 891
235 + 746 = 981
236 + 718 = 954
236 + 745 = 981
237 + 654 = 891
238 + 419 = 657
238 + 716 = 954
239 + 418 = 657
241 + 596 = 837
243 + 576 = 819
243 + 675 = 918
245 + 673 = 918
245 + 718 = 963
245 + 736 = 981
246 + 573 = 819
246 + 591 = 837
246 + 735 = 981
248 + 319 = 567
248 + 715 = 963
249 + 318 = 567
251 + 397 = 648
254 + 619 = 873
254 + 637 = 891
257 + 391 = 648
257 + 634 = 891
259 + 614 = 873
264 + 519 = 783
269 + 514 = 783
271 + 593 = 864
271 + 683 = 954
273 + 186 = 459
273 + 195 = 468
273 + 546 = 819
273 + 591 = 864
273 + 645 = 918
273 + 681 = 954
275 + 193 = 468
275 + 418 = 693
275 + 643 = 918
276 + 183 = 459
276 + 318 = 594
276 + 543 = 819
278 + 316 = 594
278 + 415 = 693
281 + 394 = 675
281 + 673 = 954
283 + 176 = 459
283 + 671 = 954
284 + 391 = 675
286 + 173 = 459
291 + 357 = 648
291 + 384 = 675
291 + 546 = 837
291 + 573 = 864
293 + 175 = 468
293 + 571 = 864
294 + 381 = 675
295 + 173 = 468
296 + 541 = 837
297 + 351 = 648
314 + 658 = 972
316 + 278 = 594
317 + 529 = 846
317 + 628 = 945
318 + 249 = 567
318 + 276 = 594
318 + 627 = 945
318 + 654 = 972
319 + 248 = 567
319 + 527 = 846
324 + 567 = 891
324 + 657 = 981
327 + 159 = 486
327 + 168 = 495
327 + 519 = 846
327 + 564 = 891
327 + 618 = 945
327 + 654 = 981
328 + 167 = 495
328 + 617 = 945
329 + 157 = 486
329 + 517 = 846
341 + 586 = 927
342 + 576 = 918
346 + 572 = 918
346 + 581 = 927
348 + 219 = 567
349 + 218 = 567
351 + 297 = 648
352 + 467 = 819
354 + 618 = 972
354 + 627 = 981
357 + 129 = 486
357 + 291 = 648
357 + 462 = 819
357 + 624 = 981
358 + 614 = 972
359 + 127 = 486
362 + 187 = 549
362 + 457 = 819
364 + 527 = 891
367 + 128 = 495
367 + 182 = 549
367 + 452 = 819
367 + 524 = 891
368 + 127 = 495
372 + 546 = 918
376 + 218 = 594
376 + 542 = 918
378 + 216 = 594
381 + 294 = 675
381 + 546 = 927
382 + 167 = 549
382 + 194 = 576
384 + 192 = 576
384 + 291 = 675
386 + 541 = 927
387 + 162 = 549
391 + 257 = 648
391 + 284 = 675
392 + 184 = 576
394 + 182 = 576
394 + 281 = 675
397 + 251 = 648
415 + 278 = 693
418 + 239 = 657
418 + 275 = 693
419 + 238 = 657
428 + 139 = 567
429 + 138 = 567
438 + 129 = 567
438 + 219 = 657
439 + 128 = 567
439 + 218 = 657
452 + 187 = 639
452 + 367 = 819
457 + 182 = 639
457 + 362 = 819
462 + 357 = 819
467 + 352 = 819
475 + 218 = 693
478 + 215 = 693
482 + 157 = 639
482 + 193 = 675
483 + 192 = 675
487 + 152 = 639
492 + 183 = 675
493 + 182 = 675
514 + 269 = 783
517 + 329 = 846
519 + 264 = 783
519 + 327 = 846
524 + 367 = 891
527 + 319 = 846
527 + 364 = 891
529 + 317 = 846
541 + 296 = 837
541 + 386 = 927
542 + 196 = 738
542 + 376 = 918
543 + 186 = 729
543 + 276 = 819
546 + 183 = 729
546 + 192 = 738
546 + 273 = 819
546 + 291 = 837
546 + 372 = 918
546 + 381 = 927
564 + 219 = 783
564 + 327 = 891
567 + 324 = 891
569 + 214 = 783
571 + 293 = 864
572 + 346 = 918
573 + 246 = 819
573 + 291 = 864
576 + 243 = 819
576 + 342 = 918
581 + 346 = 927
583 + 146 = 729
586 + 143 = 729
586 + 341 = 927
591 + 246 = 837
591 + 273 = 864
592 + 146 = 738
593 + 271 = 864
596 + 142 = 738
596 + 241 = 837
614 + 259 = 873
614 + 358 = 972
617 + 328 = 945
618 + 327 = 945
618 + 354 = 972
619 + 254 = 873
624 + 159 = 783
624 + 357 = 981
627 + 318 = 945
627 + 354 = 981
628 + 317 = 945
629 + 154 = 783
634 + 158 = 792
634 + 257 = 891
637 + 254 = 891
638 + 154 = 792
642 + 195 = 837
643 + 275 = 918
645 + 192 = 837
645 + 273 = 918
654 + 129 = 783
654 + 138 = 792
654 + 219 = 873
654 + 237 = 891
654 + 318 = 972
654 + 327 = 981
657 + 234 = 891
657 + 324 = 981
658 + 134 = 792
658 + 314 = 972
659 + 124 = 783
659 + 214 = 873
671 + 283 = 954
673 + 245 = 918
673 + 281 = 954
675 + 243 = 918
681 + 273 = 954
683 + 271 = 954
692 + 145 = 837
695 + 142 = 837
715 + 248 = 963
716 + 238 = 954
718 + 236 = 954
718 + 245 = 963
725 + 139 = 864
729 + 135 = 864
735 + 129 = 864
735 + 246 = 981
736 + 218 = 954
736 + 245 = 981
738 + 216 = 954
739 + 125 = 864
745 + 218 = 963
745 + 236 = 981
746 + 235 = 981
748 + 215 = 963
752 + 184 = 936
754 + 182 = 936
762 + 183 = 945
763 + 182 = 945
782 + 154 = 936
782 + 163 = 945
783 + 162 = 945
784 + 152 = 936

edit: naja kleiner fehler is drinne => man muss die hälfte er resultate nehmen da die addition auch umgekehrt gerechnet wird, zB 784 + 152 = 936 und 152 + 784 = 936
aber das kann ja unter umständen auch gewollt sein ;D

14.11.2006 - 13:11 Uhr

also so wie ich das verstehe willst du später ankommende daten auch noch abfangen, sprich eine dauerhafte connection, was dich zu asynchronen sockets bringt

auf codeproject (ich glaub da wars) ist ein gutes tutorial zu asynchronen sockets.

13.11.2006 - 21:37 Uhr

jo aber ich hab nur zum 3. punkt etwas im buchshop gefunden (jetzt lerne ich asp.net)

zu punkte 1 und 2 hab ich nichts gefunden. ich hab den thread aber auch geöffnet um von euch tipps für nen buch zu bekommen, das euch weitergeholfen hat und auch gut geschrieben ist..

hoffe auf weitere posts ;D

mfg

13.11.2006 - 21:21 Uhr

Hallo.

ich bin auf der suche nach büchern die ein paar themen abarbeiten:

  1. Sockets.. inhalt:
  • verbindung zwischen mehreren pcs, kommunikation etc
  • Socket klasse, tcpclient/tcplistener, remoting und was noch so dazu gehört
  1. ein buch für fortgeschrittene.. inhalt:
  • threads & delegates
  • einfach zeug dass mir neue sachen beibringt ;D
  1. evtl noch ein buch für ASP.Net (sollte auch ADO.Net beinhalten) (anfänger)

mfg

05.11.2006 - 17:26 Uhr

das kannst du ja regeln


        private bool sollzeichnen = false; // zum überprüfen ob gezeichnet werden soll
        private List<Point> FPunkte1 = new List<Point>(); // siehe drunter
        private List<Point> Fpunkte2 = new List<Point>(); // kann man sicherlich besser lösen aber hilft zur anschauung
        private void pictureBox1_Paint(object sender, PaintEventArgs e)
        {
            if (sollzeichnen) // wird nicht beim laden der form gezeichnet
            {
                for (int i = 0; i <= FPunkte1.Count - 1; i++)
                    e.Graphics.DrawLine(new Pen(Color.Red), FPunkte1[i], Fpunkte2[i]);
                //sollzeichnen = false; //falls dann erst wieder beim klick gezeichnet werden soll
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            sollzeichnen = true; // sagt dass gezeichnet werden darf
            FPunkte1.Add(new Point(20, 20)); // startpunkt
            Fpunkte2.Add(new Point(60, 60)); // ziel
            pictureBox1.Invalidate(); // ruft das paint event erneut auf
        }

mfg

//edit:
achja die listen hab ich erstellt damit das programm sich merkt was gezeichnet werden soll. würdest du das nicht tun und wieder invalidate() aufrufen wäre die alte linie weg

05.11.2006 - 16:58 Uhr

hallo

es ist am besten wenn du nur im paint event zeichnest und das mit invalidate() wieder neu zeichnen lässt
du kannst ja im paint event funktionen aufrufen die dann die linie zeichnen

beispiel:


button1_click....
{
 picturebox1.invaldite(); // oder falls die form => this.invalidate();
}

dann im paint event:
{
 e.Graphics.Drawline(...);
 /*
 oder über funktion
 funktion(e);
 */
}

private void funktion(PaintEventArgs e)
{
 e.Graphics.Drawline(...);
}

mfg

05.11.2006 - 16:52 Uhr

ich würd dir nen buch empfehlen damit du nen leichteren einstieg in die sprache/entwicklungsumgebung bekommst (schritt für schritt von John sharp ist sehr gut, wie ich finde)

unten links wo die eigenschaften sind ist auch nen blitz.. darauf mal klicken und schon siehst du die verfügbaren events

27.10.2006 - 19:01 Uhr

sers

ich hab das forum durchsucht und auch schon google gefragt aber beide konnten mir nich helfen. ich benutz visual studio c# 2005 und vermisse ein paar steuerelemente, wie zb trackbar/scrollbar,etc... wo kann ich weitere steuerelemente downloaden, oder im programm aktivieren, falls das geht ^^?

/edit: argh ich blindfisch.. kann gelöscht werden

25.10.2006 - 10:14 Uhr

gudn morgen.

also du willst auf eine html seite aus dem internet auslesen!? such dazu im forum mal nach httpwebrequest (einige beispiele) und http://msdn.microsoft.com/library/deu/default.asp?url=/library/DEU/cpref/html/frlrfsystemnethttpwebrequestclasstopic.asp

das ganze könnteste per filestream in ne datei speichern und die dann ausdrucken (printdialog oder auch printdocument (selber nicht mit beschäftigt aber auch hier hilft wieder forum und msdn library))

mfg

24.10.2006 - 17:49 Uhr

        private static bool ausgeklappt = true;
        private void panel1_MouseMove(object sender, MouseEventArgs e)
        {
            if ((ausgeklappt) && (e.X >= 100))
            {
                panel1.Size = new Size(10, panel1.Size.Height);
                ausgeklappt = false;
            }
            else if ((!ausgeklappt) && (e.X <= 10))
            {
                panel1.Size = new Size(100, panel1.Size.Height);
                ausgeklappt = true;
            }
        }

ich glaub so stellste dir das vor 😉

mfg

//edit: grad läufts bei mir nimmer so wie es sollte ~_o noch leichter wärs einfach im mouseenter und mouseleave event vom panel allerdings musste auch evtl in den events von der form rumspielen.. mussts halt so machen wie dus willst (sollte mit dem obigen beispiel machbar sein)

20.10.2006 - 21:41 Uhr

heeeelp 🙁 (les grad mein thread und könnte etwas missverständlich sein) ich such nen weg connected zu bleiben bzw wie geh ich sicher dass ich alle messages vom server kriege die er mir sendet

20.10.2006 - 16:06 Uhr

hallo

ich hab ne frage wegen sockets.. ich bau ne verbindung zu nem irc server über TcpClient auf und bekomm dann auch ne antwort, aber nich alle antworten.

 
 // ich versuch das über ne klasse zu machen
 // _tcpclient is nen TcpClient
 // _tcpread nen NetworkStream
                _tcpclient = new TcpClient();
                _tcpclient.Connect(_ircadress, _ircport);
                _tcpread = _tcpclient.GetStream();
                byte[] bytes = new byte[_tcpclient.ReceiveBufferSize];
                _tcpread.Read(bytes, 0, (int)_tcpclient.ReceiveBufferSize);
                string returndata = Encoding.UTF8.GetString(bytes);
                statuswindow.Text = statuswindow.Text + returndata;
 // das read hab ich mir aus der msdn library rausgesucht

was ich bekomm:
NOTICE AUTH 😗** Looking up your hostname

was ich bekommen sollte:
NOTICE AUTH 😗** Looking up your hostname
NOTICE AUTH 😗** Found your hostname, cached
NOTICE AUTH 😗** Checking Ident < und dann müsste ich die erste antwort senden

wie bekomm ich alle messages vom server?

btw das irc protokoll an sich is mir bekannt, hab das auch schonma in delphi gemacht (dort gabs nen event das immer getriggert ist, wenn ne message vom server kam, ich weiß halt nich wie das in c# funktioniert 🙁 )

wäre nett wenn mir das wer erklären könnte bzw mir hilfreiche links (tutorials zu dem thema geben könnte (das forum hier hab ich auch schon durchsucht aber nix hilfreiches gefunden))

15.10.2006 - 10:10 Uhr

sers.

ich erstelle in meiner klasse test ein statisches array, wodurch ich mir eigtl erhoffe, dass sich das teil nich verändert (ich glaub das funktioniert auch so weit ;D).

hier meine klasse Adressbuch und test


    class Adressbuch
    {
        public Adressbuch()
        {
            name = "";
            vorname = "";
            strassehnr = "";
            plzort = "";
            tele = "";
            handy = "";
            fax = "";
            NumAdressen++;
        }
        public string name, vorname, strassehnr, plzort, tele, handy, fax;
        private static int NumAdressen;
    }

    class test
    {
        public test()
        {
        }
        public void fillarray(int i,Adressbuch a)
        {
            testarray[i] = a;
        }
        public Adressbuch getpart(int i)
        {
            return testarray[i];
        }
        private static Adressbuch[] testarray = new Adressbuch[100];
    }

zum test hab ich mir nun 2 buttons erstellt mit denen ich werte zuweise und mir wieder ausgeben lassen will.

code:


        private void button4_Click(object sender, EventArgs e)
        {
            Adressbuch Adress = new Adressbuch();
            Adress.vorname = "test1";
            test Adr = new test();
            Adr.fillarray(5, Adress);
            MessageBox.Show(Adr.getpart(5).vorname); // hier wird test1 ausgegeben
            Adress.vorname = "test2";
            Adr.fillarray(2, Adress);
            MessageBox.Show(Adr.getpart(2).vorname); // hier wird test2 ausgegeben
            // wenn ich hier wieder show.getpart(5).vorname hinsetze dann bekomm ich test2 angezeigt
        }
        private void button5_Click(object sender, EventArgs e)
        {
            test Adr = new test();
            MessageBox.Show(Adr.getpart(5).vorname); // test2 wird angezeigt
            MessageBox.Show(Adr.getpart(2).vorname); // hier leider auch
        }

mein problem besteht also darin, dass er mir für .vorname immer den selben string zurückschmeißt. weshalb ^^?

mfg