WIN/MacOSX - Unterschiede

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
kartmanne
Beiträge: 108
Registriert: 19.03.2015 18:16
Wohnort: Altenstadt
Kontaktdaten:

WIN/MacOSX - Unterschiede

Beitrag von kartmanne »

HI,

da ich inzwischen auch ein MacBook hab liegt's natürlich nahe, mein aktuelles PB-Projekt nicht nur für Windows sondern auch für MacOSX zu bauen. Also hab ich PB5.6 Mac installiert und eine Kopie des win-Projekts unter PB-Mac aufgerufen und kompiliert. Beim Kompilieren wurde etwas nachinstalliert (hab ich leider nicht mitgeschrieben). Ich mußte einige Dinge erst einmal im code inaktiv setzten, da PB-Mac dies nicht verarbeiten konnte (z.B. Hintergrundfarbe ermitteln über WIN-API-Zugriff). Solche Dinge sind mir verständlich und ich muß jetzt eine MAC-taugliche Lösung finden.

Nicht verständlich ist mir, dass (einige) unter Win problemlos behandelte Canvas-Aktionen unter Mac nicht mehr laufen (entweder stoppt der Compiler mit Fehler oder das Resultat ist anders, wie auf win (z.B. Habe ein Fenster, dass versteckt bei Programmstart geöffnet wird und nur ein Canvas enthält. Unter Win ist das Fenster nicht zu sehen - unter Mac ist das Canvas zu sehen, aber der Fensterrahmen nicht.)

Meine Frage ist (wird vermutlich nicht das erste Mal gekommen sein, Suchfunktion hat mir leider immer nur Einzelproblemlösungen gezeigt):

Gibt es eine umfangreichere Darstellung der Unterschiede von PB WIN und PB Mac, außer den Hinweisen in der Doku zu den einzelnen Befehlen?

Mit WIN hatte ich zumindest schon mal einige Programmier-Berührung - mit Mac bisher wirklich nur als Anwender)
CodeBurg
Beiträge: 101
Registriert: 06.06.2011 22:53

Re: WIN/MacOSX - Unterschiede

Beitrag von CodeBurg »

Eines vorweg, ich habe keinen Mac und entsprechend keinerlei Erfahrungen mit macOS. Werde als auf mac-spezifische Fragen idR. nicht antworten können. Aber, wenn ich das hier lese:
kartmanne hat geschrieben:Gibt es eine umfangreichere Darstellung der Unterschiede von PB WIN und PB Mac, außer den Hinweisen in der Doku zu den einzelnen Befehlen?
gehe ich davon aus, dass du damit die Anmerkungen zu jedem einzelnen Befehl meinst, für welche Systeme er verfügbar ist. Entsprechend meine Frage:
Den Überblick über Betriebssystemabhängige Befehle (ist offline Bestandteil der Hilfe) hast du schon gesehen, oder?
Benutzeravatar
Bisonte
Beiträge: 2427
Registriert: 01.04.2007 20:18

Re: WIN/MacOSX - Unterschiede

Beitrag von Bisonte »

Die Liste ist ein Anhaltspunkt, die Hilfe genauso. Bei jeder Funktion steht eigentlich "Unterstützte OS" darunter.

Dass OS spezifische Sachen nicht funktionieren sollte klar sein. Viele dieser API Funktionen haben einige aus der
Community für andere OS "übersetzt" bzw. Alternativen gefunden (Meist wirst du im engl. Forum fündig.)
Shardik ist so ein Kandidat :allright:

Es gibt auch eine LinuxAPI Hilfeseite vom User Oma, die ähnlich aufgebaut ist wie die von RSBasic.

Desweiteren gibt es vielleicht den einen oder anderen Kniff, den man evt. erfragen müsste. Wie z.B. dein Problem
mit dem Canvas und dem versteckten Fenster. Evt. ist an deinem Code dafür etwas "verrissen", wobei dir die
Mac Jünger hier und im engl. Forum bestimmt weiterhelfen können ;)

Das franz. Forum gibts auch noch, aber das liess ich aus, weil ich der Sprache absolut nicht mächtig bin ;)
PureBasic 6.04 LTS (Windows x86/x64) | Windows10 Pro x64 | Asus TUF X570 Gaming Plus | R9 5900X | 64GB RAM | GeForce RTX 3080 TI iChill X4 | HAF XF Evo | build by vannicom​​
Benutzeravatar
kartmanne
Beiträge: 108
Registriert: 19.03.2015 18:16
Wohnort: Altenstadt
Kontaktdaten:

Re: WIN/MacOSX - Unterschiede

Beitrag von kartmanne »

HI,

ja, die Liste hatte ich gefunden und ich weiß auch, dass bei jedem Befehl ggf. dabei steht, wenn's OS-spezifische Abweichungen gibt, und wie die zu handhaben wären. Das kann ich sicher benutzen... erschien mir jedoch erst einmal als 2. Schritt, denn mit fehlen MAC-System- und Programmiergrundkenntnisse. Hätte ich hier eine vielleicht sogar PB-bezogene Anschubhilfe, dann kann ich mit der PB-Hilfe schon leichter umgehen.
Ich möchte versuchen, den code so aufzubauen, dass OS-Spezifisch schlicht fehler- und verhaltensfrei compiliert werden kann.

Jep, ich vermute auch, dass der win-code beim canvas nicht sauber ist und ggf. zur Laufzeit dies einfach toleriert wird. Das hab ich auch bei Rechenoperationen beobachtet, die Teilen durch 0 tolerieren und das Programm einfach weiter läuft... Könnte also sein, dass MAC_spezifisch ggf. die Canvas-Situation eben nicht toleriert wird. Ich such da erstmal selbst und frag dann schon im Forum dazu nach.

Danke für die Tips.
Benutzeravatar
mk-soft
Beiträge: 3695
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: WIN/MacOSX - Unterschiede

Beitrag von mk-soft »

Wenn du mit Threads arbeiten solltest...

Was auf jeden fall nicht geht sind Gadget aus einen Thread zu ändern. SetGadgetText, AddGadgetItem, etc. Dieses gilt auch für Linux.
Lösung findest du hier - http://www.purebasic.fr/english/viewtop ... 12&t=66180
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
CodeBurg
Beiträge: 101
Registriert: 06.06.2011 22:53

Re: WIN/MacOSX - Unterschiede

Beitrag von CodeBurg »

kartmanne hat geschrieben: Ich möchte versuchen, den code so aufzubauen, dass OS-Spezifisch schlicht fehler- und verhaltensfrei compiliert werden kann.
Hast du dir schon mal "CompilerSelect" angesehen? Ich programmiere zwar nur für Windows, da meine Programme eh nur für den Eigengebrauch sind, aber würde ich mal plattformübergreifend arbeiten wollen, wäre das wohl mein erster Ansatzpunkt.

Code: Alles auswählen

Syntax

    CompilerSelect <numerischer Wert>
      CompilerCase <numerischer Wert>
        ...
      [CompilerDefault]
        ...
    CompilerEndSelect

Beschreibung

    Arbeitet wie das reguläre Select : EndSelect, außer dass nur ein numerischer Wert pro Bedingung erlaubt ist. Es teilt dem Compiler mit, welcher Programmcode kompiliert werden soll. Dies ist nützlich beim Erstellen von Multi-OS (auf mehreren Betriebssystemen lauffähigen) Programmen, um einige Programmabschnitte mit OS-spezifischen Funktionen individuell zu gestalten. 

Beispiel

      CompilerSelect #PB_Compiler_OS
        CompilerCase #PB_OS_MacOS
          ; etwas Mac OS X spezifischer Programmcode
        CompilerCase #PB_OS_Linux
          ; etwas Linux spezifischer Programmcode
      CompilerEndSelect
Quelle: http://purearea.net/pb/german/manual/re ... tives.html
Benutzeravatar
kartmanne
Beiträge: 108
Registriert: 19.03.2015 18:16
Wohnort: Altenstadt
Kontaktdaten:

Re: WIN/MacOSX - Unterschiede

Beitrag von kartmanne »

HI,

ich vermeide threads. Bisher habe ich keine Vorteile darin für meine Projektchen erkannt.

Ja genau, Betriebssystem-abhängige code-Gestaltung mit compilerselect hatte ich vor. Solche einfachen Möglichkeiten mag ich an pb :-)
Antworten