global const array [gibt's nicht!]

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: global const array [gibt's nicht!]

Re: global const array [gibt's nicht!]

von steffn » Mo, 15.12.2008 11:30

Dass eine Sitzung sich auf das Laufen des Betriebsystems bezieht, wusste ich nicht, ich dachte dabei ginge es um das Offenhalten der Datei in der sich der Code befindet.
Dass Deine Codebeispiele lauffähig sind und meins nicht, ist mir nicht aufgefallen. :?

Aber wieso meine Datenfelder manchmal so leer wie "" sind, weiß ich leider immer noch nicht. :(
Ich denke immer noch, dass das mit Debuggen, Fehlermeldungen, Codeänderungen zu tun hat.

Re: global const array [gibt's nicht!]

von komma4 » Mo, 15.12.2008 10:51

Ich habe das Gefühl, dass Du meine Beiträge nicht richtig liesst.

Aus der Hilfe habe ich zitiert: die Dauer der Gültigkeit der GLOBAL-Varibalen ist sitzungslang. Bedeutet: auch wenn die Datei, welcher den Code enthält, geschlossen wird, sind diese noch vorhanden.
Deren Inhalt änderst Du alleine durch neues Setzen.

P.S.: von mir geposteter Code ist [bei mir: meiner OOo-Betriebssystem-Kombination] lauffähig. Wenn ich etwas "aus dem Kopf" entwerfe, schreibe ich das dazu.

Re: global const array [gibt's nicht!]

von steffn » Mo, 15.12.2008 08:49

Tag Winfried,

nein, irgendwie ... absolut nicht.
Ich habe das Gefühl, dass Du meine Beiträge zu schnell liest und dabei leider nicht verstehst, welche Informationen ich eigentlich gerne hätte.
Es kann genauso gut an meiner Formulierung liegen ... aber ein bisschen subjektiv darf ich hoffentlich sein.

komma4 hat geschrieben:...
Du verwendest ein ARRAY - und das benötigt eine Positionsangabe...
...
Dein Beispiel kann nicht laufen.
...
Ich habe aber doch nicht meinen Code hier rein kopiert sondern lediglich, im Irrglauben, dass dies zur Klärung hilft, Dein Beispiel so geändert, dass die Zeilen mit Datenfeld in einer Folge stehen, die der in meinem Code sehr ähnelt. Und da Du keine verwendet hast, ...
Glaub mir, soweit ich das überblicken kann, funktionieren meine Prozeduren bestens, es entstehen nur Fehler, wenn das oder die Datenfelder manchmal "auf einmal" wieder leer sind.
Ich möchte auch gar keinen Code als Antwort sondern "nur" die Frage, wie oben beschrieben, beantwortet bekommen:
Welche Ereignisse können das Löschen von befüllten globalen Datenfeldern auslösen?
Ich denke nun mal, dass diese solange erhalten bleiben müssten, wie die Datei geöffnet ist.
FALSE ?

Re: global const array [gibt's nicht!]

von komma4 » Mo, 15.12.2008 06:14

Hallo steffn,

Du verwendest ein ARRAY - und das benötigt eine Positionsangabe...
F1 Online Hilfe,Basic, ARRAY-Funktion [Laufzeit] hat geschrieben:Dim A As Variant
A = Array("Fred","Tom","Bill")
Msgbox A(2)
Dein Beispiel kann nicht laufen.

Code: Alles auswählen

Option Explicit
' definiert ein nicht-deminsioniertes Array
Global meinArr() as String
Sub Main1

meinArr() = "Inhalt" ' einmaliges Füllen
' ergibt Fehler: Objektvariable nicht belegt
End Sub
' ...
' andere Subs, eventuelle Fehlermeldungen, eventuelle Code Änderungen
'...
Sub Main2
print meinArr() ' hier mal gefüllt, mal leer, noch kein System erkannt
End Sub
Richtig wäre: 1. definiere, 2. dimensioniere und setze:

Code: Alles auswählen

Global asMeineStrings(3) as String
' ergibt: 4 strings
Sub testStringArray
asMeineStrings(3) = "Inhalt"
End Sub

Werde Licht?



Tipp: ich verwende eine (eigene!) Ungarische_Notation
  • a = array
    s = string
    i = integer
    l = long
    v = variant
    o = object
Damit ist im Code immer klar, um was es sich handelt. Dient der Übersichtlichkeit bei grösseren Codestücken.

Re: global const array [gibt's nicht!]

von steffn » So, 14.12.2008 20:44

Verstehe ich nicht.^^ Ja.
Ja.

In meinem Fall würde ich das anhand von Code mit deinen Begriffen so beschreiben:

Code: Alles auswählen

Option Explicit
Global meinArr() as String
Sub Main1
meinArr() = "Inhalt" ' einmaliges Füllen
End Sub
' ...
' andere Subs, eventuelle Fehlermeldungen, eventuelle Code Änderungen
'...
Sub Main2
print meinArr() ' hier mal gefüllt, mal leer, noch kein System erkannt
End Sub

Re: global const array [gibt's nicht!]

von komma4 » So, 14.12.2008 19:54

steffn hat geschrieben:Problem ist, dass diese später überraschenderweise leer sind
F1 Online Hilfe Basic: Global-Anweisung [Laufzeit] hat geschrieben:Dimensioniert eine Variable oder ein Array auf globaler Ebene (also nicht innerhalb eine Subroutine oder Funktion), sodass die Variable bzw. das Array in allen Bibliotheken und Modulen für die Dauer der aktuellen Sitzung gültig ist.
Du definierst sie ausserhalb - und rufst die SUB, vor der sie stehen auf, vor der Anweisung auf, die sie ändern? Sie stehen im gleichen Modul der selben Bibliothek?
Beispiel:

Code: Alles auswählen

Global meineVar as String
Sub Main1
meineVar = "erster Inhalt"
print meineVar
' irgendwas
' ...
' Aufruf der SUB zum Ändern
Main2
'...
print meineVar
' weiter im Text
'...

print meineVar ' hier leer?
End Sub

Sub Main2
meineVar = "neuer Inhalt"
End Sub
Verwendest Du Option Explicit?

Re: global const array [gibt's nicht!]

von steffn » So, 14.12.2008 18:47

Damit hat meine Suche ein Ende - danke.

...

Ich hätte allerdings immer noch gerne Datenfelder voller Konstanten. :mrgreen:
Daher benutze ich jetzt globale Datenfelder und fülle diese einmal.
Problem ist, dass diese später überraschenderweise leer sind und somit Fehler hervorrufen, obwohl die Datei durchgängig geöffnet ist und ich den Inhalt ganz sicher nur an einer Stelle im Code ändere.
Welche Ereignisse können so etwas auslösen :?:

Re: global const array

von hawe » Sa, 22.11.2008 09:19

Nein, es gibt keine Const Arrays...

Re: global const array

von steffn » Sa, 22.11.2008 00:15

ja und ich möchte gerne ein datenfeld voll von konstanten
daher meine fragen:
- funktioniert so etwas?
- und wie ist die schreibweise?

Re: global const array

von hawe » Do, 20.11.2008 21:05

Im Deklarationsteil eines Moduls gibt es keine Wertzuweisungen ausser bei Konstanten
Const

global const array [gibt's nicht!]

von steffn » Do, 20.11.2008 15:56

ich möchte die inhalte für ein datenfeld unter option explicit festlegen um die werte außerhalb meiner subs und ganz oben in meinem modul bei den einfachen konstanten variablen zu haben

- funktioniert das?
- schreibweise?

wie ich es auch schreibe, ich bekomme immer eine fehlermeldung
mein letzter versuch war:

Code: Alles auswählen

 option explicit
dim array(1 to 8) as integer
array(1) = 10
...
Bild
dabei markiert er netterweise "integer"

Nach oben