AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Selsames verhalten bei True abfrage

Ein Thema von EWeiss · begonnen am 12. Apr 2007 · letzter Beitrag vom 13. Apr 2007
Antwort Antwort
Seite 1 von 2  1 2      
EWeiss
(Gast)

n/a Beiträge
 
#1

Selsames verhalten bei True abfrage

  Alt 12. Apr 2007, 15:26
Habe ein problem bei mit einer simplen abfrage

Delphi-Quellcode:
if AppOwnHdcW2 = True then
begin
Delphi-Quellcode:
if (AppOwnHdcW2 = True) then
begin
alle diese abfragen liefern ein False zurück obwohl die eigenschaft AppOwnHdcW2 True ist!

Nur das funktioniert

Delphi-Quellcode:
if AppOwnHdcW2 then
begin
Wo ist das problem ?

gruss Emil
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Selsames verhalten bei True abfrage

  Alt 12. Apr 2007, 15:33
Das ist kein Problem von Delphi sondern ein Problem welches sich der Programmierer selbst einproggt. Wahr ist alles ungleich 0. False ist also 0. True ist in Delphi 1. Aber Wahr ist eben nicht nur 1 sondern alles ungleich 0.
Deswegen sollte man auch nie einen Boolean mit True vergleichen außer man will wirklich wissen ob der Boolean den Wert 1 hat.
Zudem hat die cpu mehr zu tun wenn du auf True vergleichst anstelle nur den Boolean als Bedingung zu nehmen (weil ja sonst erst geprüft werden muss ob 2 Variablen identich sind und dann ob der vergleich wahr ist)

Wenn du also AppOwnHdcW2 mal zu Byte oder Integer castest wirst du sehen das es eine Zahl ungleich 1 ist.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Selsames verhalten bei True abfrage

  Alt 12. Apr 2007, 15:41
Ich vermute, dass AppOwnHdcW2 -1 ist. Bei LongBool ist True nämlich IIRC -1, bei Boolean 1.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Selsames verhalten bei True abfrage

  Alt 12. Apr 2007, 16:04
Siehe dir hierzu auch mal das hier an: Über den Umgang mit Boolean.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#5

Re: Selsames verhalten bei True abfrage

  Alt 12. Apr 2007, 16:38
Zitat von Matze:
Siehe dir hierzu auch mal das hier an: Über den Umgang mit Boolean.
Das muss ich mir nicht antun
Wie der wert Boolean interpretiert wird ist mir wohl klar.

Ich denke das ist ein bug in Delphi.
Wenn ich einen Wert strikt als boolean definiere erwarte ich auch das nur auf true
oder false geprüft wird und nicht auf integer oder byte werte.

Dann kann ich ihn direkt als integer oder longbool deklarieren.

Ja bool ist in diesen Fall -1 da aus einer VB Anwendung übergeben.
Aber auch das muss eine interpreter sprache erkennen von wo der Wert übergeben wird.

In VB gibt es kein 0=False 1=True da ist -1=False und 0=True.

Auch wenn ich die DLL in Delphi geschriebe habe kann ich aus VB nicht einfach mal 0 oder 1 übergeben.

gruss Emil
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Selsames verhalten bei True abfrage

  Alt 12. Apr 2007, 16:40
Nein, es ist kein Delphi-Fehler. Man vergleicht halt grundsätzlich nicht auf True oder False!
Markus Kinzler
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#7

Re: Selsames verhalten bei True abfrage

  Alt 12. Apr 2007, 16:47
Zitat von mkinzler:
Nein, es ist kein Delphi-Fehler. Man vergleicht halt grundsätzlich nicht auf True oder False!
Beispiel:
Delphi-Quellcode:
            VisChan = BASS_WINAMPVIS_ExecuteVis(PluginDir & "\" & _
                      lstPlugins.List(IndexNum), _
                      VisModules.ListIndex, _
                      True, _
                      ckOwnDcW2.value)
Funktioniert!

Delphi-Quellcode:
            VisChan = BASS_WINAMPVIS_ExecuteVis(PluginDir & "\" & _
                      lstPlugins.List(IndexNum), _
                      VisModules.ListIndex, _
                      True, _
                      True)
Funktioniert nicht!

Beides das selbe nur das beim obigen die Value des Controls übergeben wird.
Selbst wenn jetzt der Wert von ckOwnDcW2.value(control) als -1 und 0 übergeben wird kommt es immer
noch nicht mit der aussage überein 0 und 1 in Delphi da nie ein wert von 1 übergeben wird.

Na es geht ja !
Ansonsten würden sich die Plugins nicht in mein GenFenster setzen.
Aber seltsam ist das schon.

gruss Emil
Miniaturansicht angehängter Grafiken
geht_116.jpg  
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Selsames verhalten bei True abfrage

  Alt 12. Apr 2007, 18:29
Moin Emil,

dann liegt der Fehler wohl nicht bei Delphi, sondern in der Funktion, die Du aufrufst.
Dort wird dann offensichtlich auf = true geprüft, wobei dort true als -1 angesehen wird.

Zitat von EWeiss:
Selbst wenn jetzt der Wert von ckOwnDcW2.value(control) als -1 und 0 übergeben wird kommt es immer
noch nicht mit der aussage überein 0 und 1 in Delphi da nie ein wert von 1 übergeben wird.
Den Satz habe ich nicht ganz verstanden.
Was meinst Du damit?
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#9

Re: Selsames verhalten bei True abfrage

  Alt 12. Apr 2007, 18:37
Zitat von Christian Seehase:
Moin Emil,

Zitat von EWeiss:
Selbst wenn jetzt der Wert von ckOwnDcW2.value(control) als -1 und 0 übergeben wird kommt es immer
noch nicht mit der aussage überein 0 und 1 in Delphi da nie ein wert von 1 übergeben wird.
Den Satz habe ich nicht ganz verstanden.
Was meinst Du damit?
damit meinte ich diese aussage

Zitat:
Wahr ist alles ungleich 0. False ist also 0. True ist in Delphi 1. Aber Wahr ist eben nicht nur 1 sondern alles ungleich 0.
Wenn ich aus VB '-1 oder 0' für boolean sende kann in Delphi niemals der wert '1 = true' eintreten
da der höchste wert = 0 ist.

gruss Emil
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: Selsames verhalten bei True abfrage

  Alt 12. Apr 2007, 18:54
Moin Emil,

Zitat von EWeiss:
Wenn ich aus VB '-1 oder 0' für boolean sende kann in Delphi niemals der wert '1 = true' eintreten
und deshalb prüft man nie auf = true

Um Boolsche-Variablen sprechend initialisieren zu können muss man sich für einen Wert entscheiden, der für true steht, in Delphi ist das dann halt 1, in VB -1.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:38 Uhr.
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