Sprichst du von der Overflow-Exception? Da habe ich noch nichts gesetzt, hab ich noch nie verwendet.
Ein bestimmtes Passwort liefert mir 3,95291798759682 * 10^29 Kombinationen. Falls ich weiterhin double als Typ nutze, hab ich ein Problem bei dem TimeSpan-Objekt, da dieses ja nur Int32 akzeptiert. Somit bekomme ich bei Zeile 3 einen Fehler:
Fehlermeldung:
Overflow Exception wurde nicht behandelt.
Der Wert für Int32 war zu groß oder zu klein.Hinweise zur Fehlerbehebung:
Dividieren Sie nicht durch 0.
Für diese Ausnahme die allgemeine Hilfe aufrufen.
Nochmals mein Code, da ich gerade selbst den Überblick verliere:
//Berechnung
double versuche = Math.Pow(zeichenanzahl, laenge);
string strVersuche = Convert.ToString(versuche);
textBox2.Text = strVersuche.Replace("E+", " * 10^");
//Zeitberechnung
//ulong years, months, days, hours, seconds;
double PwRate = Convert.ToDouble(textBox3.Text);
double seconds = versuche / PwRate;
TimeSpan time = new TimeSpan(0, 0, Convert.ToInt32(seconds));
listView1.Clear();
//listView1.Items.Add(Convert.ToString(years) + " Jahre");
//listView1.Items.Add(Convert.ToString(months) + " Monate");
listView1.Items.Add(Convert.ToString(time.Days) + " Tage");
listView1.Items.Add(Convert.ToString(time.Hours) + " Stunden");
listView1.Items.Add(Convert.ToString(time.Minutes) + " Sekunden");
Wie bereits gesagt, möchte ich eigentlich nur die gesamte Benötigte Zeit in Jahren, Monaten, Tagen, Stunden, Minuten und Sekunden angeben. Ich denke nicht dass ich das als Neuling schon in eine eigene Methode packen kann 😕
Okay, danke das funktioniert. Allerdings hab ich jetzt noch ein Problem, da TimeSpan offensichtlich nicht mit Monaten/Jahren umgehen kann. Ich will das ganze allerdings auch nicht per Hand mit Dividieren durch 30 usw. lösen da ja nicht jeder Monat 30 Tage hat.
Gibts da einen anderen Weg?
edit:
Und wieso krieg ich mit folgender Zeile mit denselben Werten einen Overflow, sobald ich ulong benutze? Das ganze als Decimal liefert auch nix gescheites... Nur Int32 is verlässlich
double versuche = Math.Pow(zeichenanzahl, laenge);
string strVersuche = Convert.ToString(versuche);
textBox2.Text = strVersuche.Replace("E+", " * 10^");
Overflow mit:
ulong versuche = (ulong) Math.Pow(zeichenanzahl, laenge);
Oh, da hab ich wohl die Anzahl der möglichen Kombinationen für BruteForce mit der Zeit verwechselt 😄
Momentan sieht mein Code folgendermaßen aus:
//Berechnung
double versuche = Math.Pow(zeichenanzahl, laenge);
string strVersuche = Convert.ToString(versuche);
textBox2.Text = strVersuche.Replace("E+", " * 10^");
//Zeitberechnung
double PwRate;
int seconds;
PwRate = Convert.ToDouble(textBox3.Text);
seconds = Convert.ToInt32(versuche / PwRate);
TimeSpan zeit = new TimeSpan(0, 0, seconds);
label19.Text = Convert.ToString(zeit.Days);
Allerdings bekomme ich bei kleinen Zahlen (also kein Overflow) immer nur 0 raus. Dasselbe übrigens bei Minuten oder anderen Einheiten. Wo liegt der Fehler?
Hallo,
ich habe Probleme mit TimeSpan und sehr großen Integers. Es geht um die Berechnung von benötigter Zeit für ein bestimmtes Passwort und einen BruteForce-Angriff.
Also kann es vorkommen, dass eine Zahl um 10^30 Sekunden in Jahre, Monate, Tage, Stunden, Minuten und Sekunden formatiert werden soll.
Da TimeSpan keine Int64 akzeptiert, weiß ich als Neuling nicht weiter. Eine eigene Methode schreiben fällt schonmal weg.
Habt ihr nen Tipp für mich? 😉
grüße
Sorry Leute, aber ich bin noch blutiger Anfänger in C#. Deswegen sieht wohl mein Code für einen Profi grausam aus. 😄
Könnt ihr mir kurz sagen, wie ich das
? "Ja" : "Nein";
verstehen soll? Ist das ein Rückgabewert oder so ähnlich? Wenn ja, wie werte ich diesen dann im Verlauf aus?
Danke, hatte schon mit der Regex-Funktion angefangen aber mit Char.IsUpper hats dann doch schneller geklappt. 😃
edit:
Okay, doch noch nicht so ganz. Ich hab noch ne Erkennung von Kleinbuchstaben hinzugefügt aber es ist immer nur Richtig, wenn der String nur komplett groß- oder kleingeschrieben ist. Bei "tesT" müsste er ja ausgeben, dass sowohl Groß- als auch Kleinbuchstaben vorhanden sind. Stattdessen sagt er, dass keine Kleinbuchstaben vorhanden sind. Woran liegt das?
string passwort = textBox1.Text;
//Großbuchstaben vorhanden?
for (int i = 0; i < laenge; i++)
{
if (Char.IsUpper(passwort[i]))
{
bool grossbuchstaben = true;
label7.Text = "Ja";
}
else
{
bool grossbuchstaben = false;
label7.Text = "Nein";
}
}
//Kleinbuchstaben vorhanden?
for (int i = 0; i < laenge; i++)
{
if (Char.IsLower(passwort[i]))
{
bool kleinbuchstaben = true;
label8.Text = "Ja";
}
else
{
bool kleinbuchstaben = false;
label8.Text = "Nein";
}
}
Hey!
Kurze Frage und hoffentlich auch kurze Antwort. 😉
Ich hab ne for-Schleife bei der jeder Buchstabe eines Strings durchgegangen wird und geprüft werden soll, ob dieser ein Großbuchstabe ist. Dabei ist unwichtig wie oft und wo Groß- oder Kleinbuchstaben vorkommen
char[] stelle = passwort.ToCharArray();
for (int i = 0; i < laenge; i++)
{
if (Convert.ToString(stelle[i]) == Großbuchstabe)
{
//bool grossbuchstabenvorhanden = true;
}
}
Erbitte Hilfe 😉
DarkOppa
Hallo!
Ich würde gerne eine Parabel (Quadratische Gleichung) zeichnen lassen. Einen Solver habe ich schon geschrieben.
GDI+ wäre hierfür sicherlich geeigneter als DirectDraw oder? Gibt es irgendwo ein Tutorial für die Grundlagen?
DarkOppa
Okay, die Stopwatch klappt. Hab jetzt aber Probleme mit der If-Abfrage wenn die eingestellte Zeit erreicht ist:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Diagnostics;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void run_Click(object sender, EventArgs e)
{
this.run.Text = "Autosave stoppen";
this.MinutesUpDown.Enabled = false;
this.SecondsUpDown.Enabled = false;
Stopwatch stopWatch = new Stopwatch();
stopWatch.Start();
while (true)
{
TimeSpan ts = stopWatch.Elapsed;
string elapsedTime = String.Format("{1:00}",
//string elapsedTime = String.Format("{1:00}.{2:00}",
ts.Hours, ts.Minutes, ts.Seconds,
ts.Milliseconds / 10);
if (elapsedTime == MinutesUpDown.Value | elapsedTime > MinutesUpDown.Value)
{
SendKeys.Send("{F5}");
stopWatch.Stop();
stopWatch.Start();
}
Application.DoEvents();
System.Threading.Thread.Sleep(30);
}
}
}
}
Bekomme hier Fehler, dass ich die Operatoren "==" und ">" nicht auf Operanden vom Typ "string" und "decimal" anwenden kann. Wollte dann einfach umwandeln aber das geht ja auch nicht... Was kann man da machen?
DarkOppa
Hey,
danke für die schnelle Antwort! Wie würdest du denn vorgehen wenn du einen Befehl wissen wolltest? Ich hab im MSDN sowie in der C#-Hilfe von Visual Studio nach "ausführen" gesucht aber habe nichts relevantes gefunden.
Ist eigentlich die Sache mit dem Timer in System.Timers? Mit welchem Befehl starte ich dann die Zeitaufnahme welcher liefert mir die verstrichene Zeit zurück?
DarkOppa
Hallo!
Ich möchte für ein Spiel ein Autosave erstellen. Es soll mit nach einer durch Up-Down-Boxen variablen Zeit F5 drücken. GUI hab ich natürlich schon, aber ich weiß nicht wie ich die Sache mit dem Timer und dem Tastendruck realisieren kann.
Noch eine allgemeine Frage (Anfänger in C#): Wie krieg ich denn Befehle raus ohne gleich alles nachschlagen zu müssen? Ich habe mit AutoIt (Basic-ähnlich) angefangen, dort konnte man sich alles herleiten. Z.B. habe ich versucht, mir den Befehl für Ausführen herzuleiten (System.Execute versucht). Muss man da immer in der Hilfe wühlen?
DarkOppa
Ah du bist ein Gott! Vielen Dank! 😁
verwendetes Datenbanksystem: <Microsoft SQL Server 2008>
Hallo!
Ich hab mir ein Buch über C# gekauft. Bin jetzt bei einer Aufgabe, in der man ein Adressbuch via SQL ansprechen soll. Wenn ich in der Projektmappe die Form1 auswähle und dort das Element "Dienstbasierte Datenbank" hinzufüge, kommt folgende Fehlermeldung:
"Fehler beim Generieren einer Benutzerinstanz von SQL Server aufgrund eines Fehlers beim Starten des Prozesses für die Benutzerinstanz. Die Verbindung wird getrennt."
Jemand eine Ahnung, woran das liegen könnte? Der SQL-Server ist übrigens beim Setup von C# 2008 Express gleich mitinstalliert worden - vllt. hilft euch das ja was... 🙁
DarkOppa