Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Portal
  • |
  • Mitglieder
Beiträge von Thomas B
Thema: [gelöst] Xml Reader überspringt jedes zweite Element
Am im Forum: Datentechnologien

Hey,

ich habe es nun wie folgt gelöst:


using (XmlReader Xml = XmlReader.Create(Path))
{
           Xml.ReadToFollowing("number");
           this.mId = Xml.ReadElementContentAsInt();
           this.mLanguage = Xml.ReadElementContentAsString();
           this.mTimezone = Xml.ReadElementContentAsString();
...

Wird natürlich blöd, sollte die Datei verändert werden, funktioniert aber erstmal wie es soll und wird bei Bedarf später verbessert. Danke für die Unterstützung.

Gruß,
Thomas

Thema: [gelöst] Xml Reader überspringt jedes zweite Element
Am im Forum: Datentechnologien

Hi Abt,

Jetzt komme ich aber nicht an den Wert ran. Ich habe nun folgendes versucht:


if (Xml.NodeType == XmlNodeType.Element)
                    {
                        switch (Xml.Name)
                        {
                            case "number":
                                Xml.MoveToContent();
                                this.mId = Convert.ToInt32(Xml.Value);
                                break;
                        }
                    }

Der Wert von Value ist leer an dieser Stelle, weil er vermutlich noch im Type Node ist und nicht in den Content wechseln kann. Die Doku geht auf die Konstellation wie ich sie habe nicht ein, da es keine Schleife verwendet, weil es nur ein Buch einliest.

Ich könnte es wie in dem Beispiel machen, und alles in Folge einlesen (so wie bei title), bin dann aber an die Reihenfolge in der Datei gebunden.

Gruß,
Thomas

Thema: [gelöst] Xml Reader überspringt jedes zweite Element
Am im Forum: Datentechnologien

Hallo Taipi88,

Danke für deine Antwort. Den vor dir vorgestellten Ansatz über einen Generator kannte ich so noch nicht.

Also die Ausgabe sieht so aus an andere Stelle:


this.richTextBox1.Text = GS.Id.ToString() + System.Environment.NewLine;
            this.richTextBox1.Text += GS.Language.ToString() + System.Environment.NewLine;
            this.richTextBox1.Text += GS.Timezone.ToString() + System.Environment.NewLine;
            this.richTextBox1.Text += GS.Offset.ToString() + System.Environment.NewLine;
            this.richTextBox1.Text += GS.Domain.ToString() + System.Environment.NewLine;
            this.richTextBox1.Text += GS.Version.ToString() + System.Environment.NewLine;
            this.richTextBox1.Text += GS.Speed.ToString() + System.Environment.NewLine;
            this.richTextBox1.Text += GS.FleetSpeed.ToString() + System.Environment.NewLine;
            this.richTextBox1.Text += GS.Galaxys.ToString() + System.Environment.NewLine;
            this.richTextBox1.Text += GS.Systems.ToString() + System.Environment.NewLine;
            this.richTextBox1.Text += GS.ACS.ToString() + System.Environment.NewLine;
            this.richTextBox1.Text += GS.RapidFire.ToString() + System.Environment.NewLine;
            this.richTextBox1.Text += GS.DefToTF.ToString() + System.Environment.NewLine;
            this.richTextBox1.Text += GS.DebrisFactor.ToString() + System.Environment.NewLine;
            this.richTextBox1.Text += GS.RepairFactor.ToString() + System.Environment.NewLine;
            this.richTextBox1.Text += GS.NewbieProtectionLimit.ToString() + System.Environment.NewLine;
            this.richTextBox1.Text += GS.NewbieProtectionHigh.ToString() + System.Environment.NewLine;
            this.richTextBox1.Text += GS.TopScore.ToString() + System.Environment.NewLine;
            this.richTextBox1.Text += GS.BonusFields.ToString() + System.Environment.NewLine;
            this.richTextBox1.Text += GS.DonutGalaxys.ToString() + System.Environment.NewLine;
            this.richTextBox1.Text += GS.DonutSystems.ToString() + System.Environment.NewLine;
Die Werte setze ich vorher auf "" oder 0 und sehe Sie auch in der Textbox, wo der Wert nicht ausgelesen wurde (jedes zweite Element).

Ich habe oben den vollständigen switch Block reingepostet.

Gruß,
Thomas

Thema: [gelöst] Xml Reader überspringt jedes zweite Element
Am im Forum: Datentechnologien

Hallo,

ich habe den Xml Reader benutzt und dieser Überspringt mir jedes zweite Element. Meine Vermutung ist, dass es an dem Befehl ReadElementContentAsType() liegt und ich damit immer ein Element überspringe, wenn ich in der Schleife bei Read lande. Ich habe wegen der Übersichtlichkeit die anderen cases entfernt, sind aber alle gleich aufgebaut und schreiben nur in anderen Variablen.
Ich habe schon versucht, in der Schleife noch eine Schleife mit !EOF zu machen, sodass er das Read nicht mehr ansteuert, aber auch das hat nicht geholfen und endet mit einer Endlosschleife des Programms.

Folgende Xml Datei lese ich ein:

<?xml version="1.0"?>
<serverData noNamespaceSchemaLocation="http://s138-de.ogame.gameforge.com/api/xsd/serverData.xsd" timestamp="1459335197" serverId="de138">
  <name>Libra</name>
  <number>138</number>
  <language>de</language>
  <timezone>Europe/Berlin</timezone>
  <timezoneOffset>+02:00</timezoneOffset>
  <domain>s138-de.ogame.gameforge.com</domain>
  <version>6.1.5</version>
  <speed>5</speed>
  <speedFleet>1</speedFleet>
  <galaxies>9</galaxies>
  <systems>499</systems>
  <acs>1</acs>
  <rapidFire>1</rapidFire>
  <defToTF>0</defToTF>
  <debrisFactor>0.7</debrisFactor>
  <repairFactor>0.7</repairFactor>
  <newbieProtectionLimit>500000</newbieProtectionLimit>
  <newbieProtectionHigh>50000</newbieProtectionHigh>
  <topScore>2675996</topScore>
  <bonusFields>25</bonusFields>
  <donutGalaxy>1</donutGalaxy>
  <donutSystem>1</donutSystem>
</serverData>


 using (XmlReader Xml = XmlReader.Create(Path))
            {
                while (Xml.Read())
                {

                        if (Xml.NodeType == XmlNodeType.Element)
                        {
                            switch (Xml.Name)
                            {
                                case "number":
                                    this.mId = Xml.ReadElementContentAsInt();
                                    break;
                                case "language":
                                    this.mLanguage = Xml.ReadElementContentAsString();
                                    break;
                                case "timezone":
                                    this.mTimezone = Xml.ReadElementContentAsString();
                                    break;
                                case "timezoneOffset":
                                    this.mOffset = Xml.ReadElementContentAsString();
                                    break;
                                case "domain":
                                    this.mDomain = Xml.ReadElementContentAsString();
                                    break;
                                case "version":
                                    this.mVersion = Xml.ReadElementContentAsString();
                                    break;
                                case "speed":
                                    this.mSpeed = Xml.ReadElementContentAsInt();
                                    break;
                                case "speedFleet":
                                    this.mFleetSpeed = Xml.ReadElementContentAsInt();
                                    break;
                                case "galaxies":
                                    this.mGalaxys = Xml.ReadElementContentAsInt();
                                    break;
                                case "systems":
                                    this.Systems = Xml.ReadElementContentAsInt();
                                    break;
                                case "acs":
                                    this.mACS = Xml.ReadElementContentAsInt();
                                    break;
                                case "rapidFire":
                                    this.mRapidFire = Xml.ReadElementContentAsInt();
                                    break;
                                case "defToTF":
                                    this.mDefToTF = Xml.ReadElementContentAsInt();
                                    break;
                                case "debrisFactor":
                                    this.mDebrisFactor = Xml.ReadElementContentAsFloat();
                                    break;
                                case "repairFactor":
                                    this.mRepairFactor = Xml.ReadElementContentAsFloat();
                                    break;
                                case "newbieProtectionLimit":
                                    this.mNewbieProtectionLimit = Xml.ReadElementContentAsInt();
                                    break;
                                case "newbieProtectionHigh":
                                    this.mNewbieProtectionHigh = Xml.ReadElementContentAsInt();
                                    break;
                                case "topScore":
                                    this.mTopScore = Xml.ReadElementContentAsInt();
                                    break;
                                case "bonusFields":
                                    this.mBonusFields = Xml.ReadElementContentAsInt();
                                    break;
                                case "donutGalaxy":
                                    this.mDonutGalaxys = Xml.ReadElementContentAsInt();
                                    break;
                                case "donutSystem":
                                    this.mDonutSystems = Xml.ReadElementContentAsInt();
                                    break;
                                default:

                                    break;
                            }
                        }
                   }
            }

Gruß,
Thomas

Thema: [gelöst] Datetime aus DataGridVeiw in MSSQL speichern
Am im Forum: Datentechnologien

Hallo,

ich konnte einige Tage nicht an dem Projekt weiterarbeiten. Ich habe nun die Datasource komplett gelöscht und neu eingebunden und nun speichert er auch die Uhrzeit mit. Bleibt nur noch das Problem mit der ersten Zeile, die nicht gespeichert wird.

Ich hab ja für jede Zeile in der Tabelle eine ID, die bei 1 beginnt. Damit ich nun auf im Datagridview den Eintrag in der Zeile 1 ansteuern kann, muss ich ja auf das Element 0 zugreifen und reduziere die ID also um 1, was ja auch klappt, solange ich die Daten nicht abspeichere. Im Programm werden die Einträge in die richtigen Zeilen geschrieben. Irgendwo ist da noch ein Fehler, aber ich werde den schon noch finden. =)

Gruß,
Thomas

€:
Problem gelöst. Wenn man ein DataGridView benutzt, muss man die Daten nicht im DGV bearbeiten und ändern, sondern direkt in der Datenquelle. Das scheint mir aber ein Bug in .Net zu sein, denn alle Zeilen bis auf die Erste lassen sich so speichern.

Thema: [gelöst] Datetime aus DataGridVeiw in MSSQL speichern
Am im Forum: Datentechnologien

Hallo Hummigbird,

dann sag mir, wovon du den Code sehen möchtest. :)
Ich habe die Daten an dieser Stelle im Debugger geprüft (.data):


this.dataTableAdapter.Update(this.backupMonitorData.data);

Der Datentyp wird als Datetime angegeben für die Spalte Last_Succeeded. Der Wert ist z.B. {19.06.2015 21:38:41}.

Gruß,
Thomas

€: Nachtrag
Wenn ich ab Zeile 2 in der Tabelle eine Uhrzeit vorgebe und dann mein Programm ausführe, bekomme ich eine DBConcurrencyException.

Thema: [gelöst] Datetime aus DataGridVeiw in MSSQL speichern
Am im Forum: Datentechnologien

verwendetes Datenbanksystem: MSSQL

Hallo Community,

nach einigen Jahren hat es mich wieder zum Programmieren hingezogen und nun sitze ich seit einigen Stunden vor einem Problem (genauer gesagt, zwei Problemen), bei dem ich nicht weiter komme und hoffe, dass ihr mir helfen könnt.

Was ich vor habe:
Ich habe eine einfache Tabelle in einer MSSQL Datenbank angelegt und lese diese Daten in ein Datagridview zu Ansicht ein (alles über das Visual Studio zusammengeklickt). Das funktioniert auch prima. Ich habe ein weiteres Datagridview, wo ich die Daten bearbeiten und neue Datensätze anlegen kann, auch das klappt einwandfrei.

Des Weiteren lese ich über die ExchangeWebServices E-Mails von einem Exchange Postfach ein und filtere Anhand einer ID im Betreff die gewünschten Mails raus und packe das Datum der Mails mit in das Datagridview. Bis hierhin klappt das auch, aber nun kommt das Problem.

Problem:
Sobald ich die Daten des Datagridview über den Update Befehl speichere, wird die erste Zeile nicht gespeichert, und das Uhrzeit in den anderen Zeilen wird nicht korrekt gespeichert, die Stunden und Minuten werden nicht eingetragen. Ich habe schon Datetime und Smalldatetime probiert, mit dem gleichen Ergebnis. Das Datum speichert er korrekt ab (bis auf die erste Zeile, die nicht aktualisiert wird).
Entferne ich den Update Teil aus dem Code, werden die Daten auch korrekt im Datagridview angezeigt, ansonsten fehlen auch hier die Stunden und Minuten.
Wie bekomme ich die Uhrzeit korrekt abgespeichert und wie bekomme ich die erste Zeile aktualisiert?

Tabelle:


CREATE TABLE [dbo].[data] (
    [Id]             INT           IDENTITY (1, 1) NOT NULL,
    [Customer]       VARCHAR (100) NULL,
    [Mo]             TINYINT       NULL,
    [Di]             TINYINT       NULL,
    [Mi]             TINYINT       NULL,
    [Do]             TINYINT       NULL,
    [Fr]             TINYINT       NULL,
    [Sa]             TINYINT       NULL,
    [So]             TINYINT       NULL,
    [Last_Succeeded] DATETIME      NULL,
    [Last_Failed]    DATETIME      NULL,
    PRIMARY KEY CLUSTERED ([Id] ASC)
);

Der Anhang enthält ein Bild der Tabellendaten. Zu sehen ist, dass Zeile 1 kein Datum bekommt, und in Zeile 2 und 3 die Uhrzeit nicht korrekt ist. Bei Zeile 4 fehlt es korrekterweise, da keine E-Mail zu dieser ID gefunden wird.

Gruß,
Thomas

Thema: [erledigt] Client/Server Kommunikation funktioniert nur lokal
Am im Forum: Netzwerktechnologien

Hi gfoidl,

ich wollte ein Doppelposting vermeiden, aber fürs Nächste Mal weiß ich nun bescheid.


Gruß,
Thomas

Thema: [erledigt] Client/Server Kommunikation funktioniert nur lokal
Am im Forum: Netzwerktechnologien

Hi Community,

ich hoffe ihr könnt mir auch wieder bei diesem Problem helfen.
Mein Client/Server Konstrukt funktioniert lokal prima. Sowohl der Server als auch der Client können Nachrichten empfangen und senden. Installiere ich den Server auf einem anderen Rechner, funktioniert die Geschichte nicht mehr. Die Fehlermeldung die ich erhalte lautet, dass die Verbindung nicht akzeptiert wurde.

Firewall ist auf dem Zielsystem deaktiviert. Kommt der lokale Router noch als Störquelle in Frage?


Gruß,
Thomas

€: Habe natürlich direkt nach dem Erstellen des Postings den Fehler gefunden. Ich habe beim TcpListener nicht IPAddress.Any angegeben, sondern die 127.0.0.1.

Thema: [gelöst] Event funktioniert nicht
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hey,

ich habe den Debugger auf die Zeile "if (this.mSocket.Connected && this.mStream.DataAvailable)" gesetzt und der stoppt dort erstmal und zeigt, dass DataAvailable false ist. Das ist auch soweit korrekt, da ich noch nicht gesendet habe. Schickt der Client nun etwas, wird sofort true angezeigt, er springt ins Event und alles klappt...

Wird mein Thread irgendwie gekillt, sodass er nur einmal durchläuft? Ich bleib dran... :/

Edit:
Das ein ein Programm einen Thread startet und in diesem Thread wieder ein Thread gestartet wird sollte kein Problem sein, oder?

Edit:
Es fehlt die While Scheife in ReadMessage Methode...

Thema: [gelöst] Event funktioniert nicht
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo Leute,

mein Event funktioniert nicht, und ich finde einfach nicht den Fehler. Es wird nicht ausgelöst. Befindet sich der Fehler im folgenden Code?


// Client Klasse
        public event EventHandler mMessageReceived;


        protected virtual void OnMessageReceived(EventArgs pEa)
        {
            EventHandler MyEvent = this.mMessageReceived;
            if (MyEvent != null)
                MyEvent (this, pEa);
        }

        public Client(Socket pSocket)
        {
            this.mSocket = pSocket;
            this.mStream = new NetworkStream(this.mSocket);
            this.mReader = new BinaryReader(this.mStream);
            this.mWriter = new BinaryWriter(this.mStream);

            if (this.mSocket.Connected)
            {
                this.mMessageReceiver = new Thread(ReadMessage);
                this.mMessageReceiver.Start();
            }
        }

// Feuert das Event und läuft in einem Thread
public void ReadMessage()
        {
            try
            {
                if (this.mSocket.Connected && this.mStream.DataAvailable)
                {
                    this.mMessages = this.mReader.ReadString();
                    this.OnMessageReceived(EventArgs.Empty);
                }
            }
            catch (Exception pEx)
            {
                throw new Exception("Fehler beim Lesen des Streams.", pEx);
            }
        }


// Server Klasse

// läuft in einem Thread und registriert den Event.
private void Watcher()
        {
            TcpListener Listener = new TcpListener(IPAddress.Parse("127.0.0.1"), 8888);

            try
            {
                Listener.Start();

                while (true)
                {
                    while (!Listener.Pending())
                        Thread.Sleep(200);

                    Client C = new Client(Listener.AcceptSocket());
                    C.mMessageReceived += new EventHandler(this.MessageReceivedFromClient);
                    this.mClients.Add(C);
                }
            }
            catch (Exception pEx)
            {
                throw new Exception("Fehler bei Verbindungserkennung", pEx);
            }
        }

// MessageBox erscheint nicht...
private void MessageReceivedFromClient(Object pSender, EventArgs pEa)
        {
            MessageBox.Show("Event");
            Client C = (Client)pSender;
            this.mRtbChat.Text += C.Messages + Environment.NewLine;
        }

Thema: Lauscht der TCPListener permanent nach Verbindungen?
Am im Forum: Netzwerktechnologien

Danke Darth,

Also doch für jeden Client auch einen Thread machen.

Was liefert eigentlich ein BinaryReader.ReadString() zurück, wenn der Server mit dem Verarbeiten nicht nach kommt und der Client zwei Nachrichten verschickt hat, bevor der Server die erste verarbeiten konnte?

Nachricht 1: hello
Nachricht 2: world

Liefert die Methode ReadString() dann Helloworld zurück oder wird das trotzdem einzeln abgearbeitet? Die Methode WriteToChat von mir würde entweder helloworld ausgeben oder in zwei zeilen schreiben.


// Ausgabe
// Möglichkeit 1
helloworld

// Möglichkeit 2
hello
world

Gruß,
Thomas

Thema: Lauscht der TCPListener permanent nach Verbindungen?
Am im Forum: Netzwerktechnologien

Hey,

ich habe noch eine Frage. Mein Server und der Client funktionieren soweit. Jetzt möchte ich dafür sorgen, dass ich Verbindungen von mehreren Clients annehmen kann. Im Moment lasse ich den BinaryReader des Clients auf dem Server permanent in einer while Schleife in einem eigenen Thread laufen. Sollten sich nun 100 Clients verbinden, wäre das nicht zuviel für einen Server?

Wie handelt man am Besten viele Clients serverseitig? Anbei noch der Code für einen Client.

Gruß,
Thomas


this.mSocketing = new Thread(new ThreadStart(this.Socketing));
this.mSocketing.Start();

//////////////////////////////////////
        private void Socketing()
        {
            while (true)
            {
                if (this.mStream.DataAvailable)
                    this.WriteToChat();
            }
        }


void WriteToChat()
        {
            if (this.mRtbChat.InvokeRequired)
            {
                this.mRtbChat.Invoke(new MethodInvoker(WriteToChat));
                return;
            }

            this.mRtbChat.Text += this.mReader.ReadString() + Environment.NewLine;
        }

Thema: Lauscht der TCPListener permanent nach Verbindungen?
Am im Forum: Netzwerktechnologien

Danke für die Antworten,

ist dieses Tutorial geeignet? Simple Threaded TCP Server

Ich versuche einen Chat zu schreiben, der später für ein Netzwerkspiel genutzt wird.
Der Server soll erstmal Verbindungen herstellen und Textnachrichten der Clients an alle verschicken, die sich auf dem Server befinden.
Später kommt dann noch die Spielverwaltung hinzu, um ein Schummeln möglich einzudämmen soll die Logik auf dem Server laufen.

Gruß,
Thomas

Thema: Lauscht der TCPListener permanent nach Verbindungen?
Am im Forum: Netzwerktechnologien

Hiho Leute,

ich habe eine Verständnisfrage zum TCPListener. Wenn ich den Listener starte, lauscht der dann permanent nach Verbindungen? Kann ich dann in einer Form mit einem Timer von z.B. 50ms dauerhaft nach neuen Verbindungen suchen?

Gruß,
Thomas

Thema: DataGridView und verschiedene Tabellen
Am im Forum: GUI: Windows-Forms

Hallo Comm,

ich würde gerne wissen, ob es möglich ist in einem DataGridView die Daten aus mehreren Tabellen anzuzeigen. Die Daten werden über den Assisstenten geladen und dort kann ich ja die Spalten auswählen. Kann ich die Daten der Tabelle 'A' Spalte 'ID' mit der Tabelle 'B' Spalte 'Kundennr' direkt verknüpfen, sodass statt der ID direkt die entsprechende Kundennr angezeigt wird?

Ich weiß wie ich die Daten manuel auslese und ins DGV packe. Geht dies auch direkt über den Assisstenten?


Gruß,
Thomas

Thema: NativeMethods nicht bekannt
Am im Forum: Rund um die Programmierung

Danke trashkid2000, ich dachte es würde sich dabei um eine Methode aus dem .Net Framework handeln...

Thema: NativeMethods nicht bekannt
Am im Forum: Rund um die Programmierung

Hallo,

Ich versuche mit der Lidgren Library einen kleinen Chat zu machen und habe ein Problem mit dem Sample ImageServer. Dort wird NativeMethods aufgerufen, welche aber nicht bekannt ist bei mir. Im Originalcode wird "Der Name "NativeMethods" ist im aktuellen Kontext nicht vorhanden." nicht angezeigt, jedoch bei meinem, wo ich alle Methoden per Copy & Paste übernommen habe...

Wie kann ich das Problem beheben? Fehlen noch Infos?


Gruß Thomas

Thema: E-Mailversand blockiert Datei
Am im Forum: Web-Technologien

Hi Sarc,

Nein vom Smtp-Client rufe ich diese nicht auf, da ich mehrmals E-Mails verschicke. Soll ich besser jedesmal das Smtp-Client Objekt neu anlegen?


Gruß Thomas

Thema: E-Mailversand blockiert Datei
Am im Forum: Web-Technologien

Hallo Comm,

Ich versende eine kleine TXT Datei per SMTP Client. Zuvor erzeuge ich eine Kopie dieser, welche ich dann als Attachment an meine E-Mail anhänge und verschicke. Versuche ich nun nach erfolgreichem Senden der E-Mail, diese Datei zu löschen, so ist diese in Benutzung und kann nicht gelöscht werden.

Was muss ich tun, damit die Datei nach dem Verschicken wieder freigegeben wird? Ein Dispose des Attachments hat nicht geholfen.


Gruß Thomas

Thema: Label in SplashScreen wird falsch dargestellt
Am im Forum: GUI: Windows-Forms

Hi,

Bist du dir sicher, dass es daran liegt? Der alte SplashScreen wurde an der selben Stelle aufgerufen und dort gab es das Problem nicht. Der einzige Unterschied ist meiner Meinung nach, dass ich den alten Splash im Designer erstellt habe und den Neuen komplett selbst geschrieben habe.

Danke für den Link, ich möchte aber was eigenes benutzen. :)


Gruß Thomas


€:
Nach dem testweisen Einbau eines Threadings funktionierte es, was nicht erklärt, warum es jetzt blockiert, wo es vorher nicht so war.
Ich nutze nun dieses Blockieren um den Splash entsprechend lange anzuzeigen, bis die Daten geladen sind, klappt gut. :D

Thema: Label in SplashScreen wird falsch dargestellt
Am im Forum: GUI: Windows-Forms

Hallo Comm,

Ich habe ein Problem mit Labels bei meinem simplen SplashScreen Form.
Die beiden Labels werden als weiße Balken angezeigt, und sobald der Timer rum ist, werden diese kurz vor dem Schließen des Forms richtig angezeigt. Woran kann das liegen?


public class SplashScreen : Form
    {
        private Label mLblTitle;
        private Label mLblVersion;
        private Timer mTmrDuration;

        public SplashScreen(int pDuration, string pTitle, string pVersion)
        {
            this.SetupForm();
            this.SetupLabels(pTitle, pVersion);
            this.SetupTimer(pDuration);
            this.AddControls();
        }

        private void SetupForm()
        {
            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
            this.Size = new Size(Properties.Resources.logo.Width, Properties.Resources.logo.Height);
            this.StartPosition = FormStartPosition.CenterScreen;
            this.ShowInTaskbar = false;
            this.BackgroundImage = Properties.Resources.logo;
            this.SetTopLevel(true);
        }

        private void SetupLabels(string pTitle, string pVersion)
        {
            this.mLblTitle = new Label();
            this.mLblTitle.Text = pTitle;
            this.mLblTitle.Font = new Font("Arial", 16F, FontStyle.Regular, GraphicsUnit.Point, ((byte)(0)));
            this.mLblTitle.Location = new Point(15, 50);
            this.mLblTitle.BackColor = Color.Transparent;
            this.mLblTitle.AutoSize = true;
            this.mLblTitle.Visible = true;
            this.mLblTitle.Show();

            this.mLblVersion = new Label();
            this.mLblVersion.Text = pTitle;
            this.mLblVersion.Font = new Font("Arial", 9.75F, FontStyle.Regular, GraphicsUnit.Point, ((byte)(0)));
            this.mLblVersion.Location = new Point(645, 538);
            this.mLblVersion.BackColor = Color.Transparent;
            this.mLblVersion.AutoSize = true;
            this.mLblVersion.Visible = true;
            this.mLblVersion.Show();
        }

        private void SetupTimer(int pDuration)
        {
            this.mTmrDuration = new Timer();
            this.mTmrDuration.Tick += new EventHandler(this.TmrDuration_Tick);
            this.mTmrDuration.Interval = pDuration;
            this.mTmrDuration.Start();
        }

        private void AddControls()
        {
            this.Controls.Add(this.mLblTitle);
            this.Controls.Add(this.mLblVersion);
        }

        private void TmrDuration_Tick(object sender, EventArgs e)
        {
            this.mTmrDuration.Stop();
            this.Close();
        }

Aufgerufen wirds dann in einer zweiten Anwendung und mit Show() angezeigt. Ich hatte das Ganze zuerst per Designer gebastelt und damit lief es. Diese Variante ist nun ohne Designer erstellt und dort taucht das oben beschriebene Problem auf.


Gruß Thomas

Thema: Fehlende Verweise
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Jetzt klappts. Dankeschön. :)

Thema: Fehlende Verweise
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Hi,

Ich nutze übrigens VS2010 Express Edition.
Anwendung soll als DLL mit .Net 4.0 Client Profile kompilieren (ist so eingestellt) und installiert.

Thema: Fehlende Verweise
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Hallo Comm,

Ich habe ein leeres Projekt erstellt und dazu eine leere Codedatei + eine Ressourcendatei mit einer Grafik. Wenn ich die DLL kompilieren will, bekomme ich die Meldungen vom Screenshot. Welche Verweise fehlen denn nun? Ich hab schon diverse Sachen probiert und es hat nicht geholfen...


Gruß Thomas

Thema: Liste von Listen deklarieren
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo Community,

Ich habe ein kleines Problem. Ich habe eine unbestimmte Menge von Werten, die ich als Index benutzen möchte und zu diesen Indexen gibt es eine eigene Klasse als zu speichernden Wert.
Diese möchte ich als Liste speichern.

Folgendes möchte ich tun:
Über eine Liste meiner Objekte iterieren und dann alle Objekte mit dem Wert 1 (bis x) wieder in eine neue Liste packen, wobei der Index für all diese Objekte 1 (bis n) wäre in der neuen Liste.

Codemäßig soll das so aussehen (scheint mir auch verständlicher als mein Text ^^)


foreach (Object O in MyObjects)
{
    MyNewList[O.MyValue].Add(O);
}


Wie muss ich MyNewList anlegen, damit es funktioniert?


Gruß Thomas

Thema: Zugriff auf Grafik nicht sperren
Am im Forum: Grafik und Sound

Hallo,

Vielen Dank.


Gruß Thomas

Thema: Zugriff auf Grafik nicht sperren
Am im Forum: Grafik und Sound

Hallo,

Ich lade eine Grafik und binde sie als Bitmap Objekt ein. Wenn ich nun versuche, mit einem Bildbearbeitungsprogramm diese Grafik zu bearbeiten, während mein Programm läuft, dann bekomme ich die Meldungm dass eine Zugriffsverletzung auftritt. Wie kann ich dies beheben?


Gruß Thomas

Thema: Disskussion bzgl. der Client-Server-Komponente
Am im Forum: Netzwerktechnologien

Hallo,

Ich versuche anhand des Tutorials einen kleinen Chatserver und einen Chatclient zu erstellen. Jedoch bekomme ich an der Stelle Probleme, wo die Socketverbindung an das Objekt serverInstance übergeben wird und dann in einer Collection gespeichert wird.

Bei mir führt das Übergeben an die ArrayList zu einem Verbindungsfehler.


private void Listen()
        {
            TcpListener L = new TcpListener(this.mIpAddress, this.mPort);
            try
            {
                L.Start();
                while (!L.Pending())
                    Thread.Sleep(100);
                Client C = new Client(L.AcceptSocket());
                this.mClients.Add(C);
                this.OnSendMessage("Console: Client connected, IP: " + C.Connection.Socket.RemoteEndPoint + ", Port: " + ((IPEndPoint)C.Connection.Socket.LocalEndPoint).Port.ToString());
            }
            catch (Exception e)
            {
                throw new Exception("Fehler bei Verbindungserkennung", e);
            }


Meine ArrayList heißt mClients und beim Übergeben des Objekts Client (C) wird der Fehler ausgelöst der unten geworfen wird. Ohne die Collection funktioniert es wunderbar.

Hier noch die Client und Connection Klasse.


// Client
class Client
    {
        private Connection mConnection;

        public Connection Connection
        {
            get { return this.mConnection; }
        }

        public Client(Socket pSocket)
        {
            this.mConnection = new Connection(pSocket);
        }
    }

// Connection
class Connection
    {
        private Socket mSocket;

        public Socket Socket
        {
            get { return this.mSocket; }
        }

        public Connection(Socket pSocket)
        {
            this.mSocket = pSocket;
        }
    }

Gruß Thomas


€: Ich habe den Fehler gefunden. Ich habe vergessen die ArrayList zu initialisieren...Schade, dass die Exception die eigentliche Fehlermeldung auf einen fehlenden Objektverweis überspielt.


Gruß Thomas

Thema: W-Lan (Wifi) Einstellungen ändern
Am im Forum: Netzwerktechnologien

Hallo,

Hat mittlerweile jemand es geschafft, sich mit der ManagedWiFi API zu verbinden? Anscheindend bekomme ich keinen passenden string für die Verbindung geschrieben. Er meldet immer, dass er den Pfad nicht finden kann...

string profileXml = string.Format("<?xml version=\"1.0\" encoding=\"US-ASCII\"?><WLANProfile xmlns=\"http://www.microsoft.com/networking/WLAN/profile/v1\"> <name>MyWlan </name> <SSIDConfig> <SSID> <name>MyWlan </name> </SSID> </SSIDConfig> <connectionType>ESS </connectionType> <connectionMode>auto </connectionMode> <autoSwitch>true </autoSwitch> <MSM> <security> <authEncryption> <authentication>WPAPSK </authentication> <encryption>TKIP </encryption> <useOneX>false </useOneX> </authEncryption> <sharedKey> <keyType>passPhrase </keyType> <protected>false </protected> <keyMaterial>MyPass </keyMaterial> </sharedKey> </security> </MSM> </WLANProfile>");


// das wirft den Fehler
Wlan.ThrowIfError(
						Wlan.WlanSetProfile(client.clientHandle, info.interfaceGuid, flags, profileXml, null, overwrite, IntPtr.Zero, out reasonCode));


Gruß Thomas