FloBerlin Geschrieben 26. Januar 2010 Geschrieben 26. Januar 2010 Hallo Kollegen, Ich möchte in C++ eine GUI Anwendung Programmieren. Die Funktion dieses Buttons, um den es hier geht, ist es nach einer Folge von Überprüfungen einen bestimmten Ordner zu öffnen. Zur Zeit ist es so, dass egal was ich eingebe für die Variable "druckernummer", sich immer nur der erste Link also zu D:\~\pr-int_001-_030 öffnet. Habe ich da einen wohlmöglich einen Fehler in der Syntax?? if (druckernummer<=30 && maske == "pr-int_" && x==1 && druckernummer<=max) { system ("explorer.exe D:\\print_sync\\pr-int\\pr-int_001-_030"); x=2; }; if (druckernummer<=60 && maske == "pr-int_" && x==1 && druckernummer<=max) { system ("explorer.exe D:\\print_sync\\pr-int\\pr-int_031-_060"); x=2; }; if (druckernummer<=90 && maske == "pr-int_" && x==1 && druckernummer<=max) { system ("explorer.exe D:\\print_sync\\pr-int\\pr-int_061-_090"); x=2; }; Zitieren
TDM Geschrieben 26. Januar 2010 Geschrieben 26. Januar 2010 Ich vermisse ein else beim 2. und 3. if. Dürfte in dem Zusammenhang zwar egal sein, aber probier mal folgendes Konstrukt (dürfte zumindest das Debuggen erleichtern): if(maske == "pr-int_" && x==1 && druckernummer<=max) { if (druckernummer<=30) system ("explorer.exe D:\\print_sync\\pr-int\\pr-int_001-_030"); else if (druckernummer<=60) system ("explorer.exe D:\\print_sync\\pr-int\\pr-int_031-_060"); else if (druckernummer<=90) system ("explorer.exe D:\\print_sync\\pr-int\\pr-int_061-_090"); ++x; } Anm. d. Redaktion: system-Befehle müffeln. Lieber CreateProcess nehmen. btw: Wenn maske ein const char[] (o.Ä.) ist, dann lieber strcmp verwenden. Zitieren
FloBerlin Geschrieben 26. Januar 2010 Autor Geschrieben 26. Januar 2010 Hi, danke für deine Antwort, jedoch ist es egal, ob ich eine else möglichkeit angebe Zitieren
BlackDragon83m Geschrieben 26. Januar 2010 Geschrieben 26. Januar 2010 Ohne das else (ist nicht zwingend nötig) muss deine IF abfragenfolge andersrum sein. Denn wenn die Druckernummer z.B. 10 ist, dann ist sie kleiner als 30 -> 1. If Block Sie ist aber auch kleiner als 60 -> 2. If block Und kleiner als 90 auch ergo: 3. Ifblock und dementsprechend wird der letzte ausgeführt und "überschreibt" die anderen wenn man so will Zitieren
Hexagon Geschrieben 26. Januar 2010 Geschrieben 26. Januar 2010 Moin, Habe ich da einen wohlmöglich einen Fehler in der Syntax?? Wie sieht denn deine Bestimmung/umwandlung/was auch immer von druckernummer aus? @BlackDragon83m: Er setzt aber X auf 2. Zitieren
FloBerlin Geschrieben 26. Januar 2010 Autor Geschrieben 26. Januar 2010 @BlackDragon83m: Er setzt aber X auf 2. genau.. damit umgehe ich, dass sich alles öffnet also jeder drucker ist am Ende mit einer bestimmten Druckernummer gekennzeichnet, welche der User in das Prog eintragen soll. Zitieren
Hexagon Geschrieben 26. Januar 2010 Geschrieben 26. Januar 2010 Mir ging es darum ob Du einen String noch vorher in eine Zahl umwandelst oder nicht. Zitieren
FloBerlin Geschrieben 26. Januar 2010 Autor Geschrieben 26. Januar 2010 achsoo^^ nee habe ich nicht Zitieren
Hexagon Geschrieben 26. Januar 2010 Geschrieben 26. Januar 2010 Also ist "druckernummer" ein String? Dann klappt "druckernummer<=30" niemals nicht, bzw. nicht wie gewollt. Zitieren
FloBerlin Geschrieben 26. Januar 2010 Autor Geschrieben 26. Januar 2010 ach ^^ ... nein natürlich ist er vom Typ Integer Zitieren
Hexagon Geschrieben 27. Januar 2010 Geschrieben 27. Januar 2010 Nächste Frage: Wie wird den druckernummer "befüllt"? Zitieren
FloBerlin Geschrieben 27. Januar 2010 Autor Geschrieben 27. Januar 2010 Also druckernummer ist vom Datentyp Integer und wird durch die eingabe in eine Textbox eingelesen. Zitieren
Klotzkopp Geschrieben 27. Januar 2010 Geschrieben 27. Januar 2010 Schau dir die Stelle, wo der Programmverlauf vom erwarteten Verhalten abweicht, mit dem Debugger genauer an und prüfe die Variablenwerte. Zitieren
FloBerlin Geschrieben 27. Januar 2010 Autor Geschrieben 27. Januar 2010 hmm ... also die Maske und der Wert x werden unterschieden. Nur nicht die Druckernummer. Kann es sein das, wenn ich den Wert druckernummer als Integer definiert habe und durch eine Textbox eine Zahl einlesen lasse, dass es anders Formatiert wird?? :S Zitieren
Hexagon Geschrieben 27. Januar 2010 Geschrieben 27. Januar 2010 Wie sieht denn die Verbindung Textbox <-> druckernummer aus? Zitieren
FloBerlin Geschrieben 27. Januar 2010 Autor Geschrieben 27. Januar 2010 private: System::Void textBox1_TextChanged(System::Object^ sender, System::EventArgs^ e) { cin >> druckernummer; } Zitieren
Hexagon Geschrieben 27. Januar 2010 Geschrieben 27. Januar 2010 Kann es sein daß das a) C# ist und niemals nicht gehen wird? :beagolisc Zitieren
FloBerlin Geschrieben 27. Januar 2010 Autor Geschrieben 27. Januar 2010 Kann es sein daß das a) C# ist und niemals nicht gehen wird? :beagolisc Kann es sein das du keine Ahnung hast? XD Das ist 100 Prozent C++ .. Da beides abgewandelt von C ist kann es sein, dass sich sowas ähnelt Zitieren
Hexagon Geschrieben 27. Januar 2010 Geschrieben 27. Januar 2010 Das ist 100 Prozent C++ .. Da beides abgewandelt von C ist kann es sein, dass sich sowas ähnelt good luck with that... Zitieren
TDM Geschrieben 27. Januar 2010 Geschrieben 27. Januar 2010 Was willst du in einer GUI-Anwendung mit console input streams? :confused: [Editerle] Anmerkung zu Hexagon: Das sieht mehr nach C++.Net aus. Zitieren
Hexagon Geschrieben 27. Januar 2010 Geschrieben 27. Januar 2010 Aha! C++/CLI ? Wikipedia Dann hätte er das gleich sagen können und nicht:Ich möchte in C++ eine GUI Anwendung Programmieren. :mod: Zitieren
Hexagon Geschrieben 27. Januar 2010 Geschrieben 27. Januar 2010 Okay, Lösungsvorschlag 1: System::Object^ sender auf System.Windows.Controls.ContentControl casten, wenns geht.ContentStringFormat verwenden um an den String zukommendiesen per ToInt32 in einen Int umwandeln. Besser? :beagolisc Zitieren
0815FIA Geschrieben 27. Januar 2010 Geschrieben 27. Januar 2010 Nur mal so am Rande.. TextBox_TextChanged ist ein Eventhandler. Wann findet ein TextChanged Event statt? Richtig, wenn man ein Zeichen eingibt. Numerisch, also 0 - 9. Logisch das er nur den ersten Zweig nimmt, oder? Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.