Seite 1 von 1

Array in Structure, negative Felder so dauerhaft möglich

Verfasst: 03.11.2009 19:34
von STARGÅTE
Tachchen,

ich würde gerne volgende Structure nutzen:

Code: Alles auswählen

Structure CoolArray
  _Previous_Test.i[10]
  Test.i[0]
  _Next_Test.i[11]
EndStructure
Der Sinn dahinter ist folgender:

Erstelle ich eine Variable:

Code: Alles auswählen

Test.CoolArray
so kann ich mit dieser Structure auf negative Arrayfelder kommen, ohne irgendetwas zu verletzten:

Code: Alles auswählen

Debug "21 Felder (-10..0..10) : "+Str(SizeOf(CoolArray)/SizeOf(Integer))

Test.CoolArray
Test\Test[-10] = 90
Test\Test[0] = 100
Test\Test[10] = 110

For n = -10 To 10
  Debug "Feld "+Str(n)+" : "+Str(Test\Test[n])
Next

Debug "_Previous_Test[0] : "+Str(Test\_Previous_Test[0])
Debug "_Next_Test[10] : "+Str(Test\_Next_Test[10])
Die beiden "unbenutzen Arrays" in CoolArray, sogen dafür das genügent Speicher davor und dahinter reserviert werden.

Doch wird der Compiler auch in zukünftigen Versionen negative ArrayFelder erlauben?

Das ganze geht ja auch nur weil in einer Strukturdefinition [0] extra dafür sogt das das Array "unbestimmt" ist, nur habe ich das bis lang immer nur für Positive Felder genutzt.

Re: Array in Structure, negative Felder so dauerhaft möglich

Verfasst: 04.11.2009 00:56
von DrShrek
wäre so etwas nicht 'zukunftsicherer' und genauso gut?

Code: Alles auswählen

#CoolArrayStart = 10
Structure CoolArray
  Test.i[21]
EndStructure

Test.CoolArray
Test\Test[#CoolArrayStart+-10] = 90
Test\Test[#CoolArrayStart+0] = 100
Test\Test[#CoolArrayStart+10] = 110

For n = -10 To 10
  Debug "Feld "+Str(n)+" : "+Str(Test\Test[#CoolArrayStart+n])
Next
Aber ernsthaft:
Warum muss ein Array überhaupt 'negativ' sein?
Leuchtet mir fast garnicht ein.
Nur weil Du nicht folgendes programmieren willst?

For n = 0 To 20
Debug "Feld "+Str(n-10)": "+Str(Test\Test[n])
Next

Re: Array in Structure, negative Felder so dauerhaft möglich

Verfasst: 04.11.2009 13:46
von 7x7
Dr. Shrek hat geschrieben:Warum muss ein Array überhaupt 'negativ' sein?
Weil es gelegentlich einfach logischer ist? ->OptionBase

Komischerweise war Stargate derjenige, der gegen mich argumentiert hat...und nun der Sinneswandel?

Re: Array in Structure, negative Felder so dauerhaft möglich

Verfasst: 04.11.2009 14:13
von STARGÅTE
Komischerweise war Stargate derjenige, der gegen mich argumentiert hat...und nun der Sinneswandel?
jo sind ja 2 Monate vergangen ^^

Im ernst:

Wennm man ein Array nur einmal verwenden will (zu einem Zweg) dann ist es quatsch negative Arraywerte zu brauchen.
Da kann man wirklich eine Kostante verwenden.

Ich will das Array aber an eine procedure übergeben welche Konstanten einsetzt, diese sind meist Positiv, aber es gibt halt auch welche die sind aus Einfachheitsgründen Negativ :
Um nun ein IF oder Select zu spraen würde ich da gerne meine Struktur verwenden ... damit ich IMMER und ÜBERALL bequem
Test\Test[Field] verwenden kann, ohne eine Konstante mit zu schleppen, und ohne mir gedanken zu machen ob mein Fiel nun negativ ist oder nicht, und alle Konstanten hochzusetzten geht auch nicht, "weil wegen oben" ^^

Im gegensatz zu 7x7, hat mein problem wenigstens eine Lösung ^^ denn sie geht ja ... was für echte Array aber nicht möglich ist ...

Aber das ist dann auch vllt deine Lösung 7x7, einfach diese Structure verwenden ^^

PS außerdem hatte ich schon damals die Idee:

Code: Alles auswählen

Dim MeinArray(-10 To 10 Step 5) ; Erzeugt dann ein Array mit 5 Feldern (-10,-5,0,5,10)