Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi simples problem :/ integer wert (https://www.delphipraxis.net/135153-simples-problem-integer-wert.html)

schmerzbegrenzer 5. Jun 2009 16:21


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:
phy := StrtoInt(Edit3.Text);
dann der button der das gewünschte ausführt

Delphi-Quellcode:
erg := (deu + phy + eng) / 3;
Memo1.Lines.Add(erg);
aber dann kommt :
Zitat:

inkompatible typen: 'integer' und 'extended'
schlagt mich tod, aber für meine dummheit kann ich nichts :wall:

danke im vorraus

bigben37 5. Jun 2009 16:27

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 Delphi-Referenz durchsuchenRound() oder du teilst es mit Delphi-Referenz durchsuchendiv (Grundschul-Geteilt). Mit Delphi-Referenz durchsuchenmod bekommst du dann den Rest heraus.

Eine andere Möglichkeit wäre auch, wenn du "erg" als Real deklarierst.

Edit: Herzlich Willkommen in der DP :dp:

mkinzler 5. Jun 2009 16:28

Re: simples problem :/ integer wert
 
Was für einen Typ hat erg?
Wenn Integer dann
Delphi-Quellcode:
erg := (deu + phy + eng) DIV 3;
Oder besser als Extended deklarieren

Delphi-Quellcode:
Memo1.Lines.Add(erg);
wird so auch nicht funktionieren

Delphi-Quellcode:
Memo1.Lines.Add(IntToStr(erg));
bzw.
Delphi-Quellcode:
Memo1.Lines.Add(FloatToStr(erg));

schmerzbegrenzer 5. Jun 2009 16:39

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:
 if edit1.text = '' then edit1.text := '1'
oder so ähnlich

Satty67 5. Jun 2009 16:45

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:
 if edit1.text = '' then edit1.text := '1'
oder StrToIntDef nehmen, dann kannst Du leere oder ungültige Textfelder z.B. als 0 auswerten lassen.

Desmulator 5. Jun 2009 16:49

Re: simples problem :/ integer wert
 
Zitat:

Zitat von schmerzbegrenzer
aaah DIV, noch nie gehört :shock: :shock: , warum ist das nicht mit / möglich?

Ganz einfach, weil du mit / eine richtige Teilung durchführst. 4 geteilt durch 3 ist keine Ganzzahl mehr sondern sogar eine periodische Kommazahl. ( Fließkommazahl ) Ein Integer kann nur Zahlen wie 1, 2, 5, 16, 4854687 speichern, bei 1.3 kommst du an seine Grenzen, darum musst du einen anderen Datentyp nehmen, nämlich eine Fließkommazahl. Davon gibt es genau 3 Stück in Delphi, Single, Double und Extended. Sie unterscheiden sich von der Funktion hier nicht, nur in ihrer Genauigkeit. An deiner Stelle sollte ein Single vollkommen reichen.

Delphi-Quellcode:
var
  erg : Single;
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 ).
Darum musst du logischer Weise FloatToStr benutzen.

Satty67 5. Jun 2009 16:56

Re: simples problem :/ integer wert
 
Zitat:

Zitat von Desmulator
3 Stück in Delphi, Single, Double und Extended.

Real48, Comp und Currency als Sondertypen nicht zu vergessen.

schmerzbegrenzer 5. Jun 2009 16:58

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?

mkinzler 5. Jun 2009 17:03

Re: simples problem :/ integer wert
 
Zitat:

ich hab jetzt erg als real deklariert aber geändert hat sich nichts Shocked
:gruebel:
Zeig mal den kompletten Code
Zitat:

wie meinst du StrToIntDef? jetzt auf ne var, zb phy bezogen?
Ja, wenn der String nicht konvertiert werden kann, wird der angegebene Standardwert verwendet.

schmerzbegrenzer 5. Jun 2009 17:09

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 04:27 Uhr.
Seite 1 von 2  1 2      

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