Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

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

Re: repeat-until ersetzten durch if/for/while

  Alt 16. Apr 2004, 19:34
such dir was aus - einmal mit if und das andere mit max:
Delphi-Quellcode:
c := ColorToRGB(l_rahmenprogramm.Font.Color);
while c and $ffffff > 0 do begin
  c := rgb(Max(GetRValue(c) - 1, 0), Max(GetGValue(c) - 1, 0), Max(GetBValue(c) - 1, 0));
  l_rahmenprogramm.Font.Color := c;
  l_rahmenprogramm.Font.Refresh;
  sleep(1);
end;
Delphi-Quellcode:
c := ColorToRGB(l_rahmenprogramm.Font.Color);
while c and $ffffff > 0 do begin
  if GetRValue(c) > 0 then r := GetRValue(c) - 1 else r := 0;
  if GetGValue(c) > 0 then g := GetGValue(c) - 1 else g := 0;
  if GetBValue(c) > 0 then b := GetBValue(c) - 1 else b := 0;
  c := rgb(r, b, g);
  l_rahmenprogramm.Font.Color := c;
  l_rahmenprogramm.Font.Refresh;
  sleep(1);
end;
PS: bei deiner Schleife war auch noch ein großer Fehler - wenn eine Farbe 0 war, so wurde der entsprechenden Variable (r, g, oder b) nichts zugewiesen.


[ADD]
glkbkk's Code stimmt genau mit deinem Beispiel überein, nur eben mit while und nicht mit repeat, aber dor ist auch der Fehler mit den nicht zugewiesenen Variablen drin und bei mir geht es komplett runter auf 0. Wenn z.B. im Extremfall die Schriftfarbe = Rot ist, so wird bei euren Schleifen nicht viel passeren
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat