![]() |
If - Abfrage variabel gestalten ?
Hallo zusammen,
Ich möchte das Gleichheitszeichen gegen eine Variabel austauschen. Nur wie mache ich das ?
Delphi-Quellcode:
quasi irgendwie so:
If Test = 1 then
begin ... end;
Delphi-Quellcode:
Gruss
Variabel := '=';
If Test Variabel 1 then begin ... end; Holger |
Re: If - Abfrage variabel gestalten ?
Was mir dazu einfällt : Prozeduraler Parameter :
Delphi-Quellcode:
TVergleich : Function(A,B : Integer) : Boolean;
Function Groesser(A,B : Integer) : Boolean; begin Result := A > B; end; Function Kleiner(A,B : Integer) : Boolean; begin Result := A < B; end; .... var VergleichFunc : TVergleich; begin VergleichFunc := Groesser; if VergleichFunc(a,b) then begin |
Re: If - Abfrage variabel gestalten ?
Keine Ahnung ob das funktioniert.
Alternativ wäre sowas möglich:
Delphi-Quellcode:
case AbfrageTyp of
0: if Test = 1 then ... 1: if Test <> 1 then ... 2: if Test > 1 then ... 3: if Test < 1 then ... end; |
Re: If - Abfrage variabel gestalten ?
Hallo Holger,
auf den ersten Blick ist Deine Anforderung nicht sehr intelligent, aber ich vermute Du hast Dir etwas dabei gedacht, darum kein Verweis auf case/</>...... Dunkel kann ich mich erinnern das zu TP-Zeiten schon einmal jemand dieses Ansinnen hatte und das wurde dann mit einer Vergleichsfunktion gelöst. etwa so:
Delphi-Quellcode:
Gruß
if VERGLEICHE(a,b).....
function VERGLEICHE (Wert1,Wert2); begin if regewetter then if wert1=wert2 then result:=true; if Schnee then if wert1<>Wert2 then result:=true; ...... end; K-H |
Re: If - Abfrage variabel gestalten ?
Zitat:
Delphi-Quellcode:
if VERGLEICHE(a,b).....
function VERGLEICHE (Wert1,Wert2); begin if regewetter then result := wert1=wert2; if Schnee then result := wert1<>Wert2; ...... end; |
Re: If - Abfrage variabel gestalten ?
@Divby0
geschenkt! Noch wissen wir ja nicht was er wirklich will. Gruß K-H |
Re: If - Abfrage variabel gestalten ?
Jo stimmt. :cheers:
|
Re: If - Abfrage variabel gestalten ?
Zitat:
Delphi-Quellcode:
stilgerechter ist als
result := wert1=wert2;
Delphi-Quellcode:
Da das allgemeingültig ist, sehe ich das trotz des OT hier gut aufgehoben.
if wert1=wert2 then result:=true;
Im Endeffekt wird wohl alles auf so eine Vergleichsfunktion hinauslaufen. |
Re: If - Abfrage variabel gestalten ?
Zur Erklärung.
Ein und die selbe Procedure wird von zwei Buttons aus gestartet. Wenn Sie von Button1 aus aktiviert wird, soll nach "=" abgefragt werden und wenn aus Button2 gestartet wird soll nach "<>" abgefragt werden. Es handelt sich um das zweite Abfragekennzeichen bei 'RW_VERSCHROTTUNG'. Die Abfrage sieht so aus:
Delphi-Quellcode:
Ich dachte mir das ich vor der Abfrage einfach folgendes mache:
If (DM_Geraete.Query1['RW_NUMMER'] <> Null) AND (DM_Geraete.Query1['RW_VERSCHROTTUNG'] = Null) then
begin end;
Delphi-Quellcode:
Nur geht das nicht.
With Sender as TBitBtn do
begin If Name = 'BitBtn1' then Kennzeichen := '='; If Name = 'BitBtn2' then Kennzeichen := '<>'; end; If (DM_Geraete.Query1['RW_NUMMER'] <> Null) AND (DM_Geraete.Query1['RW_VERSCHROTTUNG'] Kennzeichen Null) then begin end; Gruss Holger |
Re: If - Abfrage variabel gestalten ?
Das ist aber kein Problem. Definiere ein lokale Variable und schreibe für den einen Button eine 1 und für den anderen eine 2 und übergibt dies deiner Prozedur oder du übergibts der Prozedur gleich den Sender und wertest intern aus.
Delphi-Quellcode:
If Sender = BitBtn1 then...
If Sender = BitBtn2 then... Edit: Natürlich ohne ''. |
Re: If - Abfrage variabel gestalten ?
Hallo Holger,
Ich geb zu die Idee hat was, so etwas ähnliches hätte ich manchmal auch gerne, aber bisher hat mich die Vergleichsfunktion immer abgeschreckt. Dein Problem läuft aber doch auf ein simples (a=b) oder not(a = b) hinaus, das sollte doch über den Sender auswählbar sein? Gruß K-H |
Re: If - Abfrage variabel gestalten ?
Das würde ja gehen, nur komplett sieht das so aus:
Delphi-Quellcode:
Ich müsste quasi diese Schleife zweimal abbilden nur damit ich das Abfragekennzeichen ändere.
while DM_Geraete.Query1.Eof <> true do
begin For I := 1 to 3 do begin If (I=1) AND (DM_Geraete.Query1['RW_NUMMER'] <> Null) AND (DM_Geraete.Query1['RW_VERSCHROTTUNG'] = Null) then begin ... end; end; ... und hier kommt auch noch eine Menge ... end; |
Re: If - Abfrage variabel gestalten ?
Zitat:
Hallo HolgerCW, so würde es z.B. gehen:
Delphi-Quellcode:
Gruß
equalrequired := (Sender as TBitBtn).Name = 'BitBtn1';
If (DM_Geraete.Query1['RW_NUMMER'] <> Null) AND ((DM_Geraete.Query1['RW_VERSCHROTTUNG'] = Null) = equalrequired) then begin end; blauweiss |
Re: If - Abfrage variabel gestalten ?
Delphi-Quellcode:
Ist das nicht das was du möchtest?
If ((I=1) AND (DM_Geraete.Query1['RW_NUMMER'] <> Null) AND (DM_Geraete.Query1['RW_VERSCHROTTUNG'] = Null) AND (Sender = BitBtn1)) OR ((I=1) AND (DM_Geraete.Query1['RW_NUMMER'] <> Null) AND (DM_Geraete.Query1['RW_VERSCHROTTUNG'] <> Null) AND (Sender = BitBtn2)) then
|
Re: If - Abfrage variabel gestalten ?
Nur mal so nebenbei :
Delphi-Quellcode:
Sollte man tunlichst lassen :
while DM_Geraete.Query1.Eof <> true do
![]() |
Re: If - Abfrage variabel gestalten ?
Vielleicht so in der Art:
Delphi-Quellcode:
procedure BitBitton1Click
begin Calculate(true); end; procedure BitBitton2Click begin Calculate(false); end; procedure Calculate(a: Boolean) begin If (DM_Geraete.Query1['RW_NUMMER'] <> Null) AND ((DM_Geraete.Query1['RW_VERSCHROTTUNG'] = Null) xor a) then begin end; end; |
Re: If - Abfrage variabel gestalten ?
So ganz nebenbei gefragt, warum stecken beide Ergebnisse in einer Query
DM_Geraete.Query1['RW_VERSCHROTTUNG'] = Null und DM_Geraete.Query1['RW_VERSCHROTTUNG'] <> Null Wenn nicht gerade tausende von Datensätzen durch die Gegend geschoben werden, sind meiner Meinung nach zwei Query-Ergebnisse sinnvoller. @divBy0 Ich glaube, da muß noch etwas an den Klammern gefeilt werden? Gruß K-H |
Re: If - Abfrage variabel gestalten ?
Welcher Typ ist denn "equalrequired" ?
Gruss Holger |
Re: If - Abfrage variabel gestalten ?
Boolean.
|
Re: If - Abfrage variabel gestalten ?
Zitat:
Schöner ist doch:
Delphi-Quellcode:
Es geht hier doch nur um einfache Boolsche Algebra -> Komplementärgesetze
procedure Calculate(a: Boolean)
begin If (DM_Geraete.Query1['RW_NUMMER'] <> Null) AND ((DM_Geraete.Query1['RW_VERSCHROTTUNG'] = Null) AND a) then begin end; end; HTH Tobi |
Re: If - Abfrage variabel gestalten ?
Zitat:
Zitat:
Das mit dem xor passt schon. Wenn man false übergibt, bleibt die Logik unverändert und wenn man true übergibt, wird die Logik umgekehrt ;) ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:13 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 by Thomas Breitkreuz