Guten Tag, Vasily! Die Situation ist wie folgt: Ich lade ein Buch mit Auftragspositionen von OANDA herunter, sie kommen gepackt in API v.2 an, wenn ich versuche, sie mit CZip zu entpacken, erhalte ich die folgende Meldung: "Es gab einen Fehler bei der Archivverarbeitung im Moment des Ladens: ZIP_ERROR_BAD_FORMAT_ZIP". Ich weiß nicht genau, was darin gepackt ist, aber WinZip entpackt die empfangene Datei. Die Dateien sind nur für den Fall angehängt.
Ich habe das Zip-Archiv heruntergeladen, es sind mehrere Dateien darin enthalten. Ich versuche, sie zu entpacken, aber nichts funktioniert. Ich schaue mir den Code an und stoße auf dieses Fragment:
//+------------------------------------------------------------------+//|| Entpacken Sie den aktuellen Zip-Inhalt und speichern Sie ihn als Datei auf der Festplatte.//+------------------------------------------------------------------+bool CZipContent::UnpackOnDisk(string folder, int file_common)
{
returnfalse;
}
Ich verstehe, dass das Entpacken nicht funktioniert?
Alexey Oreshkin: Ich habe die Zip-Datei heruntergeladen, es sind mehrere Dateien im Archiv. Ich versuche zu entpacken und nichts funktioniert.Ich schaue mir den Code an und komme zu diesem Fragment: also verstehe ich richtig, dass das Entpacken nicht funktioniert?
Nein, das tut es nicht. Sehen Sie genau hin, UnpackOnDisk ist eine virtuelle Methode. Sie hat keine Implementierung in der abstrakten Klasse Content. Leider erlaubt es MQL nicht, virtuelle Methoden ohne Implementierung zu erstellen, so dass Sie Stopper wie den, den Sie gefunden haben, einbauen müssen. Die eigentliche Arbeit des Speicherns einer Datei auf der Festplatte wird von CZipFile::UnpackOnDisk und CZipDirectory::UnpackOnDisk erledigt. Der Grund dafür ist, dass das Erstellen eines Verzeichnisses und einer Datei auf der Festplatte unterschiedliche Vorgänge sind und daher mit unterschiedlichen Methoden durchgeführt werden.
M24: Die Archivdatei konnte nicht angehängt werden, wenn Sie sie brauchen, schicke ich sie Ihnen per E-Mail.
Das ist eigentlich das Wichtigste. Vergewissern Sie sich zunächst, dass Sie die neueste Version von CZip verwenden und versuchen Sie erneut zu entpacken.
Ich erwarte, dass alles im öffentlichen Ordner entpackt wird, aber er ist leer. Ich brauche nichts anderes. Im öffentlichen Ordner befindet sich die Datei info.zip.
Ich erwarte, dass alles im öffentlichen Ordner entpackt wird, aber er ist leer. Ich brauche nichts anderes. Im öffentlichen Ordner befindet sich info.zip.
p.s. Ich habe ein Beispiel aus dem Artikel genommen
string cookie,headers;
string mql_url="https://www.mql5.com/de/code/download/9";
int timeout=5000;
uchar data[],zip_array[];
if(!WebRequest("GET",mql_url,cookie,NULL,timeout,data,0,zip_array,headers))
{
printf("Unable to download ZIP archive from "+mql_url+". Check request and permissions EA.");
return;
}
if(!Zip.CreateFromCharArray(zip_array))
{
printf("Loaded bad ZIP archive. Check results array.");
return;
}
printf("Archive successfully loaded. Total files: "+(string)Zip.TotalElements());
Zip.UnpackZipArchive("Alligator",FILE_COMMON);
Ich habe die URL geändert (in den Terminaleinstellungen habe ich den Zugriff erlaubt) und das ist alles, das Ergebnis ist auch null. Ich dachte, ich würde den Parser von Sharp hierher übertragen, aber wohl nicht. So viel Aufwand, nur um die Datei zu entpacken und nichts (
Ich verstehe, dass das Entpacken nicht funktioniert?
Ich schaue mir den Code an und komme zu diesem Fragment:
d.h. ich verstehe richtig, dass das Entpacken nicht funktioniert?
Schauen Sie sich den Code im Debug-Modus an, und Sie werden zum richtigen Fragment kommen. Das Entpacken funktioniert - ich benutze es jeden Tag.
Ich habe die Zip-Datei heruntergeladen, es sind mehrere Dateien im Archiv. Ich versuche zu entpacken und nichts funktioniert.Ich schaue mir den Code an und komme zu diesem Fragment:
also verstehe ich richtig, dass das Entpacken nicht funktioniert?
Nein, das tut es nicht. Sehen Sie genau hin, UnpackOnDisk ist eine virtuelle Methode. Sie hat keine Implementierung in der abstrakten Klasse Content. Leider erlaubt es MQL nicht, virtuelle Methoden ohne Implementierung zu erstellen, so dass Sie Stopper wie den, den Sie gefunden haben, einbauen müssen. Die eigentliche Arbeit des Speicherns einer Datei auf der Festplatte wird von CZipFile::UnpackOnDisk und CZipDirectory::UnpackOnDisk erledigt. Der Grund dafür ist, dass das Erstellen eines Verzeichnisses und einer Datei auf der Festplatte unterschiedliche Vorgänge sind und daher mit unterschiedlichen Methoden durchgeführt werden.
Die Archivdatei konnte nicht angehängt werden, wenn Sie sie brauchen, schicke ich sie Ihnen per E-Mail.
Das ist eigentlich das Wichtigste. Vergewissern Sie sich zunächst, dass Sie die neueste Version von CZip verwenden und versuchen Sie erneut zu entpacken.
Schauen Sie sich den Code im Debug-Modus an, dann werden Sie das nötige Stück finden. Das Entpacken funktioniert - ich benutze es jeden Tag.
Was mache ich dann falsch? Hier ist mein Code:
Zip.LoadZipFromFile("info.zip",FILE_COMMON); Zip.UnpackZipArchive("",FILE_COMMON);Ich erwarte, dass alles im öffentlichen Ordner entpackt wird, aber er ist leer. Ich brauche nichts anderes. Im öffentlichen Ordner befindet sich die Datei info.zip.
Was mache ich dann falsch? Hier ist mein Code:
Ich erwarte, dass alles im öffentlichen Ordner entpackt wird, aber er ist leer. Ich brauche nichts anderes. Im öffentlichen Ordner befindet sich info.zip.
Sie müssen den Ordner angeben, denn doppelte Anführungszeichen führen zu einem Fehler.
Sie müssen einen Ordner angeben, da doppelte Anführungszeichen zu einem Fehler führen.
Ehrlich gesagt, hat sich nichts geändert:
Das Ergebnis ist ebenfalls null.
p.s. Ich habe ein Beispiel aus dem Artikel genommen
Ich habe die URL geändert (in den Terminaleinstellungen habe ich den Zugriff erlaubt) und das ist alles, das Ergebnis ist auch null. Ich dachte, ich würde den Parser von Sharp hierher übertragen, aber wohl nicht. So viel Aufwand, nur um die Datei zu entpacken und nichts (
Ehrlich gesagt, hat sich nichts geändert:
Das Ergebnis ist ebenfalls gleich null.