AGB  ·  Datenschutz  ·  Impressum  







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

Code optimieren

Ein Thema von Gehstock · begonnen am 18. Aug 2006 · letzter Beitrag vom 18. Aug 2006
Antwort Antwort
Seite 1 von 3  1 23      
Gehstock

Registriert seit: 28. Jan 2006
Ort: Görlitz / Sachsen
489 Beiträge
 
Delphi 2007 Professional
 
#1

Code optimieren

  Alt 18. Aug 2006, 19:50
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
Marcel
  Mit Zitat antworten Zitat
fwsp
(Gast)

n/a Beiträge
 
#2

Re: Code optimieren

  Alt 18. Aug 2006, 19:53
guck dir mal
case an.
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Code optimieren

  Alt 18. Aug 2006, 19:57
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.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Benutzerbild von _frank_
_frank_

Registriert seit: 21. Feb 2003
Ort: Plauen / Bamberg
922 Beiträge
 
Delphi 3 Professional
 
#4

Re: Code optimieren

  Alt 18. Aug 2006, 19:59
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
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#5

Re: Code optimieren

  Alt 18. Aug 2006, 20:17
@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;
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Daniel G
(Gast)

n/a Beiträge
 
#6

Re: Code optimieren

  Alt 18. Aug 2006, 20:23
Öhm... Du weißt aber schon, dass sich Umlaute in Funktionsnamen nicht empfehlen, oder?
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#7

Re: Code optimieren

  Alt 18. Aug 2006, 20:25
Zitat von Daniel G:
Öhm... Du weißt aber schon, dass sich Umlaute in Funktionsnamen nicht empfehlen, oder?
In Delphi 2006 alles kein Problem

  Mit Zitat antworten Zitat
Daniel G
(Gast)

n/a Beiträge
 
#8

Re: Code optimieren

  Alt 18. Aug 2006, 20:27
Zitat von Meflin:
In Delphi 2006 alles kein Problem
Erklär das mal nem Asiaten, der sich ob der komischen Zeichen wundert, sollte der Threadersteller das Programm OS machen...
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#9

Re: Code optimieren

  Alt 18. Aug 2006, 20:29
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 .
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#10

Re: Code optimieren

  Alt 18. Aug 2006, 20:33
Zitat von Daniel G:
Erklär das mal nem Asiaten, der sich ob der komischen Zeichen wundert, sollte der Threadersteller das Programm OS machen...
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

  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 16:00 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