 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
braesident
Anmeldungsdatum: 15.04.2008 Beiträge: 189 Wohnort: Berlin
|
Verfasst am: 08.11.2012, 12:28 Titel: absturz durch Array?! |
|
|
Ich hoffe folgender Programschnipsel reicht euch aus um meinen Fehler zu erkennen.
die ersten Programabstürze konnte ich durch Zeile 423 verhindern
-wurden im Verzeichnisordner 14 dateien gefunden kam ein Absturz wenn ymaus > 149 wurde - mir noch logisch da nun array(>14) abgerufen würde
- nun entstehen abstürze bei Mausklick - also theoretisch ab Zeile 424
Die "SUB GetFiles" hab ich vorerst aus der Referenz übernommen und am Ende noch eingefügt
Code: |
19 DECLARE SUB GetFiles( Array() as string )
...
41 DIM SHARED AS STRING dateien()
42 DIM SHARED AS STRING bzlwahl()
...
365 CASE IS = 13 'enter
366 CLOSE
367 wort = wortteil + wort
368 dateiexist = EXEPATH + "\Save\" + wort + ".dat"
369 IF FILEexists(dateiexist) THEN
370 autowrite(&h00AA00, 15, 128, dateiexist + " existiert schon.")
371 SLEEP 2000: exit DO
372 END IF
375 CHDIR "DownTour"
376 GetFiles dateien() 'Dateien aus Ordner "DownTour" in Array "Dateien"
377 'speichern / gefunden = gefundene Dateien
378 StartListe = 1
379 mradoffset = mrad + 1
380 FOR i = 1 to gefunden 'um mehrere Dateien auszuwählen soll im Array "bzlwahl"
381 redim preserve bzlwahl(i) 'gespeichert werden welche datei markiert ist
382 bzlwahl(i) = "o" 'mit "o" für nicht und mit "x" für geklickt
383 NEXT i
385 DO
386 SLEEP 25
387 ScreenLock
389 LINE (197, 7) - (400, 310), &hAAAAAA, BF
390 zeile = 10
391 for i = StartListe to StartListe + 4
392 IF bzlwahl(i) = "x" THEN anzfarbe = &hFFFF00 ELSE anzfarbe = &h000000
393 autowrite(anzfarbe, 200, zeile, dateien(i)) 'schrift ist ca 7 pix hoch
394 IF i = gefunden THEN EXIT FOR
395 zeile += 10
396 next
397 color &hFFFFFF: locate 1,1:? ymaus;" ";mbuttons;" " 'TESTZEILE
398 ScreenUnLock
399 txt = INKEY
400 IF txt = CHR(255)+"k" THEN ENDE
402 GETMOUSE (xmaus,ymaus,mrad,mbuttons,mclib)
403 mrad2=mrad-mradoffset
405 IF xmaus = -1 THEN 'sollte die Maus das Programfenster verlassen
406 exi = exis
407 ELSE
408 exi = mrad2 - (mrad2*2) 'legt fest von wo an die Dateienliste angezeigt wird
409 exis = exi
410 END IF
411 IF exi < 1 THEN mradoffset = mrad + 1 'ist die Auswahl durch das Mrad unterdreht
412 IF exi > gefunden THEN mradoffset = mrad + gefunden:exi = gefunden 'oder überdreht
413 StartListe = exi
414 'folgende zeilen errechnen welche Datei gewählt wurde bei einem Mausklick
415 IF ymaus < 100 THEN txt = " " ELSE txt = ""
417 txt += STR(ymaus)
418 txt = MID(txt, 1, 2)
419 bzl = VAL(txt) + startliste - 1
420 'bzl ist nun von pixelzeile in Schriftzeile plus startliste umgerechnet
421 'also = auswahlposition
423 if bzl > gefunden then bzl = gefunden
424 IF mbuttons = 1 AND ymaus > 9 AND ymaus < 310 AND xmaus > 9 AND xmaus < 601 AND _
425 bzl <= gefunden AND bzlwahl(bzl) = "o" THEN bzlwahl(bzl) = "x"
427 IF mbuttons = 1 AND ymaus > 9 AND ymaus < 310 AND xmaus > 9 AND xmaus < 601 AND _
428 bzl <= gefunden AND bzlwahl(bzl) = "x" THEN redim preserve bzlwahl(bzl): bzlwahl(bzl) = "o"
430 LOOP
|
|
|
Nach oben |
|
 |
ThePuppetMaster

Anmeldungsdatum: 18.02.2007 Beiträge: 1839 Wohnort: [JN58JR]
|
Verfasst am: 08.11.2012, 12:33 Titel: |
|
|
du solltest generell um if strukturen, die logische verknüpfungen haben, immer klammern ziehen. andernfalls kann man die reihenfolge nur schwer einschätzen, wie die verknüpfung und prüfung erfolgt.
Code: |
if a = b and c = d then
|
könnte interpretiert werden als
Code: |
if a = (b and ) = d then
|
könnte aber auch lauten
Code: |
if (a = b) and (c = d) then
|
daher solltest solche knüpfungen immer klammern.
das köntne auch schon das problem sein, habs nicht weiter angesehen.
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
 |
braesident
Anmeldungsdatum: 15.04.2008 Beiträge: 189 Wohnort: Berlin
|
Verfasst am: 08.11.2012, 12:44 Titel: |
|
|
Danke für den Tipp aber des Rätsels Lösung war es leider nicht |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4702 Wohnort: ~/
|
Verfasst am: 08.11.2012, 14:37 Titel: |
|
|
'bzl' kann dank Zeile 423 höchstens so groß wie 'gefunden' sein - ist das Array auch bis 'gefunden' deklariert (und nicht etwa nur bis 'gefunden-1')? Der zweite mögliche Fehler wäre, wenn 'bzl' kleiner ist als der kleinste Index des Arrays. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
braesident
Anmeldungsdatum: 15.04.2008 Beiträge: 189 Wohnort: Berlin
|
Verfasst am: 08.11.2012, 16:15 Titel: |
|
|
also
bzl höchstens so groß wie gefunden ist richtig, damit eben kein array aufgerufen wird das nicht deklariert wurde.
und in der Referenz wird erst i multipliziert (i += 1) und dann (array(i) = ...)
was für mich genau richtig ist da das 2te parallele Array auch von 1 bis gefunden ist.
ich glaube das die Mbuttons-abfrage sich selbst aufgehoben hat
habe nun folgendes geändert
im Verzeichnis alles bis auf eine Datei gelöscht.
Code: |
424 if bzl > gefunden then bzl = gefunden
425 IF bzl < 1 THEN bzl = 1
426 bzlSave = bzlwahl(bzl)
427 IF (mbuttons = 1) AND (ymaus > 9) AND (ymaus < 310) AND (xmaus > 9) AND (xmaus < 601) AND _
428 (bzl <= gefunden) AND (bzlwahl(bzl) = "o") THEN bzlSave = "x": sleep 150
430 IF (mbuttons = 1) AND (ymaus > 9) AND (ymaus < 310) AND (xmaus > 9) AND (xmaus < 601) AND _
431 (bzl <= gefunden) AND (bzlwahl(bzl) = "x") THEN bzlSave = "o": sleep 150
433 redim preserve bzlwahl(bzl):bzlwahl(bzl) = bzlSave
434 LOOP
|
ich denke jetzt funzt es.. werd es später noch mehreren Dateien probieren.
Ach ja und zu zweitens - da hab ich jetzt noch zeile 425 eingefügt |
|
Nach oben |
|
 |
braesident
Anmeldungsdatum: 15.04.2008 Beiträge: 189 Wohnort: Berlin
|
Verfasst am: 08.11.2012, 18:06 Titel: |
|
|
ok. falsch gedacht. es funzt nur wenn im Ordner nur eine Datei ist. Ich kann die Maus überall hin bewegen auch ausserhalb des Fensters.
Aber sobalt min. 2 Dateien im Verzeichnis sind stürzt das Prog ab. Und zwar wenn ich die Maus aus dem Fenster ziehe oder yMaus kleiner 20 wird (bei 2 Dateien) also zB yMaus 19 ist dann bzl = 1 was wiederum kleiner als gefunden ist und gar keinen absturz verursachen würde ! ? ! |
|
Nach oben |
|
 |
braesident
Anmeldungsdatum: 15.04.2008 Beiträge: 189 Wohnort: Berlin
|
Verfasst am: 08.11.2012, 20:57 Titel: |
|
|
so jetzt aber
Code: | redim preserve bzlwahl(bzl): | in Zeile 433 und vorher in den IF's war wohl überflüssig |
|
Nach oben |
|
 |
ThePuppetMaster

Anmeldungsdatum: 18.02.2007 Beiträge: 1839 Wohnort: [JN58JR]
|
Verfasst am: 09.11.2012, 11:02 Titel: |
|
|
Hab nochmal fix drüber gesehen. Du solltest ebenfalls die Prüfung aufschlüsseln und stückweise ausführen.
Bisher machst du:
Code: |
427 IF (mbuttons = 1) AND (ymaus > 9) AND (ymaus < 310) AND (xmaus > 9) AND (xmaus < 601) AND _
428 (bzl <= gefunden) AND (bzlwahl(bzl) = "o") THEN bzlSave = "x": sleep 150
|
das wäre (der übersichthalber)
Code: |
IF (mbuttons = 1) AND (ymaus > 9) AND (ymaus < 310) AND (xmaus > 9) AND (xmaus < 601) AND (bzl <= gefunden) AND (bzlwahl(bzl) = "o") THEN
bzlSave = "x"
sleep 150
end if
|
der code wird nun so verarbeitet, das die prüfung komplett durchlaufen wird. Wörtlich formuliert:
WENN mbutton UND ymaus UND xmaus UND blz UND blzwahl DANN bla
und hier ist auch das problem beim zugriff.
die IF prüfung kann mit AND nicht erkennen, wenn eines der fehler fehlerhaft ist, und die nächste prüfung nicht abbrechne.
genauer gesagt ist der fehler bei der letzten prüfung.
Code: |
... AND (bzl <= gefunden) AND (bzlwahl(bzl) = "o") THEN
|
du prüft ob bzl <= gefunden ist.
was ist aber, wenn blz = 0 oder -1 ist? .. dann ist blz ebenfalls <= gefunden. aber das array blzwahl geht nur von 0 oder 1 bis n.
1. muss hier eine eingrenzung erfolgen:
Code: |
if (bzl >= lbound(bzlwahl)) AND (blz <= ubound(bzlwahl)) THEN
|
damit prüfst du, ob blz in den grenzen des arrays liegt. wenn dies nicht der Fall ist, dann wird nicht weiter gearbeitet. LBound = untere grenze, UBound = Obere grenze
2. sollte man nicht den arrayzugriff in die selbe if packen, in der man die grenze prüft.
IF prüft alle angaben, bevor es abbricht, sofern mit AND und nicht mit ANDALSO gepfüt wird. AND wird IMMER komplett verknüpft. ANDALSO verknüpft nur solange, bis eine bedingung nicht erfüllt ist, und ignoriert bzw. bricht die restlichen verknüpfungen ab.
aber das lassen wir erstmal raus.
3.
teile die IF prüfung in mehrere schritte auf. Das hilft auch bei deiner übersicht.
Code: |
IF (mbuttons = 1) AND (ymaus > 9) AND (ymaus < 310) AND (xmaus > 9) AND (xmaus < 601) Then
if (bzl >= lbound(bzlwahl)) AND (blz <= ubound(bzlwahl)) THEN
If (bzlwahl(bzl) = "o") THEN
bzlSave = "x"
sleep 150
End If
End If
End If
|
Hier sieht man auch schon, das bestimmte bedingungen erfüllt sein müssen, bevor weiter gearbeitet werden soll. Das macht ebenfalls dann auch dein Programm udn sollte damit zumindest den zugriffsfehler auf das array beheben. egal, wie weitere fehler im app vorhanden sein könnten.
Die korrecktur von "blz > gefunden then blz = gefunden" kannst du dir als fix jetzt spaaren. Wenn es auserhalb der grenze ist, dann wird nicht weiter gearbeitet. SOlche fixes sind nur dann sinvoll, wenn man auch dann einen eintrag haben will, wenn man auserhalb der position das minimum oder maximum erhalten will.
beispiel:
Code: |
if mausx > maxhoehe then mausx = maxhohe
if mausx < minhoehe then mausx = minhoehe
|
hiermit bestimmst du, das der wert in mausx niemals auserhalb seine grenzen liegen kann.
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
 |
braesident
Anmeldungsdatum: 15.04.2008 Beiträge: 189 Wohnort: Berlin
|
Verfasst am: 09.11.2012, 12:45 Titel: |
|
|
Oh super, Danke
also bei folgender Variante würde die IF Prüfung abgebrochen sofern kein Mausklick registriert wurde?
Code: | IF (mbuttons = 1) ANDALSO |
jetzt muss ich nur nochmal fragen wegen des arrays. Ich habe das so verstanden.
dies ist ein einfaches Array bzw ein begrenztes:
Code: | DIM tage(0 TO 6) AS STRING = {"M", "D", "M", "D", "F", "S", "S"} | natürlich auch ohne Klammern.
Hier kann ich jederzeit den Inhalt ändern
und so sieht ein dynamisches Array aus
Code: | DIM SHARED AS STRING bzlwahl() |
und hier meine eigendliche Frage, verstanden hab ich es so das ich um den Inhalt zu ändern Code: | redim preserve bzlwahl(i):bzlwahl(i) = "TEST" | schreiben muss
denn: Code: | 380 FOR i = 1 to gefunden 'um mehrere Dateien auszuwählen soll im Array "bzlwahl"
381 redim preserve bzlwahl(i) 'gespeichert werden welche datei markiert ist
382 bzlwahl(i) = "o" 'mit "o" für nicht und mit "x" für geklickt
383 NEXT i | hatte ohne redim preserv nicht gefunzt |
|
Nach oben |
|
 |
ThePuppetMaster

Anmeldungsdatum: 18.02.2007 Beiträge: 1839 Wohnort: [JN58JR]
|
Verfasst am: 09.11.2012, 12:54 Titel: |
|
|
Dim = erzeugt eien variable
Shared = eine variable die global ist (auch in sub / funktionen verfügbar)
Preserve = behält den inhalt des array bei, wenn es vergrösert / verkleinert wird. Ist diese angabe nicht vorhanden, wird der gesammte array-inhalt gelöscht
blub() = undefiniertes array
blub(0 to 10) definiertes array
beispiel:
Code: |
dim array() as integer
|
array mit nicht definierter grösse. (leer)
Code: |
dim shared array() as integer
|
selbes, nur das auch aus sub / function heraus darauf zugeriffen werden kann
Code: |
dim array(3 to 10) as integer
|
array sas per index 3 bis 10 einträge besitzt ... sprich, 3, 4, 5, 6, 7, 8, 9, 10 = 8 einträge insgesammt
Code: |
print ubound(array)
|
liefert 3 zurück, bei array(3 to 10)
lbound entsprechend 10
Code: |
IF (mbuttons = 1) ANDALSO
|
nein
Code: |
IF (mbuttons = 1) ANDALSO (mbutton = 2) then
|
ANDALSO ist ein ersatz für AND, und nicht für Then
folglich wird bei AND geprüft:
Code: |
if (A = 1) AND (A = 2) Then
|
Ist A = 1 UND A = 2 Dann
mit ANDALSO
Code: |
if (A = 1) ANDALSO (A = 2) Then
|
Ist A = 1 UNDDANN Ist A = 2 Then
Wenn A nicht 1 sein sollte, wird A = 2 garnicht erst geprüft und die if sofort übersprungen
das ist bei AND nicht so. da wird immer alles geprüft, bevor entschieden wird, ob das if übersprungen wird, oder nicht.
udn da ist das problem bei array zugriffen.
wenn du in der selben if prüfst, ob ein index innerhalb des arrays liegt, und dann noch den inhalt mit diesem index prüfst, kann es passieren, das wenn r auserhalb liegt, ein zugriff auserhalb der array genzen erfolgt.
bei ANDALSO wird nach der fehlerhaften prüfung der grenze der rest garnicht erst weiter geprüft. und damit kann man es verhindern.
Allerdings solltest su dich erstmal mit den regulären verfahren auseinander setzen, bevor du zu spezielleren verfahren über gehst. Das hilft dir danna uch zu verstehen, wo der unterschied zwischen AND und ANDALSO und OR bzw ORELSE liegt.
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
 |
braesident
Anmeldungsdatum: 15.04.2008 Beiträge: 189 Wohnort: Berlin
|
Verfasst am: 09.11.2012, 13:26 Titel: |
|
|
Zitat: | ersatz für AND, und nicht für Then | hatte ich schon verstanden, ich wollte nur nochmal sichergehen ob ich es richtig verstanden hatte wenn hinter ANDALSO die Array abfrage kommen würde, diese nicht abgefragt wird da mbuttons ja nicht 1 ist.
DIM und SHARED war auch klar nur mit REDIM und PRESERVE hab ich probleme.
Ich versuch es nochmal.
DIM wird ja nur einmalig benutzt - bin ich nun gezwungen im ablauf des Progs ein Array zu vergrößern, dann tu ich dies mit REDIM der selben Variablen und der neuen größen Angabe und damit das was das Array schon beinhaltet nicht verloren geht erweitere ich REDIM mit PRESERVE ?!
Ich mein über probieren hab ich es am Ende hinbekommen. Aber wie du schon mehr oder weniger sagtest ist es besser vorher zu WISSEN was man macht. |
|
Nach oben |
|
 |
ThePuppetMaster

Anmeldungsdatum: 18.02.2007 Beiträge: 1839 Wohnort: [JN58JR]
|
Verfasst am: 09.11.2012, 14:23 Titel: |
|
|
REDIM: richtig erkannt.
ANDALSO: .. nun ... ich spiele hier nicht so sehr auf mbutton als problemträger in der if struktur an, sondern eher auf die bound-grenzen des arrays in bezug auf bzl
aber sonst, jo.
angenommen, du hast mbutton durchaus auch valid auf 1, dann würde die if weiter arbeiten. und zwar bis zum array. da bzl aber eventuell < lbound ist, hättest du wieder das problem des array zugriffes.
ich vertrete den standpunkt (was einige leider nicht tuen), das man jeden möglichen fall spezifizieren sollte, und alle unbekannten fälle durch else ausschliessen.
es sieht im app dann meist nach sehr viel code aus, wo alles mögliche, jeder zustand und x dinge geprüft werden, bevor man zur eigentlichen aufgabe kommt, aber dafür hat man später keine probleme durch ungewollte abstürze, die sich eventuell einfach durch probleme ergeben, die vorher nicht erkannt wurden.
man kann soetwas einfach verhindern, indem man wirklich jeden parameter von grundauf betrachtet und prüft.
das hat auch geschwindigkeitsvorteile
beispielsweise mit deinem array zugriff. Ich habe deinen source so verstanden, das du anhand der maus-position einen index erzeugst, welchen du für den arrayzugriff nutzt.
nun ... selbst würde ich so vorgehen, das ich zuerst einmal die mausposition detektiere. anschliessend prüfe ich, ob die maus-position für x und y überhaupt in einem validem bereich fällt. erst wenn dem so ist, kann ich anfangen das index zu berechnen. anschliessend wird geprüft ob das index im array bereich liegt. udn wenn dem auch so ist, dann greife ich erst auf das array zu.
als problembeispiel:
angenommen, du hast (unwarscheinlich) ein array, das bis maximal &HFFFF (einen kompletten UShort an einträge erfasst. Das sind dann 65535 Einträge.
Weiter angenommen, du fragst deine maus mit UShorts ab (ist jetzt nur alles n beispiel mit Short, liese sich aber auch mit Integer realisieren)
Sobald deine Maus auserhalb des fensters läuft, erhällst du für x und y den wert -1. Da du mit UShort (U = Signiert) arbeitest, bedeutet dies, das du einen Wert von -1 in eine Variable schreibst, die nur 0-65535 aufnehmen kann.
Da die Variable durch ein Bit als U bzw Nicht-U definiert wird (Letztes Bit), würde durch das überschreiben dieses Bits durch das -1 ein Wert von 65535 heraus kommen.
Jetzt hast du also einen Validen Wert in einer Variable stehen, die eigentlich nicht Valid sein sollte, da die maus ja auserhalb deines fensters ist und nicht innerhalb.
Darum sollte jeder zustand möglichst expliziet untersucht bzw. definiert und eingegrenzt werden.
Auch könnten -1 rechnungen bei verwendung von NICHT-U's dazu führen, das Fehler bei der Index-Errechnung auftreten. Gleiches gilt auch für U's.
Durch sogenannte "Überläuft" könnte es dazu kommen, das du Valide einträge erhällst, obwohl dem nicht so ist. Das kann eben durch das Spezifizieren von Min udn Max bereiche vermieden werden.
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4702 Wohnort: ~/
|
Verfasst am: 09.11.2012, 14:54 Titel: |
|
|
Nochmal wegen REDIM [PRESERVE]: wie du richtig sagst , brauchst du das, um die Größe eines dynamischen Arrays zu verändern. Um das klar zu stellen: Du brauchst REDIM vermutlich nur, wenn das Array vergrößert werden soll (verkleinern geht damit zwar genauso, aber so wie ich das sehe, sammelst du ja Dateinamen und brauchst davon nicht plötzlich weniger als zuvor).
Eine mögliche Anwendung wäre, beim Auslesen der Dateien innerhalb eines Ordners Schritt für Schritt weitere Dateien in deinen Ordner zu schreiben, also das Array schrittweise zu vergrößern. Wenn das geschehen ist und du auf einen einzelnen Eintrag zugreifen möchtest, brauchst du vorher kein REDIM verwenden. Du willst die Arraygröße dazu ja nicht verändern. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
braesident
Anmeldungsdatum: 15.04.2008 Beiträge: 189 Wohnort: Berlin
|
Verfasst am: 09.11.2012, 20:53 Titel: |
|
|
Ja ihr habt das beide richtig gesehen. Ganz genau gesagt ist das ganze ein Routenplaner, sprich ich bekomme für ein Bezirk eine *.txt mit unsortierten Kundendaten (kundennummer;name;Adresse;.....u.s.w.). Diese soll eingelesen und bearbeitet werden zu einem Tourenbuch. Da es auch zusammengelegte Touren gibt musste ich mir die möglichkeit suchen mehrere Dateien anzuklicken.
Eine Zeile ist bei mir 10 Pixel hoch und die erste fängt bei 10 an. ist ymaus nun z.B. 15 ergibt das nach meiner Rechnung mit leerstelle vorn dran(da ymaus unter 100) und dann die ersten beiden Zeichen, den Index 1 plus der Startnummer der Dateiliste.
Gut war auf jedenfall nochmal der Anstoß das ymaus nur in ein Arrayindex umgerechnet wird sofern ymaus im möglichen Bereich befindet.
Und um nicht ymaus = -1 zu erhalten hatte ich diesen weg gewählt:
Code: |
IF xmaus = -1 THEN
exi = exis
ELSE
exi = mrad2 - (mrad2*2)
exis = exi
END IF |
also ymaus kann zwar immernoch -1 sein aber passiert dies so wird der letzte positive Wert genutzt.
warscheinlich nicht der schönste Weg aber für mein kenntnisstand erstmal der beste... aber ich bin willig es besser zu machen  |
|
Nach oben |
|
 |
ThePuppetMaster

Anmeldungsdatum: 18.02.2007 Beiträge: 1839 Wohnort: [JN58JR]
|
Verfasst am: 10.11.2012, 11:37 Titel: |
|
|
woher weist du, das dieser wert zuvor gültig war?
nach dem app start wird die var auf 0 stehen, und damit ungültig sein.
erst nach einem durchlauf, (erfolgreich) wird er einen validen wert beinhalten.
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
 |
braesident
Anmeldungsdatum: 15.04.2008 Beiträge: 189 Wohnort: Berlin
|
Verfasst am: 13.11.2012, 10:04 Titel: |
|
|
das stimmt
vor einer Abfrageschleife setze ich folgendes
Code: |
mradoffset = mrad + 1 'mradoffset = 1
GETMOUSE (xmaus,ymaus,mrad,mbuttons,mclib) 'mrad = 0
mrad2=mrad-mradoffset 'mrad2 = -1
IF xmaus = -1 THEN
exi = exis
ELSE
exi = mrad2 - (mrad2*2) exi = 1
exis = exi exis = 1
END IF |
|
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|