Noch-Dummi braucht Hilfe
-
- Beiträge: 6
- Registriert: 28.07.2009 11:24
- Computerausstattung: Windows XP
PB 4.31 Demo (noch) - Wohnort: Ba-Wü
Noch-Dummi braucht Hilfe
Für meine Minifirma gibt es kein vernünftiges Verwaltungsprogramm. Drum hab ich mich naiverweise entschlossen, selbst Eins zu stricken. Meine bisherige Programmiersprache (Profan) läuft nicht mehr und beim Googeln nach einer Neuen bin ich über Purebasic gestolpert und bin total begeistert! (noch.....)
Meine ersten Gehversuche mit der Demoversion 4.3? sind sehr vielversprechend. Ich wollt schon die Vollversion bestellen, habe aber Bedenken, weil es hier fast ausschließlich um Spiele geht.
Zu meinen Fragen:
1. Kann mann in Purbasic umfangreiche, ernsthafte Programme schreiben, mit denen man eine kleine Firma verwalten kann, oder ist diese Sprache eher für Spiele gedacht?
Falls nein : Welche Programmiersprache wäre sinnvoller
2. Welche Datenbank kommt für das Speichern von mehr als 10000 Sätzen in Frage?
3. Gibt es hier jemanden, der mich hierbei unterstützen könnte?
btw....
Beim Erstellen eines Panelgagets wurde dies nicht angezeigt:
Funzt nicht :
Panelgadget(100,0,0,480,300)
addgadgetitem(100,-1,"Allgemein")
Funzt, gibt aber eine Fehlermeldung aus "Panel nicht erstellt" :
If Panelgadget(100,0,0,480,300)
addgadgetitem(100,-1,"Allgemein")
ElseIf Messagerequester("Fehler","Panel nicht erstellt")
EndIf
übrigens: mit ElseIf a=0 funktionierts auch - nur ohne Fehlermeldung
Im Voraus besten Dank für das Nicht-zerrissen-werden....
Meine ersten Gehversuche mit der Demoversion 4.3? sind sehr vielversprechend. Ich wollt schon die Vollversion bestellen, habe aber Bedenken, weil es hier fast ausschließlich um Spiele geht.
Zu meinen Fragen:
1. Kann mann in Purbasic umfangreiche, ernsthafte Programme schreiben, mit denen man eine kleine Firma verwalten kann, oder ist diese Sprache eher für Spiele gedacht?
Falls nein : Welche Programmiersprache wäre sinnvoller
2. Welche Datenbank kommt für das Speichern von mehr als 10000 Sätzen in Frage?
3. Gibt es hier jemanden, der mich hierbei unterstützen könnte?
btw....
Beim Erstellen eines Panelgagets wurde dies nicht angezeigt:
Funzt nicht :
Panelgadget(100,0,0,480,300)
addgadgetitem(100,-1,"Allgemein")
Funzt, gibt aber eine Fehlermeldung aus "Panel nicht erstellt" :
If Panelgadget(100,0,0,480,300)
addgadgetitem(100,-1,"Allgemein")
ElseIf Messagerequester("Fehler","Panel nicht erstellt")
EndIf
übrigens: mit ElseIf a=0 funktionierts auch - nur ohne Fehlermeldung
Im Voraus besten Dank für das Nicht-zerrissen-werden....
Re: Noch-Dummi braucht Hilfe
>>Ich wollt schon die Vollversion bestellen, habe aber Bedenken, weil es hier fast ausschließlich um Spiele geht.
Häh?
Du verwechselst da was mit BlitzBasic.
>1. Kann mann in Purbasic umfangreiche, ernsthafte Programme schreiben, mit denen man eine kleine Firma verwalten kann, oder ist diese Sprache eher für Spiele gedacht?
Natürlich
>2. Welche Datenbank kommt für das Speichern von mehr als 10000 Sätzen in Frage?
Pb unterstütz ODCB - Datenbanken und hat SQLite nativ integriert, sollte locker reichen
Gruß, Alex
Häh?
Du verwechselst da was mit BlitzBasic.
>1. Kann mann in Purbasic umfangreiche, ernsthafte Programme schreiben, mit denen man eine kleine Firma verwalten kann, oder ist diese Sprache eher für Spiele gedacht?
Natürlich
>2. Welche Datenbank kommt für das Speichern von mehr als 10000 Sätzen in Frage?
Pb unterstütz ODCB - Datenbanken und hat SQLite nativ integriert, sollte locker reichen
Ich denke du hast den Sinn oder die Funktion von ElseIf noch nicht verstanden, ließ mal in der Hilfe nach. Das weiteren kann ich jetzt nur mal vermuten das du kein Fenster erstellt hast auf dem du das Panel anzeigen willst.Null hat geschrieben:Beim Erstellen eines Panelgagets wurde dies nicht angezeigt:
Funzt nicht :
Panelgadget(100,0,0,480,300)
addgadgetitem(100,-1,"Allgemein")
Funzt, gibt aber eine Fehlermeldung aus "Panel nicht erstellt" :
If Panelgadget(100,0,0,480,300)
addgadgetitem(100,-1,"Allgemein")
ElseIf Messagerequester("Fehler","Panel nicht erstellt")
EndIf
übrigens: mit ElseIf a=0 funktionierts auch - nur ohne Fehlermeldung
Gruß, Alex
Projekte: IO.pbi, vcpu
Pausierte Projekte: Easy Network Manager, µC Emulator
Aufgegebene Projekte: ECluster

PB 5.1 x64/x86; OS: Win7 x64/Ubuntu 10.x x86
Pausierte Projekte: Easy Network Manager, µC Emulator
Aufgegebene Projekte: ECluster
PB 5.1 x64/x86; OS: Win7 x64/Ubuntu 10.x x86
-
- Beiträge: 6
- Registriert: 28.07.2009 11:24
- Computerausstattung: Windows XP
PB 4.31 Demo (noch) - Wohnort: Ba-Wü
Mein Programmteil
Doch. Ein Fenster hab ich erstellt....
Übrigens hab ich Pb erst letzten Samstag gedownloaded. Hoffe deshalb noch auf "Welpenschutz"

Code-Tags ergänzt - nächstes Mal bitte selber dran denken
- Kaeru fecit
Code: Alles auswählen
;Verwaltungsprogramm für Lohnfertiger
SetCurrentDirectory("G:\FIRMA")
OpenWindow(1,0,0,500,300,fnme$+" - Stammdaten",#PB_Window_ScreenCentered)
PanelGadget(100,10,10,480,200)
If AddGadgetItem(100,-1,"Anschrift")
ElseIf a=0
EndIf
CloseGadgetList()
Delay(3000)
CloseWindow(1)
End
Übrigens hab ich Pb erst letzten Samstag gedownloaded. Hoffe deshalb noch auf "Welpenschutz"

Code-Tags ergänzt - nächstes Mal bitte selber dran denken
- Kaeru fecit
Du schließt das Fenster wieder bevor die Window-Events verarbeitet werden. Da fehlt die Event-Schleife. Sieh dir mal die Beispiele an die im PB - Example Ordner sind:
Code: Alles auswählen
;Verwaltungsprogramm für Lohnfertiger
SetCurrentDirectory("G:\FIRMA")
OpenWindow(1, 0, 0, 500, 300, fnme$ + " - Stammdaten", #PB_Window_ScreenCentered)
PanelGadget(100, 10, 10, 480, 200)
If AddGadgetItem(100, -1, "Anschrift")
ElseIf a = 0
EndIf
CloseGadgetList()
Repeat
Until WaitWindowEvent() = #PB_Event_CloseWindow
End
Projekte: IO.pbi, vcpu
Pausierte Projekte: Easy Network Manager, µC Emulator
Aufgegebene Projekte: ECluster

PB 5.1 x64/x86; OS: Win7 x64/Ubuntu 10.x x86
Pausierte Projekte: Easy Network Manager, µC Emulator
Aufgegebene Projekte: ECluster
PB 5.1 x64/x86; OS: Win7 x64/Ubuntu 10.x x86
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
genau, Events müssen IMMER verarbeitet werden.
und wozu das ElseIf sein soll, versteh ich nicht, hat keinerlei sinnvolle Funktion.
was noch dazu kommt:
* Close-Button auch einbaun
* Nummern von Gadgets und Fenster und anderen Objekten immer bei Null anfangen
* deswegen besser Enumerations verwenden
und wozu das ElseIf sein soll, versteh ich nicht, hat keinerlei sinnvolle Funktion.
was noch dazu kommt:
* Close-Button auch einbaun
* Nummern von Gadgets und Fenster und anderen Objekten immer bei Null anfangen
* deswegen besser Enumerations verwenden
Code: Alles auswählen
fnme$ = "Damage Inc."
; ** Windows **
Enumeration
#Window_Main
EndEnumeration
; ** Gadgets **
Enumeration
#Panel
EndEnumeration
OpenWindow( #Window_Main, 0,0, 500,300, fnme$+" - Stammdaten", #PB_Window_ScreenCentered | #PB_Window_SystemMenu )
PanelGadget( #Panel, 10,10, 480,200)
AddGadgetItem( #Panel , -1,"Anschrift")
Repeat
Event = WaitWindowEvent()
Select Event
Case #PB_Event_CloseWindow
EXIT = 1
EndSelect
Until EXIT
CloseWindow(#Window_Main)
End
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
-
- Beiträge: 6
- Registriert: 28.07.2009 11:24
- Computerausstattung: Windows XP
PB 4.31 Demo (noch) - Wohnort: Ba-Wü
Das erste Problem ist gelöst
Jetzt klappts
(ich weiß nur nicht warum)
Der Tip mit "Enumeration" ist ja genial! Dann muß ich auch nicht mehr beim "Zusammenbau" die Handles überprüfen, ob irgendeines doppelt vergeben wurde. Muß ich gleich ausprobieren! (oder doch erst MySQL/SQLite lernen?)
Vorerst mal herzlichen Dank für die überaus schnelle und freundliche Unterstützung. Bestimmt kommen noch mehr Fragen auf.... Hoffentlich kann ich mich mal revanchieren
Hier übrigens Programmteil 1
Auch noch nicht fertig, der Auswahlteil fehlt noch, aber man kann den beabsichtigten Zweck erkennen.
(ich weiß nur nicht warum)
Code: Alles auswählen
;Verwaltungsprogramm für Lohnfertiger
SetCurrentDirectory("G:\FIRMA")
OpenWindow(1,0,0,700,400,fnme$+" - Stammdaten",#PB_Window_ScreenCentered)
PanelGadget(100,10,10,680,300)
AddGadgetItem(100,-1,"Anschrift")
TextGadget(101,10,70,100,20,"Anrede")
TextGadget(102,10,100,100,20,"Name")
TextGadget(103,10,130,100,20,"Zusatz")
TextGadget(104,10,160,100,20,"Zusatz")
TextGadget(105,10,190,100,20,"Straße/HNr")
TextGadget(106,10,220,100,20,"PLZ/Ort")
TextGadget(107,350, 70,100,20,"Telefon")
TextGadget(108,350,100,100,20,"Telefax")
TextGadget(109,350,130,100,20,"Mailadresse")
TextGadget(110,350,160,100,20,"URL")
ComboBoxGadget(120,120,70,100,20)
AddGadgetItem(120,-1,"Firma")
AddGadgetItem(120,-1,"Herr")
AddGadgetItem(120,-1,"Frau")
StringGadget(121,120,100,160,20,"")
StringGadget(122,120,130,160,20,"")
StringGadget(123,120,160,160,20,"")
StringGadget(124,120,190,160,20,"")
StringGadget(125,120,220, 50,20,"")
StringGadget(126,175,220,100,20,"")
StringGadget(127,470, 70,160,20,"")
StringGadget(128,470,100,160,20,"")
StringGadget(129,470,130,160,20,"")
StringGadget(130,470,160,160,20,"")
CloseGadgetList()
OpenGadgetList(100)
AddGadgetItem(100,-1,"Zahlung")
TextGadget(131,10,70,100,20,"Kreditinstitut")
TextGadget(132,10,100,100,20,"Bankleitzahl")
TextGadget(133,10,130,100,20,"Kontonummer")
TextGadget(134,350, 70,100,20,"Zahlungsziel")
TextGadget(135,350,100,100,20,"Skontotage")
TextGadget(136,350,130,100,20,"Skonto")
TextGadget(137,350,160,100,20,"Kreditlimit")
StringGadget(138,120, 70,150,20,"")
StringGadget(139,120,100,150,20,"")
StringGadget(140,120,130,150,20,"")
StringGadget(141,470, 70,150,20,"")
StringGadget(142,470,100,150,20,"")
StringGadget(143,470,130,150,20,"")
StringGadget(144,470,160,150,20,"")
CloseGadgetList()
ButtonGadget(999,10,340,100,40,"zurück")
Repeat
event = WaitWindowEvent()
auswahl = EventGadget()
Select auswahl
Case 999
;Gadget-Inhalte auslesen
;speichern
auswahl = #PB_Event_CloseWindow
EndSelect
Until auswahl = #PB_Event_CloseWindow
CloseWindow(1)
End
Vorerst mal herzlichen Dank für die überaus schnelle und freundliche Unterstützung. Bestimmt kommen noch mehr Fragen auf.... Hoffentlich kann ich mich mal revanchieren
Hier übrigens Programmteil 1
Auch noch nicht fertig, der Auswahlteil fehlt noch, aber man kann den beabsichtigten Zweck erkennen.
Code: Alles auswählen
;Verwaltungsprogramm für Lohnfertigung
;
SetCurrentDirectory("G:\FIRMA")
ExamineDesktops()
DW = DesktopWidth(0)
DH = DesktopHeight(0)
OpenWindow(0,0,0,dw,dh,fnme$+" - Verwaltungsprogramm - Hauptfenster")
TextGadget (1,10, 10,100,20,"Allgemeines")
ButtonGadget(2,10, 50,100,40,"Firma")
ButtonGadget(3,10,100,100,40,"Mitarbeiter")
ButtonGadget(4,10,150,100,40,"Maschinen")
ButtonGadget(5,10,200,100,40,"Material")
ButtonGadget(6,10,250,100,40,"Adressen")
ButtonGadget(7,10,300,100,40,"")
TextGadget (10,150, 10,100,20,"Einkauf")
ButtonGadget(11,150, 50,100,40,"Anfrage")
ButtonGadget(12,150,100,100,40,"Bestellung")
ButtonGadget(13,150,150,100,40,"Lieferung")
ButtonGadget(14,150,200,100,40,"Eing.Rechnung")
ButtonGadget(15,150,250,100,40,"Zahlung")
TextGadget (20,290, 10,100,20,"Verkauf")
ButtonGadget(21,290, 50,100,40,"Angebot")
ButtonGadget(22,290,100,100,40,"Auftrag")
ButtonGadget(23,290,150,100,40,"Lieferung")
ButtonGadget(24,290,200,100,40,"Rechnung")
ButtonGadget(25,290,250,100,40,"Mahnung")
ButtonGadget(26,290,300,100,40,"Nachkalkulation")
TextGadget (30,430, 10,100,20,"Sonstiges")
ButtonGadget(31,430, 50,100,40,"Offene Posten")
ButtonGadget(32,430,100,100,40,"Erfolgsrechnung")
ButtonGadget(33,430,150,100,40,"Lohnabrechnung")
ButtonGadget(34,430,150,100,40,"Jahresmeldungen")
TextGadget (40,570, 10,100,20,"Extras")
ButtonGadget(41,570, 50,100,40,"Taschenrechner")
ButtonGadget(42,570,100,100,40,"Rechenblatt")
ButtonGadget(43,570,150,100,40,"Briefe")
ButtonGadget(9999,10,400,100,40,"Feierabend")
Repeat
Button = WaitWindowEvent()
auswahl = EventGadget()
Select auswahl
Case 9999 ;Programmende
Messagerequester("Achtung","Programm verlassen -- Alles gespeichert??")
CloseWindow(0)
End
EndSelect
Until auwahl = #PB_Event_CloseWindow
CloseWindow(0)
End
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
also ich würde dir DRINGEND empfehlen, die Enumeration auch zu benutzen, anstatt solche irrsinnigen Nummern wie 9999 zu verwenden.
damit erstellst du nämlich gleichzeitig eine 10000 Einträge große Handle-Tabelle, die dir den Speicher zukleistert.
und in deiner Event-Schleife... die Variable "auswahl" auf Event_Close zu setzen ist unsinnig,
so wie du das dort machst funktioniert der Close-Button des Fensters nicht.
schau dir mal in meinem Beispiel an, wie ich das mit dem Flag EXIT gelöst habe, das ist besser.
das kannst du sowohl bei Event = #PB_Event_CloseWindow setzen, als auch bei Auswahl = #Button_Zurueck.
[edit]
außerdem musst du erst das Event selber checken, und nur wenn es #PB_Event_Gadget ist,
darfst du checken, welches Gadget das Event empfangen hat.
[/edit]
...
und es scheint fast, als wenn du bei jedem Datensatz das Fenster erneut öffnen willst.
verstecke es lieber nur, den Fenstertitel kannst du anpassen.
das wird auf die Dauer wesentlich schneller, schlanker, angenehmer.
damit erstellst du nämlich gleichzeitig eine 10000 Einträge große Handle-Tabelle, die dir den Speicher zukleistert.
und in deiner Event-Schleife... die Variable "auswahl" auf Event_Close zu setzen ist unsinnig,
so wie du das dort machst funktioniert der Close-Button des Fensters nicht.
schau dir mal in meinem Beispiel an, wie ich das mit dem Flag EXIT gelöst habe, das ist besser.
das kannst du sowohl bei Event = #PB_Event_CloseWindow setzen, als auch bei Auswahl = #Button_Zurueck.
[edit]
außerdem musst du erst das Event selber checken, und nur wenn es #PB_Event_Gadget ist,
darfst du checken, welches Gadget das Event empfangen hat.
[/edit]
...
und es scheint fast, als wenn du bei jedem Datensatz das Fenster erneut öffnen willst.
verstecke es lieber nur, den Fenstertitel kannst du anpassen.
das wird auf die Dauer wesentlich schneller, schlanker, angenehmer.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
@NULL,
das verstehe ich nicht???????????
Wie dem auch sei. Erstmal willkommen im Forum.
Bin auch über Profan zu Purebasic gekommen. Allerdings bin ich nicht der Einzige.
User hier haben schon mit Profan geschafft und sind zu PB gewechselt.
Aber jetzt zu deinem Problem.
Ich würde dir raten als Anfänger von Profan kommend und in dieser Situation steckend, folgendes zu tun:
Ändere diese Zeile folgendermaßen um:
in
und lösche diesen Teil heraus:
Nun hole dir dieses Tool:
http://freenet-homepage.de/gnozal/PureFORM.zip
Nun machst du folgendes:
1. Starte Pureform
2. Klicke "Project" an
3. Wähle "Translate from source"
4. Öffne deine PB-Source-Datei
5. Im "Code View"-Fenster den Button "Complete Code" anklicken
6. Projects->Save as Code auswählen
Lade diese erzeugte PB-Datei in die PB-IDE und pflücke sie auseinander.
Du hast hier einen Code komplett mit dem gesamten Eventhandling.
Dann vergleiche das Eventhandling von @Kaeru Gaman:
Dann werde dir noch klar über diese Events:
Wenn du das gemacht hast, dann hast du schon viel gelernt.
das verstehe ich nicht???????????
Dabei ist erst ein Update herausgekommen.Meine bisherige Programmiersprache (Profan) läuft nicht mehr
Wie dem auch sei. Erstmal willkommen im Forum.
Bin auch über Profan zu Purebasic gekommen. Allerdings bin ich nicht der Einzige.
User hier haben schon mit Profan geschafft und sind zu PB gewechselt.
Aber jetzt zu deinem Problem.
Ich würde dir raten als Anfänger von Profan kommend und in dieser Situation steckend, folgendes zu tun:
Ändere diese Zeile folgendermaßen um:
Code: Alles auswählen
OpenWindow(0,0,0,dw,dh,fnme$+" - Verwaltungsprogramm - Hauptfenster")
Code: Alles auswählen
OpenWindow(0,0,0,900,800," - Verwaltungsprogramm - Hauptfenster")
Code: Alles auswählen
Repeat
Button = WaitWindowEvent()
auswahl = EventGadget()
Select auswahl
Case 9999 ;Programmende
Messagerequester("Achtung","Programm verlassen -- Alles gespeichert??")
CloseWindow(0)
End
EndSelect
Until auwahl = #PB_Event_CloseWindow
CloseWindow(0)
End
http://freenet-homepage.de/gnozal/PureFORM.zip
Nun machst du folgendes:
1. Starte Pureform
2. Klicke "Project" an
3. Wähle "Translate from source"
4. Öffne deine PB-Source-Datei
5. Im "Code View"-Fenster den Button "Complete Code" anklicken
6. Projects->Save as Code auswählen
Lade diese erzeugte PB-Datei in die PB-IDE und pflücke sie auseinander.
Du hast hier einen Code komplett mit dem gesamten Eventhandling.
Dann vergleiche das Eventhandling von @Kaeru Gaman:
Code: Alles auswählen
Repeat
Event = WaitWindowEvent()
Select Event
Case #PB_Event_CloseWindow
EXIT = 1
EndSelect
Until EXIT
CloseWindow(#Window_Main)
End
Code: Alles auswählen
Event = WaitWindowEvent() ; This line waits until an event is received from Windows
WindowID = EventWindow() ; The Window where the event is generated, can be used in the gadget procedures
GadgetID = EventGadget() ; Is it a gadget event?
EventType = EventType() ; The event type
PB5 / Spiderbasic / WB14 / Win7 / Win8.1 / Win10 / Debian 9
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
tool oder nicht ist ja jedem selber überlassen...
ich hab das minimalsnippet noch mal ergänzt um die Abfrage des Buttons:
ich hab das minimalsnippet noch mal ergänzt um die Abfrage des Buttons:
Code: Alles auswählen
ButtonGadget(#Button_Exit,10,400,100,40,"Feierabend")
; **
; ** Main Loop
; **
Repeat
Event = WaitWindowEvent()
EvGad = EventGadget()
Select Event
Case #PB_Event_Gadget
; **
; ** All Gadgets
; **
Select EvGad
Case #Button_Exit
EXIT = 1
EndSelect
; **
; ** Other Events
; **
Case #PB_Event_CloseWindow
EXIT = 1
EndSelect
; **
; ** End Of Main Loop
; **
Until EXIT
CloseWindow(#Window_Main)
End
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.