Gibt es irgendwo eine kleine Samlung von PureBasic Testprogrammen

Für allgemeine Fragen zur Programmierung mit PureBasic.
Franz54
Beiträge: 34
Registriert: 13.10.2024 15:31
Computerausstattung: Lenovo ThinkStation P330 Core i7 9700F 32GB RAM 2x 1TB SSD Win11 + NAS DS224 mit 2x5TB
Wohnort: Ohlstadt bei Garmisch
Kontaktdaten:

Gibt es irgendwo eine kleine Samlung von PureBasic Testprogrammen

Beitrag 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
Der Weg ist das Ziel :allright:
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8807
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Gibt es irgendwo eine kleine Samlung von PureBasic Testprogrammen

Beitrag 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.
Benutzeravatar
mk-soft
Beiträge: 3845
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: Gibt es irgendwo eine kleine Samlung von PureBasic Testprogrammen

Beitrag 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()
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Franz54
Beiträge: 34
Registriert: 13.10.2024 15:31
Computerausstattung: Lenovo ThinkStation P330 Core i7 9700F 32GB RAM 2x 1TB SSD Win11 + NAS DS224 mit 2x5TB
Wohnort: Ohlstadt bei Garmisch
Kontaktdaten:

Re: Gibt es irgendwo eine kleine Samlung von PureBasic Testprogrammen

Beitrag 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
Der Weg ist das Ziel :allright:
Benutzeravatar
mk-soft
Beiträge: 3845
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: Gibt es irgendwo eine kleine Samlung von PureBasic Testprogrammen

Beitrag 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.
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Franz54
Beiträge: 34
Registriert: 13.10.2024 15:31
Computerausstattung: Lenovo ThinkStation P330 Core i7 9700F 32GB RAM 2x 1TB SSD Win11 + NAS DS224 mit 2x5TB
Wohnort: Ohlstadt bei Garmisch
Kontaktdaten:

Re: Gibt es irgendwo eine kleine Samlung von PureBasic Testprogrammen

Beitrag von Franz54 »

OK, danke dir. Werde ich mal testen.

Franz
Der Weg ist das Ziel :allright:
Axolotl
Beiträge: 266
Registriert: 31.12.2008 16:34

Re: Gibt es irgendwo eine kleine Samlung von PureBasic Testprogrammen

Beitrag 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$
;.....
Using PureBasic latest stable version and current alpha/beta (x64) on Windows 11 Home
Antworten