Wie wärs damit:
Mein erster Code-Post hier im Forum
Hoffentlich passt alles *schwitz*
Hab mir mal die Freiheit genommen, deine schönen Arrays zu verwenden
Delphi-Quellcode:
var
a: integer;
// ist die verwendete E_Reihe z.B. 6
e_Reihe : integer;
// das Array das zum bestimmen verwendet wird
Ex_Reihe : array[0..200] of double;
// der Widerstand, den du berechnet hast z.B. 3.1 Ohm
widerstand: real;
// der Widerstand, der dem nächstgelegenen in der E-Reihe entspricht; hier 3.3 Ohm
widerstand_nach_e : real;
begin
// Berechneten Widerstandswert festlegen
widerstand := 7.0;
// E-Reihe festlegen
E_reihe := 6;
// deine schönen Arrays in eins zum berechnen übertragen
for a := 0 to E_reihe-1 do
case e_reihe of
3: ex_reihe[a] := r3[a];
6: ex_reihe[a] := r6[a];
12: ex_reihe[a] := r12[a];
{ .. }
24: ex_reihe[a] := r24[a];
192: ex_reihe[a] := r192[a];
end;
// Sollte der Widerstandswert größer sein, als der größte der E-Reihe, so ist die Ausgabe
// 1.0 Ohm mit einem größeren Multiplikator
if widerstand > Ex_Reihe[e_reihe-1] then
widerstand_nach_e := 10
else
// Eigentliche Auswahlroutine
for a := E_Reihe-1 downto 0 do
begin
if widerstand < Ex_reihe[a] then
widerstand_nach_e := ex_reihe[a];
end;
label4.caption := 'Nächter Widerstand nach E'+inttostr(e_reihe)+
': '+floattostrf(widerstand_nach_e,fffixed,10,5);
Habs paarmal getestet und müsste funktionieren. Ich hab allerdings alle E-Reihen verwendet, weil es ja in der E24 Reihe Widerstände gibt, die in der E6 Reihe nicht auftauchen.
greetz