| Autor |
Beitrag |
V!P3R
      
Beiträge: 151
|
Verfasst: 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:
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 Narses: Delphi-Tags hinzugefügt
|
|
Born-to-Frag
      
Beiträge: 1094
Win XP SP2, Win 2000 SP4
Delphi 7, 2k5
|
Verfasst: 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..
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 
      
Beiträge: 151
|
Verfasst: 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
      
Beiträge: 1383
Erhaltene Danke: 1
WinXP
D2005 PE
|
Verfasst: 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 
      
Beiträge: 151
|
Verfasst: Fr 12.10.07 16:12
Titel: RE
Hi,
Ich hab StrToFloat eingesetz, aber er meldet folgenden fehler
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:
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 public 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 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;
B_Rechnen.Visible:=False; CB_Verb.Visible:=False; E_Anzahl.Visible:=False; E_kg.Visible:=False; 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;
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; 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
      
Beiträge: 754
Erhaltene Danke: 19
Win 7, Debian
Delphi Prism, Delphi 7, RAD Studio 2009 Academic, C#, C++, Java, HTML, PHP
|
Verfasst: Fr 12.10.07 16:19
Titel: Re: RE
|
|
Born-to-Frag
      
Beiträge: 1094
Win XP SP2, Win 2000 SP4
Delphi 7, 2k5
|
Verfasst: 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
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
      
Beiträge: 148
XP
D6, D2007 prof
|
Verfasst: 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
      
Beiträge: 1094
Win XP SP2, Win 2000 SP4
Delphi 7, 2k5
|
Verfasst: 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 
      
Beiträge: 151
|
Verfasst: 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
      
Beiträge: 2971
Windows Vista Ultimate
D7 Enterprise
|
Verfasst: Sa 13.10.07 12:23
Der Vollständigkeit halber geb ich kurz meinen Senf zum Wort "Überladen":
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
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: Extended; Overload;
_________________ >+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
|
|
|