![]() |
If Abfrage mit or und and kombinieren
Hallo, habe folgende if-Anfrage;
Delphi-Quellcode:
Läßt sich das durch eine If-Abfrage beschreiben, so wie:
if (JvComboMaschine2.Text = 'TT') and (JvEditRohwareNr.Text = '') then
begin Messagedlg('Rohwaren-Nr. eintragen!', mtwarning, [mbok], 0); JvEditRohwareNr.SetFocus; end else if (JvComboMaschine2.Text = 'TT / Cutter') and (JvEditRohwareNr.Text = '') then begin Messagedlg('Rohwaren-Nr. eintragen!', mtwarning, [mbok], 0); JvEditRohwareNr.SetFocus; end else if (JvComboMaschine2.Text = 'TT600') and (JvEditRohwareNr.Text = '') then begin Messagedlg('Rohwaren-Nr. eintragen!', mtwarning, [mbok], 0); JvEditRohwareNr.SetFocus; end else if (JvComboMaschine2.Text = 'Laser') and (JvEditRohwareNr.Text = '') then begin Messagedlg('Rohwaren-Nr. eintragen!', mtwarning, [mbok], 0); JvEditRohwareNr.SetFocus; end else if (JvComboMaschine2.Text = 'Primera') and (JvEditRohwareNr.Text = '') then begin Messagedlg('Rohwaren-Nr. eintragen!', mtwarning, [mbok], 0); JvEditRohwareNr.SetFocus; end else begin PanelSpeichern.Visible := True; JvHTButtonspeichernOK.SetFocus; end;
Delphi-Quellcode:
Habe schon verschiedene versuche gemacht, jedoch ohne Erfolg. Könnte ich ich einen Schubser von Euch bekommen?
if ((JvComboMaschine2.Text = 'TT') or (JvComboMaschine2.Text = 'TT / Cutter') or (JvComboMaschine2.Text = 'TT600') or (JvComboMaschine2.Text = 'Laser') or (JvComboMaschine2.Text = 'Memjet') or (JvComboMaschine2.Text = 'Primera')) and (JvEditRohwareNr.Text = '') then
begin Messagedlg('Rohwaren-Nr. eintragen!', mtwarning, [mbok], 0); JvEditRohwareNr.SetFocus; end else begin PanelSpeichern.Visible := True; JvHTButtonspeichernOK.SetFocus; end; Danke, Luckner |
AW: If Abfrage mit or und and kombinieren
Was genau ist das Problem? Sieht auf den ersten Blick korrekt aus.
|
AW: If Abfrage mit or und and kombinieren
Habe ich auch gedacht, aber auch wenn im "JvEditRohwareNr.Text = '123456'" was drin steht, springt das Programm in die if-Abfrage.
|
AW: If Abfrage mit or und and kombinieren
Kannst du die Combobox JvComboMaschine2.Text nicht erst aktivieren, wenn in JvEditRohwareNr was eingetragen wurde? Dann sparst du dir die ganze Abfrage.
|
AW: If Abfrage mit or und and kombinieren
Nein, weil (Die der Name der Combobox schon sagt, bei einigen Maschinen (eingetragen in der Combobox) kein Eintrag in JvEditRohwareNr sein darf.
|
AW: If Abfrage mit or und and kombinieren
Kann es sein daß du bur das brauchst?
Delphi-Quellcode:
if JvComboMaschine2.Items.IndexOf(JvEditRohwareNr.Text) < 0 then
begin Messagedlg('Rohwaren-Nr. eintragen!', mtwarning, [mbok], 0); JvEditRohwareNr.SetFocus; end else begin PanelSpeichern.Visible := True; JvHTButtonspeichernOK.SetFocus; end; |
AW: If Abfrage mit or und and kombinieren
Wenn ich es richtig verstanden habe, ist das nicht zielführend, weil JvEditRohwareNr.Text ja doch kein ComboBox-Eintrag sein soll - oder??
|
AW: If Abfrage mit or und and kombinieren
@Luckner - an der Logik finde ich auch nichts.
|
AW: If Abfrage mit or und and kombinieren
Hallo,
Zitat:
Vielleicht noch
Delphi-Quellcode:
um die Eingabe von nur Leerzeichen auch als leere Eingabe anzusehen
and (trim(JvEditRohwareNr.Text) = '') then
|
AW: If Abfrage mit or und and kombinieren
Wie wäre es damit?
Delphi-Quellcode:
if MatchText(JvComboMaschine2.Text, ['TT', 'TT / Cutter', 'TT600', 'Laser', 'Primera']) and (JvEditRohwareNr.Text = '') then begin Messagedlg('Rohwaren-Nr. eintragen!', mtwarning, [mbok], 0); JvEditRohwareNr.SetFocus; end else begin PanelSpeichern.Visible := True; JvHTButtonspeichernOK.SetFocus; end; |
AW: If Abfrage mit or und and kombinieren
Hallo Bernau,
diese Funktion kannte ich bis heute nicht, aber sie sieht elegant aus für mein Problem. Werde es gleich ausprobieren. Danke! Luckner |
AW: If Abfrage mit or und and kombinieren
Mein Delphi 7 kennt Matchtext nicht.
Wäre dashier eventuell ein Lösungsansatz (nur ungetestet so hingedaddelt)?
Delphi-Quellcode:
procedure TForm1.irgendwas;
var sl : TStringList; begin sl := TStringList.Create; // Dashier eventuell aus einer Datei laden, damit bei Änderungen in der Liste // das Programm nicht geändert werden muss. sl.Add('TT'); sl.Add('TT / Cutter'); sl.Add('TT600'); sl.Add('Laser'); sl.Add('Primera'); if (sl.IndexOf(JvComboMaschine2.Text) > -1) and (Trim(JvEditRohwareNr.Text) = '') then begin Messagedlg('Rohwaren-Nr. eintragen!', mtwarning, [mbok], 0); JvEditRohwareNr.SetFocus; else begin PanelSpeichern.Visible := True; JvHTButtonspeichernOK.SetFocus; end; sl.Free; end; |
AW: If Abfrage mit or und and kombinieren
Habe auch Delphi 7 Ent. und es kennt auch kein MatchText. Schade. Dann lasse ich es mit den vielen elseif's.
Danke für die Hilfe |
AW: If Abfrage mit or und and kombinieren
Hallo nahpets,
ja, mit einer Strinlist, das wäre auch eine Lösung. Besser als die vielen else's. |
AW: If Abfrage mit or und and kombinieren
So eine
Delphi-Quellcode:
Funktion bekommt man scheinbar ausschließlich mit neueren Versionen.
MatchText
Gut, man könnte sich die programmieren, aber dazu müsste man wohl Programmierer sein :roll: Mal im Ernst gefragt: Habt ihr keine eigene Bibliothek wo ihr solche Standard-Routinen/Klassen sammelt? Wenn Nein, warum nicht? Gerade hier würde sich z.B. die Funktion
Delphi-Quellcode:
aufdrängen die man dann in
IndexText( const s: string; const v: array of string ): Integer
Delphi-Quellcode:
verwendet.
MatchText
Sowas braucht man idR alle Naselang Und weil es gerade so viel Spaß macht, schiebt man
Delphi-Quellcode:
und
IndexStr
Delphi-Quellcode:
gleich noch hinterher.
MatchStr
|
AW: If Abfrage mit or und and kombinieren
Hallo Sir Rufo,
dazu müsste man Programmieren sein:) und dann die Zeit dazu haben, neben seinen eigenen Routinen auch noch allgemeine zu etwickeln. Aber ich bin auch ehrlich und glaube nicht, dass ich da Was vernüftiges programmieren könnte. Bin schon froh, wenn Andere das können und hier im Forum mal helfen. Gruß, Luckner |
AW: If Abfrage mit or und and kombinieren
Zugegeben es gibt da immer schwer und leicht, aber hier geht man einfach durch ein Array vergleicht die Werte mit
Delphi-Quellcode:
und gibt den Array-Index oder -1 zurück =>
CompareText
Delphi-Quellcode:
.
IndexText
Delphi-Quellcode:
ist dann einfach
MatchText
Delphi-Quellcode:
Result := IndexText( s, v ) > -1;
|
AW: If Abfrage mit or und and kombinieren
Unter Delphi 7 gibt es u. a. AnsiMatchText, damit könnte es in etwa so funktionieren:
Delphi-Quellcode:
uses StrUtils;
... procedure TForm1.irgendwas; begin if AnsiMatchText(JvComboMaschine2.Text,['TT','TT / Cutter','TT600','Laser','Primera']) and (Trim(JvEditRohwareNr.Text) = '') then begin Messagedlg('Rohwaren-Nr. eintragen!', mtwarning, [mbok], 0); JvEditRohwareNr.SetFocus; else begin PanelSpeichern.Visible := True; JvHTButtonspeichernOK.SetFocus; end; end; |
AW: If Abfrage mit or und and kombinieren
Danke nahpets,
es funktioniert und es läßt sich für die Zukunft gut erweitern. Gruß, Luckner |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:56 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