AGB  ·  Datenschutz  ·  Impressum  







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

Automatisches Rechnen

Ein Thema von TheBeer · begonnen am 30. Aug 2014 · letzter Beitrag vom 30. Aug 2014
Antwort Antwort
Seite 1 von 2  1 2      
TheBeer

Registriert seit: 30. Aug 2014
6 Beiträge
 
#1

Automatisches Rechnen

  Alt 30. Aug 2014, 16:01
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
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#2

AW: Automatisches Rechnen

  Alt 30. Aug 2014, 16:07
Delphi-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 // <<<<<<<<<<<<<<<<<<<< bei einem IF gibt es auch immer ein THEN

  Label9.Caption:=FloatToStr(ergebnis);


end;
Du hast IF Abfrage gestellt, aber weder Vergleich, noch THEN angegeben.

Falls das IF nur so reingerutscht ist, raus damit.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

AW: Automatisches Rechnen

  Alt 30. Aug 2014, 16:12
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
Markus Kinzler
  Mit Zitat antworten Zitat
TheBeer

Registriert seit: 30. Aug 2014
6 Beiträge
 
#4

AW: Automatisches Rechnen

  Alt 30. Aug 2014, 16:14
ah danke dir, warum mir das nicht aufgefallen ist


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
  Mit Zitat antworten Zitat
TheBeer

Registriert seit: 30. Aug 2014
6 Beiträge
 
#5

AW: Automatisches Rechnen

  Alt 30. Aug 2014, 16:18
@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
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#6

AW: Automatisches Rechnen

  Alt 30. Aug 2014, 16:33
procedure Edit1Change(Sender: TObject);
Zitat:
unit1.pas(33,15) Error: Forward declaration not solved "TForm1.Edit1Change(TObject);"
Es wird, wie es in der Fehlermeldung auch drin steht, nach der Methode TForm1.Edit1Change gesucht, welche aber nicht vorhanden ist, da du nur eine Prozedur TForm1.Edit1Change deklariert hast.


Zitat:
hab Delphi leider nicht mehr
Was war's denn für ein Delphi und wieso nicht mehr?
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
TheBeer

Registriert seit: 30. Aug 2014
6 Beiträge
 
#7

AW: Automatisches Rechnen

  Alt 30. Aug 2014, 16:37
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.
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#8

AW: Automatisches Rechnen

  Alt 30. Aug 2014, 16:40
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:
  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.')
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.
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#9

AW: Automatisches Rechnen

  Alt 30. Aug 2014, 16:48
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.
Hier eine Anleitung wie man Delphi 7 auf Windows 7 zum laufen kriegt: http://www.dailymotion.com/video/x1k...minuten_school

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.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#10

AW: Automatisches Rechnen

  Alt 30. Aug 2014, 16:50
Zitat:
DefaultFormatSettings.ThousandSeparator:='.';
Es ist nicht sonderlich gut, wenn man an globalen Einstellungen rumspielt, es sei denn das soll wirklich für das komplette Programm dauerhaft umgestellt werden. Dann aber einmal beim Programmstart und nicht immer wieder.

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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 04:12 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