Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Delphi-Anfänger - Was mache ich mit diesem if-Satz falsch? (https://www.delphipraxis.net/154442-delphi-anfaenger-mache-ich-mit-diesem-if-satz-falsch.html)

Timm3r 10. Sep 2010 17:39

Delphi-Version: 7

Delphi-Anfänger - Was mache ich mit diesem if-Satz falsch?
 
Guten Tag zusammen,

habe gerade das folgende Programm geschrieben:

Delphi-Quellcode:
procedure TForm1.AmpelUmschaltenClick(Sender: TObject);
begin
        if
                imAmpelRot.Visible=True

        then begin
                imAmpelRot.Visible:=False
                imAmpelRotGelb.Visible:=True
        end
        else if
                imAmpelRotGelb.Visible=True
        then begin
                imAmpelRotGelb.Visible:=False
                imAmpelGruen.Visible:=True
        end
        else if
                ImAmpelGruen.Visible=True
        then begin
                ImAmpelGruen.Visible:=False
                ImAmpelGelb.Visible:=True
        end
        else
                ImAmpelGelb.Visible:=False
                ImAmpelRot.Visible:=True
        end;              


end.

Das ist halt so ne Ampel die die ganze Zeit umgeschaltet werden soll aber ich rall nicht wierklich was an dem Programm falsch sein soll.

Kann mir einer von euch sagen, wie ich das ändern soll?

Danke im Voraus!

youuu 10. Sep 2010 17:42

AW: Delphi-Anfänger - Was mache ich mit diesem if-Satz falsch?
 
Was bekommst du denn als Fehler?

Kleiner Tipp nebenbei

Delphi-Quellcode:
if
imAmpelRot.Visible=True

then
teste niemals auf True oder False wie du es machst sondern so

Delphi-Quellcode:
if imAmpelRot.Visible then
Begin
  ...
end
SieheHier

Edit: ebenso vergisst du ";" zu setzen zwischen deinen Begin und End's

Delphi-Quellcode:
then begin
ImAmpelGruen.Visible:=False;                <<< besser
ImAmpelGelb.Visible:=True;
end

[DELPHI]

Delphi-Quellcode:
procedure TForm1.AmpelUmschaltenClick(Sender: TObject);
begin
  if imAmpelRot.Visible then
  begin
    imAmpelRot.Visible:= False;
    imAmpelRotGelb.Visible:= True;
  end
  else if imAmpelRotGelb.Visible then
  begin
    imAmpelRotGelb.Visible:=False;
    imAmpelGruen.Visible:=True;
  end
  else if ImAmpelGruen.Visible then
  begin
    ImAmpelGruen.Visible:=False;
    ImAmpelGelb.Visible:=True;
  end
  else
  Begin
    ImAmpelGelb.Visible:=False;
    ImAmpelRot.Visible:=True;
  end;
end;

jfheins 10. Sep 2010 17:47

AW: Delphi-Anfänger - Was mache ich mit diesem if-Satz falsch?
 
Und formatieren den Quellcode ;)

Delphi-Quellcode:
   procedure TForm1.AmpelUmschaltenClick(Sender: TObject);
   begin
      if imAmpelRot.Visible then
      begin
         imAmpelRot.Visible := False;
         imAmpelRotGelb.Visible := True;
      end
      else if imAmpelRotGelb.Visible then
      begin
         imAmpelRotGelb.Visible := False;
         imAmpelGruen.Visible := True;
      end
      else if ImAmpelGruen.Visible then
      begin
         ImAmpelGruen.Visible := False;
         ImAmpelGelb.Visible := True;
      end
      else
         ImAmpelGelb.Visible := False;
      
      ImAmpelRot.Visible:=True; // Sicher dass das so gewollt ist?
   end;              
end.
Durch das Einrücken wird der Fehler direkt sichtbar ;)

mkinzler 10. Sep 2010 17:58

AW: Delphi-Anfänger - Was mache ich mit diesem if-Satz falsch?
 
CrossPost DF

Timm3r 10. Sep 2010 18:34

AW: Delphi-Anfänger - Was mache ich mit diesem if-Satz falsch?
 
Auf jeden Fall schon einmal vielen Dank für die zahlreichen Antworten, aber ich habe es mit euren Quelltexten versucht, nur das geht auch i.wie nicht. Könnt ihr mir vielleicht die akuten Fehler nennen?

Also Delphi sagt immer:

[Error] Unit1.pas(36): Not enough actual parameters
[Error] Unit1.pas(37): Not enough actual parameters
[Error] Unit1.pas(38): Not enough actual parameters
[Error] Unit1.pas(44): Not enough actual parameters
[Error] Unit1.pas(45): Not enough actual parameters
[Error] Unit1.pas(46): Not enough actual parameters
[Warning] Unit1.pas(79): Text after final 'END.' - ignored by compiler
[Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'


Den Quelltext dazu habt ihr ja!

Danke wieder einmal im Voraus!

mkinzler 10. Sep 2010 18:36

AW: Delphi-Anfänger - Was mache ich mit diesem if-Satz falsch?
 
Aber nicht den kompletten. Was steht den in den angemahnten Zeilen?

youuu 10. Sep 2010 19:02

AW: Delphi-Anfänger - Was mache ich mit diesem if-Satz falsch?
 
Gerade mal spaßeshalber probiert.
Einfachen meinen QuellText vom Post oben kopieren und es klappt, es sei denn du hast noch mehr stehen, welches meinen Code ungültig machen könnte?

Timm3r 10. Sep 2010 19:32

AW: Delphi-Anfänger - Was mache ich mit diesem if-Satz falsch?
 
Das ist zuerst einmal sehr nett, dass ihr euch alle so eine Mühe gebt mein Problem zu lösen. Ich stell mal den ganzen Quelltext rein, dann ist es euch vielleicht klarer!

u
Delphi-Quellcode:
nit Unit1;

interface

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

type
  TForm1 = class(TForm)
    AmpelEinschalten: TButton;
    AmpelAusschalten: TButton;
    AmpelUmschalten: TButton;
    ImAmpelRotGelb: TImage;
    ImAmpelRot: TImage;
    ImAmpelGruen: TImage;
    ImAmpelGelb: TImage;
    procedure AmpelEinschaltenClick(Sender: TObject);
    procedure AmpelAusschaltenClick(Sender: TObject);
    procedure AmpelUmschaltenClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.AmpelEinschaltenClick(Sender: TObject);
begin
        TForm1.AmpelEinschaltenClick.Visible:=False;
        TForm1.AmpelAusschaltenClick.Visible:=True;
        TForm1.AmpelUmschaltenClick.Visible:=True;
        ImAmpelRot.Visible:=True;
end;

procedure TForm1.AmpelAusschaltenClick(Sender: TObject);
begin
        TForm1.AmpelEinschaltenClick.Visible:=True;
        TForm1.AmpelAusschaltenClick.Visible:=False;
        TForm1.AmpelUmschaltenClick.Visible:=False;
        ImAmpelRot.Visible:=False;
        ImAmpelGruen.Visible:=False;
        ImAmpelGelb.Visible:=False;
        ImAmpelRotGelb.Visible:=False;

end;

procedure TForm1.AmpelUmschaltenClick(Sender: TObject);
   begin
      if imAmpelRot.Visible then
      begin
         imAmpelRot.Visible := False;
         imAmpelRotGelb.Visible := True;
      end
      else if imAmpelRotGelb.Visible then
      begin
         imAmpelRotGelb.Visible := False;
         imAmpelGruen.Visible := True;
      end
      else if ImAmpelGruen.Visible then
      begin
         ImAmpelGruen.Visible := False;
         ImAmpelGelb.Visible := True;
      end
      else
      begin
         ImAmpelGelb.Visible := False;

         ImAmpelRot.Visible:=True;

      end;

end;

Luckie 10. Sep 2010 19:44

AW: Delphi-Anfänger - Was mache ich mit diesem if-Satz falsch?
 
Bitte verwende Delphi-Tags für deinen Quellcode.

Und was bekommst du für Fehlermeldungen und wo?

mkinzler 10. Sep 2010 19:45

AW: Delphi-Anfänger - Was mache ich mit diesem if-Satz falsch?
 
Bitte verwende das nächste Mal passende Code-Tags ( in diesem Fall Delphi) in dem du den Quelltext im Editor markierst und dann das Code-Icon ( bzw. Delphi-Icon) anklickst.

Danke.

Teekeks 10. Sep 2010 19:47

AW: Delphi-Anfänger - Was mache ich mit diesem if-Satz falsch?
 
Ganz am Ende fehlt schon mal ein
Delphi-Quellcode:
end.
(mit Punkt)

Prototypjack 10. Sep 2010 20:16

AW: Delphi-Anfänger - Was mache ich mit diesem if-Satz falsch?
 
Moin,

Entferne die Ts von TForm1.[..], denn bei TForm1 handelt es sich um die Klasse, nicht um deren Instanz.

Edit: Beispiel: "TForm1.AmpelEinschaltenClick.Visible:=True;" sollte "Form1.AmpelEinschalten.Visible := True;" sein, wobei du dir hier das Form1 sogar sparen könntest (da du ja mit Klassenmembern hantierst). Pass auch auf, dass du die Namen nicht verwechselst! Ich sehe dort nur ein "AmpelEinschalten" Objekt, aber keines, dass "AmpelEinschaltenClick" heißt. Bei letzterem (also "AmpelEinschaltenClick") handelt es sich um die Methode, die aufgerufen wird, wenn der Button geklickt wird.

Falls du mit Methode / Routine / Klasse / Instanz wenig anfangen kannst, dann lege ich dir ans Herz ein Buch, oder ein Grundlagentutorial durchzuarbeiten. Das meine ich nicht böse! Solche Begriffe werden dir noch sehr oft begegnen und da schadet es nicht, diese gleich zu anfangs zu beherrschen ;). Viel Erfolg!

Grüße,
Max

Timm3r 10. Sep 2010 22:33

AW: Delphi-Anfänger - Was mache ich mit diesem if-Satz falsch?
 
Habe das Problem gerade gelöst. Habe einfach alles mal Schritt für Schritt neu geschrieben und jetzt funktioniert alles.

Aphton 11. Sep 2010 03:07

AW: Delphi-Anfänger - Was mache ich mit diesem if-Satz falsch?
 
Delphi-Quellcode:
if imAmpelRot.Visible then
begin
  imAmpelRot.Visible:=False
  imAmpelRotGelb.Visible:=True
end else
if imAmpelRotGelb.Visible then
begin
  imAmpelRotGelb.Visible:=False
  imAmpelGruen.Visible:=True
end else
if ImAmpelGruen.Visible then
begin
  ImAmpelGruen.Visible:=False
  ImAmpelGelb.Visible:=True
end else
// HIER FEHLT EIN -->
begin
  ImAmpelGelb.Visible:=False
  ImAmpelRot.Visible:=True // sonst wird diese Zeile hier immer aufgerufen...
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:45 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz