AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Windows Messages in FMX ?!

Ein Thema von arnold mueller · begonnen am 11. Sep 2011 · letzter Beitrag vom 26. Sep 2011
Antwort Antwort
Seite 2 von 3     12 3      
Robotiker
(Gast)

n/a Beiträge
 
#11

AW: Windows Messages in FMX ?!

  Alt 12. Sep 2011, 10:58
Mit dem Austausch der Oberfläche könnte ich leben, da sich die Geschäftslogik nicht in den Formularen befindet. Wenn die Geschäftslogik aber ebenfalls neu geschrieben werden müsste, wird das Vorhaben zunehmend uninteressant.
In diesem Punkt hat sich bei dem neuen Crossplatform-Ansatz nichts zu den Vorläufern Kylix und C++ Builder X geändert. Eigentlich ist es ein Problem aller Crossplatform-Ansätze.

VCL-Programme sind nun mal eng mit der Win32-Welt verknüfpt: Assembler Code, Windows Messages, Dateisystem, Druckeransteuerung, WinApi, man sieht ja was da jetzt alles gefunden wird.

Eine existierende VCL-Anwendung quasi Top-Down in eine Crossplattform-Anwendung umzubauen hat damals schon nicht gut funktioniert. Der Bottom-Up Ansatz erstmal eine portable Geschäftslogik, z.B. in Standard C++, aufzubauen und dann eine portable Oberfläche drüber zu legen, war definitiv der schmerzfreiere.

Das ist aber nicht der übliche Weg, wie Delphi Programmierer bisher ihre Programme aufgebaut haben. Ich denke mal der produktive Einsatz von FireMonkey wird einige Änderungen im Entwicklungsprozess erforden. Vom Gefühl her, sehe ich da den C++ Builder gegenüber Delphi im Vorteil, da C++ auf den anderen Plattformen wesentlich präsenter ist, als das bischen Free Pascal.

Grüße

Robotiker
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#12

AW: Windows Messages in FMX ?!

  Alt 12. Sep 2011, 11:11
Aber für Delphi gibt es dann ja Compiler für die Plattform bzw. wird es geben
Markus Kinzler
  Mit Zitat antworten Zitat
Robotiker
(Gast)

n/a Beiträge
 
#13

AW: Windows Messages in FMX ?!

  Alt 12. Sep 2011, 11:24
Aber für Delphi gibt es dann ja Compiler für die Plattform bzw. wird es geben
Ich meine eigentlich eher, dass es mehr vorhandenen Code gibt, um die genannten Probleme zu lösen.
z.B. sowas
http://pocoproject.org/features.html

Delphi hat erstmal auf jeder neuen Plattform nur die RTL und Firemonkey, der Rest muss erstmal wachsen. Und dieses Wachsen braucht ein gewisses "Moment", das jetzt hoffentlich wieder vorhanden ist. Bei Kylix war es eine Weile da, dann ist es verebbt ...

Geändert von Robotiker (12. Sep 2011 um 11:29 Uhr)
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#14

AW: Windows Messages in FMX ?!

  Alt 12. Sep 2011, 11:49
Wie funktioniert denn so generell Multithreading auf OSX? Mit der "Normalwerdung" von Multicores ist das imho um so mehr ein wichtiges Thema. Ich schreibe derzeit fas kein Programm, dass nicht an etlichen Stellen mit mehreren Threads Dinge tut, und wo die Sync extensiv via Messages läuft. Ich wüsste derzeit auch spontan keine echte Alternative, ohne ein vom Compiler bereit gestelltes Threading-Framework, dass solche Mechaniken "magisch" bereit stellt, und je nach Plattform implementiert. Das ginge aber wohl auch nur, wenn Multithreading sich auf allen Zielplattformen in irgendeiner Weise systematisch vereinheitlichen ließen, d.h. nicht jeweils komplett etwas anderes ist. (Wie war das? Unter Linux musste man forken, den Threadcode laden und manuell den Fork PC auf die Adresse schubsen? Das wäre ja schon recht weit weg von dem, wie Windows Threads behandelt...)
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#15

AW: Windows Messages in FMX ?!

  Alt 12. Sep 2011, 12:00
Bleibt bitte beim Thema. Es geht darum was man als Ersatz für Nachrichten unter Windows bei OSX nimmt. Und es geht nicht um Multithreading oder welche Vor- und Nachteile das FireMonkey Framework hat und warum man es nutzt.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Robotiker
(Gast)

n/a Beiträge
 
#16

AW: Windows Messages in FMX ?!

  Alt 12. Sep 2011, 12:01
Wie funktioniert denn so generell Multithreading auf OSX?
In der XE2 Hilfe gibt es schon beim Beispiel zur C++ Konsolenanwendung einen Thread. Offensichtlich Posix-Threads, ganz ähnlich wie in Linux.

Ich wüsste derzeit auch spontan keine echte Alternative, ohne ein vom Compiler bereit gestelltes Threading-Framework, dass solche Mechaniken "magisch" bereit stellt, und je nach Plattform implementiert.
Da triffst du den Nagel auf den Kopf. Im C++ Builder sind Sachen wie boost::threading, boost::filesystem usw. vorhanden. Alternativen gibt es z.B. mit dem oben verlinkten Poco.

Bei Delphi stellt sich mir die Frage, will Emba das alles selber schreiben (in der RTL ?), soll man sich bei Free Pascal bedienen (wie machen die das), oder entwickelt die Community das ?

Tut mir leid, wenn ich euch etwas mit meinen Ausführungen zum C++ Builder nerve, aber die gleiche Thematik hat sich dort ja vor sieben Jahren auch gestellt ...

Bleibt bitte beim Thema. Es geht darum was man als Ersatz für Nachrichten unter Windows bei OSX nimmt. Und es geht nicht um Multithreading
Der Threadersteller nutzt doch bisher Windows-Messages zur Threadkommunikation. Und wenn man dafür einen portablen Ersatz sucht, kann man bei den Threads gleich weiter machen.

Geändert von Robotiker (12. Sep 2011 um 12:06 Uhr)
  Mit Zitat antworten Zitat
arnold mueller

Registriert seit: 27. Jul 2005
129 Beiträge
 
#17

AW: Windows Messages in FMX ?!

  Alt 12. Sep 2011, 15:39
Der Threadersteller nutzt doch bisher Windows-Messages zur Threadkommunikation. Und wenn man dafür einen portablen Ersatz sucht, kann man bei den Threads gleich weiter machen.
Nein es geht nicht primär um Threads hier, ich habe sie lediglich als Beispiel gebracht. Es ist mir klar das man die Synchronisation von Threads auch anders implementieren kann. TThread existiert auch unter Firemonkey (denke ich, ich habe bisher nur mit der Demo gespielt).

Wenn man auf das Hinzufügen von USB-Sticks reagieren will, wüsste ich gar nicht wie man das plattformübergreifend gestalten kann. Klar in der Windows-Welt mit WM_DEVICE_CHANGE. Aber unter OSX?
  Mit Zitat antworten Zitat
Robotiker
(Gast)

n/a Beiträge
 
#18

AW: Windows Messages in FMX ?!

  Alt 12. Sep 2011, 16:03
TThread existiert auch unter Firemonkey (denke ich, ich habe bisher nur mit der Demo gespielt).
TThread ist ja Teil der RTL und dafür heißt es in der Doku:

Zitat:
The RAD Studio run-time library (RTL) has been modified so that in most cases you can use the same RTL calls in all of your cross-platform applications (native Win32, Win64, and OS X applications).
Allerdings findet man wenig dazu, wo da die "most cases" aufhören.
  Mit Zitat antworten Zitat
Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#19

AW: Windows Messages in FMX ?!

  Alt 12. Sep 2011, 17:10
nn
Wenn man auf das Hinzufügen von USB-Sticks reagieren will, wüsste ich gar nicht wie man das plattformübergreifend gestalten kann. Klar in der Windows-Welt mit WM_DEVICE_CHANGE. Aber unter OSX?
Das musst du dann abstrahieren.
Du hättest dann etwas, in das du Handler für diesen Event registrieren kannst. Wie der Event gefeuert wird, ist dir dann egal.
Ist sicher nicht was du hören willst, aber Embarcadero wird sicher keine RTL vom Umfang des .Net/Mono Frameworks bauen, um alle möglichen Eventualitäten zu kapseln.
solche Stellen im Code zu suchen und mit Abstraktionen zu verpacken ist generell eine gute Idee. Denn dann kannst du noch anderen Dinge tun, bevor der Event ausgelöst wird, oder danach. Was ansonsten irgendwo untergemoddert werden müsste.

Um beim Beispiel des Threadings zu bleiben: In OSX gibt es dafür Grand Central Dispatch. Und dafür gibt es anscheinend auch einen Windows-Port.
Das ist nicht direkt vergleichbar mit dem alten Threadpool, den schon unsere Großväter im Krieg benutzt haben.
GCD ist mehr eine Version der .Net Task parallel Library für native Code. D.h. du sagst was alles getan werden muss, und was vor wem getan werden muss. Und GCD kümmert sich darum, dass es möglichst zackig auf so vielen Kernen wie möglich passiert.
Robert Giesecke
I’m a great believer in “Occam’s Razor,” the principle which says:
“If you say something complicated, I’ll slit your throat.”
  Mit Zitat antworten Zitat
Robotiker
(Gast)

n/a Beiträge
 
#20

AW: Windows Messages in FMX ?!

  Alt 12. Sep 2011, 20:45
Ok, ich habe mich gerade mal etwas mit den Sourcen beschäftigt.

TThread z.B. ist offenbar bereits für Windows, MacOS und Linux implementiert. Dabei unterscheiden sich die Member, die die Klasse unter den einzelnen Plattformen hat, teilweise in Typ oder Name.

Die Hilfe beschränkt sich bei den Stichproben, die ich gemacht habe, leider immer meist auf Aussagen wie
Zitat:
Unter Win32 ist Priority ein TThread Priority-Wert. Die möglichen Werte sind in der Tabelle im Thema “Thread initialisieren” aufgeführt
das es unter MacOS und Linux ein Integer ist, muss man in den Quellen nachlesen:
Code:
{$IFDEF MSWINDOWS}
    function GetPriority: TThreadPriority; platform;
    procedure SetPriority(Value: TThreadPriority); platform;
{$ENDIF}
{$IFDEF POSIX}
    // ** Priority is an Integer value in Linux
    function GetPriority: Integer; platform;
    procedure SetPriority(Value: Integer); platform;
    function GetPolicy: Integer; platform;
    procedure SetPolicy(Value: Integer); platform;
{$ENDIF}
Offensichtlich hinkt die Hilfe der Implementierung noch hinterher, da ist noch etwas Forschung angesagt, was überall geht, was teilweise anders geht und was man selber machen muss.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:14 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz