C# Programmfehler?

Bei mir treten folgende zwei Fehler auf, die ich gerade nicht gelöst bekomme. Weiß da jemand weiter?

Fehler   CS8179   Der vordefinierte Typ "System.ValueTuple`2" wurde nicht definiert oder importiert, oder er wurde in mehreren referenzierten Assemblys deklariert.   ConsoleApp32   C:\Users\sasch\source\repos\ConsoleApp32\ConsoleApp32\Program.cs   43   Aktiv
Fehler   CS0029   Der Typ "(double Länge, double Breite)" kann nicht implizit in "double" konvertiert werden.   ConsoleApp32   C:\Users\sasch\source\repos\ConsoleApp32\ConsoleApp32\Program.cs   43   Aktiv
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp32
{
  class Program
  {
    static void Main(string[] args)
    {
      Console.WriteLine("Herzlichen Willkommen im Programm zur Flächenberechnung! \nMöchten Sie eine Flächenberechnung für ein Rechteck oder ein Dreieck durchführen?");
      string Auswahl = einlesen();
      double Fläche = Rechteck();
      double Fläche2 = Dreieck();
  
      if (Auswahl == "Rechteck")
      {
      }
  
      Console.WriteLine("Die Fläche des Rechtecks beträgt: " + Fläche);
      Console.WriteLine("Die Fläche des Dreiecks beträgt: " + Fläche2);
  
      Console.ReadKey();
    }
  
    public static string einlesen()
    {
      Console.WriteLine("Bitte wähle Rechteck oder Dreieck aus:");
      string Auswahl = Convert.ToString(Console.ReadLine());
      return Auswahl;
    }
  
    public static double einlesen2()
    {
      Console.WriteLine("Bitte geben Sie die Maße (Länge x Breite) in Zentimeter ein:");
      double Länge = Convert.ToDouble(Console.ReadLine());
      double Breite = Convert.ToDouble(Console.ReadLine());
  
      return (Länge, Breite);
    }
  
    public static double Rechteck()
    {
      double Länge = einlesen2();
      double Breite = einlesen2();
      double Fläche = Länge * Breite;
  
      return Fläche;
    }
  
    public static double Dreieck()
    {
      double Länge = einlesen2();
      double Breite = einlesen2();
      double Fläche2 = (1/2) * Länge * Breite;
  
      return Fläche2;
    }
  }
}
programmieren, Programmierung, C Sharp, c-sharp-programmieren
3 Antworten
C# Programmverschachtelung?

Hey,

ich bin gerade dabei, ein C#-Programm zu programmieren, würde aber gerne mein Programm ein bisschen verschachteln (ist das das richtige Wort dafür?).

Das heißt, ich will eine Funktion zum Einlesen eines Wertes erstellen und dieser eingelesene Wert soll vom Main-Programm weiterverwendet werden können. Dazu habe ich ein Testprogramm geschrieben. Jedoch werden noch zwei Fehler zurückgegeben:

Fehler   CS0116   Member, wie z. B. Felder oder Methoden, können nicht direkt in einem Namespace enthalten sein.   ConsoleApp32   c:\users#zensiert#\source\repos\ConsoleApp32\ConsoleApp32\Program.cs   25   Aktiv
Fehler   CS0103   Der Name "einlesen" ist im aktuellen Kontext nicht vorhanden.   ConsoleApp32   c:\users\sasch\source\repos\ConsoleApp32\ConsoleApp32\Program.cs   15   Aktiv

Außerdem verschwimmen für mich immer wieder die Begriffe Funktionen, Klassen und Methoden. Kann das bitte nochmal jemand für mich klar abgrenzen?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp32
{
  class Program
  {
    static void Main(string[] args)
    {
      Console.WriteLine("Herzlichen Willkommen im Programm zur Flächenberechnung! \n Möchten Sie eine Flächenberechnung für ein Rechteck oder ein Dreieck durchführen?");
      string Auswahl = einlesen();
      Console.WriteLine(Auswahl);
      Console.ReadKey();
    }
  }
}

public static string einlesen()
{
  Console.WriteLine("Bitte wähle Rechteck oder Dreieck aus:");
  string Auswahl = Convert.ToString(Console.ReadLine());
  return Auswahl;
}
Computer, Schule, Programm, programmieren, Programmierung, Anwendungsentwicklung, C Sharp
1 Antwort
CTemeratur klasse?

Hallo kann jemand helfen? ich muss eine CTemeratur klasse erstellen zur speicherung und Umrechnung von Temperaturwerten die klasse besitzt aber nur ein einziges attribut um einen wer in grad kelvin zu speichern ich muss dann 4 eigenschaften erstellen jede Eigenschaft hat eine set methode die einen Temprautrwert in der entscprechenden Einheit als parameter erhält und diesen in k umrechnet und speichert und die hat auch eine get methode die die gespeicherte Temperatur in die jeweilige Einheit umrechnet und liefert

    class CTemperatur
    {
        private double kelvin;

        public CTemperatur()
        {
            kelvin = 0;
        }
        public CTemperatur(double k)
        {
            kelvin = k;
        }
        public double k
        {
            set
            {
                kelvin = value;
            }
            get
            {
                return kelvin;
            }

        }
        public double c
        {
            set
            {
                kelvin = value + 273.15;
               

            }
                
            get
            {
                return kelvin;
            }
        }
        public double f
        {
            set
            {
               kelvin = value*1.8+32;
            }
            get
            {
                return kelvin;
            }
        }
        public double R
        {
            set
            {

            }
            get
            {
                return R * 1.25 + 273.15;
            }
        }

    }  




    class Program
    {
        static void Main(string[] args)
        {
            CTemperatur t = new CTemperatur ();
            t.c = 100;
            CTemperatur z = new CTemperatur();
           
                       
            Console.WriteLine(t.c);
            Console.ReadLine();
            Console.WriteLine(t.f);
            Console.ReadLine();
 
        }
    }

Also das problem bei mir ist dass ich nicht weiß wie ich aus 100 °C alle werte gleichzeitig rechnen muss also ich muss °C auf 100 setzen und alle werte in allen übrigen Einheiten ausgeben und muss danach das gleiche für °F,°R,°K

Also am ende muss es so aussehen https://drive.google.com/open?id=0Bwefz69RSCKzLXFvQktGeEwyUU9xaGRFU3Z5S2dZOS05ZnlV

kann jemand helfen danke❤😊

Computer, Schule, programmieren, C Sharp
3 Antworten
ReSharper macht Visual Studio sehr langsam, was kann ich noch tun?

Wie schon neulich erwähnt, möchte ich vom ReSharper einfach nur, dass er mir praktische Refactoring-Tipps anzeigt. Stattdessen hat er sich jetzt dermaßen in die IDE eingehängt, dass von meinem Visual Studio kaum noch Visual Studio übrig geblieben ist, die Farbgebung ist anders, die Menüs sehen anders aus und die Autoformatierung verhält sich anders.

Zu allem Überfluss ist Visual Studio nun auch noch extrem langsam geworden, trotz aktuellem Intel i7, 16 GB RAM und Top-SSD (Spectre x360) verbraucht devenv.exe bis zu 50% CPU-Last, selbst wenn ich nur tippe. Ohne den ReSharper hatte ich solche Probleme nie.

In der "Performance Guide" (verstümmelter Link gf zuliebe: jetbrains.com/help/resharper/Reference__Options__Environment__Performance_Guide.html) habe ich mich schon umgesehen, aber viel finde ich da nicht, was passt:

Enable Lightweight Solution Load mode: Den Punkt gibt es bei mir nicht.
Do not track active item in Solution Explorer: Empfehlung befolgt
Disable Roslyn full solution analysis: Empfehlung befolgt
Source control plug-in in use: git verwende ich in der Tat, aber kann sich das wirklich auf jeden getippten Buchstaben auswirken?
Show empty environment at startup: nicht mein Problem
Do not download content at startup: nicht mein Problem
Do not save autorecover information: Eigentlich möchte ich darauf nicht verzichten, weil es mir schon zu oft den Hals gerettet hat. Außerdem ist VS ständig ausgelastet, nicht im eingestellten Minutentakt, und ich wüsste nicht, was das mit dem ReSharper zu tun hat?
Do not track changes in text editor: Empfehlung befolgt
Disable XAML designer: Mit XAML arbeite ich derzeit nicht.
Disable automatic formatting by Visual Studio: Nein! Ich möchte ausschließlich die Autoformatierung von VS verwenden. Dafür habe ich unter Editor Behaviour bereits die Auto-format-Haken für Semikolon und Schweifklammer zu rausgenommen, was geht noch?
Disable synchronization of settings: Ich verstehe wieder nicht, was das mit R# zu tun hat, aber ich habe die Option an, was offenbar doch kein Problem ist (?)
Do not show annotations over vertical scroll bar: Empfehlung befolgt
Disable CodeLens for all languages: Empfehlung befolgt
Do not include Roslyn lightbulb actions into ReSharper's: Empfehlung befolgt

Trotzdem laggt das Typing ganz ungemein, ich kann teilweise etliche Tokens blindschreiben, ehe sie mir angezeigt werden. Wenn ich zum Beispiel "keyv" eintippe, dauert es glatt 2 Sekunden, bis der Vorschlag "KeyValuePair" hereintrudelt.

Ich bin verzweifelt und würde mich über jede Hilfe freuen!

programmieren, IDE, Programmierung, C Sharp, Informatik, Visual Studio, vs, resharper, Visual Studio 2017, VisualStudio 2017
1 Antwort
Welche Programmiersprache sollte ich erlernen?

Sehr geehrte Gemeinde,

Also es ist so. Ich interessiere mich für das Erlernen wie man Programme bzw. Anwendungen, Scripts und sonstiges schreibt. Ich plane eine konkrete Ausbildung in einer dieser Sprachen zu machen.

Ich bin sehr interessiert daran und weiß auch das es schwer wird, das ist keine Frage.

Ich hab allerdings jetzt keine richtige Ahnung in welcher Sprache ich mein Wissen aufbauen bzw. einen Lehrgang starten soll.

Ich habe mich schon ein wenig informiert und kenne vom Namen folgende gebräuchlichen Programmiersprachen, mit einer von denen ich mich dann auch weiterbilden möchte:

C, C++, C#, Java, Visual Basic oder Visual Basic for Applications (VBA).

Des Weiteren bin an Python interessiert, weil eines meiner persönlichen Lieblingsprogramme in Python geschrieben ist. Mit Python möchte ich aber keinen Lehrgang belegen.

Es wird sich ausschließlich um eine der oberen Programmiersprachen handeln.

Kann jemand von euch, der sich vielleicht schon mit der ein oder anderen oder sogar mehreren von denen auskennt, mir Tipps geben, welche Programmiersprache, die besten Möglichkeiten (auch in der Zukunft) gibt bzw. was für Einschränkungen bei diesen bestehen?

Ich möchte einmal hochleistungsfähige Programme schreiben.

Auf der Einfachheit liegt überhaupt kein Betrachtungspunkt.

Es kann also schwer sein, wenn es dafür entsprechend flexible Möglichkeiten bietet.

Bei Java habe ich schon gehört, dass man hiermit plattformübergreifende Applikationen schreiben kann.

Vielen Dank für Eure/deine Hilfe.

PC, Computer, Visual Basic, programmierer, programmieren, Java, VBA, Programmierung, Applikationsentwicklung, C-plus-plus, C Sharp, CPP, CSharp, Informatik, Programmiersprache, Python, Appentwicklung
17 Antworten
Visual Studio: Codeformatierung für C# richtig einstellen?

Hallo, auch nach dem Einspielen des neusten Updates für Visual Studio 2017 Enterprise hat sich mein Problem leider nicht gelöst.

Üblicherweise beginne ich eine Methode, einen Block in C# folgendermaßen zu tippen (I sei mal der Cursor):

void Test() { I}

Wenn ich dann Enter drücke, sollte eigentlich das hier passieren:

void Test() {
	I
}

Stattdessen aber bietet sich mir dieses Bild:

void Test() {
I
}

Der Cursor wird also nicht eingerückt. Mag eine Kleinigkeit sein, aber es irritiert doch ungemein und stört meinen Workflow.
Auch wird der Cursor wieder nach links gerückt, wenn ich nach eigenhändigem Einrücken eine Leerzeile eingebe.

Das gleiche Problem der fehlenden Einrückung habe ich, wenn ich etwa einen Codeblock in Lamdba-Syntax oder eine Query (from ... where ... select ...) umbreche - immer landet der Cursor zu weit links.

Kurioserweise habe ich unter den Einstellungen in Text-Editor > C# > Codeformat > Formatierung jedoch den Punkt "Bei Verwendung der EINGABETASTE automatisch formatieren" aktiviert und weiter unten bei Einzug "Blockinhalte einziehen" angekreuzt, in dem dort angezeigten Beispiel sieht es auch richtig aus.

Woran könnte das nur liegen und wie kann ich Visual Studio wieder richtig einstellen? PC bereits neugestartet, erst eben habe ich wie gesagt auf Version 15.8.2 geupdatet, also sollten eigentlich alle Komponenten intakt sein ...
Ich würde mich sehr über eure Hilfe freuen.

Computer, Windows, Microsoft, Technik, programmieren, Programmierung, C Sharp, Technologie, Visual Studio, Windows 10, NET, VisualStudio 2017
1 Antwort
C#: Sollten interne Typen standardmäßig internal (package private) oder public sein, um dem Open-Closed-Prinzip gerecht zu werden?

Irgendwie bin ich dahingekommen, in meinen C#-Projekten standardmäßig immer alle Klassen etc. als public zu deklarieren. Mein Ansatz: Jedes Projekt sollte gem. OCP offen gegen über Erweiterungen sein, was ich mir so vorstelle, dass ein anderer Entwickler kommen und auf Basis meiner Bibliothek seine Abwandlung erstellen könnte, indem er einige Klassen direkt weiterverwendet und andere ableitet oder Schnittstellen neuimplementiert.

Der Vorteil liegt auf der Hand: Auch "interne" Hilfsklassen können von außen bequem adaptiert werden, ohne das Hilfsmittel wie Reflection erforderlich werden.

Nachteilhafterweise heble ich damit aber das komplette System der Sichtbarkeiten in .NET aus. Damit werden in jedem verweisenden Projekt alle Implementierungsdetail im Gegensatz zum Konzept einer schlanken Schnittstelle sichtbar.

Wie sähe die richtige Lösung aus?

Edit: Hier noch mal ein hoffentlich anschaulicheres Beispiel. https://goo.gl/PWNEba

Ich hatte schon die Idee, neben meinem eigentlichen Projekt ein weiteres Wrapperprojekt (als Port im Sinne der UML) zu erstellen, dass so eine schlanke Schnittstelle bereitstellt. Aber das public-Chaos im eigentlichen Projekt bliebe natürlich.

Computer, Schule, Technik, programmieren, Programmierung, C Sharp, CSharp, Informatik, OP, Projekt, Technologie, Objektorientierung, ocp, Package, Objektorientierte Programmierung, NET, ...o.O
2 Antworten
Wie kann ich bei MIDI Instrumente bei C# auswählen?

Hallo.

Also erstmal habe ich von diese Seite https://code.google.com/archive/p/midi-dot-net/ die midi-dot-net Heruntergeladet, und in Visual Studio habe ich denn Verweis Midi.dll (Die in der midi-dot-net Zip drauf war) hinzufügt. Und habe so sieht mein Code erst mal aus:

public void PlayNote(int key, double duration)
        {
            Pitch Note = ((Pitch[])Enum.GetValues(typeof(Pitch)))[key + 20];
            outputDevice.SendNoteOn(Channel.Channel16, Note, 100);
            Thread.Sleep((int)150.0);
        }

        OutputDevice outputDevice;

        public void PlayMusik()         {             outputDevice = OutputDevice.InstalledDevices[0];             outputDevice.Open();

            PlayNote(31, 700);             PlayNote(23, 700);             PlayNote(11, 700);             PlayNote(34, 700);             PlayNote(31, 700);             PlayNote(33, 700);             PlayNote(31, 700);             PlayNote(12, 700);             PlayNote(31, 700);             PlayNote(31, 700);

            outputDevice.Close();
        }

So jetzt zur mein Problem, ich weiß nicht wie man Instrument wechseln kann. Da sind zwar Instrumente in Midi vorinstalliert. In diese seite sind zwar anleitung drauf, aber nicht mehr zugreifbar und man wird mit "404. That’s an error." begrüßt. Kann mir bitte hier jemand helfen?

PC, Computer, Musik, Microsoft, Klavier, programmieren, C Sharp, midi, Synthesizer
1 Antwort
Wie kann man den Parallelen Zugriff auf eine Datenbank einrichten?

Hallo,

ich habe gerade eine kleine C# Konsolen-Anwendung geschrieben die jedesmal wenn man die Leertaste drückt einen Integer in einer Sql Datenbank(Multi_User) erhöht und in der Konsole ausgibt:

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DBTest_2._0
{
    class Program
    {
        static void Main(string[] args)
        {
            SqlConnection sqlConnection1 = new SqlConnection("Data Source = (LocalDB)\\MSSQLLocalDB;" + "AttachDbFilename = |DataDirectory|Database1.mdf;" + "Integrated Security = False;");
            SqlCommand cmd = new SqlCommand();
            SqlCommand cmd2 = new SqlCommand();
            SqlDataReader reader;

            cmd.CommandText = "SELECT * FROM Test";
            cmd.CommandType = CommandType.Text;
            cmd.Connection = sqlConnection1;

            cmd2.CommandText = "Update Test set Id = Id + 1";
            cmd2.CommandType = CommandType.Text;
            cmd2.Connection = sqlConnection1;

            
            ConsoleKeyInfo input;
            while(true)
            {
                input = Console.ReadKey();
                if(input.Key == ConsoleKey.Spacebar)
                {
                    sqlConnection1.Open();
                    cmd2.ExecuteReader().Close();
                    reader = cmd.ExecuteReader();
                    while (reader.Read())
                    {
                        Console.WriteLine(reader[0]);
                    }
                    reader.Close();
                    sqlConnection1.Close();
                }
            }
        }
    }
}


Ich habe die Exe mit der DB auf einen USB-Stick am Router angeschlossen um das Programm von 2 Rechnern gleichzeitig zu starten.

Problem:

Das Programm lässt sich zwar vom zweiten Rechner starten aber bei der Zeile:

sqlConnection1.Open();

stürtzt das Programm am zweiten Rechner ab weil es keinen Zugriff auf die Datenbank bekommt. Weiß jemand woran das liegt und wie man es behebt?

sql, programmieren, C Sharp, Datenbank, datenbanksysteme, Visual Studio, Datenbankabfrage, Parallel, Multi-User
3 Antworten
Visual Studio 2017 Xamarin MySQL-Problem?

Hallo zusammen,

nach stundenlangem Googeln und probieren bin ich einfach nur noch ratlos und hoffe, hier Hilfe zu finden.

Ich wollte mit Visual Studio 2017 und Xamarin eine App für das Abrufen von Daten aus einer MySQL-Datenbank erstellen.
Soweit so gut. Ich habe eine kleine App erstellt und erst einmal nur grundlegend getestet, ob überhaupt eine Verbindung hergestellt wird. Und hier ist auch schon das Problem.

Sobald die App in die Funktion

con.Open();

geht, stürzt sie ab. Auch der try-catch-Block wird ignoriert (also keine Fehlermeldung). Sie stürzt einfach nur ab.

Der MySQL-Zugriff erfolgt mit XAMPP auf einem lokalen Rechner, beide Geräte sind im gleichen Netz. Die Tipps im Netz haben leider auch nicht geholfen, wie beispielsweise den Linker deaktivieren. Wenn ich das mache, stürzt die App bereits bei der Deklaration von

MysqlConnect con = new MysqlConnect();

ab (warum auch immer).

Nachdem ich ihn auf West gesetzt habe, geht die App zumindest bis zum Open und sagt dann Lebewohl.

Berechtigungen sind für Folgendes gesetzt:

  • INTERNET, ACCESS_NETWORK_STATE
  • ACCESS_WIFI_STATE
  • ACCESS_CHECKIN_PROPERTIES

Der Code ist einfach gehalten, mittlerweile wie in allen Netztutorials:

private void Ok_Click(object sender, System.EventArgs e)
{
  MySqlConnection con = new MySqlConnection("Server=192.168.0.140;Port=3306;database=app_test;User Id=Fox;Password=12345678;charset=utf8");

  try
  {
    if (con.State == ConnectionState.Closed)
    {
      con.Open();
      textView1.Text = "Verbindung erfolgreich";
      MySqlCommand cmd = new MySqlCommand();
    }
  }
  catch (MySqlException ex)
  {
    textView1.Text = ex.ToString();
  }
  finally
  {
    con.Close();
  }
}
Computer, Programm, programmieren, C Sharp, MySQL, Visual Studio, Developing, xamarin, xamarin.android
1 Antwort
C# User Login: Passwort-Hash vergleichen?

Hallo,

ich programmiere eine Anwendung, in der man Adressen mit SQL-Server verwalten kann. Man kann Benutzer anlegen und sich mit denen beim Start der Anwendung einloggen.

Nun möchte ich das Passwort hashen. Beim Erstellen des Benutzers wird bereits ein Hashwert generiert und in der Passwort-Spalte in der Datenbank angezeigt. Beim Einloggen soll auch das Passwort gehasht werden und dann der Hash vom Einloggen mit dem aus der Datenbank auf Übereinstimmung verglichen werden.

Ich habe mich an folgendem Tutorial orientiert: https://dotnetcodr.com/2017/10/26/how-to-hash-passwords-with-a-salt-in-net-2/

Ich generiere also immer einen zufälligen Hashwert und das auch beim Einloggen. Wenn ich dann also den Hash vom Einloggen mit dem aus der Datenbank pvergleiche, können die nie übereinstimmen, weil eben bei beiden immer ein zufälliger Wert generiert wird.

Hash (beim Erstellen des Benutzers):

public HashWithSaltResult HashWithGenericSalt(string password, int saltLength, HashAlgorithm hashAlgo)
{
    RNG rng = new RNG();
    byte[] saltBytes = rng.GenerateRandomCryptographicBytes(saltLength);
    byte[] passwordAsBytes = Encoding.UTF8.GetBytes(password);
	List<byte> passwordWithSaltBytes = new List<byte>();

    passwordWithSaltBytes.AddRange(saltBytes);
    passwordWithSaltBytes.AddRange(passwordAsBytes);
    byte[] digestBytes = hashAlgo.ComputeHash(passwordWithSaltBytes.ToArray());

    return new HashWithSaltResult(Convert.ToBase64String(saltBytes), Convert.ToBase64String(digestBytes));
}

Hash (beim Einloggen):

public HashWithSaltResult HashWithSalt(string password, string salt, HashAlgorithm hashAlgo)
{
	// Wie hashe ich beim einloggen?
}

Einloggen:

using (var context = new PersonDbContext())
{
	var query = from p in context.Benutzers where textBoxVorname.Text == p.Vorname && textBoxName.Text == p.Name && HashResultSha512.Digest == p.PasswortDigest select p;
    HashPassword();
}

public void HashPassword()
{
    PasswordWithSaltHasher pwHasher = new PasswordWithSaltHasher();
    HashResultSha512 = pwHasher.HashWithSalt();

    db.CheckBenutzerLogin(textBoxVorname.Text, textBoxPasswort.Text, HashResultSha512.Salt, HashResultSha512.Digest);
}

Was muss ich in

public HashWithSaltResult HashWithSalt

schreiben, damit er den Hashwert aus der Datenbank verwendet und nicht wieder einen neuen Wert generiert?

sql, programmieren, Passwort, Login, Programmierung, C Sharp, SQL-Server, Visual Studio
3 Antworten
C# - Unterschiedliches Ergebnis Programm <-> Debugger?

Hallo

Ich bin dabei ein Programm mit C# zu schreiben und bin momentan an einer Unterfunktion etwas am verzweifeln. Es geht darum 18 Felder mit einer gewissen Anzahl vorgegebener Werte zu füllen (welcher Wert in welches Feld kommt ist zufällig). Die übrigen Felder werden durch Zufallswerte ergänzt. Funktioniert soweit auch ganz gut.

Das ganze wird in einer for-Schleife etliche Male durchgeführt (50-1000 mal) und die Werte der 18 Felder werden zusammen in einem String durch Kommas getrennt zusammengefasst und zu einer List hinzugefügt.

Wenn ich mir diese List anschaue, sind immer ca 5-10 Werte in Folge gleich (blockweise). Kann aber garnicht sein, da ich halt die ganze Zeit Zufallszahlen nutze. Das seltsame ist jetzt aber, dass, wenn ich die for-Schleife im Debugger Durchgang für Durchgang einzeln durchlaufen lasse, ich auch immer ein anderes Ergebnis erhalte, so wie gewünscht. Nur wenn ich alles auf einmal durchlaufen lasse, kommen diese Blöcke mit gleichen Werten zustande. Wenn ich in jedem Schleifendurchgang einen kleine Pause von wenigen Millisekungen einprogrammiere, werden die Blöcke kleiner und es sind beispielsweise nur noch 2-4 Zeilen in Folge gleich. Je länger die Pause ist, umso kleiner sind die Blöcke.

Kennt jemand das Problem, dass es im Debugger zu anderen Ergebnisses kommt als im normalen Programmablauf oder hat eine Idee woran das liegen kann?

Gruß, David

Computer, Programm, Programmierung, C Sharp, Zufall, debugger
4 Antworten
Wie kann ich die Variable public machen?

Momentan versuche ich mit der Programmiersprache c# einen Taschenrechner mit GUI zu programmieren (mit Visual Studio .net Framework). Es funktioniert auch fast alles, jedoch kann ich auf die Variable r (In ihr befindet sich die Information, welche Rechenoperation durchgeführt werden soll). Allerdings kann ich die Variable r nicht in einer anderen Methode abfragen. Logisch, da ich der Variable r immer nur in static void Methoden einen Wert zuweise. Allerdings lässt das Programm nicht zu, dass der Button, auf dem "+" steht, als Methode public int hat. Falls es jemandem hilft, der entscheidende Programmausschnitt:

//Button für addition
//könnte ich das private void zu public int ändern hätte ich kein Problem, aber iwie lässt der Code das nicht zu.
private void buttonp_Click(object sender, EventArgs e)
{
  //r soll die Rechenoperation sein
  int r = 1;
  //könnt ihr ignorieren
  textBox1.Text = a.Text ;
  double zahl1 = double.Parse(a.Text);
  a.Text = "";
}

private void buttons_Click(object sender, EventArgs e)
{
  int r = 2;
  textBox1.Text = a.Text ;
  double zahl1 = double.Parse(a.Text);
  a.Text = "";
}

private void buttonm_Click(object sender, EventArgs e)
{
  int r = 3;
  textBox1.Text = a.Text ;
  double zahl1 = double.Parse(a.Text);
  a.Text = "";
}

private void buttond_Click(object sender, EventArgs e)
{
  int r = 4;
  textBox1.Text = a.Text ;
  double zahl1 = double.Parse(a.Text);
  a.Text = "";
}

private void button15_Click(object sender, EventArgs e)
{
  bool isParsed;
  isParsed = Double.TryParse(textBox1.Text, out double z1);
  isParsed = Double.TryParse(a.Text, out double z2);
  switch (r)
  {
     case 1:
       a.Text = (z1 + z2).ToString();
       break;
     case 2:
       double ergebnis2 = z1 - z2;
       textBox1.Text = textBox1.Text + " - " + z2;
       a.Text = ergebnis2.ToString();
       break;
     case 3:
       double ergebnis3 = z1 * z2;
       textBox1.Text = textBox1.Text + " * " + z2;
       a.Text = ergebnis3.ToString();
       break;
     case 4:
       double ergebnis4 = z1 / z2;
       textBox1.Text = textBox1.Text + " / " + z2;
       a.Text = ergebnis4.ToString();
       break;
  }
}
       
}
}
programmieren, C Sharp, Taschenrechner, Visual Studio 2015
3 Antworten
Wie kann ich mit einem C# Programm die Nullstellen einer quadratischen Gleichung ausrechnen?

Ich hab es so versucht, jedoch treten ständig fehler auf (a soll a sein , b b und c c, d soll die diskriminante sein, e die LF bzw. Mitternachtsformel mit -b+... und f -b-...)

Ich hoffe ihr findet meinen Fehler. double nthRoot = Math.Pow(d) soll übrigens die Wurzel aus d sein, dies abe ich aus einem Bericht aus dem Internet, jedoch wird mir dies auch immer als Fehler angezeigt.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Quadratische_Gleichung_lösen_Jakob
{

  public partial class Form1 : Form
  {
    double a, b, c;
    double n = 2;

    private void button1_Click(object sender, EventArgs e)
    {
      a = Convert.ToDouble(textBox1.Text);
      b = Convert.ToDouble(textBox2.Text);
      c = Convert.ToDouble(textBox3.Text);
      d = (b * b) - (4 * a * c);
      e = (-b + (double nthRoot = Math.Pow(d)/ (2 * a));
      f = (-b - (double nthRoot = Math.Pow(d)/ (2 * a));
    }
     
    double d, e, f;
    public Form1()
    {
      InitializeComponent();
      label1.Text = "a=";
      label2.Text = "b=";
      label3.Text = "c=";
      label4.Text = "x1=";
      label6.Text = "x2=";
      label5.Text = e.ToString();
      label7.Text = f.ToString();
    }
  }
}
Computer, Schule, Mathematik, programmieren, C Sharp, CSharp, Visual Studio, microsoft visual studio
3 Antworten
C# Passwort hashen?

Hallo, ich würde gerne ein Passwort beim erstellen eines Benutzers in meinem Programm hashen, das beim einloggen eingegebene Passwort hashen und dann die Hash Werte vergleichen ob sie identisch sind. Ich habe folgendes aus dem Internet nachgemacht: https://dotnetcodr.com/2017/10/26/how-to-hash-passwords-with-a-salt-in-net-2/.

Dort wird aber jedes mal ein random Hash-Wert erstellt und dann kann dieser random Wert niemals mit dem Wert aus der Datenbank(der vom Benutzer) übereinstimmen.

Wie schreibe ich diese Methode um, damit immer ein bestimmter Hash-Wert erstellt wird und nicht ein random Wert?

public HashWithSaltResult HashWithGenericSalt(string password, int saltLength, HashAlgorithm hashAlgo)
		{
			RNG rng = new RNG();
			byte[] saltBytes = rng.GenerateRandomCryptographicBytes(saltLength);
			byte[] passwordAsBytes = Encoding.UTF8.GetBytes(password);
			List<byte> passwordWithSaltBytes = new List<byte>();
			passwordWithSaltBytes.AddRange(saltBytes);
			passwordWithSaltBytes.AddRange(passwordAsBytes);
			byte[] digestBytes = hashAlgo.ComputeHash(passwordWithSaltBytes.ToArray());
			return new HashWithSaltResult(Convert.ToBase64String(saltBytes), Convert.ToBase64String(digestBytes));
		}

Ich will diese Methode so umändern, damit kein random Wert mehr erzeugt wird und dann so die zwei Hash Werte beim vergleichen "zusammenpassen".

public HashWithSaltResult HashWithSalt(string password, string salt, HashAlgorithm hashAlgo)
		{
    }

programmieren, Passwort, Programmierung, C Sharp, Hash
1 Antwort

Meistgelesene Fragen zum Thema C Sharp

Durch Programmieren Geld verdienen?

9 Antworten

Visual Studio C# Bilder einfügen

5 Antworten

Potenzbutton mit C#? Potenzen rechnen mit C#?

3 Antworten

Wie kann ich unter Visual Studio 2017 RC ein Klassendiagramm erzeugen?

4 Antworten

Was ist der unterschied zw. string, double und int.?

2 Antworten

C# Auf eine Variable in einer Klasse von mehreren Klassen zugreifen

4 Antworten

Roboter selber bauen und programmieren!

5 Antworten

Visual Studio 2017 RC Community ist abgelaufen: Hilfe, wie setze ich mein wichtiges Projekt jetzt fort?

4 Antworten

C# while (bedingung 1 ll bedingung 2 ll bedingung 3 usw) möglich?

6 Antworten

C Sharp - Neue und gute Antworten