![]() |
Aus eine Listbox Kommazahlen herrausbekommen
Hallo,
ich habe ein Problem :
Delphi-Quellcode:
gesamt,gesamt2,ergebnis und i sind double
for i:= 0 to ListBox3.Items.Count -1 do
gesamt := StrToFloat(ListBox3.Items[i]) + gesamt; for i:= 0 to ListBox4.Items.Count -1 do gesamt2 := StrToFloat(ListBox4.Items[i]) + gesamt2; ergebnis := gesamt2 - gesamt; edit5.text := FloatToStrF(ergebnis,ffnumber,8,2); Wenn es integer sind klappt es. Ich hoffe Ihr könnt mir helfen:-D! lg hors |
AW: Aus eine Listbox Kommazahlen herrausbekommen
1. Was meinst du mit "klappt es"?
2. Was "klappt" nicht? 3. Gibt es eine Fehlermeldung? 4. Wenn ja, wie lautet sie denn? 5. Stichwort Fehlerbehandlung: Was machst du, wenn in deinem String weder ein Float- noch ein Integerwert steht? 6. Schau dir in deiner Online-Hilfe ![]() Ansonsten ist das sicher auch äußerst hilfreich: ![]() |
AW: Aus eine Listbox Kommazahlen herrausbekommen
Zitat:
Aber genau das betrifft "Punkt 4" meines Vorredners, denn das sollte der Compiler ganz genau benennen. Zitat:
Und wenn das der ganze Code sein sollte, dann müßte der Compiler auch Warnungen ala "Variable ... ist nicht initialisiert" ausgeben. |
AW: Aus eine Listbox Kommazahlen herrausbekommen
Du solltest einen anderen Ansatz verfolgen:
Lese die Werte nicht aus den Listboxen, sondern nutze diese nur zum Anzeigen (dafür sind die da). Die Werte selber in einem
Delphi-Quellcode:
oder
array of double
Delphi-Quellcode:
verwalten.
TList<double>
Dann wird der Rest ein Spaziergang ;) Hier der Spaziergang in Code-Zeilen
Delphi-Quellcode:
unit Main_FormU;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TValueArray = array of Double; TMain_Form = class( TForm ) ValuesA_ListBox : TListBox; ValuesB_ListBox : TListBox; ValueSumA_Label : TLabel; ValueSumB_Label : TLabel; Result_Label : TLabel; RandomData_Button: TButton; procedure RandomData_ButtonClick( Sender : TObject ); private FValuesA : TValueArray; FValuesB : TValueArray; FSumA : Double; FSumB : Double; FResult : Double; protected procedure RandomFill( var Values : TValueArray ); procedure Calculate; function SumValues( Values : TValueArray ) : Double; procedure ShowValues( Values : TValueArray; AListBox : TListBox ); procedure RefreshView; public { Public-Deklarationen } end; var Main_Form : TMain_Form; implementation {$R *.dfm} { TMain_Form } procedure TMain_Form.Calculate; begin FSumA := SumValues( FValuesA ); FSumB := SumValues( FValuesB ); FResult := FSumB - FSumA; end; function TMain_Form.SumValues( Values : TValueArray ) : Double; var LIndex : Integer; begin Result := 0; for LIndex := Low( Values ) to High( Values ) do begin Result := Result + Values[LIndex]; end; end; procedure TMain_Form.RefreshView; begin ShowValues( FValuesA, ValuesA_ListBox ); ShowValues( FValuesB, ValuesB_ListBox ); ValueSumA_Label.Caption := FloatToStrF( FSumA, ffNumber, 8, 2 ); ValueSumB_Label.Caption := FloatToStrF( FSumB, ffNumber, 8, 2 ); Result_Label.Caption := FloatToStrF( FResult, ffNumber, 8, 2 ); end; procedure TMain_Form.ShowValues( Values : TValueArray; AListBox : TListBox ); var LIndex : Integer; begin AListBox.Items.BeginUpdate; try AListBox.Clear; for LIndex := Low( Values ) to High( Values ) do AListBox.Items.Add( FloatToStrF( Values[LIndex], ffNumber, 8, 2 ) ); finally AListBox.Items.EndUpdate; end; end; procedure TMain_Form.RandomData_ButtonClick( Sender : TObject ); var LCount : Integer; LIndex : Integer; begin RandomFill( FValuesA ); RandomFill( FValuesB ); Calculate; RefreshView; end; procedure TMain_Form.RandomFill( var Values : TValueArray ); var LCount : Integer; LIndex : Integer; begin LCount := Random( 10 ) + 3; SetLength( Values, LCount ); for LIndex := Low( Values ) to High( Values ) do begin Values[LIndex] := Round( Random * 1000 * 100 ) / 100; end; end; end. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:03 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