13. oktober 2001 - 13:42
Der er
61 kommentarer og 1 løsning
Delphi skal regne!!!
Hej, jeg er lige begyndt på delphi, og har lavet et program som skal kunne regne noget ud vha. en formel. Jeg har tre edit-felter, hvor man skal indtaste værdierne, og nederst har jeg en knap med teksten beregn. Formlen delphi skal regne ud vha. de tre værdier ser sådan ud: ((1+r)**t*r) / ((1+r)**t-1) de to ** betyder \"i\" f.eks to i anden og \"/\" betyder divider
Annonceindlæg fra Cognizant
13. oktober 2001 - 13:43
#1
hovsa - jeg glemte lige noget i formlen: ((1+r)**t*r) / ((1+r)**t-1) * h
13. oktober 2001 - 13:44
#2
når man har klikket på beregn skal resultatet komme frem i et edit-felt allernederst
13. oktober 2001 - 13:46
#3
Når du skal opløfte i potens skal du bruge Sqr, jeg har klippet lidt ind fra hjælpen nedenunder. Giv mig lige 5. min så skal du få formlen i delphi function Sqr(X: Extended): Extended; function Sqr(X: Integer): Integer; Description The Sqr function returns the square of the argument. X is a floating-point expression. The result, of the same type as X, is the square of X, or X*X.
13. oktober 2001 - 13:47
#4
hmm prøv lige at skrive et eksempel med formlen. ps i anden på en computer ser sådan ud: ^2 Dennis
13. oktober 2001 - 13:47
#5
Tror ikke du får nogen svar når du lige har oprettet din profil i dag.. og så smider alle points i et spørgsmål. Det er imod ånden og ideen med
www.eksperten.dk
13. oktober 2001 - 13:48
#6
Eller lig din mail adr, så sender jeg lige det færdige projekt til dig
13. oktober 2001 - 13:48
#8
morten_s -> Det skal han da kun hvis han skal have kvadarat roden af et tal, og så vidt jeg kan se prøver han ikke på det nogle steder :|
13. oktober 2001 - 13:49
#9
er det ikke bare output.text := inttostr(((1+ strtoint(r.text))**strtoint(t.text)*strtoint(r.text)) div ((1+strtoint(r))**strtoint(t.text)-1) * strtoint(h.text));
13. oktober 2001 - 13:50
#10
Sorry den heder Power function Power(const Base, Exponent: Extended): Extended; Description Power raises Base to any power. For fractional exponents or exponents greater than MaxInt, Base must be greater than 0.
13. oktober 2001 - 13:51
#11
nej, du kan ikke bare sige til delphi at den skal sætte at tal i anden.
13. oktober 2001 - 13:53
#12
dennishoyer@ofir.dk
13. oktober 2001 - 13:55
#13
Øjeblik, den er på vej
13. oktober 2001 - 13:57
#14
mange tak
13. oktober 2001 - 13:58
#15
du skal også sende koden med så jeg lige kan se hvordan ud har gjort
13. oktober 2001 - 13:59
#16
koden kommer også, jeg sender nu
13. oktober 2001 - 14:00
#17
tak
13. oktober 2001 - 14:02
#18
morten_s > Smid koden her ind også.
13. oktober 2001 - 14:12
#19
300 point plejer at få mig til at tænke noget... Hvis koden ikke bliver smidt herind tror jeg vi har en sag..!
13. oktober 2001 - 14:13
#20
13. oktober 2001 - 14:16
#21
rolig rolig procedure TForm1.Button1Click(Sender: TObject); var r, t, h : Integer; res : double; begin r := StrToInt(Editr.Text); t := StrToInt(Editt.Text); h := StrToInt(Edith.Text); res := (power((1+r),(t*r))/power((1+r),(t-r)))*h; Edit1.text := FloatToText(res); end; koden er her, jeg mangler bare at få res oversat til en textstreng, nogen som kan hjælpe med dette ?
13. oktober 2001 - 14:17
#22
Hvis der er snyd med i dette spg. ja så er jeg ikke med
13. oktober 2001 - 14:18
#23
Nu er jeg mere rolig :o) 300 point lugter bare langt væk, synes jeg :o)
13. oktober 2001 - 14:18
#24
Snyd??
13. oktober 2001 - 14:20
#25
nej nej - jeg ville bare være sikker på at få et ordentligt svar så derfor gav jeg så mange point :)
13. oktober 2001 - 14:20
#26
Som sagt har du formlen ovenfor, mangler bare at få res oversat til text.
13. oktober 2001 - 14:21
#27
morten_s - når jeg trykker F9 kommer den frem med kodeoversigten hvor linien res := (power((1+r),(t*r))/power((1+r),(t-r)))*h; er markeret med rødt og cursoren står lige efter power
13. oktober 2001 - 14:23
#28
du skal angive math under uses
13. oktober 2001 - 14:24
#29
er der ingen som har en ide til hvordan res oversættes til editres.text ?
13. oktober 2001 - 14:24
#30
nbpunig> res skal være at typen real
13. oktober 2001 - 14:24
#31
jeg tror du har misforstået formlen.... ((1+r)^t *r) (1+r) i \"t-ende\" gange r
13. oktober 2001 - 14:25
#32
hvor angiver man math
13. oktober 2001 - 14:26
#33
res bliver da bare recreated hvis delphi ikke lige kan se den.
13. oktober 2001 - 14:26
#34
under uses øverst oppe min ser sådan her ud: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Math;
13. oktober 2001 - 14:27
#35
jeg går ud fra at du vil opløfte 1+r i t*r
13. oktober 2001 - 14:27
#36
Hva for et tal har du i t-ende??
13. oktober 2001 - 14:28
#37
når jeg trykker på F9 efter at have angivet math og har ændret res til real er linien stadig markeret med rødt, men nu står markøren efter :=
13. oktober 2001 - 14:28
#38
nej - jeg vil opløfte 1+r i t og bagefter gange det med r
13. oktober 2001 - 14:29
#39
okey, så skal der lige koorigere, øjeblik
13. oktober 2001 - 14:30
#40
Hvis ingen får det til at virke. Kommer jeg snart hjem igen pg så laver jeg lige noget kode tile dig.
13. oktober 2001 - 14:30
#41
res := ((power((1+r),t)*r)/power((1+r),(t-r)))*h; så må del være sådan her
13. oktober 2001 - 14:31
#42
som sagt mangler jeg kun at få oversat res til text, det kan være dkn har en ide til det ?
13. oktober 2001 - 14:33
#43
okey - når jeg compiler nu er linien Edity.text := FloatToText(res); markeret med rødt og markøren står imellem (res) og ;
13. oktober 2001 - 14:34
#44
altså det du rettede skal selvfølgelig også rettes på den del der skal divideres - har du gjort det??
13. oktober 2001 - 14:36
#45
nej jeg troede ikke at du ville trække t fra der så får vi res := ((power((1+r),t)*r)/(power((1+r),t)-r))*h;
13. oktober 2001 - 14:38
#46
Nej det skal være et 1 tal res := ((power((1+r),t)*r)/(power((1+r),t)-1))*h;
13. oktober 2001 - 14:38
#47
hvorfor kan jeg ikke compile ???
13. oktober 2001 - 14:41
#48
Fordi vi mangler en funtion til at oversætte et real til text, arbejder på sagen
13. oktober 2001 - 14:42
#49
ok
13. oktober 2001 - 14:52
#50
Jeg kan ikke finde en funktion som kan oversætte real til tekst (sorry) så jeg tror du bliver nødt til at oprette et nyt spg. med følgende tekst: Oversætte real til tekst jeg har en real som jeg ønsker vist i et edit felt, hvordan gøres det ?
13. oktober 2001 - 14:53
#51
Du kan jo bare overfører nogle af pointene herfra til det nye spg
13. oktober 2001 - 14:59
#52
morten_s > nu kom jeg til at acceptere dit svar :) kan du ikke oprette et nyt spg??? - jeg har ikke flere points
13. oktober 2001 - 15:09
#53
Jo øjeblik, jeg var lige over og handle
13. oktober 2001 - 15:10
#54
spg. er oprettet
13. oktober 2001 - 15:17
#55
Det viste sig at være Float ToStr ;-(( synes ellers at den var afprøvet, nå men anyway her har du den totale kode: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Math; type TForm1 = class(TForm) Editr: TEdit; Button1: TButton; Editt: TEdit; Edith: TEdit; Label1: TLabel; Edit1: TEdit; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var r, t, h : Integer; res : real; res1, res2 : extended; db1, db2 : double; begin r := StrToInt(Editr.Text); t := StrToInt(Editt.Text); h := StrToInt(Edith.Text); res := ((power((1+r),t)*r)/(power((1+r),t)-1))*h; Edit1.Text := FloatToStr(Res); end; end.
13. oktober 2001 - 15:22
#56
mange tak for hjælpen - jeg har bare et spørgsmål til, og selvom du har fået pointene håber jeg du vil svare... jeg har oprettet en MainMenu med Afslut og Ny - når man klikker på Ny skulle den gerne slette alt der står i de fire edit-felter - hvordan gør man det??
13. oktober 2001 - 15:25
#57
du gør bare sådan her: edit1.text := \'\'; edit2.text := \'\';
13. oktober 2001 - 15:26
#58
ok - tak
13. oktober 2001 - 15:27
#59
Hvis du har flere så bare skriv dem her
13. oktober 2001 - 15:36
#60
jeg har lige en mere - værdien \"r\" skal kunne indeholde kommatal - fx. 1,5
13. oktober 2001 - 15:55
#61
kan du hjælpe mig med det
13. oktober 2001 - 16:02
#62
Prøv dette : procedure TForm1.Button1Click(Sender: TObject); var r, t, h : Real; // <-RETTELSE res : real; res1, res2 : extended; db1, db2 : double; begin r := StrToFloat(Editr.Text); // <-RETTELSE t := StrToFloat(Editt.Text); // <-RETTELSE h := StrToFloat(Edith.Text); // <-RETTELSE res := ((power((1+r),t)*r)/(power((1+r),t)-1))*h; Edit1.Text := FloatToStr(Res); end;
Kurser inden for grundlæggende programmering