Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Probleme mit einem Rechner (https://www.delphipraxis.net/100825-probleme-mit-einem-rechner.html)

Patrick162 4. Okt 2007 12:51

Re: Probleme mit einem Rechner
 
Danke für alles, jetzt klappt es :)

Delphi-Quellcode:
ergebnis1 := Format('%.2f',[2*  pi * r]);
Label2.Caption := ergebnis1;
Jetzt muss ich nur nochmal alles durchschaun wofür z.B. das
Delphi-Quellcode:
Format('%.2f',
gut ist.



BTW.:

Naja, wir haben keinen Informatikunterricht in der Schule :(
Habe mir auch schon das Buch: Delphi für Kids besorgt.

und mir hat auch shcon jmd verscuht zu helfen mit dem Rechner, aber owohl er eigentlich sehr gut ist, hat er es trotzdem nicht geschafft...

brinkee 4. Okt 2007 12:55

Re: Probleme mit einem Rechner
 
Hehe, 1,34 ist natürlich nicht so ganz passend ;) Meine Monte-Carlo-Simulation versucht mir schon den ganzen Tag zu erklören, dass Pi 2.69 ist, aber hey... ;)

LG, Markus

Patrick162 4. Okt 2007 14:56

Re: Probleme mit einem Rechner
 
Nächstes Problem:


'' is not a valid floating point value



Habe jetzt schon diverse Sachen ausprobiert, aber wieder keinen Erfolg gehabt :cry:

Ich hoffe ihr könnt mir jetzt noch einmal helfen... :oops:

Hier die Source:


Delphi-Quellcode:
unit Kreisberechnung;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Button1: TButton;
    Button2: TButton;
    ComboBox1: TComboBox;
    procedure Button1Click(Sender: TObject);
    procedure ComboBox1Change(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  r, u, d, A, r2: extended;
  ergebnis1, ergebnis2, ergebnis3, ergebnis4: string;
  pi: extended;
  lol: integer;


implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin

r := strtofloat(Edit1.Text);
u := strtofloat(Edit2.text);
d := strtofloat(Edit3.Text);
A := strtofloat(Edit4.Text);
pi := 3.14159265358;

if lol = 1 then
ergebnis2 := Format('%.2f',[2* pi * r]);
Label2.Caption := ergebnis2;
ergebnis3 := Format('%.2f',[2* r]);
Label3.Caption := ergebnis3;
ergebnis4 := Format('%.2f',[pi* r * r]);
Label4.Caption := ergebnis4;

if lol = 2 then
ergebnis1 := Format('%.2f',[u / 2 * pi]);
Label1.Caption := ergebnis1;
r2 := strtoint(ergebnis1);
ergebnis3 := Format('%.2f',[r2 * 2]);
Label3.Caption := ergebnis3;
ergebnis4 := Format('%.2f',[pi* r2 *r2]);
Label4.Caption := ergebnis4;

if lol = 3 then
ergebnis1 := Format('%.2f',[d / 2]);
Label1.Caption := ergebnis1;
r2 := strtoint(ergebnis1);
ergebnis2 := Format('%.2f',[2* pi * r2]);
Label2.Caption := ergebnis2;
ergebnis4 := Format('%.2f',[pi* r2 * r2]);
Label4.Caption := ergebnis4;

if lol = 4 then
ergebnis1 := Format('%.2f',[pi * A / 2]);
Label1.Caption := ergebnis1;
r2 := strtoint(ergebnis1);
ergebnis2 := Format('%.2f',[2* pi * r]);
Label2.Caption := ergebnis2;
ergebnis3 := Format('%.2f',[r2* 2]);


end;
procedure TForm1.ComboBox1Change(Sender: TObject);
begin

case Combobox1.ItemIndex of
0: lol := 1;
1: lol := 2;
2: lol := 3;
3: lol := 4;
end;

if lol = 1 then
Edit1.Enabled := True;

if lol = 2 then
Edit2.Enabled := True;

if lol = 3 then
Edit3.enabled := true;

if lol = 4 then
Edit4.enabled := True


end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Edit1.Enabled := False;
Edit2.Enabled := False;
Edit3.Enabled := False;
Edit4.Enabled := False;
end;

end.





Danke schön schonmal im voraus!
Greets

DeddyH 4. Okt 2007 14:59

Re: Probleme mit einem Rechner
 
Hast Du auch in alle Edits eine Fließkommazahl eingetragen?

Matze 4. Okt 2007 15:01

Re: Probleme mit einem Rechner
 
Kann es sein, dass in einem der Edits nichts steht? Das musst du noch überprüfen (bsp. mit Delphi-Referenz durchsuchenTryStrToFloat).

Des weiteren wäre es evtl. sinnvoll, wenn du Delphi-Referenz durchsuchencase of anstelle der vielen if nutzen würdest, wie du es an anderen Stellen im Code auch machst:

Delphi-Quellcode:
case lol of
  1: begin

     end;
  2: begin

     end;
  // ...
end;
Auch das könntest du vereinfachen:

Delphi-Quellcode:
case Combobox1.ItemIndex of
0: lol := 1;
1: lol := 2;
2: lol := 3;
3: lol := 4;
end;
und zwar so:

Delphi-Quellcode:
lol := Combobox1.ItemIndex + 1;

brinkee 4. Okt 2007 15:03

Re: Probleme mit einem Rechner
 
Hi,

erstmal nicht:

Delphi-Quellcode:
if lol = 1 then
ergebnis2 := Format('%.2f',[2* pi * r]);
Label2.Caption := ergebnis2;
ergebnis3 := Format('%.2f',[2* r]);
Label3.Caption := ergebnis3;
ergebnis4 := Format('%.2f',[pi* r * r]);
Label4.Caption := ergebnis4;
sondern: in deinem Fall wohl eher:

Delphi-Quellcode:
if lol = 1 then
begin
  ergebnis2 := Format('%.2f',[2* pi * r]);
  Label2.Caption := ergebnis2;
  ergebnis3 := Format('%.2f',[2* r]);
  Label3.Caption := ergebnis3;
  ergebnis4 := Format('%.2f',[pi* r * r]);
  Label4.Caption := ergebnis4;
end;
Aber das schlimmste ist, dass Du mit

Delphi-Quellcode:
r2 := strtoint(ergebnis1);
Versuchst, einen String, in dem '1.45333' oder so (also ein Gleitkommawert in einen String konvertert), in ein Integer umzuwandeln, also eine Ganzzahl. Da meckert er mit Recht. Alo entweder runden, oder in Float konvertieren.

LG, Markus

Patrick162 4. Okt 2007 15:12

Re: Probleme mit einem Rechner
 
Meinst du wenn ich die exe starte?

tschuldigung, bin noch ein anfänger xD

also, man wählt aus was vorgegeben ist und nur dieses edit wird freigegeben.
z.B edit 1 für r.
dann habe ich 3, 3,0 und 3.0 eingegeben und jedes mal kommt der error


Edit: ok danke, ich probiers mal!

DeddyH 4. Okt 2007 15:14

Re: Probleme mit einem Rechner
 
Zitat:

Zitat von Patrick162
also, man wählt aus was vorgegeben ist und nur dieses edit wird freigegeben.

Und die anderen Edits sind dann leer? Dann benutz TryStrToFloat statt StrToFloat.

brinkee 4. Okt 2007 16:47

Re: Probleme mit einem Rechner
 
So, mit deinen Edits ist alles im Lot. Ich weiß zwar nicht genau, was Du damit vorhast, aber okay...

Delphi-Quellcode:
[..]

var
  Form1: TForm1;
  r, u, d, A, r2: extended;
  ergebnis1, ergebnis2, ergebnis3, ergebnis4: string;
  pi: extended;
  lol: integer;


implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin

r := strtofloat(Edit1.Text);
u := strtofloat(Edit2.text);
d := strtofloat(Edit3.Text);
A := strtofloat(Edit4.Text);
pi := 3.14159265358;

if lol = 1 then
begin
  ergebnis2 := FloatToStr(2* pi * r);
  Label2.Caption := ergebnis2;
  ergebnis3 := FloatToStr(2* r);
  Label3.Caption := ergebnis3;
  ergebnis4 := FloatToStr(pi* r * r);
  Label4.Caption := ergebnis4;
end;

if lol = 2 then
begin
  ergebnis1 := FloatToStr(u / 2 * pi);
  Label1.Caption := ergebnis1;
  r2 := strtofloat(ergebnis1);// StrToFloat, statt StrToInt!!!
  ergebnis3 := FloatToStr(r2 * 2);
  Label3.Caption := ergebnis3;
  ergebnis4 := FloatToStr(pi* r2 *r2);
  Label4.Caption := ergebnis4;
end;

if lol = 3 then
begin
  ergebnis1 := FloatToStr(d / 2);
  Label1.Caption := ergebnis1;
  r2 := strtofloat(ergebnis1);// StrToFloat, statt StrToInt!!!
  ergebnis2 := FloatToStr(2* pi * r2);
  Label2.Caption := ergebnis2;
  ergebnis4 := FloatToStr(pi* r2 * r2);
  Label4.Caption := ergebnis4;
end;

if lol = 4 then
begin
  ergebnis1 := FloatToStr(pi * A / 2);
  Label1.Caption := ergebnis1;
  r2 := strtofloat(ergebnis1);// StrToFloat, statt StrToInt!!!
  ergebnis2 := FloatToStr(2* pi * r);
  Label2.Caption := ergebnis2;
  ergebnis3 := FloatToStr(r2* 2);
end;

end;
[...]
Wie gesagt: beschäftige Dich mal damit, was String, Integer, Float, Real usw. bedeuten und wie man sie ineinander umwandelt. Mir scheint, als hättest Du von Variablentypen noch nie etwas gehört...

LG, Markus


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:30 Uhr.
Seite 2 von 2     12   

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