Softwarepraktikum / benötige Hilfe wegen Variable

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
G-RAW1905
Beiträge: 4
Registriert: Di 2. Feb 2016, 18:47

Softwarepraktikum / benötige Hilfe wegen Variable

Beitrag von G-RAW1905 »

Guten Abend,
ich habe seit einigen Stunden das gleich Problem,weswegen ich auch nicht weiter komme.
Ich habe eine Variable ,welche nach jedem Button-Click +1 addiert werden soll.
Aufgrund dieser Variable a , basieren 2 Prozeduren,eine für a=0 , die andere für a<0.
Es geht hierbei um die Rickmannsche MIschungstemperatur.
Zudem benötige ich noch die Anweisung für
36<Tm<40 , ich ahbe es mit "and" und "or" probiert,bei beiden kommen die gleichen Fehlermeldungen.
Die Funktion in der Unit"Funktionen" ist komplett funktionstüchtig.

Code: Alles auswählen

 
unit Unit1;
 
{$mode objfpc}{$H+}
 
interface
 
uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
  Buttons,Funktionen;
 
type
 
  { TForm1 }
 
  TForm1 = class(TForm)
    BitBtn1: TBitBtn;
    Button1: TButton;
    Edit1: TEdit;
    Label1: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Edit_M1: TEdit;
    Edit_Kalt: TEdit;
    Edit_M2: TEdit;
    Edit_T1: TEdit;
    Edit_T2: TEdit;
    Edit_Tm: TEdit;
    Edit_Mges: TEdit;
    Edit_Rest: TEdit;
    Edit_Warm: TEdit;
    Edit_A: TEdit;
    procedure Button1Click(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;
 
var
  Form1: TForm1;
  M1,M2 : real ;
  T1,T2 : real ;
 
 
  const
    ke=273.15 ;
 
 
implementation
 
 
{$R *.lfm}
 
{ TForm1 }
 
procedure TForm1.Button1Click(Sender: TObject);
var
  TM : real ;
  Mges : real ;
  W : real;
  K: real ;
  Rest : real ;
  a :integer;
begin
a:=a+1 ;
edit_a.text:=FloatToStr(a);
 
if a=0
 
then
begin
 
 M1:=StrToFloat(Edit_M1.text);
 M2:=StrToFloat(Edit_M2.text);
 T1:=Strtofloat(Edit_T1.text);
 T2:=Strtofloat(Edit_T2.text);
 
 if 0<T1    // hier wird das 0<T1<100 und 0<T2<100 benötigt
 then
 begin
 Edit1.Text:='Bitte nur flüssiges Wasser nehmen' ;
 end
 
 else
 begin
 
 T1:=T1+KE ;
 T2:=T2+KE ;
 
 TM:=Mischungstemperatur(T1,T2,M1,M2);
 Mges:=m1+M2 ;
  TM:=TM-KE ;
   Inc(a) ;
 Rest:=1500-Mges ;
 
 if Mges<1500 // zudem wird hier auch noch 36<TM<40 benötigt
 then
 begin
 Edit_TM.Text:= FloatToStr(Tm);
 Edit_Mges.text:=FloatToStr(Mges);
 Edit1.Text:='Noch im Spiel';
 Edit_A.Text:=FloattoStr(A);
 Edit_Rest.text:=FloatToStr(rest);
 
 end
 
 
 else
 begin
 Edit1.Text:='Spiel verloren, die Badewanne läuft über ';
end;
 
 end;
 end;
 
 
 
 if a>0
then
 begin
 M1:=StrToFloat(Edit_M1.text);
 M2:=StrToFloat(Edit_Mges.text);
 T1:=Strtofloat(Edit_T1.text);
 T2:=Strtofloat(Edit_TM.text);
 T1:=T1+KE ;
 T2:=T2+KE ;
 TM:=Mischungstemperatur(T1,T2,M1,M2);
 Mges:=m1+M2 ;
 TM:=TM-KE ;
  Rest:=1500-Mges ;
 if Mges<1500
 then
 begin
 Edit_TM.Text:= FloatToStr(Tm);
 Edit_Mges.text:=FloatToStr(Mges);
 Edit1.Text:='Noch im Spiel';
 Edit_A.Text:=FloattoStr(A);
 Edit_Rest.text:=FloatToStr(rest);
 
 end
 else
 Edit1.Text:='Spiel verloren,Badewanne läuft über' ;
 
 
 
 
 
end;
 
 
end;
 
 
end.
 
 
Zuletzt geändert von G-RAW1905 am Di 2. Feb 2016, 19:05, insgesamt 1-mal geändert.

wp_xyz
Beiträge: 5153
Registriert: Fr 8. Apr 2011, 09:01

Re: Softwarepraktikum / benötige Hilfe wegen Variable

Beitrag von wp_xyz »

Dieser Code ist nicht zu lesen. Bitte editiere deinen Beitrag und setze vor die erste Code-Zeile ein [ code=laz], wobei das Leerzeichen nach der öffnenden Klammer weggelassen werden muss (ich füge es hier ein, weil sonst die Forumsoftware das folgende als Code formatiert), und hinter die letzte Code-Zeile muss [/code]. Und hoffentlich ist dein Code vernünftig eingerückt. Ohne das findet sich kaum jemand in mehr als 5 Zeilen zurecht.

G-RAW1905
Beiträge: 4
Registriert: Di 2. Feb 2016, 18:47

Re: Softwarepraktikum / benötige Hilfe wegen Variable

Beitrag von G-RAW1905 »

Entschuldigung ^^
Wurde sofort gemacht

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: Softwarepraktikum / benötige Hilfe wegen Variable

Beitrag von Christian »

Such mal nach Lokale und Globale Variablen
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

G-RAW1905
Beiträge: 4
Registriert: Di 2. Feb 2016, 18:47

Re: Softwarepraktikum / benötige Hilfe wegen Variable

Beitrag von G-RAW1905 »

Globale gelten in der ganzen Unit/dem Programm
Lokale nur in der jeweiligen Prozedur oder was meinst du?

wp_xyz
Beiträge: 5153
Registriert: Fr 8. Apr 2011, 09:01

Re: Softwarepraktikum / benötige Hilfe wegen Variable

Beitrag von wp_xyz »

Ich bewundere immer Leute, die in so chaotischer Formatierung sehen, wo ein begin/end Block beginnt und aufhört...

Egal. Ich nehme an, du möchtest in der Zeile "if 0<T1" dies als weitere Bedingungen haben: 0<T1<100 und 0<T2<100? Dann schreibe halt:

Code: Alles auswählen

  if (0 < T1) and (T1 < 100) and (0 < T2) and (T2 < 100) then ... 
[EDIT] Jetzt doch nochmals zur Formatierung. Hier dein Quelltext, vernünftig formatiert: Du rückst all das, was mit begin/end geklammert ist, um zwei Leerzeichen ein; dann siehst du auf 1 Blick, wo z.B ein IF beginnt und endet.

Code: Alles auswählen

unit Unit1;
 
{$mode objfpc}{$H+}
 
interface
 
uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
  Buttons,Funktionen;
 
type
 
  { TForm1 }
 
  TForm1 = class(TForm)
    BitBtn1: TBitBtn;
    Button1: TButton;
    Edit1: TEdit;
    Label1: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Edit_M1: TEdit;
    Edit_Kalt: TEdit;
    Edit_M2: TEdit;
    Edit_T1: TEdit;
    Edit_T2: TEdit;
    Edit_Tm: TEdit;
    Edit_Mges: TEdit;
    Edit_Rest: TEdit;
    Edit_Warm: TEdit;
    Edit_A: TEdit;
    procedure Button1Click(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;
 
var
  Form1: TForm1;
  M1,M2 : real ;
  T1,T2 : real ;
 
 const
  ke=273.15 ;
 
implementation
 
{$R *.lfm}
 
{ TForm1 }
 
procedure TForm1.Button1Click(Sender: TObject);
var
  TM : real ;
  Mges : real ;
  W : real;
  K: real ;
  Rest : real ;
  a :integer;
begin
  a:=a+1 ;
  edit_a.text:=FloatToStr(a);
 
  if a=0 then
  begin
    M1:=StrToFloat(Edit_M1.text);
    M2:=StrToFloat(Edit_M2.text);
    T1:=Strtofloat(Edit_T1.text);
    T2:=Strtofloat(Edit_T2.text);
 
    if 0<T1 then   // hier wird das 0<T1<100 und 0<T2<100 benötigt
    begin
      Edit1.Text:='Bitte nur flüssiges Wasser nehmen' ;
    end
    else
    begin
      T1:=T1+KE ;
      T2:=T2+KE ;
 
      TM:=Mischungstemperatur(T1,T2,M1,M2);
      Mges:=m1+M2 ;
      TM:=TM-KE ;
      Inc(a) ;
      Rest:=1500-Mges ;
 
      if Mges<1500 then // zudem wird hier auch noch 36<TM<40 benötigt
      begin
         Edit_TM.Text:= FloatToStr(Tm);
         Edit_Mges.text:=FloatToStr(Mges);
         Edit1.Text:='Noch im Spiel';
         Edit_A.Text:=FloattoStr(A);
         Edit_Rest.text:=FloatToStr(rest);
      end
      else
      begin
        Edit1.Text:='Spiel verloren, die Badewanne läuft über ';
      end;
    end;
  end;
  
  if a>0 then
  begin
    M1:=StrToFloat(Edit_M1.text);
    M2:=StrToFloat(Edit_Mges.text);
    T1:=Strtofloat(Edit_T1.text);
    T2:=Strtofloat(Edit_TM.text);
    T1:=T1+KE ;
    T2:=T2+KE ;
    TM:=Mischungstemperatur(T1,T2,M1,M2);
    Mges:=m1+M2 ;
    TM:=TM-KE ;
    Rest:=1500-Mges ;
    if Mges<1500 then
    begin
      Edit_TM.Text:= FloatToStr(Tm);
      Edit_Mges.text:=FloatToStr(Mges);
      Edit1.Text:='Noch im Spiel';
      Edit_A.Text:=FloattoStr(A);
      Edit_Rest.text:=FloatToStr(rest);
    end
    else
      Edit1.Text:='Spiel verloren,Badewanne läuft über' ;
  end;
end;
 
end.
Zuletzt geändert von wp_xyz am Di 2. Feb 2016, 19:29, insgesamt 3-mal geändert.

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: Softwarepraktikum / benötige Hilfe wegen Variable

Beitrag von Christian »

Genau das mein ich. Jetzt musst dir nur nochmal deinen Code durchsehn und dann siehst den Fehler schon selbst
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

G-RAW1905
Beiträge: 4
Registriert: Di 2. Feb 2016, 18:47

Re: Softwarepraktikum / benötige Hilfe wegen Variable

Beitrag von G-RAW1905 »

if (0 < T1) and (T1 < 100) and (0 < T2) and (T2 < 100) then
ja das mein ich^^

und die variable a muss global deklariert werden
danke ;)

ich werd mich bei neuen aufkommenden fehlern wieder melden^^

schönen abend noch

Antworten