Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Der Kern ist die Matrix. Sie enthält alle Eigenschaften der Objekte.
Peter, haben Sie irgendwelche Erfahrungen und Beispiele für das Schreiben von GUI nicht nur in der aktuellen Version?
Sie lehnen andere Paradigmen vollständig ab, behaupten aber, dass Ihr Modell das beste für die GUI-Implementierung ist. Das ist eine sehr kontroverse Behauptung.
Erstellen Sie einen Indikator, der die Neigungswinkel von gezeichneten Linien, ihre Schnittpunkte und die Proportionen von Ellipsen korrigiert. Während die Ankerpunkte in der Zukunft gesetzt werden
nach zwei Wochenenden und einem blutigen Indie-Tag...
PS/ Ich habe das Gefühl, dass die Leute, die die Schnittstellen zeichnen, überhaupt nicht am Handel beteiligt sind.
Erstellen Sie einen Indikator, der die Neigungswinkel der gezeichneten Linien, ihre Schnittpunkte und die Proportionen der Ellipsen korrigiert. Mit den in der Zukunft gesetzten Ankerpunkten
nach zwei Wochenenden und einem blutigen Indie-Tag...
PS/ man hat das Gefühl, dass die Leute, die die Schnittstellen zeichnen, überhaupt nichts mit dem Handel zu tun haben
Max, ich wage zu behaupten, dass dies in der Hälfte der Fälle der Fall ist. Der Händler muss kein Programmierer sein und der Programmierer muss kein Händler sein.
Ich wage zu behaupten, dass Peter mit nichts anderem als mql programmiert. Alle modernen Versionen von Sprachen erfordern Kenntnisse in der Arbeit mit Klassen: Java, Kotlin, Sharp, Python, C++ und so weiter. Sogar 1C hat einen Anschein von Klassen in Form von festen Objekttypen. Aber das ist nur ein kleiner Exkurs.
Aus meiner Sicht sollte das System der Schnittstellenbildung folgendermaßen aussehen:
Das heißt, die Erstellung von Schnittstellen sollte deklarativ sein. Ich kann mir nicht einmal vorstellen, wie ein anderer Programmierer eine Beschreibung der Eigenschaften eines Steuerelements hinzufügen wird, das sich auf indexes..... bezieht.
Ich bin mir sicher, dass dies selbst für einen durchschnittlichen Programmierer rätselhaft ist, ganz zu schweigen von einem Anfänger.
Ich wage zu behaupten, dass Peter mit nichts anderem als mql programmiert. Alle modernen Versionen von Sprachen erfordern Kenntnisse in der Arbeit mit Klassen: Java, Kotlin, Sharp, Python, C++ und so weiter. Sogar 1C hat einen Anschein von Klassen in Form von festen Objekttypen. Aber das ist nur ein kleiner Exkurs.
Aus meiner Sicht sollte das System der Schnittstellenbildung folgendermaßen aussehen:
Das heißt, die Erstellung von Schnittstellen sollte deklarativ sein. Ich kann mir nicht einmal vorstellen, wie ein anderer Programmierer eine Beschreibung der Eigenschaften auf der Tafel hinzufügen wird , die sich auf die Indizes bezieht.....
Ich bin sicher, dass dies selbst für einen durchschnittlichen Programmierer rätselhaft ist, ganz zu schweigen von einem Anfänger.
Wenn viele Elemente und/oder Eigenschaften von einem Index abhängen, ist das kein Problem, und umgekehrt ist es schwer, ein Durcheinander zu schreiben, wenn man sich auf jedes einzelne Element bezieht.
Eine Matrix besteht aus verschachtelten Schleifen, und verschachtelte Schleifen sind Zeit. Ich bin nicht sarkastisch, ich argumentiere nur logisch.
1. Peter, Sie erhalten folgendes: Der Kern besteht aus einer globalen Matrix von Elementeigenschaften, einer globalen Matrix von Elementwerten, einer globalen Matrix von Abhängigkeiten, einer globalen Matrix von Bildern...
2. Wenn Sie weitere Eigenschaften hinzufügen müssen, wird die Dimensionalität der Matrizen erhöht.
3. Der Zugriff auf die Eigenschaften erfolgt ausschließlich über Indizes, da die Zellen keine Namen haben.
Zumindest auf Feldnamen kann über die Struktur zugegriffen werden.
Peter, du... riesig...
Ich, zum Beispiel, sehe das so (vereinfacht):
4. Eine "Klasse" ist de facto eine bestimmte Zeichenfolge in Ihrem globalen Array, nur mit einem "menschlicheren" Gesicht. Klassen sind so konzipiert, dass sie ihre eigenen Datenobjekte mit einer Reihe von verständlichen Eigenschaften erstellen, auf die nicht über einen Index, sondern über einen Namen zugegriffen werden kann. Eine Klasse ist lediglich ein universeller Typkonstruktor.
Lassen Sie uns also ein einfaches Steuerelement erstellen, das die häufigsten Eigenschaften enthält, die fast jedes Steuerelement hat.
Sie können darauf aufbauend spezialisierte Objekte erstellen:
Das heißt, jeder nachfolgende Kontrolltyp ergänzt einfach den Basistyp um die erforderlichen Eigenschaften.
Und da, wie ich bereits geschrieben habe, die grundlegenden Eigenschaften im Basissteuerelement gespeichert sind, erfolgt die Traversierung des Cursors im Steuerelement durch die Überprüfung eines Datentyps: CControl. Nachdem das Programm das gewünschte Objekt gefunden hat, hat es sofort Zugriff auf die Eigenschaften dieses Objekts, da sich der Programmpunkt bereits im Objekt selbst befindet, genau wie in Ihrer Schleife das Programm auf der gewünschten Array-Zeile steht.
1. Der Kern ist eine globale Matrix. Zwei Dimensionen. Der Kern wird durch eine spezielle Funktion erstellt, die eine Datei liest, in der die Auszeichnungssprache angibt, welche Fenster und Elemente erstellt werden müssen.
Es ist überhaupt nicht kompliziert, das ist das Schöne und die Stärke von Klassen. Jede weitere baut ihre Funktionalität auf der Grundlage der Funktionalität des ursprünglichen Objekts auf. Infolgedessen sind alle grundlegenden Funktionen (Fokus, Klicks, außerhalb des Elements, Drag & Drop, Zeichnen) auf der Basis von Basisobjekten implementiert. Weitere Entwicklungen und Änderungen, die Entwicklung neuer Steuerelemente - all dies wird die Grundfunktionalität nicht beeinträchtigen, da sie auf der Ebene Ihrer Sprache erstellt wird: der "Kern" der Bibliothek. In diesem Fall haben die Objekte genau die Datentypen, die für eine bestimmte Eigenschaft erforderlich sind.
"Der Kern wird mit einer speziellen Funktion aufgebaut, die eine Datei liest, in der in der Auszeichnungssprache geschrieben ist, welche Fenster und Elemente erstellt werden müssen." - das ist einfach nur blechern. Sie haben also eine Matrix, die alle Eigenschaften speichert, und Sie haben auch eine Markup-Datei, die genau angibt, wie die Matrix mit den Eigenschaften gelesen werden soll..."Indizes werden über Defines benannt" - jeder Index ist fest mit einem Define verdrahtet. Das zufällige Einfügen eines zusätzlichen Feldes hat eine Verschiebung der Eigenschaften zur Folge. "Wenn die Anzahl der Objekteigenschaften zunimmt, wird die Matrix breiter" - das meinte ich mit Dimensionalität (mein Fehler, ich habe den Begriff falsch verwendet). Wenn Sie Ihr Datenobjekt als Klasse erstellen, vermeiden Sie all diese Komplikationen. Und das ist eine echte Komplexität, die nicht wirklich nötig ist. Aber wir wissen, wie wir uns selbst Komplikationen schaffen können, um sie später erfolgreich zu überwinden.
Außerdem müssen Sie keine hierarchischen Klassen erstellen und sie auch nicht verwenden. Es ist jedoch sinnvoll, Strukturen zu verwenden, um unnötige Daten-Threads loszuwerden. IMHO
Peter, Sie haben eine großartige Arbeit geleistet und eine GUI-Bibliothek in Ihrem Stil erstellt. Aber wenn Sie vorhaben, das Ding zu veröffentlichen, lohnt es sich trotzdem, alles auf eine andere Technologie umzustellen. Ich bin bereit, Ihnen dabei zu helfen und Schritt für Schritt die ganze Kraft Ihrer Bibliothek in eine neue Richtung zu lenken.
Komplizierter geht es nicht mehr, und das ist das Schöne und die Stärke von Klassen. Jede weitere baut ihre Funktionalität auf der Grundlage der Funktionalität des ursprünglichen Objekts auf. Infolgedessen werden alle grundlegenden Funktionen (Fokus, Klicks, außerhalb des Elements, Ziehen und Ablegen, Zeichnen) auf der Grundlage der Basisobjekte implementiert. Weitere Entwicklungen und Änderungen, die Entwicklung neuer Steuerelemente - all dies wird die Grundfunktionalität nicht beeinträchtigen, da sie auf der Ebene Ihrer Sprache erstellt wird: der "Kern" der Bibliothek. In diesem Fall haben die Objekte genau die Datentypen, die für eine bestimmte Eigenschaft erforderlich sind.
"Der Kern wird mit einer speziellen Funktion aufgebaut, die eine Datei liest, in der in der Auszeichnungssprache geschrieben ist, welche Fenster und Elemente erstellt werden müssen." - das ist einfach nur blechern. Sie haben also eine Matrix, die alle Eigenschaften speichert, und Sie haben auch eine Markup-Datei, die genau angibt, wie die Matrix mit den Eigenschaften gelesen werden soll... Wenn Sie Ihr Datenobjekt als Klasse erstellen, vermeiden Sie all diese Komplexität. Und das sind echte Komplexitäten, die Sie nicht wirklich brauchen. Wir wissen, wie wir uns selbst Komplikationen schaffen können, um sie später erfolgreich zu überwinden.
Außerdem müssen Sie keine hierarchischen Klassen erstellen und sie auch nicht verwenden. Es ist jedoch sinnvoll, Strukturen zu verwenden, um unnötige Daten-Threads loszuwerden. IMHO
Peter, Sie haben eine großartige Arbeit geleistet und eine GUI-Bibliothek in Ihrem Stil erstellt. Aber wenn Sie vorhaben, das Ding zu veröffentlichen, lohnt es sich trotzdem, alles auf eine andere Technologie umzustellen. Ich bin bereit, Ihnen dabei zu helfen und Schritt für Schritt die ganze Kraft Ihrer Bibliothek in eine neue Richtung zu lenken.
Wissen Sie, ich habe hier schon so oft über die Umsetzung meiner eigenen und anderer Lösungen gestritten, dass ich es leid bin. )) Es ist einfach sehr anstrengend. Mein Denken ist eher an die Matrix angepasst, das Denken der anderen an die Klassen... Es lohnt sich nicht, dafür einen Speer zu brechen.
In Ihrem Fall handelt es sich nicht um eine Vereinfachung, sondern um eine echte Komplikation. IMHO