Laden...
D
deerhunter myCSharp.de - Member
Anwendungsentwickler Dabei seit 31.10.2005 91 Beiträge
Benutzerbeschreibung

Forenbeiträge von deerhunter Ingesamt 91 Beiträge

07.05.2008 - 10:02 Uhr

Hallo herbivore!

Vielen Dank für dein tolles Tool.

23.04.2008 - 11:58 Uhr

^^ im Betreff steht schon alles 😉
Hab im Internet leider keine Informationen diesbezüglich gefunden.

03.12.2007 - 23:49 Uhr

Ich möchte der Image-Klasse gerne weitere Eigenschaften hinzufügen, die ich in verschiedenen Events abfragen kann.

Ich würde gerne folgendes tun:

  1. Klasse erweitern

class MyImage : Image {
public string MyNewProperty {get; set; }}

  1. in der XAML-Datei meine erweiterte Klasse verwenden

<MyImage name="im1" MyNewProperty="foobar"/>

Im Designer bekomme ich immer die Fehlermeldung, dass sich der Tag MyImage nicht im XML namespace http://schemas.microsoft.com/winfx/2006/xaml/presentation befindet.

Ich würde mich über Vorschläge von euch freuen. Gerne auch passende Suchbegriffe, die zum richtigen Ergebnis führen 😉
Ich benutze z.Zt. den Workaround über die Tag-Eigenschaft der Image-Klasse, würde dies aber gerne vermeiden, nicht zuletzt um das casten von object zu vermeiden...

Grüße, Florian

23.09.2007 - 15:35 Uhr

Hallo Pharao2k,

du kannst dafür DetailsView benutzen. Dort setzt du das DefaultMode-Property auf Insert und du hast direkt den gewünschten Modus.

Grüße, Florian

04.04.2007 - 17:01 Uhr

Hallo frecher Dachs 😉

Ich denke nicht, dass es in der Konsole die Möglichkeit gibt, den Exponenten hochgestellt zu formatieren.
In WinForms hingegen könntest du dir da ja was anderes ausdenken. Die Anzahl der Dezimalstellen kannst du mit dem dekadischen Logarithmus berechnen, der in der Math-Klasse bereits implementiert ist. Wie du den Exponenten dann darstellst, bleibt deiner Kreativität überlassen...

11.03.2007 - 01:07 Uhr

Hallo hard_42,

erstelle dir doch einfach zwei Variablen, wie z.B. operand1 und operand2. (vom Typ int für ganz und double für Zahlen mit Nachkommastellen). Diese bekommen einen Wert zugewiesen, wenn du eine Zahl eingibst.

Dann erstellst du dir Methoden für die jeweiligen Rechenoperationen, die die beiden Variablen entgegenehmne und das Ergebnis zurückgeben. Dieses zeigst du dann im Textfeld an.

30.10.2006 - 23:32 Uhr

@Hape: You made my day 😁

Vielen Dank. Da bin ich wohl zu einen copy-and-waste-victim geworden 😉

30.10.2006 - 23:07 Uhr

Hallo Hape,

oops - der Link wurde automatisch umgewandelt - ich wollte nur auf die richtige Stelle im Tool hinweisen.

Das Tool aspnet_regsql.exe hab ich verwendet und die Tabellen usw. erfolgreich auf dem Server angelegt.
Der Fehler erscheint in dem Konfigurationstool, wenn ich z.B. einen neuen User oder eine Rolle hinzufügen möchte.

30.10.2006 - 22:52 Uhr

Ich möchte meine Userverwaltung nicht mit der SQL-Express DB abwickeln, sondern mit einer externen DB auf einem SQL2005 Server.

Ich habe dazu die web.config folgendermaßen angepasst:


    <authentication mode="Forms" />
    <roleManager defaultProvider="MySqlRoleProvider"
        enabled="true"
        cacheRolesInCookie="true"
        cookieName=".ASPROLES"
        cookieTimeout="30"
        cookiePath="/"
        cookieRequireSSL="false"
        cookieSlidingExpiration="true"
        cookieProtection="All" >
      <providers>
        <clear />
        <add
            name="MySqlRoleProvider"
            type="System.Web.Security.SqlRoleProvider"
            connectionStringName="userDBConnectionString"
            applicationName="/"
            writeExceptionsToEventLog="false"
        />
      </providers>
    </roleManager>

    <membership defaultProvider="MySqlMembershipProvider">
      <providers>
        <add connectionStringName="userDBConnectionString" name="MySqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
      </providers>
    </membership>

Wenn ich jetzt jedoch über das ASP.NET-Konfigurationstool (asp.netwebadminfiles/security/security.aspx) die Einstellungen anpassen möchte, erhalte ich die folgende Fehlermeldung:


Es ist ein Fehler aufgetreten. Kehren Sie zur vorhergehenden Seite zurück, und versuchen Sie es erneut. 

Die folgende Meldung kann bei der Problemdiagnose hilfreich sein: Attribut nicht erkannt "writeExceptionsToEventLog" (E:\Eigene Dateien\Visual Studio 2005\Projects\Websites\Website\web.config line 22) bei System.Web.Administration.WebAdminPage.CallWebAdminHelperMethod(Boolean isMembership, String methodName, Object[] parameters, Type[] paramTypes) bei ASP.security_users_adduser_aspx.PopulateCheckboxes() in c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\ASP.NETWebAdminFiles\Security\Users\addUser.aspx:Zeile 28. bei ASP.security_users_adduser_aspx.Page_Load() in c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\ASP.NETWebAdminFiles\Security\Users\addUser.aspx:Zeile 22. bei System.Web.Util.CalliHelper.ArglessFunctionCaller(IntPtr fp, Object o) bei System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) bei System.Web.UI.Control.OnLoad(EventArgs e) bei System.Web.UI.Control.LoadRecursive() bei System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) 

Weiß jemand, wie ich diesen Fehler beheben kann?

08.10.2006 - 12:50 Uhr

Ich dachte, dass man nur einzelne Werte übergeben kann.
Ich hab mir jetzt einen string erstellt, der die einzelnen Parameter durch Komma abtrennt. Ich bin davon ausgegangen, dass man z.B. ein int[] mit den einzelnen IDs übergeben muss.

Stand wohl ein bisschen auf dem Schlauch...
Danke für dein Bemühen. 👍

08.10.2006 - 09:54 Uhr

Original von Waschbecken
Schleife über alle DataList-Items bzw. deren ItemTemplates, dort über FindControl() die CheckBoxList holen, und dann deren Einträge auslesen und auswerten, was auf OldSchool-Art passiert

Hallo Waschbecken,

alles klappt prima - vielen Dank für diene Hilfe!

Eine Frage hätte ich allerdings noch:
Weiß jemand, wie ich die eine SELECT-Anweisung verwenden kann im Stil von

SELECT * FROM tabelle WHERE id IN(@Parameterliste)

Es geht mir darum, eine Liste mit Parametern zu übergeben. Im SQL-Server funktioniert das (msdn) nur weiß ich nicht, wie/ob ich von .NET aus eine solche Parameterliste verwenden kann und wenn ja welche Datenstruktur diese haben soll.

08.10.2006 - 00:23 Uhr

Original von Waschbecken
Zum Thema Datenbindung hab ich erst vor ein paar Tagen was geschrieben:

Das finde ich gut, dass du Beiträge präventiv schreibst 😉
Vielen Dank für deinen Tipp. Mit dem Zusammenklicken von Seiten gebe ich dir Recht: Es ist am Anfang sehr verlockend, wenn man schnell kleine Erfolge erzielen kann. Wenn es allerdings etwas komplexer wird, dann steht man schnell auf dem Schlauch, wenn man nicht von Hand eingreift.

Also danke nochmals.

07.10.2006 - 16:13 Uhr

Ich habe folgendes Szenario und stehe bei der Implementierung auf dem Schlauch:
In einem Semester finden mehrere Vorlesungen statt und für manche vergeben die Dozenten Passwörter für die Skripte. Nach erfolgreicher Validierung soll die Studenten eine Email mit allen angeforderten Passwörtern erhalten.

Ich möchte in einer DataList zu jedem Semester eine CheckBoxList mit den Vorlesungen anzeigen lassen.
Beide sollen Datengebunden sein und das ganze soll nachher so ähnlich wie auf der Grafik im Anhang aussehen.

Ich hänge an dem Punkt, wo ich die CheckBoxListen befüllen und nachher wieder ALLE auslesen will.
Wie bewerkstellige ich die Datenbindung der CheckBoxList für jedes einzelne Semester?

Beim Klick auf den Button möchte ich gerne die IDs (hier SemesterID & VeranstaltungsID) von allen Vorlesungen haben, die gewählt wurden.

Über eine Antwort würde ich mich sehr freuen.

11.09.2006 - 11:17 Uhr

Original von Puppetmaster

Willst Du wissen wie man die Daten überhaupt speichert wenn man eine n:m Beziehung hat?
...
Ansonsten verstehe ich die Frage mit dem Komfort nicht. Der wäre dann nämlich Programmabhängig.

Hallo Puppetmaster,
ich hab mich wohl nicht so klar ausgedrückt. Mir ging es hauptsächlich darum, wie das GUI-Design aussehen soll, um dem User möglichst viel Komfort zu bieten.
Komfort bedeutet für mich z.B. das keine FKs von Hand eingegeben müssen, um einerseits unnötige Tipparbeit zu vermeiden und andererseits natürlich um Fehleingaben auszuschließen.

Original von Puppetmaster
Wenn der Lehrer nur Klausuren zusammen stellen will fände ich es gut wenn er alle Aufgaben in einer Liste sieht und diese dann per Drag&Drop rüberziehen könnte. Das wäre für mich Komfort.

Das ist eine gute Idee - vielen Dank dafür. Mal sehen, ob ich das umsetzen kann...


Original von Fabian

Das Windows Forms Team hat sich dann aber gegen die Möglichkeit "des Aufklappens" entschieden, weil es bei vielen verknüpften Daten nicht wirklich kompfortabel ist.

Hallo Fabian,
das ist mir auch schon aufgefallen, dass Access bei mehreren Verknüpfungen dann nicht weiß, welche Relation denn jetzt aufgeklappt werden soll.

10.09.2006 - 18:53 Uhr

Hallo community,

ich würde gerne von Euch wissen, wie ihr das Editieren bei n:m Beziehungen ermöglicht.
Ich kenne dies bisher nur aus Access und da finde ich es recht komfortabel, wie dort mit Beziehungen umgegangen wird.

Mein Beispiel bezieht sich auf folgendes Szenario:
Fragenverwaltung für Klausuren (Dozent hat alte Klausurfragen zum Lernen zur Verfügung gestellt)
Eine Frage kann zu mehreren Klausurterminen gestellt werden und
eine Klausur besteht aus mehreren Fragen.
siehe (vereinfachtes) Schema:

Dabei finde ich es recht benutzerfreundlich, dass man über das "+" links neben der ersten Spalte auf alle "Unterdatensätze" zugreifen kann, ohne den FK angeben zu müssen und beim einfügen die jeweiligen Datensätze mittels ComboBox auswählen kann wobei man sich den PK UND eine weitere Spalte anzeigen lassen kann.

Ich würde mich freuen, wenn mir jemand beschreiben würde, wie ihr vorgeht, um dem User einen hohen Komfort zu bieten.

Grüße, Florian

02.07.2006 - 11:44 Uhr

Original von chri
kann man eigentlich jetzt schon wpf-applikationen entwickeln (wpf soll es auch für win xp geben)?

Ja, kann man. siehe hier
Ist aber noch in der Beta-Phase...

25.06.2006 - 12:55 Uhr

Hallo,

ich bin auf der Suche nach einer Software für das Synchronisieren meines Outlooks zwischen Heim-PC und Laptop.

Würde mich über Tipps freuen.
Das günstigste, was ich bis jetzt gefunden habe ist SyncMe für 30€.

Gibt's sowas vielleicht auch als freeware?

Grüße,
Florian

23.06.2006 - 09:41 Uhr

Dann hast du nicht ganz richtig geguckt... 😉

public static bool IsMatch (
	string input,
	string pattern
)

Man kann auch eine Instanz einer Regex-Klasse erstellen, aber ich hatte nur die statische Methode verwendet.

Na, egal. Das @ vor strings benutzt man, damit z.B. die Backslashes nicht als Einleitung von Escape-Sequenzen interpretiert werden.
D.h. der string wird so verwendet, wie er eingegeben wurde.

Grüße, Florian

22.06.2006 - 22:13 Uhr

Original von willy
Richtige Eingaben sind Ziffern, Buchstaben ob groß oder klein.

...

Ich weiss nicht wie ich die If Abfrage formulieren muss.

Probiers mal mit der statischen Regex.IsMatch() Methode:

if (Regex.IsMatch(textBox1.Text, @"^\w+$"))

Grüße,
Florian

14.06.2006 - 09:47 Uhr

Hallo CFM04,

ich würde dir empfehlen für den Wetterzustand ein enum zu verwenden.
Damit kannst du nachher komfortabler weiterarbeiten - z.B. in einer switch-Anweisung.

Grüße, Florian

30.04.2006 - 12:44 Uhr

Original von herbivore

Copy-Konstruktor gibt's nicht. 🙂

herbivore

Verstehe ich nicht - mein Dozent ist da anderer Meinung...


Testobjekt t2 = new Testobjekt(to);

//...

public Testobjekt(Testobjekt kopie)
{
    this.teststring = kopie.teststring;
}

Wäre schön, wenn du mir das kurz erläutern könntest, warum es dies nicht gibt. Man soll ja nicht alles glauben 😉

30.04.2006 - 12:34 Uhr

Original von herbivore
Hallo deerhunter,

ich vermute mal, dass dich stört, dass da zweimal "Hallo Otto" steht und nicht nur einmal. Du erzeugst halt nur ein Textobjekt. Wenn du zwei haben willst, musst du auch zwei erzeugen.

herbivore

Hallo herbivore,

ja das ist es, was mich stört.
Die einzige Möglichkeit, die mir einfällt ist ein neues Objekt mit einem Copy-Konstruktor zu erzeugen, dies zu verändern und dann im Stack zu speichern.
Kennst du eine elegantere Methode oder ist das so ok? (-->bad-style vs. good-style)

30.04.2006 - 12:16 Uhr

Ich würde gerne verschiedene Zustände einer Instanz meiner Klasse in einem Stack speichern.
Um mein Problem zu verdeutlichen, habe ich eine Beispielanwendung beschrieben:


using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;

namespace test
{
    class TestStack
    {
        static void Main(string[] args)
        {
            Testobjekt to = new Testobjekt();
            Stack<Testobjekt> teststack = new Stack<Testobjekt>();

            teststack.Push(to);
            to.Teststring = "Hallo Otto";
            teststack.Push(to);

            foreach (Testobjekt toAusStack in teststack)
            {
                Console.WriteLine(toAusStack.Teststring);
            }
        }
    }

    class Testobjekt
    {
        string teststring;
        public string Teststring
        {
            get { return teststring; }
            set { teststring = value; }
        }

        public Testobjekt()
        {
            teststring = "Hallo Echo";
        }
    }
}

Die Ausgabe ist die folgende:

Hallo Otto
Hallo Otto
Drücken Sie eine beliebige Taste . . .

Ich vermute mal, dass die beiden Einträge im Stack auf den gleichen Speicherbereich zeigen.
Könnt ihr mir sagen, was ich falsch mache bzw. ist ein Stack überhaupt die richtige Datenablage für mein Objekt??
Ich brauche einen LIFO-Speicher, der verschiedene Objekte gleichen Typs speichert.

Grüße, Florian

28.04.2006 - 11:30 Uhr

hmpf, hab mitm malen so lang gebraucht

@sheitmann: Ich wusste auch nicht, dass hier innerhalb von Minuten geholfen wird...

Die Grafik ist sicherlich noch anderen eine Hilfe.

28.04.2006 - 11:05 Uhr

Hallo talla,

vielen Dank für deine schnelle Antwort. Ich glaube, da wäre ich nie drauf gekommen...
Jetzt funktioniert es.

Grüße, Florian

[edit] Besten Dank auch dir, svenson 😉

28.04.2006 - 10:54 Uhr

Hallo,

ich habe ein Array von List<int> Elementen und würde gerne daraus einzelne Elemente löschen.

Mein Problem habe ich in dem Codeblock beschreiben.
Hat jemand eine Idee, warum die Zahl 4 aus jeder Liste im Array gelöscht wird?

Grüße, Florian


    class Test01
    {
        static void Main()
        {

            int size = 9;
            List<int>[] moeglichkeiten_Zeile;
            List<int> temp = new List<int>(size);

            for (int t = 1; t <= size; t++)
                temp.Add(t);

            moeglichkeiten_Zeile = new List<int>[size];

            for (int i = 0; i < size; i++)
                moeglichkeiten_Zeile[i] = temp;

            //jetzt möchte ich die Zahl 4 aus der Liste an der Position 0 des Arrays löschen
            moeglichkeiten_Zeile[0].Remove(4);
            //Es wird nicht nur der Wert 4 aus der Zeile 0 gelöscht, sondern aus allen Zeilen.

            
            //Testausgabe
            for (int i = 0; i < size; i++)
            {
                foreach (int zahl in moeglichkeiten_Zeile[i])
                {
                    Console.Write("{0}  ", zahl);
                }
                Console.WriteLine();
            }
            Console.Read();
        }

    }

30.03.2006 - 13:57 Uhr

Hallo Crash override,

schau dir mal in der MSDN die Klassen
System.Net.WebRequest und System.Net.WebResponse an.
Da gibt es auch Beispiele.

28.03.2006 - 02:15 Uhr

Ich hab es selbst hinbekommen. Dennoch vielen Dank für deine Hilfe. Ich hätte mich exakter ausdrücken müssen.

Es hat bei mir nicht richtig funktioniert mit den Doppelnamen wie "Egon M." als Vorname. ICh hab jetzt einfach die speziellen Fälle abgefangen den mit dem "." und den mit dem "-".
Grüße, Florian

28.03.2006 - 00:53 Uhr

Original von herbivore
@"(?<vorname>.+)\s+(?<nachname>.+)"

Hallo herbivore,

bei Egon M. Müller matcht er korrekt.

Ich hab ein Testprogramm (stand in der MSDN), das mir die Matches und die Captures ausgibt.
Hier das Ergebnis


Match1
  Group1='Egon Müller'
    Capture0='Egon Müller',   Position=0
  Group2='Egon-Maria Müller-Lüdenscheidt'
    Capture0='Egon-Maria Müller-Lüdenscheidt',   Position=13
Match2
  Group1='Egon M.'
    Capture0='Egon M.',   Position=45
  Group2='Müller'
    Capture0='Müller',   Position=53

Es wird also nur bei Whitespaces getrennt.
Any idea?

28.03.2006 - 00:32 Uhr

Meine Frage passt auch zu dem Thema, deshalb wollte ich keinen neuen Thread eröffnen.

Ich soll einen String der folgendermaßen aufgebaut ist...

Egon Müller
Egon-Maria Müller-Lüdenscheidt
Egon M. Müller

...in dieses Zielformat umwandeln:
Nachname, Vorname

Könnte mir jemand von Euch helfen, den Vor- von dem Nachnamen zu trennen?
Vielen Dank im Voraus!

Florian

27.03.2006 - 11:55 Uhr

Hallo,

ich habe ein kleines Problem mit meinem WinXP.
Ich habe die Taskbar an den rechten Bildschrimrand verschoben und verbreitert. (so dass ich unten die Uhr mit voll ausgeschriebenem Datum sehe: Montag 27.03.2006)

Bei jedem Neustart des PC wird die Taskbar ein wenig schmaler. Ich hab schon im Internet gesucht, aber keine Lösung gefunden.

Gibt es vielleicht mit .NET eine Möglichkeit, die Größe der Taskbar zu verändern?
Ich würde mir dann einfach ein kleines Tool schreiben, dass beim Neustart die Taskbar auf meine gewünschte Größe setzt.

Grüße, Florian

10.03.2006 - 14:10 Uhr

Original von svenson
Wenn du ein xsd-File hast, dann kannst du auch eine Klasse codegenerieren lassen, die das Zeug in einem Rutsch in eine Objekt-Struktur lesen. Das hat gegenüber XmlDocument den Vorteil, dass der Zugriff typisiert erfolgt.

@Svenson: Besten Dank für den Hinweis; wieder etwas dazugelernt. Ist ja recht komfortabel.

Grüße, Florian

10.03.2006 - 00:41 Uhr

Schaue dir meinen Code mal an. Damit kommst du bestimmt weiter.

Grüße, Florian


        static void Main(string[] args)
        {
            string readerurl = @"test.xml";
            //string writerurl = @"C:\Datendateien\writer.xml";
            XmlTextReader rdr = new XmlTextReader(readerurl);
           

            while (rdr.Read()) //durchläuft das XML-Dokument solange, bis es nichts mehr zu lesen gibt
            {
                switch (rdr.NodeType)
                {

                    case XmlNodeType.Element: 
                        Console.WriteLine("< " + rdr.Name + " >");
                        break;
                    case XmlNodeType.EndElement:
                        Console.WriteLine("</ " + rdr.Name + " >");
                        break;
                    case XmlNodeType.Text: //funktioniert mit meiner Beispiel-XML Datei nicht
                        Console.WriteLine("" + rdr.Value + "");
                        break;
                    default:
                        break;
                }
            }
            rdr.Close();
        }

16.02.2006 - 12:03 Uhr

Hallo Alexander,

vielen Dank für diese tolle Community-Plattform, die für mich eine wichtige Informationsquelle geworden ist.
Viel Erfolg bei allem, was dir die Zukunft so bringt.
Grüße, Florian

12.02.2006 - 22:31 Uhr

Ja, hatte ich vergessen zu erwähnen.

Ich benutze VS 2005 Prof. Final

12.02.2006 - 19:51 Uhr

Hallo,

ich habe ein Projekt erstellt, dass eine SQL-DB verwendet und habe dies veröffentlicht (Eigenschaften des Projekts --> Veröffentlichen --> Erforderliche Komponenten).
Jetzt möchte ich das Programm mit Hilfe der generierten setup-Datei auf einem anderen Rechner installieren.
Es ist so konfiguriert, dass es im Vorfeld die fehlenden Komponenten herunterladen würde (in diesem Fall fehlen .NET 2.0 und SQL 2005 Express auf dem Testrechner)
Das tut es aber nicht...

Die Fehlermeldung ist die folgende:

Fehler beim Downloaden der folgenden Ressource:

http://go.microsoft.com/fwlink/?LinkId=37283&clcid=0x407
Das setup-Programm versucht unter diesem Link das .NET 2.0 Framework zu laden und findet dort nichts.
Ich habe diesen Link testweise im Browser eingegeben und dort funktioniert der auch nicht (weder im IE noch im Firefox).
Wenn ich jedoch das &clcid=0x407 am Ende weglasse, funktioniert der Link (im Firefox jedoch NICHT im IE - warum auch immer).
Ich stehe irgendwie auf dem Schlauch... Kann es sein, dass das VisualStudio beim Erstellen der Setup-Routine einen falschen Link einbaut?

Über eine Antwort (am besten mit Lösung 😉)würde ich mich freuen.
Grüße, Florian

16.01.2006 - 10:37 Uhr

Hey, das ging ja schnell!

Besten Dank dafür.
Florian

16.01.2006 - 00:05 Uhr

Hallo,

weiß jemand von euch, wie man einer Methode Informationen hinzufügt, welche dann vom Visual Studio angezeigt werden, wenn man mit der Maus über einen Aufruf dieser Methode fährt?

Bsp.: wenn man über das Wort "int" fährt steht dort:
_
struct System.Int32
Stellt eine 32-Bit-Ganzzahl mit Vorzeichen dar._

Über eine Antwort würde ich mich freuen.

MfG Florian

20.12.2005 - 10:54 Uhr

Hallo,

@Hitman II
Dein Beitrag hat mich neugierig gemacht.
könntest du mir bitte kurz beschreiben, wie man die Tasten eines Gamepads auslesen kann? Ich habe in der msdn nicht dazu gefunden.
Ich würde nämlich gerne ein kleines Tool schreiben, mit dem ich Gamepad-Buttons verwende um Tastatureingaben zu simulieren um z.B. den Windows-Flipper mit dem Gamepad zu spielen. Es gibt da zwar eine kommerzielle Lösung aber mir geht es ums Programmieren-Üben. Ich vermute, dass das nicht viel Aufwand ist und hoffe, dass ich mit dieser Vermutung nicht ganz falsch liege 😉

Über eine Antwort würde ich mich freuen.
MfG Florian

15.12.2005 - 18:14 Uhr

Original von herbivore
Hallo deerhunter,

das Problem ist, dass du in case 2 Console.Read benutzt.

herbivore

Hallo herbivore,
Vielen Dank für deine Hilfe, jetzt funktioniert es! Da wäre ich im Leben nicht drauf gekommen...

Gruß, Florian

15.12.2005 - 17:37 Uhr

Hallo,

ich bin neu hier im Forum und würde mich freuen, wenn ihr eine Lösung zu meinem Problem anbieten könntet.

Ich habe ein kleines "Menü" für meine Konsolenanwendung geschrieben und rufe mit der Eingabe von Zahlen mit Hilfe der switch-Anweisung den gewünschten Code auf.

Alles funktioniert prima, d.h. wenn ich 1, 3 oder 4 aufrufe, führt er den Code aus und ich gelange anschließend wieder zur Menüauswahl.
Wenn ich jedoch die 2 aufrufe, führt er den Code von "Case 2" aus und beendet das Programm ohne zum Auswahlmenü zurückzukehren.

Beim Step-by-Step debuggen habe ich festgestellt, dass er einfach die Console.ReadLine() Anweisung aus Zeile 19 überspringt, d.h. ich kann im Konsolenfenster nichts eingeben.
Das ganze verwundert mich sehr, da ich das "Menü" schon mehrfach verwendet habe und es bisher nie Probleme gab.
Hat jemand von euch vielleicht eine Idee, wo der Fehler liegen könnte?

Vielen Dank im Voraus.
Florian

P.S.: Ich habe im Code öfters ein "\n" bei der Stringausgabe verwendet. In dem Forum-Code wird dieses aber nicht dargestellt - zumindest in der Vorschau...
Sollte aber kein Problem sein, da es mir nur um die switch-case-Anweisung im Fall "case 2" geht.

[edit]
Ich benutze Visual STudio 2005 und .NET 2.0 unter Windows XP
[/edit]


using System;
using System.Collections;
using System.Text.RegularExpressions;

namespace Stringformatierung
{
	class Class1
	{
		[STAThread]
		static void Main(string[] args)
		{
			int Auswahl = 1;
			string Standardtext = "Ein einäugiger Bandit reinigt einige dreckige Kleidungsstückstreifen mit ein wenig Seifenlauge, die er eigens für eine solche Aktion vorbereitet hat.";
            string temp=null;
            while (Auswahl!=0)
			{
				Console.WriteLine("\n\n(0) beenden\n(1) Umwandlung einzelner Buchstaben eines Strings ('e'-->'D') und ('t'-->'U')\n(2) Anzahl der Zeichen im String zählen\n(3) EMail-Adresse überprüfen\n(4) Dateinamen aus vollständiger Pfadangabe extrahieren");
                Console.Write("Auswahl: ");
                temp = Console.ReadLine();  // <-- diese Zeile wird einfach übersprungen

                switch (Auswahl = temp != "" ? Convert.ToInt32(temp) : 0)  //Kurzform für if (temp !="") Auswahl = Convert.ToInt32(temp) else 0
				{
					case 1:
                        Console.Write("\nEingabe des Strings [leer lassen für Standardtext]: ");
						string Text = Console.ReadLine();
                        if (Text == "")
                            Text = Standardtext;
						string Text_1 = Text.Replace('e','D').Replace('t','U');
						Console.WriteLine("\nalter Text:\n{0}", Text);
						Console.WriteLine("\nveränderter Text:\n lautet{0}",Text_1);
                        break;

					case 2: 
						Console.WriteLine("Eingabe des Strings [leer lassen für Beispieltext]: ");
						string Eingabe_2 = Console.ReadLine();
						if (Eingabe_2 == "")
							Eingabe_2 = Standardtext;
						Console.Write("\nEingabe eines Such-Buchstabens: ");
                        char Such_Buchstabe = Convert.ToChar(Console.Read());
                        char[] array = Eingabe_2.ToCharArray();
                        int Anzahl = 0;
                        foreach (char i in array)
                            if (i == Such_Buchstabe)
                                Anzahl++;
                        Console.WriteLine("\n{0}\n", Eingabe_2);
                        Console.WriteLine("Der Buchstabe \"{0}\" kommt {1}x vor. ", Such_Buchstabe, Anzahl);
						break;

                    case 3:
                        Console.Write("Bitte eine EMail-Adresse eingeben: ");
                        string email = Console.ReadLine();
                        if (Regex.IsMatch(email, @"^[a-zA-Z][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$"))
                            Console.WriteLine("Adresse ist gültig.");
                        else
                            Console.WriteLine("Adresse ist ungültig.");
                        break;

                    case 4:
                        Console.Write("Bitte einen Pfad angeben [frei lassen für Beispielpfad]: ");
                        string Pfad = Console.ReadLine();
                        if (Pfad == "")
                            Pfad = @"C:\test\meinetextdatei.doc";
                        string pattern = @".*\\(?<Dateiname>\w+)\.(?<Endung>\w+)";
                        string replacement = @"${Dateiname}";
                        string dateiname = Regex.Replace(Pfad, pattern, replacement);
                        Console.WriteLine("kompletter Pfad: {0}\nDateiname: {1}",Pfad, dateiname);
                        break;

					default:
						break;
				}
			}
		}
	}
}