![]() |
if-Funktion will nicht
Hallo..hab folgendes Problem
Delphi-Quellcode:
ich weiss nicht wieso diese funktion nicht funktioniert..sollte eigentlich gehen..sollte nur ein leichtsinnsfehler drin sein..sorry bei Verbringen des ganzen tages vor dem Rechner kann sowas schon passieren..
if Label7.Caption = 'ID' then
begin Button1.Enabled := TRUE; end else if Label7.Caption = 'kein Eintrag' then begin Button1.Enabled := TRUE; end else Button1.Enabled := FALSE; sorry...hoffe jemand findet den Fehler nochmal kurz was ich machen will: wenn im Label 'ID' oder 'kein Eintrag' steht soll der Button "inaktiv" werden wenn alles andere drin steht dann soll er funktionieren. sorry NACHTRAG..statt inaktiv --> aktiv..sorry nochmals :( |
Re: if-Funktion will nicht
Du hast TRUE und FALSE verwechselt.
Grüße vom marabu |
Re: if-Funktion will nicht
Wie wärs damit:
button1.enabled:=not((label7.caption='ID')or(label 7.caption='kein Eintrag')); Das ist schön elegant. Nebenbei, deine Lösung macht genau das Gegenteil von dem, was du willst, das ist klar zu erkennen. Wenn da ID oder kein Eintrag drin steht, wird der Button enabled. |
Re: if-Funktion will nicht
Hallo,
Du kannst es aber auch so machen:
Delphi-Quellcode:
Es ist nicht notwendig eine Variable "S" zu erzeugen. Nur ich lade gerne sowas auf eine Variable - ich finde, dass es sich so leichter und einfacher programmieren lässt - aber das ist geschmackssache
var
S: String; begin S := Label7.Caption; Button1.Enabled := not ((S = 'ID') or (S = 'kein Eintrag')); |
Re: if-Funktion will nicht
Das ist nicht einmal so schlecht. Denn label7.caption ist eine Property, Properties sind Funktionen, Funktionen belasten den Prozessor sinnlos, wenn man sie zwei mal aufruft, obwohl man den Wert auch auslagern könnte.
|
Re: if-Funktion will nicht
Äh, mittlerweile haben die Prozessoren eine Taktrate, wo das wohl weniger ins Gewicht fällt. Und wie argumentierst du, wenn ich dir sagen würde, dass die Variable unnötig Platz im Speicher belegt, wenn ich doch jedesmal die Funktion aufrufen könnte? Ob man hier nun die Funktion einmal aufruft und das Ergebnis in einer Variable ablegt oder ob man die Funktion zweimal aufruft bleibt sich letztendlich gleich.
|
Re: if-Funktion will nicht
mein Delphi scheint kaputt zu sein denn bei mir funktioniert der Code nicht.
ich versuch es mal mit einem Neustart..vielleicht geht es dann.. denn jetzt bleibt der Button immer Inaktiv, egal ob jetzt 'ID' oder 'kein Eintrag' oder sonstwas drin steht :( |
Re: if-Funktion will nicht
Zitat:
|
Re: if-Funktion will nicht
Wenn man die Variable doch danach gleich wieder freigibt, sind das ein baar Byte, die für <1 ms den Speicher belegen. Dürfte kein allzu großes Problem sein.
Klar, bei zwei Aufrufen ist das sch..., äh, ziemlich egal, aber bei ein paar Aufrufen mehr... So ne Million oder was weiß ich... OK, warum sollte man 1 Million mal die Caption eines Labels abrufen... |
Re: if-Funktion will nicht
Moin Avax2k,
hast Du beachtet, dass Gross-/Kleinschreibung bei dem Vergleich wichtig ist? Vielleicht solltest Du für die Strings Konstanten anlegen, die Du dann auch zum Füllen der Captions benutzt, dann kannst Du sicher sein, dass Du nicht auf einen Tippfehler aufläufst. @3_of_8: properties sind keine Funktionen, es kann sein, dass sie über Methoden (Getter/Setter) angesprochen werden, aber das ist nicht zwingend. |
DP-Maintenance
Dieses Thema wurde von "Christian Seehase" von "Windows API / MS.NET Framework API" nach "Object-Pascal / Delphi-Language" verschoben.
Kein Windows-API-Problem |
Re: if-Funktion will nicht
Es ist IMHO eh etwas umständlich, das so zu machen. Über die Caption von dem Label. Ein Boolean wäre da wesentlich schneller/übersichtlicher/eleganter.
|
Re: if-Funktion will nicht
Die Antwort kommt jetzt von mir zwar etwas verspätet aber es lag irgendwie an Delphi, nach dem Neustart haben meine Codezeilen problemlos funktioniert..weiss auch nicht wieso das vorher nicht ging.
Jedenfalls danke für den Code mit der Zusammenfassung, der ist wirklich geschickt. Meine Frage noch, die ich hätte, verbraucht sowas weniger Speicher, ich meine ob ich jetzt 1 Zeile oder 10 Zeilen schreibe, gibt sich da etwas ? |
Re: if-Funktion will nicht
Kann man so nicht sagen. Es kann poassieren, dass der Compiler unter Umständen längeren Code sogar besser optimieren kann. Da hilft nur eins, den generierten ASM Code zu vergleichen und dann von Fall zu Fall zu entscheiden. Aber in der Reegel bringt diese Art der Optimierung wenig bis gar nichts. Eine Optimierung des Algorithmusses ist da wesentlich effizienter.
|
Re: if-Funktion will nicht
Also ich würd mir überlegen, ob
nicht an der Stelle an der das Caption des Labels gesetzt wird auch gleich der Button mit en/disabled wird. Das würd ich eleganter finden. mfg derDan |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:54 Uhr. |
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