![]() |
simples problem :/ integer wert
servuß
ich bin neu und wiedereinsteiger in delphi, hab vor nem halben jahr angefangen aber es geht mir so wie bei latein vokabeln... zum prog: zur übung will ich ein programm coden, dass drei mal durch editfelder ein zahl in ne var speichert und diese dann am ende addieren und durch die zahl der editfelder teilen, in dem fall drei. aber irgendwie schneide ich noob da nicht ganz so mit :wall: beispiel für ein editfeld, phy is die var
Delphi-Quellcode:
dann der button der das gewünschte ausführt
phy := StrtoInt(Edit3.Text);
Delphi-Quellcode:
aber dann kommt :
erg := (deu + phy + eng) / 3;
Memo1.Lines.Add(erg); Zitat:
danke im vorraus |
Re: simples problem :/ integer wert
Du teilst eine Zahl durch 3, und da ist es schon wahrscheinlich, dass eine Kommazahl herauskommt. Ein Integerwert ist aber eine Ganzzahl. Also rundest du entweder die Zahlmit
![]() ![]() ![]() Eine andere Möglichkeit wäre auch, wenn du "erg" als Real deklarierst. Edit: Herzlich Willkommen in der DP :dp: |
Re: simples problem :/ integer wert
Was für einen Typ hat erg?
Wenn Integer dann
Delphi-Quellcode:
Oder besser als Extended deklarieren
erg := (deu + phy + eng) DIV 3;
Delphi-Quellcode:
wird so auch nicht funktionieren
Memo1.Lines.Add(erg);
Delphi-Quellcode:
bzw.
Memo1.Lines.Add(IntToStr(erg));
Delphi-Quellcode:
Memo1.Lines.Add(FloatToStr(erg));
|
Re: simples problem :/ integer wert
erg ist als integer deklariert
aaah DIV, noch nie gehört :shock: :shock: , warum ist das nicht mit / möglich? Noch eine frage, ich habe einen button mit clear funktion, der soll das memo und die drei editfelder löschen. wenn ich aber compile, dann kommt ein error: EConverterror : '' ist kein gültiger integer wert ich denke mal das liegt daran weil im editfeld nichts drin steht ich habe versucht das so zu lösen
Delphi-Quellcode:
oder so ähnlich
if edit1.text = '' then edit1.text := '1'
|
Re: simples problem :/ integer wert
/ ist schon möglich, genauso wie DIV. Nur das Ergebnis kann dann eine reelle Zahl sein (Kommazahl), dafür passte Dein erg nicht und Pascal hat die Angewohnheit solche Fehler nicht zu ignorieren.
Delphi-Quellcode:
oder StrToIntDef nehmen, dann kannst Du leere oder ungültige Textfelder z.B. als 0 auswerten lassen.
if edit1.text = '' then edit1.text := '1'
|
Re: simples problem :/ integer wert
Zitat:
Delphi-Quellcode:
Dann sollte es gehen, allerdings funktioniert dann IntToStr nicht mehr, weil du keinen Integer mehr hast, sondern ein Float ( kurzform für FloatpointNumber = Fließkommazahl ).
var
erg : Single; Darum musst du logischer Weise FloatToStr benutzen. |
Re: simples problem :/ integer wert
Zitat:
|
Re: simples problem :/ integer wert
ok danke
ich hab jetzt erg als real deklariert aber geändert hat sich nichts :shock: wie meinst du StrToIntDef? jetzt auf ne var, zb phy bezogen? |
Re: simples problem :/ integer wert
Zitat:
Zeig mal den kompletten Code Zitat:
|
Re: simples problem :/ integer wert
danke schonmal für die antworten
ok hier der source mit float für erg deklariert
Delphi-Quellcode:
var
Form1: TForm1; deu, eng, phy: integer; erg : float; Key : Char; implementation {$R *.dfm} procedure TForm1.Edit1Change(Sender: TObject); begin deu := Strtoint(Edit1.text); if Edit1.Text = '' then Edit1.Text := '1' end; // hier die anderen beiden editfelder drin procedure TForm1.Button1Click(Sender: TObject); begin erg := (deu + phy + eng) DIV 3; Memo1.Lines.Add(floattostr(erg)); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:52 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