Entwickler-Ecke
Sonstiges (Delphi) - IF-then funktioniert nicht
Fluffy19 - Mi 29.10.08 17:29
Titel: IF-then funktioniert nicht
Hi!
Ich wollte, um ein paar Noobs zu verarschen (nichts gegen Noobs, bin selbst ein Noob was Delphi angeht!) ein kleines Programm schreiben.
Wir haben in der Schule jetzt mit Delphi angefangen und deshlab habe ich noch nicht soviel Ahnung!
Also folgender Quellcode:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| procedure TForm1.Button1Click(Sender: TObject); begin Button1.Caption := 'Bitte warten!'; if Edit1 <0 then Canvas.Textout(Form1.Width div 3,Form1.height div 4,'geben Sie eine IP Adresse ein!') else Canvas.Textout(Form1.Width div 3,Form1.height div 4,'Verbindung wird aufgebaut...'); Sleep(1 * 1000); Canvas.Textout(Form1.Width div 4,Form1.height div 2,'Fehler: Die Verbindung wurde durch eine Firewall geblockt!');
end; |
Wenn in Edit1 nichts eingetragen ist soll die Meldung geben sie eine Ip Adresse ein! angezeigt werden.
STeht in Edit 1 jedoch etwas soll die Fehlermeldung Verbindung geblockt kommen.
Es wäre nett wenn jemand einem Anfänger auf die Sprünge helfen könnte!
Fluffy
Moderiert von
Christian S.: Delphi-Tags hinzugefügt
Apollo - Mi 29.10.08 17:35
:welcome: im Forum!!
Würde ich so machen:
Delphi-Quelltext
1: 2: 3: 4: 5:
| If edit1.text = '' then Showmessage('geben sie eine Ip Adresse ein') else Sleep(1 * 1000); Showmessage('Verbindung geblockt'); |
habs nicht getestet müsste aber funtzen
Tipp: Stelle den code in Delphi-Tags, erhöht die lesbarkeit :wink:
Delete - Mi 29.10.08 17:36
Du schreibst alles direkt hintereinander, d.h. es sieht im laufenden Programm so aus, als würde alles gleichzeitig ausgeführt werden (stimmt ja auch beinahe). Und if Edit1 <0 macht keinen Sinn, wenn, dann z.B. mit if Length(Edit1.Text) = 0
Fluffy19 - Mi 29.10.08 17:37
danke!
funktioniert!
Delete - Mi 29.10.08 17:39
Du musst prüfen wie viele Zeichen im Edit stehen.Das geht mit length() :P
Edit: Das kommt davon wenn man mal kurz au Klo geht: 4 Minuten zu spät!
Apollo - Mi 29.10.08 17:48
Warum machst du es eigendlich mit TCanvas? Nim doch einfach label1.caption:= 'Dein Text'. Kann man dann besser positionieren und ist auch generel geläufiger als Buchstaben zu zeichnen :mrgreen:
Fluffy19 - Mi 29.10.08 17:53
gibt es die möglichkeit nach then Showmessage('Geben sie eine Ip Adresse ein!')
noch ein Close einzufügen obwohl danach elso kommt?
Delete - Mi 29.10.08 17:56
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| if Bedingung then begin MachWas; MachNochwas; end else begin MachWasAnderes; MachNochwasAnderes; end; |
Delete - Mi 29.10.08 18:00
@Apollo: Ich finde das durchaus nützlich.Man kann mit einem sachten Form1.repaint alles wieder wegbekommen.Mit nem Label geht das nicht.Dafür
bietet das Label aber andere Vorteile. 8)
Fluffy19 - Mi 29.10.08 18:01
if Bedingung then
begin
MachWas;
MachNochwas;
Machnochwas geht leider nicht -> ohne end -> ; nicht erlaubt vor else
mit end-> ; erwartet aber else gefunden ->Abbruch
Delete - Mi 29.10.08 18:02
Zeig mal Deinen Code.
Fluffy19 - Mi 29.10.08 18:05
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| procedure TForm1.Button1Click(Sender: TObject); begin Button1.Caption := 'Bitte warten!'; If edit1.text = 'Ip Adresse eingeben' then Showmessage('Geben sie eine Ip Adresse ein!'); close; end else begin label2.caption:= 'Verbindung wird hergestellt...'; Sleep(2* 1000); Canvas.Textout(Form1.Width div 4,Form1.height div 2,'Fehler: Die Verbindung wurde durch eine Firewall geblockt!');
end; |
Delete - Mi 29.10.08 18:07
Da fehlt das
begin nach dem ersten
then.
Edit: Versuche mal deinen Code zu strukturieren.
So:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| begin if ich.hunger < 0 then ich.goto(Kuehlschrank) else begin ich.siton(stuhl); ich.play_or_programming; end; end; |
€:Am Ende fehlt auch noch ein
end!
Marc. - Mi 29.10.08 18:07
Fluffy19 hat folgendes geschrieben : |
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| procedure TForm1.Button1Click(Sender: TObject); begin Button1.Caption := 'Bitte warten!';
If edit1.text = 'Ip Adresse eingeben' then begin Showmessage('Geben sie eine Ip Adresse ein!'); close; end else begin label2.caption:= 'Verbindung wird hergestellt...'; Sleep(2* 1000); Canvas.Textout(Form1.Width div 4,Form1.height div 2,'Fehler: Die Verbindung wurde durch eine Firewall geblockt!'); end; end; | |
Da fehlt ein Begin und ein End;
€: Komplett eingerückte Version einen Post unter diesem.
Delete - Mi 29.10.08 18:07
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| procedure TForm1.Button1Click(Sender: TObject); begin Button1.Caption := 'Bitte warten!'; If edit1.text = 'Ip Adresse eingeben' then begin Showmessage('Geben sie eine Ip Adresse ein!'); close; end else begin label2.caption:= 'Verbindung wird hergestellt...'; Sleep(2* 1000); Canvas.Textout(Form1.Width div 4,Form1.height div 2,'Fehler: Die Verbindung wurde durch eine Firewall geblockt!'); end; end; |
[edit] Gewöhn Dir am besten sofort eine anständige Einrückung an, dann sieht man so etwas gleich auf den ersten Blick [/edit]
Fluffy19 - Mi 29.10.08 18:12
Jetzt geht alles wie ichs gern hätte!
Einrückung werd ich mir angewöhnen ;-)
Ich bin echt erstaunt, dass man hier so schnell Antworten bekommt!
In anderen Foren wartet man Tage...
Delete - Mi 29.10.08 18:14
Fluffy19 hat folgendes geschrieben : |
Ich bin echt erstaunt, dass man hier so schnell Antworten bekommt!
In anderen Foren wartet man Tage... |
Delphi-Forum eben. :D Schön ,dass es dir bei uns gefällt! :beer:
Apollo - Mi 29.10.08 18:15
j.klugmann hat folgendes geschrieben : |
@Apollo: Ich finde das durchaus nützlich.Man kann mit einem sachten Form1.repaint alles wieder wegbekommen.Mit nem Label geht das nicht.Dafür
bietet das Label aber andere Vorteile. 8) |
Klar geht das:
Label1.caption:= ''. Ist zwar noch da aber trotzdem sieht man nichs.
Delete - Mi 29.10.08 18:18
Geniales Ding!Das wird mein neuer Standart-Post sein , für Leute die nicht einrücken.
@Apollo:Das ist aber viel aufwendiger! :wink:
Apollo - Mi 29.10.08 18:24
j.klugmann hat folgendes geschrieben : |
@Apollo:Das ist aber viel aufwendiger! :wink: |
Jaja, jedem das seine. Finde Label einfach prakticher.
@Marc. Nettes Tool, vergess auch öffters mal einrücken, ist am Anfang noch nicht so schlimm aber wenn deine Texte größer werden verglierst du den Durchblick. Echt nützlich :zustimm:
Delete - Mi 29.10.08 18:31
Ich finde Labels auch praktischer ,allerdings in diesem Fall nicht. :lol:
Apollo - Mi 29.10.08 18:41
Und warum nicht? In dem Fall sehe ich keinen Grund mit TCanvas zu arbeiten, es macht noch mehr Arbeit die exakte position zu ermitteln wo man hin zeichnen muss. Labels kann man einfach verschieben.
Delete - Mi 29.10.08 18:45
Es hat ja keinen tieferen Sinn.Es soll einfach nur da stehen ,mehr nicht.Ich finde es ehrlich gesagt
ziemlich egal was man auwählt.
Apollo - Mi 29.10.08 18:47
Stimmt, soll ja eh nur andere verappeln und nich Microsoft konkurenz machen.
Hidden - Mi 29.10.08 21:02
Titel: Re: IF-then funktioniert nicht
Hi,
Fluffy19 hat folgendes geschrieben : |
Ich wollte, um ein paar Noobs zu verarschen (nichts gegen Noobs, bin selbst ein Noob was Delphi angeht!) ein kleines Programm schreiben. |
Na das ist ja mal eine ehrenhafte Einstellung :roll: Das Schreiben sogenannter 'Spaßprogramme' wird übrigens durch dieses Forum nicht unterstützt.
Nebenbei wüsste ich nicht, warum dein Programm nur neulinge 'verarschen' kann. Auch ein Experte wird sich wohl erst die Netzwerkaktivitäten deines Programmes ansehen müssen, um das festzustellen :!:
Dude566 - Mi 29.10.08 21:30
Ich würde auch besser Label.Caption verwenden ist am Anfang leichter zu verstehen, bin schon eine Weile Anfänger und mir ging es so.
Delete - Mi 29.10.08 21:39
Das finde ich nicht.Bin zwar kein Anfänger mehr aber trotzdem.Es scheint so als wenn Fluffy19
es verstanden hat mit Funktionen und Prozeduren umzugehen. :shock:
Delete - Do 30.10.08 15:57
Das Label hat btw. noch einen anderen Vorteil: es bleibt auch nach Neuzeichnen des Fensters sichtbar ;)
Hidden - Do 30.10.08 18:29
Apollo hat folgendes geschrieben : |
Warum wird es nicht unterstützt? Solange es kein Virus werden soll, und er nur seine Freunde etwas "verarschen" will, ist das doch nichts schlimmes, oder? |
Fällt trotzdem unter 'Spaßprogramme'. Und dafür, dass das unter Freunden bleibt, gibt es ja wohl nur sein Wort auf unseren Bildschirmen :mrgreen:
Aber: Überzeugt. Wenn wir dieses Spaßprogramm verhindern wollten, müssten wir ja verhindern, dass jemals elementare Programmierkenntnisse erworben werden :D
Trotzdem: Such' dir 'was Vernünftiges :mahn: ein eigener Taschenrechner oder so etwas ist z.B. immer praktisch, wenn man es dann ab und zu weiterentwickelt ;)
mfG,
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!