Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Michael Frey

Anmeldungsdatum: 18.12.2004 Beiträge: 2577 Wohnort: Schweiz
|
Verfasst am: 20.05.2006, 13:53 Titel: Pointer auf Konstanten |
|
|
Im moment bastle ich mit Pointern rum.
Das ganze klappt soweit so gut, was ich aber beim besten Willen nicht schaffe ist es einen Pointer auf eine Konstante zeigen zu lassen.
z.B.
Code: | Dim a as string
dim b as string ptr
Const Hallo="Hallo Welt"
b=@Hallo
? Hallo
? *b
sleep |
oder
Code: | Dim a as string
dim b as any ptr
dim c as string ptr
Const Hallo="Hallo Welt"
b=@Hallo
c=b
? Hallo
? *c |
Beides klappt nicht.
Auch die Methode von http://www.freebasic.net/wiki/wikka.php?wakka=KeyPgAt will nich gehen;
Code: | dim b as string ptr
b=@"Hallo Welt"
? *b |
Hat mir jemannd einen Tipp?
Dank im voraus. _________________ http://de.wikibooks.org/wiki/FreeBasic Jede Hilfe für dieses Buch ist Willkommen!
http://de.wikibooks.org/wiki/FreeBasic:_FAQ FAQ zu Freebasic (im Aufbau, hilfe Willkommen)
Neu mit Syntax Highlight |
|
Nach oben |
|
 |
MisterD

Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 20.05.2006, 14:24 Titel: |
|
|
definiers einfach als normale variable? oO
bei deinem zweiten beispiel: Pointer zeigen auf speicherplätze, wenn du keine variable sondern nur nen direkten string hast gibts auch keinen solchen speicherplatz, das is klar das das ned geht. Bei konstanten weiß ich nich obs genauso is, könnte aber sein.
/edit: Obwohl laut referenz sollte es gehen, ich habs nie probiert, würde es aber spontan einfach vermeiden, so schwer is das ja nich.. _________________ "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra |
|
Nach oben |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 20.05.2006, 14:49 Titel: |
|
|
Hi,
einer Konstanten wird kein Speicherplatz (keine Adresse) zugewiesen.
Daher kann man auch keinen Pointer/Zeiger auf eine Konstante zeigen lassen.
Taucht der Name der Konstanten im Quelltext auf, wird der ihr zugewiesene Wert vom Compiler dort eingesetzt.
Gruß Volta _________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
 |
Michael Frey

Anmeldungsdatum: 18.12.2004 Beiträge: 2577 Wohnort: Schweiz
|
Verfasst am: 20.05.2006, 14:52 Titel: |
|
|
Unsere Computer haben ja eine von Neuman Architecktur, Programm Code, Variababeln und Konstanten liegen offen nebeneinander.
Von dem her sollte es schon gehn.
Zitat: | definiers einfach als normale variable? oO |
Braucht mehr Speicherplatz .
Zudem geht es mir auch "um's prinzip" .
Zitat: | bei deinem zweiten beispiel: Pointer zeigen auf speicherplätze, wenn du keine variable sondern nur nen direkten string hast gibts auch keinen solchen speicherplatz, das is klar das das ned geht. Bei konstanten weiß ich nich obs genauso is, könnte aber sein. |
Wenn ich mir den von Freebasic erzeugten ASM Code Ansehe, fällt mir die Konstanten Tabelle am Schluss auf, genau darauf will ich meinen Pointer ausrichten.
Wie gesagt:
Dank von Neuman Architektur sollte es gehen.
Ein Idee habe, vielleicht geht sie. _________________ http://de.wikibooks.org/wiki/FreeBasic Jede Hilfe für dieses Buch ist Willkommen!
http://de.wikibooks.org/wiki/FreeBasic:_FAQ FAQ zu Freebasic (im Aufbau, hilfe Willkommen)
Neu mit Syntax Highlight |
|
Nach oben |
|
 |
MisterD

Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 20.05.2006, 14:59 Titel: |
|
|
braucht mehr speicherplatz!?!?
hallo?
wir leben in einer welt wo es rechner mit mehreren GIGAbyte ram gibt! Wen interessieren da die 2 byte die das vielleicht mehr verbraucht? Systemressourcen gibts heute meistens im Überfluss! so knickerig muss man nun echt ned sein  _________________ "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra |
|
Nach oben |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
|
Nach oben |
|
 |
Michael Frey

Anmeldungsdatum: 18.12.2004 Beiträge: 2577 Wohnort: Schweiz
|
|
Nach oben |
|
 |
Michael712 aka anfänger, programmierer
Anmeldungsdatum: 26.03.2005 Beiträge: 1593
|
Verfasst am: 20.05.2006, 17:40 Titel: |
|
|
Sebastian hat Folgendes geschrieben: | Ich finde das ausgezeichnet, wenn sich Programmierer heute noch um ressourcensparende Software bemühen, damit die Programme auch auf einem alten Pentium I mit 133MHz und 32MB RAM noch praktikabel laufen!  |
Naja, aber bei 2 Byte(nachdem was MisterD sagt)?
Da sollte man nicht so "kleinlich" sein.
Wenn es um mehrere kilobyte oder sogar megabyte handelt, dann würd ich auch sparen. |
|
Nach oben |
|
 |
Michael Frey

Anmeldungsdatum: 18.12.2004 Beiträge: 2577 Wohnort: Schweiz
|
Verfasst am: 20.05.2006, 18:16 Titel: |
|
|
Zudem ist Freebasic selbst eigentlich eine dicke Resourcen Schleuder.
Schon aufgefallen, das bei fast jedem Compiler Update die Exe Dateien grösser werden?
Das mit den 2 Byte stimmt vielleicht für die Exe Datei, aber die "Ram Belastung" ist "viel grösser" weil der String dann doppelt Vorhanden ist.
Einmal als Konstante und einmal als Variable. _________________ http://de.wikibooks.org/wiki/FreeBasic Jede Hilfe für dieses Buch ist Willkommen!
http://de.wikibooks.org/wiki/FreeBasic:_FAQ FAQ zu Freebasic (im Aufbau, hilfe Willkommen)
Neu mit Syntax Highlight |
|
Nach oben |
|
 |
MisterD

Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 20.05.2006, 18:27 Titel: |
|
|
mach ihn doch nur als variable x) wo is da das problem? _________________ "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra |
|
Nach oben |
|
 |
vspickelen

Anmeldungsdatum: 12.06.2005 Beiträge: 13 Wohnort: Holland
|
Verfasst am: 22.05.2006, 14:39 Titel: |
|
|
Drei Typen übersichtlich dargestellt:
Code: | dim a as zstring ptr
a = @"Zeichenkette feste L„nge"
print *a
const k$ = "Konstante Zeichenkette"
a = @k$
print *a
dim b as string ptr
s$ = "beliebig" + chr$(0) + "lange Zeichenkette"
b = @s$
print *b
dim c as byte ptr
c = @"Byte-Array, nullterminiert"
do
print chr$(*c);
c += 1
loop until *c = 0
sleep
|
Grüß,
vspickelen |
|
Nach oben |
|
 |
ytwinky

Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 22.05.2006, 16:55 Titel: |
|
|
Danke vspickelen,
jetzt sind Konstanten keine Konstanten mehr  Code: | Mid(..)="Neuer Inhalt" | funktioniert, auch eine NeuZuweisung
(Naja, die noch nicht so ganz..)
Gruß
ytwinky _________________
v1ctor hat Folgendes geschrieben: | Yeah, i like INPUT$(n) as much as PRINT USING.. | ..also ungefähr so, wie ich GOTO.. |
|
Nach oben |
|
 |
Lutz Ifer Grillmeister

Anmeldungsdatum: 23.09.2005 Beiträge: 555
|
Verfasst am: 22.05.2006, 17:06 Titel: |
|
|
konstanten und konstant? hat sich was.
Code: | const bla = "hallo"
print bla
bla = "hi"
print bla
sleep |
ausgabe hat Folgendes geschrieben: | hallo
hi llo |
_________________ Wahnsinn ist nur die Antwort einer gesunden Psyche auf eine kranke Gesellschaft. |
|
Nach oben |
|
 |
ytwinky

Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 22.05.2006, 17:11 Titel: |
|
|
Kucke an, das wußte ich nicht, hatte ich auch noch nie probiert..
Also ist die Const-Anweisung nur Augenwischerei?
Gruß
ytwinky _________________
v1ctor hat Folgendes geschrieben: | Yeah, i like INPUT$(n) as much as PRINT USING.. | ..also ungefähr so, wie ich GOTO.. |
|
Nach oben |
|
 |
Michael Frey

Anmeldungsdatum: 18.12.2004 Beiträge: 2577 Wohnort: Schweiz
|
|
Nach oben |
|
 |
Michael712 aka anfänger, programmierer
Anmeldungsdatum: 26.03.2005 Beiträge: 1593
|
Verfasst am: 22.05.2006, 17:31 Titel: |
|
|
Wenn man möchte, das statt ner variable direkt die zahl/zeichenkette in den programm code geschrieben wird, dann geht das doch ganz einfach mit #define.
Code: |
#define ein_string "hallo"
Print ein_string
'geht nicht: ein_string="hi"
|
Da kann man auch nichts mehr ändern. |
|
Nach oben |
|
 |
ytwinky

Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 22.05.2006, 20:31 Titel: |
|
|
Lutz Ifer hat Folgendes geschrieben: | konstanten und konstant? hat sich was. | Ein klares und entschiedenes Jein
Also das mit den Strings habe ich ja probiert, da sind die Consts<>Const..
Das wollte ich mir zunutze machen für Dreieck.Bas, weil ich dann den Winkelmodus Const gemacht hätte.
Bei Bedarf wäre dann der Const-Wert gewechselt worden..
..aus der 'Traum': Bei Zahlen geht das nähmlich nicht, die erhalten keine Adresse,
folglich kann auch kein Pointer drauf zeigen..
Gruß
ytwinky _________________
v1ctor hat Folgendes geschrieben: | Yeah, i like INPUT$(n) as much as PRINT USING.. | ..also ungefähr so, wie ich GOTO.. |
|
Nach oben |
|
 |
|