AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi And funktion wird nicht logisch umgesetzt ! was tun?
Thema durchsuchen
Ansicht
Themen-Optionen

And funktion wird nicht logisch umgesetzt ! was tun?

Ein Thema von Lukas1987b · begonnen am 25. Nov 2009 · letzter Beitrag vom 25. Nov 2009
Antwort Antwort
Seite 1 von 2  1 2      
Lukas1987b

Registriert seit: 22. Nov 2009
9 Beiträge
 
#1

And funktion wird nicht logisch umgesetzt ! was tun?

  Alt 25. Nov 2009, 00:15
Hallo, hoffe mir kann einer helfen


Delphi-Quellcode:
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);
also
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]
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#2

Re: And funktion wird nicht logisch umgesetzt ! was tun?

  Alt 25. Nov 2009, 00:19
edit1.text <= '4'... dass das überhaupt geht?!?!

was du eigentlich willst ist strtoint(edit1.text) <= 4. Denk mal drüber nach
  Mit Zitat antworten Zitat
Lukas1987b

Registriert seit: 22. Nov 2009
9 Beiträge
 
#3

Re: And funktion wird nicht logisch umgesetzt ! was tun?

  Alt 25. Nov 2009, 00:28
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
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#4

Re: And funktion wird nicht logisch umgesetzt ! was tun?

  Alt 25. Nov 2009, 00:37
Zitat von Lukas1987b:
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
Mir geht es auch nur ums Abfragen

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.
  Mit Zitat antworten Zitat
dmdjt

Registriert seit: 19. Jul 2009
37 Beiträge
 
Delphi 2007 Enterprise
 
#5

Re: And funktion wird nicht logisch umgesetzt ! was tun?

  Alt 25. Nov 2009, 03:09
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:
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;
Also stimmt vielleicht Dein Code nicht mit Deiner Fragestellung zusammen.
(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
  Mit Zitat antworten Zitat
R2009

Registriert seit: 9. Mär 2009
Ort: Heidelberg
440 Beiträge
 
Delphi 2007 Professional
 
#6

Re: And funktion wird nicht logisch umgesetzt ! was tun?

  Alt 25. Nov 2009, 06:26
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
Rainer Unger
Mein Profil:
Studium Allgemeine Elektrotechnik TH Darmstadt
Entwicklung von Tools für die Rundsteuer und Zählertechnik.
uP's Atmel Prozessoren (ATmega16,32,88...) in C und Assembler.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#7

Re: And funktion wird nicht logisch umgesetzt ! was tun?

  Alt 25. Nov 2009, 10:29
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
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
BlackbirdBerlin

Registriert seit: 15. Okt 2009
Ort: 10318 Berlin
91 Beiträge
 
Delphi 7 Architect
 
#8

Re: And funktion wird nicht logisch umgesetzt ! was tun?

  Alt 25. Nov 2009, 10:42
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
Tim
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.056 Beiträge
 
Delphi 12 Athens
 
#9

Re: And funktion wird nicht logisch umgesetzt ! was tun?

  Alt 25. Nov 2009, 10:51
Zitat von Meflin:
edit1.text <= '4'... dass das überhaupt geht?!?!

was du eigentlich willst ist strtoint(edit1.text) <= 4. Denk mal drüber nach
probier's mal aus
if '4' > '14then ShowMessage('Hey, eine 4 ist größer als ''ne 14 :)'); (hier wird Zeichenweise verglichen und eine "4" ist wirklich größer als eine "1" )

[edit]
komisch ... wo kommen denn plötzlich die ganzen Antworten her?
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#10

Re: And funktion wird nicht logisch umgesetzt ! was tun?

  Alt 25. Nov 2009, 11:00
Zitat von himitsu:
probier's mal aus
Ich hätte ja glatt, aber ich hab kein Delphi mehr drauf Auf so abwegige Ideen, dass der < oder > Operator auf strings definiert is, wär ich in meiner Kindheit garnicht gekommen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

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

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:44 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz