AdminMod.de
https://www.adminmod.de/

Der "Ich habe ein Scripting-Problem"-Thread
https://www.adminmod.de/viewtopic.php?t=4561
Seite 2 von 5

Autor:  [WING] Black Knight [ 07.01.2003, 20:23 ]
Betreff des Beitrags: 

1. AND ist in der If-Schleife immer ein "&&".

2.
Code:
g_Menu[UserIndex] -= 1;
Das wird HL zum abstürzen bringen. Ist ein Small-Compiler Bug. Schreib:
Code:
g_Menu[UserIndex] = g_Menu[UserIndex]-1;
Das gilt nur für Arrayfelder. Einfache Variablen lassen sich so schon berechnen.

3. Mal eine Frage, was macht das << in:
Code:
i = 1<<(g_Menu[UserIndex] * 7 - 8 + i);
Hab ich so noch nie gesehen. Was macht das?

Autor:  Rinde [ 07.01.2003, 20:31 ]
Betreff des Beitrags: 

1. && hab ich schon probiert, das geht aber dann nciht, so schon
2. array += 1 geht, nur array++ macht nen crash
3. bit shift.
1<<3 verschiebt die bits der zahl 1 (32 bit signed integer) 000000000000000000000000000001 um 3 nach links, also
000000000000000000000000001000 = 8

Autor:  [WING] Black Knight [ 08.01.2003, 00:58 ]
Betreff des Beitrags: 

zu 1. es muss definitiv && heißen. Versuch doch mal in Kombination mit der Verwendung von "== 1". Vielleicht geht das ja.
zu 2. hmmm, ich meinte allein schon der Ausdruck wäre problematisch.
zu 3. Danke, mal sehen, ob ich's mal gebrauchen kann. Glaube derzeit aber eher nicht.

Autor:  Rinde [ 08.01.2003, 17:15 ]
Betreff des Beitrags: 

zu 1. es geht mit && definitiv nicht
zu 2. --
zu 3. --

Autor:  [WING] Black Knight [ 08.01.2003, 20:01 ]
Betreff des Beitrags: 

OK, gaaanz einfach (Ich hab's ausprobiert).
Der Compiler mag den Inhalt der Array-Zelle nicht vergleichen (zumindest meckert er).
Definiere z.B.
Code:
new g_sMaps;
Und mach dann das:
Code:
g_sMaps=g_SelectedMaps[UserIndex];
if(g_sMaps && i) {
Dann bekam ich keine Fehlermeldung mehr.

PLÖD!!

Autor:  Rinde [ 08.01.2003, 20:10 ]
Betreff des Beitrags: 

small is kagga :(
danke dir :)

Autor:  Rinde [ 08.01.2003, 20:20 ]
Betreff des Beitrags: 

eigentlich... mit && hab ich die fehlermeldung eh nie gekriegt, nur mit &. und mit deiner lösung funktionierts genausowenig. die einizge funktionierende lösung die ich bisher gefunden habe hab ich oben gepostet, inklusive compilerwarnings

Autor:  Rinde [ 08.01.2003, 20:39 ]
Betreff des Beitrags: 

ich hab ne möglichkeit die geht und keine warnings macht!!!111!!
Code:
                new Maps = g_SelectedMaps[UserIndex] & ~i;
                if(Maps != g_SelectedMaps[UserIndex]) {
                    g_SelectedMaps[UserIndex] -= i;
                } else {
                    g_SelectedMaps[UserIndex] += i;
                }

Autor:  Rinde [ 08.01.2003, 20:43 ]
Betreff des Beitrags: 

eigentlich umständlich, so isses noch besser!!!111!
Code:
                new Maps = g_SelectedMaps[UserIndex] & i;
                if(Maps == i) {
                    g_SelectedMaps[UserIndex] -= i;
                } else {
                    g_SelectedMaps[UserIndex] += i;
                }

Autor:  [WING] Black Knight [ 09.01.2003, 00:28 ]
Betreff des Beitrags: 

Einen Augenblick. Was funzt nicht. Die Warnings wegbekommen oder Dein Code?

Autor:  Rinde [ 09.01.2003, 14:11 ]
Betreff des Beitrags: 

der code den ich hatte hat funktionier. aber er hat warnings produziert. dein code hat nicht funktioniert, aber keine warnings produziert. der code 2 posts weiter oben funktioniert und macht keine warnings, ebenso wie der darüber

Autor:  [WING] Black Knight [ 09.01.2003, 16:31 ]
Betreff des Beitrags: 

Dann würde ich mal darüber nachdenken, warum Dein Code ZUFÄLLIGERweise funktioniert. Denn ein einfaches "&" ist definitiv falsch. Nur weil etwas auf den ersten Blick funktioniert muss es nicht richtig sein.
Ich weiß da jetzt auch nicht weiter. Schau einfach mal. Dir wird schon was einfallen. ;)

Autor:  Warhead [ 09.01.2003, 17:20 ]
Betreff des Beitrags: 

Sofern nur 2 Werte (0 und 1) benutzt werden, kann auch die bitweise UND-Verknüpfung (&) problemlos benutzt werden. && ist sicher resourcenschonender...

Autor:  Sir Drink a lot [ 09.01.2003, 17:29 ]
Betreff des Beitrags: 

und ich dachte ein &variable hat was mit "call by reference" zu tun und das haufigst angewandte was mit "call by value". Und ich wußte nicht, dass man ein einzelnes & auch als Vergleich heranziehen kann.

Leider habe ich diese beiden Sachen auch noch nicht richtig verstanden...

Autor:  Rinde [ 09.01.2003, 18:00 ]
Betreff des Beitrags: 

ich will mit dem & auch nicht vergleichen! ich will eine rechenoperation damit durchführen und das ergebnis vergleichen.

Autor:  Warhead [ 09.01.2003, 18:00 ]
Betreff des Beitrags: 

Zum Vergleich wird das Ergebnis der Operation herangezogen, in diesem Fall ist die Operation ein &.

Beispiel:
Code:
if(a=1) machwas();
else machnix();
a=1 ist eine Zuweisung, in a steht also 1 drin, das Ergebnis dieser Operation ist also 1. In diesem Fall wird immer machwas() ausgeführt, der else-Zweig dagegen nie...
Genauso gibts bei der bitweisen UND-Operation auch irgendein Ergebnis, welches dann zur Auswertung benutzt wird.

Wahr ist bei Small mangels Boolean alles was nicht 0 ist, Falsch ist definiert mit 0.

Autor:  Warhead [ 09.01.2003, 18:02 ]
Betreff des Beitrags: 

Zitat:
ich will mit dem & uach nicth vergleichechen! ich will eine rechenoperation damit durchführen und das ergebnis vergleichen.
Vielleicht sollte man doch mal die "anstößigen" Quellcodezeilen hier posten, damit man genau weiss, was gemeint ist und was nicht.

Autor:  Rinde [ 09.01.2003, 18:05 ]
Betreff des Beitrags: 

ich würde es anders sagen. & ist ein operator genau wie + oder *
Code:
if(i + j == 6) {
   ...
} else {
   ...
}
geht problemlos
Code:
if(i & j == 6) {
   ...
} else {
   ...
}
aber nicht

Autor:  Warhead [ 09.01.2003, 18:24 ]
Betreff des Beitrags: 

Zitat:
ich würde es anders sagen. & ist ein operator genau wie + oder *
Hat ja niemand was gegenteiliges behauptet...
Zitat:
Code:
if(i & j == 6) {
   ...
} else {
   ...
}
aber nicht
Warum sollte das nicht gehen?

Autor:  Warhead [ 09.01.2003, 19:22 ]
Betreff des Beitrags: 

Rinde: Du hättest ja mal BlackKnight den Tip geben können, dass Du die ausgewählten Maps als Bitmaske abspeicherst, besonders nachdem er Dir offenbahrt hat, dass ihm diverse Bitoperationen unbekannt sind. Stattdessen willst Du eine Warnung des Compilers wegbekommen, die doch eigentlich genau das beschreibt, was Du auch bezweckst. So sieht es für mich aus, als ob Du selbst nicht so genau weisst, was Du da eigentlich programmiert hast...

Seite 2 von 5 Alle Zeiten sind UTC+01:00
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/