Autor Beitrag
V!P3R
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 151



BeitragVerfasst: Do 11.10.07 22:35 
Hi,

Ich progge noch nicht so lange,

aber ich stehe vor folgendem problem:

ich will eine bestimmte zahl (zB 10) mit einem bruch mal nehmen. Der bruch lautet: Zahl, die ein User in ein Edit feld geschrieben hat (zB 1000) geteilt durch wieder die bestimmte zahl(10) ALSO: 10 * 1000/10 (10 ist eine zahl die ich kenne, und 1000 ist die zahl, die man in ein Editfeld schreibt, also eine beliebige Zahl)

Ich arbeite mit folgendem befehl, um texte in zahlen um zu schreiben

Bsp:
ausblenden Delphi-Quelltext
1:
Edit1.Text:= inttostr(strtoint(Edit1.Text) + 10);					


(wandelt das, was in Edit1 steht in eine zahl, mit der man rechnen kann um und addiert 10.)


wie schaff ich es jetz aber die oben genannte rechnung zu rechnen?



MfG V!P3R

Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt
Born-to-Frag
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1094

Win XP SP2, Win 2000 SP4
Delphi 7, 2k5
BeitragVerfasst: Do 11.10.07 22:42 
Wo ist dein Problem? Du musst eben nur die Rechnung etwas umschreiben?
//Nicht ganz, da du jetzt als ergebnis durch die Division (möglicherweise) eine Gleitkommazahl erhälst. Also brauchst du den Befehl FloatToStr()
Du kannst ja in der Delphihilfe nachsehn was er bewirkt..

ausblenden Delphi-Quelltext
1:
Edit1.Text:= FloatToStr(10 * StrToInt(Edit1.Text) / 1000);					



greetz

_________________
Theorie ist wenn man alles weiß, aber nichts funktioniert. Praxis ist wenn alles funktioniert, aber niemand weiß warum.
Microsoft vereint Theorie und Praxis: Nichts funktioniert und niemand weiß warum.
V!P3R Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 151



BeitragVerfasst: Do 11.10.07 23:07 
Titel: Re
Danke, der Code is jez fast fertig.

Aber dann gibt es noch das komma problem, wenn ich dem nen kommawert gebe, kommt sofort ne fehlermeldung.

Wie kann man diese problem umgehen oder lösen?


MfG V!P3R
Coder
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1383
Erhaltene Danke: 1

WinXP
D2005 PE
BeitragVerfasst: Do 11.10.07 23:24 
StrToFloat

Das sind Grundbegriffe
Schau dir mal den Delphi Crashkurs an
www.christian-stelzm...rtikel/crashkurs.htm
V!P3R Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 151



BeitragVerfasst: Fr 12.10.07 16:12 
Titel: RE
Hi,
Ich hab StrToFloat eingesetz, aber er meldet folgenden fehler

ausblenden Delphi-Quelltext
1:
[Fehler] Unit1.pas(52): Es gibt keine überladene Version von 'StrToFloat', die man mit diesen Argumenten aufrufen kann					



Hier ist der Code:
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TMvR = class(TForm)
    M_AText: TMemo;
    E_AAnzahl: TEdit;
    CB_Verb: TComboBox;
    E_Anzahl: TEdit;
    E_kg: TEdit;
    B_Rechnen: TButton;
    B_exit: TButton;
    B_neu: TButton;
    E_AVerbindung: TEdit;
    E_Axkg: TEdit;
    E_AStoffy: TEdit;
    E_AStoffx: TEdit;
    E_Aykg: TEdit;
    procedure E_AnzahlClick(Sender: TObject);
    procedure B_RechnenClick(Sender: TObject);
    procedure B_exitClick(Sender: TObject);
    procedure B_neuClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  MvR: TMvR;

implementation

{$R *.dfm}

procedure TMvR.E_AnzahlClick(Sender: TObject);
begin
E_Anzahl.text:='';
end;

procedure TMvR.B_RechnenClick(Sender: TObject);
begin
 StrToFloat

//IF Sätze

If CB_Verb.Text = 'Aluminiumsulfid (Al²S³)' then
begin;
E_AStoffx.Text:='Aluminium';
E_AStoffy.Text:='Schwefel';
E_Axkg.Text:=E_Anzahl.Text;
E_Axkg.Text:= FloatToStr(54.0 * StrToFloat(E_Axkg.Text) / 150.0);
E_Aykg.Text:=E_Axkg.Text;
E_Aykg.Text:= FloatToStr(StrToFloat(E_Anzahl.Text) - (StrToFloat(E_Aykg.Text)));
end;

If CB_Verb.Text = 'Kupfersulfid (Cu²S)' then
begin;
E_AStoffx.Text:='Kupfer';
E_AStoffy.Text:='Schwefel';
E_Axkg.Text:=E_Anzahl.Text;
E_Axkg.Text:= FloatToStr(54.0 * StrToFloat(E_Axkg.Text) / 150.0);
E_Aykg.Text:=E_Axkg.Text;
E_Aykg.Text:= FloatToStr(StrToFloat(E_Anzahl.Text) - (StrToFloat(E_Aykg.Text)));
end;

If CB_Verb.Text = 'Wasser (H²O)' then
begin;
E_AStoffx.Text:='Wasserstoff';
E_AStoffy.Text:='Sauerstoff';
E_Axkg.Text:=E_Anzahl.Text;
E_Axkg.Text:= FloatToStr(54.0 * StrToFloat(E_Axkg.Text) / 150.0);
E_Aykg.Text:=E_Axkg.Text;
E_Aykg.Text:= FloatToStr(StrToFloat(E_Anzahl.Text) - (StrToFloat(E_Aykg.Text)));
end;





//Andere Befehle

B_Rechnen.Visible:=False;
CB_Verb.Visible:=False;
E_Anzahl.Visible:=False;
E_kg.Visible:=False;
//A = Auswertung, Ergebnis
M_AText.Visible:=True;
E_AAnzahl.Visible:=True;
E_AStoffx.Visible:=True;
E_AStoffy.Visible:=True;
E_Axkg.Visible:=True;
E_Aykg.Visible:=True;
E_AVerbindung.Visible:=True;

//Auswertung
E_AAnzahl.text:=E_Anzahl.Text;
E_AVerbindung.text:=CB_Verb.Text;

end;








procedure TMvR.B_exitClick(Sender: TObject);
begin
MvR.Close;

end;


procedure TMvR.B_neuClick(Sender: TObject);
begin
B_Rechnen.Visible:=True;
CB_Verb.Visible:=True;
E_Anzahl.Visible:=True;
E_kg.Visible:=True;
//A = Auswertung, Ergebnis
M_AText.Visible:=False;
E_AAnzahl.Visible:=False;
E_AStoffx.Visible:=False;
E_AStoffy.Visible:=False;
E_Axkg.Visible:=False;
E_Aykg.Visible:=False;
E_AVerbindung.Visible:=False;
E_Anzahl.Text:=' Anzahl';
CB_Verb.Text:=' Wähle Produkt';
E_AAnzahl.Text:='';
E_AStoffx.Text:='';
E_AStoffy.Text:='';
E_Axkg.Text:='';
E_Aykg.Text:='';
E_AVerbindung.Text:='';


end;

end.


Wo liegt der Fehler??

Er hat Zeile 52 markiert und den Fehler gezeigt (siehe oben).

Zeile 57 kommt das erste StrToFloat.


MfG V!P3ER
Mitmischer 1703
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 754
Erhaltene Danke: 19

Win 7, Debian
Delphi Prism, Delphi 7, RAD Studio 2009 Academic, C#, C++, Java, HTML, PHP
BeitragVerfasst: Fr 12.10.07 16:19 
Titel: Re: RE
user profile iconV!P3R hat folgendes geschrieben:
Hi,
Ich hab StrToFloat eingesetz, aber er meldet folgenden fehler

ausblenden Delphi-Quelltext
1:
[Fehler] Unit1.pas(52): Es gibt keine überladene Version von 'StrToFloat', die man mit diesen Argumenten aufrufen kann					



Wo liegt der Fehler??

Er hat Zeile 52 markiert und den Fehler gezeigt (siehe oben).

Zeile 57 kommt das erste StrToFloat.


MfG V!P3ER


:? Überladen kenn ich nur von C++ ? :?
Born-to-Frag
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1094

Win XP SP2, Win 2000 SP4
Delphi 7, 2k5
BeitragVerfasst: Fr 12.10.07 16:38 
Hi,

du hast in Zeile 48 einfach ein nutzloses StrToFloat stehen.. das muss da weg :?
@Mitmischer: Das wollte er nich wissen :mrgreen:


greetz

_________________
Theorie ist wenn man alles weiß, aber nichts funktioniert. Praxis ist wenn alles funktioniert, aber niemand weiß warum.
Microsoft vereint Theorie und Praxis: Nichts funktioniert und niemand weiß warum.
TProgger
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 148

XP
D6, D2007 prof
BeitragVerfasst: Fr 12.10.07 16:51 
steht im TEDit als Dezimalseperator auch ein Punkt oder ein Komma? Das ist glaub ich von den globalen Einstellungen von Windows abhängig.
Born-to-Frag
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1094

Win XP SP2, Win 2000 SP4
Delphi 7, 2k5
BeitragVerfasst: Fr 12.10.07 16:53 
Der Punkt ist schon richtig, sonst würde Delphi ja eine Fehlermeldung ausspucken..

_________________
Theorie ist wenn man alles weiß, aber nichts funktioniert. Praxis ist wenn alles funktioniert, aber niemand weiß warum.
Microsoft vereint Theorie und Praxis: Nichts funktioniert und niemand weiß warum.
V!P3R Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 151



BeitragVerfasst: Sa 13.10.07 11:44 
Titel: lol
LOOOOL


Hast recht gehabt


Vielen vielen Dank

PS. Ja Punkt ist schon richtig, sonst geht es nicht!!!


MfG V!P3R
JayEff
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: Sa 13.10.07 12:23 
Der Vollständigkeit halber geb ich kurz meinen Senf zum Wort "Überladen":
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
Procedure aProcedure(var a,b: typeC); overload;
begin
   doSomething;
end;

Procedure aProcedure(different: ClassD); overload;
begin
   doSomethingElse;
end;

Auf diese Art kann ich mehrere Prozeduren des selben Namens deklarieren und sie verschiedene Sachen machen lassen. Ich entscheide dann durch die Art der Parameter, welche Prozedur aufgerufen wird. Ein Beispiel hierfür findet sich bei der Funktion Rect: Rect(10,10,20,20); liefert das selbe TRect wie
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
  var a,b: TPoint;
begin
  a.x := 10;
  a.y := 10;
  b.x := 20;
  b.y := 20;
  Rect(a,b);
end;

Aber das nur so am Rande und off Topic :)

Dein Fehler "Es gibt keine überladene Version[...]" entstand, weil du StrToFloat komplett ohne Parameter aufgerufen hast, und es gibt eben kein Function StrToFloat{keine Paramter}: Extended; Overload;

_________________
>+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.