Pointer-Chaos
Übersicht

AvaGastBetreff: Pointer-Chaos |
![]() Antworten mit Zitat |
|
---|---|---|
Hallöchen,
nun nach einiger Zeit des Zögerns habe ich mich jetzt doch entschlossen, meine BMax-Module an die hinterhältigen Veränderungen der letzten Updates anzupassen, um endlich mal wieder etwas zeitgemäßer dabei zu sein. So, gleich zu Anfang komme ich nun aber schon ins Stocken! Bisher stand in meinem Code
Das wird nun in dieser Form nicht mehr akzeptiert. Kann mir jemand sagen, wie ich es nun schreiben muss??? - also ich habe einen Pointer auf eine Variable und möchte der zum Ponter zugehörigen Variable einen Wert zuweisen! Meine erste Idee war: Byte(byte_ptr) = byte_value. Klappt aber auch nicht. ![]() + Ava + |
||
![]() |
Artemis |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] byte_value = byte_pointer[0]
Original-Hilfe: Zitat: Array style indexing is used to dereference pointers.
Edit: https://www.blitzforum.de/viewtopic.php?t=16189 7 Posts unter deinem. |
||
AvaGast |
![]() Antworten mit Zitat |
|
---|---|---|
Das hatte ich gelesen, aber nicht so recht verstanden.
Und ganz ehrlich gesagt, verstehe ich es auch jetzt nicht ganz genau, wie das funktioniert. ![]() Könnte mir das vielleicht noch einmal jemand etwas genauer erklären? - Dein Code-Beispiel, Jonas, verwirrt mich sehr... ![]() [edit] Auch das Thema hatte ich gelesen, konnte aber auch damit nicht viel anfangen. ![]() alles so schön einfach - das Mark das nun plötzlich so umwirft, muss ich nicht verstehen, oder?! ![]() [eidt_2] Ein anderes Beispiel aus meinem Code:
und möchte einer Variable auf die ein bestimmter Pointer aus diesem Array zeigt, einen Wert zuweisen. Wenn ich da nun irgendwie eine Array-Schreibweise verwenden muss, um das mit den Pointern zu regeln, wie würde das dann in diesem Fall aussehen?! *verzweifeltguck* |
||
![]() |
Artemis |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] 'Hier wird eine normale Byte-Variable erstellt
Local Byte_Value :Byte = 12 'Hier wird ein Byte Pointer erstellt, welcher auf 'Byte_Value' zeigt Local Byte_Pointer:Byte Ptr = Varptr Byte_Value 'Um auf den Wert der Speicherstelle (auf die ein Pointer zeigt) zuzugreifen tut ma so, als wenn der Pointer ein Array wäre, bei dem man dann auf das erste [0] Element zugreift. 'Früher: (Var Byte_Pointer) = 15 'Jetzt : Byte_Pointer[0] = 15 Byte_Pointer[0] = 15 'Hier wird der Wert ausgegeben, der jetzt 15 beträgt Print Byte_Value |
||
AvaGast |
![]() Antworten mit Zitat |
|
---|---|---|
Danke, Jonas! Das ist ja echt ne sehr blöde Lösung, das führt doch innerhalb des Codes total schnell zu Missverständnissen und Verwirrung. ![]() ![]() [/edit] Es scheint wohl so zu funktionieren:
[/edit_2] Fehlanzeige, der Compiler meckert nicht, aber irgendwie führt das zu einem Programmaufhänger ohne Meldung. Tipps ?? ![]() |
||
- Zuletzt bearbeitet von Ava am Di, Feb 07, 2006 15:46, insgesamt einmal bearbeitet
![]() |
Artemis |
![]() Antworten mit Zitat ![]() |
---|---|---|
Dann behandelst du das ganze wie ein Asymmetrisches Array:
Code: [AUSKLAPPEN] Local PointerArray:Byte Ptr[2]
Local Byte1:Byte = 1 Local Byte2:Byte = 2 PointerArray[0] = Varptr Byte1 PointerArray[1] = Varptr Byte2 PointerArray[0][0] = 11 PointerArray[1][0] = 22 Print Byte1 '11 Print Byte2 '22 Also merken: Egal wie der Pointer aussieht, um an den Wert zu kommen hängt man ein [0] dran. |
||
AvaGast |
![]() Antworten mit Zitat |
|
---|---|---|
Gibt es eine Möglichkeit, nur Teile der BMax Updates zu verwenden ?!?
Sprich: Ich möchte die Bugs raushaben, aber auf die Veränderungen sch***** ![]() ![]() |
||
![]() |
rema |
![]() Antworten mit Zitat ![]() |
---|---|---|
Erstelle dir doch Hilfs-Function oder -Methode um dies abzudecken... Ist sowiso dann übersichtlicher, da du dich nicht mehr mit solchem sch... Zeug abgeben musst. | ||
AvaGast |
![]() Antworten mit Zitat |
|
---|---|---|
Ich habe aber generell grosse Probleme mit dem Update. ![]() Kann es sein, dass es dort einen Bug in der GetChar Funktion gibt?! Und das mit den Pointern scheint mir im Update auch nicht ganz 100% fehlerfrei. ![]() Naja, jedenfalls bin ich nun erstmal wieder auf meine geliebte 1.09 zurück. Da läuft wenigstens alles problemlos. ![]() Der einzige Grund für mich upzudaten (mein BNet-Problem), hat sich durch das Update auch nicht gelöst...... also püüh.... |
||
![]() |
Jolinah |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich fand es eigentlich mit Var auch schöner.. aber das [0] gab es schon vorher parallel zu Var. Vermutlich wurde es entfernt weil var auch noch eine andere Bedeutung hat :
Code: [AUSKLAPPEN] 'Referenz -- Zahl (a) kann direkt in der Funktion geändert werden.
Local Zahl:Int = 5 test(Zahl) Print Zahl '10 Function test(a:Int Var) a = 10 End Function |
||
AvaGast |
![]() Antworten mit Zitat |
|
---|---|---|
Joa, das weis ich ja. ![]() Ich finde es dennoch weitaus weniger konfus, den var Befehl für diese zwei unterschiedlichen Dinge zu verwenden, als die eckigen Klammern, wo es dann aussieht, als wäre es ein Array. ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group