Fehler, Irrtümer, Fragen - Seite 727

 
Renat:

Es wurdeeine Frage zu FileReadArray gestellt, und in der Erklärung habe ich darauf hingewiesen, dass es eine Funktion hat , die den falschen Datentyp liest.

Daher die Frage: Wie passt dieses Merkmal zur Sicherheit der Sprache?

Wenn das in Ordnung ist, warum nicht eine Standardfunktion erstellen, um ein Bitfeld in den richtigen Typ zu konvertieren?

Im Allgemeinen sollte man entweder für Ordnung sorgen und diese Funktion entfernen oder die Leute die lange Arithmetik implementieren lassen.

Hier ist ein Beispiel für diese Funktion anhand einer Wischdatei:

double arr[]; ulong arr1[]; 
//+------------------------------------------------------------------+
void OnStart()
  {   
   ArrayResize(arr,1); arr[0]=123.2564;
   WriteArrayFile();
   ReadArrayFile();
   Print(arr1[0]);
  }
//+------------------------------------------------------------------+
void WriteArrayFile(string folder="Calculator")
  {
   int han=FileOpen(folder+".dat",FILE_WRITE|FILE_BIN);
   if(han!=INVALID_HANDLE)
     {      
      FileWriteArray(han,arr);              
      FileClose(han);
     }
  }
//+------------------------------------------------------------------+
void ReadArrayFile(string folder="Calculator")
  {
   int han=FileOpen(folder+".dat",FILE_READ|FILE_BIN);
   if(han!=INVALID_HANDLE)
     {      
      FileReadArray(han,arr1);             
      FileClose(han);
     }
  }
//+------------------------------------------------------------------+
 
Paranoia entdeckt.
 
TheXpert:
Paranoia entdeckt.

Sie sollten darüber nachdenken.

Ich bin eigentlich dafür, es für sicher zu halten und das Gegenstück ohne Datei, aber direkt zu machen.

Wenn MQ sie jedoch als unsicher erkennt, sollte sie auch aus der Funktion entfernt werden.

ZZZY Übrigens vielleicht habe ich heute wirklich etwas falsch gemacht, ich habe zwei Fragen nicht beantwortet, klären Sie mich auf, zeigen Sie mit dem Finger wo dumm.

 
Urain:

Hier ist ein Beispiel für diese Lösung per Datei mit Abwischen der Schraube:


Warum eine Akte durchgehen? Es ist einfacher als das. Lesen Sie mehr über die Datentypkonvertierung von einfachen Strukturen
 
oder so
 
Renat:
Beim Testen von Crosses gibt es eine genaue Modellierung und andere Kurse für die korrekte Umrechnung von Gewinnen und Margenanforderungen.
Versuchen Sie, die Visualisierung zu starten, und Sie werden sofort verstehen, wie viele Berechnungen auf der Anzahl der Hintergrundzeichen in Marketwatch basieren.
Ich kann das alles verstehen, aber ein 13,7-facher Geschwindigkeitsunterschied... Nun, 2x ist okay. Und die welpenhafte Freude über die schnellen Eröffnungskurse bei den Majors ist durch tränenreiche Niedergeschlagenheit bei den Crosses ersetzt worden. Und anstatt 30 einheimische Remote-Agenten einzusetzen, müssen wir wieder die Cludes bestechen... Abyss!
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Ценовые константы
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Ценовые константы
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы индикаторов / Ценовые константы - Документация по MQL5
 
Urain:

Entwickeln Sie den Gedanken.

Ich bin eigentlich dafür, es für sicher zu halten und das Gegenstück ohne Datei, aber direkt zu machen.

Wenn MQ sie jedoch als unsicher erkennt, sollte sie auch aus der Funktion entfernt werden.

ZZZY Übrigens vielleicht plappere ich heute wirklich etwas nicht richtig, ich habe zwei Fragen nicht beantwortet, Sie klären mich wirklich auf, zeigen mit dem Finger, wo dumm.

Die Datei selbst ist unpersönlich. Es ist nicht bekannt, auf welche Weise diese Datei geschrieben wurde. Mit anderen Worten: Die oben beschriebene Funktionalität kann nicht verboten werden. Natürlich können Sie eine reine Textdatei organoleptisch erkennen, und es gibt einige Probleme mit Unicode und Ansi-Kodierungen.

Sie können also jede Datei nach Belieben lesen. Und es wird zu keiner gefährlichen Situation führen, da die Größe der Lese- (und auch der Schreib-) Zugriffe kontrolliert wird. Sie werden den Stapel nicht aufbrechen können. Sie werden nicht in der Lage sein, auf irgendeine Weise eine Adresse in den Prozessspeicher zu bekommen.

 
muallch:
Das kann ich verstehen, aber ein 13,7-facher Geschwindigkeitsunterschied... Nun, 2x ist okay. Und die kindliche Freude, die Geschwindigkeit bei den Eröffnungskursen der Majors zu testen, wurde durch tränenreiche Niedergeschlagenheit bei den Crosses ersetzt. Und anstatt 30 einheimische Remote-Agenten einzusetzen, müssen wir wieder die Cludes bestechen... Abyss!
Wir untersuchen dieses Problem. Das Testen der Eröffnungskurse bei den Crossen wird beschleunigt.
 
stringo:

Die Datei selbst ist eine unpersönliche Datei. Es ist nicht im Voraus bekannt, wie die Datei aufgezeichnet wurde. Mit anderen Worten: Die oben beschriebene Funktionalität kann nicht verboten werden. Es ist natürlich möglich, eine reine Textdatei organoleptisch zu erkennen, und es gibt Nuancen bei Unicode- und Ansi-Kodierungen.

Sie können also jede Datei nach Belieben lesen. Und es wird zu keiner gefährlichen Situation führen, da die Größe der Lese- (und auch der Schreib-) Zugriffe kontrolliert wird. Sie werden den Stapel nicht aufbrechen können. Sie können auf keine Weise eine Adresse in den Prozessspeicher bekommen.

Dann sehe ich keinen Grund, warum man nicht eine direkte Lesefunktion ohne Typkonvertierung einführen sollte, ala

double a=123.2564; ulong b;

b=Byte(a,TYPE_ULONG);
Print(b);
//--- результат 4638373815016729713

Stecken Sie es in eine Funktion und alles ist sicher.

 
Urain:

Dann sehe ich keinen Grund, warum man nicht eine direkte Datenlesefunktion ohne Typkonvertierung einführen sollte, ala

Stecken Sie es in eine Funktion und alles ist sicher.

struct __double { double v; }

struct __long { long v; }

__double a; __long b;

a.v=123.456;

b=a;

b.v=4638373815016729713;

nicht schwer.

+ Lesen Sie neben den Top-Links https://www.mql5.com/ru/articles/364


Und die Konvertierung von einem Typ in einen anderen kann entweder mit Makros oder Funktionen erfolgen.

aber es ist nichts wirklich Kompliziertes dabei.

Избавляемся от балласта самодельных DLL
Избавляемся от балласта самодельных DLL
  • 2012.01.31
  • o_O
  • www.mql5.com
Если MQL5-программисту недостаточно функционала языка, он вынужден обращаться к дополнительным инструментам. Для этого приходится использовать другой язык программирования и создавать промежуточную DLL. В MQL5 имеется механизм представления разных типов данных с помощью структур и передачи их в API, но к сожалению, MQL5 не отвечает нам на вопрос о том, как вытянуть данные из принятого указателя. В данной статье мы поставим точку в этом вопросе и покажем простые механизмы обмена сложными типами данных и работе с ними.