Seite 4 von 6

Re: Adresse eines definierten Strings ist null

Verfasst: 18.05.2011 16:33
von DrShrek
NicTheQuick hat geschrieben:Abgesehen davon, dass '*pointer.l' und '*pString.s' keinen Sinn machen, gibt der Debugger bei mir da seltsame Dinge aus:
0

0

6559432
0
Ja, richtig. Die zweite Zeile ist leer. Da sollten eigentlich auch eine Null stehen.
Leider sind da noch mehr Probleme erkennbar:
Und die letzte Zeile sollte keine Null zurückgeben sondern die Adresse des Pointers selber.

Re: Adresse eines definierten Strings ist null

Verfasst: 18.05.2011 16:35
von helpy
*name.s wird vom Parser nicht richtig interpretiert.
==> als einfache String-Variable und das stimmt so nicht!

Deshalb nie Pointer mit einfachen Datentypen verwenden!

Ich würde mir wünschen, dass der Compiler eine Fehlermeldung ausgibt, wenn für Pointer einfache Datentypen verwendet werden!

Re: Adresse eines definierten Strings ist null

Verfasst: 18.05.2011 16:40
von DrShrek
helpy hat geschrieben:*name.s wird vom Parser nicht richtig interpretiert.
==> als einfache String-Variable und das stimmt so nicht!

Deshalb nie Pointer mit einfachen Datentypen verwenden!

Ich würde mir wünschen, dass der Compiler eine Fehlermeldung ausgibt, wenn für Pointer einfache Datentypen verwendet werden!
Das wäre eine Alternative....so langsam versteht Ihr das Problem.

Re: Adresse eines definierten Strings ist null

Verfasst: 18.05.2011 16:51
von helpy
DrShrek hat geschrieben:
helpy hat geschrieben:*name.s wird vom Parser nicht richtig interpretiert.
==> als einfache String-Variable und das stimmt so nicht!

Deshalb nie Pointer mit einfachen Datentypen verwenden!

Ich würde mir wünschen, dass der Compiler eine Fehlermeldung ausgibt, wenn für Pointer einfache Datentypen verwendet werden!
Das wäre eine Alternative....so langsam versteht Ihr das Problem.
Ich weiß das und verwende es einfach nicht! Ein Problem ist das für mich nicht!
Aber es ist ein fehlerhaftes Verhalten des Compilers!

Re: Adresse eines definierten Strings ist null

Verfasst: 18.05.2011 16:52
von ts-soft
DrShrek hat geschrieben:ich kann aber @"Ich bin ein String" eingeben und erhalte die Anfangsadresse deieses Strings. Laut Deiner Aussage darf ich diese Adresse in keinen Pointer zwischenspeichern? Sehr komisch.
Wo hab ich das gesagt :freak:

Code: Alles auswählen

Define *mypointer
*mypointer = @"Hallo" 
Ich habe nur gesagt das *mypointer.s blödsinn ist. Wenn Du Dir merken möchtest worauf der Zeiger zeigt, dann nutze einen Kommentar! Ein pointer kann nur strukturiert werden, .s ist keine Struktur

Re: Adresse eines definierten Strings ist null

Verfasst: 18.05.2011 17:11
von STARGÅTE
Das "Problem" was ich sehe ist, das es für einen Pointer, der zu einem String, zeigt, keine möglichkeit gibt ihn ohne Prozedure auszulesen.
Was ich damit meine ist, für Long kann man:

Code: Alles auswählen

Define Long.l = 123
Define *pLong.Long = @Long
Debug *pLong\l
Für String geht der Weg nur über PeekS()

Code: Alles auswählen

Define String.s = "Hallo"
Define *pString = @String
Debug PeekS(*pString)
Das Liegt daran, das @String nicht den Pointer zur eigentlichen Variable zurück gibt (also die Adresse wo der Pointer zum String drin steht) sonden den String-Pointer selbst.
Ähnliches Thema: Fragen zum String/Pointer-Beispiel der PB Hilfe

Der Weg wäre:

Code: Alles auswählen

Define String.String\s = "Hallo"
Define *pString.String = @String
Debug *pString\s

Re: Adresse eines definierten Strings ist null

Verfasst: 18.05.2011 17:15
von bobobo
DrShrek hat geschrieben:....so langsam versteht Ihr das Problem.
da ist keins

Re: Adresse eines definierten Strings ist null

Verfasst: 18.05.2011 17:15
von helpy
freak hat im englischen Forum schon vor ca. 2 Jahren geschrieben,
dass das Verhalten des Compilers in diesem Fall inkonsistent ist:
==> http://www.purebasic.fr/english/viewtop ... 17#p291717
freak hat geschrieben:Yes, it is inconsistent. The compiler should ignore the ".s" part of the pointer altogether and treat it just as a numeric variable, the same way as the ".w" in "*Pointer.w" has no real effect.
Ganz einfach an folgende Regel halten:
Niemals *var.[einfacher Datentyp] verwenden!

cu,
guido

Re: Adresse eines definierten Strings ist null

Verfasst: 18.05.2011 17:35
von DrShrek
helpy hat geschrieben:freak hat im englischen Forum schon vor ca. 2 Jahren geschrieben,
dass das Verhalten des Compilers in diesem Fall inkonsistent ist:
==> http://www.purebasic.fr/english/viewtop ... 17#p291717
freak hat geschrieben:Yes, it is inconsistent. The compiler should ignore the ".s" part of the pointer altogether and treat it just as a numeric variable, the same way as the ".w" in "*Pointer.w" has no real effect.
Ganz einfach an folgende Regel halten:
Niemals *var.[einfacher Datentyp] verwenden!

cu,
guido
1. Geben die Entwickler selber zu das hier Inkonsitenzen existieren. Schon das alleine reicht um es zu verbessern.
2. Warum gibt es keine Compiler Warnings?

Re: Adresse eines definierten Strings ist null

Verfasst: 18.05.2011 17:40
von ts-soft
DrShrek hat geschrieben:2. Warum gibt es keine Compiler Warnings?
Die erste wirklich sinnvolle Frage in diesem Thread :D