Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Problem mit bedingung


110022 - Di 30.10.07 19:09
Titel: Problem mit bedingung
Was ist hierdran falsch??


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
procedure TForm1.N1Click(Sender: TObject);
begin
if not Memo1.lines:='' then showmessage('Hallo');
end;

end.


Agawain - Di 30.10.07 19:10

Hi

Du verwendest den Zuweisungsoperator := in der if Abfrage, richtig wäre =


110022 - Di 30.10.07 19:26

kann aber nich sein.
habs schon probiert
da muss es ne andere lösung geben


Blackheart666 - Di 30.10.07 19:31

user profile icon110022 hat folgendes geschrieben:
kann aber nich sein.
habs schon probiert
da muss es ne andere lösung geben

Na sicher, was soll das auch werden ?
Vieleicht könntest Du mal schreiben was Du damit bezweckst, vieleicht ist auch Memo die falsche Komponente...


jaenicke - Di 30.10.07 19:32

Memo1.Lines ist eine Liste von Zeilen, d.h. Strings während '' nur ein String ist ;-).
Der gesamte Text in dem Memo ist Memo1.Text, und das kannst du mit '' vergleichen, wie du es ja versucht hast.


dummzeuch - Di 30.10.07 19:35
Titel: Re: Problem mit bedingung
user profile icon110022 hat folgendes geschrieben:
Was ist hierdran falsch??


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
procedure TForm1.N1Click(Sender: TObject);
begin
if not Memo1.lines:='' then showmessage('Hallo');
end;

end.


Da sind gleich drei Fehler drin:
1. TMemo.Lines ist vom Typ TStrings und kann deshalb nicht mit einem String verglichen werden.
2. := ist der Zuweisungsoperator, Du willst aber vergleichen, dafuer muss = verwendet werden
3. not bindet staerker als der Vergleichsoperator, deshalb brauchst Du Klammern

Alternativen:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
if not (Memo1.Lines.Count = 0then ...

if Memo1.Lines.Count <> 0 then ...

if not (Memo1.Lines.Text = ''then ...

if Memo1.Lines.Text <> '' then ...


twm


Blackheart666 - Di 30.10.07 20:25

user profile icondummzeuch hat folgendes geschrieben:
Alternativen:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
if not (Memo1.Lines.Count = 0then ...

if Memo1.Lines.Count <> 0 then ...

if not (Memo1.Lines.Text = ''then ...

if Memo1.Lines.Text <> '' then ...

Das ist glaub Ich dummes Zeug, entweder das was jaenicke schon geschrieben hat oder mal den Fragesteller noch eimal fragen worauf das ganze hinauslaufen soll.

Moderiert von user profile iconNarses: Quote gekürzt.


Marc. - Di 30.10.07 23:42

user profile iconBlackheart666 hat folgendes geschrieben:

Das ist glaub Ich dummes Zeug, entweder das was jaenicke schon geschrieben hat oder mal den Fragesteller noch eimal fragen worauf das ganze hinauslaufen soll.

Ist alles vollkommen korrekt, was user profile icondummzeuch geschrieben hat! :?

grüße,
Marc


jaenicke - Mi 31.10.07 00:24

Genau, denn Memo1.Lines.Text ist das selbe wie Memo1.Text, was ich geschrieben hatte...


Agawain - Mi 31.10.07 00:35

Hi

cool down boys :mrgreen:

m.e. geht es hier um eine Variante von 'Hello World'

also ansich völlig sinnfrei

m.e. hat dummzeuch hier den Vogel abgeschossen...sagt zumindest meine Kristallkugel

hihi

ne, ich lass es


dummzeuch - Mi 31.10.07 10:46

user profile iconjaenicke hat folgendes geschrieben:
Genau, denn Memo1.Lines.Text ist das selbe wie Memo1.Text, was ich geschrieben hatte...


Nein. Memo1.Text ist eine Property, die von TCustomEdit stammt und von TMemo nicht ueberschrieben wird. Sie ist AFAIR immer ein leerer String.

twm


jaenicke - Mi 31.10.07 12:08

user profile icondummzeuch hat folgendes geschrieben:
Nein. Memo1.Text ist eine Property, die von TCustomEdit stammt und von TMemo nicht ueberschrieben wird. Sie ist AFAIR immer ein leerer String.
Probier es bitte einfach mal aus... Diese Aussage ist definitiv falsch...


dummzeuch - Mi 31.10.07 14:46

user profile iconjaenicke hat folgendes geschrieben:
user profile icondummzeuch hat folgendes geschrieben:
Nein. Memo1.Text ist eine Property, die von TCustomEdit stammt und von TMemo nicht ueberschrieben wird. Sie ist AFAIR immer ein leerer String.
Probier es bitte einfach mal aus... Diese Aussage ist definitiv falsch...

Ok, bei Delphi 2007 ist es aequivalent. Ich erinnere mich allerdings dunkel, dass ich mich bei einer der frueheren Versionen (Delphi 5?) mal vertippt hatte und stundenlang den Fehler gesucht habe.


jaenicke - Mi 31.10.07 15:05

Seltsam, dass es bei D5 so ist (wie du ja sagst)...
Bei Delphi 3, 6, 7, 2005, 2006 und 2007 funktioniert es (mehr Versionen habe ich nicht zur Verfügung).