![]() |
And funktion wird nicht logisch umgesetzt ! was tun?
Hallo, hoffe mir kann einer helfen
Delphi-Quellcode:
also
if (edit1.text = '5') and (edit2.text <='4') and (edit3.text <= '4')
then shellexecute(form1.handle,nil,('C:\ausführen1.msd'),nil,nil,SW_shownormal); if (edit1.text = '6') and (edit2.text <='5') and (edit3.text <= '5') then shellexecute(form1.handle,nil,('C:\ausführen1.msd'),nil,nil,SW_shownormal); if (edit2.text = '5') and (edit1.text <='4') and (edit3.text <= '4') then shellexecute(form1.handle,nil,('C:\ausführen2.msd'),nil,nil,SW_shownormal); if (edit2.text = '6') and (edit1.text <='5') and (edit3.text <= '5') then shellexecute(form1.handle,nil,('C:\ausführen2.msd'),nil,nil,SW_shownormal); hab folgendes problem: wenn bei edit.1 text eine 6 steht und bei edit.2text eine 5 steht sollte eigentlich nur der script von edit1.text ausgeführt werden, weil in der zeile bei edit.2text der edit1 wert nicht unter 5 liegt, also bedingung nicht erfüllt! bei mir werden jedoch trotzdem beide scripts ausgeführt !! ich hab keine ahnung wo da der fehler liegt... [edit=mkinzler]Delphi-Tag eingefügt Mfg, mkinzler[/edit] |
Re: And funktion wird nicht logisch umgesetzt ! was tun?
edit1.text <= '4'... dass das überhaupt geht?!?!
was du eigentlich willst ist strtoint(edit1.text) <= 4. Denk mal drüber nach :P |
Re: And funktion wird nicht logisch umgesetzt ! was tun?
nein, es geht ja nur ums abfragen, die zahlen werden schon auf anderen wegen in die textzeilen eingefügt, und wenn halt bei edit 1 ne 6 steht und bei edit2 ne 5 werden beide scripte ausgeführt anstatt einer
|
Re: And funktion wird nicht logisch umgesetzt ! was tun?
Zitat:
Du stehst jetzt vor der Wahl [ ] Die Implementation des "and"-Operators im Compiler hat tatsächlich einen Bug [ ] Es ist halt doch ne dumme Idee, Ordinalwerte (Integer) als string auf <=> zu vergleichen. Was ist wohl wahrscheinlicher? Denk mal drüber nach. |
Re: And funktion wird nicht logisch umgesetzt ! was tun?
Mh, wenn ich Deinen Code verwende und die gleichen Zeichen in die Edits eingebe wird bei mir immer nur die zweite Bedingung wahr.
Delphi-Quellcode:
Also stimmt vielleicht Dein Code nicht mit Deiner Fragestellung zusammen.
procedure TForm1.Button1Click(Sender: TObject);
begin if (edit1.text = '5') and (edit2.text <='4') and (edit3.text <= '4') then label1.caption:= 'Bedingung1: C:\ausführen1.msd' else label1.Caption := 'Bedingung1: False'; if (edit1.text = '6') and (edit2.text <='5') and (edit3.text <= '5') then label2.caption:= 'Bedingung1: C:\ausführen1.msd' else label2.Caption := 'Bedingung1: False'; if (edit2.text = '5') and (edit1.text <='4') and (edit3.text <= '4') then label3.caption:= 'Bedingung1: C:\ausführen2.msd' else label3.Caption := 'Bedingung1: False'; if (edit2.text = '6') and (edit1.text <='5') and (edit3.text <= '5') then label4.caption:= 'Bedingung1: C:\ausführen2.msd' else label4.Caption := 'Bedingung1: False'; end; (Die Bedingungen habe ich nicht verändert... die Ausgabe schon um einen Überblick zu bekommen) Und des Weiteren hat Meflin auch noch Recht. Es macht keinen Sinn Texte (Strings) mit "<=" o.ä. zu vergleichen. Probiere einfach mal aus ob es funktioniert, wenn Du es so wie von Meflin vorgeschlagen machst. Ich habe absolut keine Ahnung was da eigentlich verglichen wird. Vielleicht (da kenn ich mich wirklich gar nicht aus!!) ist das Ergebnis dann vom Zeichensatz abhängig und Dein Fehler deswegen für andere nicht reproduzierbar. Edit: Zahlen durch Zeichen ersetzt... das macht irgendwie bei dem Problem mehr Sinn |
Re: And funktion wird nicht logisch umgesetzt ! was tun?
Hi,
ich gehe davon aus, dass in deinem Beispiel die Ordinalwerte verglichen werden. z.B. '0' --> 48 '1' --> 49 usw. Eigentlich müsste das funktionieren. Was mir an deinem Code absolut nicht gefällt ist, dass du die Reihenfolge der Edits in deinen Abfragen veränderst. Absolut unübersichtlich. Also bitte: Code sauber strukturieren. Strtoint einfügen und ich bin sicher es wird funktionieren. Grüsse Rainer |
Re: And funktion wird nicht logisch umgesetzt ! was tun?
Anmerkung am Rande:
Es ist durchaus sinnvoll Edit1.text<'5' zu verwenden wenn ich im Hinterkopf behalte, und es auch will, das auch Werte wie '' oder '4234556' auftauchen können. Gruß K-H |
Re: And funktion wird nicht logisch umgesetzt ! was tun?
Hi K-H und Lukas,
dann muß einem aber auch bewusst sein, daß auf diese Art und Weise '5' größer ist als '4234556'. Viel Erfolg... Grüße, Tim |
Re: And funktion wird nicht logisch umgesetzt ! was tun?
Zitat:
Delphi-Quellcode:
(hier wird Zeichenweise verglichen und eine "4" ist wirklich größer als eine "1" )
if '4' > '14' then ShowMessage('Hey, eine 4 ist größer als ''ne 14 :)');
[edit] komisch ... wo kommen denn plötzlich die ganzen Antworten her? :shock: |
Re: And funktion wird nicht logisch umgesetzt ! was tun?
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:45 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz