Armed-Assault.de Twitter
Antwort
 
Themen-Optionen Ansicht
Alt 20.05.2012, 16:56   #21 (permalink)
10 Jahre hx3
500 Beiträge1000 Beiträge2.500 Beiträge
 
Benutzerbild von xezon
 
Registriert seit: 31.03.2003
Beiträge: 2.533
Standard

Ghost Aut erwartet ja dass die Abarbeitung seines Programmes bis dahin geht, ansonsten würde er da ja nicht nochmal ein exitWith hinschreiben.

Ich habe das hier im netz gefunden:
http://forums.bistudio.com/showthrea...-Exit-from-SQF

Bon schreibt mit dem if(true)exitWith{}; kann man den scope des Scripts verlassen. So gesehen macht es sinn, ist aber überflüssig am Ende der Datei weil es automatisch endet. Zumindest gehen wir gerade davon aus. Wenn das Script tatsächlich manuell geschlossen werden muss dann müsste dass ja irgendwo stehen. Bei der exitWith Beschreibung steht es jedenfalls nicht.

Ich kann mich errinern bei OFP hatte ich auch mal so einen Fall von SQS leichen die nicht geschlossen wurden. Aber ob das mangels exit war am Ende der Datei weiß ich nicht mehr. Die geöffneten SQS handles haben die Performance verschlechtert.

Geändert von xezon (20.05.2012 um 17:06 Uhr).
xezon ist offline   Mit Zitat antworten
Alt 30.05.2012, 18:34   #22 (permalink)
50 Beiträge100 Beiträge
 
Registriert seit: 29.07.2008
Ort: Wien
Alter: 46
Beiträge: 189
Ghost_Aut eine Nachricht über MSN schicken
Standard

Zitat von xezon

Deine Verwendung da unten is falsch. Möglicherweise macht sich die Engine nichts draus, aber das macht den Fehler nicht minder.


Ich erklärs nochmal kurz: es gibt schleifen² und das switch³ und diese haben ein sogenanntes scope indem du den code einschließt der ausgefühlt werden soll wenn die Eingangsbedingung wahr ist. Es gibt nun 2 möglichkeiten dieses scope zu verlassen:

  • Die Bedingung der Schleife ist falsch
  • Das Scope wird durch einen Jump verlassen
Den Jump erstellt der compiler in Arma 2 durch keywords alá breakOut, breakTo, exitWith. Ein break macht nur dort sinn, wo du einen scope verlassen möchtest.

Anmerkung:
² count und forEach sind auch schleifen wenn ich das richtig sehe
³ switch is equivalent zu if + else if verkettetem statement

Ich hoffe ich konnte helfen
Verstehe ich zwar jetzt nicht ganz, da meine Schleife wie ein counter agiert!
Hier auf dieser Seite hättest du ein Beispiel!
__________________
Ghost_AUT
Ghost_Aut ist offline   Mit Zitat antworten
Alt 30.05.2012, 19:19   #23 (permalink)
10 Jahre hx3
5000 Beiträge
 
Benutzerbild von Xeno
 
Registriert seit: 03.01.2008
Alter: 81
Beiträge: 6.552
Standard

*deleted*

Xeno
__________________
In arma everything is made of refined explodium, armored with wet paper towels.

Geändert von Xeno (08.12.2013 um 16:30 Uhr).
Xeno ist offline   Mit Zitat antworten
Alt 30.05.2012, 21:22   #24 (permalink)
10 Jahre hx3
500 Beiträge1000 Beiträge2.500 Beiträge
 
Benutzerbild von xezon
 
Registriert seit: 31.03.2003
Beiträge: 2.533
Standard

lol was ist das? doppelte schleife 4*4 ?
xezon ist offline   Mit Zitat antworten
Alt 31.05.2012, 12:01   #25 (permalink)
50 Beiträge100 Beiträge250 Beiträge
 
Registriert seit: 16.07.2010
Beiträge: 305
Standard

Zitat von Ghost_Aut Beitrag anzeigen

Also in Großen und ganzen meine ich es so!

Code:
private ["_zahl"];
 
_zahl = 0;
 
while {_zahl <= 24} do {
    _zahl=_zahl + 1;
    hint format ["Zahl: %1", _zahl];
    sleep 1;
};
 
if (_zahl >= 25) exitWith {hint "script code};
Der Befehl "Private" würde in diesen Beispiel doch verhindern, dass "if (_zahl >= 25)" jemals wahr werden würde, oder?
__________________

Geändert von Rockhount (31.05.2012 um 12:08 Uhr).
Rockhount ist offline   Mit Zitat antworten
Alt 31.05.2012, 12:11   #26 (permalink)
10 Jahre hx3
5000 Beiträge
 
Benutzerbild von Xeno
 
Registriert seit: 03.01.2008
Alter: 81
Beiträge: 6.552
Standard

*deleted*

Xeno
__________________
In arma everything is made of refined explodium, armored with wet paper towels.

Geändert von Xeno (08.12.2013 um 16:30 Uhr).
Xeno ist offline   Mit Zitat antworten
Alt 31.05.2012, 12:59   #27 (permalink)
50 Beiträge100 Beiträge250 Beiträge
 
Registriert seit: 16.07.2010
Beiträge: 305
Standard

Was nützt dann dieser Befehl, wenn die Variable "_zahl" danach nochmal deklariert bzw. definiert wird?
__________________

Geändert von Rockhount (31.05.2012 um 14:10 Uhr).
Rockhount ist offline   Mit Zitat antworten
Alt 31.05.2012, 14:12   #28 (permalink)
10 Jahre hx3
5000 Beiträge
 
Benutzerbild von Xeno
 
Registriert seit: 03.01.2008
Alter: 81
Beiträge: 6.552
Standard

*deleted*

Xeno
__________________
In arma everything is made of refined explodium, armored with wet paper towels.

Geändert von Xeno (08.12.2013 um 16:31 Uhr).
Xeno ist offline   Mit Zitat antworten
Alt 31.05.2012, 14:27   #29 (permalink)
SQF Zauberer 10 Jahre hx3
500 Beiträge1000 Beiträge
 
Benutzerbild von Vienna
 
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
Standard

Zitat von Rockhount Beitrag anzeigen

Was nützt dann dieser Befehl, wenn die Variable "_zahl" danach nochmal deklariert bzw. definiert wird?

Ohne Private könnte eine "Unter-Routine", welche den gleichen Variablennamen wie die "Haupt-Routine" verwendet, den Inhalt der Variablen der "Haupt-Routine" verändern.

Das von dir genannte Beispiel besteht nur aus einer Routine.
Vienna ist offline   Mit Zitat antworten
Alt 31.05.2012, 14:38   #30 (permalink)
50 Beiträge100 Beiträge250 Beiträge
 
Registriert seit: 16.07.2010
Beiträge: 305
Standard

Das heißt also, dass in der obersten Ebene eines Scripts der Befehl "Private" nur dann was nützt, wenn man in dieser Ebene auch "calls" benutzt andernfalls müsste man in den Unterebenen(for,while,...) den "Private" Befehl nochmal eintragen, damit die Variablen der obersten Ebene nicht verändert werden.
__________________

Geändert von Rockhount (31.05.2012 um 14:44 Uhr).
Rockhount ist offline   Mit Zitat antworten
Alt 31.05.2012, 16:23   #31 (permalink)
SQF Zauberer 10 Jahre hx3
500 Beiträge1000 Beiträge
 
Benutzerbild von Vienna
 
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
Standard

while oder for sind keine "Unter-Routinen". Eine solche wäre eine Funktion, welche mit call aufgerufen wird.

Code:
temp = [] spawn
  {
    private ["_UR","_a"];
    _UR = {_a = 20};
    _a= 10;
    call _UR;
    hint str _a
  }

Code:
temp = [] spawn
  {
    private ["_UR","_a"];
    _UR = {private "_a";_a = 20};
    _a= 10;
    call _UR;
    hint str _a
  }
Teste einmal diese beiden "Haupt-Routinen". Sie enthalten eine mit call aufgerufene "Unter-Routine". Einmal mit und einmale ohne Private in der "Unter-Routine".

Stellt fest welches Ergebnis jeweils die hint-Ausgabe zeigt.
Vienna ist offline   Mit Zitat antworten
Alt 31.05.2012, 22:39   #32 (permalink)
10 Jahre hx3
500 Beiträge1000 Beiträge2.500 Beiträge
 
Benutzerbild von xezon
 
Registriert seit: 31.03.2003
Beiträge: 2.533
Standard

Zitat von Rockhount Beitrag anzeigen

Was nützt dann dieser Befehl, wenn die Variable "_zahl" danach nochmal deklariert bzw. definiert wird?

Siehe
Referenzparameter ? Wikipedia
xezon ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

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


Kontakt - HX3.de - Archiv - Nach oben

Angetrieben durch vBulletin, Entwicklung von Philipp Dörner & Tobias



SEO by vBSEO 3.2.0 ©2008, Crawlability, Inc.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118