Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Problem mit Größer als und Kleiner als (https://www.delphipraxis.net/73932-problem-mit-groesser-als-und-kleiner-als.html)

Gehstock 25. Jul 2006 20:48

Re: Problem mit Größer als und Kleiner als
 
Delphi-Quellcode:
procedure TForm2.btn_execute_preresistClick(Sender: TObject);
var
  u,uf,if_,uv,rv, Result: Real;
  ResultI: Integer;
  eh:String;
begin
U := StrToFloat(edit_UV.text);
UF:= StrToFloat(edit_UD.text);
IF_:=StrToFloat(edit_ID.text);


begin
  UV := U - UF;
  RV := UV / IF_;

  RV := RV * 1000;
  EH := 'Ohm';
  Result := RV;

  if RV >= 1000 then begin Result := RV / 1000; EH := 'kOhm'; end;
  if RV >= 1000000 then begin Result := RV / 1000000; EH := 'MOhm'; end;
  if RV >= 1000000000 then begin Result := RV / 1000000; EH := 'GOhm'; end;
begin
pnl_calculated_resistor.caption :=IntToStr(ResultI)
end;
end;
end;

so aber mit ohm,kohm,mohm klappt noch nicht

und ergebnis immer 4392024

EDatabaseError 25. Jul 2006 20:52

Re: Problem mit Größer als und Kleiner als
 
:shock: bei mir tuts lad dir mal aus der Freeware Sparte mein Widerstandsberechnungstool runter.
Forensuche -> Widerstandsberechnung
Autor -> EDatabaseError

Gehstock 25. Jul 2006 21:00

Re: Problem mit Größer als und Kleiner als
 
Delphi-Quellcode:
procedure TForm2.btn_execute_preresistClick(Sender: TObject);
var
  u,uf,if_,uv,rv, Result: Real;
  ResultI: Integer;
  eh:String;
begin
U := StrToFloat(edit_UV.text);
UF:= StrToFloat(edit_UD.text);
IF_:=StrToFloat(edit_ID.text);


begin
  UV := U - UF;
  RV := UV / IF_;

  RV := RV * 1000;
  EH := 'Ohm';
  Result := RV;

  if RV >= 1000 then begin Result := RV / 1000; EH := 'kOhm'; end;
  if RV >= 1000000 then begin Result := RV / 1000000; EH := 'MOhm'; end;
  if RV >= 1000000000 then begin Result := RV / 1000000; EH := 'GOhm'; end;
begin
pnl_calculated_resistor.caption :=IntToStr(resulti)+EH
end;
end;
end;
so jetzt ergebnis immer 4392024 ohm

mkinzler 25. Jul 2006 21:04

Re: Problem mit Größer als und Kleiner als
 
ResultI wird auch nie gesetzt.

Klaus01 25. Jul 2006 21:05

Re: Problem mit Größer als und Kleiner als
 
Delphi-Quellcode:
 Result := RV;

  if RV >= 1000 then begin Result := RV / 1000; EH := 'kOhm'; end;
  if RV >= 1000000 then begin Result := RV / 1000000; EH := 'MOhm'; end;
  if RV >= 1000000000 then begin Result := RV / 1000000; EH := 'GOhm'; end;
sollte es hier nicht überall Resulti heißen?

Weil:
Delphi-Quellcode:
pnl_calculated_resistor.caption :=IntToStr(ResultI)
Grüße
Klaus

EDatabaseError 25. Jul 2006 21:07

Re: Problem mit Größer als und Kleiner als
 
jup das i muss weg dann gehts ;-)

Gehstock 26. Jul 2006 23:44

Re: Problem mit Größer als und Kleiner als
 
Delphi-Quellcode:
procedure TForm2.btn_execute_preresistClick(Sender: TObject);
var
Resistor : string;
begin
Resistor := floattostr(((strtofloat(edit_UV.text)-
strtofloat(edit_UD.text))/strtofloat(edit_ID.text))*1000);
if StrToInt(edit_UV.text)>30 then begin
 if MessageDlg('UV darf maximal 30V sein!',
    mterror, [mbOK], 0) = mrok
 then exit;
 end;
 if StrToInt(edit_UD.text)>5 then begin
 if MessageDlg('UD darf maximal 5V sein!',
    mterror, [mbOK], 0) = mrok
 then exit;
end;
if StrToInt(edit_ID.text)>75 then begin
 if MessageDlg('ID darf maximal 75mA sein!',
    mterror, [mbOK], 0) = mrok
 then exit;
end;
if StrToInt(Resistor)>999 then begin
pnl_calculated_resistor.caption := (floattostr((strtofloat(resistor)/
1000))+' KOhm')
end;
if StrToInt(Resistor)<1000 then begin
pnl_calculated_resistor.caption := resistor+' Ohm'

end;
end;
so klappt es nur noch 1 problem wenn ich hier "edit_UD.text" eine ganze zahl eintrag also 3 oder 4 klappts aber wenn ich z.B. 3,6 eintrag dann kommt "3,6 is not an integer value"

sollte damit zu tun haben das 5 ja ne ganze zahl ist "if StrToInt(edit_UD.text)>5 then begin" 5,0 klappt aber auch nicht

und edit_ID.text kann komischerweise nicht mehr als 25 sein --->is not valid integer value----> weil wenn hier "pnl_calculated_resistor.caption " kommastellen autreten dann kommt der fehler 40 klappt wieder

Mackhack 27. Jul 2006 03:09

Re: Problem mit Größer als und Kleiner als
 
Integer is ne Ganzzahl also NIX mit Komma. Wenn du mit Nicht-Integerwerten rechnen willst brauchst du Delphi-Referenz durchsuchenStrToFloat und Delphi-Referenz durchsuchenFloatToStr.

Sidorion 27. Jul 2006 08:32

Re: Problem mit Größer als und Kleiner als
 
Delphi-Quellcode:
Const
  iMaxSuffix: Integer=3
  asSuffix: Array [0..iMaxSuffix] of String=(' Ohm', 'kOhm', 'MOhm', 'GOhm'); //beliebig erweiterbar
var
 iSuffix: Integer;
 dResult: Extended;
Begin
  ..
  iSuffix:=0;
  dResult:=StrToFloat(EditIrgendwas.Text);
  While (dResult / 1000 >0)
  And (iSuffix<=iMaxSuffix)
  Do Begin
    Inc(iSuffix);
    Result:=dResult / 1000;
  End;
  EditIrgendwasAnderes.Text:=FloatToStr(dResult)+asSuffix[iSuffix];
End;
.. ist aber nur so dahingeschrieben :???:

Gehstock 27. Jul 2006 10:08

Re: Problem mit Größer als und Kleiner als
 
Delphi-Quellcode:
procedure TForm2.btn_execute_preresistClick(Sender: TObject);
var
Resistor : string;
begin
Resistor := floattostr(((strtofloat(edit_UV.text)-
strtofloat(edit_UD.text))/strtofloat(edit_ID.text))*1000);
if StrTofloat(edit_UV.text)>30 then begin
 if MessageDlg('UV darf maximal 30V sein!',
    mterror, [mbOK], 0) = mrok
 then exit;
 end;
 if StrTofloat(edit_UD.text)>5 then begin
 if MessageDlg('UD darf maximal 5V sein!',
    mterror, [mbOK], 0) = mrok
 then exit;
end;
if StrTofloat(edit_ID.text)>75 then begin
 if MessageDlg('ID darf maximal 75mA sein!',
    mterror, [mbOK], 0) = mrok
 then exit;
end;
if StrTofloat(Resistor)>999 then begin
pnl_calculated_resistor.caption := (floattoint((strtofloat(resistor)/
1000))+' KOhm')
end;
if StrTofloat(Resistor)<1000 then begin
pnl_calculated_resistor.caption := (floattoint((strtofloat(resistor)/
1))+' Ohm')

end;
end;
ok Problem Gelöst nun zeigt es aber 10 Stellen nach dem Komma an das muss noch weg 2 stellen rechen


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:47 Uhr.
Seite 2 von 3     12 3      

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-2025 by Thomas Breitkreuz