Globale Variablen wieder freigeben möglich ??

Hier ist der ideale Ort um über Scripts und Mods für X²: Die Bedrohung zu diskutieren.

Moderators: Scripting / Modding Moderators, Moderatoren für Deutsches X-Forum

User avatar
mf_lueders
Posts: 346
Joined: Tue, 17. Feb 04, 14:42
x2

Globale Variablen wieder freigeben möglich ??

Post by mf_lueders »

Hi allerseits,

ich habe mir mal die bisher publizierten neuen Befehle angeschaut und dabei ist folgende Frage aufgetaucht:
Gibt es auch eine Möglichkeit, globale Variablen wieder freizugeben, soll heissen, nicht nur mit null zu belegen, sondern komplett aus dem System zu entfernen ?
Ansonsten könnte es ja - im worst case - passieren, dass die mir über kurz oder lang den Speicherstand "verseuchen", wenn sie in den von mir geladenen Skripten exzessiv verwendet werden, oder ?

Als letztes noch die Frage, welche Namenskonvention gilt, damit ein selbstgeschriebenes Skript nicht aus versehen eine globale Variable eines evtl. signierten überschreibt, oder kann das nicht passieren :?

CU, MF
:skull: :skull: :skull:
ArcaJeth
Posts: 2245
Joined: Mon, 10. Nov 03, 18:22
x3tc

Post by ArcaJeth »

1. Also wenn ich die 'null' Geschichte damals in den SQL-Vorlesungen richtig Verstanden habe ist 'null' kein Wert sondern eben einfach nix, sprich gelöscht ;)
2. Ich hab meine Glob/Lokalen Variablen der SVP immer 'SVP.*' gennant.
XeHonk
Posts: 1087
Joined: Sun, 7. Mar 04, 23:03
x3tc

Post by XeHonk »

es ist nicht gesagt, dass null auch die verbindung von name zum wert löscht.. mf_lueders hat da sicherlich n gutes argument :P aber da es kein delete gibt, ist null wohl die einzige möglichkeit

am besten mal einfach mal inner schleife austesten, obs da n speicherleck von gibt ^^
User avatar
mf_lueders
Posts: 346
Joined: Tue, 17. Feb 04, 14:42
x2

Post by mf_lueders »

ArcaJeth[D6a] wrote:1. Also wenn ich die 'null' Geschichte damals in den SQL-Vorlesungen richtig Verstanden habe ist 'null' kein Wert sondern eben einfach nix, sprich gelöscht ;)
Hängt ein bisschen von der Speicherverwaltung ab, und SQL ist nicht gerade die Mutter aller Skriptsprachen :D

Wenn man mal bei klassischen Programmiersprachen schaut, so bleibt der Variablenbezeichner ja erhalten, auch wenn man den Wert auf null setzt.
Für die globalen Variablen des SE würde das bedeuten, dass mein - in jedem Save gespeicherter - Stack von globalen Variablen immer grösser werden kann.
2. Ich hab meine Glob/Lokalen Variablen der SVP immer 'SVP.*' gennant.

OK, daraus schliesse ich mal, dass es keine Konvention gibt, oder ?

Wäre es dann nicht sinnvoll, ähnlich der XML-PageID Sammlung von MrMilti ne Sammlung der Präfixe für globale Variablen zu machen ?
Ideal wäre es gewesen, das zu verbinden, aber der Zug dürfte abgefahren sein...

CU, MF
:skull: :skull: :skull:
ticaki
Posts: 4861
Joined: Wed, 6. Nov 02, 20:31
x3

Post by ticaki »

denke ich nicht... Ich setze grundsätzlich den Namen des Scripts oder meinen Nick in die Variablen, nach dem Muster "bph.*" ein und es gibt nur ein Script meines Wissens was das nicht macht ('mk3') :D

Gruß ticaki
Zur Zeit nicht aktiv
User avatar
mf_lueders
Posts: 346
Joined: Tue, 17. Feb 04, 14:42
x2

Post by mf_lueders »

ticaki wrote:denke ich nicht... Ich setze grundsätzlich den Namen des Scripts oder meinen Nick in die Variablen, nach dem Muster "bph.*" ein und es gibt nur ein Script meines Wissens was das nicht macht ('mk3') :D
OK, wenn es schon ne implizite Konvention gibt, hat sich die Frage erledigt.

CU,MF
:skull: :skull: :skull:
User avatar
BurnIt!
EGOSOFT
EGOSOFT
Posts: 5116
Joined: Wed, 6. Nov 02, 20:31
x4

Post by BurnIt! »

Die MK3 ist da nur bei zwei globalen Vars "schlampig".
Logging und traderdistress

alle anderen sind schön ordentlich mit autotrade.* bezeichnet.
BurnIt!
In der Ruhe liegt die Kraft. / In peace lies strength.
XeHonk
Posts: 1087
Joined: Sun, 7. Mar 04, 23:03
x3tc

Post by XeHonk »

Hängt ein bisschen von der Speicherverwaltung ab, und SQL ist nicht gerade die Mutter aller Skriptsprachen
mit der speicherverwaltung hat das nichts zu tun ^^
Wenn man mal bei klassischen Programmiersprachen schaut, so bleibt der Variablenbezeichner ja erhalten, auch wenn man den Wert auf null setzt.
Für die globalen Variablen des SE würde das bedeuten, dass mein - in jedem Save gespeicherter - Stack von globalen Variablen immer grösser werden kann.
kennst du hashmaps? die globalen variablen hören sich ziemlich stark danach an.. und ob die verbindung einer variablen zu null gespeichert wird oder nicht hängt ausschließlich von der implementierung ab..
=> an ausprobieren kommst nit vorbei
User avatar
mf_lueders
Posts: 346
Joined: Tue, 17. Feb 04, 14:42
x2

Post by mf_lueders »

XeHonk wrote:mit der speicherverwaltung hat das nichts zu tun ^^

Sorry, war mal wieder schlampig in meiner Wortwahl...
=> an ausprobieren kommst nit vorbei
Werd dann mal nen Test starten müssen...
Obwohl ich da schwarz sehe, denn eigentlich müsste das Verhalten von "get global var..." für gelöschte und auf null gesetzte Variablen gleich sein, nämlich null zurückgeben.
Aber vielleicht gibts ja auch ne NullPointerException :)
:skull: :skull: :skull:
XeHonk
Posts: 1087
Joined: Sun, 7. Mar 04, 23:03
x3tc

Post by XeHonk »

Obwohl ich da schwarz sehe, denn eigentlich müsste das Verhalten von "get global var..." für gelöschte und auf null gesetzte Variablen gleich sein, nämlich null zurückgeben.
ists das nicht? ^^
wenn du ne nicht-existierende variable abrufst kriegst auch null zurück, oder? :P
User avatar
Lucike
Posts: 12969
Joined: Sun, 9. May 04, 21:26
x4

Post by Lucike »

Passt ein wenig hier rein. Ich wollte kein neuen Thread aufmachen. ;)

Was wird im Logbuch angezeigt? Eigentlich doch "Xenon, Khaak", oder?

Code: Select all

001   set global variable: name=$HALLO value=Khaak
002   set global variable: name=$TEST value=Xenon
003   
004   $Work1 = get global variable: name=$HALLO
005   $Work2 = get global variable: name=$TEST
006   write to player logbook $Work1
007   write to player logbook $Work2
008   
009   return null
Es steht aber im Logbuch "Xenon, Xenon". Verstehe ich nicht oder bin ich blind. :?
Image
User avatar
MODIFIED
Posts: 1365
Joined: Tue, 30. Mar 04, 00:15
x3

Post by MODIFIED »

Lucike FZ wrote:

Code: Select all

001   set global variable: name=$HALLO value=Khaak
002   set global variable: name=$TEST value=Xenon
003   
004   $Work1 = get global variable: name=$HALLO
005   $Work2 = get global variable: name=$TEST
006   write to player logbook $Work1
007   write to player logbook $Work2
008   
009   return null
global variable name=HALLO (String) und nicht Variable $HALLO
Für $Test das gleiche
[ external image ]
Saya Kho hat ihren Raumanzug verlassen, dieser Raumanzug gehört nun ihnen.
Bret Serra hat diese Welt verlassen, diese Welt gehört nun ihnen.
User avatar
Lucike
Posts: 12969
Joined: Sun, 9. May 04, 21:26
x4

Post by Lucike »

Man bin ich blöd! :oops: Ich danke dir für die Erlösung. ;)

Code: Select all

001   $GlobVar1 = 'HALLO'
002   $GlobVar2 = 'TEST'
003   
004   set global variable: name=$GlobVar1 value=Khaak
005   set global variable: name=$GlobVar2 value=Xenon
006   
007   $Work1 = get global variable: name=$GlobVar1
008   $Work2 = get global variable: name=$GlobVar2
009   write to player logbook $Work1
010   write to player logbook $Work2
011   
012   return null
oder

Code: Select all

001   set global variable: name='HALLO' value=Khaak
002   set global variable: name='TEST' value=Xenon
003   
004   $Work1 = get global variable: name='HALLO'
005   $Work2 = get global variable: name='TEST'
006   write to player logbook $Work1
007   write to player logbook $Work2
008   
009   return null
Gruß
Lucike
Image

Return to “X²: Die Bedrohung - Scripts und Modding”