AGB  ·  Datenschutz  ·  Impressum  







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

simples problem :/ integer wert

Ein Thema von schmerzbegrenzer · begonnen am 5. Jun 2009 · letzter Beitrag vom 5. Jun 2009
Antwort Antwort
Seite 1 von 2  1 2      
schmerzbegrenzer

Registriert seit: 5. Jun 2009
5 Beiträge
 
#1

simples problem :/ integer wert

  Alt 5. Jun 2009, 17:21
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

beispiel für ein editfeld, phy is die var

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

danke im vorraus
  Mit Zitat antworten Zitat
Benutzerbild von bigben37
bigben37

Registriert seit: 19. Dez 2007
Ort: Freiburg
116 Beiträge
 
Delphi 2009 Professional
 
#2

Re: simples problem :/ integer wert

  Alt 5. Jun 2009, 17:27
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
Benjamin
Optimismus ist nur ein Mangel an Information
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: simples problem :/ integer wert

  Alt 5. Jun 2009, 17:28
Was für einen Typ hat erg?
Wenn Integer dann
erg := (deu + phy + eng) DIV 3; Oder besser als Extended deklarieren

Memo1.Lines.Add(erg); wird so auch nicht funktionieren

Memo1.Lines.Add(IntToStr(erg)); bzw.
Memo1.Lines.Add(FloatToStr(erg));
Markus Kinzler
  Mit Zitat antworten Zitat
schmerzbegrenzer

Registriert seit: 5. Jun 2009
5 Beiträge
 
#4

Re: simples problem :/ integer wert

  Alt 5. Jun 2009, 17:39
erg ist als integer deklariert

aaah DIV, noch nie gehört , 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

 if edit1.text = 'then edit1.text := '1' oder so ähnlich
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#5

Re: simples problem :/ integer wert

  Alt 5. Jun 2009, 17:45
/ 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.

 if edit1.text = 'then edit1.text := '1' oder StrToIntDef nehmen, dann kannst Du leere oder ungültige Textfelder z.B. als 0 auswerten lassen.
  Mit Zitat antworten Zitat
Benutzerbild von Desmulator
Desmulator

Registriert seit: 3. Mai 2007
Ort: Bonn
169 Beiträge
 
#6

Re: simples problem :/ integer wert

  Alt 5. Jun 2009, 17:49
Zitat von schmerzbegrenzer:
aaah DIV, noch nie gehört , 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.
Lars
There are 10 kinds of people in the world:
those who get binary, and those who don’t.
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#7

Re: simples problem :/ integer wert

  Alt 5. Jun 2009, 17:56
Zitat von Desmulator:
3 Stück in Delphi, Single, Double und Extended.
Real48, Comp und Currency als Sondertypen nicht zu vergessen.
  Mit Zitat antworten Zitat
schmerzbegrenzer

Registriert seit: 5. Jun 2009
5 Beiträge
 
#8

Re: simples problem :/ integer wert

  Alt 5. Jun 2009, 17:58
ok danke

ich hab jetzt erg als real deklariert aber geändert hat sich nichts

wie meinst du StrToIntDef? jetzt auf ne var, zb phy bezogen?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: simples problem :/ integer wert

  Alt 5. Jun 2009, 18:03
Zitat:
ich hab jetzt erg als real deklariert aber geändert hat sich nichts Shocked

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.
Markus Kinzler
  Mit Zitat antworten Zitat
schmerzbegrenzer

Registriert seit: 5. Jun 2009
5 Beiträge
 
#10

Re: simples problem :/ integer wert

  Alt 5. Jun 2009, 18:09
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;
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 07:47 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