mboost-dp1

C# har brug for hjælp


Gå til bund
Gravatar #1 - kasperlj3
8. jun. 2012 14:40
mit program lukker ned mår jeg trygger på chunk knappen jeg kan ikke fixe jeg tror det er en if command der skal til jeg har pråvet i en uge nu og søgt på nættet høber der er nogle der vil hjælpe mig:D


og i programmet kan der kun skrives med tal det hopper ud når der ikke bliver skrevet en vadi i textBoxen....:D

link til fillen der kodes i:D

Tak for i gider at kigge på det:)

[url=
]http://]
http://www.mediafire.com/download.php?rfmitqjzqowr... [/url]

source her _____



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

namespace Chunk
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
char ch = e.KeyChar;

if (!char.IsDigit(ch) && ch != 8)
{
e.Handled = true;
}
}

private void textBox1_TextChanged(object sender, EventArgs e)
{

}

private void btnExit_Click(object sender, EventArgs e)
{
this.Close();
}

private void button1_Click(object sender, EventArgs e)
{
int a, b, c, d, f, h;
a = Convert.ToInt32(Chunkx.Text);
b = Convert.ToInt32(Chunkz.Text);
c = a / 16 * 16;
d = b / 16 * 16;
f = c + 15;
h = d + 15;


labelX.Text = "X = " + (labelX.Text = Convert.ToString(f) + (" Z = ") + (labelX.Text = Convert.ToString(d)));

labelz.Text = "X = " + (labelz.Text = Convert.ToString(f) + (" Z = ") + (labelz.Text = Convert.ToString(h)));

label6.Text = "X = " + (label6.Text = Convert.ToString(c) + (" Z = ") + (label6.Text = Convert.ToString(h)));

label4.Text = "X = " + (label4.Text = Convert.ToString(c) + (" Z = ") + (label4.Text = Convert.ToString(d)));



}

private void button2_Click(object sender, EventArgs e)
{
Chunkx.Clear();
Chunkz.Clear();
labelX.Text = "";
labelz.Text = "";
label6.Text = "";
label4.Text = "";
}

private void Chunkz_TextChanged(object sender, EventArgs e)
{

}

private void Chunkz_KeyPress(object sender, KeyPressEventArgs e)
{
char ch = e.KeyChar;

if (!char.IsDigit(ch) && ch != 8)
{
e.Handled = true;
}
}

private void Form1_Load(object sender, EventArgs e)
{

}

private void label3_Click(object sender, EventArgs e)
{

}

private void groupBox1_Enter(object sender, EventArgs e)
{

}
}
}
Gravatar #2 - Windcape
8. jun. 2012 14:57
Google translate?
Gravatar #3 - Mnc
8. jun. 2012 14:58
Please brug [ code ] eller en pastebin-agtig side. Indentations! Gief indentations.

inb4 Qw_freak joke.
Gravatar #4 - BurningShadow
8. jun. 2012 15:09
#1

Fair nok at du ikke er så god til at stave det er jeg heller ikke men Firefox har faktisk en nogenlunde god stavekontrol og det kan virkelig anbefales at du bruger den for det er helt ulæseligt.

.

#2

Nej, så dårlig til dansk, er google translate ikke.
Gravatar #5 - dub
8. jun. 2012 16:12
kasperlj3 (1) skrev:
c = a / 16 * 16;
d = b / 16 * 16;


What?!?
Gravatar #6 - arne_v
8. jun. 2012 16:27
#5

Heltals division.
Gravatar #7 - kasperlj3
8. jun. 2012 17:18
ja der er mange stavefejl men det gik også lidt hurtigt ja der må ikke være decimaler med er der nogle af jeg der ved hvad der skal gøres vis i har nogle spørgsmål vis, der var noget i ikke forstod..
Gravatar #8 - XorpiZ
8. jun. 2012 17:20
Får du ikke en exception?
Gravatar #10 - mfriis
8. jun. 2012 17:30
Sæt et breakpoint i private void button1_Click(object sender, EventArgs e) og step frem/over indtil du får fejlen. Så ser du præcis hvor det går galt.

Jeg vil gætte på det er din string til int konvertering der går galt men det er svært at sige.
Gravatar #11 - kasperlj3
8. jun. 2012 17:34
Det går galt her a = Convert.ToInt32(Chunkx.Text); det kommer i error log. Har prøvede med så meget, kan du give et eksempel på det?.. 
Gravatar #12 - Qw_freak
8. jun. 2012 17:35
Mnc (3) skrev:
inb4 Qw_freak joke.


WTF :)
Gravatar #13 - kasperlj3
8. jun. 2012 17:37
det går galt vis der ikke står noget i mine TextBoxe. Så kommer der fejl så jeg gætter på at der skal laves noget med en if /else..
Gravatar #14 - XorpiZ
8. jun. 2012 17:39
Men hvis der står en værdi, så virker det fint eller?
Gravatar #15 - kasperlj3
8. jun. 2012 17:42
det brudte det også men, så dan funger der ikke i praktis
Gravatar #16 - XorpiZ
8. jun. 2012 17:46
Nu er jeg sgu forvirret.

Men hvis du vil tjekke på om der står noget i de to tekstbokse, kan du vel bare lave noget alá dette:


if(Chunkx.Text == "" || Chunkz.Text == "")
MessageBox.Show("Fejl");
else
a = Convert.ToInt32(Chunkx.Text);
b = Convert.ToInt32(Chunkz.Text);
c = a / 16 * 16;
d = b / 16 * 16;
f = c + 15;
h = d + 15;
labelX.Text = "X = " + (labelX.Text = Convert.ToString(f) + (" Z = ") + (labelX.Text = Convert.ToString(d)));
labelz.Text = "X = " + (labelz.Text = Convert.ToString(f) + (" Z = ") + (labelz.Text = Convert.ToString(h)));
label6.Text = "X = " + (label6.Text = Convert.ToString(c) + (" Z = ") + (label6.Text = Convert.ToString(h)));
label4.Text = "X = " + (label4.Text = Convert.ToString(c) + (" Z = ") + (label4.Text = Convert.ToString(d)));


Noget i den stil om ikke andet.
Gravatar #17 - DarX
8. jun. 2012 17:51
Um.. Smider Convert.ToInt32() ikke en exception hvis strengen ikke er et validt heltal?

MSDN

Så noget ala:


try {
a = Convert.ToInt32(Chunkx.Test);
}
catch (FormatException e) {
// Gør et eller andet.. E.g. informer brugeren om invalid input
}


Og egentligt skulle du vel også catche OverflowException i tilfælde af at tallet er for stort eller lille.
Gravatar #18 - kasperlj3
8. jun. 2012 17:52
Mange tak det er jeg så gladfor jeg skal lave en l ligning der heder -x / 16 * 16 i Int format vis i vil hjælpe mig mere Mange tak jeg har brugt en hel uge på det Tak…:)
Gravatar #20 - Pally
9. jun. 2012 22:31
Gravatar #21 - arne_v
13. jun. 2012 18:47
#19

Den løser jo ikke alle muligheder for format fejl.
Gravatar #22 - arne_v
13. jun. 2012 18:51
#20

Det er en god løsning.

Convert metoderne bør generelt undgåes, da mange af dem ikke er specielt type sikre. Og hvis man ikke ville være type sikker, så skal man bruge et andet sprog end C#.

Og int.TryParse bruger retur værdi i modsætning til int.Parse som smider en exception. Og at en bruger indtaster forkerte data er ikke specielt exceptional.

Et alternativ kunne være at forhindre indtastning af andet en valide heltal i tekst feltet.
Gå til top

Opret dig som bruger i dag

Det er gratis, og du binder dig ikke til noget.

Når du er oprettet som bruger, får du adgang til en lang række af sidens andre muligheder, såsom at udforme siden efter eget ønske og deltage i diskussionerne.

Opret Bruger Login