Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Hilfe mit value Befehl (https://www.delphipraxis.net/71685-hilfe-mit-value-befehl.html)

Maeuschen 19. Jun 2006 15:04


Hilfe mit value Befehl
 
Hallo zusammen!

letztens hat uns unser Lehrer gezeigt, wie man ein Programm absturzsicher machen kann. Verstanden hat es leider keiner und den Quelltext hat er auch nicht rausgegeben "Probiert das mal alleine". Prima, wie soll ich denn etwas programmieren, wenn ich nichteinmal den Ansatz kenne?

Das einzige, was ich mitbekam war, dass er irgendetwas mit Value schwafelte, mehr nicht.

Mein konkretes Problem ist jetzt: Was muss ich in den Quelltext eingeben, dass mit mein Programm nicht abstürzt, wenn ich ins Edit1-Feld nicht "4", sondern "vier" eingebe?

Danke an alle, die bis hier hergelesen haben und mir versuchen zu helfen :)

mkinzler 19. Jun 2006 15:07

Re: Hilfe mit value Befehl
 
In eine Edit-Feld kannst du problemlos "vier" eingeben, da es ja einen String aufnimmt.
Ich weiß nicht, von was dein Lehrer geredet hat, ich könnte mir vorstellen, das er die .value Eigenschaft von Datenbankzugriffsobjekten gemeint hat welche Varianten sind.

[Edit: oder er hat den val()-Befeh gemeint]

Maeuschen 19. Jun 2006 15:11

Re: Hilfe mit value Befehl
 
Achso, sorry, das hätte ich erwähnen sollen :oops:
Die zahlen der beiden Editfelder muss man Multiplizieren, d.h ich habe ja schon stehen:

Edit1.text:=strtofloat(z1);
Edit2.text:=strtofloat(z2);
Ergebnis:=(z1*z2);

droppi 19. Jun 2006 15:17

Re: Hilfe mit value Befehl
 
Aber wenn du die Zahlen multiplizieren willst muss das dann nich heißen:
Delphi-Quellcode:
z1:=strtofloat(Edit1.text);
z2:=strtofloat(Edit2.text);
Ergebnis:=(z1*z2);
Wenn du abfragen willst ob ein eingegebener Wert keine Zahl ist würd ich dir if...then... Empfehlen.

mkinzler 19. Jun 2006 15:17

Re: Hilfe mit value Befehl
 
Zitat:

Delphi-Quellcode:
Edit1.text:=strtofloat(z1);
Edit2.text:=strtofloat(z2);
Ergebnis:=(z1*z2);

geht wohl nicht:

Delphi-Quellcode:
z1 := strtofloat(Edit1.text);
z2 := strtofloat(Edit1.text);
Ergebnis := (z1*z2);
müßte es heißen oder besser

Delphi-Quellcode:
if (TryStrToFloat( Edit1.Text, z1)) and (TryStrToFloat( Edit2.Text, z2)) then
   Ergebnis:=(z1*z2)
else
   //Fehler;

droppi 19. Jun 2006 15:22

Re: Hilfe mit value Befehl
 
Ach genau :wall: . Naj wird Zeit dass es wieder Wochenende wird.
Jetzt hab ich doch gedacht du willst mich verbessrn naja.

Maeuschen 19. Jun 2006 15:26

Re: Hilfe mit value Befehl
 
Delphi-Quellcode:
z1:=strtofloat(Edit1.text);
z2:=strtofloat(Edit2.text);
summe:=z1*z2;
Genau das steht jetzt bei mir ^^"

@mkinzler

Ist dein letzter Code jetzt der Code, der zum absturzsicheren Programm führt?

mkinzler 19. Jun 2006 15:29

Re: Hilfe mit value Befehl
 
Ja. Zumindest bezüglich dieser Typumwandlungen

nailor 19. Jun 2006 15:33

Re: Hilfe mit value Befehl
 
also ich würde dir die verwendung eines try/except-Blockes empfehlen (falls ich dein Problem richtig verstanden habe, du wirst nicht gerade mit Informationen um dich)

andimx 19. Jun 2006 15:34

Re: Hilfe mit value Befehl
 
Man kann auch das OnKeyPress Event abfangen den Key Code (Wert der gedrückten Taste) analysieren:

Delphi-Quellcode:
procedure TfrmMain.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
 if not (Key in [#46, #48..#57, #8]) then Key := #0;
end;
Gruß
Andi


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:06 Uhr.
Seite 1 von 3  1 23      

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