Seite 9 von 12
Re: PureBasic 4.50 Beta 3 released!
Verfasst: 21.04.2010 08:27
von Pelagio
Hallo,
ich habe ein Problem bei PB4.5 Beta 3 das auch schon bei Beta 2 vorhanden war gefunden.
Wenn man StructureUnion wie folgt benutzt:
Code: Alles auswählen
Structure strucData
CoilNr.s
TeilNr.s
CoilTyp.s
PTLage.s
PTAgg.s
StructureUnion
ZPSort.l
ZPAgg.s
EndStructureUnion
Info.s
EndStructure
bekommt man folgende Fehlermeldung
Object mix (numeric, string, array, list and map)is not allowed in StructureUnion
Das Programm in dem diese Structure vorhanden ist wurde unter PB4.41 geschrieben und kompiliert, es funktionierte. Ich wollte es unter PB4.5 Beta 2/3 neu kompilieren und der Fehler tritt auf. Warum? Watt nu? Bug?
Re: PureBasic 4.50 Beta 3 released!
Verfasst: 21.04.2010 08:36
von DarkDragon
Mit Strings sollte man das sowieso nicht machen. Eher mit Pointer auf Pointer auf Strings, aber nicht so. Immerhin versuchte PB zumindest in den früheren Versionen immer den String freizugeben, selbst wenn ZPSort verwendet wurde statt ZPAgg. PureFan hatte mir da mal ein Beispiel gezeigt.
Code: Alles auswählen
Structure strucData
CoilNr.s
TeilNr.s
CoilTyp.s
PTLage.s
PTAgg.s
StructureUnion
ZPSort.l
ZPAgg.s
EndStructureUnion
Info.s
EndStructure
Define test.strucData
test\ZPAgg = "Hallo, Welt!"
test\ZPSort = 10000
test\ZPAgg = "Blubb"
End
Re: PureBasic 4.50 Beta 3 released!
Verfasst: 21.04.2010 08:37
von STARGÅTE
weil seit 4.50 keine Strings mehr in Unions erlaubt sind!
Grund: beim löschen einer solchen Structure wüsste der Compiler ja nicht ob nun der String in der StructureUnion benutzt wurde oder nur die Long.
Denn falls die Long verwendet wird, gibs n IMA wenn versucht wird der String zu löschen, und wenn der String benutzt wurde wird er vllt nicht freigegeben!
Das war also eine nötige verbesserung, in volge der neuen Proceduren wie: ClearStructure usw.
Abhilfe schafft hier ein FixString in der Union
Re: PureBasic 4.50 Beta 3 released!
Verfasst: 21.04.2010 14:45
von ts-soft
Aber die Änderung, das Pointer in Strukturen nicht mehr erlaubt sind, finde ich blöde:
---------------------------
PureBasic
---------------------------
Zeile 2: Eine Variable in einer 'Structure' benötigt einen deklarierten Typ.
---------------------------
OK
---------------------------
jetzt muß ich buffer.i schreiben, was mir widerstrebt.
Dies hier geht:
ist aber definitiv falsch!
Ansonsten macht die Beta 3 einen stabilen Eindruck.
Gruß
Thomas
Re: PureBasic 4.50 Beta 3 released!
Verfasst: 21.04.2010 14:48
von Kaeru Gaman
dann gib ruhig auch hier deinen senf zu:
http://www.purebasic.fr/english/viewtop ... =4&t=41970
... ich halte das auch für eine "premature implementation"...
Re: PureBasic 4.50 Beta 3 released!
Verfasst: 21.04.2010 14:50
von ts-soft
Danke für den link, der Beitrag ist mir wohl entgangen.
Re: PureBasic 4.50 Beta 3 released!
Verfasst: 21.04.2010 15:07
von STARGÅTE
Wenn man ein Pointer in einer Structure hat, ohne das der selber eine Structure hat, dann kann man doch das * eh weglassen, denn beim aufruf der Structure kommt er ja eh nciht mehr vor:
Auf Deutsch ^^:
Ist 100% das gleiche, beides würde man mit Beispiel\Test erreicht, beides hat die selbe größe.
Und nur dann wenn man noch n Unterstructure haben will dann geht halt der * Pointer ...
ob das nun sinnvoll war das *Test nun IMMER ein Typ haben muss , tia ...
Re: PureBasic 4.50 Beta 3 released!
Verfasst: 21.04.2010 15:14
von ts-soft
Syntaktisch ist diese Änderung Quatsch, aber nur deshalb wurde sie eingeführt

Re: PureBasic 4.50 Beta 3 released!
Verfasst: 21.04.2010 22:11
von Josef Sniatecki
... oje
Wenn ich mir Änderungen dieser Art ansehe, dann habe ich manchmal das Gefühl, dass der Quellcode von PureBasic langsam zum Urwald wird. Irgendwie scheint die Systematik zu verschwinden:
Pointers mit expliziter Typisierung in Strukturen?
StruktureUnion mekert plötzlich?
Schon seit der Einführung von "Array" und "List" habe ich mich gewundert. Wieso nicht gleich "Dim" zu "Array" machen, oder umgekehrt? Rein Technisch wäre das zu bewerkstelligen, wenn der Parser zwischen einem alleinstehenden "Dim" und einem "Dim" in einer Parameterliste/Struktur unterscheiden könnte.
Naja, mal sehen... auf jeden Fall werde ich noch lange an PB 4.20 sitzen, wenn sich nichts mehr am neuen Konzept der Syntax ändert. Das Umschreiben 20.000 Zeilen langer Projekte ist viel zu viel Arbeit. Besonders dann, wenn man an einem Spiel arbeitet, dass gerade perfekt funzt und schon einige Zeilen angenommen hat.
Gruß Josef
Re: PureBasic 4.50 Beta 3 released!
Verfasst: 21.04.2010 22:31
von ts-soft
>> auf jeden Fall werde ich noch lange an PB 4.20 sitzen
Du kannst ja trotzdem 4.50 installieren und im Code den 4.20 Compiler einstellen.
Dies geht sogar
Code: Alles auswählen
Structure test
buffer.i
EndStructure
Define.test bla
bla\buffer = AllocateMemory(100)
Debug MemorySize(bla\buffer)
gefällt mir trotzdem nicht.