Avatar billede delphiuser Mester
01. april 2007 - 09:41 Der er 4 kommentarer og
1 løsning

læggesammen af 11 edit boxe

Hej eksperter....

Jeg er i gang med at lave et lille program hvor man kan taste ind hvad man har af forskellige mønter. så regner den selv sammen hvor mange kroner det er.

men nu har jeg bare et problem... jeg har 11 edit boxe hvor resultatet i kroner står i. de 11 boxe skal lægges sammen i en 12 editbox. og den skal kunne tage komma tal. men den vil bare ikke efter den måde jeg selv prøvet på...

her er min egen kode for at den lægger det hele sammen....

procedure TForm3.Edit23Click(Sender: TObject);
begin
(floattostr(strtofloat(edit2.text) + strtofloat(edit4.text) + strtofloat(edit6.Text) + strtofloat(edit8.Text) + strtofloat(edit10.Text) + strtofloat(edit12.Text) + strtofloat(edit14.Text) + strtofloat(edit16.Text) + strtofloat(edit18.Text) + strtofloat(edit20.Text) + strtofloat(edit22.Text))) + ' Kr.';
end;

hvad har jeg lavet af fejl...
Avatar billede kroning Nybegynder
01. april 2007 - 10:08 #1
Jeg ville gøre det sådan:
Giv alle dine Edit´s som indeholder tal der skal lægges sammen en Tag=50

var
    i : integer;
  Total : Currency;
begin
    Total:=0;
    for i:=0 to Self.ComponentCount-1 do
      if (Self.Components[i] is TEdit) and (Self.Components[i].Tag=50) then
            Total:=Total+StrToFloatDef((Self.Components[i] as TEdit).Text,0);

    EditT.Text:=FloatToStr(Total);
end;

EditT er navnet på den edit box der indeholder resultatet.
Avatar billede a_nor Nybegynder
01. april 2007 - 11:41 #2
Enig i Kronings betragtning om at det bliver uoverskueligt når meget skal håndteres som du gør, og derfor

Du har bare glemt at skrive

Edit23.text:= 

før din lange summation :-)
Avatar billede hrc Mester
02. april 2007 - 07:54 #3
Du bør også bruge TFormatSettings. Lav en variabel af recorden TFormatSettings, sæt DecimalSeparator til hvad der skal separere hel- og decimaldelen og læg den ved StrToFloatDef-kaldet.

... og så ellers lave det på denne måde:

procedure btnSUMClick(Sender : TObject)
begin

  function SumSummarum(aEdits : array of TEdit) : double;
  var
    i : integer;
    FormatSettings : TFormatSettings;
  begin
    result := 0.0;
    FormatSettings.DecimalSeparator := '.'; // Eller komma
    for i := low(aEdits) to high(aEdits) do
      result := result + StrToFloatDef(aEdits[i].Text,0.0,FormatSettings);
  end;

begin
  Edit23.Text := FloatToStr(SumSummarum([Edit2,Edit4,Edit6,Edit8, ... Edit22 ]));
end;
Avatar billede delphiuser Mester
28. juli 2010 - 14:14 #4
lukker
Avatar billede a_nor Nybegynder
28. juli 2010 - 15:47 #5
Hej "Delphiuser"

Har du nogensinde uddelt point (til andre end dig selv) for besvarelser af nogle af dine 86 oprettede spørgsmål ?

med undren ...
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