Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Problem mit Typumwandlung


Tabakbrummel - Fr 20.02.09 16:49
Titel: Problem mit Typumwandlung
Hallo

Mein Problem ist mit den Trunc da Kommt Inkompatible Typen:
Was mache ich hier Falsch?


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
procedure TForm1.Button2Click(Sender: TObject);
Const Anzünder: Array[0..1of Real = (0.81.5);
var
  Zünder : String;
  Ohm, Dateiname : Real;
begin
  Dateiname := Anzünder[ComboBox1.ItemIndex];
  Ohm := 0.018 / StrToFloat(Edit2.Text) * StrToFloat(Edit1.Text);
  Panel1.Caption := FloatToStr(Ohm);// + ' Ohm';
  Zünder := FloatToStr((StrToFloat(Edit3.Text) / Dateiname - StrToFloat(Panel1.Caption)) / 2);
  Panel2.Caption := Trunc(Zünder) + ' Zünder möglich';
end;


Horschdware - Fr 20.02.09 16:52

Zitat Delphi Hilfe:
Zitat:
Die Funktion Trunc konvertiert eine Gleitkommazahl in einen Integer-Wert.



Zünder ist bei dir aber vom Typ String.


Tabakbrummel - Fr 20.02.09 17:12

Hallo

Jetzt habe ich es so gemacht, da kommt jetzt z.b. 6,6 ist kein gültige Integerwert


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
procedure TForm1.Button2Click(Sender: TObject);
Const Anzünder: Array[0..1of Real = (0.81.5);
var
  Zünder : String;
  Ohm, Dateiname : Real;
begin
  Dateiname := Anzünder[ComboBox1.ItemIndex];
  Ohm := 0.018 / StrToFloat(Edit2.Text) * StrToFloat(Edit1.Text);
  Panel1.Caption := FloatToStr(Ohm);// + ' Ohm';
  Zünder := FloatToStr((StrToFloat(Edit3.Text) / Dateiname - StrToFloat(Panel1.Caption)) / 2);
  Panel2.Caption := IntToStr(Trunc(StrToInt(Zünder))) + ' Zünder möglich';
end;


Tabakbrummel - Fr 20.02.09 17:19

Hallo

Ich habe es Hinbekommen.

Delphi-Quelltext
1:
Panel2.Caption := IntToStr(Trunc(StrToFloat(Zünder)));                    


jaenicke - Fr 20.02.09 17:26

Wandele doch den Wert vorher gar nicht erst in einen String um, wenn du ihn danach noch in dieser Weise weiter verarbeiten willst...
Nimm statt deinem Quelltext:

Delphi-Quelltext
1:
2:
3:
  Panel1.Caption := FloatToStr(Ohm);// + ' Ohm';
  Zünder := FloatToStr((StrToFloat(Edit3.Text) / Dateiname - StrToFloat(Panel1.Caption)) / 2);
  Panel2.Caption := IntToStr(Trunc(StrToFloat(Zünder)));
doch lieber den:

Delphi-Quelltext
1:
  Panel2.Caption := IntToStr(Trunc((StrToFloat(Edit3.Text) / Dateiname - Ohm) / 2));                    
Dann sparst du dir die ganze Rückrechnerei. Ggf. kannst du das natürlich auch alles in Variablen packen.