Alt 30.01.2007, 14:24:56   #1 (permalink)
zerberos
Benutzer

ID: 58651
Lose senden

Reg: 30.05.2006
Beiträge: 76
Standard [C++] fehler in if struktur

Hallo,

ich habe in einer combobox items und jenachdem welches item ausgewählt wird soll in der combobox2 ein bestimmtes item ausgewählt werden

Nur der nimmt immer nur die anweisung des letzten if's...

Zitat:
void __fastcall TFormtest::ComboBox1Change(TObject *Sender)
{

if (ComboBox1->Text == "A1" || "A2" || "A3" || "NA" || "EA" || "NB" || "BA" || "IT" || "KP" || "RP")
{
ComboBox2->ItemIndex = 0;
}

if (ComboBox1->Text == "BP" )
{
ComboBox2->ItemIndex = 1;
}

if (ComboBox1->Text == "KA" || "RA")
{
ComboBox2->ItemIndex = 3;
}

if (ComboBox1->Text == "S1" || "S2" || "S3")
{
ComboBox2->ItemIndex = 4;
}

}
 
zerberos ist offline   Mit Zitat antworten
Alt 30.01.2007, 14:32:27   #2 (permalink)
tedlemegba
abgemeldet

Reg: 20.04.2006
Beiträge: 2.737
Standard

Kenne mich mit C++ nicht aus, aber vielleicht muss das letzte if heißen:

Code:
1:
if (ComboBox1->Text == "S1" || ComboBox1->Text == "S2" || ComboBox1->Text == "S3")
Könnte sein, dass es bei "S2" und "S3" keinen Vergleich mehr benötigt.. und deshalb dieses or-Statement true ist. Aber keine Ahnung; evtl. ist die Syntax so ja auch richtig.
 
tedlemegba ist offline   Mit Zitat antworten
Alt 30.01.2007, 14:51:18   #3 (permalink)
jperl
Erfahrener Benutzer

Reg: 21.04.2006
Beiträge: 172
Standard

Zitat:
Zitat von happymaster Beitrag anzeigen
Kenne mich mit C++ nicht aus, aber vielleicht muss das letzte if heißen:

Code:
1:
if (ComboBox1->Text == "S1" || ComboBox1->Text == "S2" || ComboBox1->Text == "S3")
Könnte sein, dass es bei "S2" und "S3" keinen Vergleich mehr benötigt.. und deshalb dieses or-Statement true ist. Aber keine Ahnung; evtl. ist die Syntax so ja auch richtig.
die syntax kenn ich auch nicht.

muss aber nicht nur beim letzten if so gemacht werden, sondern bei allen.

am besten vorher noch in eine separate variable speichern, damit der code nicht gar so lang wird.

jperl
suche immer fleißig mailerpunkte von
moneyletters (1:190)
spirit cash (1:290) e-mails4you (1:390)
jperl ist offline   Mit Zitat antworten
Alt 30.01.2007, 15:05:16   #4 (permalink)
willy_pu07
Neuer Benutzer

Reg: 12.01.2007
Beiträge: 12
Standard

du könntest doch jedem Item die Eigenschaft "data" setzen dann könntest du eigentlich auf deinen Vergleich verzichten.

z.B.
setzt du bei Item "S1" data auf 0, und bei "RA" auf 3, kannst du beim ändern einfach hergehen und sagen hole data von "S1" und nimmst das für Combo 2.
 
willy_pu07 ist offline   Mit Zitat antworten
Alt 30.01.2007, 16:02:17   #5 (permalink)
KampfFussel
Entwickler (N/A)

ID: 166482
Lose senden

KampfFussel eine Nachricht über ICQ schicken KampfFussel eine Nachricht über MSN schicken KampfFussel eine Nachricht über Skype™ schicken
Reg: 21.04.2006
Beiträge: 160
Standard

Vorschlag:
Wieso benutzt du nicht die Switch funktion??

Zum Fehler:
Ich glaub du musst bei allen "ComboBox1->Text ==" davor setzen.. kenn mich aber jetzt bei c++ nit ganz so gut aus..
Mit freundlichen Grüßen,
KampfFussel
Werbung: [B] Programmierfähigkeiten
KampfFussel ist offline   Mit Zitat antworten
Alt 30.01.2007, 16:05:04   #6 (permalink)
theHacker PREMIUM-User
sieht vor lauter Ads
den Content nicht mehr
Benutzerbild von theHacker

ID: 69505
Lose senden

theHacker eine Nachricht über ICQ schicken theHacker eine Nachricht über Skype™ schicken
Reg: 20.04.2006
Beiträge: 22.684
Standard

Zitat:
Zitat von zerberos Beitrag anzeigen
Nur der nimmt immer nur die anweisung des letzten if's...
Falsch. Er durchläuft alle

Überleg doch mal, was du geschrieben hast:
Code:
1:
if (ComboBox1->Text == "S1" || "S2" || "S3")
ist ja wenn ich das ausschreibe
Code:
1:
if ((ComboBox1->Text == "S1") || ("S2" != null) || ("S3" != null))
Ein Oder-Bedingung ist dann erfüllt, wenn mindestens eine Teilbedingung erfüllt is.
"S2" ist aber sicher immer ungleich null, d.h. die Teilausdruck ist immer true und folglich ist auch der Gesamtausdruck immer true.

Analog die anderen if-Blöcke, d.h. alle werden ausgeführt.

Die richtige Syntax findest du in happymaster's Post bereits.
NEU theHacker.blog NEU
– It's just a glitch in the Matrix –

OpenIsles - das freie Insel-Aufbauspiel | www.theHacker.ws v3 | WhatPulse-Team
theHacker ist offline   Mit Zitat antworten
Alt 30.01.2007, 21:50:03   #7 (permalink)
BFabian
Landei

BFabian eine Nachricht über ICQ schicken
Reg: 25.04.2006
Beiträge: 270
Standard

Zitat:
Zitat von Dark_Dragon Beitrag anzeigen
Vorschlag:
Wieso benutzt du nicht die Switch funktion??
Weil const char* kein ganzzahliger Typ ist (schon, aber Pointer vergleichen wird hier massiv in die Hose gehen).
for (_2=0,_1=0x1E2; _2<9 ;putchar(_1&1<<_2?'0':'.'), _2++, !(_2%3)?putchar('\n'):0);

(idle (cdr life))
BFabian ist offline   Mit Zitat antworten
Antwort

Anzeige


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Wordpress - Permallink Struktur ändern! pokerface Programmierung 3 30.07.2008 21:44:07
Fehler im WMS VIPbanner_de Bug-Report 4 10.07.2008 19:26:22
allgemeiner Aufbau und Struktur einer Seite speedy00 Programmierung 9 27.11.2006 10:40:43
Linkpartner in welcher Struktur? BartTheDevil89 Marketing 6 21.07.2006 19:12:03


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:45:27 Uhr.