PureBasic 4.30 Beta1 ist raus!

Ankündigungen PureBasic oder die Community betreffend.
Benutzeravatar
rolaf
Beiträge: 3843
Registriert: 10.03.2005 14:01

Beitrag von rolaf »

ts-soft hat geschrieben:> Warum ist das so?
Weil Read auch einen Typ benötigt, der Readtyp und der Variablentyp
können sich sogar unter umständen unterscheiden.
Und für was soll sowas gut sein? Wenn ich Read a.b eingebe will ich ein Byte einlesen und nicht ein Integer. :?

Wenn ich ein Bit bestelle, bekomme ich ja auch nicht 4 Bier. :mrgreen:
:::: WIN 10 :: PB 5.73 :: (x64) ::::
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

Beitrag von ts-soft »

@Doctore Falo
Porting your programs to PureBasic 64-Bit hat geschrieben:The most important change in this respect is probably the Read command. To avoid problems with different variable sizes on x86 and x64 with Read (which could lead to hard to find bugs), we decided to change the command to not get its type from the variable but rather like Procedure and others from a type prefix. This way you can match the Read type with the type in the DataSection, independent from the type of the variable you read the data into (you just cannot read a float into an integer type directly, but reading a byte into a quad works for example). Unfortunately, this change means that a 4.20 program which does “Read a.b” will now read an integer (4/8 bytes) as that is the default type if no prefix is specified. So our decision was to have this problem now once, or for all eternity when developing a program in both 32bit and 64bit. We decided to go with the former. The best and most foolproof way to deal with this is just to do a “Find in Files” on all your code for the Read command and adding a prefix for everyone of them.
Bitte nicht erwarten das ich das jetzt alles übersetze :mrgreen:
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
rolaf
Beiträge: 3843
Registriert: 10.03.2005 14:01

Beitrag von rolaf »

Doctore benutzt Babel Fish. :mrgreen:
Die wichtigste Änderung ist in dieser Hinsicht vermutlich der gelesene Befehl. Um Probleme mit verschiedenen variablen Größen auf x86 und x64 mit gelesen zu vermeiden (die zu stark führen konnten um Wanzen zu finden), entschieden uns wir den Befehl seine Art nicht von der Variable zu erhalten aber Verfahren und andere eher zu mögen von einer Art Präfix zu ändern. Auf diese Weise können Sie die gelesene Art mit der Art im DataSection zusammenbringen, das von der Art der Variable unabhängig ist, die Sie die Daten in lesen (Sie können eine Hin- und Herbewegung nicht in eine Zahlart gerade direkt lesen, aber, ein Byte in Arbeiten eines Viererkabels zum Beispiel lesend). Leider bedeutet diese Änderung, dass 4.20, die Programm, das „tut, a.b“ las, jetzt eine ganze Zahl (4/8 Bytes) wie das ist die Rückstellungsart lesen, wenn kein Präfix spezifiziert wird. So war unsere Entscheidung, dieses Problem zu haben jetzt einmal, oder während aller Ewigkeit, als, ein Programm in 32bit und in 64bit entwickelnd. Wir entschieden uns, mit dem ehemaligen zu gehen. Die beste und harmloseste Weise, dieses zu beschäftigen ist gerade, eine „Entdeckung in den Akten“ auf Ihrem ganzem Code für den gelesenen Befehl und das Hinzufügen eines Präfixes für jeder von ihnen zu tun.
Hmmm...
:::: WIN 10 :: PB 5.73 :: (x64) ::::
marco2007
Beiträge: 906
Registriert: 26.10.2006 13:19
Kontaktdaten:

Beitrag von marco2007 »

Ich find`s wie Falo komisch:

Wurde der Wertebereich der Typen auch geändert? :mrgreen:
Bild

echt gewöhnungsbedürftig:

Code: Alles auswählen

Restore Bytedata 
Read a.w 
Read b.w 
Debug a 
Debug b 
End 

DataSection 
  Bytedata: 
  Data.w 32767,32766, 32765, 32764, 5, 6, 7, 8 
EndDataSection
Windows 11 - PB 6.03 x64
_________________________________
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

Beitrag von ts-soft »

Deinen Überlauf hab ich hier nicht :wink:
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: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Beitrag von STARGÅTE »

muss man das jetzt so machen ?

Code: Alles auswählen

Restore Bytedata 
Read.w a.w
Read.w b.w 
Debug a 
Debug b 
End 

DataSection 
  Bytedata: 
  Data.w 1, 2, 3, 4, 5, 6, 7, 8 
EndDataSection
um ein richtiges ergebnis zu haben ja ?
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
marco2007
Beiträge: 906
Registriert: 26.10.2006 13:19
Kontaktdaten:

Beitrag von marco2007 »

@Ts-Soft: Probier`mal:

Code: Alles auswählen

Restore Bytedata
Read a.b
Read b.b
Debug a
Debug b
End

DataSection
  Bytedata:
  Data.b 32767,32766, 32765, 32764, 5, 6, 7, 8
EndDataSection


@Stargate: Ja, wenn mich nicht alles täuscht. Nach Read muss man jetzt einen Typ angeben. :?
Windows 11 - PB 6.03 x64
_________________________________
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

Beitrag von ts-soft »

> @Ts-Soft: Probier`mal:
Klar, ist ja auch verkehrt, Data.b kannste kein Word zuweisen :wink:

Da es vielen immer noch nicht klar geworden ist, Ganzzahlenvariablen
kleiner als Integer (vormals Long) sparen keinen Speicherplatz bei normaller
Verwendung, sondern verlangsamen nur das Programm!

Code: Alles auswählen

Procedure.b test(a.w, b.b)
Ist eigentlich unnötige Verlangsamung! Lediglich in Strukturen oder Datasection machen diese Variablen sinn, evtl. noch bei IO Sachen (RS232),
Zeichenmanipulation (Char).
Jetzt kann man das auch passend kombinieren:

Code: Alles auswählen

DataSection
  mydata:
  Data.w 5000
  Data.b 50, 100
EndDataSection

Restore mydata
Read.w a.i
Read.b b.i
Read.b c.i
Debug a
Debug b
Debug c
Sparen in der Datasection, aber ordnen es den schnelleren Integern zu
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
rolaf
Beiträge: 3843
Registriert: 10.03.2005 14:01

Beitrag von rolaf »

ts-soft hat geschrieben:Sparen in der Datasection, aber ordnen es den schnelleren Integern zu
Ja gut, das ist mal ein Argument das einleuchtet. :D

P.S.
Trotzdem ist die Fehlermeldung verwirrend. Byte = -128 bis +255 :mrgreen: wie das?
:::: WIN 10 :: PB 5.73 :: (x64) ::::
marco2007
Beiträge: 906
Registriert: 26.10.2006 13:19
Kontaktdaten:

Beitrag von marco2007 »

DrFalo hat geschrieben: P.S.
Trotzdem ist die Fehlermeldung verwirrend. Byte = -128 bis +255 :mrgreen: wie das?
Jup, es geht nur um den Inhalt der Fehlermeldung.
Windows 11 - PB 6.03 x64
_________________________________
Antworten