Probleme beim Vergleich [Erledigt]

Alle Fragen um die Programmierung, die sich sonst nicht kategorisieren lassen. Von Makro bis Codeblock, von IF bis ENDIF

Moderator: Moderatoren

Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Probleme beim Vergleich [Erledigt]

Beitrag von Jan »

Gerade hatte ich ein etwas merkwürdiges Phänomen. Folgende Schleife wird aufgerufen:

Code: Alles auswählen

IF MEMVAR->glUstNato == .T.                                                                        // Sonderfall: Kunde ist NATO-Mitglied
   cUst_typ := "SA"
 ELSEIF MEMVAR->glUstVersicherung == .T.                                                           // Sonderfall: Versicherungsfall GLS/Spedition
   cUst_typ := "SV"
ENDIF
Beide Variablen existieren, und sind mit .F. belegt (im Debugger kontrolliert). Und trotzdem springt der in die Zeile, in der cUst_typ mit "SA" belegt wird.

Das ist die erste Merkwürdigkeit.

Es gibt aber noch eine: Wenn ich die erste Zeile kürze, so daß der Vergleich gegen .T. wegfällt, dann klappt es. Warum?

Und jetzt bitte keine Antworten: "Der Vergleich gegen .T. ist unnötig, da Standard". Das ist mir ehrlich gesagt vollkommen wurscht, ob das Standard ist oder nicht. Ich muß doch auch einen Standard abfragen dürfen.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Probleme beim Vergleich

Beitrag von brandelh »

Hallo Jan,

wenn du keine Ratschläge willst, warum fragst du dann ;-)

Frage, kann es sein dass beide Variablen .t. sind, was soll dann passieren ?

Ich nehme bei ausschließlichen Abfragen immer do case, das ist viel übersichtlicher und weniger Tipparbeit.
Wie verhält sich ...

Code: Alles auswählen

set alternate to test.txt
set alternate on 

?  M->glUstNato, M->glUstVersicherung

do case
   case M->glUstNato = .T.                                                                        // Sonderfall: Kunde ist NATO-Mitglied
      cUst_typ := "SA"
   case M->glUstVersicherung = .T.                                                           // Sonderfall: Versicherungsfall GLS/Spedition
      cUst_typ := "SV"
   otherwise
      cUst_typ := "..." / Standard setzen    
ENDIF
?  cUst_typ
Ich kann bei deinem Code keinen Fehler entdecken, aber vielleicht ist er nur zu gut versteckt :)
Gruß
Hubert
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Probleme beim Vergleich

Beitrag von Manfred »

Jan,

Du solltest noch die 2. Variante einstellen, die aufgefallen ist. Das ist dann im Moment wirklich unerklärbar.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Probleme beim Vergleich

Beitrag von brandelh »

JAN und MANFRED scheinen aktuell konspirativ zusammen zu arbeiten ... erst der Hinweis auf meine Hilfe bei der Hilfe und nun der Hinweis auf tiefere Kenntnis des Codes 8)
Gruß
Hubert
UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2828
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Hat sich bedankt: 259 Mal
Danksagung erhalten: 12 Mal
Kontaktdaten:

Re: Probleme beim Vergleich

Beitrag von UliTs »

Kann es vielleicht sein, dass bisher M->glUstNato kein Wert zugewiesen worden ist?
Eigentlich müßte es dann auch == .F. sein, aber vielleicht funktioniert in diesem Fall die Abfrage nicht korrek?
Funktioniert es, wenn du vorher explizit

M->glUstNato := .F.

schreibst?

Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Probleme beim Vergleich

Beitrag von Tom »

Dieser Testcode erzeugt erwartungsgemäß die Ausgabe "leer" für "cUst_typ". Ändere ich MEMVAR->glUstNato auf .T., enthält sie "SA". Du hast irgendwo einen Typo.

Code: Alles auswählen

function main()
cls
MEMVAR->glUstNato := .F.
MEMVAR->glUstVersicherung := .F.
cUst_typ := 'leer'
IF MEMVAR->glUstNato == .T.                                                                        // Sonderfall: Kunde ist NATO-Mitglied
   cUst_typ := "SA"
 ELSEIF MEMVAR->glUstVersicherung == .T.                                                           // Sonderfall: Versicherungsfall GLS/Spedition
   cUst_typ := "SV"
ENDIF
? cUst_typ
return nil
Herzlich,
Tom
UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2828
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Hat sich bedankt: 259 Mal
Danksagung erhalten: 12 Mal
Kontaktdaten:

Re: Probleme beim Vergleich

Beitrag von UliTs »

brandelh hat geschrieben:...Ich nehme bei ausschließlichen Abfragen immer do case, das ist viel übersichtlicher und weniger Tipparbeit.
DO CASE ist in xBase++ semantisch etwas anderes als IF ... ELSEIF ... ENDIF !
Beispiel:

Code: Alles auswählen

DO CASE
CASE I=2
  I := 5
CASE I=5
  MsgBox( "Hallo, ich werde aufgerufen, wenn I VOR dem Case-Fall =2 oder =5 war!)
Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: Probleme beim Vergleich

Beitrag von Jan »

Hubert,

Scherzkeks :lol: Natürlich nehme ich Ratschläge an. Aber der, den ich angesprochen habe, ist widersinnig. Und nein, es können nie beide .T. sein. Sonst würde ich das von vorneherein anders regeln.


Uli,

beide Variablen sind auf jeden Fall belegt. Zunächst erstmal bei der PUBLIC-Erstellung (ich initialisiere immer sofort bei der Deklaration). Und dann nochmal im Programm, falls die Bedingungen dafür erfüllt sind.


Tom,

kein Typo. Ich habe wie gesagt im Debugger nachgesehen. Das passt. Ich habe dann auch, eben wegen möglicher Tippfehler, für die ich ja berüchtigt bin, die Suche eingeschaltet, mit automatischer Übernahme der Variablen als Suchbegriff. Auch das Ergebniss passt zusammen.


Zu Manfreds Einwurf:

Es ist richtig, es gibt noch eine Merkwürdigkeit: Wenn ich in der ersten IF-Abfrage das == .T. wegnehme und der dann korrekterweise diese Bedingung überspringt, dann müsste der doch wohl in die ELSEIF-Schleife reinspringen, weil die ja auch den Vergleich auf .T. hat. Tut sie aber nicht. Nur in der IF-Abfrage.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2828
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Hat sich bedankt: 259 Mal
Danksagung erhalten: 12 Mal
Kontaktdaten:

Re: Probleme beim Vergleich

Beitrag von UliTs »

Jan hat geschrieben:...Aber der, den ich angesprochen habe, ist widersinnig. Und nein, es können nie beide .T. sein.
Puh, und ich dachte schon, Du meinst den unnötigen Vergleich auf == .T. :wink:

Außerdem war meine obige Vermutung falsch. In meinem Testprogramm funktioniert es in jedem Fall :? .
Bau doch mal vorsichtshalber vor den IF-Abfragen Bildschirmausgaben ein:

Code: Alles auswählen

MsgBox( IIF( MEMVAR->glUstNato == .T. ,"TRUE!","FALSE!" ) )
MsgBox( IIF( MEMVAR->glUstNato ,"TRUE","FALSE" ) )
Werden dann Deine Debugger-Testergebnisse bestätigt?

Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Probleme beim Vergleich

Beitrag von Tom »

Hast Du irgendeine urige Präprozessor-Direktive eingebunden? So wie, weiß der Geier, #command oder #translate, die irgendwas mit "==" machen? Wie sieht das PP-Output des fraglichen Codes aus? Die Vergleichszeilen (ab dem IF) dürften sich dort im Vergleich zum Original NICHT ändern.

Ach so. Ich wette übrigens 5 € darauf, dass es doch ein Typo ist. Wer hält mit/dagegen? 8)
Herzlich,
Tom
UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2828
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Hat sich bedankt: 259 Mal
Danksagung erhalten: 12 Mal
Kontaktdaten:

Re: Probleme beim Vergleich

Beitrag von UliTs »

Tom hat geschrieben:...Ach so. Ich wette übrigens 5 € darauf, dass es doch ein Typo ist. Wer hält mit/dagegen? 8)
Ich halte mit :-) .

Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Probleme beim Vergleich

Beitrag von Tom »

@Uli: Also wettest Du auch auf den Typo? Oder dagegen?
Herzlich,
Tom
UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2828
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Hat sich bedankt: 259 Mal
Danksagung erhalten: 12 Mal
Kontaktdaten:

Re: Probleme beim Vergleich

Beitrag von UliTs »

Tom, ich halte mit. Bin also gleicher Meinung wie Du, oder?
Uli
Zuletzt geändert von UliTs am Mi, 06. Jun 2012 17:43, insgesamt 1-mal geändert.
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Probleme beim Vergleich

Beitrag von brandelh »

UliTs hat geschrieben:
brandelh hat geschrieben:...Ich nehme bei ausschließlichen Abfragen immer do case, das ist viel übersichtlicher und weniger Tipparbeit.
DO CASE ist in xBase++ semantisch etwas anderes als IF ... ELSEIF ... ENDIF !
das ist schon richtig, daher meine Einschränkung "ausschließlichen Abfragen"
Ich meine damit, dass immer nur der erste True Zweig genommen werden soll.
UliTs hat geschrieben: Beispiel:

Code: Alles auswählen

DO CASE
CASE I=2
  I := 5
CASE I=5
  MsgBox( "Hallo, ich werde aufgerufen, wenn I VOR dem Case-Fall =2 oder =5 war!)
Uli
das kann ich gar nicht glauben und schreibe daher dieses Testprogramm:

Code: Alles auswählen

proc main
   local I := 2
   DO CASE
      CASE I=2
         MsgBox( "I == 2 und wird zu 5, was passiert ?" )
         I := 5
      CASE I=5
         MsgBox( "Hallo, ich werde aufgerufen, wenn I VOR dem Case-Fall =2 oder =5 war!")
      OTHERWISE
         MsgBox( "Hallo, ich werde aufgerufen, wenn I # 5 war !","I = "+str(i) )
   END
return
Wie erwartet wird bei I=2 NUR CASE I=2 ausgeführt und nicht auch noch CASE I=5 nur weil zuvor I := 5 neu gesetzt wurde :!:
Probiere es aus ;-)
Gruß
Hubert
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: Probleme beim Vergleich

Beitrag von Jan »

Nur um das mal aus meinem unberufenen Mund klarzustellen: Sowohl If als auch Case steigen sofort aus der Schleife aus, sobal die erste zutreffende Bedingung abgearbeitet wurde. Alles andere wäre ja auch total chaotisch, man könnte ich auf garnichts mehr verlassen, was als Eingangsbedingung gelten könnte.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Markus Walter
Programmier-Gott
Programmier-Gott
Beiträge: 1018
Registriert: Di, 24. Jan 2006 10:22
Wohnort: Saarland

Re: Probleme beim Vergleich

Beitrag von Markus Walter »

Hi,

Hubert hat natürlich Recht. Alles andere wäre ja noch schöner... :wink:
Gruß
Markus

Mitglied der XUG Saarland-Pfalz
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: Probleme beim Vergleich

Beitrag von Jan »

So, und um das Eingangsproblem zu klären: Ich habe jetzt mal auf die Herausforderung von Tom reagiert. Und den String aus der Public-Deklaration in die IF-Zeile kopiert. Und siehe da: Jetzt funktioniert es!

Fragt mich aber nicht, warum. Denn beide Zeilen (die alte auskommentierte, und die neue mit dem kopierten String) sehen im Editor exakt gleich aus. Jetzt erinnere ich mich aber auch, das ich dieses Problem schon früher ab und an mal hatte, sehr sehr selten, in 6 oder 7 Jahren Arbeit mit VX so etwa 3 oder 4 mal. Macke von VX? Ist ja immerhin noch Beta ... immer noch ...

Tom: Du bekommst aber keine 5 € von mir :roll: . Aber ein dickes fettes Dankeschön :notworthy:

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Probleme beim Vergleich [Erledigt]

Beitrag von brandelh »

Na dann kommt mein Testprogramm zu spät, aber zeigen werde ich es dennoch :D

Code: Alles auswählen

proc main
   local x, cUst_typ
   MEMVAR glUstNato, glUstVersicherung
   PUBLIC glUstNato, glUstVersicherung
   set alternate to test.txt
   set alternate on
   ? "JANs seltsame Vergleiche ;-) "
   ?
   for x := 1 to 4
       do case
          case x = 1   // bei JAN nicht möglich
             M->glUstNato         := .f.
             M->glUstVersicherung := .f.
          case x = 2
             M->glUstNato         := .t.
             M->glUstVersicherung := .f.
          case x = 3
             M->glUstNato         := .f.
             M->glUstVersicherung := .t.
          case x = 4   // bei JAN nicht möglich
             M->glUstNato         := .t.
             M->glUstVersicherung := .t.
       end
       cUst_typ := NIL
       ? "Fall ",x,"   M->glUstNato == ",M->glUstNato,"   M->glUstVersicherung == ",M->glUstVersicherung
       ?
       ? "Zunächst Huberts DO CASE "
       ?
       do case
          case M->glUstNato              // Sonderfall: Kunde ist NATO-Mitglied
             cUst_typ := "SA"
          case M->glUstVersicherung      // Sonderfall: Versicherungsfall GLS/Spedition
             cUst_typ := "SV"
          otherwise
             cUst_typ := "gibt es nicht"
       end
       ?  "            ====>   cUst_typ == ",cUst_typ
       cUst_typ := NIL
       ?
       ? "Nun JANs IF ELSEIF "
       ?
       IF M->glUstNato == .T.               // Sonderfall: Kunde ist NATO-Mitglied
          cUst_typ := "SA"
       ELSEIF M->glUstVersicherung == .T.   // Sonderfall: Versicherungsfall GLS/Spedition
          cUst_typ := "SV"
       ELSE
          cUst_typ := "gibt es nicht * DIES IST ELSE ! "
       ENDIF
       ?  "            ====>   cUst_typ == ",cUst_typ
       ?
   next
   ? "Ende"
return
und hier das Ergebnis, alle Abfragen verhalten sich - wie erwartet - exakt gleich =D>

Code: Alles auswählen


JANs seltsame Vergleiche ;-) 

Fall           1    M->glUstNato ==  N    M->glUstVersicherung ==  N

Zunächst Huberts DO CASE 

            ====>   cUst_typ ==  gibt es nicht

Nun JANs IF ELSEIF 

            ====>   cUst_typ ==  gibt es nicht * DIES IST ELSE ! 

Fall           2    M->glUstNato ==  J    M->glUstVersicherung ==  N

Zunächst Huberts DO CASE 

            ====>   cUst_typ ==  SA

Nun JANs IF ELSEIF 

            ====>   cUst_typ ==  SA

Fall           3    M->glUstNato ==  N    M->glUstVersicherung ==  J

Zunächst Huberts DO CASE 

            ====>   cUst_typ ==  SV

Nun JANs IF ELSEIF 

            ====>   cUst_typ ==  SV

Fall           4    M->glUstNato ==  J    M->glUstVersicherung ==  J

Zunächst Huberts DO CASE 

            ====>   cUst_typ ==  SA

Nun JANs IF ELSEIF 

            ====>   cUst_typ ==  SA

Ende
Gruß
Hubert
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Probleme beim Vergleich [Erledigt]

Beitrag von Tom »

Uli und ich können jetzt also jeweils unsere 5 Öcken behalten. Auch schön. :)
Herzlich,
Tom
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: Probleme beim Vergleich [Erledigt]

Beitrag von Jan »

Tom,

naja. Wir alle drei können unser Portemonaie zuhalten. Ihr beide habt Recht, das da irgendwo ein Tippfehler drin war. Ich habe recht, weil da zumindest kein sichtbarer war. Aber wir können uns ja am 18. August bei einer von mir ausgegebenen gepflegten Apfelschorle zusammensetzen und das gemeinsam feiern.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Probleme beim Vergleich [Erledigt]

Beitrag von brandelh »

VX ist und bleibt eben BETA, ein Debugger ist und bleibt eine nette Ergänzung, aber bei komplexen Fehlerquellen geht nichts über ein gutes Verlaufsprotokoll :!: :D
Gruß
Hubert
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Probleme beim Vergleich [Erledigt]

Beitrag von Tom »

Ich verwette eine weitaus höhere Summe als zuletzt darauf, dass das nix, nada, niente mit VX, Beta oder spukenden Computergeistern zu tun hatte. Das kleine "L" war ein großes "i" oder so. Dasisses. :wink:
Herzlich,
Tom
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Probleme beim Vergleich [Erledigt]

Beitrag von Manfred »

Aber die Frage, die sich mir jetzt stellt ist folgende:

Nehmen wir mal an, es war ein Schreibfehler. Warum gab es dann keine Fehlermeldung, weil die Var ja eigentlich nicht vorhanden sein dürfte? Und vor allen Dingen warum hat die VX einen Wert angezeigt, als man mit der Maus drüberfuhr? Dann müßte es ein Schreibfehler gewesen sein, der sich über mehrere Zeilen hinweg bewegte und jedesmal die gleiche falsch geschriebene Var inne hatte. Und dann kommt noch hinzu, warum klappte es, als die Abfrage auf

Code: Alles auswählen

IF memvar->variable
verändert wurde? :-k
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2828
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Hat sich bedankt: 259 Mal
Danksagung erhalten: 12 Mal
Kontaktdaten:

Re: Probleme beim Vergleich

Beitrag von UliTs »

brandelh hat geschrieben:...
Wie erwartet wird bei I=2 NUR CASE I=2 ausgeführt und nicht auch noch CASE I=5 nur weil zuvor I := 5 neu gesetzt wurde :!:
Probiere es aus ;-)
Oh wie peinlich! :color: Du hast Recht, Hubert!
Ich habe es auch noch unter Clipper ausprobiert. Da war es auch von der Bedeutung identisch mit ..ELSEIF..

Jetzt rätsele ich darüber, mit welcher Programmiersprache ich diese Verhaltensweise verwechselt habe... Basic?

Auch jeden Fall Sorry.

Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Probleme beim Vergleich [Erledigt]

Beitrag von Tom »

Hallo, Manfred.

Dafür gibt es vermutlich (nein: sicher) vernünftige Erklärungen. Wenn die falsch/richtig geschriebene Variable später belegt wird, entsteht sie - zusätzlich zur ursprünglichen Deklaration - automatisch als PRIVATE.

Und probier doch spaßenshalber mal diesen Code aus:

Code: Alles auswählen

MEMVAR->test := nil
? IF(MEMVAR->test == .T., "ja","nein")
? IF(MEMVAR->test,"ja","nein")
Herzlich,
Tom
Antworten