Avatar billede nbpuniq Nybegynder
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
Avatar billede nbpuniq Nybegynder
13. oktober 2001 - 13:43 #1
hovsa - jeg glemte lige noget i formlen:

((1+r)**t*r) / ((1+r)**t-1) * h

Avatar billede nbpuniq Nybegynder
13. oktober 2001 - 13:44 #2
når man har klikket på beregn skal resultatet komme frem i et edit-felt allernederst
Avatar billede morten_s Nybegynder
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.
Avatar billede dkn Nybegynder
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
Avatar billede little_john Nybegynder
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
Avatar billede morten_s Nybegynder
13. oktober 2001 - 13:48 #6
Eller lig din mail adr, så sender jeg lige det færdige projekt til dig
Avatar billede snowball Novice
13. oktober 2001 - 13:48 #7
Du kunne prøve denne parser: http://www.bitsoft.com/freestuff/delphi/parser.htm

Ellers kan du også prøve at kigge lidt på http://www.torry.net/calculators.htm og se om du kan bruge noget der.

Snowball
Avatar billede dkn Nybegynder
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 :|
Avatar billede jetrit Nybegynder
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));
Avatar billede morten_s Nybegynder
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.
Avatar billede dkn Nybegynder
13. oktober 2001 - 13:51 #11
nej, du kan ikke bare sige til delphi at den skal sætte at tal i anden.
Avatar billede nbpuniq Nybegynder
13. oktober 2001 - 13:53 #12
dennishoyer@ofir.dk
Avatar billede morten_s Nybegynder
13. oktober 2001 - 13:55 #13
Øjeblik, den er på vej
Avatar billede nbpuniq Nybegynder
13. oktober 2001 - 13:57 #14
mange tak
Avatar billede nbpuniq Nybegynder
13. oktober 2001 - 13:58 #15
du skal også sende koden med så jeg lige kan se hvordan ud har gjort
Avatar billede morten_s Nybegynder
13. oktober 2001 - 13:59 #16
koden kommer også, jeg sender nu
Avatar billede nbpuniq Nybegynder
13. oktober 2001 - 14:00 #17
tak
Avatar billede makse Nybegynder
13. oktober 2001 - 14:02 #18
morten_s > Smid koden her ind også.
Avatar billede rfogh Nybegynder
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..!
Avatar billede morten_s Nybegynder
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 ?
Avatar billede morten_s Nybegynder
13. oktober 2001 - 14:17 #22
Hvis der er snyd med i dette spg. ja så er jeg ikke med
Avatar billede rfogh Nybegynder
13. oktober 2001 - 14:18 #23
Nu er jeg mere rolig :o)
300 point lugter bare langt væk, synes jeg :o)
Avatar billede nbpuniq Nybegynder
13. oktober 2001 - 14:18 #24
Snyd??
Avatar billede nbpuniq Nybegynder
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 :)
Avatar billede morten_s Nybegynder
13. oktober 2001 - 14:20 #26
Som sagt har du formlen ovenfor, mangler bare at få res oversat til text.
Avatar billede nbpuniq Nybegynder
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
Avatar billede morten_s Nybegynder
13. oktober 2001 - 14:23 #28
du skal angive math under uses
Avatar billede morten_s Nybegynder
13. oktober 2001 - 14:24 #29
er der ingen som har en ide til hvordan res oversættes til editres.text ?
Avatar billede morten_s Nybegynder
13. oktober 2001 - 14:24 #30
nbpunig> res skal være at typen real
Avatar billede nbpuniq Nybegynder
13. oktober 2001 - 14:24 #31
jeg tror du har misforstået formlen....

((1+r)^t *r)

(1+r) i \"t-ende\" gange r
Avatar billede nbpuniq Nybegynder
13. oktober 2001 - 14:25 #32
hvor angiver man math
Avatar billede dkn Nybegynder
13. oktober 2001 - 14:26 #33
res bliver da bare recreated hvis delphi ikke lige kan se den.
Avatar billede morten_s Nybegynder
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;
Avatar billede morten_s Nybegynder
13. oktober 2001 - 14:27 #35
jeg går ud fra at du vil opløfte 1+r i t*r
Avatar billede dkn Nybegynder
13. oktober 2001 - 14:27 #36
Hva for et tal har du i t-ende??
Avatar billede nbpuniq Nybegynder
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

:=
Avatar billede nbpuniq Nybegynder
13. oktober 2001 - 14:28 #38
nej - jeg vil opløfte 1+r i t og bagefter gange det med r
Avatar billede morten_s Nybegynder
13. oktober 2001 - 14:29 #39
okey, så skal der lige koorigere, øjeblik
Avatar billede dkn Nybegynder
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.
Avatar billede morten_s Nybegynder
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
Avatar billede morten_s Nybegynder
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 ?
Avatar billede nbpuniq Nybegynder
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 ;
Avatar billede nbpuniq Nybegynder
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??
Avatar billede morten_s Nybegynder
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;

Avatar billede morten_s Nybegynder
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;
Avatar billede nbpuniq Nybegynder
13. oktober 2001 - 14:38 #47
hvorfor kan jeg ikke compile ???
Avatar billede morten_s Nybegynder
13. oktober 2001 - 14:41 #48
Fordi vi mangler en funtion til at oversætte et real til text, arbejder på sagen
Avatar billede nbpuniq Nybegynder
13. oktober 2001 - 14:42 #49
ok
Avatar billede morten_s Nybegynder
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 ?
Avatar billede morten_s Nybegynder
13. oktober 2001 - 14:53 #51
Du kan jo bare overfører nogle af pointene herfra til det nye spg
Avatar billede nbpuniq Nybegynder
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
Avatar billede morten_s Nybegynder
13. oktober 2001 - 15:09 #53
Jo øjeblik, jeg var lige over og handle
Avatar billede morten_s Nybegynder
13. oktober 2001 - 15:10 #54
spg. er oprettet
Avatar billede morten_s Nybegynder
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.



Avatar billede nbpuniq Nybegynder
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??
Avatar billede morten_s Nybegynder
13. oktober 2001 - 15:25 #57
du gør bare sådan her:



edit1.text := \'\';
edit2.text := \'\';
Avatar billede nbpuniq Nybegynder
13. oktober 2001 - 15:26 #58
ok - tak
Avatar billede morten_s Nybegynder
13. oktober 2001 - 15:27 #59
Hvis du har flere så bare skriv dem her
Avatar billede nbpuniq Nybegynder
13. oktober 2001 - 15:36 #60
jeg har lige en mere - værdien \"r\" skal kunne indeholde kommatal - fx. 1,5
Avatar billede nbpuniq Nybegynder
13. oktober 2001 - 15:55 #61
kan du hjælpe mig med det
Avatar billede morten_s Nybegynder
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;
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester