PureBasic 4.50 Beta 4 released!

Ankündigungen PureBasic oder die Community betreffend.
Benutzeravatar
Pelagio
Beiträge: 424
Registriert: 11.11.2004 17:52
Computerausstattung: AMD Ryzen 5 7600 6-Core Prozessor 3.80 GHz
16,0 GB Arbeitsspeicher
Windows 11 Pro Betriebssystem
Wohnort: Bremen

Re: PureBasic 4.50 Beta 3 released!

Beitrag 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?
Ohne Zeit kein Fleiß
Auf neustem Stand zu sein ist eine Kunst die nicht jeder perfektioniert [Win11Pro; PB6.20 LTS]. :allright:
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Re: PureBasic 4.50 Beta 3 released!

Beitrag 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
Zuletzt geändert von DarkDragon am 21.04.2010 08:38, insgesamt 2-mal geändert.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7028
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: PureBasic 4.50 Beta 3 released!

Beitrag 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
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: PureBasic 4.50 Beta 3 released!

Beitrag von ts-soft »

Aber die Änderung, das Pointer in Strukturen nicht mehr erlaubt sind, finde ich blöde:

Code: Alles auswählen

Structure bla
  *buffer
EndStructure
---------------------------
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:

Code: Alles auswählen

Structure  bla
  *buffer.i
EndStructure
ist aber definitiv falsch!

Ansonsten macht die Beta 3 einen stabilen Eindruck.

Gruß
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Re: PureBasic 4.50 Beta 3 released!

Beitrag 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"...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
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: PureBasic 4.50 Beta 3 released!

Beitrag von ts-soft »

Danke für den link, der Beitrag ist mir wohl entgangen.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7028
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: PureBasic 4.50 Beta 3 released!

Beitrag 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 ^^:

Code: Alles auswählen

Structure Beispiel
  *Test
  Test.i
EndStructure
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 ...
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: PureBasic 4.50 Beta 3 released!

Beitrag von ts-soft »

Syntaktisch ist diese Änderung Quatsch, aber nur deshalb wurde sie eingeführt :freak:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Josef Sniatecki
Beiträge: 657
Registriert: 02.06.2008 21:29
Kontaktdaten:

Re: PureBasic 4.50 Beta 3 released!

Beitrag von Josef Sniatecki »

... oje :o

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
PB 4.61 | Windows Vista - 32Bit
Homepage

"Wahrlich es ist nicht das Wissen, sondern das Lernen, nicht das Besitzen sondern das Erwerben, nicht das Dasein, sondern das Hinkommen, was den grössten Genuss gewährt." - Carl Friedrich Gauß
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: PureBasic 4.50 Beta 3 released!

Beitrag 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 :mrgreen:

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.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Antworten