Seite 1 von 2
[Bug?] Verwirrung mit SizeOf()
Verfasst: 15.06.2005 14:15
von NicTheQuick
Folgender Code:
Code: Alles auswählen
Structure TestStruc
a.l
b.w
c.b
EndStructure
hallo.TestStruc
Debug SizeOf(TestStruc)
Debug SizeOf(hallo)
TestStruc.POINT
Debug SizeOf(TestStruc)
Ich habe eine Struktur [c]TestStruc[/c] und eine Variable [c]TestStruc[/c], allerdings mit der Struktur [c]POINT[/c].
So wie es aussieht orientiert sich [c]SizeOf()[/c] immer mit höherer Priorität an der Struktur. Kann man da noch eine Option einbauen oder gleich einen neuen Befehl, der nur für Variablen funktioniert.
Wenn man jetzt einer Variablen den Namen gibt, wie ihn schon irgendeine Struktur in den Residents hat, könnte das eine böse Fehlerquelle sein. Und wenn sie gefunden hat, muss man entweder irgendwie die Struktur entfernen oder aber jedes einzelnen Vorkommen dieser Variable umbenennen.
Verfasst: 15.06.2005 15:21
von benny
@Nic:
Du hast Recht. Das wird eigentlich IMHO auch nicht ganz sauber von PB unter-
schieden, ob's nun die Struktur selbst, oder eine Variable, mit der Struktur
gemeint ist.
In C beispielsweise wird das folgendermaßen gemacht:
Code: Alles auswählen
Hallo.TestStruc
TestStruc.POINT
sizeOf (struct TestStruc) ; liefert Größe der Struktur TestStruc (= Größe von Hallo)
sizeOf (TestStruc) ; liefert Größe von POINT
Verfasst: 15.06.2005 15:54
von DrShrek
Works as spezified:
Code: Alles auswählen
Structure TestStruc
a.l
b.w
c.b
EndStructure
hallo.TestStruc
TestStru.POINT
Debug SizeOf(TestStruc)
Debug SizeOf(hallo)
Debug SizeOf(POINT)
Debug SizeOf(TestStru)
POINT.TestStruc
Debug SizeOf(POINT)
Also aus meiner Sicht kein BUG. Ausser das die Doku hier deutlicher drauf hinweisen sollte.
Denkt mal drüber nach

Verfasst: 15.06.2005 16:08
von NicTheQuick
Laut Hilfe ist es ein Bug. Da steht nämlich nichts über Prioritätenvergabe von Structure, Variable oder Interface.
Das kann man jetzt sicherlich sehen wie man will. Aber zwei getrennte Befehl oder eine Option für Strukturen und Variablen halte ich für äußerst wünschenswert.
Und verwirrend ist es trotzdem. Oder siehst du das anders, IcoSoft?
Verfasst: 15.06.2005 16:16
von DrShrek
NicTheQuick hat geschrieben:... Aber zwei getrennte Befehl oder eine Option für Strukturen und Variablen halte ich für äußerst wünschenswert.?
Sehe ich genauso! (Wer liest schon die Doku vollständig und behält das Gelesene im Kopf?)
Besser wäre hier eine Angleichung an C (hier ein Vorschlag):
Code: Alles auswählen
SizeOf (TestStruc) ; Variable
SizeOf (struct TestStruc) ; Structure
SizeOf (interface TestStruc) ; Interface
Und sollte auch entsprechend mit Fehlermeldungen abgesichert sein.
NicTheQuick hat geschrieben:Und verwirrend ist es trotzdem. Oder siehst du das anders, IcoSoft?
Kein Thema, sehr verwirrend! Und sollte wie z.B. oben vorgeschlagen verbessert werden. Vieleicht kann @Andre hier mit Fred diskutieren?
NicTheQuick hat geschrieben:...IcoSoft?
Meinst Du wirklich mich?

Verfasst: 15.06.2005 16:21
von MVXA
Also ich wüde eher vorschlagen, dass man als 2. optionalen Parameter angibt, wo PB nachschlagen soll. Dies erhält die Kompatiblität zu alten Sources aufrecht und man kann trozdem dann noch die neue Variante verwenden. Hier ein Beispiel:
Code: Alles auswählen
sizeof(TestStruc)
sizeof(TestStruc, #PB_Variable)
sizeof(TestStruc, #PB_Structure)
sizeof(TestStruc, #PB_Interface)
und wie wäre es dann noch mit der Option [c]sizeof(TestStruc, #PB_Procedure)[/c]

? Fände ich mal lustig.
Verfasst: 15.06.2005 16:27
von NicTheQuick
MVXAs Vorschlag würde mir auch am besten gefallen, da hier die Kompatibilität gewahrt wird.
Aber ich würde sagen, jetzt warten wir erstmal auf Andre.
So, Kinder. Und jetzt rufen wir alle zusammen unseren lieben Andre.
1, 2, 3...
...ANDREEEEEEEEEE!
Verfasst: 15.06.2005 16:27
von DrShrek
--- Ich rede hier nur Schwachsinn, deshalb gelöscht ---
Verfasst: 15.06.2005 16:32
von benny
Ich finde die Variante von MVXA auch am besten ... rein optisch zumindest,
sieht es ja fast schon aus wie PB Syntax
Werde mal am besten nen Thread im englishen Forum starten ...
Verfasst: 15.06.2005 16:52
von benny
So, unser Anliegen ist nun im englishen Forum als Wishlist gepostet. Wer
ihn verfolgen will :
http://forums.purebasic.com/english/vie ... highlight=
@IceSoft:
Habe mir eben gerade mal Dein Beispielcode angeguckt. Das geht aber an
unserem Problem total vorbei. Da es ja um den Fall geht, was für einen Wert
sizeOf zurückliefert, wenn eine Variable und eine Struktur den selben
Namen haben, aber anderen Types sind
