jeatrexs
Goto Top

C-Sharp string convert to int32?

Hallo informatiker :P

Also ich war grad dabei in C# (C-Sharp) ein Programm zu schreiben, dass mir den PC in einer bestimmten Zeit herunterfährt. Die Zeit wird durch eine Usereingabe definiert. Nämlich aus der Textbox_sdt (tb_sdt = textbox_shutdowntime).

Ich habe es so gemacht, dass man in dem Programm die Zeit in Stunden angeben soll. Da man aber über CMD nur in sekunden herunterfahren kann muss das programm rechnen.

Aber irgendwie will das bei mir nicht so recht.Man muss das doch irgendwie den String in int32 umwandeln oder? Aber wie funktioniert das?

So sieht der Code von dem Ausführenden Button aus:
        private void btn_sd_Click(object sender, EventArgs e)
        {
            try
            {
                System.Diagnostics.Process.Start("cmd.exe", "-s -t \"" + tb_sdt.Text * 3600 + "\"");  
            }
            catch
            {
                MessageBox.Show("Die Eingabe muss aus Zahlen bestehen. Im Falle von Dezimalzahlen bitte \",\" benutzen.", "Konnte nicht ausgeführt werden", MessageBoxButtons.OK, MessageBoxIcon.Error);  
            }
        }

Fehlermeldung: Error 1 Operator '*' cannot be applied to operands of type 'string' and 'int' C:\Dokumente und Einstellungen\jeatrexs\Eigene Dateien\Visual Studio 2005\Projects\WindowsApplication1\WindowsApplication1\Form1.cs 39 74 WindowsApplication1

Content-ID: 88402

Url: https://administrator.de/contentid/88402

Ausgedruckt am: 22.11.2024 um 19:11 Uhr

GaDgeT
GaDgeT 25.05.2008 um 17:45:48 Uhr
Goto Top
Hallo..

probier mal:

(int)tb_sdt.Text
oder
(Int32)tb_sdt.Text
oder
Convert.ToInt32-Methode (System)

Viele Grüße und viel Spaß beim C# lernen
p.s. gibt dazu auch ein gutes openbook bei galileocomputing
jeaTreXs
jeaTreXs 25.05.2008 um 21:13:04 Uhr
Goto Top
Also das mit der Umrechnung funktioniert jetzt schonmal.. aber immer wenn ich das probieren will.. dann öffnet sich nur die CMD console ohne nichts.. -.-: code:


private void btn_sd_Click(object sender, EventArgs e)
{
System.Diagnostics.Process.Start("cmd.exe", "-s -t \"" + Convert.ToInt32(tb_sdt.Text) * 3600 + "\"");
}
Biber
Biber 26.05.2008 um 00:24:26 Uhr
Goto Top
Hmmm, jeaTreXs,

magst Du nochmal hinschauen, was genau Du aufrufst?

Gedanklich wahrscheinlich die "ShutDown.exe" oder was ähnliches. Real aber nur die CMD.exe...
Und die ist möglicherweise etwas ratlos, was wohl Dein Begehr sein mag.. von wegen "-s -t in 20sec".
Da würde ich an ihrer Stelle auch nur einmal kurz zwinkern und dann die Sache vergessen.

Grüße
Biber
jeaTreXs
jeaTreXs 26.05.2008 um 00:29:41 Uhr
Goto Top
lol ja ich hab den fehler schon vor stunden selber entdeckt.. der code muss so aussehn:

private void btn_sd_Click(object sender, EventArgs e)
{
System.Diagnostics.Process.Start("cmd.exe","/c shutdown -s -t \"" + Convert.ToDouble(tb_sdt.Text) * 3600 + "\"");
}

entscheidend ist das "/c" vor dem shutdown, dass bei allen cmd befehlen beachtet werden muss, da es verhindert dass die console sofort wieder geschlossen wird. Sie wird erst nach dem ausführen geschlossen. Will man dass die konsole nach dem ausführen noch geöffnet bleibt muss man es mit "/k" ersetzen.

MFG jeaTreXs