Keine Ausgabe im Memo-Feld..

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
lorikae
Beiträge: 1
Registriert: So 29. Jun 2014, 17:18

Keine Ausgabe im Memo-Feld..

Beitrag von lorikae »

Hallo, ich sitze gerade an einem einfachen Programm für einen Getränkeautomaten und ich habe ein Problem bei der Ausgabe im Memo-Feld.

das ist das programm:

Code: Alles auswählen

unit Unit1;
 
{$mode objfpc}{$H+}
 
interface
 
uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
  Menus;
 
type
 
  { TForm1 }
 
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;
 
var
  Form1: TForm1;
  s,e:Real;
 
implementation
 
{$R *.lfm}
 
{ TForm1 }
 
procedure TForm1.FormCreate(Sender: TObject);
begin
   Edit1.Clear;
   Edit2.Clear;
   Memo1.Clear;
end;
 
 
 
procedure TForm1.Button6Click(Sender: TObject);
var g,p,s,m:real;
begin
   g:=Strtofloat(edit1.text);
   m:=Strtofloat(edit2.text);
   if g=1 then
     begin
       p:=g / 2;
       s:=p*m;
       Memo1.lines.add('Das macht dann '+FloatToStr(s)+ '€.');
      end
   else if g=2 then
      begin
       p:=g-1;
       s:=p*m;
       Memo1.lines.add('Das macht dann '+FloatToStr(s)+ '€.');
      end
   else if g=3 then
      begin
       p:=g-1;
       s:=p*m;
       Memo1.lines.add('Das macht dann '+FloatToStr(s)+ '€.');
      end
   else if g <1 then
    begin
    Memo1.Lines.Add('Ihre Getränke-Eingabe ist ungültig. Bitte geben Sie 1,2 oder 3 ein.');
     end
    else if g>3 then
    begin
     Memo1.Lines.Add('Ihre Getränke-Eingabe ist ungültig. Bitte geben Sie 1,2 oder 3 ein.');
    end
end;
 
 
procedure TForm1.Button1Click(Sender: TObject);
begin
   e:=s-0.1;
   if e=0 then
    begin
     Memo1.Lines.Add('Ihre Bezahlung ist beendet. Auf Wiedersehen.');
     end
   else  if e>0 then
    begin
   Memo1.Lines.Add('Es fehlen noch '+FloattoStr(e)+'€.');
   end;
end;
 
procedure TForm1.Button2Click(Sender: TObject);
begin
  e:=s-0.2;
   if e=0 then
    begin
     Memo1.Lines.Add('Ihre Bezahlung ist beendet. Auf Wiedersehen.');
     end
   else  if e>0 then
    begin
   Memo1.Lines.Add('Es fehlen noch '+FloattoStr(e)+'€.');
   end;
end;
 
[u]procedure TForm1.Button3Click(Sender: TObject);
begin
   e:=s-0.5;
   if e=0 then
    begin
     Memo1.Lines.Add('Ihre Bezahlung ist beendet. Auf Wiedersehen.');
     end
   else  if e>0 then
    begin
   Memo1.Lines.Add('Es fehlen noch '+FloattoStr(e)+'€.');
   end;
end;
 
procedure TForm1.Button4Click(Sender: TObject);
begin
           e:=s-1;
   if e=0 then
    begin
     Memo1.Lines.Add('Ihre Bezahlung ist beendet. Auf Wiedersehen.');
     end
   else  if e>0 then
    begin
   Memo1.Lines.Add('Es fehlen noch '+FloattoStr(e)+'€.');
   end;
end;
 
procedure TForm1.Button5Click(Sender: TObject);
begin
   e:=s-2;
   if s=0 then
    begin
     Memo1.Lines.Add('Ihre Bezahlung ist beendet. Auf Wiedersehen.');
     end
   else  if e>0 then
    begin
   Memo1.Lines.Add('Es fehlen noch '+FloattoStr(e)+'€.');
   end;[/color]
end;
[/u]

der markierte Teil funktioniert irgendwie ncht :(
Zuletzt geändert von Lori am Mo 30. Jun 2014, 12:52, insgesamt 1-mal geändert.
Grund: Bitte den Highlighter nutzen.

Benutzeravatar
theo
Beiträge: 10859
Registriert: Mo 11. Sep 2006, 19:01

Re: Keine Ausgabe im Memo-Feld..

Beitrag von theo »

:lol:
Ich schmeiße mal einen Haufen Code ins Forum und stelle dann die Frage aller Fragen. Ach nee, ist ja noch nicht mal wirklich eine Frage.
"der markierte Teil funktioniert irgendwie ncht " :lol:

Linkat
Lazarusforum e. V.
Beiträge: 559
Registriert: So 10. Sep 2006, 23:24
OS, Lazarus, FPC: Linux Mint 22; Lazarus 3.4 FPC 3.2.2; RaspiOS
CPU-Target: AMD 64, ARM 64
Wohnort: nr Stuttgart

Re: Keine Ausgabe im Memo-Feld..

Beitrag von Linkat »

Hallo lorikae,
zunächst mal herzlich willkommen im Lazarusforum. An deinem "Problem" sieht man, dass du ein Anfänger bist. Aber du musst das Problem auch genau beschreiben. Es ist den Lesern nicht zu zumuten, die Aufgabenstellung zu erraten, dein 160 Zeilen-Programm zu durchforsten, dein Problem zu finden und dir noch zu helfen.

Du musst also schon dein Problem besser beschreiben. Formuliere dein Problem klar und kurz und bündig. Wo tritt welcher Fehler auf mit einem kleinen Beispielcode mit exakter Fehlermeldung. Dann wird dir auch sicher geholfen.

Bitte benutze auch zur besseren Lesbarkeit des Programmes den Highlighter, und rücke die einzelnen Zeilen ein.
z.B.:

Code: Alles auswählen

procedure TForm1.Button2Click(Sender: TObject);
begin
  e:=s-0.2;
  if e=0 then
  begin
    Memo1.Lines.Add('Ihre Bezahlung ist beendet. Auf Wiedersehen.');
  end else if e>0 then
                 begin
                   Memo1.Lines.Add('Es fehlen noch '+FloattoStr(e)+'€.');
                 end;
end;
Bedenke Programmieren lernt man nicht an einem Tag.

Gruß, Linkat
Linux Mint 21.3; Lazarus 3.4 FPC 3.2.2; RaspiOS

Mathias
Beiträge: 6900
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Keine Ausgabe im Memo-Feld..

Beitrag von Mathias »

Man könnte wenigsten der Code leserlich reinstellen.

Code: Alles auswählen

unit Unit1;
 
{$mode objfpc}{$H+}
 
interface
 
uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
  Menus;
 
type
 
  { TForm1 }
 
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;
 
var
  Form1: TForm1;
  s, e: real;
 
implementation
 
{$R *.lfm}
 
{ TForm1 }
 
procedure TForm1.FormCreate(Sender: TObject);
begin
  Edit1.Clear;
  Edit2.Clear;
  Memo1.Clear;
end;
 
 
procedure TForm1.Button6Click(Sender: TObject);
var
  g, p, s, m: real;
begin
  g := Strtofloat(edit1.Text);
  m := Strtofloat(edit2.Text);
  if g = 1 then begin
    p := g / 2;
    s := p * m;
    Memo1.Lines.add('Das macht dann ' + FloatToStr(s) + '€.');
  end else if g = 2 then begin
    p := g - 1;
    s := p * m;
    Memo1.Lines.add('Das macht dann ' + FloatToStr(s) + '€.');
  end else if g = 3 then begin
    p := g - 1;
    s := p * m;
    Memo1.Lines.add('Das macht dann ' + FloatToStr(s) + '€.');
  end else if g < 1 then begin
    Memo1.Lines.Add('Ihre Getränke-Eingabe ist ungültig. Bitte geben Sie 1,2 oder 3 ein.');
  end else if g > 3 then begin
    Memo1.Lines.Add('Ihre Getränke-Eingabe ist ungültig. Bitte geben Sie 1,2 oder 3 ein.');
  end;
end;
 
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  e := s - 0.1;
  if e = 0 then begin
    Memo1.Lines.Add('Ihre Bezahlung ist beendet. Auf Wiedersehen.');
  end else if e > 0 then begin
    Memo1.Lines.Add('Es fehlen noch ' + FloattoStr(e) + '€.');
  end;
end;
 
procedure TForm1.Button2Click(Sender: TObject);
begin
  e := s - 0.2;
  if e = 0 then begin
    Memo1.Lines.Add('Ihre Bezahlung ist beendet. Auf Wiedersehen.');
  end else if e > 0 then begin
    Memo1.Lines.Add('Es fehlen noch ' + FloattoStr(e) + '€.');
  end;
end;
 
procedure TForm1.Button3Click(Sender: TObject);
begin
  e := s - 0.5;
  if e = 0 then begin
    Memo1.Lines.Add('Ihre Bezahlung ist beendet. Auf Wiedersehen.');
  end else if e > 0 then begin
    Memo1.Lines.Add('Es fehlen noch ' + FloattoStr(e) + '€.');
  end;
end;
 
procedure TForm1.Button4Click(Sender: TObject);
begin
  e := s - 1;
  if e = 0 then begin
    Memo1.Lines.Add('Ihre Bezahlung ist beendet. Auf Wiedersehen.');
  end else if e > 0 then begin
    Memo1.Lines.Add('Es fehlen noch ' + FloattoStr(e) + '€.');
  end;
end;
 
procedure TForm1.Button5Click(Sender: TObject);
begin
  e := s - 2;
  if s = 0 then begin
    Memo1.Lines.Add('Ihre Bezahlung ist beendet. Auf Wiedersehen.');
  end else if e > 0 then begin
    Memo1.Lines.Add('Es fehlen noch ' + FloattoStr(e) + '€.');
  end;
end;
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

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: Keine Ausgabe im Memo-Feld..

Beitrag von Christian »

Was nützen denn jetzt Highligther und Formatierter Code ?
Weiss jetzt jemand besser als vorher was das machen soll ?

Der OP bezeichnet noch nichtmal die Buttons so das man raten könnte wie das Programm funktionieren könnte...
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

torte
Beiträge: 13
Registriert: Sa 9. Jun 2012, 08:45

Re: Keine Ausgabe im Memo-Feld..

Beitrag von torte »

Hallo lorikae,

ich habe ein Verständnissproblem.
Änderst duch irgendwo den Wert für s?

Im übrigen prüfst du bei Button5 ob "s=0".

Ansonsten kann ich dir da auch nicht weiterhelfen.

Komoluna
Beiträge: 565
Registriert: So 26. Aug 2012, 09:03
OS, Lazarus, FPC: Windows(10), Linux(Arch)
CPU-Target: 64Bit

Re: Keine Ausgabe im Memo-Feld..

Beitrag von Komoluna »

Wenn du Hilfe benötigst solltest du entweder dein ganzes Projekt hochladen, oder
mehr Informationen geben, denn Wahrsagen funktioniert nur in Geschichten.

MFG

Komoluna
Programmer: A device to convert coffee into software.

Rekursion: siehe Rekursion.

Antworten