![]() |
Immer +1 nehmen
Guten Tag liebe Delphi-Praxis Community :-),
Der Client sendet an den Server in einem Timer immer eine 1 mit dem Code :
Code:
Es kommt auch perfekt an aber ich will es addieren mit dem Edit1.text hier mal der Code vom Server
procedure TForm1.Timer1Timer(Sender: TObject);
begin ClientSocket1.Socket.SendText('1'); end;
Code:
Es kommt der Fehler :
var
str: string; zahl1:real; zahl2:real; ergebnis:real; begin str := Socket.ReceiveText; zahl1 := strtofloat(edit1.text); zahl2 := strtofloat(str); ergebnis := zahl1+zahl2; edit3.text := floatToStr(ergebnis);
Code:
Wie kann mann soetwas besser umsetzen?
---------------------------
Project1 --------------------------- '' is not a valid floating point value. --------------------------- OK --------------------------- Möchte halt immer das es immer +1 in 4 Sekunden addiert. |
Re: Immer +1 nehmen
Zitat:
irgendwo muß ja nichts drin sein, lauf Fehlermeldung.
Delphi-Quellcode:
zahl1 := strtofloat(edit1.text);
zahl2 := strtofloat(str); |
Re: Immer +1 nehmen
Auch wenn ich eine GUI in einem Server nicht sehr sinnvoll sehe (Außer zu debugzwecken), so schau dir für dein problem mal StrToFloatDef() in der Onlinehilfe an. (Ein leerer String ist nunmal keine Zahl).
|
Re: Immer +1 nehmen
Der Fehler tritt auf bei zahl2 := strtofloat(str);
|
Re: Immer +1 nehmen
Hallo,
das sieht so aus, als würdest Du hier
Delphi-Quellcode:
nichts erhalten.
str := Socket.ReceiveText;
|
Re: Immer +1 nehmen
Zitat:
Sherlock |
Re: Immer +1 nehmen
Zitat:
Zitat:
|
Re: Immer +1 nehmen
Code:
ein bisschen umgeschrieben.
edit2.Text := str;
zahl1 := strtofloat(edit1.text); zahl2 := strtofloat(edit2.text); ergebnis := zahl1+zahl2; edit3.text := floatToStr(ergebnis); Im Edit3 steht dann immer nur 11 und dann kommt der Error. |
Re: Immer +1 nehmen
Hallo,
Zitat:
|
Re: Immer +1 nehmen
Entschuldigen sie das ich mich falsch ausgedrückt habe, der Fehler tritt auf bei der Berechnung.
Nach Edit3 kommt kein Code mehr. |
Re: Immer +1 nehmen
Delphi-Quellcode:
edit2.Text := str;
zahl1 := strtofloat(edit1.text); zahl2 := strtofloat(edit2.text); ergebnis := Inc(zahl1,zahl2); edit3.text := floatToStr(ergebnis); |
Re: Immer +1 nehmen
Hallo,
Zitat:
|
Re: Immer +1 nehmen
Ok es funktioniert mit dem Code :
Code:
Aber ich will das es immer +1 genommen wird und nicht auf 2 bleibt
str := Socket.ReceiveText;
zahl1 := strtofloat(edit1.text); zahl2 := strtofloat(str); ergebnis := zahl1+zahl2; edit3.text := floatToStr(ergebnis); In dem Client ist ein Timer von 4 Sekunden und jede 4te Sekunde sendet er eine 1 an den Server. Aber wie kann ich es realisieren das es immer +1 genommen wird? Mit freundlichen Grüßen, luckys41 |
Re: Immer +1 nehmen
Hi,
Zitat:
Delphi-Quellcode:
Gruß,
str := Socket.ReceiveText;
zahl1 := StrToFloatDef(str, 0); Anzahl := Anzahl + zahl1; Edit1.Text := FloatToStr(Anzahl); Sir Twist |
Re: Immer +1 nehmen
Danke, für die Antwort allerdings bleibt die 1 stehen in dem Edit Feld :/.
Ich verstehe es nicht mit der Anzahl es ist doch ein String und welche Zahl beinhaltet er? lg |
Re: Immer +1 nehmen
Wie du oben siehst wird ein "FloatToStr(Anzahl)" gemacht. Sprich Anzahl ist kein String, sondern ein Float. Anzahl muss an einer übergeordneten Stelle deklariert werden und nicht in der Methode selber. Sonst fängt er immer mit 0 an.
|
Re: Immer +1 nehmen
Hallo,
bitte teile uns mal mit, was da jeweils bei rauskommt:
Delphi-Quellcode:
Falls hier
str := Socket.ReceiveText;
ShowMessage(str); zahl1 := StrToFloatDef(str, 0); ShowMessage(FloatToStr(Zahl1)); Anzahl := Anzahl + zahl1; ShowMessage(FloatToStr(Anzahl)); Edit1.Text := FloatToStr(Anzahl); ShowMessage(Edit1.Text);
Delphi-Quellcode:
immer 0 rauskommt, ändere das mal bitte in
zahl1 := StrToFloatDef(str, 0);
ShowMessage(FloatToStr(Zahl1));
Delphi-Quellcode:
Sollte str immer leer sein, dann mache es so:
zahl1 := StrToFloatDef(str, 1);
ShowMessage(FloatToStr(Zahl1));
Delphi-Quellcode:
Edit1.Text := FloatToStr(StrToFloatDef(Edit1.Text,1));
|
Re: Immer +1 nehmen
Es kommt immer eine Messsage Box mit einer 1.
|
Re: Immer +1 nehmen
Hallo,
wo hast Du Anzahl definiert? Als globale Variabel oder in der Methode, die die Addition vornehmen soll? Anzahl muss global definiert sein und einmal mit 0 initialisiert werden. Oder probiere mal, ob Du ausschließlich mit
Delphi-Quellcode:
auskommst. Von der Aufgabenstellung her, sollte das eigentlich reichen.
Edit1.Text := FloatToStr(StrToFloatDef(Edit1.Text,1) + 1);
|
Re: Immer +1 nehmen
Also im einfachsten falle wäre es so:
x : x + 1 |
Re: Immer +1 nehmen
Zitat:
Nein, im Ernst - warum nicht so?
Delphi-Quellcode:
Edit: danke m²
var a:integer;
.... begin str := Socket.ReceiveText; if str='1' then inc(a); ShowMessage(inttostr(a)); end |
Re: Immer +1 nehmen
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:02 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