Seite 3 von 12

Re: PureBasic 4.50 Beta 2 released!

Verfasst: 02.04.2010 17:50
von NicTheQuick
Da es sich nur um Text handelt, hier der Einfachheit halber nochmal bei nopaste.info: Neue Compiler-Funktionen

Re: PureBasic 4.50 Beta 2 released!

Verfasst: 02.04.2010 18:13
von ts-soft
NicTheQuick hat geschrieben:Da es sich nur um Text handelt, hier der Einfachheit halber nochmal bei nopaste.info: Neue Compiler-Funktionen

Code: Alles auswählen

EnableExplicit

Define.s OldCompiler, NewCompiler

OldCompiler = PathRequester("Bitte den Pfad zum PB-Compiler der alten Version wählen!", GetEnvironmentVariable("ProgramFiles"))
If OldCompiler
  OldCompiler + "pbcompiler.exe"
EndIf
If Not OldCompiler Or FileSize(OldCompiler) < 0
  End
EndIf

NewCompiler =  PathRequester("Bitte den Pfad zum PB-Compiler der neuen Version wählen!", GetEnvironmentVariable("ProgramFiles"))
If NewCompiler
  NewCompiler + "pbcompiler.exe"
EndIf
If Not NewCompiler Or FileSize(NewCompiler) < 0
  End
EndIf

Define.i Compiler = RunProgram(OldCompiler, "/STANDBY", "", #PB_Program_Open | #PB_Program_Read | #PB_Program_Write | #PB_Program_Hide)
Define.i i, j

NewList OldFunctions.s()
If Compiler
  If IsProgram(Compiler)
    Repeat
    Until ReadProgramString(compiler) = "READY"
    WriteProgramStringN(Compiler, "FUNCTIONLIST")
    j = Val(ReadProgramString(Compiler))
    For i = 1 To j
      AddElement(OldFunctions())
      OldFunctions() = ReadProgramString(Compiler)
    Next
    WriteProgramStringN(Compiler, "END")
    CloseProgram(Compiler)
  EndIf
EndIf

Compiler = RunProgram(NewCompiler, "/STANDBY", "", #PB_Program_Open | #PB_Program_Read | #PB_Program_Write | #PB_Program_Hide)
NewList NewFunctions.s()
If Compiler
  If IsProgram(Compiler)
    Repeat
    Until ReadProgramString(compiler) = "READY"
    WriteProgramStringN(Compiler, "FUNCTIONLIST")
    j = Val(ReadProgramString(Compiler))
    For i = 1 To j
      AddElement(NewFunctions())
      NewFunctions() = ReadProgramString(Compiler)
    Next
    WriteProgramStringN(Compiler, "END")
    CloseProgram(Compiler)
  EndIf
EndIf

Define.i found

ForEach NewFunctions()
  ForEach OldFunctions()
    If StringField(NewFunctions(), 1, "(") = StringField(OldFunctions(), 1, "(")
      found = #True
      Break
    EndIf
  Next
  If found
    found = #False
  Else
    Debug NewFunctions()
  EndIf
Next

Define.s Savefile = SaveFileRequester("Debug Output speichern unter:", "NewFunctionslist.txt", "*.txt", 0)
If Savefile
  SaveDebugOutput(Savefile)
EndIf


Jetzt mit den neuen Funktionen noch den Compileroutput speichern und gut :wink:

// edit
Code noch ein bissel verfeinert!

Re: PureBasic 4.50 Beta 2 released!

Verfasst: 02.04.2010 19:05
von 7x7
Bild

.b wird unterstützt
.w wird unterstützt
.l wird unterstützt

.q wird nicht unterstützt

ja, das macht Sinn

:freak:

Re: PureBasic 4.50 Beta 2 released!

Verfasst: 02.04.2010 19:19
von ts-soft
7x7 hat geschrieben:.q wird nicht unterstützt

ja, das macht Sinn

:freak:
Es wird nur Integer unterstützt, alles andere macht normallerweise keinen Sinn.
Nimm die 64-Bit Version wenn Du quad brauchst :twisted:

Unterstützung andere Typen würde die For/Next schleife verlangsamen, so das
dann ein While/Wend mit Zähler sowieso günstiger wäre.

Re: PureBasic 4.50 Beta 2 released!

Verfasst: 02.04.2010 19:25
von 7x7
ts-soft hat geschrieben:Es wird nur Integer unterstützt...
seit wann soll .q kein Integer sein ? :roll:

Re: PureBasic 4.50 Beta 2 released!

Verfasst: 02.04.2010 19:33
von Little John
7x7 hat geschrieben:
ts-soft hat geschrieben:Es wird nur Integer unterstützt...
seit wann soll .q kein Integer sein ? :roll:
"Kein Integer" ist hier gemeint im Sinne von "Integer" als PureBasic-Variablentyp, nicht im rein mathematischen Sinn von "Integer" mit der Bedeutung "Ganzzahl".

Auf 64-Bit-Systemen sind PureBasics Integer- und Quad-Variablentypen identisch, auf 32-Bit-Systemen sind Integer-Variablen hingegen die selben wie Long-Variablen.

Gruß, Little John

Re: PureBasic 4.50 Beta 2 released!

Verfasst: 02.04.2010 23:24
von hjbremer
Folgendes geht nicht mehr

Code: Alles auswählen

Structure LvEdit_Memory  
 lvnr.i 
 editnr.i                     
EndStructure

With lveditmemory
   
Procedure LvEdit_1()

EndProcedure

Procedure LvEdit_2()

EndProcedure

Procedure LvEdit_3()

EndProcedure
   
EndWith   

Re: PureBasic 4.50 Beta 2 released!

Verfasst: 02.04.2010 23:48
von hjbremer
das geht

Code: Alles auswählen

Structure Something
  a.i
  Array MyMap.s(20)
EndStructure

x.Something

   x\MyMap(0) = "xxxxxxxxxx"
   Debug x\MyMap(0)
   
   x\MyMap(20) = "yyyyyyyyyx"
   Debug x\MyMap(20)
   
   ReDim x\MyMap(33)
   
   x\MyMap(33) = "aaaaaaaaaa"
   Debug x\MyMap(33)
   
das geht nicht

Code: Alles auswählen

Structure Something
  a.i
  Array MyMap.s(20)
EndStructure

x.Something

With x
   
   \MyMap(0) = "xxxxxxxxxx"
   Debug \MyMap(0)
   
   \MyMap(20) = "yyyyyyyyyx"
   Debug \MyMap(20)
   
   ReDim \MyMap(33)
   
   \MyMap(33) = "aaaaaaaaaa"
   Debug \MyMap(33)
   
EndWith


Re: PureBasic 4.50 Beta 2 released!

Verfasst: 03.04.2010 10:00
von Pelagio
Dies wiederum funktioniert:

Code: Alles auswählen

Structure Something
  a.i
  Array MyMap.s(20)
EndStructure

x.Something

With x
   \MyMap(0) = "xxxxxxxxxx"
   \MyMap(20) = "yyyyyyyyyx"
   
   ReDim x\MyMap(33)

   \MyMap(33) = "aaaaaaaaaa"
EndWith

With x
   Debug \MyMap(0)   
   Debug \MyMap(20)
   Debug \MyMap(33)
EndWith
:?
Kann es sein das es Konflikte mit den Debugger geht?
Und das ReDim scheint nicht mit With zu funktionieren!

Re: PureBasic 4.50 Beta 2 released!

Verfasst: 03.04.2010 10:57
von Andreas21
ReDim geht, scheinbar hat nur der Debuger ein Problem.
Den mit MessageRequester gehts ohne Probleme.

Version PB 4.5 Beta 2 (x86)

Code: Alles auswählen

Structure Something
  a.i
  Array MyMap.s(20)
EndStructure

x.Something

With x
   \MyMap(0) = "xxxxxxxxxx"
   \MyMap(20) = "yyyyyyyyyx"
   
   ReDim \MyMap(33)
   \MyMap(33) = "aaaaaaaaaa"

   MessageRequester("",\MyMap(0))   
   MessageRequester("",\MyMap(20))
   MessageRequester("",\MyMap(33))
EndWith