Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Code optimieren (https://www.delphipraxis.net/75392-code-optimieren.html)

Gehstock 18. Aug 2006 19:50


Code optimieren
 
Also ich versuch mir grad das Programieren beizubringen ne Idee wie man das Platzsparender und Bequemer machen kann


Delphi-Quellcode:
 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;
Sorry für den langen text aber das ist ja mein Problem nur die Stellen mit
Zitat:

//Korrigiert
sind schon fertig

fwsp 18. Aug 2006 19:53

Re: Code optimieren
 
guck dir mal
Delphi-Quellcode:
case
an.

3_of_8 18. Aug 2006 19:57

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.

_frank_ 18. Aug 2006 19:59

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:
resistor:integer;

case resistor of
  25000..33001:pnl_normresistor.Caption := '27 KOhm';
  ...
end;
HTH Frank

Khabarakh 18. Aug 2006 20:17

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;

Daniel G 18. Aug 2006 20:23

Re: Code optimieren
 
Öhm... Du weißt aber schon, dass sich Umlaute in Funktionsnamen nicht empfehlen, oder?

Meflin 18. Aug 2006 20:25

Re: Code optimieren
 
Zitat:

Zitat von Daniel G
Öhm... Du weißt aber schon, dass sich Umlaute in Funktionsnamen nicht empfehlen, oder?

In Delphi 2006 alles kein Problem :roll:


Daniel G 18. Aug 2006 20:27

Re: Code optimieren
 
Zitat:

Zitat von Meflin
In Delphi 2006 alles kein Problem :roll:

Erklär das mal nem Asiaten, der sich ob der komischen Zeichen wundert, sollte der Threadersteller das Programm OS machen... :roll:

Khabarakh 18. Aug 2006 20:29

Re: Code optimieren
 
Zitat:

Zitat von Daniel G
Öhm... Du weißt aber schon, dass sich Umlaute in Funktionsnamen nicht empfehlen, oder?

Irrelevant, weil ebenso sinnlose Bezeichner nicht empfehlenswert sind und schnellstens in sinnvollere umbenannt werden sollten, womit sich ersteres Problem in Luft aufgelöst hat ;) .

Meflin 18. Aug 2006 20:33

Re: Code optimieren
 
Zitat:

Zitat von Daniel G
Erklär das mal nem Asiaten, der sich ob der komischen Zeichen wundert, sollte der Threadersteller das Programm OS machen... :roll:

Und weil du scheinbar die Ironie in meinem und das nicht-ernstgemeinte in Khabarakhs Posting nicht bemerkt hast zeigst du mir jetzt noch den Asiaten der den code hier benutzt :roll:



Alle Zeitangaben in WEZ +1. Es ist jetzt 12:28 Uhr.
Seite 1 von 3  1 23      

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