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/)
-   -   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 21:16


Problem mit Größer als und Kleiner als
 
Hi,
versuche grade ein bereits existierendes Programm nachzubauen um was Dazuzulernen

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(Resistor)<1000000 then begin
pnl_calculated_resistor.caption := (floattostr((strtofloat(resistor)/
1000000))+' MOhm') )<--  hier ein problem  MOhm wird nich berechnet ausgabe  z.b 16000 kohm soll aber 16 mOhm sein

end;
if StrToInt(Resistor)>1000 and StrToInt(Resistor)<1000000 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;

EDatabaseError 25. Jul 2006 21:19

Re: Problem mit Größer als und Kleiner als
 
Was anderes... was machst du wenn der Widerstand genau 1 kOhm ist.

Denn Ohm bei kleiner 1000
kOhm bei größer 1000
;-)


Schau dir mal das an:
Delphi-Quellcode:
procedure TForm2.Button1Click(Sender: TObject);
var
  u,uf,if_,uv,rv, Result: Real;
  ResultI: Integer;
  eh:String;
begin
 U := StrToFloat(Edit1.Text);
 UF:= StrToFloat(Edit2.Text);
 IF_:=StrToFloat(Edit3.Text);

 if UF > U then
 begin
  MessageDlg('Solche Widerstände gibt es nicht. ;-)', mtError, [mbOK], 0);
 end
 else
 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;

  ResultI := ceil(Result);

  Showmessage('Der Widerstand hat einen Wert von: ' + IntToStr(ResultI) + ' ' + EH);
 end;

 Button1.SetFocus;
 Edit1.Text := 'Eingangsspannung (in Volt)';
 Edit2.Text := 'Ausgangsspannung (in Volt)';
 Edit3.Text := 'Ausgangsstrom (in mA)';
end;

mkinzler 25. Jul 2006 21:20

Re: Problem mit Größer als und Kleiner als
 
Reistor ist ein String. der Vergleich mit > 10000 kann nicht zum richtigen Ergebnis führen. Ich würde mit Integer oder Float rechnen und erst zu Anzeige zurück in String wandeln.

EDatabaseError 25. Jul 2006 21:22

Re: Problem mit Größer als und Kleiner als
 
Ach und nochmal was du solltest erst nach kohm dann nach mohm prüfen denn größer 1000 ist es bei beiden ;-)

Gehstock 25. Jul 2006 21:23

Re: Problem mit Größer als und Kleiner als
 
Zitat:

Zitat von EDatabaseError
Was anderes... was machst du wenn der Widerstand genau 1 kOhm ist.

Denn Ohm bei kleiner 1000
kOhm bei größer 1000
;-)


[/delphi]


Ups hast recht


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(Resistor)<1000000 then begin
pnl_calculated_resistor.caption := (floattostr((strtofloat(resistor)/
1000000))+' MOhm')
end;
if StrToInt(Resistor)>1000 and StrToInt(Resistor)<1000000 then begin
pnl_calculated_resistor.caption := (floattostr((strtofloat(resistor)/
1000))+' KOhm')
end;

if StrToInt(Resistor)<999 then begin
pnl_calculated_resistor.caption := resistor+' Ohm'
end;
end;

EDatabaseError 25. Jul 2006 21:26

Re: Problem mit Größer als und Kleiner als
 
Zitat:

Zitat von Gehstock
Zitat:

Zitat von EDatabaseError
Was anderes... was machst du wenn der Widerstand genau 1 kOhm ist.

Denn Ohm bei kleiner 1000
kOhm bei größer 1000
;-)


[/delphi]


Ups hast recht


Delphi-Quellcode:
procedure TForm2.btn_execute_preresistClick(Sender: TObject);
var
Resistor : string;
begin
if StrToInt(Resistor)<1000then begin
pnl_calculated_resistor.caption := resistor+' Ohm'
end;

if StrToInt(Resistor)>=1000 and StrToInt(Resistor)<1000000 then begin
pnl_calculated_resistor.caption := (floattostr((strtofloat(resistor)/
1000))+' KOhm')
end;

Resistor := floattostr(((strtofloat(edit_UV.text)-
strtofloat(edit_UD.text))/strtofloat(edit_ID.text))*1000);
if StrToInt(Resistor)<1000000 then begin
pnl_calculated_resistor.caption := (floattostr((strtofloat(resistor)/
1000000))+' MOhm')
end;
end;

nein eher so wie ichs oben gemacht hab ^

Gehstock 25. Jul 2006 21:38

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 :=ResultI  <---fehler
end;
end;
end;

EDatabaseError 25. Jul 2006 21:41

Re: Problem mit Größer als und Kleiner als
 
Ich schätz mal EConvertError -> IntToStr(IResult)

Gehstock 25. Jul 2006 21:43

Re: Problem mit Größer als und Kleiner als
 
nee Incompitable types `string` and ´ìnteger`

sorry hab grad nen blackout zuviel Bier

EDatabaseError 25. Jul 2006 21:45

Re: Problem mit Größer als und Kleiner als
 
Trotzdem IntToStr(IResult) ;-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:52 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