API Basic Types de - LIHACHTETAN/ClassicUO-BadNewbie-BasicIDE GitHub Wiki

AS

ClassicUO • Basic

AS legt die Konvertierung einer skalaren Variablen fest. Intern gibt es Integer, Decimal, String, Array, Object und Unit (kein Wert). Boolean verwendet Integer 1/0. Die Typnamen dieses Basic-Dialekts garantieren nicht die Speicherbreiten von VB.NET.

Genaue Syntax

VAR name AS type [= value]
DIM name AS type [= value]

Parameter

  • name — Deklarierter Variablenname. Lesen liefert den aktuellen Wert; jede weitere Zuweisung wendet AS erneut an.
  • type — Integer, Long, Short, Byte: vorzeichenbehaftete 32-Bit-Ganzzahl, -2147483648…2147483647; Short/Byte begrenzen den Bereich nicht weiter. Double, Single, Decimal: binäre 64-Bit-Gleitkommazahl, intern Decimal genannt, keine exakte Dezimalrechnung. String: Text. Boolean, Bool: Integer 1/0. Variant, Object: behalten die übergebene Wertart ohne vorgeschriebene Objektinstanz. Groß-/Kleinschreibung ist unwichtig.
  • value — Optionaler Startwert: Zahl, Text, Variable oder Funktionsergebnis. AS gehört zur Deklaration; CInt(value), CDbl(value), CStr(value), CBool(value) sind ausdrückliche Konvertierungsausdrücke.

Rückgabewert

AS liefert keinen Wert. Variablenlesen liefert gespeicherte Art und Wert. Logische Ergebnisse verwenden TRUE=1, FALSE=0. Die Anzahl 2 ist ungleich null, aber 2=TRUE ist falsch; vorhandene Gegenstände mit count<>0 oder CBool(count) prüfen.

Verhalten

  • Ohne Startwert liefert typisiertes VAR 0 für Ganzzahlen/Boolean, Gleitkomma-0 für Double/Single/Decimal und leeren Text für String. Untypisiertes VAR und VAR AS Variant/Object liefern Unit. Skalares DIM ergänzt leeren Text für String, sonst 0. Unit bleibt bei AS-Zuweisung Unit.
  • AS Integer schneidet Nachkommastellen zulässiger Zahlen Richtung null ab. CInt/CLng runden, halbe Werte von null weg: 2.6 ergibt 3, mit AS Integer dagegen 2. Ganzzahltext muss vollständig dezimal ganzzahlig oder 0x-hexadezimal sein; "2.6" ist ungültig. Den Bereich vorher prüfen.
  • AS Boolean vergleicht den ursprünglichen Wert mit numerischer null: Zahl ungleich null → 1, null → 0. Wörter werden nicht erkannt: sogar Text "false" ergibt 1. CBool konvertiert zuerst numerisch. Zahlen/logische Werte verwenden oder Text ausdrücklich mit dem erwarteten Wort vergleichen.
  • AS String verwendet die Textdarstellung der Engine. AS Double/Single/Decimal liest Zahltext mit Dezimalpunkt. Numerisches AS konvertiert Array zu 0, weist aber Object und ungültigen Zahltext mit einem durch TRY/CATCH behandelbaren Fehler zurück. CInt/CLng/CDbl/CSng/CBool sind tolerant: unerkannter Text, Array, Object oder Unit werden zunächst 0. Text mit IsNumeric(value) prüfen, bevor man auf die Konvertierung vertraut.
  • Die Deklaration berechnet den Startwert, wendet AS an und speichert Ergebnis und Typnamen. Jede Zuweisung wiederholt dies. Gleitkommawerte sind Näherungen, ohne Garantie exakter dezimaler Geldrechnung. Gültigkeitsbereiche stehen unter VAR / DIM, Bindungsschutz unter CONST.
  • Nach As ist auch ein deklarierter Structure-Name erlaubt. VAR und DIM dieses Typs ohne Initialisierer erzeugen die Standardfelder. Nur derselbe deklarierte Strukturtyp ist kompatibel; unterschiedliche Strukturtypen werden nicht konvertiert. Verschachtelte Kopien und Referenzfelder beschreibt Structure / New.

Beispiele

1. Zuweisung und Rundung

# source=2.6 ist eine Gleitkommazahl. whole AS Integer speichert 2; CInt(source) ergibt 3 in rounded. Main liefert 2*10+3=23 zur gemeinsamen Prüfung.
Option Explicit On
SUB Main()
    VAR source = 2.6
    VAR whole AS Integer = source
    VAR rounded = CInt(source)
    RETURN whole * 10 + rounded
END SUB

Erläuterung der Parameter und Ausführung:

source=2.6 ist eine Gleitkommazahl. whole AS Integer speichert 2; CInt(source) ergibt 3 in rounded. Main liefert 2*10+3=23 zur gemeinsamen Prüfung.

2. Anzahl und Wahrheitswert

# count=2 ist eine Anzahl. hasItems AS Boolean wird 1. count=TRUE ist falsch, da TRUE genau 1 ist; count<>0 ist wahr. Main liefert hasItems=1: Gegenstände existieren, ihre Anzahl ist damit nicht eins.
Option Explicit On
SUB Main()
    VAR count = 2
    VAR hasItems AS Boolean = count
    IF count = TRUE THEN
        RETURN -1
    END IF
    IF count <> 0 THEN
        RETURN hasItems
    END IF
    RETURN FALSE
END SUB

Erläuterung der Parameter und Ausführung:

count=2 ist eine Anzahl. hasItems AS Boolean wird 1. count=TRUE ist falsch, da TRUE genau 1 ist; count<>0 ist wahr. Main liefert hasItems=1: Gegenstände existieren, ihre Anzahl ist damit nicht eins.

3. Variant behält die Wertart

# value AS Variant speichert zuerst Integer 7, dann String "ore". text AS String beginnt leer. CStr(12) erzeugt "12"; Textverknüpfung ergibt "ore12", den Rückgabewert von Main. Variant erlaubt den Artwechsel.
Option Explicit On
SUB Main()
    VAR value AS Variant = 7
    value = "ore"
    VAR text AS String
    text = value + CStr(12)
    RETURN text
END SUB

Erläuterung der Parameter und Ausführung:

value AS Variant speichert zuerst Integer 7, dann String "ore". text AS String beginnt leer. CStr(12) erzeugt "12"; Textverknüpfung ergibt "ore12", den Rückgabewert von Main. Variant erlaubt den Artwechsel.


en · ru · uk · fr · de · it · es · zh-tw · ja · ko

Basic