FormatFloat

Für Fragen von Einsteigern und Programmieranfängern...
carli
Beiträge: 657
Registriert: Sa 9. Jan 2010, 17:32
OS, Lazarus, FPC: Linux 2.6.x, SVN-Lazarus, FPC 2.4.0-2
CPU-Target: 64Bit

Re: FormatFloat

Beitrag von carli »

Maik81ftl hat geschrieben:
MAC hat geschrieben:
Jakane hat geschrieben: PS.: hier mal ein Ausschnitt wie ich vorher gerundet habe...

Code: Alles auswählen

D1:= StrToInt(Copy(F2,length(F2),1));
Case D1 of
  0, 2, 4, 6, 8 : D1:= StrToInt(FloatToStr((StrToFloat(F2)) / 2));
  1, 3, 5, 7, 9 : D1:= StrToInt(FloatToStr((StrToFloat(F2) - 1) / 2));
end;
Mathelehrer hat geschrieben:Mit Kanonen auf Spatzen geschossen...
:mrgreen:
Hmmm da frag i mich doch glatz, mit was ich auf Spatzenschieße, wenn ich mir mal meine Rundung anschaue^^
Brauche zugegeben 2 Tellen nach dem Komma, da ich sonst mit der folgende Abfrage in Schwulität'n kommen könnte.

Code: Alles auswählen

Procedure TForm3.BMI;
var temp: Real;
begin
  with Form3 do
    begin
    Temp:= StrToFloat(FloatToStrf(StrtoFloat(Form3.Edit4.Text) /
                     (StrToFloat(Form3.Edit5.Text) *
                     (StrToFloat(Form3.Edit5.Text))), ffnumber, 0, 2));
    _User.BMI:= Temp;
    Label6.Caption:= 'BMI: ' + FloatToStr(temp);
    if Temp < 16.0 then
      begin
        label6.Color:= $4A708B;
        label6.Hint:= 'Sie haben starkes Untergewicht.';
      end;
    if (Temp >= 16.0) and (Temp <= 17.0) then
      begin
        label6.Color:= $4A708B;
        label6.Hint:= 'Sie haben mäßiges Untergewicht.';
      end;
    if (Temp >= 17.0) and (Temp <= 18.5) then
      begin
        label6.Color:= $4A708B;
        label6.Hint:= 'Sie haben leichtes Untergewicht.';
      end;
    if (Temp >= 18.5) and (Temp <= 25.0) then
      begin
        label6.Color:= $006400;
        label6.Hint:= 'Sie haben Normalgewicht.';
      end;
    if (Temp >= 25.0) and (Temp <= 30.0) then
      begin
        label6.Color:= clYellow;
        label6.Hint:= 'Sie haben Präadipositas.';
      end;
    if (Temp >= 30.0) and (Temp <= 35.0) then
      begin
        label6.Color:= $00A5FF;
        label6.Hint:= 'Sie haben Adipositas Grad I.';
      end;
    if (Temp >= 35.0) and (Temp <= 40.0) then
      begin
        label6.Color:= clRed;
        label6.Hint:= 'Sie haben Adipositas Grad II.';
      end;
    if (Temp >= 40.0)then
      begin
        label6.Color:= $0000B8;
        label6.Hint:= 'Sie haben Adipositas Grad III.';
      end;
    end;
end;
aba mal schaun, ob i das irgenwie in eine .so mit unterbringe...
Ein

Code: Alles auswählen

type TBMIListe = array of record min_weight, max_weight: single; color: TColor; hint: string; end;
const bmis: TBMIListe = ((min_weight:0; max_weight:16; color:$4A708B; Hint:'Sie haben starkes Untergewicht.';), (...), (...))
Hätte's auch getan. Läuft man in einer Schleife durch und kann dann beliebig andere Dinge damit machen (z.B. das ganze in ein druckbares Image schreiben, oder statt label6 mal einfach label7 benutzen)

Maik81ftl
Beiträge: 619
Registriert: Mi 9. Mär 2011, 16:34
OS, Lazarus, FPC: Ubuntu10.04 LTS (L 0.9.31.0 FPC 2.4.4)
CPU-Target: 64Bit
Wohnort: seit 01.06.2011 in Wahlstedt

Re: FormatFloat

Beitrag von Maik81ftl »

carli hat geschrieben:Ein

Code: Alles auswählen

type TBMIListe = array of record min_weight, max_weight: single; color: TColor; hint: string; end;
const bmis: TBMIListe = ((min_weight:0; max_weight:16; color:$4A708B; Hint:'Sie haben starkes Untergewicht.';), (...), (...))
Hätte's auch getan. Läuft man in einer Schleife durch und kann dann beliebig andere Dinge damit machen (z.B. das ganze in ein druckbares Image schreiben, oder statt label6 mal einfach label7 benutzen)
lach dies wäre denne schon die Optimierung für die Nachfolgerversion :D Aba danke.

Dennoch versteh ich nicht, wieso die z.B auf ein Druckbares Image geschrieben werden woll, wenn dies am ende nur eine Info für den User sein soll. und was das Label7 angeht, das ist schon in verwendung für die Farbstufung. :D
Ubuntu 10.04 LTS ist meine Heimat. Lazarus ist meine Sprache :D und der Kreis Segeberg meine LIEBE :D

Antworten