 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
St_W

Anmeldungsdatum: 22.07.2007 Beiträge: 956 Wohnort: Austria
|
Verfasst am: 09.02.2009, 19:03 Titel: Frage zu Shared, Var-len Strings |
|
|
Hallo
Warum funktioniert folgender Code:
Code: | DIM test(0 to 4) AS STRING = { "Hallo", "Welt", "Test", "QB", "FreeBasic" } |
und der folgende nicht?
Code: | DIM SHARED test(0 to 4) AS STRING = { "Hallo", "Welt", "Test", "QB", "FreeBasic" } |
Wenn man die Kurzschreibweise auflöst funktioniert es:
Code: | DIM test(0 to 4) AS STRING
test(0) = "Hallo"
test(1) = "Welt"
test(2) = "Test"
test(3) = "QB"
test(4) = "FreeBasic" |
Kann es sein, dass ich ein Shared-String-Array variabler Länge nur so mit Werten befüllen kann? Wenn Ja, wieso?
LG,
St_W _________________ Aktuelle FreeBasic Builds, Projekte, Code-Snippets unter http://users.freebasic-portal.de/stw/
http://www.mv-lacken.at Musikverein Lacken (MV Lacken) |
|
Nach oben |
|
 |
ThePuppetMaster

Anmeldungsdatum: 18.02.2007 Beiträge: 1839 Wohnort: [JN58JR]
|
Verfasst am: 09.02.2009, 19:36 Titel: |
|
|
weil der compiler das ganze dynamisch umsetzen muss (alloc bedingt), und nicht in den stack packen kann, wie er er machen würde, wenn es statisch wär. Dynamische werden zwar auch teilweise in den stack gepumpt, aber da nur der header ohne speicher mit (Allocate) einzuhohlen. Dadurch kannst du das nur zur laufzeit machen, sprich durch direkte angabe. Dein App wird beim laufen das OS bitten einen bestimmten speicherbereich zu hohlen, indem er das ablegen kann. daraufhin werden position (pointer), länge und alloc-grösse im stack abgelegt, und die daten selbst im mem am pointer.
Statische variablen haben eine feste, nicht veränderbare länge und können daher sofort direkt umgesetzt werden. zwar wird auch hier alloct, aber die grössenverhältnisse stehen fest, und können daher "statisch" in das prog einkompiliert werden.
PS: Das ist nciht nur beim shared array so, sondern auch beim shared string generell
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
 |
St_W

Anmeldungsdatum: 22.07.2007 Beiträge: 956 Wohnort: Austria
|
Verfasst am: 09.02.2009, 20:36 Titel: |
|
|
Kann man dem Compiler irgendwie sagen, dass er das statisch machen soll? Denn die Werte aus dem Array werden nur ausgelesen und niemals verändert (Sprich: Die Größe ändert sich nie).
Oder kann man Konstanten mit Array-Index definieren? Das wäre am Idealsten...
Ich brauche nämlich eine Art Funktion, die mir für eine bestimmte Zahl zwischen 0 und 255 eine bestimmte - immer gleiche - Zeichenkette zurückgibt. Dies als Funktion zu implementieren wäre zu umständlich, oder?
Ich hoffe jetzt darauf, dass FreeBasic da irgend ein einfacheres Mittel zur Verfügung stellt... _________________ Aktuelle FreeBasic Builds, Projekte, Code-Snippets unter http://users.freebasic-portal.de/stw/
http://www.mv-lacken.at Musikverein Lacken (MV Lacken) |
|
Nach oben |
|
 |
ThePuppetMaster

Anmeldungsdatum: 18.02.2007 Beiträge: 1839 Wohnort: [JN58JR]
|
Verfasst am: 09.02.2009, 21:08 Titel: |
|
|
St_W hat Folgendes geschrieben: | Kann man dem Compiler irgendwie sagen, dass er das statisch machen soll? Denn die Werte aus dem Array werden nur ausgelesen und niemals verändert (Sprich: Die Größe ändert sich nie). |
Code: | Dim Shared Bla as ZString * <maximallänge als zahl> = blub |
Zitat: | Oder kann man Konstanten mit Array-Index definieren? Das wäre am Idealsten... |
hä? [EDIT]: axooo .. nö .. das geht ned
Zitat: | Ich brauche nämlich eine Art Funktion, die mir für eine bestimmte Zahl zwischen 0 und 255 eine bestimmte - immer gleiche - Zeichenkette zurückgibt. Dies als Funktion zu implementieren wäre zu umständlich, oder? | Nö
Code: | function getconststring(V_ID as UByte) as String
Select Case V_ID
Case 0: Return "bla"
Case 1: Return "Blub"
Case 2: Return "foo"
'...
End Select
End Function
|
Zitat: | Ich hoffe jetzt darauf, dass FreeBasic da irgend ein einfacheres Mittel zur Verfügung stellt... | http://www.freebasic-portal.de/index.php?s=reftopic&id=132 .. zwar noch nie mit gearbeitet, aber sollte kein prob sein.
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|