![]() |
Automatisches Rechnen
Hallo erst mal an alle, ich hab nach sehr langer Zeit ( ca 4 Jahre) mal wieder angefangen in Delphi bzw jetzt in Lazarus ( hab Delphi leider nicht mehr :( und das XE6 is zu teuer) etwas zu schreiben.
Nun habe ich ein Problem und komme seit einer Stunde nicht mehr weiter vielleicht geht der Weg hier ja schneller :) Und zwar möchte ich im Edit1 Feld eine Zahl eingeben und er soll automatisch berechnen und sie im Label 9 wieder Ausgeben. Label zur Ausgabe darum weil der Wert nicht verändert werden soll. Es ist für ein Spiel, man könnte auch ein Edit als ausgabe nehmen aber ein Label sieht ein bischen besser aus finde ich. Hier mal der Quellcode: procedure TForm1.Label9Click(Sender: TObject); var a,ergebnis: real; begin a:=StrToFloat(Edit1.Text); ergebnis:=StrToFloat(Label9.Caption); Edit1.Text:=''; ergebnis:=a*1200; DefaultFormatSettings.ThousandSeparator:='.'; if Edit1.Text = '' then begin a:=ergebnis/1200; end else if Label9.Caption:=FloatToStr(ergebnis); end; So nun gibt der mir immer folgenden Fehler an: unit1.pas(96,39) Fatal: Syntax error, "THEN" expected but ";" found ich weiß nicht mehr was er von mir da will, hab die Zeile mal fett makiert damit ihr das besser erkennen könnt. danke schon mal im vorraus mfg Andreas |
AW: Automatisches Rechnen
Zitat:
Falls das IF nur so reingerutscht ist, raus damit. |
AW: Automatisches Rechnen
Zudem würde ich die Eingabe nicht ungeprüft in einen Float wandeln, da man ja in den edit alles mögliche eingeben kann.
Statt StrToFloat() besser TryStrToFloat() oder StrToFloatDef() verwenden |
AW: Automatisches Rechnen
ah danke dir, warum mir das nicht aufgefallen ist :D
aber nun zeigt der ein neuen fehler an: procedure Edit1Change(Sender: TObject); Fehlercode: unit1.pas(33,15) Error: Forward declaration not solved "TForm1.Edit1Change(TObject);" man kann doch anscheinend ganz schön viel verlernen :( |
AW: Automatisches Rechnen
@markus: das vielleicht gar nicht so eine verkehrte Idee aber die beiden Begriffe sagen mir jetzt mal gar nichts und da Lazarus auch keine Vorschläge macht würde ich nicht mal wissen wie ich das später dann wieder ausgegeben bekomme also wieder zurück in das Label
|
AW: Automatisches Rechnen
Delphi-Quellcode:
procedure Edit1Change(Sender: TObject);
Zitat:
Zitat:
|
AW: Automatisches Rechnen
danke für die information :)
es war mal Delphi 6 und ich hab die CD beim Umzug oder sonst was verbummelt. Habe mir dann zwar Delphi 7 geladen gestern aber das wird von Windoof 7 nicht unterstützt und selbst wenn ich alles umstelle stürtzt das immer ab beim compilieren. Hatte mich nach langen gelese bei onkel google für Lazarus entschieden gestern abend und muss jetzt nach 5h sagen warum nicht ist nicht viel schlechter außer das man die Vorschläge nicht mehr hat und ein paar andere kleinigkeiten weg sind. |
AW: Automatisches Rechnen
Was mkinzler sagen will ist, dass es riskant ist anzunehmen, dass in einem Edit-Feld immer eine Zahl steht. Was passiert wenn dort mal keine Zahl steht? Dann gibt es eine Fehlermeldung und u. U. Programmabbruch.
Falls dir TryStrToFloat nichts sagt, mit StrToFloatDef kann man auch eine Prüfung auf korrekte Zahl machen:
Delphi-Quellcode:
Wenn in Edit-Feld eine Zahl steht, ist die IF Abfrage TRUE. Steht keine Zahl drinn, gibt das linke StrToFloatDef als Ersatz eine 0, das rechte -1. Das Ergebnis ist FALSE.
if StrToFloatDef(Edit1.Text, 0) = StrToFloatDef(Edit1.Text, -1) then
ShowMessage('Alles klar, in Edit1 steht eine Zahl.') else ShowMessage('Halt, in Edit1 steht ein Text oder eine fehlerhafte Zahl.') |
AW: Automatisches Rechnen
Zitat:
![]() Der Kollege jaenicke hat auch eine Anleitung geschrieben wie es geht. Ob das Tutorial auch hier veröffentlicht wurde weiß ich nicht, aber in der entwickler-ecke.de steht es auf jeden Fall drin. Es hat noch paar Tipps mehr als das Video. |
AW: Automatisches Rechnen
Zitat:
Am Besten du verwendest eine eigene TFormatSettings-Variable, welche dann als Parameter z.B. an deine StrToFloat und FloatToStr übergeben wird. Und es ist natürlich auch unglücklich, daß dein FormatSettings zwischen deinen beiden StrToFloat und FloatToStr steht, denn beim ersten Aufruf wäre ja das FormatSettings vom StrToFloat eventuell noch falsch. Bei Delphi 6 ist das jetzt ein kleines Problem. Wenn du es damals bei Borland registriert hattest, womit deine Lizenz also bekannt wäre, dann könnte man bestimmt noch was über die Community machen. Embarcadero selber kann keine Setups vor Delphi 7 bereitstellen und verweist dann meistens auf uns, wo es noch jemandenden gibt, der ein Setup besitzt. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:55 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 by Thomas Breitkreuz