Crossplattform

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
bembulak
Beiträge: 228
Registriert: 13.12.2005 16:34
Wohnort: Österreich

Beitrag von bembulak »

hmm.. was mir da oben fehlt, ist die Aussage :"Ich hab es gemacht und bin gescheitert" ebenso wie die Aussage "Ich habs gemacht und es geht"
Da hast du wohl recht. Aber ich kann dich beruhigen. Von den kleinen Tools, die ich bisher öffentlich gemacht habe, waren alle crossplattform aus ein und demselben Code compilierbar. ;)
Nur sind das Kleinigkeiten gewesen. :(
http://www.purearea.net/pb/showcase/show.php?id=440
Es wird Zeit das mal jemand eine dickere PB-Lösung crossplatförmig angeht um Pb mal ein wenig zu kitzeln.
Zustimm!
:allright:

Mittels SQL + ODBC sollte das eigentlich auch kein so großes Problem sein. Dass diese Lösungen auf W32 und Linux laufen, wissen wir.
Benutzeravatar
Xaby
Beiträge: 2144
Registriert: 12.11.2005 11:29
Wohnort: Berlin + Zehdenick
Kontaktdaten:

Beitrag von Xaby »

So schlimm ist PureBasic gar nicht :D

Da ich bis jetzt noch zu faul war mir eine englische API-Hilfe für Windows durchzulesen, hab ich versucht meine Probleme mit Ohne-API zu lösen.

Es hängt immer ganz von ab, was du brauchst. Und wenn es eine Callcenter-Lösung ist, dann brauchst du keine transparenten Fenster, keine verschiebbaren Tabs, keine größer werdenden ListIcons, keine DragNdrop-Funktionen ...

Ich denke bis zu einem gewissen Punkt ist es möglich crossplattformfähigen Code zu schreiben.

Aus Erfahrung mit JAVA muss ich sagen, das JAVA weniger Plattformübergreifend ist als PureBasic. Wenn ich schon in JAVA-Foren und auf JAVA-Hilfe-Seiten lese:

Dieser Code läuft nur mit der VirtualMachine auf WindowsSytemen und auch nur in der und der Version ...

Nee Danke.

WebAnwendung und AJAX.
Muss ich sagen, ist eigentlich nicht schlecht. Wenn die Webseite angezeigt wird, läuft die Anwendung. Was FireFox unter Windows darstellt, stellt er genauso unter Linux da. (Ausnahmen können höchstens installierte Schriften sein)

Shortcuts und Cookies hast du nur. Die Shortcuts überlagern die des Browsers, was mich bei einigen Webseiten nervt. Aber wer eure Datenbank nutzt, soll ja nicht im Internet serfen :shock:

Cookies. Du kannst mit JAVA-Script nicht speichern. Nur kleine Mengen an Informationen in Cookies ablegen. Sind diese deaktiviert oder werden gelöscht, aus die Maus.

Ist aber nicht weiter wild. Nutzer-Profile kannst du ja mit PHP auf dem Server ablegen.

Ansonsten kannst du ja die Sache mit COMPILER-IFs umgehen.
Wenn du also für Windows-Versionen API nutzen möchtest, machst du es und alternativ dazu gibt es unter LINUX oder MACOS dann nur PureBasic-Gadgets ohne Sonderfunktionen oder halt LinuxAPI-Code, MacOS-API-Code.

Ich denke, das sollte aber erst der zweite Schritt sein, wenn die Datenbankanbindung und das Anzeigen von Daten zum Beispiel in einem ListIcon-Gadget steht ...

>>>> Das ist kein Bug, das ist ein Feature :mrgreen:
Kinder an die Macht http://scratch.mit.edu/
Emily
Beiträge: 96
Registriert: 25.01.2008 13:14

Beitrag von Emily »

Du brauchst aber mit ziemlicher Sicherheit Listensortierungen usw. Da hört es bei PureBasic schon auf, bei Java nicht. Deine Perspektive auf Java Anwendungen ist nicht aus Sicht von ernsthaften Anwendungen (die brauchen nämlich tatsächlich keine transparenten Fenster), ernsthafte Anwendungen lassen sich in Java nämlich hervorragend Plattformunabhängig entwickeln, wie unter anderem der Sybase Datenbankmanager, die Oracle Datenbank tools, das Verwaltungssystem vieler deutscher Polizeistationen, P2P clients und viele andere Anwendungen eindrucksvoll bewiesen haben.

Auch weniger ernsthafte Anwendungen wie Spiele sind dank der jMonkeyEngine, JoGL und JavaSDL problemlos Plattformunabhängig zu machen. Das einzige was man in Java nicht Plattformunabhängig machen kann sind die vielen nutzlosen Tinneffunbktionen die grade bei unerfahrenen Programmierern offenbar einen sehr hohen Stellenwert genießen, der Funktion von Programmen aber in der regel aber abträglich sind.

Das ganze Programm innerhalb von CompilerIfs dreimal zu schreiben ist jedenfalls keine sehr effiziente Strategie. Dann würde ich eher zu C und Gtk greifen und damit leben, dass sich das Programm unter Windows und Mac nicht nativ anfühlt.
Benutzeravatar
mk-soft
Beiträge: 3855
Registriert: 24.11.2004 13:12
Wohnort: Germany

Beitrag von mk-soft »

Bin auch der Meinung das Purebasic eine gute Lösung für OS Übergreifende entwickung ist. Es geht ja um eine reelle Anwendung wo auf schnick schnack verzichtet wird. Und das mit den sortierten Listen sollte auch kein Problem sein. Die Datenbankabfrage kann man ja so gestalten da diese gleich sortierte ergebnisse liefert.

Alle Oberflächen nur mit Purebasicbefehlen erstellen.
Bei Multi Entwickerprojekte sollte auf jeden fall vorher die Übergabeschnittstellen von den Daten der einzelnen Module definiert werden. Am besten mit Strukturen arbeiten.
Arbeitsteilung erzeugt naturlich auch etwas mehrarbeit.
Die Fenster und Dialoge in einzelnen Common Dateien erstellen und die dann über ein Tool zu einer gemeinsamen Commondatei zusammenführen. Das Tool dafür im Vorfeld erstellen oder ein fertiges nehmen (habe sowas fertig)

Bei derartigen Projekten ist auch ein Qualitätsmanagment erforderlich wo alle Richtlinen und Entwickungsschritte angelegt werden.

FF :wink:

Viel erfolg bei Euern Projekt
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
Franky
Beiträge: 1132
Registriert: 29.08.2004 16:31
Wohnort: Münsterland
Kontaktdaten:

Beitrag von Franky »

Wie schon gesagt wurde, drauf achten, soweit möglich keine API zu benutzen. Das Problem kenne ich in so fern, als dass ich einst verzweifelt versuchte, SetDIBits für Linux zu finden, um Pure GraphicShop dort hin zu portieren. Mittlerweile würd ich das zwar über DrawingBuffer() machen mit Copymemory oder direktzugriff, aber auch da wär ich unter Linux eher vorsichtig, da ich die Verwaltung dort nicht kenne.


Auf externe Userlibs verzichten, da
1.)Plattformunabhängigkeit nicht garantiert ist
2.)Bei Fehlern nicht immer klar ist, wer der Schuldige ist

Inwiefern folgendes sich noch rentiert, müsst ihr selbst sehen, aber:

Fangt mit PB an, wie Bobobo schon sagte.
Solltet ihr an einer STelle wirklich daran hängen, eine Sache partout nicht platformunabhängig hin zu bekommen, Greift auf ein Andere Sprache zurück, löst das Problem damit und bindet die Lösung als UserLib in PB ein.


Achja, und wenn ihr euch dafür entscheidet, wäre es schön, von dir mal hier einen Kleinen Bericht zu hören, wie es verlaufen ist ;)


Edit:
Zum Schluss noch ein paar Links:

Eine Liste "Was geht auf Welchem OS" von Freak


Zudem mal ein Aufruf an alle, die das hier lesen:
Wenn ich mich richtig erinnere, gab es im PB.CM - Magazin, in der leider einzigen Ausgabe glaub ich einen Artikel zum Thema. Leider kann ich die Datei auf meinem Rechner nich mehr finden und PB-CM.net is schon länger Offline. Wenn dem So ist und es diesen Artikel gab, wäre es vielleicht schön, ihn mal für den Threadersteller hoch zu laden.

Edit2: (es hört nicht auf mit den Edits)

@Emily, ich versteh deine Probleme bezüglich ListenSortierung nicht ganz.

Einen Klick auf den "SortierButton" sollte man sowohl über Linux als auch über Windows abfangen können, wenn auch die Konstanten, die zurück gegeben werden unterschiedlich sind.

Und das Sortieren kannst du gut über eine LinkedList realisieren. Ich persönlich nutze ListIconGadgets und Co nur zur Ausgabe, nicht zur Verwaltung von Einträgen. Über Effizients lässt sich streiten, ein Speicher-Mehrverbrauch mag auch gegeben sein, aber:

1.)Kann ich die einzelnen Zeilen in einer Structure aufteilen, sodass ich schnelleren zugriff auf die einzelnen Spalten habe

2.)Kann ich das Sortieren selbst steuern, das Durchsuchen geht schneller usw...

3.)Ist der Speicher-Mehrverbrauch wichtig? Heutige Rechner haben ram ab 512MB aufwärts, das heißt, habe ich eine Hauptanwendung (die Taskuhr mit Speicherverbrauch von 60MB wär doch etwas übertrieben ;))
darf diese ruhig etwas (!!!!) mehr speicher verbrauchen, wenn es der Geschwindigkeit dient. Und ma bedenke, wie groß der Mehrverbrauch wäre. Stellen wir uns Vor: 20 000 Zeilen, 10 Spalten, in jedem Kästchen 50 Buchstaben
Macht an Daten:

20 000*10*51= ~ 10MB

Hätte man das alles zusätzlich in einer LinkedList, läge folgendes Vor:

20 000*(4+4+10*(4+51))=11 160 000Byte=~10 MB

MehrVerbrauch

Klingt an sich erstmal viel, aber man Bedenke die angegebenen Daten. Wer hat schon 20.000 Zeilen in einem ListIconGadget. Und Wenn er sie hat, muss er sie doch schnell verwalten können, oder seh ich das falsch?
Falsch zugeordnetes Zitat des Tages: "O'zapft is" - Edward Snowden :)
Antworten