Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi wenn keine zahl, dann...? (https://www.delphipraxis.net/23380-wenn-keine-zahl-dann.html)

herrentor 2. Jun 2004 09:36


wenn keine zahl, dann...?
 
guten morgen.

ich wüsste gerne, wie die bezeichnung für zahl ist? wenn zelle ungleich zahl dann...

Code:

if (Form1.Tab.Cells[3,i] <> real) or
      (Form1.Tab.Cells[4,i] <> real) then

    begin
     ShowMessage('  Sie müssen noch Werte eingeben!   ');    
     exit                                                      
    end;
danke im voraus.

MrSpock 2. Jun 2004 09:49

Re: wenn keine zahl, dann...?
 
Hallo herrentor,

ich meine ich hätte mal die Funktion IsNumber gesehen, habe sie aber gerade in der OH nicht gefunden.

Alternativ kannst du folgendes machen:

Delphi-Quellcode:
try
  wert := StrToFloat(Form1.Tab.Cells[4,i]);
except
  on exception do
  begin
  { ist keine Zahl }
  end
end

herrentor 2. Jun 2004 10:02

Re: wenn keine zahl, dann...?
 
wie soll ich denn {ist keine zahl} ausdrücken?

MrSpock 2. Jun 2004 10:06

Re: wenn keine zahl, dann...?
 
Hallo herrentor,

z.B. so:

Delphi-Quellcode:
function isNumber(str: String; var number: Extended): Boolen;
var
  wert : Extended;
begin
  Result := True;
  try
    wert := StrToFloat(str);
    number := wert;
  except
    on exception do
    begin
      Result := False;
    end
  end
end;

Smokey 2. Jun 2004 10:11

Re: wenn keine zahl, dann...?
 
Wenn du Delphi7 hast, schau in der Hilfe mal nach

TryStrToInt,
TryStrToFloat

das würde dir die Exception sparen.
die Funktion Val kann dir das auch ersparen, hat aber Probleme mit ein paar strings die als Zahl erkannt werden

StefanDP 2. Jun 2004 10:19

Re: wenn keine zahl, dann...?
 
Ich würde ehrlichgesagt keine try...except machen, weil man das nur im "notfall" anwenden sollte!
eine elegantere lösung wäre:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  code: Integer;
  was: Real;
  text: String;
begin
  text := '3.141592';    // entspricht deinem ...cells[x,y]
  val(text, was, code);  // wenn "text" eine Real-Var ("was") ist
                          // wird in "code" der wert 0 zurückgegeben
                          // sonst wird "irgend was anderes" ausgegeben
  if (code = 0) then
    ShowMessage('Ist eine Zahl')
  else
    ShowMessage('Ist keine Zahl');
end;
stefan

Smokey 2. Jun 2004 10:37

Re: wenn keine zahl, dann...?
 
joa wie oben schon gesagt, Val ist ne möglichkeit ABER : setzt mal dein Val auf den String 'XC' an.
Dann weisst du, was ich mit "problematisch" meinte

StefanDP 2. Jun 2004 10:42

Re: wenn keine zahl, dann...?
 
Zitat:

Zitat von Smokey
joa wie oben schon gesagt, Val ist ne möglichkeit ABER : setzt mal dein Val auf den String 'XC' an.
Dann weisst du, was ich mit "problematisch" meinte

schon, aber dass da genau "XC" drin steht ist auch relativ unwahrscheinlich

Kevin 2. Jun 2004 10:47

Re: wenn keine zahl, dann...?
 
Aber sollte man als Programmierer nicht grade auf das Unwahrscheinliche vorbereitet sein...?! :zwinker:

StefanDP 2. Jun 2004 11:02

Re: wenn keine zahl, dann...?
 
das "XC" problem kommt aber nur bei var(...,integer,...) vor!
im oberen beispiel ist es aber eine real variable! Da wird es nicht falsch also richtig erkannt. :witch:

stefan

herrentor 2. Jun 2004 11:05

Re: wenn keine zahl, dann...?
 
das klappt noch nicht so. außerdem wird "was" niemals benutzt.

Code:

text := '3.141592';    // entspricht deinem ...cells[x,y]
 val(text, was, code);  // wenn "text" eine Real-Var ("was") ist
                          // wird in "code" der wert 0 zurückgegeben
                          // sonst wird "irgend was anderes" ausgegeben
 if (code = 0) then
  begin
   ShowMessage('  Sie müssen noch Werte eingeben!   ');                                                                
  end

  else
   begin
    ShowMessage('  Sie müssen noch Werte eingeben!   ');    
    exit                                                                    
   end;
so kommt die nachricht, obwohl zahlen drin stehen.

Smokey 2. Jun 2004 11:09

Re: wenn keine zahl, dann...?
 
lies dir mal die hilfe zu Val durch

In "was" wird der Zahlenwert gespeichert wenn es denn eine Zahl war.
Ausserdem hast du 2mal die gleiche meldung, also klar das immer die kommt 8)

StefanDP 2. Jun 2004 11:09

Re: wenn keine zahl, dann...?
 
was wird schon benutzt! von was ist lediglich der variablentyp wichtig (var was: real)

probier einfach mal meinen code mit dem button aus!

Ultimator 2. Jun 2004 11:11

Re: wenn keine zahl, dann...?
 
Kalr kommt die immer:
Delphi-Quellcode:
if (code = 0) then
  begin
   ShowMessage('  Sie müssen noch Werte eingeben!   ');                                                                
  end

  else
   begin
    ShowMessage('  Sie müssen noch Werte eingeben!   ');    
    exit                                                                    
   end;
Wenn der code 0 ist(if code = 0), dann kommt die Nachricht(then Showmessage(...)), andernfalls (else)kommt die Nachricht auch (Showmessage(...)).
Soweit klar geworden? :zwinker:

Und BITTE! Nehmt doch kein real mehr, sondern single, double, extended usw...

herrentor 2. Jun 2004 11:14

Re: wenn keine zahl, dann...?
 
es kommt zuerst: ist eine zahl, obwohl keine drin steht. dann auf ok und er schmiert ab, weil kein gültiger gleitkommasatz.

herrentor 2. Jun 2004 11:17

Re: wenn keine zahl, dann...?
 
das ist schon klar, warum immer die selbe nachricht kommt, aber er springt eben nicht aus dem programm, wenn keine zahl eingegeben wurde. wenn eine zahl drin steht, soll er ja gar nichts machen.

StefanDP 2. Jun 2004 11:22

Re: wenn keine zahl, dann...?
 
wo soll er denn "rausspringen" :gruebel:
aus der prozedur/funktiktion ?

herrentor 2. Jun 2004 11:25

Re: wenn keine zahl, dann...?
 
wenn keine zahl eingegeben wurde soll er die prozedur abbrechen, weil ja sonst der fehler auftritt, keine gleitkommazahl etc.

StefanDP 2. Jun 2004 11:33

Re: wenn keine zahl, dann...?
 
das text := '3.14';
musst du halt noch entsprechend anpassen! weil 3.14 ist immer eine zahl!
du musst das durch deine cells ersetzen

herrentor 2. Jun 2004 11:44

Re: wenn keine zahl, dann...?
 
hab mich schon gewundert, jetzt klappt es, besten dank.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:32 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