| |
|
|
Nico Madysa | Wird in einem Select-Block ein Wert mit anderen Werten aus einem Array von Strukturen verglichen, so wird man sofort in die erste Case-Of-Anweisung verwiesen, egal ob das stimmt oder nicht. Mit If-Elseif-Endif passiert das nicht. Minimalbeispiel: KompilierenMarkierenSeparieren |
|
|
| |
|
|
|
Jac de Lad | |
|
| Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE) Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP | 09.08.2008 ▲ |
|
|
|
|
RGH | Das "Minimalbeispiel" ist natürlich voller Fehler und wurde vom Ersteller desselben offenbar niemals ausprobiert. Erstens ist * kein gültiger Variablenkennzeichner, sondern hier ist offensichtlich das # gemeint. Schon seltsam, wie konsequent der Fehler auftaucht, der das Programm allerdings sofort mit einer Fehlermeldung beendet. Zum zweiten wird %hWnd einer Variablen zugewiesen, bevor das Hauptfenster überhaupt existiert. Das Programm würde also auch bei korrektem Variablenbezeichner nicht funktionieren. Solche ungetesteten Minimalbeispiele sind also alles andere als hilfreich. Das Posten ungetesteter Codes sollte verboten werden!
Aber andererseits: der Bug, den das Programm vergeblich zu demonstrieren versucht, scheint tatsächlich seit Einführung des SELECT mit XProfan 10 vorhanden zu sein: Wenn hinter dem CaseOf ein Element eines Struktur- oder Objekt-Arrays steht, funktioniert es nicht richtig. Da dieser Fehler aber seit 15. Mai 2006 (also seit über 2 Jahren) unentdeckt blieb, scheint das nicht so häufig vorzukommen.
Sollte es ein XProfan 11,0a oder 11,1 oder so geben, wird der Fehler da natürlich korrigiert sein.
Gruß Roland |
|
|
| Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 09.08.2008 ▲ |
|
|
|
|
Nico Madysa | Ääääähm - ok. Ja, ich habe diesen Code nie getestet. Den Originalcode hatte ich nicht mit und habe ihn schnell aus dem Kopf eingetippt. Dabei bin ich wohl jedesmal auf die Sternchen- statt auf die Raute-Taste gekommen, was den Fehler erklärt. Allerdings habe ich den Code jetzt korrigiert und der Bug ist immer noch da. Hier ist die richtige Version: KompilierenMarkierenSeparieren |
|
|
| |
|
|
|
Jörg Sellmeyer | Das steht in der Hilfe zu Select:
Ein beliebiger Ausdruck der Typen Float, Integer, LongInt oder String.
Du gibst eine Strukturvariable an. Es wäre natürlich schön, wenn es klappen würde, aber es wird nirgends behauptet, daß es klappen sollte. |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 23.08.2008 ▲ |
|
|
|
|
| Und wenn er es z.B. int()et ? |
|
|
| |
|
|
|
René Wagner | Moin,
das Element, auf das er in der Strukturvariablen referenziert, ist doch aber ein Float. Ich wäre an Hand der Beschreibung auch davon ausgegangen, dass das so klappt.
Gruß René |
|
|
| Mit XProfan erstellte Freeware findet ihr hier: [...] US World Domination Tour - bombing a country near you... | 23.08.2008 ▲ |
|
|
|
|
Jörg Sellmeyer | Zumindest Profan sieht das anders: KompilierenMarkierenSeparierenCls
Proc Test
WhileLoop %pcount
print pType$(&Loop),&Loop
Wend
EndProc
Struct TPunkt = x&,y&
declare b#[1]
Dim b#[],TPunkt
cls
b#[0].x& = 1
Declare a$,b%,c&,d!,e#
Dim e#,4
Long e#,0=1000
a$ = "a"
b% = 1
c& = 2
d! = 3.5
Test(b#[0].x&,a$,b%,c&,d!,e#)
Dispose b#[]
while 1
waitinput
wend
|
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 23.08.2008 ▲ |
|
|
|
|
Nico Madysa | OK, mein Fehler; das passiert, wenn man in Deutschland etwas nach Vernunft statt nach dem Regelwerk angeht. Ich werde sehen, ob ein einfaches int() das Problem behebt, andernfalls muss man einfach eine If-Anweisung nehmen. |
|
|
| |
|
|