![]() |
Code optimieren
Also ich versuch mir grad das Programieren beizubringen ne Idee wie man das Platzsparender und Bequemer machen kann
Delphi-Quellcode:
Sorry für den langen text aber das ist ja mein Problem nur die Stellen mit
begin
if StrTofloat(Resistor)>25000 then begin if StrTofloat(Resistor)<33001 then //Korrigiert pnl_normresistor.Caption := (floattostr(27)+' KOhm') end; end; begin if StrTofloat(Resistor)>22000 then begin if StrTofloat(Resistor)<25001 then pnl_normresistor.Caption := (floattostr(22)+' KOhm') end; end; begin if StrTofloat(Resistor)>16500 then begin if StrTofloat(Resistor)<22001 then pnl_normresistor.Caption := (floattostr(18)+' KOhm') end; end; begin if StrTofloat(Resistor)>13500 then begin if StrTofloat(Resistor)<16501 then //Korrigiert pnl_normresistor.Caption := (floattostr(15)+' KOhm') end; end; begin if StrTofloat(Resistor)>12000 then begin if StrTofloat(Resistor)<13501 then pnl_normresistor.Caption := (floattostr(12)+' KOhm') end; end; begin if StrTofloat(Resistor)>10000 then begin if StrTofloat(Resistor)<12001 then pnl_normresistor.Caption := (floattostr(10)+' KOhm') end; end; begin if StrTofloat(Resistor)>8200 then begin if StrTofloat(Resistor)<10001 then pnl_normresistor.Caption := (floattostr(8.2)+' KOhm') end; end; begin if StrTofloat(Resistor)>6800 then begin if StrTofloat(Resistor)<8201 then pnl_normresistor.Caption := (floattostr(6.8)+' KOhm') end; end; begin if StrTofloat(Resistor)>5600 then begin if StrTofloat(Resistor)<6801 then pnl_normresistor.Caption := (floattostr(5.6)+' KOhm') end; end; begin if StrTofloat(Resistor)>4700 then begin if StrTofloat(Resistor)<5601 then pnl_normresistor.Caption := (floattostr(4.7)+' KOhm') end; end; begin if StrTofloat(Resistor)>3900 then begin if StrTofloat(Resistor)<4701 then pnl_normresistor.Caption := (floattostr(3.9)+' KOhm') end; end; begin if StrTofloat(Resistor)>3300 then begin if StrTofloat(Resistor)<3901 then pnl_normresistor.Caption := (floattostr(3.3)+' KOhm') end; end; begin if StrTofloat(Resistor)>2200 then begin if StrTofloat(Resistor)<3301 then pnl_normresistor.Caption := (floattostr(2.2)+' KOhm') end; end; begin if StrTofloat(Resistor)>1625 then begin if StrTofloat(Resistor)<2201 then pnl_normresistor.Caption := (floattostr(1.8)+' KOhm') end; end; begin if StrTofloat(Resistor)>1500 then begin if StrTofloat(Resistor)<1626 then pnl_normresistor.Caption := (floattostr(1.5)+' KOhm') end; end; begin if StrTofloat(Resistor)>1200 then begin if StrTofloat(Resistor)<1501 then pnl_normresistor.Caption := (floattostr(1.2)+' KOhm') end; end; begin if StrTofloat(Resistor)>1000 then begin if StrTofloat(Resistor)<1201 then pnl_normresistor.Caption := (floattostr(1.0)+' KOhm') end; end; begin if StrTofloat(Resistor)>820 then begin if StrTofloat(Resistor)<1001 then pnl_normresistor.Caption := (floattostr(820)+' Ohm') end; end; begin if StrTofloat(Resistor)>680 then begin if StrTofloat(Resistor)<821 then pnl_normresistor.Caption := (floattostr(680)+' Ohm') end; end; begin if StrTofloat(Resistor)>560 then begin if StrTofloat(Resistor)<681 then pnl_normresistor.Caption := (floattostr(560)+' Ohm') end; end; begin if StrTofloat(Resistor)>430.1 then begin if StrTofloat(Resistor)<560 then //Korrigiert pnl_normresistor.Caption := (floattostr(470)+' Ohm') end; end; begin if StrTofloat(Resistor)>360 then begin if StrTofloat(Resistor)<430.2 then //Korrigiert pnl_normresistor.Caption := (floattostr(390)+' Ohm') end; end; begin if StrTofloat(Resistor)>300 then begin if StrTofloat(Resistor)<361 then //Korrigiert pnl_normresistor.Caption := (floattostr(330)+' Ohm') end; end; begin if StrTofloat(Resistor)>270 then begin if StrTofloat(Resistor)<301 then pnl_normresistor.Caption := (floattostr(270)+' Ohm') end; end; begin if StrTofloat(Resistor)>220 then begin if StrTofloat(Resistor)<271 then pnl_normresistor.Caption := (floattostr(220)+' Ohm') end; end; begin if StrTofloat(Resistor)>180 then begin if StrTofloat(Resistor)<221 then pnl_normresistor.Caption := (floattostr(180)+' Ohm') end; end; begin if StrTofloat(Resistor)>150 then begin if StrTofloat(Resistor)<181 then pnl_normresistor.Caption := (floattostr(150)+' Ohm') end; end; begin if StrTofloat(Resistor)>120 then begin if StrTofloat(Resistor)<151 then pnl_normresistor.Caption := (floattostr(120)+' Ohm') end; end; begin if StrTofloat(Resistor)>100 then begin if StrTofloat(Resistor)<121 then pnl_normresistor.Caption := (floattostr(100)+' Ohm') end; end; begin if StrTofloat(Resistor)>82 then begin if StrTofloat(Resistor)<101 then pnl_normresistor.Caption := (floattostr(82)+' Ohm') end; end; begin if StrTofloat(Resistor)>68 then begin if StrTofloat(Resistor)<82.1 then pnl_normresistor.Caption := (floattostr(68)+' Ohm') end; end; begin if StrTofloat(Resistor)>56 then begin if StrTofloat(Resistor)<68.1 then pnl_normresistor.Caption := (floattostr(56)+' Ohm') end; end; begin if StrTofloat(Resistor)>47 then begin if StrTofloat(Resistor)<56.1 then pnl_normresistor.Caption := (floattostr(47)+' Ohm') end; end; begin if StrTofloat(Resistor)>39 then begin if StrTofloat(Resistor)<39.1 then pnl_normresistor.Caption := (floattostr(39)+' Ohm') end; end; begin if StrTofloat(Resistor)>33 then begin if StrTofloat(Resistor)<39.1 then pnl_normresistor.Caption := (floattostr(33)+' Ohm') end; end; begin if StrTofloat(Resistor)>27 then begin if StrTofloat(Resistor)<33.1 then pnl_normresistor.Caption := (floattostr(27)+' Ohm') end; end; begin if StrTofloat(Resistor)>22 then begin if StrTofloat(Resistor)<27.1 then pnl_normresistor.Caption := (floattostr(22)+' Ohm') end; end; begin if StrTofloat(Resistor)>18 then begin if StrTofloat(Resistor)<22.1 then pnl_normresistor.Caption := (floattostr(18)+' Ohm') end; end; begin if StrTofloat(Resistor)>15 then begin if StrTofloat(Resistor)<16.5 then pnl_normresistor.Caption := (floattostr(15)+' Ohm') end; end; begin if StrTofloat(Resistor)>12 then begin if StrTofloat(Resistor)<15.1 then pnl_normresistor.Caption := (floattostr(12)+' Ohm') end; end; begin if StrTofloat(Resistor)>10 then begin if StrTofloat(Resistor)<11.1 then pnl_normresistor.Caption := (floattostr(10)+' Ohm') end; end; begin if StrTofloat(Resistor)>8.2 then begin if StrTofloat(Resistor)<10.1 then pnl_normresistor.Caption := (floattostr(8.2)+' Ohm') end; end; begin if StrTofloat(Resistor)>6.8 then begin if StrTofloat(Resistor)<8.21 then pnl_normresistor.Caption := (floattostr(6.8)+' Ohm') end; end; begin if StrTofloat(Resistor)>5.6 then begin if StrTofloat(Resistor)<6.81 then pnl_normresistor.Caption := (floattostr(5.6)+' Ohm') end; end; begin if StrTofloat(Resistor)>4.7 then begin if StrTofloat(Resistor)<5.61 then pnl_normresistor.Caption := (floattostr(4.7)+' Ohm') end; end; begin if StrTofloat(Resistor)>3.9 then begin if StrTofloat(Resistor)<4.71 then pnl_normresistor.Caption := (floattostr(3.9)+' Ohm') end; end; begin if StrTofloat(Resistor)>3.3 then begin if StrTofloat(Resistor)<3.91 then pnl_normresistor.Caption := (floattostr(3.3)+' Ohm') end; end; begin if StrTofloat(Resistor)>2.7 then begin if StrTofloat(Resistor)<3.31 then pnl_normresistor.Caption := (floattostr(2.7)+' Ohm') end; end; begin if StrTofloat(Resistor)>2.2 then begin if StrTofloat(Resistor)<2.71 then pnl_normresistor.Caption := (floattostr(2.2)+' Ohm') end; end; begin if StrTofloat(Resistor)>1.8 then begin if StrTofloat(Resistor)<2.21 then pnl_normresistor.Caption := (floattostr(1.8)+' Ohm') end; end; begin if StrTofloat(Resistor)>1.5 then begin if StrTofloat(Resistor)<1.81 then pnl_normresistor.Caption := (floattostr(1.5)+' Ohm') end; end; begin if StrTofloat(Resistor)>1.2 then begin if StrTofloat(Resistor)<1.51 then pnl_normresistor.Caption := (floattostr(1.2)+' Ohm') end; end; begin if StrTofloat(Resistor)>0.1 then begin if StrTofloat(Resistor)<1.21 then pnl_normresistor.Caption := (floattostr(1)+' Ohm') end; end; end; Zitat:
|
Re: Code optimieren
guck dir mal
Delphi-Quellcode:
an.
case
|
Re: Code optimieren
1. bei der Prüfung darfst du nicht auf < prüfen, sondern auf <= in dem Fall, denn du hast Kommazahlen.
2. Mithilfe von case und arithmetischen Operationen dürfte sich das extremst vereinfachen dürfen. |
Re: Code optimieren
das leidige thema...warum wandelst du x-mal resitor von string in float, zumal resistor scheinbar ein integer sein könnte.
und konstanten so umzuwandeln ist auch nicht nötig. alles weitere würde eine case anweisung machen...
Delphi-Quellcode:
HTH Frank
resistor:integer;
case resistor of 25000..33001:pnl_normresistor.Caption := '27 KOhm'; ... end; |
Re: Code optimieren
@everybody vor mir: so langsam sollte doch bekannt sein, dass case nur bei ordinalen Typen funktioniert... -.-
Delphi-Quellcode:
function RoundÖhm(aValue : Double) : Double;
const RoundValues : Array[0..2, 0..1] of Double = ((33000, 27000), (25000, 22000), (22000, 18000)); // jeweils Maximum des Bereichs und Wert, auf den // gerundet werden soll // hab mich mal auf drei Angaben beschränkt var i: Integer; begin if (aValue > RoundValues[0, 0]) then raise Exception.Create('Lebensgefährlich!') else begin for i := 1 to Length(RoundValues) - 1 do if (aValue > RoundValues[i, 0]) then begin Result := RoundValues[i - 1, 1]; Exit; end; Result := RoundValues[High(RoundValues), 1]; end; end; function ÖhmToStr(aValue : Double) : string; begin if (aValue > 1000) then Result := Format('%f KOhm', [aValue / 1000]) else Result := Format('%f Ohm', [aValue]) end; |
Re: Code optimieren
Öhm... Du weißt aber schon, dass sich Umlaute in Funktionsnamen nicht empfehlen, oder?
|
Re: Code optimieren
Zitat:
|
Re: Code optimieren
Zitat:
|
Re: Code optimieren
Zitat:
|
Re: Code optimieren
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:28 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