AGB  ·  Datenschutz  ·  Impressum  







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

if-Abfrage vereinfachen

Ein Thema von Luckie · begonnen am 10. Apr 2007 · letzter Beitrag vom 10. Apr 2007
Antwort Antwort
Seite 1 von 3  1 23      
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#1

if-Abfrage vereinfachen

  Alt 10. Apr 2007, 14:36
Ich habe hier eine ziemlich grausame if-Abfrage. Kann man die eventuell vereinfachen?
Delphi-Quellcode:
  if (Show and not FShowGrid) or (Show and FShowGrid) then
  begin
    FImageEnVect.Bitmap.Canvas.Pen.Mode := pmBlack;
  end
  else if (FShowGrid and not Show) or (not FShowGrid and not Show) then
  begin
    FImageEnVect.Bitmap.Canvas.Pen.Mode := pmNotXor;
  end;
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.439 Beiträge
 
Delphi 2007 Professional
 
#2

Re: if-Abfrage vereinfachen

  Alt 10. Apr 2007, 14:39
ist doch :
Delphi-Quellcode:
if Show then
  begin
    FImageEnVect.Bitmap.Canvas.Pen.Mode := pmBlack;
  end
  else
  begin
    FImageEnVect.Bitmap.Canvas.Pen.Mode := pmNotXor;
  end;
... oder hab ich da was falsch interpretiert ?
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
andreash

Registriert seit: 22. Jun 2006
Ort: Dörverden
60 Beiträge
 
Delphi 7 Professional
 
#3

Re: if-Abfrage vereinfachen

  Alt 10. Apr 2007, 14:39
Wie wäre es damit
Delphi-Quellcode:
if Show then
    FImageEnVect.Bitmap.Canvas.Pen.Mode := pmBlack
  else
    FImageEnVect.Bitmap.Canvas.Pen.Mode := pmNotXor;
Edit: Semikolon gelöscht
Andreas
Der Optimist glaubt, wir leben in der besten aller möglichen Welten. Der Pessimist befürchtet, daß das stimmt.
  Mit Zitat antworten Zitat
Benutzerbild von TeronG
TeronG

Registriert seit: 19. Jul 2004
Ort: München
960 Beiträge
 
Delphi 2007 Professional
 
#4

Re: if-Abfrage vereinfachen

  Alt 10. Apr 2007, 14:42
Zitat von Gruber_Hans_12345:

... oder hab ich da was falsch interpretiert ?
würd ich auch so sehen ..
evtl sogar noch n tick kürzer:
Delphi-Quellcode:
if Show
  then FImageEnVect.Bitmap.Canvas.Pen.Mode := pmBlack;
  else FImageEnVect.Bitmap.Canvas.Pen.Mode := pmNotXor;
EDIT: zu langsam :/
EDIT2: Aber irgendwie verwundert mich diese Frage (von Luckie)
龍 Der Unterschied zwischen Theorie und Praxis ist in der Praxis größer als in der Theorie.
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#5

Re: if-Abfrage vereinfachen

  Alt 10. Apr 2007, 14:46
Das spielt doch keine Rolle, ob du zu langsam warst oder nicht. Wichtig ist, dass es klappt. Es ist zwar off-topic, aber wenn ich mir die Ausgangslage angucke und mit dem Ergebnis vergleiche ... ... ich sehe schon einen Artikel vor mir:
Zitat:
Ich programmiere schon länger und habe schon so manche Zeile an Code geschrieben und gelesen. Aber im Laufe seiner Laufbahn als Programmierer wird man immer wieder über ein Problem stolpern, welches einen dazu veranlasst wieder etwas dazu zu lernen, auch wenn es nur etwas Banales ist wie bool'sche Operationen [...]
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

Re: if-Abfrage vereinfachen

  Alt 10. Apr 2007, 14:47
Zitat von Gruber_Hans_12345:
ist doch :
Delphi-Quellcode:
if Show then
  begin
    FImageEnVect.Bitmap.Canvas.Pen.Mode := pmBlack;
  end
  else
  begin
    FImageEnVect.Bitmap.Canvas.Pen.Mode := pmNotXor;
  end;
... oder hab ich da was falsch interpretiert ?
So hatte ich es vorher auch, aber das hat irgendwie nicht das gemacht, was es sollte. Werde ich dann wohl noch mal probieren.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#7

Re: if-Abfrage vereinfachen

  Alt 10. Apr 2007, 14:52
Die Bedingung ist aber recht eindeutig, Micha:
if (Show and not FShowGrid) or (Show and FShowGrid) then FShowGrid kann TRUE oder FALSE sein, Show ist dagegen immer TRUE. Und anders herum:
else if (FShowGrid and not Show) or (not FShowGrid and not Show) Show ist grundsätzlich FALSE, und FShowGrid kann wieder TRUE oder FALSE sein. Wie du ja selbst gemerkt hast, kannst du die Bedingung auf Show kürzen und FShowGrid komplett wegfallen lassen. Es wäre dann natürlich interessant, ob das Fehlverhalten immer noch auftritt, und ob es überhaupt mit der Bedingung zu tun hat.
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.439 Beiträge
 
Delphi 2007 Professional
 
#8

Re: if-Abfrage vereinfachen

  Alt 10. Apr 2007, 14:53
wäre sogar noch kürzer (aber nicht wirklich gut lesbar ... )
FImageEnVect.Bitmap.Canvas.Pen.Mode := TPenMode(integer(not Show) * integer(pmNotXor));
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#9

Re: if-Abfrage vereinfachen

  Alt 10. Apr 2007, 14:57
Ich habe leider kein Delphi zum Prüfen, aber der numerische Wert von "pmBlack" ist dann wohl Null? Ja, ist er, wie eine Google-Suche zeigt.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#10

Re: if-Abfrage vereinfachen

  Alt 10. Apr 2007, 15:02
Ok, hier mal die die vollständige Routine:
Delphi-Quellcode:
procedure TDWFotoBook.PaintGrid(Show: Boolean = True);

  procedure DrawDots;
  var
    i : Integer;
    j : Integer;
  begin
    with FImageEnVect do
    begin
      // draw dots
      for i := 0 to Width div FGridWidth do
      begin
        for j := 0 to Height div FGridWidth do
        begin
          Bitmap.Canvas.Pixels[i * FGridWidth, j * FGridWidth] := clBlack;
        end;
      end;
      Update;
    end;
  end;

begin
  Assert(Assigned(ImageEnVect), IENIL);
  // deselect all layers, otherwise we would draw on the selected layer
  FImageEnVect.LayersCurrent := 0;
  // set pen mode
  if (Show and not FShowGrid) or (Show and FShowGrid) then
  begin
    FImageEnVect.Bitmap.Canvas.Pen.Mode := pmBlack;
  end
  else if (FShowGrid and not Show) or (not FShowGrid and not Show) then
  begin
    FImageEnVect.Bitmap.Canvas.Pen.Mode := pmNotXor;
  end;

  DrawDots;

  Self.FShowGrid := Show;
end;
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 23:17 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