Wertebereich von Zeiger von LinkedListElement oder Memory

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Wertebereich von Zeiger von LinkedListElement oder Memory

Beitrag von STARGÅTE »

Tachchen,

Meine Frage steht eiegntlich schon im Titel:
Wo liegt der Wertebereich von Zeigeren von LinkedListElementen oder Memorys welche Erstellt werden?
Diese Zeiger geben ja trivial gesagt den "Speicherort im RAM" zurück.

Nun benutze ich in PureBasic oft eine Array-LinkedList kombination, ähnlich wie es auch in PB bei Windows, Gadgets usw. gemacht wird.

Ich kann also Elemente durch eine Nummer initiallisieren, oder mit #PB_Any.

Hier ein Beispiel:

Code: Alles auswählen

Structure Element
  x.i
  y.i
EndStructure


Global Dim *Element.Element(10000)
Global NewList Element.Element()


Procedure CreateElement(Element.i, x.i, y.i)
  Protected *Element.Element
  *Element = AddElement(Element())
  Debug "Speicherort: "+Str(*Element)
  If Element >= 0 And Element <= 10000
    *Element(Element) = *Element
  EndIf
  *Element\x = x
  *Element\y = y
  ProcedureReturn *Element
EndProcedure


Procedure DebugElement(Element.i)
  If Element >= 0 And Element <= 10000
    Debug Str(*Element(Element)\x)+","+Str(*Element(Element)\y)
  Else
    ChangeCurrentElement(Element(), Element)
    Debug Str(Element()\x)+","+Str(Element()\y)
  EndIf 
EndProcedure



CreateElement(1, 1, 1)
CreateElement(2, 1, 2)
Etwas1 = CreateElement(#PB_Any, 2, 1)
CreateElement(3333, 1, 3)
Etwas2 = CreateElement(#PB_Any, 2, 2)

DebugElement(1)
DebugElement(2)
DebugElement(3333)
DebugElement(Etwas1)
DebugElement(Etwas2)
Mein Nummern-Array geht von 0 bis 10'000 .
Wir also eine zahl kleiner 10'000 irgendwo übergeben ist mit einer echten NUMMER zu rechnen (also Arrayfeld welches den Pointer zum Element hat); ist die zahl größer wird es ein POINTER sein direkt zum Element.


Problem wäre nun aber wenn der SpeicherOrt eines LinkedListElements unter 10'000 liegen würde...
Daher die Frage würde sowas überhaupt möglichsein ?
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Re: Wertebereich von Zeiger von LinkedListElement oder Memory

Beitrag von Kaeru Gaman »

also wissen tu ich das nicht...
aber da theoretische jedes erzeugte Element unabhängig von Typ überall dort stehen kann wo Elemente stehen können,
und Fred für die internen Elemente als sicher postuliert, dass ihr Handle nicht <10000 sein kann, solltest du auch für Listenelemente davon ausgehen können.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Wertebereich von Zeiger von LinkedListElement oder Memory

Beitrag von NicTheQuick »

Ich erinnere mich dunkel an einen Thread, der das selbe Thema behandelte. Da ist auch ein Wert erwähnt worden, der die untere Grenze für einen Pointerwert unter Windows angab. Wenn ich mich nicht irre war das $8000 (nicht schlagen, wenn's falsch war). Unter anderen Betriebssystem kann das aber anders sein.
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Wertebereich von Zeiger von LinkedListElement oder Memory

Beitrag von STARGÅTE »

$8000 , also 32'768 , hmm, das klingt "Computermäßiger" als 10'000 :lol:

gut, ich werde dann zunächst erst mal mit meiner 10k -Grenze weiter machen, und dafür n Konstante definieren, u.u. könnte ich ja dann bei Anganben mit echter Quelle, auch auf $8000 gegen, obwohl ich mir wiederum denken könnte das es ein "volles Unicode" ist also bis $FFFF gibts keine Zeiger.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Wertebereich von Zeiger von LinkedListElement oder Memory

Beitrag von ts-soft »

Was hat das mit Unicode zu tun? Wohl eher mit Highword und Lowword oder
mit signed und unsigned.
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Wertebereich von Zeiger von LinkedListElement oder Memory

Beitrag von STARGÅTE »

hab ich ja gemeint :?

Word , 2 Byte -32768 bis +32767 , signed
Unicode , 2 Byte 0 bis +65535 , unsigned

Seit es .u gibt, ist ein Unicode für mich auch nur ein Typ geworden, wie Ascii auch, halt die unsigned Varianten von Word und Byte. Die haben also keinen bezug zur Zeichentablle ...
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Re: Wertebereich von Zeiger von LinkedListElement oder Memory

Beitrag von Kaeru Gaman »

ich hätte jetzt eigentlich sagen wollen:
"Unicode" ist eine codierung, wie "Ascii", kein Typ. der Typ heißt "unsigned word", auch wenn er in PB mit "u" abgekürzt wird.
Fred hat lediglich eine solche Abkürzung gewählt, weil die unsigned typen in PB für die Charakter-Verarbeitung gedacht sind (deswegen gibt es auch keinen Typen für unsigned Long).
das macht aber noch lange keinen Typen mit der Bezeichnung "Unicode" daraus.
dummer Weise stehen aber die Bezeichnungen "Unicode" und "Ascii" als Typenbezeichnungen in der Tabelle.

... nunja... muss man wohl mit Leben. noch ein Detail was einen PureBasic-Programmierer zur Zielscheibe für C++-Witze machen kann. Bild
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Little John

Re: Wertebereich von Zeiger von LinkedListElement oder Memory

Beitrag von Little John »

Kaeru Gaman hat geschrieben:dummer Weise stehen aber die Bezeichnungen "Unicode" und "Ascii" als Typenbezeichnungen in der Tabelle.
Das sehe ich mit Erschrecken jetzt zum ersten Mal ... das ist ja ziemlicher Nonsens (regelhaft betriebene Sinnverweigerung). ;-)

Gruß, Little John
Antworten