Diskussion zum Artikel "Die Arbeit mit ZIP-Archiven in MQL5 ohne Bibliotheken von Drittanbietern"

 

Neuer Artikel Die Arbeit mit ZIP-Archiven in MQL5 ohne Bibliotheken von Drittanbietern :

Die Sprache MQL5 entwickelt sich weiter und es wird zu ihr ständig neue Funktionen hinzugefügt, mit Daten zu arbeiten. Schon seit einiger Zeit ist es wegen Innovationen möglich geworden, mit ZIP-Archiven regelmäßig zu arbeiten, ohne die Beteiligung von Bibliotheken DLL der Drittanbieter. Dieser Artikel beschreibt im Detail, wie das gemacht wird. Als Beispiel ist die Beschreibung der CZIP Klasse - das universelle Werkzeug für das Lesen, Erstellen und Modifizierung der ZIP-Archive.

Jedes ZIP-Archiv ist eine binäre Datei, die eine geordnete Folge von Bytes enthält. Auf der anderen Seite hat jede Datei von einem ZIP-Archiv einen Namen, Attribute (wie Dateiänderungszeit) und andere Eigenschaften, die wir normalerweise in einem Dateisystem jedes Betriebssystems sehen. Von daher wird jedes ZIP-Archiv mit komprimierten Daten noch zusätzlich den Namen einer komprimierten Datei, deren Attribute und andere Serviceinformationen speichern. Die Dienstinformation wird in einer ganz bestimmten Art und Weise angeordnet und hat eine regelmäßige Struktur. Zum Beispiel, wenn ein Archiv zwei Dateien (File#1 и File#2) enthält, dann wird das Archiv das folgende Schema haben:


in Abb. 1. Die schematische Darstellung eines ZIP-Archivs, das zwei Dateien enthält: File#1 und File#2

Autor: Vasiliy Sokolov

 

Hat jemand den Code getestet? Funktioniert er in mt 4?

 
Die beeindruckende Komprimierung historischer Daten und die bereits erwähnte Idee, sie auf RAM-Inhalte anzuwenden, lassen auf eine radikale Reduzierung der vom MT5-Terminal benötigten Speicherressourcen hoffen. Wird es dazu kommen?
 
Vladimir Pastushak:

Hat jemand den Code getestet? Funktioniert er in mt 4?

Es funktioniert nicht nur, aber es ist in vollem Umfang in solchen Projekten wie MetaCOT 2 verwendet.
 
Vladimir:
Die beeindruckende Komprimierung historischer Daten und die bereits erwähnte Idee, sie auf RAM-Inhalte anzuwenden, lassen auf eine radikale Reduzierung der vom MT5-Terminal benötigten Speicherressourcen hoffen. Wird es dazu kommen?
MT5 selbst benötigt nur sehr wenige Ressourcen. Aber bei der Abfrage von Kursen wird Speicher in Abhängigkeit von der Variable "max bars in history" verwendet. Ich weiß nicht, ob dieser Fehler bereits behoben wurde, aber es wurde versprochen, ihn zu entfernen.
 

Etwas ist kaputt, das passiert beim Kompilieren.

Die ZipHeader.mqh hat einen Fehler.

 

Der berüchtigte Guss von Strukturen ist das Fluchen. Behalten Sie die korrigierte Version in der Anlage.

Dateien:
Zip.zip  11 kb
 
Vasiliy Sokolov:

Der berühmt-berüchtigte Guss von Strukturen ist das Fluchen. Hier ist die korrigierte Version im Anhang.

Sollte es unter MT4 funktionieren? Ich habe diese Situation.
'm_array' - structures containing objects are not allowed       Dictionary.mqh  252     25
cannot cast 'DoubleValue' to 'ULongValue'       Dictionary.mqh  209     14
 
Stanislav Korotky:
Sollte es unter MT4 funktionieren? Ich habe diese Situation.

Hilft#property #strist?

 

Die neue Version fügt einen zusätzlichen Mechanismus zur Extraktion von Datenstrukturen aus dem Archiv hinzu, wenn die Strukturfelder nicht ausgefüllt sind. (Es wurde festgestellt, dass Microsoft-Produkte den Standard von einem hohen Turm aus anspucken und Felder wie "Dateigröße" einfach nicht ausfüllen). Die neue Version funktioniert nun auch mit solchen problematischen Archiven.

Ich habe die neue Version des Archivs bereits zu dem Artikel hinzugefügt. Sie scheint bereits aktualisiert worden zu sein, so dass Sie den Anhang zum Artikel herunterladen können.

 
Stanislav Korotky:
Sollte es unter MT4 funktionieren? Ich habe die gleiche Situation.

Jetzt habe ich mir Ihren Fehler genau angesehen - die gleiche Situation mit Casting-Strukturen, aber in einem anderen Container - CDictionary. Ersetzen Sie Include\Dictionary.mqh durch die unten angehängte Variante.

Und ja, alles funktioniert gut unter MT4 und ich werde mehr CZip ist ein Arbeitspferd in meinen Projekten auf MT4 sagen.

Dateien:
Dictionary.mqh  38 kb