Hallo Gemeinde und Profis,
kann mir jemand folgendes Verhalten erklären:
Ich deklarierte ein leeres globales Array $arBase[1]. In einer Funktion erzeugte ich dann mit Stringsplit ein Array ($aArray1) für ein Errorhandling.
Zunächst hatte ich das $aArray1 ohne Schlüsselwort deklariert.
Um nun am Ende der Funktion das $aArray1 quasi zu löschen, habe ich diesem das $arBase[1] zugewiesen.
Nachdem ich später dem $aArray1 das Schlüsselwort Local vorangestellt habe(damit es eben nur in dieser Funktion gilt),
bekam ich den Fehler "Error: Variable used without being declared." in Zeile 38.
Kann man einem lokalen Array kein globales zuweisen?
C
#include <MsgBoxConstants.au3>
#include <StringConstants.au3>
#include <WinAPI.au3>
#include <WindowsConstants.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <File.au3>
#include <FileConstants.au3>
#include <WinAPIFiles.au3>
#include <AutoItConstants.au3>
#include <Array.au3>
#include <WinAPIShPath.au3>
#include <Date.au3>
#include <Misc.Au3>
Global $arBase[1] ; Leeres Array zur "Löschung" von Arrays(Stringsplit)
Func Vend() ;Auslesen Vendor aus WMI
Local $Modelvendor = ObjGet("winmgmts:\\localhost\root\CIMV2").ExecQuery("SELECT Vendor FROM Win32_ComputerSystemProduct", "WQL", 0).ItemIndex(0).Vendor
Local $aArray1 = StringSplit($Modelvendor, " ")
$sString1 = StringUpper($Modelvendor) ; String in Großbuchstaben umwandeln
If $sString1 <> "LENOVO" And $sString1 <> "HP" And $sString1 <> "FUJITSU" Then
_WinAPI_WriteConsole($hConsole, @CRLF & "Error: The Vendor from this device is not supported right now!" & @CRLF & @CRLF & "Program termination!")
Sleep(5000)
Close()
EndIf
$aArray1 = $arBase[1]
Return $sString1
EndFunc ;==>Vend
Alles anzeigen