![]() |
edit inhalte addieren
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:
wollte ich es so machen:
.
. var x:real; begin x:=strtofloat(edit1.text) + strtofloat(edit2.text) + strtofloat(edit1.text)... end;
Delphi-Quellcode:
hmm, is aber nich^^ - unzwar liegt das am edit[i].text (also am 'i'),
.
. var x:real; i:byte; begin For i:=1 to 8 do x:=x + strtofloat(edit[i].text); . . end; hat jmd nen plan wie ich das schön in na schleife packen kann??? => die werte sollen addiert werden, wie man glaub ich sieht^^ |
Re: edit inhalte addieren
Delphi-Quellcode:
x := x + strtofloat( (Findcomponent( 'Edit' + intToStr(i)) as TEdit).text);
|
Re: edit inhalte addieren
anstatt strtofloat verwende am besten strtofloatdef um fehler abzufangen.
|
Re: edit inhalte addieren
StrToFloatDef() um Fehler abzufangen? wohl eher, um sie anstandslos zu akzeptieren und so ziemlich jede Möglichkeit zu verlieren, Fehler zu tracken.
cheers... |
Re: edit inhalte addieren
Moin,
wenn man die Edits gleich am Anfang einsammelt, dann muss FindComponent() nicht so häufig aufgerufen werden:
Delphi-Quellcode:
Grüße vom marabu
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; |
Re: edit inhalte addieren
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... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:21 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz