Automatisches Rechnen
Re: Automatisches Rechnen
dann kommt unit1.pas(65,24) Error: Wrong number of parameters specified for call to "FloatToStr"
selbe Zeile ^^ ich glaub ich starre heut schon zulange hier rauf
selbe Zeile ^^ ich glaub ich starre heut schon zulange hier rauf
Re: Automatisches Rechnen
es funkst auch so .. ist aber nicht perfekt, vorallem wen du statt eine zahle einen buchstaben eingibst
Hier noch ein Tip zum TryStrToFloat
http://www.delphipraxis.net/92520-ueber ... cht-2.html
Ich muss leider gehen. Schönen Nachmittag noch.
Freundliche Grüsse
exc-jdbi
Code: Alles auswählen
begin
try
TryStrToFloat(edit1.caption,dblZahl);
Label9.Caption:=FloatToStr((dblZahl),ffNumber,12,3);
except
Edit1.caption:='Bitte nummer eingeben';
end
end;
Hier noch ein Tip zum TryStrToFloat
http://www.delphipraxis.net/92520-ueber ... cht-2.html
Ich muss leider gehen. Schönen Nachmittag noch.
Freundliche Grüsse
exc-jdbi
Zuletzt geändert von exc-jdbi am So 31. Aug 2014, 15:33, insgesamt 1-mal geändert.
Re: Automatisches Rechnen
selber fehler leider
irgendwas is hier verkehrt glaube ich fange nochmal ganz von vorn an
manchmal hilft das ja
jetzt zeit er mir das Label9.Caption:=FloatToStr((dblZahl),ffNumber,12,3); als fehler an


jetzt zeit er mir das Label9.Caption:=FloatToStr((dblZahl),ffNumber,12,3); als fehler an
Re: Automatisches Rechnen
Ich danke dir ganz ganu dolle für deine Hilfe ^^ ich habs entlich 
so funktioniert es genau so wie es sein soll

Code: Alles auswählen
procedure TForm1.Edit1Change(Sender: TObject);
begin
if not TryStrToFloat(edit1.text,h) then
begin
edit1.text:='0';
end;
begin
ergebnis:=StrToFloat(Edit1.Text)*1200;
Label9.Caption:=FloatToStr(ergebnis);
end;
end;
so funktioniert es genau so wie es sein soll
Re: Automatisches Rechnen
So ich habs jetzt auch noch schnell gemacht.
Hier meine Variante:
Freundliche Grüsse
exc-jdbi
Hier meine Variante:
Code: Alles auswählen
unit Unit1;
{$mode objfpc}{$H+}
interface
uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;
type TForm1 = class(TForm)
Edit1: TEdit;
Label1: TLabel;
procedure Edit1Change(Sender: TObject);
function Berechnung(dbl:double):double;
private
public
end;
var Form1: TForm1;
implementation
{$R *.lfm}
procedure TForm1.Edit1Change(Sender: TObject);
var strEdit:string;
dblZahl:Double;
notEvent:TNotifyEvent;
begin
if trim(Edit1.Text)='' then
if length(trim(self.Edit1.Text))=0 then
begin
notEvent:=self.Edit1.OnChange;
self.Edit1.OnChange:=nil;
self.Edit1.Text:='0';
self.label1.caption:=self.Edit1.Text;
self.Edit1.OnChange:=notEvent;
exit;
end;
if length(trim(self.Edit1.Text))>0 then
begin
strEdit:=trim(self.Edit1.Text);
if TryStrToFloat(strEdit,dblZahl) then
begin
self.Label1.caption:=FloatToStrF(Berechnung(dblZahl),ffNumber,12,3);
end
else self.Label1.caption:='#Nummer#';
end;
end;
function TForm1.Berechnung(dbl: double): double;
begin
result:=dbl*2;
end;
end.
exc-jdbi
Re: Automatisches Rechnen
Guten Abend exc-jdbi, 
ich habs gestern Nachmittag irgendwie selbst hin bekommen gehabt
also zumindest macht er das was er soll und es kommt kein Fehler.
So sieht das mom bei mir aus....
so nun hab ich aber irgendwie ein problem mit Lazarus
ich hau das ding gleich eine rein ^^
Eigentlich soll Edit 11 nix anderes machen als die Summe der anderen Edits ausgeben. Keine Fehlermeldung beim compilieren und nix. aber er gibt einfach nix aus 
also das Edit 11 bleibt leer
die Ratte hab schon wie wild drauf rumm geklickt
aber nix
mfg Andreas

ich habs gestern Nachmittag irgendwie selbst hin bekommen gehabt

So sieht das mom bei mir aus....
Code: Alles auswählen
procedure TForm1.Edit1Change(Sender: TObject);
begin
if not TryStrToFloat(edit1.text,h) then
begin
edit1.text:='0';
end;
begin
ergebnis:=StrToFloat(Edit1.Text)*1200;
Edit6.Text:=FloatToStr(ergebnis);
Edit6.Text:=Format('%0.0n',[ergebnis]);
end;
end;
so nun hab ich aber irgendwie ein problem mit Lazarus

Code: Alles auswählen
procedure TForm1.Edit11Change(Sender: TObject);
var
a,b,c,d,e,f:real;
begin
if not TryStrToFloat(edit11.text,h) then
begin
edit11.text:='0';
end;
begin
a:=StrToFloat(Edit6.Text);
b:=StrToFloat(Edit7.Text);
c:=StrToFloat(Edit8.Text);
d:=StrToFloat(Edit9.Text);
e:=StrToFloat(Edit10.Text);
f:=a+b+c+d+e;
Edit11.Text:=FloatToStr(f);
Edit11.Text:=Format('%0.0n',[f]);
end;
end;

also das Edit 11 bleibt leer


mfg Andreas
Re: Automatisches Rechnen
Du musst wilder clicken!!
Tausend mal pro Minute mindestens!
Kann es sein, dass Edit11.OnChange nicht das geeignete Ereignis ist?
Tausend mal pro Minute mindestens!

Kann es sein, dass Edit11.OnChange nicht das geeignete Ereignis ist?
Re: Automatisches Rechnen
hab ich auch schon überlegt aber weiß auch nicht mehr was ich noch nehmen soll ^^ nur das change bounce oder wie das jetzt heißt vielleicht noch
- m.fuchs
- Lazarusforum e. V.
- Beiträge: 2808
- Registriert: Fr 22. Sep 2006, 19:32
- OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
- CPU-Target: x86, x64, arm
- Wohnort: Berlin
- Kontaktdaten:
Re: Automatisches Rechnen
Naja, mein Tipp wäre jetzt: schreib dir erst einmal sauber auf, was du erreichen möchtest. Und dann teilst du uns das mit. Bitte auch sauber geschrieben und in verständlichem Deutsch.
Dann können wir dir vielleicht helfen.
Irgendwie haben sich deine Anforderung mit jeder Nachricht geändert. Vielleicht sind deine Beiträge auch nur auf Grund der Unleserlichkeit für die anderen unverständlich. Und vielleicht planst und programmierst du so, wie du auch Texte schreibst. In all diesen Fällen wirst du nicht zum Ziel kommen.
Dann können wir dir vielleicht helfen.
Irgendwie haben sich deine Anforderung mit jeder Nachricht geändert. Vielleicht sind deine Beiträge auch nur auf Grund der Unleserlichkeit für die anderen unverständlich. Und vielleicht planst und programmierst du so, wie du auch Texte schreibst. In all diesen Fällen wirst du nicht zum Ziel kommen.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de
Re: Automatisches Rechnen
Guten Abend Andreas
Ich kann m.fuchs nur recht geben. Also nicht das ich niemandem zutraue, dass er eine Vorstellung komplett aus dem "Kopf" kann.
Aber in der Anfangsphase wäre es sicher ziemlich sinnvoll sich kurz hinzusetzen, und ein kleines Konzept zu erarbeiten. Dies ist nähmlich meistens schneller gemacht, als das Programm selber. Ansonsten ist man ständig am improvisieren und man sieht das Ziel nicht klar vor Augen.
Hier eine Möglichkeit wie ich es machen würde. Ungetestet
Sofern du die Summe im Label11 willst, so nimm einfach das Label11 dafür.
Vorteilhaft wäre auch die OnChange der Edit11 zu unterdrücken. Es kommt halt darauf an, was du willst machen.
Freundliche Grüsse
exc-jdbi
Ich kann m.fuchs nur recht geben. Also nicht das ich niemandem zutraue, dass er eine Vorstellung komplett aus dem "Kopf" kann.
Aber in der Anfangsphase wäre es sicher ziemlich sinnvoll sich kurz hinzusetzen, und ein kleines Konzept zu erarbeiten. Dies ist nähmlich meistens schneller gemacht, als das Programm selber. Ansonsten ist man ständig am improvisieren und man sieht das Ziel nicht klar vor Augen.
Hier eine Möglichkeit wie ich es machen würde. Ungetestet
Sofern du die Summe im Label11 willst, so nimm einfach das Label11 dafür.
Vorteilhaft wäre auch die OnChange der Edit11 zu unterdrücken. Es kommt halt darauf an, was du willst machen.
Code: Alles auswählen
procedure TForm1.Edit1Change(Sender: TObject);
begin
//Deine Berechnung
.......
.......
self.Edit11.Text:=FloatToStrF(CalcAllEdits,ffNumber,12,3);
end;
procedure TForm1.Edit2Change(Sender: TObject);
begin
//Deine Berechnung
.......
.......
self.Edit11.Text:=FloatToStrF(CalcAllEdits,ffNumber,12,3);
end;
.....
.....
function TForm1.CalcAllEdits:Double;
begin
result:=IsNumericZero(trim(self.Edit1.Text))+
IsNumericZero(trim(self.Edit2.Text))+
IsNumericZero(trim(self.Edit3.Text))+
.........
.........
IsNumericZero(trim(self.Edit10.Text));
end;
function TForm1.IsNumericZero(s: string):Double;
var dbl:Double;
begin
if TryStrToFloat(s,dbl) then
begin
result:=dlb;
end
else result:=0;
end;
exc-jdbi
Re: Automatisches Rechnen
Danke erst mal für deine Hilfe,
So falls ich mich nicht verständlich ausdrücken kann probier ich das noch einmal.
Also das Program im groben habe ich schon in einer Excel Datei fertig. Daher weiß ich genau wie es werden soll und aussehen soll.
Im groben Zusammengefasst: Es soll Werte zusammen rechnen ( Für unseres Game was wir spielen sind das dann die Verluste). Die soll es dann wie schon geschehen in Ressourcen umwandeln. Was er ja auch macht, die Tausender Trennung macht er jetzt auch super ( was gar nicht so leicht war ^^ aber das kannte ich noch so halb von damals)
Nun wollte ich in Edit11 einfach die Edit's 6-10 zusammen rechnen (also alle Verluste in Ressourcen) und die Summe daraus bilden. Und dann ist das Programm eigentlich schon fast fertig
der Rest ist dann nichts anderes wie von Edit1 bis Edit10 geschehen.
Früher kannte ich das mal so bzw is mir so das man Edits einfach zusammen rechnen konnte indem man jeden eine Variable zuweist und diese dann addiert. Ich will ja die Ergebnisse aus Edit6-10 zusammen rechnen. Deswegen hatte ich das so angefangen:
var a,b,c,d,e,f: real;
(Jede Variable ein Edit zu gewiesen) und dann halt f:=a+b+c+d+e;
Das ganze habe ich dann wieder umgewandelt in ein String Wert der mir ausgegeben werden sollte in Edit1.Text. Und da ist der Fehler denn es wird nichts ausgegeben. Es ist kein Fehler im Code laut Compiler und ich find den einfach nicht. Wahrscheinlich so einfach aber vielleicht wisst ihr ja selbst, die einfachsten Sachen sind manchmal die was am längsten dauern.
(Der Plan bzw das Konzept ist schon vor ein paar Monaten in einer Excel Datei passiert, ich finde viel besser kann man eine Vorbereitung eigentlich nicht machen)
mfg Andreas und eine schöne Nacht euch allen
So falls ich mich nicht verständlich ausdrücken kann probier ich das noch einmal.
Also das Program im groben habe ich schon in einer Excel Datei fertig. Daher weiß ich genau wie es werden soll und aussehen soll.
Im groben Zusammengefasst: Es soll Werte zusammen rechnen ( Für unseres Game was wir spielen sind das dann die Verluste). Die soll es dann wie schon geschehen in Ressourcen umwandeln. Was er ja auch macht, die Tausender Trennung macht er jetzt auch super ( was gar nicht so leicht war ^^ aber das kannte ich noch so halb von damals)
Nun wollte ich in Edit11 einfach die Edit's 6-10 zusammen rechnen (also alle Verluste in Ressourcen) und die Summe daraus bilden. Und dann ist das Programm eigentlich schon fast fertig

Früher kannte ich das mal so bzw is mir so das man Edits einfach zusammen rechnen konnte indem man jeden eine Variable zuweist und diese dann addiert. Ich will ja die Ergebnisse aus Edit6-10 zusammen rechnen. Deswegen hatte ich das so angefangen:
var a,b,c,d,e,f: real;
(Jede Variable ein Edit zu gewiesen) und dann halt f:=a+b+c+d+e;
Das ganze habe ich dann wieder umgewandelt in ein String Wert der mir ausgegeben werden sollte in Edit1.Text. Und da ist der Fehler denn es wird nichts ausgegeben. Es ist kein Fehler im Code laut Compiler und ich find den einfach nicht. Wahrscheinlich so einfach aber vielleicht wisst ihr ja selbst, die einfachsten Sachen sind manchmal die was am längsten dauern.
(Der Plan bzw das Konzept ist schon vor ein paar Monaten in einer Excel Datei passiert, ich finde viel besser kann man eine Vorbereitung eigentlich nicht machen)
mfg Andreas und eine schöne Nacht euch allen
Re: Automatisches Rechnen
Rechnen ja, aber wann und wo?TheBeer hat geschrieben:var a,b,c,d,e,f: real;
(Jede Variable ein Edit zu gewiesen) und dann halt f:=a+b+c+d+e;
Ein Programm braucht eine Logik, einen Programmablauf. Und dafür hast du offenbar kein Konzept, dein Excell nützt dir dabei nichts. Lerne Programmieren.
-
- Beiträge: 2013
- Registriert: Do 16. Okt 2008, 10:22
- OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
- CPU-Target: x86,x64,ARM
Re: Automatisches Rechnen
Ich empfehle hier nochmal das bereits in der Delphi-PRAXIS genannte erste Kapitel von "Programmieren macht Spass!" zur Lektüre.
http://www.delphipraxis.net/181630-auto ... ost1270318
http://www.delphipraxis.net/181630-auto ... ost1270318
Re: Automatisches Rechnen
Guten Morgen
Also ich finde das nur peinlich.
Die selbe Frage an mehreren Orten gleichzeitig zu stellen. Wenn ich das gesehen hätte, hätte ich mir die Mühe gespart weitere Antworten zu schreiben. Ich seh nähmlich nicht ein, warum sich noch mehr Forums mit diesem Thema beschäftigen sollen.
@Andreas. Ich denke du findest sicher einen Weg, dein Vorhaben jetzt umzusetzten.
Freundliche Grüsse
Exc-jdbi
Also ich finde das nur peinlich.
Die selbe Frage an mehreren Orten gleichzeitig zu stellen. Wenn ich das gesehen hätte, hätte ich mir die Mühe gespart weitere Antworten zu schreiben. Ich seh nähmlich nicht ein, warum sich noch mehr Forums mit diesem Thema beschäftigen sollen.
@Andreas. Ich denke du findest sicher einen Weg, dein Vorhaben jetzt umzusetzten.
Freundliche Grüsse
Exc-jdbi
- m.fuchs
- Lazarusforum e. V.
- Beiträge: 2808
- Registriert: Fr 22. Sep 2006, 19:32
- OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
- CPU-Target: x86, x64, arm
- Wohnort: Berlin
- Kontaktdaten:
Re: Automatisches Rechnen
Erst einmal gebe ich exc-jdbi völlig recht. Und wenn du schon die Frage in einem weiteren Forum gestellt hast, dann schreib das wenigstens dazu.
Nun zu einem Zitat von dir:
Mal dir dein Formular auf ein Blatt Papier. Schreib darunter alles auf was passieren soll, wenn der Benutzer etwas macht. In detaillierter Form.
Beispiel:([1] ich vermute mal, dass du addieren mit dem Ausdruck "zusammenrechnen" meinst)
Dann (und nur dann) hast du tatsächlich einen Plan wie dein Programm funktionieren wird. In späteren Zeiten, wenn du mehr Erfahrung hast, kannst du diese Arbeitsschritte auch weniger ausführlich formulieren. Aber bis dahin ist es noch eine Weile.
Nun zu einem Zitat von dir:
Das bezweifele ich. Du möchtest in deinem Edit11 ein Ergebnis haben und willst dafür das Ereignis nutzen, was bei Änderungen in Edit11 ausgelöst wird. Dann klickst du auch noch wild darin herum und erwartest das etwas passiert. Das klingt für mich nach völliger Planlosigkeit.TheBeer hat geschrieben:[...]Daher weiß ich genau wie es werden soll und aussehen soll.[...]
Mal dir dein Formular auf ein Blatt Papier. Schreib darunter alles auf was passieren soll, wenn der Benutzer etwas macht. In detaillierter Form.
Beispiel:
Code: Alles auswählen
Wenn der Benutzer eine Eingabe in Edit1, Edit2 oder Edit3 macht...
...sollen die Eingabe darauf geprüft werden, ob sie eine Zahl ist.
Wenn die Eingabe keine Zahl ist...
...soll der Benutzer eine Fehlermeldung bekommen und der Inhalt vom jeweiligen Edit-Feld auf '0' gesetzt werden.
Wenn sich der Inhalt von Edit1, Edit2 oder Edit3 ändert...
...sollen die Inhalte in Zahlen umgewandelt und addiert[1] werden. Das Ergebnis soll in den Inhalt von Edit 4 geschrieben werden.
[...]
Dann (und nur dann) hast du tatsächlich einen Plan wie dein Programm funktionieren wird. In späteren Zeiten, wenn du mehr Erfahrung hast, kannst du diese Arbeitsschritte auch weniger ausführlich formulieren. Aber bis dahin ist es noch eine Weile.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de