Verfasst: 17.02.2005 16:23
Wurde heute von Fred gefixed (also in der 3.93 beta 2)IceSoft hat geschrieben:'Erstaunlich das PB da keinen Fehler ausgibt... '
Habs mal als BUG ins Englische Forum gesetzt.
Das deutsche PureBasic-Forum
https://www.purebasic.fr/german/
Wurde heute von Fred gefixed (also in der 3.93 beta 2)IceSoft hat geschrieben:'Erstaunlich das PB da keinen Fehler ausgibt... '
Habs mal als BUG ins Englische Forum gesetzt.
Code: Alles auswählen
Structure wettkampf
Spielort.s
datum.s
gegner.s
Ergebnis.s
Spieler_1.s
Spieler_2.s
Spieler_3.s
Spieler_4.s
Spieler_5.s
Spieler_6.s
Spieler_7.s
Spieler_8.s
Spieler_9.s
Spieler_10.s
Spieler_11.s
Spieler_Ersatz1.s
Spieler_Ersatz2.s
Schiedsrichter.s
EndStructure
match.wettkampf
Dim jahresergebnisse.wettkampf(50)
Dim statistik.wettkampf(1000)
Procedure CopyStructure(source,dest,size,StructureMap)
Protected i, StructureMapOffset
StructureMapOffset = 0
For i = 0 To size-1
If PeekL(StructureMap+StructureMapOffset) = i
MOV Ecx, i
MOV Edx, Ecx
ADD Ecx, dest
ADD Edx, source
MOV Edx, dword[Edx]
CALL SYS_FastAllocateStringFree
StructureMapOffset+4
i+3
Else
PokeB(dest+i,PeekB(source+i))
EndIf
Next
EndProcedure
match\Spielort = "Wiesbaden"
match\datum = "24.7.2004"
match\gegner = "GSV"
match\Ergebnis = "2:4"
match\Spieler_1 = "Huber"
match\Spieler_2 = "Müller"
match\Spieler_3 = "Eszgön"
match\Spieler_4 = "Krallmann"
match\Spieler_5 = "König"
match\Spieler_6 = "Lindauer1"
match\Spieler_7 = "Lindauer2"
match\Spieler_8 = "Schwieken"
match\Spieler_9 = "Rülberg"
match\Spieler_10 = "Steenken"
match\Spieler_11 = "Schwelm"
match\Spieler_Ersatz1 = "Zeppelin"
match\Spieler_Ersatz2 = "Barth"
match\Schiedsrichter = "von Weilen"
Debug Str(@match\Spielort)+" :"+match\Spielort
Debug Str(@jahresergebnisse(8)\Spielort)+" :"+jahresergebnisse(8)\Spielort
Debug "Copy..."
CopySrc = @match
CopyDest = @jahresergebnisse(8)
CopySize = SizeOf(wettkampf)
CopyStructureMap = 0
!MOV dword[v_CopyStructureMap], s_wettkampf ;s_<Structure>
CopyStructure(CopySrc,CopyDest,CopySize,CopyStructureMap)
Debug Str(@match\Spielort)+" :"+match\Spielort
Debug Str(@jahresergebnisse(8)\Spielort)+" :"+jahresergebnisse(8)\Spielort
Code: Alles auswählen
; ################ Mein erstes (richtiges) PUREBASIC Proggi !!!! ######## von LUPO #######
; ##### Mit Hilfe von Deeem2031 und den coolen Pureboard Members #########################
; ##### Danke an den Visual Designer, hast mir viel Tipparbeit abgenommen ################
; ##### tuts nur unter 3.93 weil sonst gibts Ärger mit dem Assemblercode #################
; ##### nicht vergessen ASM option abhaken sonst gehts auch nicht ########################
; PureBasic Visual Designer v3.90 build 1360
;- Window Constants
;
Enumeration
#Window_0
EndEnumeration
;- Gadget Constants
;
Enumeration
#Button_Laden
#Frame3D_0
#Text_Datum
#Text_Gegner
#Text_Ort
#Text_Ergebnis
#Text_spieler1
#Text_spieler2
#Text_spieler3
#Text_spieler4
#Text_spieler5
#Text_spieler6
#Text_spieler7
#Text_spieler8
#Text_spieler9
#Text_spieler10
#Text_spieler11
#Frame3D_1
#Frame3D_2
#Frame3D_3
#Frame3D_4
#Frame3D_5
#Frame3D_6
#Frame3D_7
#Text_schiedsrichter
#Text_Reservespieler1
#Text_Reservespieler2
#Frame3D_8
#Button_sehrgut
#Button_gut
#Button_durchschnittlich
#Button_schlecht
#Text_Zahlsehrgut
#Text_Zahlgut
#Text_zahldurchschnittlich
#Text_zahlschlecht
#Button_Anzeigensehrgut
#Button_Anzeigengut
#Button_Anzeigendurchschnittlich
#Button_Anzeigenschlecht
#ListIcon_0
#Button_loschen
EndEnumeration
;- Fonts
;
Global FontID1
FontID1 = LoadFont(1, "Arial", 20, #PB_Font_Bold)
Global FontID2
FontID2 = LoadFont(2, "Arial", 14, #PB_Font_Bold)
Procedure Open_Window_0()
If OpenWindow(#Window_0, 274, -11, 701, 594, #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_SizeGadget | #PB_Window_TitleBar , "Match-Sortierer")
If CreateGadgetList(WindowID())
ButtonGadget(#Button_Laden, 310, 10, 90, 30, "Laden")
Frame3DGadget(#Frame3D_0, 30, 50, 650, 270, "")
TextGadget(#Text_Datum, 80, 80, 110, 20, "")
TextGadget(#Text_Gegner, 80, 130, 110, 20, "")
TextGadget(#Text_Ort, 80, 180, 110, 20, "")
TextGadget(#Text_Ergebnis, 60, 250, 110, 40, "")
SetGadgetFont(#Text_Ergebnis, FontID1)
TextGadget(#Text_spieler1, 270, 80, 170, 20, "")
TextGadget(#Text_spieler2, 270, 100, 170, 20, "")
TextGadget(#Text_spieler3, 270, 120, 170, 20, "")
TextGadget(#Text_spieler4, 270, 140, 170, 20, "")
TextGadget(#Text_spieler5, 270, 160, 170, 20, "")
TextGadget(#Text_spieler6, 270, 180, 170, 20, "")
TextGadget(#Text_spieler7, 270, 200, 170, 20, "")
TextGadget(#Text_spieler8, 270, 220, 170, 20, "")
TextGadget(#Text_spieler9, 270, 240, 170, 20, "")
TextGadget(#Text_spieler10, 270, 260, 170, 20, "")
TextGadget(#Text_spieler11, 270, 280, 170, 20, "")
Frame3DGadget(#Frame3D_1, 230, 60, 220, 250, "Spieler")
Frame3DGadget(#Frame3D_2, 50, 210, 160, 100, "Ergebnis")
Frame3DGadget(#Frame3D_3, 50, 160, 160, 50, "Ort")
Frame3DGadget(#Frame3D_4, 50, 110, 160, 50, "Gegner")
Frame3DGadget(#Frame3D_5, 50, 60, 160, 50, "Datum")
Frame3DGadget(#Frame3D_6, 470, 60, 190, 50, "Schiedsrichter")
Frame3DGadget(#Frame3D_7, 470, 130, 190, 70, "Reservespieller")
TextGadget(#Text_schiedsrichter, 490, 80, 150, 20, "")
TextGadget(#Text_Reservespieler1, 490, 150, 160, 20, "")
TextGadget(#Text_Reservespieler2, 490, 170, 160, 20, "")
Frame3DGadget(#Frame3D_8, 30, 330, 650, 80, "Sortiere nach")
ButtonGadget(#Button_sehrgut, 50, 350, 130, 20, "Sehr gute Spiele")
ButtonGadget(#Button_gut, 210, 350, 140, 20, "Gute Spiele")
ButtonGadget(#Button_durchschnittlich, 380, 350, 130, 20, "durchschnittliche Spiele")
ButtonGadget(#Button_schlecht, 540, 350, 120, 20, "Schlechte Spiele")
TextGadget(#Text_Zahlsehrgut, 90, 380, 50, 20, "0", #PB_Text_Center)
SetGadgetFont(#Text_Zahlsehrgut, FontID2)
TextGadget(#Text_Zahlgut, 250, 380, 50, 20, "0", #PB_Text_Center)
SetGadgetFont(#Text_Zahlgut, FontID2)
TextGadget(#Text_zahldurchschnittlich, 420, 380, 50, 20, "0", #PB_Text_Center)
SetGadgetFont(#Text_zahldurchschnittlich, FontID2)
TextGadget(#Text_zahlschlecht, 570, 380, 50, 20, "0", #PB_Text_Center)
SetGadgetFont(#Text_zahlschlecht, FontID2)
ButtonGadget(#Button_Anzeigensehrgut, 70, 420, 90, 20, "Anzeigen")
ButtonGadget(#Button_Anzeigengut, 230, 420, 90, 20, "Anzeigen")
ButtonGadget(#Button_Anzeigendurchschnittlich, 400, 420, 90, 20, "Anzeigen")
ButtonGadget(#Button_Anzeigenschlecht, 550, 420, 90, 20, "Anzeigen")
;-
ListIconGadget(#ListIcon_0, 30, 450, 650, 110, "Datum", 100)
AddGadgetColumn(#ListIcon_0, 2, "Ort", 100)
AddGadgetColumn(#ListIcon_0, 3, "Datum", 100)
AddGadgetColumn(#ListIcon_0, 4, "Gegner", 100)
AddGadgetColumn(#ListIcon_0, 5, "Spieler 1", 100)
AddGadgetColumn(#ListIcon_0, 6, "Spieler 2", 100)
AddGadgetColumn(#ListIcon_0, 7, "Spieler 3", 100)
AddGadgetColumn(#ListIcon_0, 8, "Spieler 4", 100)
AddGadgetColumn(#ListIcon_0, 9, "Spieler 5", 100)
AddGadgetColumn(#ListIcon_0, 10, "Spieler 6", 100)
AddGadgetColumn(#ListIcon_0, 11, "Spieler 7", 100)
AddGadgetColumn(#ListIcon_0, 12, "Spieler 8", 100)
AddGadgetColumn(#ListIcon_0, 13, "Spieler 9", 100)
AddGadgetColumn(#ListIcon_0, 14, "Spieler 10", 100)
AddGadgetColumn(#ListIcon_0, 15, "Spieler 11", 100)
AddGadgetColumn(#ListIcon_0, 17, "Schiedsrichter", 100)
AddGadgetColumn(#ListIcon_0, 17, "Reservespieler 1", 100)
AddGadgetColumn(#ListIcon_0, 18, "Reservespieler 2", 100)
ButtonGadget(#Button_loschen, 300, 570, 110, 20, "Löschen")
EndIf
EndIf
EndProcedure
Structure wettkampf
Spielort.s
datum.s
gegner.s
Ergebnis.s
Spieler_1.s
Spieler_2.s
Spieler_3.s
Spieler_4.s
Spieler_5.s
Spieler_6.s
Spieler_7.s
Spieler_8.s
Spieler_9.s
Spieler_10.s
Spieler_11.s
Spieler_Ersatz1.s
Spieler_Ersatz2.s
Schiedsrichter.s
EndStructure
Global CopyStructureMap ; ohne geht nicht sonst Compilerfehler
Global match.wettkampf
Dim jahresergebnisse_sehrgut.wettkampf(50)
Dim jahresergebnisse_gut.wettkampf(50)
Dim jahresergebnisse_durchschnittlich.wettkampf(50)
Dim jahresergebnisse_schlecht.wettkampf(50)
; Dim statistik.wettkampf(1000) brauch ich jetzt noch nicht
leere.wettkampf
match\Spielort = "Wiesbaden"
match\datum = "24.7.2004"
match\gegner = "GSV"
match\Ergebnis = "2:4"
match\Spieler_1 = "Huber"
match\Spieler_2 = "Müller"
match\Spieler_3 = "Eszgön"
match\Spieler_4 = "Krallmann"
match\Spieler_5 = "König"
match\Spieler_6 = "Lindauer1"
match\Spieler_7 = "Lindauer2"
match\Spieler_8 = "Schwieken"
match\Spieler_9 = "Rülberg"
match\Spieler_10 = "Steenken"
match\Spieler_11 = "Schwelm"
match\Spieler_Ersatz1 = "Zeppelin"
match\Spieler_Ersatz2 = "Barth"
match\Schiedsrichter = "von Weilen"
Procedure matchdaten_holen () ; wenns echt läuft kommen die Daten von einer
; Diskette deswegen hab ich ein dummy geprogt
Static laden_zaehler
match\Spielort = "Wiesbaden" + "Test " + Str(laden_zaehler)
match\datum = "24.7.2004" + "Test " + Str(laden_zaehler)
match\gegner = "GSV" + "Test " + Str(laden_zaehler)
match\Ergebnis = Str(laden_zaehler) + ":0"
match\Spieler_1 = "Huber" + "Test " + Str(laden_zaehler)
match\Spieler_2 = "Müller" + "Test " + Str(laden_zaehler)
match\Spieler_3 = "Eszgön" + "Test " + Str(laden_zaehler)
match\Spieler_4 = "Krallmann" + "Test " + Str(laden_zaehler)
match\Spieler_5 = "König" + "Test " + Str(laden_zaehler)
match\Spieler_6 = "Lindauer1" + "Test " + Str(laden_zaehler)
match\Spieler_7 = "Lindauer2" + "Test " + Str(laden_zaehler)
match\Spieler_8 = "Schwieken" + "Test " + Str(laden_zaehler)
match\Spieler_9 = "Rülberg" + "Test " + Str(laden_zaehler)
match\Spieler_10 = "Steenken" + "Test " + Str(laden_zaehler)
match\Spieler_11 = "Schwelm" + "Test " + Str(laden_zaehler)
match\Spieler_Ersatz1 = "Zeppelin" + "Test " + Str(laden_zaehler)
match\Spieler_Ersatz2 = "Barth" + "Test " + Str(laden_zaehler)
match\Schiedsrichter = "von Weilen"+ "Test " + Str(laden_zaehler)
laden_zaehler = laden_zaehler + 1
EndProcedure
Procedure matchdaten_anzeigen (disable) ; da hab ich das disable zugeschummelt :)
SetGadgetText(#Text_Ort, match\Spielort)
SetGadgetText(#Text_Datum, match\datum)
SetGadgetText(#Text_Gegner, match\gegner)
SetGadgetText(#Text_Ergebnis, match\Ergebnis)
SetGadgetText(#Text_spieler1, match\Spieler_1)
SetGadgetText(#Text_spieler2, match\Spieler_2)
SetGadgetText(#Text_spieler3, match\Spieler_3)
SetGadgetText(#Text_spieler4, match\Spieler_4)
SetGadgetText(#Text_spieler5, match\Spieler_5)
SetGadgetText(#Text_spieler6, match\Spieler_6)
SetGadgetText(#Text_spieler7, match\Spieler_7)
SetGadgetText(#Text_spieler8, match\Spieler_8)
SetGadgetText(#Text_spieler9, match\Spieler_9)
SetGadgetText(#Text_spieler10, match\Spieler_10)
SetGadgetText(#Text_spieler11, match\Spieler_11)
SetGadgetText(#Text_Reservespieler1, match\Spieler_Ersatz1)
SetGadgetText(#Text_Reservespieler2,match\Spieler_Ersatz2)
SetGadgetText(#Text_schiedsrichter, match\Schiedsrichter)
DisableGadget(#Button_Laden, disable)
EndProcedure
Procedure Listicon_Anzeige(i) ; blöde lange Zeilen warum kann man das nicht aufteilen ???
AddGadgetItem(#ListIcon_0, i - 1 , match\Spielort + Chr(10) + match\datum + Chr(10) + match\gegner + Chr(10) + match\Ergebnis + Chr(10) + match\Spieler_1 + Chr(10) + match\Spieler_2 + Chr(10) + match\Spieler_3 + Chr(10) + match\Spieler_4 + Chr(10) + match\Spieler_5 + Chr(10) + match\Spieler_6 + Chr(10) + match\Spieler_7 + Chr(10) + match\Spieler_8 + Chr(10) + match\Spieler_9 + Chr(10) + match\Spieler_10 + Chr(10) + match\Spieler_11 + Chr(10) + match\Schiedsrichter + Chr(10) + match\Spieler_Ersatz1 + Chr(10) + match\Spieler_Ersatz2)
EndProcedure
Procedure buttondisablen(ja) ; oder nein eben
DisableGadget(#Button_sehrgut, ja)
DisableGadget(#Button_gut, ja)
DisableGadget(#Button_durchschnittlich, ja)
DisableGadget(#Button_schlecht, ja)
EndProcedure
Procedure CopyStructure(source,dest,size,StructureMap) ; made by Deem2031 super danke !
Protected i, StructureMapOffset,*tmp_s.STRING
StructureMapOffset = 0
For i = 0 To size-1
If PeekL(StructureMap+StructureMapOffset) = i
MOV Ecx, i
MOV Edx, i
ADD Ecx, dest
ADD Edx, source
MOV Edx, dword[Edx]
CALL SYS_FastAllocateStringFree
StructureMapOffset+4
i+3
Else
PokeB(dest+i,PeekB(source+i))
EndIf
Next
EndProcedure
Procedure CopyStructureToStructure(*copySrc, *CopyDest, CopySize)
CopyStructureMap = 0
!MOV dword[v_CopyStructureMap], s_wettkampf ;s_<Structure>
CopyStructure(*copySrc,*CopyDest,CopySize,CopyStructureMap)
EndProcedure
; START !!!!!! ###########################################################
Open_Window_0()
buttondisablen(1)
DisableGadget(#Button_Anzeigensehrgut, 1)
DisableGadget(#Button_Anzeigengut, 1)
DisableGadget(#Button_Anzeigenschlecht, 1)
DisableGadget(#Button_Anzeigendurchschnittlich, 1)
Repeat
Event = WaitWindowEvent()
If Event = #PB_EventGadget
GadgetID = EventGadgetID()
If GadgetID = #Button_Laden
matchdaten_holen ()
matchdaten_anzeigen (1)
buttondisablen(0)
ElseIf GadgetID = #Button_sehrgut
Sehrgut_zaehler = Sehrgut_zaehler + 1
CopyStructureToStructure(@match, @jahresergebnisse_sehrgut(Sehrgut_zaehler), SizeOf(wettkampf))
SetGadgetText(#Text_Zahlsehrgut, Str(Sehrgut_zaehler))
DisableGadget(#Button_Anzeigensehrgut, 0)
buttondisablen(1)
CopyStructureToStructure(@leere, @match, SizeOf(wettkampf))
matchdaten_anzeigen (0)
ElseIf GadgetID = #Button_gut
gut_zaehler = gut_zaehler + 1
CopyStructureToStructure(@match, @jahresergebnisse_gut(gut_zaehler), SizeOf(wettkampf))
SetGadgetText(#Text_Zahlgut, Str(gut_zaehler))
DisableGadget(#Button_Anzeigengut, 0)
buttondisablen(1)
CopyStructureToStructure(@leere, @match, SizeOf(wettkampf))
matchdaten_anzeigen (0)
ElseIf GadgetID = #Button_durchschnittlich
durchschnittlich_zaehler = durchschnittlich_zaehler + 1
CopyStructureToStructure(@match, @jahresergebnisse_durchschnittlich(durchschnittlich_zaehler), SizeOf(wettkampf))
SetGadgetText(#Text_zahldurchschnittlich, Str(durchschnittlich_zaehler))
DisableGadget(#Button_Anzeigendurchschnittlich, 0)
buttondisablen(1)
CopyStructureToStructure(@leere, @match, SizeOf(wettkampf))
matchdaten_anzeigen (0)
ElseIf GadgetID = #Button_schlecht
schlecht_zaehler = schlecht_zaehler + 1
CopyStructureToStructure(@match, @jahresergebnisse_schlecht(schlecht_zaehler), SizeOf(wettkampf))
SetGadgetText(#Text_zahlschlecht, Str(schlecht_zaehler))
DisableGadget(#Button_Anzeigenschlecht, 0)
buttondisablen(1)
CopyStructureToStructure(@leere, @match, SizeOf(wettkampf))
matchdaten_anzeigen (0)
ElseIf GadgetID = #Button_Anzeigensehrgut
ClearGadgetItemList(#ListIcon_0)
For i = 1 To Sehrgut_zaehler
CopyStructureToStructure(@jahresergebnisse_sehrgut(i), @match, SizeOf(wettkampf))
Listicon_Anzeige(i)
Next i
ElseIf GadgetID = #Button_Anzeigengut
ClearGadgetItemList(#ListIcon_0)
For i = 1 To gut_zaehler
CopyStructureToStructure(@jahresergebnisse_gut(i), @match, SizeOf(wettkampf))
Listicon_Anzeige(i)
Next i
ElseIf GadgetID = #Button_Anzeigendurchschnittlich
ClearGadgetItemList(#ListIcon_0)
For i = 1 To durchschnittlich_zaehler
CopyStructureToStructure(@jahresergebnisse_durchschnittlich(i), @match, SizeOf(wettkampf))
CopySrc = @jahresergebnisse_durchschnittlich(i)
Listicon_Anzeige(i)
Next i
ElseIf GadgetID = #Button_Anzeigenschlecht
ClearGadgetItemList(#ListIcon_0)
For i = 1 To schlecht_zaehler
CopyStructureToStructure(@jahresergebnisse_schlecht(i), @match, SizeOf(wettkampf))
Listicon_Anzeige(i)
Next i
ElseIf GadgetID = #Button_loschen
ClearGadgetItemList(#ListIcon_0)
; da gehts dann weiter mit dem Ausdrucken aber da hab ich noch keinen Plan
; ElseIf GadgetID = #Button_drucken
EndIf
EndIf
Until Event = #PB_EventCloseWindow
End
Code: Alles auswählen
CopySrc = @jahresergebnisse_schlecht(i)
CopyDest = @match
CopySize = SizeOf(wettkampf)
CopyStructureMap = 0
!MOV dword[v_CopyStructureMap], s_wettkampf ;s_<Structure>
CopyStructure(CopySrc,CopyDest,CopySize,CopyStructureMap)
Code: Alles auswählen
!MOV dword[v_CopyStructureMap], s_wettkampf ;s_<Structure>
CopyStructure(@jahresergebnisse_schlecht(i),@match,SizeOf(wettkampf),CopyStructureMap)
Code: Alles auswählen
!MOV dword[v_CopyStructureMap], s_wettkampf ;s_<Structure>
Der FlatAssember oder auch FAsm genannt. Link zur Homepage: http://flatassembler.net/Lupo hat geschrieben:Aber welcher ASM wird in PB verwendet ???