Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi If-Abfrage wird ignoriert (D7) (https://www.delphipraxis.net/197653-if-abfrage-wird-ignoriert-d7.html)

Hobbycoder 24. Aug 2018 14:13

If-Abfrage wird ignoriert (D7)
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,

ich habe gerade ein etwas merkwürdiges Problem. In einem alten D7-Projekt muss ich ein paar Erweiterungen machen.
Delphi-Quellcode:
procedure TAuslastungList.SetZT(wer: string; ZT, zegeplant: Integer);
var
  ma: TAuslastungMA;
begin
  if wer<>'' then
  begin
    ma:=self.ItemByWer(wer);
    if not Assigned(ma) then
    begin
      ma:=TAuslastungMA.Create;
      ma.Wer:=wer;
      self.Add(ma);
    end;
    .
    .
    .
  end;
end;
Nach meinem Verständnis sollte also der Block nur ausgeführt werden, wenn in Wer ein string vorhanden ist.
Komischerweise wird aber der Block trotzdem ausgeführt. Ich kann's mir nicht erklären.
Eigentlich was ganz banales, aber ich steh irgendwie auf dem Schlauch.

Hab mal ein Screenshot angehängt. Darin kann man sehen, was der debugger auswirft.

hoika 24. Aug 2018 14:14

AW: If-Abfrage wird ignoriert (D7)
 
Hallo,
mach mal ein
Delphi-Quellcode:
Length(wer)
und vor dem Create eine MessageBox.

Uwe Raabe 24. Aug 2018 14:15

AW: If-Abfrage wird ignoriert (D7)
 
Sieht aus als enthält der String wer ein Leerzeichen.

Hobbycoder 24. Aug 2018 14:19

AW: If-Abfrage wird ignoriert (D7)
 
Oh Mann, das ist schon fast peinlich ;-)
Danke Uwe.

mkinzler 24. Aug 2018 15:31

AW: If-Abfrage wird ignoriert (D7)
 
Delphi-Quellcode:
if Trim(wer<>'') then
und Leerzeichen werden zum Vergleichen entfernt.

Delphi.Narium 24. Aug 2018 15:35

AW: If-Abfrage wird ignoriert (D7)
 
Wenn aber das Leerzeichen erlaubt ist und nur ein Leerstring die Bedingung erfüllt?
Delphi-Quellcode:
if Length(wer) = 0 then

Neutral General 24. Aug 2018 16:23

AW: If-Abfrage wird ignoriert (D7)
 
Zitat:

Zitat von mkinzler (Beitrag 1411568)
Delphi-Quellcode:
if Trim(wer<>'') then
und Leerzeichen werden zum Vergleichen entfernt.

Inkompatible Typen String und Boolean ;) :P

KodeZwerg 24. Aug 2018 16:44

AW: If-Abfrage wird ignoriert (D7)
 
Delphi-Quellcode:
if Length(Trim(wer)) > 0 then

Sollte funktionieren.

Delphi.Narium 24. Aug 2018 16:57

AW: If-Abfrage wird ignoriert (D7)
 
Zitat:

Zitat von KodeZwerg (Beitrag 1411583)
Delphi-Quellcode:
if Length(Trim(wer)) > 0 then

Sollte funktionieren.

Aber nur, wenn führende und folgende Leerzeichen zu ignorieren sind, bzw. ein nur aus Leerzeichen bestehender String mit einem Leerstring gleichzusetzen ist.

KodeZwerg 24. Aug 2018 17:05

AW: If-Abfrage wird ignoriert (D7)
 
Delphi-Quellcode:
if ((wer<>'')and(wer<>' ')) then

Sollte auch funktionieren mit Delphi.Nariums Wunsch nach Leerstellen.


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

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