PureArea.net - Codearchiv nach PB 4 "übersetzen"

Hier kann alles mögliche diskutiert werden. Themen zu Purebasic sind hier erwünscht.
Flames und Spam kommen ungefragt in den Mülleimer.
Benutzeravatar
blbltheworm
Beiträge: 217
Registriert: 22.09.2004 19:36
Wohnort: Auf der schönen Schwäbischen Alb

Beitrag von blbltheworm »

Eine Frage noch zu dem Demo-Tag:
bedeutet Demo: Yes, dass es sich um ein ausführbares Beispiel handelt, das man sofort testen kann??

kleine Zwischenbilanz:
Die Ordner
  • Files+Dirs
  • Fonts
  • Games
  • Music+Movie
wären somit vollständig konvertiert.
Ich hab bei den Geänderten im Autortag ein(updated for PB4.00 by blbltheworm) an den Autor angehängt.
Außerdem hab ich den einen, oder anderen fehlerhaften Code wieder zum Laufen gebracht.

Es wäre auch angebracht sich zu überlegen, ob man das Code Archiv nicht einmal entrümpeln sollte.
So gibt es viele Beispiele für Probleme, die mit den neueren PB-Versionen einfacher zu lösen wären als in dem geposteten Beispiel
Benutzeravatar
Andre
PureBasic Team
Beiträge: 1765
Registriert: 11.09.2004 16:35
Computerausstattung: MacBook Core2Duo mit MacOS 10.6.8
Lenovo Y50 i7 mit Windows 10
Wohnort: Saxony / Deutscheinsiedel
Kontaktdaten:

Beitrag von Andre »

@blbltheworm:
Danke Dir schonmal für Deine Mühe, die Du Dir mit dem CodeArchiv machst. Das gibt dann auch mal einen Eintrag in den Credits... :allright:

Das mit dem ergänzten Autor-Tag ist ok so.

Bei dem Tag "Demo:" bedeutet "Yes", dass das Code-Beispiel mit der Demo-Version von PB läuft. Anderenfalls sollte dort "No" stehen. Oder ggf. gar nichts, wenn nicht getestet (CAV gibt auch automatisch einen Hinweis, wenn z.B. WinAPI-like Befehle auftauchen.)

Entrümpeln oder komplettes Ersetzen von Beispielen ist ok. Bitte dann aber in einer kleinen Readme-Datei gelöschte oder grundlegend geänderte Code-Beispiele aufzeichnen. Danke!
Bye,
...André
(PureBasicTeam::Docs - PureArea.net | Bestellen:: PureBasic | PureVisionXP)
Benutzeravatar
Andre
PureBasic Team
Beiträge: 1765
Registriert: 11.09.2004 16:35
Computerausstattung: MacBook Core2Duo mit MacOS 10.6.8
Lenovo Y50 i7 mit Windows 10
Wohnort: Saxony / Deutscheinsiedel
Kontaktdaten:

Beitrag von Andre »

Auch im englischen Forum sind einige User dabei, die beim Konvertieren des CodeArchivs mithelfen möchten.

Hier der Link zum entsprechenden Thread: http://www.purebasic.fr/english/viewtop ... 560#149560

Bitte also immer mal hier wie da schauen und regelmäßig einen kurzen Status-Report abgeben.

Danke :allright:
Bye,
...André
(PureBasicTeam::Docs - PureArea.net | Bestellen:: PureBasic | PureVisionXP)
Benutzeravatar
blbltheworm
Beiträge: 217
Registriert: 22.09.2004 19:36
Wohnort: Auf der schönen Schwäbischen Alb

Beitrag von blbltheworm »

@Andrè
OK, ich hab dir jetzt mal dann alles geschickt was ich bisher habe.
Dazugekommen ist der komplette Ordner "Gadgets".

ein paar Beispiele haben mir Probleme bereitet, mehr dazu kannst du in meiner eMail lesen.

als nächstes werd ich mir dann die 79 Dateien des Ordner "Windows" vornehmen.

Gruß,
blbltheworm
Benutzeravatar
Andre
PureBasic Team
Beiträge: 1765
Registriert: 11.09.2004 16:35
Computerausstattung: MacBook Core2Duo mit MacOS 10.6.8
Lenovo Y50 i7 mit Windows 10
Wohnort: Saxony / Deutscheinsiedel
Kontaktdaten:

Beitrag von Andre »

@blbltheworm: Danke :allright:
Bye,
...André
(PureBasicTeam::Docs - PureArea.net | Bestellen:: PureBasic | PureVisionXP)
Benutzeravatar
Falko
Admin
Beiträge: 3535
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit)
Kontaktdaten:

Beitrag von Falko »

Hi, ich habe mal meine ganzen Sources per Suche aus dem Codearchiv extrahiert und in PB4 soweit angepasst und Andrè zugeschickt.

Es wäre sehr schön, wenn sich hier noch mehr beteiligen, damit das Codearchiv auf den neusten
Stand von PB4 kommt :allright:

Hoffentlich habe ich nichts vergessen ;).

Gruß Falko

Folgende Sources laufen jetzt auf PB4:

\File_Read+Write\WriteFileToTempDir.pb

Code: Alles auswählen

; German forum: http://robsite.de/php/pureboard/viewtopic.php?t=3167&highlight= 
; Author: Falko 
; Date: 17. December 2003 


; Write a file to the TEMP directory 
; Schreibt eine Datei ins TEMP-Verzeichnis 

; Path.s = Space (1000)    
; GetTempPath_(1000,@Path) 
Path.s=GetTemporaryDirectory() ; changed the API with PB4 commands 

If ReadFile(0, Path+"Test1.Fal") 
   MessageRequester("Achtung","Die Datei existiert schon",#PB_MessageRequester_Ok) 
   CloseFile(0) 
   End 
Else 
   CreateFile(0,Path+"Test1.Fal") 
    ; hier könnten weitere Write-Befehle stehen 
   CloseFile(0) 
   MessageRequester("Alles klar","Die Datei wurde erfolgreich in ## "+Path+" ## geschrieben",#PB_MessageRequester_Ok) 
EndIf  
\ToolBar\Menu+ToolBar+StatusBar\MenuMenuItem_PlaceRightSite.pb

Code: Alles auswählen

; German forum: http://robsite.de/php/pureboard/viewtopic.php?p=24985#24985
; Author: Falko
; Date: 19. December 2003

; Set the last menu item to the top-right corner...

;Menü mit Help rechts per API-Funktion und Structure. 
;Für Redraw habe ich einfach Menü aus und dann wieder eingeschaltet 


#MIIM_TYPE = 16 
#MFT_RIGHTJUSTIFY = 16384

LPTSTR.s="Hilfe Rechts" 
Eintrag.MENUITEMINFO 
Eintrag\cbSize = SizeOf(MENUITEMINFO) 
Eintrag\fMask = #MIIM_TYPE 
Eintrag\fType = #MFT_RIGHTJUSTIFY 
Eintrag\dwTypeData = @LPTSTR 
    
If OpenWindow(0, 100, 150, 595, 260, "PureBasic - Menu", #PB_Window_SystemMenu) 
  

  hMenu.l=CreateMenu(0, WindowID(0)) 
  If hMenu 
    MenuTitle("File") 
      MenuItem( 1, "&Load...") 
      MenuItem( 2, "Save") 
      MenuItem( 3, "Save As...") 

    MenuTitle("Bearbeiten") 
      MenuItem(4, "Markieren") 
    MenuTitle("Neu") 
      MenuItem(5, "oh je, jetzt mehr") 

    MenuTitle(""); Dummyplatzhalter eingefügt, damit SetMenuItem darauf zugreifen kann 
      MenuItem(6,"jetzt hast du hilfe") 
  EndIf 

; MenuTitle ein Label geben und rechts ausrichten 
SetMenuItemInfo_(hMenu,3,1,@Eintrag) ; Menütitel ist von 0-1-2-3 gerechnet 
HideMenu(0, 1) 
HideMenu(0, 0) 
    

  ; 
  ; This is the 'event loop'. All the user actions are processed here. 
  ; It's very easy to understand: when an action occurs, the EventID 
  ; isn't 0 and we just have to see what have happened... 
  ; 
  
  Repeat 

    Select WaitWindowEvent() 

      Case #PB_Event_Menu 

        Select MenuID(0)  ; To see which menu has been selected 

          Case 11 ; About 
            MessageRequester("About", "Cool Menu example", 0) 
            
          Default 
            MessageRequester("Info", "MenuItem: "+Str(MenuID(0)), 0) 

        EndSelect 

      Case #WM_CLOSE ; #PB_EventCloseWindow 
        Quit = 1 

    EndSelect 

  Until Quit = 1 

EndIf 
FreeMenu(0) 
End 
Menu\ToolBar\Menu+ToolBar+StatusBar\StatusBar\StatusBar_SetFont&Resize.pb

Code: Alles auswählen

; German forum: http://robsite.de/php/pureboard/viewtopic.php?t=3180&highlight=
; Author: Falko (updated for PB3.93 by ts-soft)
; Date: 19. December 2003
; OS: Windows
; Demo: No


LoadFont (0, "Courier", 15)            ; Load Courrier Font, Size 15 
LoadFont (1, "Arial", 25)              ; Load Arial Font, Size 25 


Procedure SizeCallback(WindowId, Message, wParam, lParam) 

  ReturnValue = #PB_ProcessPureBasicEvents 
  
  If Message = #WM_SIZE 
    ; UpdateStatusBar(0) 
    ReturnValue = 1       ; Tell the PureBasic internal event handler than the Size event is processed by the user callback 
  EndIf 
  
  ProcedureReturn  ReturnValue 
EndProcedure 


If OpenWindow(0, 100, 150, 400, 200,"PureBasic - StatusBar Example",#PB_Window_SystemMenu | #PB_Window_SizeGadget) 

  Hdl.l = CreateStatusBar(0, WindowID(0)) 
  If Hdl 
    AddStatusBarField(100) 
    AddStatusBarField(150) 
    AddStatusBarField(100) 
  EndIf 
  
    StatusBarText(0, 0, "Area 1") 
    StatusBarText(0, 1, "Area 2", #PB_StatusBar_BorderLess) 
    StatusBarText(0, 2, "Area 3", #PB_StatusBar_Right | #PB_StatusBar_Raised) 
  SendMessage_(Hdl,#WM_SETFONT,FontID(1),#True) ; hier wird Arial eingesetzt 
   Delay(2000) 
  SendMessage_(Hdl,#WM_SETFONT,FontID(0),#True) ; und hier Courier 
  ;UpdateStatusBar(0) 
  SetWindowCallback(@SizeCallback()) 
  
  Repeat 

  Until WaitWindowEvent() = #PB_Event_CloseWindow 
  
EndIf  
Graphics\Drawing\Lines\Line_Styles2.pb

Code: Alles auswählen

; German forum: http://robsite.de/php/pureboard/viewtopic.php?t=2439&postdays=0&postorder=asc&start=20
; Author: Falko
; Date: 04. October 2003
; OS: Windows
; Demo: No

If CreateImage(0,400,400) 
  hDC=StartDrawing(ImageOutput(0)) 
  pen=CreatePen_(#PS_SOLID,20,RGB(255,255,255)) 
  oldpen=GetCurrentObject_(hDC,#OBJ_PEN) 
  SelectObject_(hDC,pen) 
  LineXY(10,10,100,100) 
  LineXY(100,100,100,200) 
  LineXY(100,200,10,100) 
  SelectObject_(hDC,oldpen) 
  DeleteObject_(pen) 
  StopDrawing() 
  
  If OpenWindow(1,0,0,400,400,"Pen-Test",#PB_Window_ScreenCentered|#PB_Window_SystemMenu) 
    If CreateGadgetList(WindowID(1)) 
      ImageGadget(0,0,0,400,400,ImageID(0)) 
      While WaitWindowEvent()<>#PB_Event_CloseWindow:Wend 
      CloseWindow(1) 
    EndIf 
  EndIf 
  FreeImage(0) 
EndIf
\Graphics\Drawing\Lines\Line_Styles4.pb

Code: Alles auswählen

; German forum: http://robsite.de/php/pureboard/viewtopic.php?t=2439&postdays=0&postorder=asc&start=20
; Author: Falko
; Date: 05. October 2003
; OS: Windows
; Demo: No

; Note:    Don't use a PB function between AutoPen() and EndPen()
; Hinweis: Wichtig ist eigentlich nur, daß zwischen AutoPen() und EndPen() auf keinen Fall eine
;          PB-Funktion aufgerufen wird, die die Farbe etc. ändert.

Global _AutoPen_OldPen_ 
Global _AutoPen_NewPen_ 
Procedure AutoPen(hDC,Style,width,Color) 
  If _AutoPen_OldPen_=0 
    _AutoPen_OldPen_=GetCurrentObject_(hDC,#OBJ_PEN) 
  EndIf 
  If _AutoPen_NewPen_ 
    DeleteObject_(_AutoPen_NewPen_) 
  EndIf 
  _AutoPen_NewPen_=CreatePen_(Style,width,Color) 
  SelectObject_(hDC,_AutoPen_NewPen_) 
EndProcedure 
Procedure EndPen(hDC) 
  If _AutoPen_NewPen_ 
    DeleteObject_(_AutoPen_NewPen_) 
  EndIf 
  SelectObject_(hDC,_AutoPen_OldPen_) 
  _AutoPen_OldPen_=0 
EndProcedure 
    
  
If CreateImage(0,400,400) 
  hDC=StartDrawing(ImageOutput(0)) 
  Box(0,0,400,400,$FFFFFF) 
  
  AutoPen(hDC, #PS_SOLID, 15 ,RGB(0,0,0)) 
  LineXY( 10, 10, 100, 100 ) 
  Box(180,10,100,255,$FF00FF);                hier mal das mit color ignoriert 
  Circle(230,150,50,$FFFF00) ;                hier auch 
  AutoPen(hDC, #PS_SOLID, 3 ,RGB(255,0,0)) 
  LineXY( 100, 100, 100, 200 ) 
  AutoPen(hDC, #PS_SOLID, 10 ,RGB(0, 255, 0) ) 
  LineXY ( 100, 200, 10, 100 ) 
  AutoPen(hDC,#PS_DASH,1,RGB(0, 100, 255) ) 
  LineXY ( 10, 230, 150, 230 ) 
  AutoPen(hDC,#PS_DASHDOTDOT, 1 ,RGB(255,0,100)) 
  LineXY (10, 240, 150, 240 ) 
  AutoPen(hDC,#PS_DOT, 1 ,RGB(0,255,0)) 
  LineXY (10, 250, 150, 250) 
  EndPen(hDC)    
  StopDrawing() 
  
  If OpenWindow(1,0,0,400,400,"Pen-Test",#PB_Window_ScreenCentered|#PB_Window_SystemMenu) 
    If CreateGadgetList(WindowID(1)) 
      ImageGadget(0,0,0,400,400,ImageID(0)) 
      While WaitWindowEvent()<>#PB_Event_CloseWindow:Wend 
      CloseWindow(1) 
    EndIf 
  EndIf 
  FreeImage(0) 
EndIf
\Time+Data\Clock\DigitalClock.pb

Code: Alles auswählen

; German forum: http://robsite.de/php/pureboard/viewtopic.php?t=2470&highlight=
; Author: Falko (optimized by Mischa)
; Date: 06. October 2003

Global _AutoPen_OldPen_ 
Global _AutoPen_NewPen_ 
Procedure  Init() 
   Global Dim ziffer.l(9,7) 
   Restore ziffern 
   For i=0 To 9:Read a:ziffer(i,0)=a:For t=1 To a:Read b:ziffer(i,t)=b:Next t:Next i 
   Global Dim linie.l(7,4) 
   Restore linien 
   For i=1 To 7:For t=1 To 4:Read a:linie(i,t)=a:Next t:Next i 
EndProcedure 

Procedure AutoPen(hDC,Style,width,Color) 
  If _AutoPen_OldPen_=0 
    _AutoPen_OldPen_=GetCurrentObject_(hDC,#OBJ_PEN) 
  EndIf 
  If _AutoPen_NewPen_ 
    DeleteObject_(_AutoPen_NewPen_) 
  EndIf 
  _AutoPen_NewPen_=CreatePen_(Style,width,Color) 
  SelectObject_(hDC,_AutoPen_NewPen_) 
EndProcedure 

Procedure EndPen(hDC) 
  If _AutoPen_NewPen_ 
    DeleteObject_(_AutoPen_NewPen_) 
  EndIf 
  SelectObject_(hDC,_AutoPen_OldPen_) 
  _AutoPen_OldPen_=0 
EndProcedure 

Procedure Digital(Zahl.l) 
   If CreateImage(0,65,110) 
      hDC=StartDrawing(ImageOutput(0)) 
      AutoPen(hDC, #PS_SOLID, Random(15) ,RGB(Random(255),Random(255),Random(255)))    
      For i=1 To ziffer(Zahl,0) 
         LineXY(linie(ziffer(Zahl,i),1), linie(ziffer(Zahl,i),2), linie(ziffer(Zahl,i),3), linie(ziffer(Zahl,i),4))  
      Next i 
       EndPen(hDC)    
       StopDrawing() 
   EndIf 
EndProcedure 

Init() 
If OpenWindow(1,0,0,65,110 ,"DIGITS",#PB_Window_ScreenCentered|#PB_Window_SystemMenu|#PB_Window_BorderLess) 
      If CreateGadgetList(WindowID(1)) 
            While Event<>#PB_Event_CloseWindow 
               If GetTickCount_()-time > 500 
                  i=(i+1) % 10      ; Modula Operator need PureBasic v3.80+
                  Digital(i) 
                  ImageGadget(0,0,0,65,110,ImageID(0)) 
                  time=GetTickCount_() 
               EndIf 
               Delay(5) 
               Event = WindowEvent() 
            Wend 
            CloseWindow(1) 
    EndIf 
EndIf 
FreeImage(0) 

; in der Datasection werden die einzelnen Segmente für die digitale Ziffer vorgegeben. 

DataSection  
   ziffern: 
   Data.l 6,1,2,3,6,7,5 
   Data.l 2,3,6 
   Data.l 5,1,3,4,5,7 
   Data.l 5,1,3,4,6,7 
   Data.l 4,2,4,3,6 
   Data.l 5,1,2,4,6,7 
   Data.l 6,1,2,4,5,6,7 
   Data.l 3,1,3,6 
   Data.l 7,1,2,3,4,5,6,7 
   Data.l 5,1,2,3,4,6 
   linien: 
   Data.l 10,10,50,10 
   Data.l 10,10,10,55 
   Data.l 50,10,50,55 
   Data.l 10,55,50,55 
   Data.l 10,55,10,100 
   Data.l 50,55,50,100 
   Data.l 10,100,50,100 
EndDataSection
Zuletzt geändert von Falko am 03.07.2006 14:42, insgesamt 2-mal geändert.
Bild
Win11 Pro 64-Bit, PB_6.11b1
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 »

>> \File_Read+Write\WriteFileToTempDir.pb
Ich denke, der kann weg :wink:
oder zumindest die neue Funktion verwenden:

Code: Alles auswählen

GetTemporaryDirectory()
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
blbltheworm
Beiträge: 217
Registriert: 22.09.2004 19:36
Wohnort: Auf der schönen Schwäbischen Alb

Beitrag von blbltheworm »

So, das Abi ist vorbei und ich kann jetzt wieder durchstarten.
Die folgenden Ordner sind konvertiert:
  • Windows
  • Input+Output
  • WindowsAPI-Examples
Als nächstes werd ich mir "Windows_System" vornehmen und anschließend "Internet&Co"

Und zu ts-softs Beitrag:
Ich denke es wäre allgemein nicht schlecht das Archiv zu entrümpeln.
Ich bin bei meiner Konvertierung auf viele mitlerweile nutzlose Beispiele gestoßen, da gewissen Dinge mit PBeigenen Befehlen einfacher zu lösen sind.

Vielleicht könnte sich entweder ein kleines Team hinsetzen und den Sinn/Nutzen der einzelnen Beispiele zu diskutieren, oder man macht wöchentlich eine Abstimmung im Forum über die einzelnen Beispiele.
Ich weiß beide Methoden sind aufwendig, aber ich finde niemand sollte im Alleingang das Archiv entrümpeln, den da ist die Wahrscheinlichkeit, dass was wichtiges rausfliegt einfach zu groß.
Und trotz des Aufwandes finde ich, dass es sich lohnen würde zum Wohle der Übersicht und des Nutzen des ganzen Archives.
Benutzeravatar
Falko
Admin
Beiträge: 3535
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit)
Kontaktdaten:

Beitrag von Falko »

ts-soft hat geschrieben:>> \File_Read+Write\WriteFileToTempDir.pb
Ich denke, der kann weg :wink:
oder zumindest die neue Funktion verwenden:

Code: Alles auswählen

GetTemporaryDirectory()
Danke @ts-soft
Ich hab's jetzt an die neue Umgebung angepasst :allright:

Und mit dem Weglassen könnte André vielleicht entscheiden.
Bild
Win11 Pro 64-Bit, PB_6.11b1
Benutzeravatar
Falko
Admin
Beiträge: 3535
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit)
Kontaktdaten:

Beitrag von Falko »

@blbltheworm

Wie meinst du das mit dem Entrümpeln?
Die neuen Funktionen von PB4 sind teilweise durch solche Beispiele aus der API entstanden.

Warum nicht einfach den Source so belassen und so an PB anpassen, das es in PB4 läuft.

Vielleicht sollte man eine weitere Kopie hinzufügen, die die APIs wiederum durch die neuen PB-Funktionen ersetzt, oder durch das Auskommentieren des Ursprungssources und erweitern der neuen Pb-Funktionen.

Somit wäre für jeden Neuling oder Anfänger der Umgang und der Vergleich zwischen PB4 als auch der API, eine zusätzliche Lernhilfe.

Gruß Falko
Bild
Win11 Pro 64-Bit, PB_6.11b1
Antworten