Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   if...then...else (https://www.delphipraxis.net/69938-if-then-else.html)

Jarie 22. Mai 2006 16:18


if...then...else
 
Ja, hallo Leute,
ich geb's ja zu, ich bin Delphi- Anfänger! (geoutet, yeah! :D)

So, jedenfalls versuche ich grad eine Art Taschenrechner aufzustellen und habe dafür ersteinmal die Taschenrechner- Oberfläche (Zahlen von 0-9, +, -, *, /, =) und oben noch zwei, drei Labels.
Wenn man nun auf eine der Zahlen drückt, erscheint diese im Label, drückt man auf + ist die wieder weg und es soll eine zweite Eingabe ins zweite Label gestattet werden. Das will ich mit einer if...then...else schaffen ;). Und zwar soll das so aussehen:
Delphi-Quellcode:
if Label1.Caption:= ' ' then
begin
// alle Prozeduren der Zahlen zur Eingabe ins erste Label;
end
else // also wenn was im Label1 steht
begin
//alle Prozeduren der Zahlen ins zweite Label;
end
end;
Tja, mein netter Com streicht schon oben das if an, egal was ich eintippe! Ob ich einfach nur "x<0" oder so eintippe, der streicht immer dat if an *grummel*...
Weiß einer vielleicht, was ich falsch mache? Ich mein, so blöd kann man sich ja nit anstellen, dass Com netmal'nen normalen Befehl akzeptiert xD.
A ja, für Nachfragen steh ich offen, falls noch irgendwas in den Hieroglyphen vergraben steht... ^^

Ach ja, danke schonmal vorher, auch wenn mir noch keiner geholfen hat ^^.
Ach- und bitte schnell antworten, schreib morgen'ne Arbeit XD.

[edit=Sharky]Noch schnell die Delphi-Tags gesetzt. Mfg, Sharky[/edit]

Sharky 22. Mai 2006 16:20

Re: if...then...else
 
Hai Jarie,

bei einem Vergleich musst Du ein "=" verwenden. Das ":=" ist eine Zuordnung.

Also
Delphi-Quellcode:
begin
  if (Label1.Caption = ' ') then
  begin
    Label1.Caption := '*blubb*';
  end;
end;

Jarie 22. Mai 2006 16:25

Re: if...then...else
 
Lol, jetzt streicht der mein durchaus anwesendes Label1 an xD.
Aber danke schonmal, if ist jetzt für den okay ^^.

Ich glaub, bin zu doof für Delphi *heul* ^^.

Das steht jetzt also alles so da:
Delphi-Quellcode:
begin
if (Label5.Caption = ' ') then
begin
Label5.Caption:= '*blubb*;
end;
else
begin
Label5.Caption:= ' ';
end;
end
Nur mal als Beispiel meines Nichtkönnens xD.

[edit=Sharky]Bitte setze deinen Code immer in die Delphi-Tags. Einfach [*delphi] vor den Code und [*/delphi] dahinter. Nur ohne die *. Mfg, Sharky[/edit]

Sharky 22. Mai 2006 16:35

Re: if...then...else
 
Zeige mal die gesamte Methode. Also:
Delphi-Quellcode:
procedure xxxxxxxxx
begin
.
.
end;

markusj 22. Mai 2006 16:35

Re: if...then...else
 
Nach dem '*blubb fehlt ein '!
EDIT: und dem letzten End fehlt ein ;

alzaimar 22. Mai 2006 16:39

Re: if...then...else
 
'Label1' existiert vermutlich, aber vielleicht nicht aus 'Sicht' der Prozedur/Funktion/Methode, in dem Du auf das Label zugreifst.
Label1 ist bestimmt auf einer Form drauf, also ist sie ohne weiteres Zutun auch nur innerhalb der Form 'sichtbar'. "Innerhalb" bezieht sich hier auf Methoden der Klasse 'TForm1'.

Um auf deinen linken Fuß einzugehen, reicht es nicht, nur 'Linker Fuß' zu schreiben. Also, wenn Du mit dir selbst sprichst, oder VON dir, dann ja. Es würde dann (übertragen auf Delphi) heißen 'Mein.LinkerFuß' oder genau besser: 'Selbst.LinkerFuß'. Auf englisch wäre das 'Self.LeftFoot'.

Wenn ich (also ein anderes Objekt, oder als anderer Kontext) auf deinen linken Fuß Bezug nehme, dann muss ich auf 'Jari.LinkerFuß' Bezug nehmen.

Zurück zu deinem Label1: Innerhalb einer Methode der Form, in der Label1 deklariert wurde, kannst du mit 'Self.Label1' oder einfach nur 'Label1' darauf zugreifen. Von außerhalb eben mit 'MeineForm.Label1' (wenn Label1 eben in MeineForm deklariert wurde).

PS: Wir waren -glaube ich- ALLE anfangs zu 'blöd'. Is wie mit dem Radfahren: Zuerst fällt man ständig auf die Schnauze und irgendwann fragt man sich, wie man jemals wackelig auf einem Fahrrad sein konnte.

Jarie 22. Mai 2006 16:44

Re: if...then...else
 
Okay, ich fang nochmal an:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
Label1.Caption:= Label1.Caption + '1';
end;

begin
procedure TForm1.Button2Click(Sender: TObject);
begin
Label1.Caption:= Label1.Caption + '2';
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
Label1.Caption:= Label1.Caption + '3';
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
Label1.Caption:= Label1.Caption + '4';
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
Label1.Caption:= Label1.Caption + '5';
end;

procedure TForm1.Beenden1Click(Sender: TObject);
begin
Close;
end;

procedure TForm1.Button6Click(Sender: TObject);
begin
Label1.Caption:= Label1.Caption + '6';
end;

procedure TForm1.Button7Click(Sender: TObject);
begin
Label1.Caption:= Label1.Caption + '7';
end;

procedure TForm1.Button8Click(Sender: TObject);
begin
Label1.Caption:= Label1.Caption + '8';
end;

procedure TForm1.Button9Click(Sender: TObject);
begin
Label1.Caption:= Label1.Caption + '9';
end;

procedure TForm1.Button10Click(Sender: TObject);
begin
Label1.Caption:= Label1.Caption + '0';
end;
Das sind alle Eingaben meiner Zahlenbuttons von 0-9 für den Taschenrechner. Ich habe drei Labels. In Label1 kommt die erste Eingabe, wenn die voll geschrieben ist und man z.B. auf "+" drückt, sollen die nächsten Zahlen in das zweite Label eingefügt werden. Label1 und 2 werden beim Klick auf "=" (logisch) addiert etc. und ins 3. Label geschrieben (das schaff ich noch).
Nun will ich also, dass, wenn Label1 leer ist, alle Zahlen da rein kommen und wenn's voll ist, alle Zahlen ins Label2 kommen. deswegen if...then...else- Anweisung.
Ich hoffe, das versteht man ;).

Zum zweiten Post:

Hab's jetzt so, meckert immer noch:
Delphi-Quellcode:
begin
if (TForm1.Label5 = ' ') then
begin
Label5.Caption:= '*blubb*';
end
else
begin
Label5.Caption:= ' ';
end;
end;
[edit=alcaeus]Sharky hat dir ein paar Beitraege weiter oben erklaert, wie man die Delphi-Tags verwendet. Waere nett wenn du das auch tun koenntest ;) Mfg, alcaeus[/edit]

markusj 22. Mai 2006 16:47

Re: if...then...else
 
Punkt eins wurde gestrichen ... müll
2. Bitte verwende mal die Delphi-Tags, dann weir der Code hervorgehoben. (geht mit den Knöpfen über dem Eingabefeld)
3. Welche fehlermeldung bringt er, und welche Zeile ist markiert?

jfheins 22. Mai 2006 16:49

Re: if...then...else
 
Ich würde dir Empfehlen:

Mach eine globale Variable (oder ein private-Member der Form) CurrentLabel vom Typ TLabel.

Im FormCreate dann ein CurrentLabel := Label1;

Alle Eingaben gehen jetzt ins Label 1

In den ButtonXClicks machst du dann: CurrentLabel.Caption := CurrentLabel.Caption + '2';

Und in der Plus-Button-Methode kannst du dann ein CurrentLabel := Label4;oder so machen und alle Eingaben landen in Label 4 ;)

Klaus01 22. Mai 2006 16:49

Re: if...then...else
 
Delphi-Quellcode:
if (Label5.caption = '') then
  begin
    Label5.Caption:= '*blubb*';
  end
else
  begin
    Label5.Caption:= '';
  end;
end;
soll denn label5 kein Zeichen enthalten oder ein Leerzeichen?

Grüße
Klaus

Flare 22. Mai 2006 16:53

Re: if...then...else
 
Also um mal direkt den Fehler anzusprechen, du darfst nicht
Delphi-Quellcode:
if (TForm1.Label5 = ' ') then
schreiben, sondern du muss Form1 ansprechen, nicht TForm1! Wobei ich das einfach weglassen würde... :zwinker:


Flare

markusj 22. Mai 2006 16:54

Re: if...then...else
 
Das sollte aber alles nicht funktionieren!
Du musst grundsätzlich zwischen den beiden Eingabelabels unterscheiden.
Dann brauchst du einen Umschalter, der gesetzt wird, damit in das nächste Label geschreiben wird ...
Und mit deinem Code werden nur Strings verkettet, sprich wenn du auf den Button 9 drückst und vorher stand da '11', dann wird daraus nicht '20' sondern 119!
Alternativ emulierst du Tastatureingaben ... was ich aber an deiner Stelle lassen würde ;)

mfG

Markus

jfheins 22. Mai 2006 16:56

Re: if...then...else
 
Zitat:

Und mit deinem Code werden nur Strings verkettet, sprich wenn du auf den Button 9 drückst und vorher stand da '11', dann wird daraus nicht '20' sondern 119!
Dass sollte aber gewünscht sein - wenn du im Taschenrechner 1 und danach 2 drückst sollte ja auch 12 erscheinen und nicht 3 ;)

Jarie 22. Mai 2006 17:00

Re: if...then...else
 
Jetzt bin ich verwirrt Leute! ^^
Ja, das mit den Zeichenketten ist richtig, noch sollen die Zahlen nicht addiert werden, das kommt später- und das kann cih auch (muss ja auch was können ^^).
Das mit dem Current- Zeug peil ich erstmal gar nicht und das mit Form1. Label5 ist mri mittlerweile auch aufgefallen.
So, jetzt streicht er jedenfalls das hier an:

Delphi-Quellcode:
begin
if (Form1.Label5= ' ') then
begin
Label5.Caption:= '*blubb*';
end
else
begin
Label5.Caption:= ' ';
end;
end;
Also die zweite Klammer vor dem then. Würd mich interessieren, was er jetzt hat (das ganze mit dem Blubb etc. kommt nachher weg, war nur zur Veranschaulichung ^^.

Klaus01 22. Mai 2006 17:02

Re: if...then...else
 
Delphi-Quellcode:
begin
  if (Form1.Label5.caption = ' ') then // <--- caption fehlt
    begin
      Label5.Caption:= '*blubb*';
    end
  else
    begin
      Label5.Caption:= ' ';
   end;
end;

markusj 22. Mai 2006 17:04

Re: if...then...else
 
1. Welche Meldung bringt er?
2. DELPHI-TAG!!! Ist Als Delphi-Code beschriftet! (siehe Oben)

leddl 22. Mai 2006 17:05

Re: if...then...else
 
Zitat:

Zitat von Jarie
Delphi-Quellcode:
//[..]
if (Form1.Label5= ' ') then
//[..]
Also die zweite Klammer vor dem then. Würd mich interessieren, was er jetzt hat (das ganze mit dem Blubb etc. kommt nachher weg, war nur zur Veranschaulichung ^^.

Ein TLabel mit einem String zu vergleichen ist fast schlimmer als ein Äpfel-Birnen-Vergleich ;) Da fehlt ein ".Caption". Dazu kommt noch, daß du momentan auf ein Leerzeichen überprüfst. Willst du nicht evtl. wissen, ob das Label leer ist? Dann wäre '' richtig.

PS: Bitte, bitte bitte setz doch endlich die Delphi-Tags bei deinem Quellcode...

jfheins 22. Mai 2006 17:06

Re: if...then...else
 
Also, nochmal in Ausführlich:

- Du machst eine globale Variable vom Typ TLabel
Delphi-Quellcode:
var
Form1: TForm1;
CurrentLabel: TLabel;
Dann ersetzt du in den gazen Prozeduren Label1 durch CurrentLabel also z.B.:
Delphi-Quellcode:
procedure TForm1.Button4Click(Sender: TObject);
begin
CurrentLabel.Caption:= CurrentLabel.Caption + '4';
end;
Dann musst du in OnFormCreate (Im Designer auf die Form doppelklicken) noch ein
Delphi-Quellcode:
CurrentLabel := Label1;
machen.

In den Knöpfen für Plus, Minus usw. machst du jetzt ein
Delphi-Quellcode:
CurrentLabel := Label5; // Oder was halt dein zweites Label ist
Und fertig ;)

Jarie 22. Mai 2006 17:11

Re: if...then...else
 
Dankööö, hab tatsächlich die Caption vergessen ^^.

Jetzt steht das also alles so (schwere Geburt xD):

Delphi-Quellcode:
begin
if (Form1.Label5.Caption= ' ') then
begin
Form1.Label5.Caption:= '*blubb*';
end
else
begin
Form1.Label5.Caption:= ' ';
end;
end

procedure blabla
Jetzt akzeptiert der die Procedure nit ;). Blödes Computerchen ^^.

P.S.:
Ich find die Tags nit xD.

jfheins 22. Mai 2006 17:12

Re: if...then...else
 
Delphi-Quellcode:
begin
  if (Form1.Label5.Caption= ' ') then
  begin
    Form1.Label5.Caption:= '*blubb*';
  end
  else
  begin
    Form1.Label5.Caption:= ' ';
  end;
end; // <<< Semikolon fehlte

procedure blabla
Und bitte benutze endlich mal Delphi-Tags ;)

Code markieren und oben beim Beitragsschreiben auf "Delphi-Code" klicken oder

[delphi]<Code>[/delphi] schreiben

markusj 22. Mai 2006 17:15

Re: if...then...else
 
Wartest du eigentlich darauf dass dir irgendein Admin hinterherrennt und die Delphi-Tags einschaltet? Oder warum quälst du uns mit diesem Plaintext?
EDIT: Es gibt da so einen netten kleinen Knopf, der heisst "EDIT", mit dem kannst du deinen Beiträgen Delphi-Code-Tags hinzufügen.

mfG

Markus

Jarie 22. Mai 2006 17:18

Re: if...then...else
 
Ne, wenn ich'nen Semikolon mache, kommt gleich'ne Fehlermeldung, bei nix kommt keine xD. Beim Punkt kommt auch eine.

jfheins 22. Mai 2006 17:20

Re: if...then...else
 
Ach. Eine Fehlermeldung ? Was steht denn drin ?

markusj 22. Mai 2006 17:21

Re: if...then...else
 
Dann poste ENTWEDER den Code MIT Delphi-Tags, oder alternativ,
zähle mal deine Begins und Ends durch ... vielleicht hast du ja eins zuviel/vergessen ...
Ohne die Fehlermeldung können wir dir nicht helfen ... und meine Glaskugel ist gerade kaputt^^

EDIT: Roter KAsten, ich liebe dich ... erst erscheinst du wege NICHTs und jetzt lässt du mich im Stich

Jarie 22. Mai 2006 17:23

Re: if...then...else
 
Was meinst du jetzt mit "Caption fehlt"?
Ist doch anwesend oder? Hää? *jetztgarnixmehrpeil*

Na ja, wenigstens hab ich die Tags gefunden..... ähm.. ^^

Fehlermeldung? "." erwartet, aber ";" gefunden (wenn ich Semikolon nach End schreibe) und irgendwas von wegen "Bezeichner redefiniert: 'Finalization'".

markusj 22. Mai 2006 17:25

Re: if...then...else
 
Ich denke du hast irgendwo ein begin oder ein end zu viel/wenig ... ich würde mal auf end zuviel tippen ...
Wo steht denn der rote Balken?

Jarie 22. Mai 2006 17:34

Re: if...then...else
 
Delphi-Quellcode:
begin
  if (Form1.Label5.Caption='') and
    procedure TForm1.Button1Click(Sender: TObject);
begin
  Label1.Caption:= Label1.Caption + '1';
end;
or
procedure TForm1.Button2Click(Sender: TObject);
  begin
    Label1.Caption:= Label1.Caption + '2';
end;
or
procedure TForm1.Button3Click(Sender: TObject);
  begin
    Label1.Caption:= Label1.Caption + '3';
end;
or
procedure TForm1.Button4Click(Sender: TObject);
  begin
    Label1.Caption:= Label1.Caption + '4';
end;
or
procedure TForm1.Button5Click(Sender: TObject);
  begin
    Label1.Caption:= Label1.Caption + '5';
end;
or
procedure TForm1.Button6Click(Sender: TObject);
  begin
    Label1.Caption:= Label1.Caption + '6';
end;
or
procedure TForm1.Button7Click(Sender: TObject);
  begin
    Label1.Caption:= Label1.Caption + '7';
end;
or
procedure TForm1.Button8Click(Sender: TObject);
  begin
    Label1.Caption:= Label1.Caption + '8';
end;
or
procedure TForm1.Button9Click(Sender: TObject);
  begin
    Label1.Caption:= Label1.Caption + '9';
end;
or
procedure TForm1.Button10Click(Sender: TObject);
  begin
    Label1.Caption:= Label1.Caption + '0';
end; then
  begin
    Form1.Label5.Caption:=Form1.Label1.Caption;
end
else
  Form1.Label6.Caption:=Form1.Label1.Caption;
end;
end
Der rote Balken ist ganz oben in der Zeile mit Procedure, also dritte Zweile (glaub).
Ich hab jetzt mal alles so hingeschrieben wie ich's haben will, geht natürlich nit ^^.

jfheins 22. Mai 2006 17:37

Re: if...then...else
 
Has tdu dir üerhaupt meine beiden Beiträge genau durchgelesen ?

Diese if-Kontruktion kann gar nicht funktionieren ...

leddl 22. Mai 2006 17:38

Re: if...then...else
 
Zitat:

Zitat von Jarie
Delphi-Quellcode:
begin
  if (Form1.Label5.Caption='') and
    procedure TForm1.Button1Click(Sender: TObject);
[...]
end
Der rote Balken ist ganz oben in der Zeile mit Procedure, also dritte Zweile (glaub).
Ich hab jetzt mal alles so hingeschrieben wie ich's haben will, geht natürlich nit ^^.

Und an den Zeilen fällt dir wirklich nichts auf? :gruebel:

Jarie 22. Mai 2006 17:41

Re: if...then...else
 
Ne, mir fällt nix auf, sonst hätt ich das Prob ja schon gelöst xD.

@jfheins
Ich hab sie gelesen, logisch, aber der Typsel hat mir bei Current erstmal schön'ne fette Fehlermeldung angezeigt ^^. Deswegen hab ich#s jetzt nit reingemacht, aber ich kann's ja nochmal probben...

leddl 22. Mai 2006 17:45

Re: if...then...else
 
Zitat:

Zitat von Jarie
Ne, mir fällt nix auf, sonst hätt ich das Prob ja schon gelöst xD.

Dann solltest du dich evtl. nochmal mit den Grundlagen befassen ;)
Du fängst mit einer if-Bedingung an, brichst diese dann aber einfach so ab, ohne daß sie einen Sinn ergibt. Nimm also einfach mal das erste if raus. Zudem hast du (obwohl es jetzt schon x-mal gesagt wurde) immer noch nicht den Punkt hinter das letzte end gesetzt...

markusj 22. Mai 2006 17:48

Re: if...then...else
 
Andere Frage ... was soll dieses Konstrukt bewirken?

Jarie 22. Mai 2006 18:18

Re: if...then...else
 
Was das bewirken soll? siehe Anfang des Threads Oo. ^^

Na ja, hab jetzt allet umstrukturiert, jetzt meckert er wegen dem Punkt am Ende xDDD.

Delphi-Quellcode:
unit rechnen;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    Button7: TButton;
    Button8: TButton;
    Button9: TButton;
    Button10: TButton;
    Button11: TButton;
    Button12: TButton;
    Button13: TButton;
    Button14: TButton;
    Button15: TButton;
    Label1: TLabel;
    MainMenu1: TMainMenu;
    Datei1: TMenuItem;
    Beenden1: TMenuItem;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Beenden1Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure Button8Click(Sender: TObject);
    procedure Button9Click(Sender: TObject);
    procedure Button10Click(Sender: TObject);
    procedure Button11Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  CurrentLabel: TLabel;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
Form1.Label1.Caption:= Form1.Label1.Caption + '1';
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Form1.Label1.Caption:= Form1.Label1.Caption + '2';
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
Form1.Label1.Caption:= Form1.Label1.Caption + '3';
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
Form1.Label1.Caption:= Form1.Label1.Caption + '4';
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
Form1.Label1.Caption:= Form1.Label1.Caption + '5';
end;

procedure TForm1.Button6Click(Sender: TObject);
begin
Form1.Label1.Caption:= Form1.Label1.Caption + '6';
end;

procedure TForm1.Button7Click(Sender: TObject);
begin
Form1.Label1.Caption:= Form1.Label1.Caption + '7';
end;

procedure TForm1.Button8Click(Sender: TObject);
begin
Form1.Label1.Caption:= Form1.Label1.Caption + '8';
end;

procedure TForm1.Button9Click(Sender: TObject);
begin
Form1.Label1.Caption:= Form1.Label1.Caption + '9';
end;

procedure TForm1.Button10Click(Sender: TObject);
begin
Form1.Label1.Caption:= Form1.Label1.Caption + '0';
end;

procedure TForm1.Button11Click(Sender: TObject);
begin
CurrentLabel:=Label5;
CurrentLabel.Caption:= Form1.Label1.Caption;
Form1.Label1.Caption:= '';
end;

procedure TForm1.Beenden1Click(Sender: TObject);
begin
Close;
end;

begin
if (Form1.Label5.Caption='') then
begin
Form1.Label1.Caption:=Form1.Label5.Caption;
end
else
begin
Form1.Label1.Caption:=Form1.Label6.Caption;
end;
end

end.
Das ist jetzt mal die gesamte Anwendung, mal sehen, ob ihr was rauskriegt ^^.

BenjaminH 22. Mai 2006 18:23

Re: if...then...else
 
Zitat:

Zitat von Jarie
Delphi-Quellcode:
begin
if (Form1.Label5.Caption='') then
begin
Form1.Label1.Caption:=Form1.Label5.Caption;
end
else
begin
Form1.Label1.Caption:=Form1.Label6.Caption;
end;
end

end.

Wann soll das ausgeführt werden?

leddl 22. Mai 2006 18:24

Re: if...then...else
 
Delphi-Quellcode:
//[...]
procedure TForm1.Beenden1Click(Sender: TObject);
begin
  Close;
end;

begin
  if (Form1.Label5.Caption='') then
  begin
    Form1.Label1.Caption:=Form1.Label5.Caption;
  end
  else
  begin
    Form1.Label1.Caption:=Form1.Label6.Caption;
  end;
end

end.
So, wir haben eine Prozedur, die einwandfrei abgeschlossen wird. Danach fängst du mit einem Begin an, ohne dich in irgendeiner Methode zu bewegen -> geht nicht...
Zum anderen fehlt am vorletzten end jetzt ein Strichpunkt :roll:

PS: Tu dir selbst einen Gefallen und rück deinen Quelltext ein bißchen ein. Das kann man ja kaum anschauen sowas ;)

Jarie 22. Mai 2006 18:27

Re: if...then...else
 
Wann dat passieren soll? Ja, wenn halt im Label 1 was steht, aber im andren nit... Muss ich wohl die Labels vertauschen... ^^

Ja, ich weiß, das Semikolon, aber da meckert dat Delphiprog immer, wenn ich det mache... ^^

jfheins 22. Mai 2006 18:31

Re: if...then...else
 
Ausserdem hast du meinen Rat nicht richtig umgesetzt. Ich habe gesagt, du sollt

1. in deinen zig Methoden statt
Delphi-Quellcode:
procedure TForm1.Button7Click(Sender: TObject);
begin
Form1.Label1.Caption:= Form1.Label1.Caption + '7';
end;
eifach das schreiben:
Delphi-Quellcode:
CurrentLabel.Caption:= CurrentLabel.Caption + '7';
Und das
Delphi-Quellcode:
CurrentLabel:=Label5;
CurrentLabel.Caption:= Form1.Label1.Caption;
Form1.Label1.Caption:= '';
ist natürlich Quark.
Wenn das der Plus/Minus/Mal/Geteilt Button ist müsse das so aussehn:
Delphi-Quellcode:
CurrentLabel:=Label5;
LabelX.Caption := '+'; // Für den Operator
Ausserdem hab' ich was von FormCreate geschrieben usw. ...

Jarie 22. Mai 2006 18:38

Re: if...then...else
 
Da fällt mir ein, dass ich was hab vergessen zu erwähnen xD.
Also, alle Zahlen kommen erst ins Label1, werden da halt als Zeichenkette gesammelt und sollen dann halt entweder in Label5 oder Label6 kommen, wenn Label5 voll ist und man auf eines der Rechenoperatoren drückt, soll die Zeichenkette dann da auftauchen.

Aber ich denk mal, das konnte man inzwischen auch schon aus dem Quellcode erschließen...

Ja, ich hab das ja mit dem Current und so gemacht, aber das ging dann alles durcheinander! Da drückte man dann auf die Zahl und auf's +, dann kam das plötzlich in ein ganz anderes Label... Deswegen hab ich das wieder rausgenommen...

jfheins 22. Mai 2006 19:12

Re: if...then...else
 
:wiejetzt:

Ich dachte bis jetzt du wolltest das so machen, dass

- Erst Zahlen eingegeben werden können

- Dann + oder - etc. gedrückt wird

- Daraufhin Zahlen in einem anderen Label eingegeben werden

- = gedrüclt wird und

- Das ergebnis in einem dritten Label erscheint

Oder wie hattest du das vor ?

Jarie 22. Mai 2006 19:20

Re: if...then...else
 
Ja, das hab ich jetzt mittlerweile so vor.
Dann fiel mri aber grade noch ein Problem auf:
Zahl kommt ins 1. Label
+ drücken und zahlen sollen ins Zweite
= drücken und Computer soll addieren, woher soll der Com aber wissen, wenn man nachher noch mehrere Rechenoperatoren hat, was er jetzt rechnen muss? Ob Plus oder Minus oder geteilt?
Also mittlerweile sieht's bei mir so aus:

Delphi-Quellcode:
var
  Form1: TForm1;
  CurrentLabel: TLabel;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
  begin
    CurrentLabel.Caption:= Form1.Label5.Caption + '1';
end;

procedure TForm1.Button2Click(Sender: TObject);
  begin
    CurrentLabel.Caption:= Form1.Label5.Caption + '2';
end;

procedure TForm1.Button3Click(Sender: TObject);
  begin
    CurrentLabel.Caption:= Form1.Label5.Caption + '3';
end;

procedure TForm1.Button4Click(Sender: TObject);
  begin
    CurrentLabel.Caption:= Form1.Label5.Caption + '4';
end;

procedure TForm1.Button5Click(Sender: TObject);
  begin
    CurrentLabel.Caption:= Form1.Label5.Caption + '5';
end;

procedure TForm1.Button6Click(Sender: TObject);
  begin
    CurrentLabel.Caption:= Form1.Label5.Caption + '6';
end;

procedure TForm1.Button7Click(Sender: TObject);
  begin
    CurrentLabel.Caption:= Form1.Label5.Caption + '7';
end;

procedure TForm1.Button8Click(Sender: TObject);
  begin
    CurrentLabel.Caption:= Form1.Label5.Caption + '8';
end;

procedure TForm1.Button9Click(Sender: TObject);
  begin
    CurrentLabel.Caption:= Form1.Label5.Caption + '9';
end;

procedure TForm1.Button10Click(Sender: TObject);
  begin
    CurrentLabel.Caption:= Form1.Label5.Caption + '0';
end;

procedure TForm1.Button11Click(Sender: TObject);
  begin
    Form1.Label5.Caption:= CurrentLabel.Caption;
end;

procedure TForm1.Beenden1Click(Sender: TObject);
  begin
    Close;
end;

procedure TForm1.FormCreate(Sender: TObject);
  begin
    CurrentLabel:=Form1.Label5;
end;

end.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:55 Uhr.
Seite 1 von 2  1 2      

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