Autor Beitrag
Mr.y
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 36



BeitragVerfasst: Do 09.09.10 12:15 
Hallo :)
irgendwie stehe ich grad auf dem Schlauch...

Ich hab in einer Klasse eine bool-Methode:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
public bool KontoCheck(int intNummer)
        {
            try
            {
                if (Comparer.Equals(Check.Columns[0],""))
                {
                    return true;
                }
                else 
                {
                    return false;
                }
            }
            catch (Exception)
            {
                throw;
            }
        }


Und dann rufe ich diese Methode auf will prüfen ob sie "true" ist

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
 private void cmdWeiter_Click(object sender, EventArgs e)
        {
            try
            {
                Klasse mSecoundTrie = new Klasse();
                if (mSecoundTrier.KontoCheck(txtNummer.Text))
                {

                }


Und da sagt er mir:
ausblenden C#-Quelltext
1:
Eine implizite Konvertierung vom Typ "void" in "bool" ist nicht möglich.					

Wo hat er "void" ??? doch nicht vom dem Ereignis....
Brauche Hilfe :(
Danke
Necaremus
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 203
Erhaltene Danke: 18

Win > XP, Vista, 7; Android 2.1
C# > VS '08,'10; Delphi7
BeitragVerfasst: Do 09.09.10 12:33 
sicher, dass er sagt void in bool und nicht string in int?

denn du hast da denke ich ne textBox "txtNummer", oder?
und du übergibts den .Text wert, der string ist(bzw sein müsste), an deine bool-funktion, die nen int will :o


wegen void/bool : kA, da seh ich eigentlich keine fehler...
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Do 09.09.10 12:34 
Hallo,

dein Quelltext sieht ziemlich unübersichtlich aus - wie wäre es mit folgendem Code:
ausblenden C#-Quelltext
1:
2:
3:
public bool KontoCheck(int intNummer) {
    return Check.Columns[0] == "";
}

Dann fällt auch gleich auf, dass der Parameter intNumber gar nicht benutzt wird. Ist das beabsichtigt?

user profile iconMr.y hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden C#-Quelltext
 
5:
/* ... */
if (mSecoundTrier.KontoCheck(txtNummer.Text))

Wenn txtNummer eine TextBox ist, dann ist txtNummer.Text ein String und kein Integer, wie es von KontoCheck als Parameter gefordert wird. Du solltest ihn mit int.Parse oder int.TryParse umwandeln.

user profile iconMr.y hat folgendes geschrieben Zum zitierten Posting springen:
Und da sagt er mir:
ausblenden C#-Quelltext
1:
Eine implizite Konvertierung vom Typ "void" in "bool" ist nicht möglich.					

Wo genau tritt die Fehlermeldung auf? Tritt sie immer noch auf, wenn du den String wie oben beschrieben in einen Integer umwandelst?

Grüße,
Yogu
Mr.y Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 36



BeitragVerfasst: Do 09.09.10 13:41 
Also ich hab es hinbekommen, trotzdem wundert mich das

Die Lösung ist so:

z.B public bool Funktion()
{.......}

und dann: if(Objekt.Funktion())
{......}

Wenn ich aber jetzt die Wahrheitsmethode eben mit diesem Parameter versehe, funktioniert dann die if-Abfrage nicht mehr
Ich weiss nicht warum....das ist eine boolsche Funktion, die einen "return true" wert hat, warum meckert er dann?

Hier könnt ihr nachschauen, dass diese if-prüfung nur ohne Parameter funktioniert...was für mir seltsam erscheint.
dotnetperls.com/bool-return
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Do 09.09.10 13:59 
Bitte schreibe nicht immer nur davon, dass irgendetwas nicht funktioniert oder der Compiler "meckert". Der Compiler sagt dir, wo etwas schief läuft und was genau falsch ist. Wir wissen das nicht, also schreibe es bitte, am Besten mit den relevanten Codeausschnitten und den genauen Fehlermeldungen. Sonst können wir nur raten.

Was genau soll die Methode KontoCheck denn machen? Name und Parameter deuten an, dass damit ein Konto mit einer bestimmten Kontonummer überprüft werden kann. In der Methode selbst wird aber nur abgefragt, ob eine Spalte einen leeren String enthält, von einer Nummer ist keine Rede mehr.

user profile iconMr.y hat folgendes geschrieben Zum zitierten Posting springen:
Hier könnt ihr nachschauen, dass diese if-prüfung nur ohne Parameter funktioniert...was für mir seltsam erscheint.
dotnetperls.com/bool-return

Der verlinkte Artikel behandelt eine spezielle Art von Methoden, nämlich solche mit Boolean als Rückgabewert und ohne Parameter. Das heißt nicht, dass keine anderen Methoden in if-Konstrukten aufgerufen werden.
Mr.y Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 36



BeitragVerfasst: Fr 10.09.10 08:07 
Danke für eure Anteilnahme vielmals...
Das war ein Flüchtigkeitsfehler von mir und zwar hab ich eine falsche Variable bei der Prüfung eingesetzt.

public bool Funktion(int Nummer)
{.......}

und dann: if(Objekt.Funktion(falsche variable))
{......}
Irgendwie ist mir das gestern nicht aufgefallen :oops:
Hab einfach eine Public-int Variable erzeugt und eingesetzt, und es ging alles.