Seite 1 von 1

Gibt es irgendwo eine kleine Samlung von PureBasic Testprogrammen

Verfasst: 13.10.2024 15:40
von Franz54
Hallo Gemeinde.
Ich habe mir gerade die Einzel - Lizenz geholt und das Programm installiert. Ich habe vor etwa 30 Jahren zuletzt Basic programmiert, und möchte jetzt wieder nach langer Krankheit beginnen.

Ich denke es wäre leichter am anfang ein paar Lauffähige Programme zu haben, mit denen ich lernen kann. Es wird sich in 30 Jahren vieles geändert haben, und neues dazu gekommen sein.

Ach ja, eine Buchempfehlung für Anfänger wäre gut.

Danke schon mal, grüße aus Bayern.
Franz

Re: Gibt es irgendwo eine kleine Samlung von PureBasic Testprogrammen

Verfasst: 13.10.2024 16:23
von NicTheQuick
Purebasic hat ein Examples-Ordner mit jeder Menge Beispielcodes und auch in der Hilfe sind bei vielen Befehlen immer wieder Beispiele dabei, die dir helfen werden.
Ich weiß nicht, wo der Examples-Ordner genau bei Windows liegt. Bei einer Linux-Installation ist es direkt in dem Ordner, in den du auch Purebasic installiert hast.

Re: Gibt es irgendwo eine kleine Samlung von PureBasic Testprogrammen

Verfasst: 13.10.2024 16:45
von mk-soft
Nach so vielen Jahren hat sich vieles geändert.

Daher gebe ich dir von mir ein paar Templates für Tests die ich immer verwende.
Somit hat man schon mal einen Anfang den man erweitern kann und worauf man aufbauen kann.

Main Leer:

Code: Alles auswählen

;-TOP

#ProgramTitle = "Main Window"
#ProgramVersion = "v1.01.2"

Enumeration Windows
  #Main
EndEnumeration

Enumeration MenuBar
  #MainMenu
EndEnumeration

Enumeration MenuItems
  #MainMenuAbout
  #MainMenuExit
EndEnumeration

Enumeration Gadgets
  
EndEnumeration

Enumeration StatusBar
  #MainStatusBar
EndEnumeration

Procedure UpdateWindow()
  Protected dx, dy
  dx = WindowWidth(#Main)
  dy = WindowHeight(#Main) - StatusBarHeight(#MainStatusBar) - MenuHeight()
  ; Resize gadgets
EndProcedure

Procedure Main()
  Protected dx, dy
  
  #MainStyle = #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_MaximizeGadget | #PB_Window_MinimizeGadget
  
  If OpenWindow(#Main, #PB_Ignore, #PB_Ignore, 800, 600, #ProgramTitle , #MainStyle)
    ; Menu
    CreateMenu(#MainMenu, WindowID(#Main))
    MenuTitle("&File")
    CompilerIf #PB_Compiler_OS = #PB_OS_MacOS
      MenuItem(#PB_Menu_About, "")
    CompilerElse
      MenuItem(#MainMenuAbout, "About")
    CompilerEndIf
    ; Menu File Items
    
    CompilerIf Not #PB_Compiler_OS = #PB_OS_MacOS
      MenuBar()
      MenuItem(#MainMenuExit, "E&xit")
    CompilerEndIf
    
    ; StatusBar
    CreateStatusBar(#MainStatusBar, WindowID(#Main))
    AddStatusBarField(#PB_Ignore)
    
    ; Gadgets
    dx = WindowWidth(#Main)
    dy = WindowHeight(#Main) - StatusBarHeight(#MainStatusBar) - MenuHeight()
    
    ; Bind Events
    BindEvent(#PB_Event_SizeWindow, @UpdateWindow(), #Main)
    
    ; Event Loop
    Repeat
      Select WaitWindowEvent()
        Case #PB_Event_CloseWindow
          Select EventWindow()
            Case #Main
              Break
              
          EndSelect
          
        Case #PB_Event_Menu
          Select EventMenu()
            CompilerIf #PB_Compiler_OS = #PB_OS_MacOS   
              Case #PB_Menu_About
                PostEvent(#PB_Event_Menu, #Main, #MainMenuAbout)
                
              Case #PB_Menu_Preferences
                
              Case #PB_Menu_Quit
                PostEvent(#PB_Event_CloseWindow, #Main, #Null)
                
            CompilerEndIf
            
          Case #MainMenuAbout
            MessageRequester("About", #ProgramTitle + #LF$ + #ProgramVersion, #PB_MessageRequester_Info)
              
          Case #MainMenuExit
            PostEvent(#PB_Event_CloseWindow, #Main, #Null)
            
          EndSelect
          
        Case #PB_Event_Gadget
          Select EventGadget()
              
          EndSelect
          
      EndSelect
    ForEver
    
  EndIf
  
EndProcedure : Main()
Main Edit und Buttons.

Code: Alles auswählen

;-TOP

#ProgramTitle = "Main Window"
#ProgramVersion = "v1.01.2"

Enumeration Windows
  #Main
EndEnumeration

Enumeration MenuBar
  #MainMenu
EndEnumeration

Enumeration MenuItems
  #MainMenuAbout
  #MainMenuExit
EndEnumeration

Enumeration Gadgets
  #MainEdit
  #MainButtonOk
  #MainButtonCancel
EndEnumeration

Enumeration StatusBar
  #MainStatusBar
EndEnumeration

Procedure UpdateWindow()
  Protected dx, dy
  dx = WindowWidth(#Main)
  dy = WindowHeight(#Main) - StatusBarHeight(#MainStatusBar) - MenuHeight()
  ; Resize gadgets
  ResizeGadget(#MainEdit, 5, 5, dx - 10, dy - 45)
  ResizeGadget(#MainButtonok, 10, dy - 35, 120, 30)
  ResizeGadget(#MainButtonCancel, dx - 130, dy - 35, 120, 30)
EndProcedure

Procedure Main()
  Protected dx, dy
  
  #MainStyle = #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_MaximizeGadget | #PB_Window_MinimizeGadget
  
  If OpenWindow(#Main, #PB_Ignore, #PB_Ignore, 800, 600, #ProgramTitle , #MainStyle)
    ; Menu
    CreateMenu(#MainMenu, WindowID(#Main))
    MenuTitle("&File")
    CompilerIf #PB_Compiler_OS = #PB_OS_MacOS
      MenuItem(#PB_Menu_About, "")
    CompilerElse
      MenuItem(#MainMenuAbout, "About")
    CompilerEndIf
    ; Menu File Items
    
    CompilerIf Not #PB_Compiler_OS = #PB_OS_MacOS
      MenuBar()
      MenuItem(#MainMenuExit, "E&xit")
    CompilerEndIf
    
    ; StatusBar
    CreateStatusBar(#MainStatusBar, WindowID(#Main))
    AddStatusBarField(#PB_Ignore)
    
    ; Gadgets
    dx = WindowWidth(#Main)
    dy = WindowHeight(#Main) - StatusBarHeight(#MainStatusBar) - MenuHeight()
    EditorGadget(#MainEdit, 5, 5, dx -10, dy - 45)
    ButtonGadget(#MainButtonok, 10, dy - 35, 120, 30, "Ok")
    ButtonGadget(#MainButtonCancel, dx - 130, dy - 35, 120, 30, "Abbruch")
    
    ; Bind Events
    BindEvent(#PB_Event_SizeWindow, @UpdateWindow(), #Main)
    
    ; Event Loop
    Repeat
      Select WaitWindowEvent()
        Case #PB_Event_CloseWindow
          Select EventWindow()
            Case #Main
              Break
              
          EndSelect
          
        Case #PB_Event_Menu
          Select EventMenu()
            CompilerIf #PB_Compiler_OS = #PB_OS_MacOS   
              Case #PB_Menu_About
                PostEvent(#PB_Event_Menu, #Main, #MainMenuAbout)
                
              Case #PB_Menu_Preferences
                
              Case #PB_Menu_Quit
                PostEvent(#PB_Event_CloseWindow, #Main, #Null)
                
            CompilerEndIf
            
          Case #MainMenuAbout
            MessageRequester("About", #ProgramTitle + #LF$ + #ProgramVersion, #PB_MessageRequester_Info)
              
          Case #MainMenuExit
            PostEvent(#PB_Event_CloseWindow, #Main, #Null)
            
          EndSelect
          
        Case #PB_Event_Gadget
          Select EventGadget()
            Case #MainEdit
              Select EventType()
                Case #PB_EventType_Change
                  ;
                  
              EndSelect
              
            Case #MainButtonOk
              ;
            Case #MainButtonCancel
              ;
              
          EndSelect
          
      EndSelect
    ForEver
    
  EndIf
  
EndProcedure : Main()

Re: Gibt es irgendwo eine kleine Samlung von PureBasic Testprogrammen

Verfasst: 13.10.2024 17:15
von Franz54
NicTheQuick hat geschrieben: 13.10.2024 16:23 Purebasic hat ein Examples-Ordner mit jeder Menge Beispielcodes und auch in der Hilfe sind bei vielen Befehlen immer wieder Beispiele dabei, die dir helfen werden.
Ich weiß nicht, wo der Examples-Ordner genau bei Windows liegt. Bei einer Linux-Installation ist es direkt in dem Ordner, in den du auch Purebasic installiert hast.
Danke, habe die Programme gefunden. Da sind ja bei der Grundinstallationinstallation eine ganze Menge Programme dabei.

Noch eine Frage. Kann man dem Norton Scanner irgendwie sagen, dass die Aktivitäten von PureBasic nicht blockieren soll. Ich habe das bei anderen Compilern nicht. Aber hier blockt der Norton dauernd die Abläufe. :o

Re: Gibt es irgendwo eine kleine Samlung von PureBasic Testprogrammen

Verfasst: 13.10.2024 19:56
von mk-soft
Typisch Virenscanner. Machen immer ärger ...

Bei mir habe ich Purebasic nach C:\WinAPP installiert. Diesen Ordner dann in Ausnahmen von Virenscanner hinzugefügt.
Für die PB-Projekte gibt es bei mir ein eigenen Ordner unter Dokumente. Diesen Ordner auch in den Ausnahmen hinzufügen.

Purebasic: Menu -> Einstellungen -> Compiler -> Standards: [x] Temporäre Executable im Quellcode-Verzeichnis erstellen.

Re: Gibt es irgendwo eine kleine Samlung von PureBasic Testprogrammen

Verfasst: 13.10.2024 22:45
von Franz54
OK, danke dir. Werde ich mal testen.

Franz

Re: Gibt es irgendwo eine kleine Samlung von PureBasic Testprogrammen

Verfasst: 14.10.2024 12:10
von Axolotl
Hallo Franz,
und herzlich Willkommen im deutschen Forum...
Ergänzend zu mk-soft würde ich dir noch zwei Befehle ans Herz legen:

Code: Alles auswählen

; Top of File 
EnableExplicit   
Dieser Befehl ist optional, aber hilft dir beim aufspüren von Schreibfehlern, weil hiermit die Vorabdeklaration von verwendeten Variablen erzwungen wird.

Code: Alles auswählen

Debug "Hilfesausgaben ohne den Programmfluß zu stören....." 

Hilfreich wenn man z.B. die Ausgaben von Proceduren als Zwischenergebnis sehen möchte.
Z.B. mit Hilfe von den #PB_Compiler_Xxxx Konstanten:

Code: Alles auswählen

; inside a procedure 
; .... 
Protected ret$ 	; ret$ als Alternative zu ret.s 
Debug #PB_Compiler_Procedure + "() => " + ret$
;.....