Autor Beitrag
Fright
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 26



BeitragVerfasst: Do 15.09.11 20:46 
Hallo zusammen ich bin es mal wieder und wie die Topic schon sagt gibt wieder Probleme mit diesen 2 Sachen und wie ich das nun anstellen soll...

Mal die Aufgabe:

Aufgabe2

Hier die ersten versuche:

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Label_Materialausdehnung: TLabel;
    Edit_Ausgangslaenge: TEdit;
    TrackBar1: TTrackBar;
    RadioGroup1: TRadioGroup;
    Label_in_mm: TLabel;
    Edit_temperaturdifferenz: TEdit;
    Label_Temperaturdifferenz: TLabel;
    Label_Laenge: TLabel;
    Label_Ausdehnung: TLabel;
    Edit_Laenge: TEdit;
    Edit_Ausdehnung: TEdit;
    Label_Laenge2: TLabel;
    Label_Ausdehnung2: TLabel;
    Button_Ergebnis: TButton;
    procedure Edit_AusgangslaengeChange(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Edit_AusgangslaengeChange(Sender: TObject);
var
Ausgangslaenge, Temperaturdiffernz, Laenge, Ausdehnung : Integer;
begin
Ausgangslaenge := StrToInt(Edit_Ausgangslaenge.Text);
Temperaturdiffernz := StrToInt (Edit_temperaturdifferenz.Text);
Laenge := StrToInt (Edit_Laenge.Text);
Ausdehnung := StrToInt (Edit_Ausdehnung.Text)

CASE RadioGroup1.itemindex of

 0:Begin
  if True then 0.000023
end;
 1:Begin
  if True then 0.000012
end;
 2:Begin
  if True then 0.000008
end;
 3:Begin
  if True then 0.000016
end;
 4:Begin
  if True then 0.000009
end;
 5:Begin
  if True then 0.000019
end;
 6:Begin
  if True then 0.000027
end;
end;
end;
end.


das integer nicht richtig ist weiss ich, aber wusste gerade den Befehl nicht aus dem Kopf und habe das als platzhalter genommen.

wie gehe ich am besten vorran und wie funktionieren diese 2 Funktionen Richtig?

ich habe die Caseof funktion so im forum gefunden und habe sie mal ein wenig abgewandelt, aber weiss nicht ob richtig ist. hatte mir gedacht, das ich sie erweitere in so fern, das wenn es war ist die rechnung dahinter steht oder so. aber irgendwie ist mir das alles noch nicht schlüssig.

hoffe mir kann jemand helfen

---Moderiert von user profile iconNarses: Beiträge zusammengefasst---

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
CASE RadioGroup1.itemindex of
 0: Edit_Ausdehnung.Text := FloatToStr (Ausgangslaenge*0.000023);
 1: Edit_Ausdehnung.Text := FloatToStr (Ausgangslaenge*0.000012);
 2: Edit_Ausdehnung.Text := FloatToStr (Ausgangslaenge*0.000008);
 3: Edit_Ausdehnung.Text := FloatToStr (Ausgangslaenge*0.000016);
 4: Edit_Ausdehnung.Text := FloatToStr (Ausgangslaenge*0.000009);
 5: Edit_Ausdehnung.Text := FloatToStr (Ausgangslaenge*0.000019);
 6: Edit_Ausdehnung.Text := FloatToStr (Ausgangslaenge*0.000027);


wo ist der case of fehler das würde mir schon weiter helfen...

Moderiert von user profile iconNarses: Bild als Anhang hochgeladen.
Einloggen, um Attachments anzusehen!


Zuletzt bearbeitet von Fright am Do 15.09.11 23:07, insgesamt 1-mal bearbeitet
HenryHux
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 542
Erhaltene Danke: 33

Windows 7 Premium
Delphi XE, Eclipse
BeitragVerfasst: Do 15.09.11 22:02 
In dem Abschnitt ist kein direkt sichtbarer Fehler.
ABer wenn ich in den ersten Post gucke, siehts doch fast so aus, als hättest du in der Zeile über der Case-Verzweigung ein Semikolon vergessen :)

lg

EDIT: Am besten kann dir hier geholfen werde, wenn du angibst, welche Meldung dir der Compiler gibt.

Für diesen Beitrag haben gedankt: Fright
Fright Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 26



BeitragVerfasst: Do 15.09.11 22:32 
Möchte gern alles so umstellen, das er die ergebnisse erst anzeigt wenn ich auf E drücke. desweiteren soll dabei auch noch die Laenge-ausgangslaenge gerechnet werden. hat da wer einen tip?

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Label_Materialausdehnung: TLabel;
    Edit_Ausgangslaenge: TEdit;
    TrackBar1: TTrackBar;
    RadioGroup1: TRadioGroup;
    Label_in_mm: TLabel;
    Edit_temperaturdifferenz: TEdit;
    Label_Temperaturdifferenz: TLabel;
    Label_Laenge: TLabel;
    Label_Ausdehnung: TLabel;
    Edit_Laenge: TEdit;
    Edit_Ausdehnung: TEdit;
    Label_Laenge2: TLabel;
    Label_Ausdehnung2: TLabel;
    Button_Ergebnis: TButton;
    procedure Edit_AusgangslaengeChange(Sender: TObject);
    procedure TrackBar1Change(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Edit_AusgangslaengeChange(Sender: TObject);
var
Ausgangslaenge, Temperaturdiffernz, Laenge, Ausdehnung : Extended;
begin
Ausgangslaenge := StrToFloat(Edit_Ausgangslaenge.Text);
Temperaturdiffernz := StrToFloat (Edit_temperaturdifferenz.Text);
Edit_Laenge.Text := FloatToStr (Laenge);
Edit_Ausdehnung.Text := FloatToStr (Ausdehnung);

CASE RadioGroup1.itemindex of
 0: Edit_Laenge.Text := FloatToStr (Ausgangslaenge * (1 + 0.000023 * Temperaturdiffernz));
 1: Edit_Laenge.Text := FloatToStr (Ausgangslaenge * (1 + 0.000012 * Temperaturdiffernz));
 2: Edit_Laenge.Text := FloatToStr (Ausgangslaenge * (1 + 0.000008 * Temperaturdiffernz));
 3: Edit_Laenge.Text := FloatToStr (Ausgangslaenge * (1 + 0.000016 * Temperaturdiffernz));
 4: Edit_Laenge.Text := FloatToStr (Ausgangslaenge * (1 + 0.000009 * Temperaturdiffernz));
 5: Edit_Laenge.Text := FloatToStr (Ausgangslaenge * (1 + 0.000019 * Temperaturdiffernz));
 6: Edit_Laenge.Text := FloatToStr (Ausgangslaenge * (1 + 0.000027 * Temperaturdiffernz));
END;
end;
procedure TForm1.TrackBar1Change(Sender: TObject);
begin
Edit_Ausgangslaenge.Text:= FloatToStr
(TrackBar1.Position);
end;

end.
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Do 15.09.11 23:00 
Moin!

Bitte ändere den Titel des Topics, da er wenig über das eigentlich Thema verrät. Hier der entsprechende Absatz aus den Richtlinien:
1.2 Beiträge:
Bitte formuliere den Betreff Deiner Beiträge so, dass andere Mitglieder anhand dieser bereits das eigentliche Thema festmachen können. Beiträge wie etwa "Eine Anfängerfrage" oder "Weiß jemand, wie das geht?" lassen den Leser im Unklaren darüber, was das Thema der Diskussion ist. [...]
Einfach unten in deinem ersten Beitrag auf user defined image klicken und den Titel ändern. Danke Dir!

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.

Für diesen Beitrag haben gedankt: Fright
HenryHux
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 542
Erhaltene Danke: 33

Windows 7 Premium
Delphi XE, Eclipse
BeitragVerfasst: Do 15.09.11 23:06 
Da musst du wohl selber überlegen, wie du das am haben willst.
Immoment hast du alles ja in sowas gepackt : procedure TForm1.Edit_AusgangslaengeChange(Sender: TObject);
Jedes mal wenn also etwas in dem Edit-Feld verändert wird, wird die Procedure ausgeführt.
Also musst du das wohl als erstes da raußnehmen und wo anders reinstecken.
Ein kleiner Tipp : Such mal nach OnKeyDown.

lg

Für diesen Beitrag haben gedankt: Fright
Fright Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 26



BeitragVerfasst: Do 15.09.11 23:08 
kannst du ein wenig genauer werden?

ich bin in programmieren totaler anfänger. ich mach das gerade das 2 mal und kenne diese funktion nicht

---Moderiert von user profile iconNarses: Beiträge zusammengefasst---

kann man auch einfach sagen

CASE RadioGroup1.itemindex of

0: 0.0002 z,b,
1: 0.23232

und dann bei der formel sagen das er einen einen wert aus der box nehmen soll beim rechnen also aus der raidogroupbox?

---Moderiert von user profile iconNarses: Beiträge zusammengefasst---

wie bau ich das ein bei mir in der case alles andere soll aber so bleiben...

Edit_Ausdehnung.Text := FloatToStr ( Laenge - Ausgangslaenge);

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Label_Materialausdehnung: TLabel;
    Edit_Ausgangslaenge: TEdit;
    TrackBar1: TTrackBar;
    RadioGroup1: TRadioGroup;
    Label_in_mm: TLabel;
    Edit_temperaturdifferenz: TEdit;
    Label_Temperaturdifferenz: TLabel;
    Label_Laenge: TLabel;
    Label_Ausdehnung: TLabel;
    Edit_Laenge: TEdit;
    Edit_Ausdehnung: TEdit;
    Label_Laenge2: TLabel;
    Label_Ausdehnung2: TLabel;
    Button_Ergebnis: TButton;
    procedure TrackBar1Change(Sender: TObject);
    procedure Button_ErgebnisClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button_ErgebnisClick(Sender: TObject);
var
Ausgangslaenge, Temperaturdiffernz, Laenge, Ausdehnung : Extended;

begin
Ausgangslaenge := StrToFloat(Edit_Ausgangslaenge.Text);
Temperaturdiffernz := StrToFloat (Edit_temperaturdifferenz.Text);
Edit_Laenge.Text := FloatToStr (Laenge);
Edit_Ausdehnung.Text := FloatToStr (Ausdehnung);

CASE RadioGroup1.itemindex of
 0: Edit_Laenge.Text := FloatToStr (Ausgangslaenge * (1 + 0.000023 * Temperaturdiffernz));
 1: Edit_Laenge.Text := FloatToStr (Ausgangslaenge * (1 + 0.000012 * Temperaturdiffernz));
 2: Edit_Laenge.Text := FloatToStr (Ausgangslaenge * (1 + 0.000008 * Temperaturdiffernz));
 3: Edit_Laenge.Text := FloatToStr (Ausgangslaenge * (1 + 0.000016 * Temperaturdiffernz));
 4: Edit_Laenge.Text := FloatToStr (Ausgangslaenge * (1 + 0.000009 * Temperaturdiffernz));
 5: Edit_Laenge.Text := FloatToStr (Ausgangslaenge * (1 + 0.000019 * Temperaturdiffernz));
 6: Edit_Laenge.Text := FloatToStr (Ausgangslaenge * (1 + 0.000027 * Temperaturdiffernz));
 END;
end;

procedure TForm1.TrackBar1Change(Sender: TObject);
begin
Edit_Ausgangslaenge.Text:= FloatToStr
(TrackBar1.Position);
end;

end.
Fright Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 26



BeitragVerfasst: Do 22.09.11 22:24 
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Label_Materialausdehnung: TLabel;
    Edit_Ausgangslaenge: TEdit;
    TrackBar1: TTrackBar;
    RadioGroup1: TRadioGroup;
    Label_in_mm: TLabel;
    Edit_temperaturdifferenz: TEdit;
    Label_Temperaturdifferenz: TLabel;
    Label_Laenge: TLabel;
    Label_Ausdehnung: TLabel;
    Edit_Laenge: TEdit;
    Edit_Ausdehnung: TEdit;
    Label_Laenge2: TLabel;
    Label_Ausdehnung2: TLabel;
    Button_Ergebnis: TButton;
    procedure Edit_AusgangslaengeChange(Sender: TObject);
    procedure TrackBar1Change(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Edit_AusgangslaengeChange(Sender: TObject);
var
Ausgangslaenge, Temperaturdiffernz, Laenge, Ausdehnung : Extended;
begin
Ausgangslaenge := StrToFloat(Edit_Ausgangslaenge.Text);
Temperaturdiffernz := StrToFloat (Edit_temperaturdifferenz.Text);
Edit_Laenge.Text := FloatToStr (Laenge);
Edit_Ausdehnung.Text := FloatToStr (Ausdehnung);

Laenge := (Ausgangslaenge * ( 1 + Laenge * Temperaturdiffernz));

CASE RadioGroup1.itemindex of
 0: Edit_Laenge.Text := FloatToStr (Ausgangslaenge * (1 + 0.000023 * Temperaturdiffernz));
 1: Edit_Laenge.Text := FloatToStr (0.000012);
 2: Edit_Laenge.Text := FloatToStr (Ausgangslaenge * (1 + 0.000008 * Temperaturdiffernz));
 3: Edit_Laenge.Text := FloatToStr (Ausgangslaenge * (1 + 0.000016 * Temperaturdiffernz));
 4: Edit_Laenge.Text := FloatToStr (Ausgangslaenge * (1 + 0.000009 * Temperaturdiffernz));
 5: Edit_Laenge.Text := FloatToStr (Ausgangslaenge * (1 + 0.000019 * Temperaturdiffernz));
 6: Edit_Laenge.Text := FloatToStr (Ausgangslaenge * (1 + 0.000027 * Temperaturdiffernz));
END;
end;
procedure TForm1.TrackBar1Change(Sender: TObject);
begin
Edit_Ausgangslaenge.Text:= FloatToStr
(TrackBar1.Position);
end;

end.


Wie man sieht habe ich alles hin bekommen bis auf eine Sache.

Und zwar wie berechne ich nun die Ausdehnung aus?

Im Grunde "Edit_Ausdehnung = Edit_Laenge - Edit_Ausgangslänge"

Aber 2 Probleme kommen mir dabei. Wir haben 2 verschiedene Formate sprich einmal ist eins Text und das andere eine Zahl
wie ich das löse keine ahnung wie man so eine verschachtelte rechnung macht
2. denke wenn ich den code dafür habe wird er die beiden rechnungen machen und beide ergebnisse in den 2 verschiedenen felder anzeigen oder muss ich da was beachten?

kann mir einer die codezeile dafür machen und dann kurz 1-2 sätze schreiben?
Xion
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
Beiträge: 1952
Erhaltene Danke: 128

Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
BeitragVerfasst: Fr 23.09.11 01:18 
user profile iconFright hat folgendes geschrieben Zum zitierten Posting springen:

Und zwar wie berechne ich nun die Ausdehnung aus?

Im Grunde "Edit_Ausdehnung = Edit_Laenge - Edit_Ausgangslänge"

Aber 2 Probleme kommen mir dabei. Wir haben 2 verschiedene Formate sprich einmal ist eins Text und das andere eine Zahl

Wie FloatToStr kannst du auch wieder zurück mit StrToFloat umwandeln (falls es denn eine Float ist im String). Außerdem hast du die Werte doch schon: Ausganslaenge (das ist extended) und Laenge berechnest du (das ist auch extended). Bzw so wie du es geschrieben hast, hast du Laenge nichtmehr. Schreibe in der Case-Struktur jeweils in Laenge rein. Und am Ende schreibst du das einmal ins Edit. Dann hast du beides in extended.

Etwas sauberer ginge es dann so:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
CASE RadioGroup1.itemindex of
  0: Alpha:=0.000023;
...
END;
Laenge := Ausgangslaenge * (1 + Alpha * Temperaturdiffernz));
Edit_Laenge.Text := FloatToStr (Laenge);

Dann brauchst du nur einmal die Formel hinschreiben ;)


user profile iconFright hat folgendes geschrieben Zum zitierten Posting springen:

2. denke wenn ich den code dafür habe wird er die beiden rechnungen machen und beide ergebnisse in den 2 verschiedenen felder anzeigen oder muss ich da was beachten?

Wenn du in 2 Felder was reinschreibst, dann steht in beiden was drin :nixweiss:

_________________
a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
Fright Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 26



BeitragVerfasst: Fr 23.09.11 05:48 
so hatte ich das vorher auch mal, aber alpha zeigt er mir als fehler an.
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 23.09.11 09:14 
Ach übrigens es geht auch komplett ohne Verzweigung. ;)
Xion
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
Beiträge: 1952
Erhaltene Danke: 128

Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
BeitragVerfasst: Fr 23.09.11 10:31 
Du musst ja auch Alpha als Variable deklarieren!?

_________________
a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
Fright Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 26



BeitragVerfasst: Mi 28.09.11 18:54 
Danke, durch die noch nicht so guten Erfarhungen und dadurch Folgende fehlende Ruhe beim Programmieren habe ich sowas einfaches vergessen :)

danke