Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Dusky_Joe
Anmeldungsdatum: 07.01.2005 Beiträge: 1007 Wohnort: Regensburg/Oberpfalz
|
Verfasst am: 19.04.2005, 14:13 Titel: Befehlserklärung: UNION/ENUM |
|
|
Hi Leute!
Im einen oder anderen Beispielprogramm, vor allem aber in den BI's von FB findet man immer wieder mal UNION und ENUM-Blocks. Das Engl. Handbuch gibt leider wenig Aufschluss darüber...
Anmerkung: Es wäre möglich, dass ich die eine oder Andere Formulierung in der FB-Referenz verwende... ich hoffe, das ist in Ordnung. In der End-Version werde ich auf jeden Fall eine Bemerkung anfügen, dass mir die QB-Community geholfen hat, und (sofern ich mich noch an alle erninnere...) einige Namen erwähnen. _________________ fully biological degradable
Once, the big wave arrives, you've got two ways, you can go:
Either, you ride it, or you don't do.
But, if you don't ride, you'll never know wether you'd have gone wet. |
|
Nach oben |
|
|
stef
Anmeldungsdatum: 13.01.2005 Beiträge: 102
|
Verfasst am: 19.04.2005, 15:07 Titel: |
|
|
Ich habe zwar noch nie FB verwendet, aber da es ja nichts anderes als eine vereinigung von qb und c++ Befehlen ist, kann ich trotzdem versuchen zu helfen
enum:
enum steht für Enumeration (Aufzählung).
Es wird verwendet um Zuständen einen Namen zu geben. Ein berühmtes Beispiel sind dabei boolsche Variablen. Anstatt mit den Zahlen –1 und 0 zu arbeiten ist es doch Übersichtilicher die Wörter true und false zu verwenden:
enum boolean {true, false}
boolean bWert = true;
Union:
Eine union hat nur einen Unterschied zu einem type-Feld, nämlich das alle Variablen sich den selben Speicher teilen. Bisher habe ich das nur bei der Datenübertragung benötigt. Wenn man immer nur jeweils ein Byte senden darf, dann muß man eine Integer-Variable in ihre 4 Byte zerlegen. Ich habe jetzt keine Ahnung wie eine Union in FB aussieht, aber etwa so sollte es gehen:
Code: | UNION iUnion
i AS INTEGER
b(1 TO 4) AS BYTE
END UNION
DIM Variable AS iUnion
INPUT iUnion.i
FOR i% = 1 TO 4
CALL send(iUnion.b(i%))
NEXT I% |
|
|
Nach oben |
|
|
Dusky_Joe
Anmeldungsdatum: 07.01.2005 Beiträge: 1007 Wohnort: Regensburg/Oberpfalz
|
Verfasst am: 19.04.2005, 15:21 Titel: |
|
|
Perfekt!
Von so einer Erklärung träumt man *g*
Also danke! _________________ fully biological degradable
Once, the big wave arrives, you've got two ways, you can go:
Either, you ride it, or you don't do.
But, if you don't ride, you'll never know wether you'd have gone wet. |
|
Nach oben |
|
|
marzec
Anmeldungsdatum: 13.10.2004 Beiträge: 267
|
Verfasst am: 19.04.2005, 15:50 Titel: |
|
|
fb ist keine vereinigung von basic und c++. aber lassen wir das.
das enum beispiel ist so nicht ganz korrekt. enums in fb werden wie folgt verwendet.
enum EnumName <- ist optinal afaik, einfach checken
MY_ENUM_ID
MY_SECOND_ENUM_ID
end enum
enums sind dabei 32-bit integers. im obigen beispiel hätte MY_ENUM_ID den wert 0, alle folgenden halt jeweils immer um eins mehr als der vorhergehende. man kann auch neue "offsets" setzen bei denen zu zählen begonnen wird. z.B.
enum EnumName
MY_ID = 10
MY_ID_2
end enum
MY_ID würde den wert 10 erhalten, MY_ID_2 den wert 11 etc.
enums werden vorrangig als #define/const ersatz benutzt, da sie einem das lästige per hand durchnummerieren ersparen. _________________ Yagl - yet another gameprogramming library |
|
Nach oben |
|
|
Dusky_Joe
Anmeldungsdatum: 07.01.2005 Beiträge: 1007 Wohnort: Regensburg/Oberpfalz
|
Verfasst am: 19.04.2005, 15:58 Titel: |
|
|
OK... Aber mir ist jetzt eine Zeile aufgefallen:
Code: |
ENUM EnumName
...
END ENUM
DIM Variable AS EnunName
|
Was hat das jetzt für nen Sinn?
Ist Variable dann so was wie ein UDT mit vielen verschiedenen INTEGER-Feldern? _________________ fully biological degradable
Once, the big wave arrives, you've got two ways, you can go:
Either, you ride it, or you don't do.
But, if you don't ride, you'll never know wether you'd have gone wet. |
|
Nach oben |
|
|
stef
Anmeldungsdatum: 13.01.2005 Beiträge: 102
|
Verfasst am: 19.04.2005, 16:22 Titel: |
|
|
Ach ja stimmt bei Basic muß man das natürlich anders machen.
ENUM boolean
true
false
END ENUM
DIM bWert AS boolean
Der Sinn ist einfach Zuständen einen Namen zu geben. Da bWert in dem Beispiel vom Typ boolean ist kann er nur die Zustände true oder false annehmen:
bWert = true
if bWert = true THEN ...
In wirklichkeit wird jedem Zustand eine Zahl zugeordnet. Es währe also das selbe wie wenn man schreiben würde:
CONST true = 0
CONST false = 1
DIM bWert AS INTEGER
bWert = true
if bWert = true THEN ... |
|
Nach oben |
|
|
marzec
Anmeldungsdatum: 13.10.2004 Beiträge: 267
|
Verfasst am: 19.04.2005, 16:49 Titel: |
|
|
@dusky joe
die variable würde mehr oder minder als integer definiert werden wie stef bereits gesagt hat. es is also kein udt. die sinnhaftigkeit dahinter besteht darin, konstanten deren werte im grunde irrelevant sind schön zu kapseln. beispielsweise für rückgabewerte von funktionen
Code: |
enum ERROR_CODE
ERROR_FILE_NOT_FOUND
ERROR_FILE_READ_ONLY
ERROR_UNKNOWN
end enum
dim error as ERROR_CODE
error = myOpenFileFunction( "test.txt" )
if( error = ERROR_FILE_NOT_FOUND ) then bleh
...
|
_________________ Yagl - yet another gameprogramming library |
|
Nach oben |
|
|
helium
Anmeldungsdatum: 10.09.2004 Beiträge: 397 Wohnort: Leverkusen
|
Verfasst am: 20.04.2005, 16:19 Titel: |
|
|
Zitat: | fb ist keine vereinigung von basic und c++ |
Eine Vereinigung sicherlich nicht, aber existieren in FB irgendwelche Dinge, die nicht einfach eins zu eins aus C übernommen wurden, die es in QB nicht gibt?
Verständlich ist die Aussage meiner Meinung nach irgendwie schon. _________________ Bevor Sie aufhören sich körperlich zu betätigen sollten Sie ihren Doktor befragen. Körperliche Inaktivität ist abnormal und gefährlich für Ihre Gesundheit. |
|
Nach oben |
|
|
d.j.peters Gast
|
Verfasst am: 23.04.2005, 10:58 Titel: |
|
|
Dusky_Joe hat Folgendes geschrieben: | OK... Aber mir ist jetzt eine Zeile aufgefallen:
Code: |
ENUM EnumName
...
END ENUM
DIM Variable AS EnunName
|
Was hat das jetzt für nen Sinn?
Ist Variable dann so was wie ein UDT mit vielen verschiedenen INTEGER-Feldern? |
Hallo,
das man eine Variable mit dem type enum declariert hat folgenden Grund.
Code: |
enum erlaubte_werte
ok
auch_ok
end enum
dim wichtiger_parameter as erlaubter_wert
wichtiger_parameter = ok
wichtiger_parameter = auch_ok
wichtiger_parameter = 4 'ergibt Error
|
Noch eine schöne Zeit.
Joshy |
|
Nach oben |
|
|
|