AGB  ·  Datenschutz  ·  Impressum  







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

Einlesefehler bei MemoBox

Ein Thema von Giertier · begonnen am 15. Nov 2008 · letzter Beitrag vom 8. Dez 2008
Antwort Antwort
Seite 2 von 2     12   
mkinzler
(Moderator)

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

Re: Einlesefehler bei MemoBox

  Alt 15. Nov 2008, 20:16
Was steht den in der zweiten Zeile? Und warum weist du dem minimum das Gleiche wie dem Maximum zu?
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.544 Beiträge
 
Delphi 11 Alexandria
 
#12

Re: Einlesefehler bei MemoBox

  Alt 15. Nov 2008, 20:20
Einen Initialwert brauchst Du ja zum Vergleich, wobei hier Memo1.Lines[0] natürlich sinniger wäre.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Giertier

Registriert seit: 31. Okt 2008
20 Beiträge
 
Delphi 2005 Personal
 
#13

Re: Einlesefehler bei MemoBox

  Alt 15. Nov 2008, 20:25
Zitat von mkinzler:
Was steht den in der zweiten Zeile? Und warum weist du dem minimum das Gleiche wie dem Maximum zu?
Das mit dem Minimum und Maximum habe ich deshalb so gemacht, damit z.B. notfalls, wenn nur ein Wert eingegeben wurde, dieser dann auch als Minimum UND Maximum erkannt wird. Klaus hat das weiter oben schon ganz gut erkannt. Wenn ich z.B. min und max = 0 setzen würde am Anfang und nur einen Wert eingebe, habe ich zwar ein Maximum, aber mein Minimum würde null bleiben, obwohl ich gar keine 0 eingegeben habe.

Ich weiß jetzt nicht genau, was du mit zweiter Zeile meinst, deswegen packe ich jetzt hier mal den kompletten Code der Button procedure hin und nicht nur ein Stück:

Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);

var

soll,plus,minus,min,max,mittel,ug,ueg,summe,pruefwert,wert:single;
zahl,unter,ueber,i:integer;

begin

  if edit1.Text = 'then
  begin
   application.MessageBox('Bitte füllen Sie alle Eingabefelder aus!', 'Leeres Feld', MB_ok);
   exit;
  end;

 if edit2.Text = 'then
  begin
   application.MessageBox('Bitte füllen Sie alle Eingabefelder aus!', 'Leeres Feld', MB_ok);
   exit;
  end;

 if edit3.Text = 'then
  begin
   application.MessageBox('Bitte füllen Sie alle Eingabefelder aus!', 'Leeres Feld', MB_ok);
   exit;
  end;

 if memo1.lines.count = 0 then
  begin
   application.MessageBox('Bitte geben Sie mindestens einen Messwert ein!', 'Leeres Feld', MB_ok);
   exit;
  end;

 if not TryStrToFloat(edit1.Text,pruefwert) then
  begin
  application.MessageBox('Sie haben einen Eingabefehler gemacht!', 'Eingabefehler', MB_ok);
  exit;
  end;

 if not TryStrToFloat(edit2.Text,pruefwert) then
  begin
  application.MessageBox('Sie haben einen Eingabefehler gemacht!', 'Eingabefehler', MB_ok);
  exit;
  end;

 if not TryStrToFloat(edit3.Text,pruefwert) then
  begin
  application.MessageBox('Sie haben einen Eingabefehler gemacht!', 'Eingabefehler', MB_ok);
  exit;
  end;

 for i:= 1 to memo1.lines.count do
  if not TryStrToFloat(memo1.Lines[i],pruefwert) then
  begin
  application.MessageBox('Sie haben einen Eingabefehler gemacht!', 'Eingabefehler', MB_ok);
  exit;
  end;


  summe:=0;
  unter:=0;
  ueber:=0;

  soll:=strtofloat(edit1.text);
  plus:=strtofloat(edit2.Text);
  minus:=strtofloat(edit3.Text);

  ug:= soll-minus;
  ueg:= soll+plus;

  zahl:= Memo1.Lines.count;

  max:=strtofloat(memo1.Lines[1]);
  min:=strtofloat(memo1.lines[1]);


 for i:= 1 to memo1.Lines.Count do
  begin
    if memo1.Lines[i] <> 'then
      begin
        wert:= StrToFloat(memo1.Lines[i]);

        if wert < min then
          min:= wert;

        if wert > max then
          max:= wert;

        if wert <ug then
          unter:=unter+1;

        if wert >ueg then
          ueber:= ueber+1;

        summe:= summe+wert;
      
      end;

   end;


  mittel:= summe/zahl;

  label18.Caption:= inttostr(zahl);
  label19.Caption:= floattostr(round(min*100)/100)+' mm';
  label20.Caption:= floattostr(round(max*100)/100)+' mm';
  label21.Caption:= floattostr(round(mittel*100)/100)+' mm';
  label23.Caption:= inttostr(unter);
  label24.caption:= inttostr(ueber);


end;

procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char);
begin
   if not (key in['0','1','2','3','4','5','6','7','8','9',',',#8,#13]) then
   key := #0;
end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
   if not (key in['0','1','2','3','4','5','6','7','8','9',',',#8]) then
   key := #0;
end;

procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
   if not (key in['0','1','2','3','4','5','6','7','8','9',',',#8]) then
   key := #0;
end;

procedure TForm1.Edit3KeyPress(Sender: TObject; var Key: Char);
begin
   if not (key in['0','1','2','3','4','5','6','7','8','9',',',#8]) then
   key := #0;
end;

end.
Vielleicht hab ich ja doch noch wo anders nen fehler gemacht...
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Einlesefehler bei MemoBox

  Alt 15. Nov 2008, 20:26
Ich meinte die 2. Zeile in deinem Memofeld
Markus Kinzler
  Mit Zitat antworten Zitat
Giertier

Registriert seit: 31. Okt 2008
20 Beiträge
 
Delphi 2005 Personal
 
#15

Re: Einlesefehler bei MemoBox

  Alt 15. Nov 2008, 20:31
Zitat von mkinzler:
Ich meinte die 2. Zeile in deinem Memofeld
achso, sorry

Naja, je nachdem ob ich mehr oder weniger Werte eingebe, steht dann da entweder ein Wert, oder wenn ich nur einen Wert eingebe, steht halt nichts da, aber dann springe ich auch gar nicht erst in die Zeile, deswegen verstehe ich auch nicht, warum er mir trotzdem was von '' ist kein gültiger Gleitkommawert erzählt
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Einlesefehler bei MemoBox

  Alt 15. Nov 2008, 20:34
Und was steht da genau?
Markus Kinzler
  Mit Zitat antworten Zitat
Giertier

Registriert seit: 31. Okt 2008
20 Beiträge
 
Delphi 2005 Personal
 
#17

Re: Einlesefehler bei MemoBox

  Alt 15. Nov 2008, 20:37
Ahhhhh, ich bin so bekloppt .

Hab vergessen, von i:= 0 bis count -1 zu zählen, wie ihr mir das ja auch schon geraten habt .

Den Fehler mach ich bestimmt nicht nochmal

Vielen vielen Dank nochmal an alle hier im Thread, ihr seid spitze

lg, Giertier ^^
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.300 Beiträge
 
Delphi 12 Athens
 
#18

Re: Einlesefehler bei MemoBox

  Alt 15. Nov 2008, 20:39
Selbstkritik ist der beste Weg zur Besserung... 8)

...aber nur so lernt man
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#19

Re: Einlesefehler bei MemoBox

  Alt 8. Dez 2008, 10:21
Ich benutze noch D5 Pro. Da gibts anscheinend noch kein StrToFloatDef - kann mal jemand die Sourcen der Function posten? Danke!
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.544 Beiträge
 
Delphi 11 Alexandria
 
#20

Re: Einlesefehler bei MemoBox

  Alt 8. Dez 2008, 10:46
Hier hab ich auch nur Delphi 5, aber man kann doch StrToIntDef auf Float anpassen:
Delphi-Quellcode:
function StrToFloatDef(const S: string; Default: Extended): Extended;
var
  E: Integer;
begin
  Val(S, Result, E);
  if E <> 0 then Result := Default;
end;
Ich möchte fast wetten, dass das Original auch nicht viel anders aussieht.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 05:21 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