Grundfunktionen in PureBasic
Verfasst: 29.10.2005 16:02
Hallo,
in dieser Laberecke möchte ich einmal labern (meinem Ärger Freiraum geben) und evtl. eine Diskussion anstoßen.
PureBasic hat unheimlich viele und teils mächtige Befehle. Das ist gut so, es soll keine Einschränkungen geben. PureBasic wird beworben, fast alle bekannten Basic-Schlüsselwörter zu unterstützen.
Ich habe jedoch zig Stunden zugebracht, um einfachste Dinge zu lösen und wäre ohne dieses Forum schon stecken geblieben. Wie ich in dem Forum lese, geht es anderen auch so (ich meine nicht schwierige Probleme, sondern einfachste Sachen).
Beispiel: Ich kannte Print, PrintAt, PrintTab, PrintSpace, Locate etc. und habe lange probiert, um im OpenWindow() mit Drawtext eine Textausgabe mit darunter liegendem OK-Button hinzubekommen. Erst dieses Forum half mir mit TextGadget. Funktioniert übrigens prima.
Jetzt soll im gleichen OpenWindow() das Fenster gelöscht werden um neue Ausgaben anzuzeigen. Ich suchte seit Stunden einen Befehl wie CLS, CLSWindow o.ä. Nichts. Kam denn der PureBasic-Programmierer in den ganzen Versionen nicht einmal auf die Idee für einen solchen Befehl? Hat denn noch niemand einen solchen Befehl gebraucht und ihm das mitgeteilt? Wenn es einen solchen Befehl geben sollte, warum steht er nicht in der Window-Library? Übrigens ClearScreen funktioniert nicht, nachfolgende ButtonGadget-Abfragen werden übergangen und das Fenster wird geschlossen. Außerdem sollte ClearScreen in der - bei mir grauen - Standardfarbe des Fensters löschen, verlangt aber RGB-Farben, wo ich nun wieder zig Stunden recherchieren müßte, wie diese entsprechend der Standardfarbe des Fensters ermittelt werden können.
Ich fand jetzt FreeGadget. Ich habe es noch nicht probiert. Muss ich zum Fenster löschen jetzt erst alle Gadgets dieses Fensters freigeben? Geht das in einer einfachen Schleife? Oder kann ich über das Fenster ein OpenWindowedScreen() legen und das Fenster dann mit ClearScreen löschen?
Ich wollte ein Unterprogramm als Prozedur schreiben, Vorteil: lokale Variablen. Jedoch verlangt Procedure() mindestens eine Variable übergeben und der Aufruf geht auch nur als Funktion x=name(). So brauche ich es nicht. Schade. Bin nun wieder beim rudimentären Gosub.
Wünschenswert - habe ich allerdings in noch keinem Basic-Dialekt gesehen - wären Prozeduren, die gleichzeitig mehrere Ergebnisse zurückgeben können, ohne dass man diese Ergebnisvariablen gleich als Global freigeben muss.
Ich finde, dass PureBasic wenig Datentypen hat und die Math-Library sieht dürftig aus. Wie genau rechnet PureBasic? Ich hatte früher mal Fraktalbilder programmiert und brauchte für immer feinere Grenzen hohe Genauigkeiten. Könnte das PureBasic?
Ich finde keine Befehle wie Max(mehrere Werte), Min (mehrere Werte) oder überhaupt Statistik-Funktionen.
Andere haben Probleme, dass If Int(3.5)=3.5 wahr ergibt. Sicher, es ist alles erklärbar, alles anders lösbar. Aber warum definiert PureBasic bewährte Sachverhalte neu?
Auch scheint es nicht so einfach, eine Enterabfrage auf ein ButtonGadget zu legen, wird doch aber oft benötigt, oder?
Wo ist das gute alte Inkey$? Jetzt InitKeyboard(), Examine(Keyboard), If KeyboardPushed().
Auch die Hilfe: Goto steht nicht unter Goto, sondern unter Andere (ich nehme kein Goto, dennoch sollte es wie die anderen Befehle gelistet sein), Random, RandomSeed hätte ich zuerst in Math gesucht und nicht in Misc, unter Operatoren steht nicht der Zeichenkettenverknüpfungsoperator usw.
Bei WaitWindowEvent() steht: Wartet auf Fensterereignis und ist WindowEvent() vorzuziehen. Wenn WaitWindowEvent() wartet, warum funktioniert es dann nur in einer Schleife?
Ich finde, hier vertut sich PureBasic Chancen. Ich bin ein Anfänger, habe aber schon auf progr. Taschenrechnern, auf Heimcomputern auch in Assembler und in Lotus 1-2-3 Tabellenkalk. programmiert. Ich kenne Leute, die Basic noch einfacher, idiotensicherer (verzeiht diesen Ausdruck) brauchen.
Ich sehe großes Potenzial in PureBasic, aber momentan kommt es mir unausgereift vor. Für die nächsten Entwicklungsschritte sollten Wünsche der Anfänger analysiert werden (und nicht jeder will ein Spiel programmieren), in den Foren auftretende Standard-Probleme analysiert werden, ein Blick auf andere Basic-, Makro- und Programmiersprachen geworfen werden und die zum Lieferumfang gehörenden Libraries dementsprechend ergänzt werden. Sonst muss jeder viele Fahrräder neu erfinden.
Auch von den Tabellenkalkulationen könnte man sich viele leistungsstarke Finanz-, Statistik- und Diagrammfunktionen abschauen und standardmäßig in PureBasic implementieren. Das sind doch die Dinge, die Privatleute und Kleinstfirmen häufig brauchen.
Was macht denn der Hobby-Programmierer? Seine Finanzen, sein Haushaltsbuch, KFZ-Übersicht, ausgeliehene Dinge, Video-, CD-, DVD-verwaltung, evtl. Lagerbestandsführung, Hobbyverwaltung (z.B. Briefmarken), evtl. MP3/WMA-Playlisten verwalten, Kreuzworträtselhilfen,
einfache Spiele, einfache Simulationen. Wäre es nicht gut, wenn es für die Felder und Listen fertige Eingabestrukturen und für die Ergebnisse mächtige Befehle zur tabellierten und/oder Diagramm-Anzeige gäbe?
Genug gelabert und viel gefordert. Leider kann ich aus Zeitgründen mich hier nicht umfassend und aktiv an Verbesserungen beteiligen. Aber sicher gibt es einige Leute, die das gut können und wollen.
Viel Erfolg.
Rainer Ullmann
in dieser Laberecke möchte ich einmal labern (meinem Ärger Freiraum geben) und evtl. eine Diskussion anstoßen.
PureBasic hat unheimlich viele und teils mächtige Befehle. Das ist gut so, es soll keine Einschränkungen geben. PureBasic wird beworben, fast alle bekannten Basic-Schlüsselwörter zu unterstützen.
Ich habe jedoch zig Stunden zugebracht, um einfachste Dinge zu lösen und wäre ohne dieses Forum schon stecken geblieben. Wie ich in dem Forum lese, geht es anderen auch so (ich meine nicht schwierige Probleme, sondern einfachste Sachen).
Beispiel: Ich kannte Print, PrintAt, PrintTab, PrintSpace, Locate etc. und habe lange probiert, um im OpenWindow() mit Drawtext eine Textausgabe mit darunter liegendem OK-Button hinzubekommen. Erst dieses Forum half mir mit TextGadget. Funktioniert übrigens prima.
Jetzt soll im gleichen OpenWindow() das Fenster gelöscht werden um neue Ausgaben anzuzeigen. Ich suchte seit Stunden einen Befehl wie CLS, CLSWindow o.ä. Nichts. Kam denn der PureBasic-Programmierer in den ganzen Versionen nicht einmal auf die Idee für einen solchen Befehl? Hat denn noch niemand einen solchen Befehl gebraucht und ihm das mitgeteilt? Wenn es einen solchen Befehl geben sollte, warum steht er nicht in der Window-Library? Übrigens ClearScreen funktioniert nicht, nachfolgende ButtonGadget-Abfragen werden übergangen und das Fenster wird geschlossen. Außerdem sollte ClearScreen in der - bei mir grauen - Standardfarbe des Fensters löschen, verlangt aber RGB-Farben, wo ich nun wieder zig Stunden recherchieren müßte, wie diese entsprechend der Standardfarbe des Fensters ermittelt werden können.
Ich fand jetzt FreeGadget. Ich habe es noch nicht probiert. Muss ich zum Fenster löschen jetzt erst alle Gadgets dieses Fensters freigeben? Geht das in einer einfachen Schleife? Oder kann ich über das Fenster ein OpenWindowedScreen() legen und das Fenster dann mit ClearScreen löschen?
Ich wollte ein Unterprogramm als Prozedur schreiben, Vorteil: lokale Variablen. Jedoch verlangt Procedure() mindestens eine Variable übergeben und der Aufruf geht auch nur als Funktion x=name(). So brauche ich es nicht. Schade. Bin nun wieder beim rudimentären Gosub.
Wünschenswert - habe ich allerdings in noch keinem Basic-Dialekt gesehen - wären Prozeduren, die gleichzeitig mehrere Ergebnisse zurückgeben können, ohne dass man diese Ergebnisvariablen gleich als Global freigeben muss.
Ich finde, dass PureBasic wenig Datentypen hat und die Math-Library sieht dürftig aus. Wie genau rechnet PureBasic? Ich hatte früher mal Fraktalbilder programmiert und brauchte für immer feinere Grenzen hohe Genauigkeiten. Könnte das PureBasic?
Ich finde keine Befehle wie Max(mehrere Werte), Min (mehrere Werte) oder überhaupt Statistik-Funktionen.
Andere haben Probleme, dass If Int(3.5)=3.5 wahr ergibt. Sicher, es ist alles erklärbar, alles anders lösbar. Aber warum definiert PureBasic bewährte Sachverhalte neu?
Auch scheint es nicht so einfach, eine Enterabfrage auf ein ButtonGadget zu legen, wird doch aber oft benötigt, oder?
Wo ist das gute alte Inkey$? Jetzt InitKeyboard(), Examine(Keyboard), If KeyboardPushed().
Auch die Hilfe: Goto steht nicht unter Goto, sondern unter Andere (ich nehme kein Goto, dennoch sollte es wie die anderen Befehle gelistet sein), Random, RandomSeed hätte ich zuerst in Math gesucht und nicht in Misc, unter Operatoren steht nicht der Zeichenkettenverknüpfungsoperator usw.
Bei WaitWindowEvent() steht: Wartet auf Fensterereignis und ist WindowEvent() vorzuziehen. Wenn WaitWindowEvent() wartet, warum funktioniert es dann nur in einer Schleife?
Ich finde, hier vertut sich PureBasic Chancen. Ich bin ein Anfänger, habe aber schon auf progr. Taschenrechnern, auf Heimcomputern auch in Assembler und in Lotus 1-2-3 Tabellenkalk. programmiert. Ich kenne Leute, die Basic noch einfacher, idiotensicherer (verzeiht diesen Ausdruck) brauchen.
Ich sehe großes Potenzial in PureBasic, aber momentan kommt es mir unausgereift vor. Für die nächsten Entwicklungsschritte sollten Wünsche der Anfänger analysiert werden (und nicht jeder will ein Spiel programmieren), in den Foren auftretende Standard-Probleme analysiert werden, ein Blick auf andere Basic-, Makro- und Programmiersprachen geworfen werden und die zum Lieferumfang gehörenden Libraries dementsprechend ergänzt werden. Sonst muss jeder viele Fahrräder neu erfinden.
Auch von den Tabellenkalkulationen könnte man sich viele leistungsstarke Finanz-, Statistik- und Diagrammfunktionen abschauen und standardmäßig in PureBasic implementieren. Das sind doch die Dinge, die Privatleute und Kleinstfirmen häufig brauchen.
Was macht denn der Hobby-Programmierer? Seine Finanzen, sein Haushaltsbuch, KFZ-Übersicht, ausgeliehene Dinge, Video-, CD-, DVD-verwaltung, evtl. Lagerbestandsführung, Hobbyverwaltung (z.B. Briefmarken), evtl. MP3/WMA-Playlisten verwalten, Kreuzworträtselhilfen,
einfache Spiele, einfache Simulationen. Wäre es nicht gut, wenn es für die Felder und Listen fertige Eingabestrukturen und für die Ergebnisse mächtige Befehle zur tabellierten und/oder Diagramm-Anzeige gäbe?
Genug gelabert und viel gefordert. Leider kann ich aus Zeitgründen mich hier nicht umfassend und aktiv an Verbesserungen beteiligen. Aber sicher gibt es einige Leute, die das gut können und wollen.
Viel Erfolg.
Rainer Ullmann