Crowdsourced GUI. Offene Betatests. - Seite 48

 

Peter, Sie können mich behandeln, wie Sie wollen, das ist Ihr gutes Recht, aber lassen Sie sich von einem etwas erfahreneren Kameraden beraten.

#include <GUI_DRIVE.mqh>
#include "..\Files\CORES.mqh"
#include "..\Files\Internal_API.mqh" 

Die DateiGUI_DRIVE.mqh wird als erste im Code verbunden. Davor wird nichts erklärt.

Wenn Sie es kompilieren, erhalten Sie die Fehlermeldung, dass G_CORE fehlt, und das ist logisch, denn das Array ist in dieser Datei nicht deklariert!

Schlussfolgerung? Die Schlussfolgerung ist einfach: Das Array muss in dieser Datei deklariert werden. Letztendlich ist es diese Datei, die mit diesem Array arbeitet, denn diese Datei ist der "Motor"! Daher ist die Deklaration des Arrays selbst in diesem Kontext korrekt.

Die nächste Datei,CORES.mqh , füllt das Array mit der Beschreibung der Formularelemente.

Wenn das Array in der ersten Datei deklariert wird, gibt es bei der Kompilierung des EA mit diesen Dateien natürlich keine Kompilierungsprobleme, denn wenn Sie die zweite Datei kompilieren, ist das Array bereits im Kontext des Programms sichtbar.

Was wir aber sagen wollen, ist, dass jede Datei ohne Fehler kompiliert werden sollte. Da die zweite Datei das G_CORE-Array mit Elementen füllt, werden wir beim Kompilieren dieser Datei natürlich auf einen Fehler stoßen, wenn das Array nicht deklariert ist.

Und hier verwenden wir, wie Alexander sagte, einen Stummel.

Pjotr, du bist ein großer Fan von Definitionen, also wirst du wissen, was los ist.

In der Datei GUI_DRIVE deklarieren Sie ein globales Array von Kernel-Elementen G_CORE, danach sollte die Datei ohne Fehler kompiliert werden.

In dieser Datei fügen Sie dann eine Definition hinzu.

#define __DRIVE__

Fahren Sie mit der Datei Cores fort. Bevor Sie ein Array deklarieren, verwenden Sie den Präprozessor compile.

#ifndef __DRIVE__
int G_CORE[][prop_limit];
#endif

Und dann füllen Sie das Feld. Natürlich müssen Sie die Art und Weise, wie Sie das Feld füllen, ein wenig ändern, um es ohne Deklaration zu tun.

Ich denke, Sie haben das Wesentliche verstanden: Wenn die CORES-Datei kompiliert wird, ist der__DRIVE__-Standard weg und der Array-Deklarationscode wird kompiliert und alles funktioniert gut.

Wenn die Datei als Teil des EA kompiliert wird, dann wird nach dem Kompilieren der ersten Datei das Define deklariert und in der zweiten Datei wird das Array nicht deklariert, weil der Compiler diesen Teil des Codes "abschneidet".

Ich hoffe wirklich, dass ich mich klar ausgedrückt habe.

Ich wiederhole es noch einmal: Jede Datei muss ohne Fehler kompiliert werden. Wenn Sie Abhängigkeiten haben, müssen Sie deren Speicherort ordnungsgemäß angeben und bei Bedarf Neukompilierungsprozessoren hinzufügen.

Wenn jede Datei fehlerfrei kompiliert wurde, haben Sie mehr Vertrauen in die Integrität des gesamten Systems.

Vergessen Sie auch nicht, in jeder Datei eine Eigenschaft hinzuzufügen:

#property strict

Diese Eigenschaft ermöglicht eine strengere Kontrolle des Codes.

 
Das macht in der Praxis wenig Sinn. Wenn jede einzelne Datei fehlerfrei kompiliert wird, unabhängig von der Integrität der gesamten Baugruppe, könnte der Benutzer die Verbindung einer der Dateien leicht übersehen. Das ist leicht zu vergessen.

Wie auch immer, es ist so unbedeutend, dass ich meine Zeit nicht damit verschwenden werde. Das ist ein völliger Unsinn. Das ist Unsinn.
 
Ja, Sie können es so einrichten, dass jede Datei separat und ohne Fehler kompiliert wird, indem Sie den Präprozessor manipulieren.

Aber genau hier liegt der Fehler. Sie sind Teile eines Ganzen und sollten nicht die Unabhängigkeit von anderen Teilen "darstellen". Und in der Tat kann der Benutzer entscheiden, dass er nicht alle Dateien braucht, weil es so funktioniert, wie es ist.

Zeit mit einer solchen Tätigkeit zu verschwenden, deren Sinn sehr zweifelhaft ist? Wen versuche ich zu täuschen? Der Compiler?

Die "erfahrenen" Genossen scheinen Angst vor ihrer strengen Stimme zu haben und glauben, dass sie immer in allem Recht hat. Also versuchen sie, sich anzupassen, auch wenn es keinen Sinn macht.

Ich hatte Tausende von Warnungen in meinem Auszeichnungssprachencode, weil ich (sring) vor Konstanten setzen musste. Ich kann mir vorstellen, wie der Code aussehen würde, wenn ich jeder Zahl eine Typumwandlung voranstellen würde. Aber zumindest würde es keine Warnungen geben.
 
Реter Konow:
Ja, durch Manipulation des Präprozessors können Sie jede Datei separat und fehlerfrei kompilieren.

Aber genau hier liegt der Fehler. Sie sind Teile eines Ganzen und sollten nicht die Unabhängigkeit von anderen Teilen "darstellen". Und in der Tat kann der Benutzer entscheiden, dass er nicht alle Dateien braucht, weil es so funktioniert, wie es ist.

Zeit mit einer solchen Tätigkeit zu verschwenden, deren Sinn sehr zweifelhaft ist? Wen versuche ich zu täuschen? Der Compiler?

Die "erfahrenen" Genossen scheinen Angst vor ihrer strengen Stimme zu haben und glauben, dass sie immer in allem Recht hat. Also versuchen sie, sich anzupassen, auch wenn es keinen Sinn macht.

Ich hatte Tausende von Warnungen in meinem Auszeichnungssprachencode, weil ich (sring) vor Konstanten setzen musste. Ich kann mir vorstellen, wie der Code aussehen würde, wenn ich jeder Zahl eine Typumwandlung voranstellen würde. Aber zumindest würde es keine Warnungen geben.

Es gibt einige Kameraden, die eine separate Software schreiben, die die Oberfläche des Meta-Editors selbst leicht verändert - nur um die Benutzung zu erleichtern!

Diese Norm ist vergleichbar mit der Verwendung einer Tastatur - anstatt Buchstaben im Morsecode durch einen Quietscher zu tippen. Stubs ändern nichts, außer dass sie beim Kompilieren ständig zwischen den Dateien hin und her springen. Aber ein Stub besteht aus 2 Zeilen Code. Wie viel Zeit würden wir mit dem Surfen verbringen, nur um eine Taste zu drücken. Und wie oft werden wir die 7 umdrehen und was wird rationaler werden, damit wir nicht unser Leben damit verschwenden, Buchstaben durch einen Quietscher zu tippen

Dabei geht es nicht um Objekte oder Klassen, sondern nur um Zeitersparnis. Ihre Zeit... Und Sie können sich selbst einen Standard für die Erstellung dieser Dokumente ausdenken.
 
Ganz zu schweigen von der Programmierung auf Russisch, die von der englischsprachigen Entwicklungsumgebung standardmäßig diskriminiert wird. Auch um sich anzupassen und meinem Gehirn eine mickrige Leistung von 30% zu überlassen, während ich im Russischen alle 100% nutzen kann?

So viel zum Preis der "Professionalität".
 
Реter Konow:
Ganz zu schweigen von der Programmierung in russischer Sprache, die standardmäßig durch die englischsprachige Entwicklungsumgebung diskriminiert wird. Soll ich mich auch anpassen und meinem Gehirn mickrige 30% der Leistung überlassen, während ich im Russischen alle 100% nutzen kann?

So viel zum Preis der "Professionalität".

Fachleute verwenden ihre eigenen Datentypen in ihrem Code. Im Allgemeinen spielt es keine Rolle, in welcher Sprache sie verfasst sind.

Aber wenn eine Funktion eine ganze Zahl in dieser Reihenfolge erwartet: Akzeptieren (Breite, Höhe).

Stattdessen verwechseln wir es versehentlich und schreiben

Akzeptieren (Höhe, Breite) - dann sagt der Kopierer selbst, dass wir hier eine Verwechslung haben. Ob es für Sie funktioniert - es geht auch nicht um die Sprache oder die Gegenstände. Es geht nur darum, diesen Fehler nicht selbst suchen zu müssen

 
Alexandr Andreev:

Fachleute verwenden ihre eigenen Datentypen in ihrem Code. Dabei spielt es keine Rolle, in welcher Sprache sie verfasst sind.

Aber wenn eine Funktion eine ganze Zahl in dieser Reihenfolge erwartet: Akzeptieren (Breite, Höhe).

Stattdessen verwechseln wir es versehentlich und schreiben

Accept (height, width) - dann sagt der Kopierer selbst, dass wir hier eine Verwechslung haben. Ob es für Sie funktioniert - es geht auch nicht um die Sprache oder die Gegenstände. Es geht nur darum, dass Sie nicht selbst nach diesem Fehler suchen müssen.

Dies ist ein Zweig, in dem fertige Lösungen getestet und den Benutzern mitgeteilt werden.

Ich brauche konstruktive Tester, keine ehrgeizigen "Profis", die etwas zu meckern haben.

Ich werde nicht über abstrakte Fragen diskutieren. Haben Sie das montierte Panel angeschlossen, Fehler gefunden und diese gemeldet? Herzlichen Dank! Klugscheißen und auf Dingen herumhacken, die man nicht versteht - auf Wiedersehen.
 
Meine Herren Klugscheißer, Sie haben hier nichts zu suchen.

Für diejenigen, die den Editor nicht benutzt haben und das Panel nicht angeschlossen haben, sondern "unterrichten", ist das Gespräch kurz.

Der Rest von euch, willkommen!
 
Алексей Барбашин:

Peter, du kannst mich behandeln, wie du willst, das ist dein Recht, aber nimm den Rat eines etwas erfahreneren Kameraden an.

.......

Vergessen Sie auch nicht, in jeder Datei eine Eigenschaft hinzuzufügen:

#property strict

Diese Eigenschaft ermöglicht eine strengere Kontrolle des Codes.

es ist für 5 - dort ist es immer dasselbe!

obwohl ich im Allgemeinen zustimme: eine Menge von Warnungen bei der Kompilierung erhöht nicht das Vertrauen in den Code.

 
Igor Zakharov:

Es ist für fünf Personen gemacht - es ist immer streng!

obwohl ich im Allgemeinen zustimme: viele Warnungen zur Kompilierzeit erhöhen nicht das Vertrauen in den Code.

Ich werde die Warnungen entfernen. Vorübergehend.
Grund der Beschwerde: