AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

edit inhalte addieren

Ein Thema von Bx3 · begonnen am 21. Jan 2008 · letzter Beitrag vom 22. Jan 2008
Antwort Antwort
Bx3

Registriert seit: 25. Dez 2007
44 Beiträge
 
#1

edit inhalte addieren

  Alt 21. Jan 2008, 17:37
moin,
also folgende frage:
hab nen formular wo der benutzer in 8 verschiedene
edit's numerische werte eingeben soll
da es ziemlich sch***** aussieht und man es niemanden zumuten kann wenn man es so schreibt:
Delphi-Quellcode:
.
.
var x:real;
begin
 x:=strtofloat(edit1.text) + strtofloat(edit2.text) + strtofloat(edit1.text)...

end;
wollte ich es so machen:
Delphi-Quellcode:
.
.
var x:real;
    i:byte;
begin
 For i:=1 to 8 do
  x:=x + strtofloat(edit[i].text);
.
.
end;
hmm, is aber nich^^ - unzwar liegt das am edit[i].text (also am 'i'),
hat jmd nen plan wie ich das schön in na schleife packen kann???

=> die werte sollen addiert werden, wie man glaub ich sieht^^
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: edit inhalte addieren

  Alt 21. Jan 2008, 17:39
x := x + strtofloat( (Findcomponent( 'Edit' + intToStr(i)) as TEdit).text);
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von semo
semo

Registriert seit: 24. Apr 2004
755 Beiträge
 
Delphi 2010 Professional
 
#3

Re: edit inhalte addieren

  Alt 21. Jan 2008, 18:24
anstatt strtofloat verwende am besten strtofloatdef um fehler abzufangen.
  Mit Zitat antworten Zitat
Benutzerbild von cware
cware

Registriert seit: 15. Feb 2007
Ort: Mannheim
38 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: edit inhalte addieren

  Alt 21. Jan 2008, 21:31
StrToFloatDef() um Fehler abzufangen? wohl eher, um sie anstandslos zu akzeptieren und so ziemlich jede Möglichkeit zu verlieren, Fehler zu tracken.


cheers...
> Why is 6 afraid of 7?
< Because 7 8 9!
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#5

Re: edit inhalte addieren

  Alt 22. Jan 2008, 06:40
Moin,

wenn man die Edits gleich am Anfang einsammelt, dann muss FindComponent() nicht so häufig aufgerufen werden:

Delphi-Quellcode:
uses
  { ... ,} Contnrs;

type
  TDemoForm = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    procedure FormCreate(Sender: TObject);
    procedure EditChange(Sender: TObject);
  private
    EditList: TObjectList;
    EditSum: Double;
  end;

{ ... }

procedure TDemoForm.FormCreate(Sender: TObject);
var
  i: Integer;
begin
  EditList := TObjectList.Create;
  for i := 1 to 3 do
    EditList.Add(FindComponent(Format('Edit%d', [i])));
end;

procedure TDemoForm.EditChange(Sender: TObject);
var
  i: Integer;
  dValue: Double;
begin
  EditSum := 0;
  for i := 0 to Pred(EditList.Count) do
    if TryStrToFloat((EditList[i] as TEdit).Text, dValue) then
      EditSum := EditSum + dValue;
  // Caption := FloatToStr(EditSum);
end;
Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von cware
cware

Registriert seit: 15. Feb 2007
Ort: Mannheim
38 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: edit inhalte addieren

  Alt 22. Jan 2008, 08:54
hier entsteht durch das TryStrToFloat() genau das gleiche Problem wie mit StrToFloatDef()...

wenn, dann doch bitte sowas wie:
Delphi-Quellcode:
for i := 0 to Pred(EditList.Count) do
begin
  if TryStrToFloat((EditList[i] as TEdit).Text, dValue) then
    EditSum := EditSum + dValue;
  else
  begin
    // noch besser ist übrigens eine status-zeile
    // modale fenster werden heutzutage immer
    // unattraktiver
    MessageDlg('Bitte einen korrekten Wert in ' + (EditList[i] as TEdit).Name + ' eintragen.',
               mtError, [mbOK], 0);

    Exit;
  end;
end;

cheers...
> Why is 6 afraid of 7?
< Because 7 8 9!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz