![]() |
wenn keine zahl, dann...?
guten morgen.
ich wüsste gerne, wie die bezeichnung für zahl ist? wenn zelle ungleich zahl dann...
Code:
danke im voraus.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; |
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 |
Re: wenn keine zahl, dann...?
wie soll ich denn {ist keine zahl} ausdrücken?
|
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; |
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 |
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:
stefan
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; |
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 |
Re: wenn keine zahl, dann...?
Zitat:
|
Re: wenn keine zahl, dann...?
Aber sollte man als Programmierer nicht grade auf das Unwahrscheinliche vorbereitet sein...?! :zwinker:
|
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 |
Re: wenn keine zahl, dann...?
das klappt noch nicht so. außerdem wird "was" niemals benutzt.
Code:
so kommt die nachricht, obwohl zahlen drin stehen.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; |
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) |
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! |
Re: wenn keine zahl, dann...?
Kalr kommt die immer:
Delphi-Quellcode:
Wenn der code 0 ist(if code = 0), dann kommt die Nachricht(then Showmessage(...)), andernfalls (else)kommt die Nachricht auch (Showmessage(...)).
if (code = 0) then
begin ShowMessage(' Sie müssen noch Werte eingeben! '); end else begin ShowMessage(' Sie müssen noch Werte eingeben! '); exit end; Soweit klar geworden? :zwinker: Und BITTE! Nehmt doch kein real mehr, sondern single, double, extended usw... |
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.
|
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.
|
Re: wenn keine zahl, dann...?
wo soll er denn "rausspringen" :gruebel:
aus der prozedur/funktiktion ? |
Re: wenn keine zahl, dann...?
wenn keine zahl eingegeben wurde soll er die prozedur abbrechen, weil ja sonst der fehler auftritt, keine gleitkommazahl etc.
|
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 |
Re: wenn keine zahl, dann...?
hab mich schon gewundert, jetzt klappt es, besten dank.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:11 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