AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

if abfrage vereinfachen

Ein Thema von ferby · begonnen am 3. Jul 2005 · letzter Beitrag vom 3. Jul 2005
Antwort Antwort
Seite 1 von 2  1 2      
ferby

Registriert seit: 15. Aug 2004
Ort: Wien
841 Beiträge
 
Delphi 2010 Enterprise
 
#1

if abfrage vereinfachen

  Alt 3. Jul 2005, 19:30
Hallo,

gibt es eine Möglichkeit so eine Abfrage


  if (feldaktive[161]<>1) and (feldaktive[162]<>1) and (feldaktive[163]<>1) and (feldaktive[164]<>1) and (feldaktive[165]<>1) and (feldaktive[166]<>1) and (feldaktive[167]<>1) and (feldaktive[168]<>1) and (feldaktive[169]<>1) and (feldaktive[170]<>1) then
zu vereinfachen?


ferby
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#2

Re: if abfrage vereinfachen

  Alt 3. Jul 2005, 19:34
Spontan (auf Grund der Nummerierung) käme mir da eine Schleife in den Sinn, die vllt. einen bool-Wert setzt und sofort abgebrochen wird, wenn der Wert doch 1 ist. Hilft dir das irgendwie?


Edit: Nanu? Wo kam denn der Strich vor der 1 her?
  Mit Zitat antworten Zitat
Benutzerbild von malo
malo

Registriert seit: 19. Sep 2004
2.115 Beiträge
 
#3

Re: if abfrage vereinfachen

  Alt 3. Jul 2005, 19:34
Delphi-Quellcode:
var i: integer; aBool: boolean;
begin
aBool := False;
For i := 161 to 170 do
  if feldaktive[i] <> 1 then
    aBool := true
  else
    begin
      aBool := false;
      break;
    end;
if aBool then
Das wäre ein möglicher Weg.

//edit: Ich hätte mir die Idee vorher patentieren lassen sollen
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#4

Re: if abfrage vereinfachen

  Alt 3. Jul 2005, 19:36
Hast du doch, ich habe sie ja von dir abgeschrieben.
  Mit Zitat antworten Zitat
BenjaminH

Registriert seit: 14. Okt 2004
Ort: Freiburg im Breisgau
713 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: if abfrage vereinfachen

  Alt 3. Jul 2005, 19:36
Zitat von ferby:
  if (feldaktive[161]<>1) and (feldaktive[162]<>1) and (feldaktive[163]<>1) and (feldaktive[164]<>1) and (feldaktive[165]<>1) and (feldaktive[166]<>1) and (feldaktive[167]<>1) and (feldaktive[168]<>1) and (feldaktive[169]<>1) and (feldaktive[170]<>1) then
Sodala, ich hab nen bischen experimentiert und bin der meinung so funktioniert das auch:
if not(1 in [Feldaktive[161], Feldaktive[162],...]) Then
Benjamin
  Mit Zitat antworten Zitat
ferby

Registriert seit: 15. Aug 2004
Ort: Wien
841 Beiträge
 
Delphi 2010 Enterprise
 
#6

Re: if abfrage vereinfachen

  Alt 3. Jul 2005, 19:59
Hallo,

danke, hat das ganze wenigstens ein wenig verkürtzt.


ferby
  Mit Zitat antworten Zitat
HeZa

Registriert seit: 4. Nov 2004
Ort: Dortmund
182 Beiträge
 
Delphi 10 Seattle Professional
 
#7

Re: if abfrage vereinfachen

  Alt 3. Jul 2005, 20:30
Zitat von ferby:
Hallo,
gibt es eine Möglichkeit so eine Abfrage
  if (feldaktive[161]<>1) and (feldaktive[162]<>1) and (feldaktive[163]<>1) and (feldaktive[164]<>1) and (feldaktive[165]<>1) and (feldaktive[166]<>1) and (feldaktive[167]<>1) and (feldaktive[168]<>1) and (feldaktive[169]<>1) and (feldaktive[170]<>1) then zu vereinfachen?
ferby
Ich würde ein Funktion daraus machen
Delphi-Quellcode:
function IstImBereich(Wert: Integer; WerteArray: array of Integer; Start, Ende: Integer;
var
  i: Integer;
begin
  Result := True;
  for i := Start to Ende do
    if Wert = WerteArray[i] then Exit;
  Result := False;
end;
Dann kannst du im deine Abfrage wie Folgt umschreiben:

  if not IstImBereich(1, feldaktive, 161, 170) then ... Das ist flexibel und liest sich gut.

Ciao HeZa
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#8

Re: if abfrage vereinfachen

  Alt 3. Jul 2005, 20:49
könnte man das net so lösen?

if (1 in Arr[170,171,172...]) then
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
BenjaminH

Registriert seit: 14. Okt 2004
Ort: Freiburg im Breisgau
713 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: if abfrage vereinfachen

  Alt 3. Jul 2005, 20:59
Zitat von glkgereon:
könnte man das net so lösen?

if (1 in Arr[170,171,172...]) then
Ja, schau mal weiter oben, hab ich ungefähr so schon vorgeschlagen, bei mir ist nur noch ein not drin...
Benjamin
  Mit Zitat antworten Zitat
Benutzerbild von yankee
yankee

Registriert seit: 10. Mär 2004
1.134 Beiträge
 
Lazarus
 
#10

Re: if abfrage vereinfachen

  Alt 3. Jul 2005, 21:28
@HeZa:
Ich würde das nicht so machen. Denn in deine for-schleife hast variable start- und Endwerte. Da kann die Compileroptimierung nicht so gut wirken. aus for I:=1 to 3 do showmessage(i); würde mit der compileroptmierung soweit ich weiß
Delphi-Quellcode:
showmessage(1);
showmessage(2);
showmessage(3);
werden, aber mit veraibeln start und Endwert geht das glaube ich nicht.

ferby's eigentliche Lösung ist zwar blöd zu lesen, aber auf grund der compileroptmierung ziemlich gut. Am besten wäre es noch die werte, die am wahrscheinlichsten false sind nach vorne zu schreiben.

Ich muss mir unbedingt diese Compileroptimierungsmethoden patentieren lassen.
Letzter Tipp: Drogen. Machen zwar nicht glücklich, geben einem aber wenigstens das Gefühl glücklich zu sein.

Have a lot of fun!
  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 04:33 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