Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 1118
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
Bitte informieren Sie uns über mögliche Entwicklungen.
Ich habe array[100], auch gespeichert binäre Datei mit Größe [1000], wie man Array der binären Datei letzten 100 Werte zurück. Gibt es etwas Universelles? Ich habe wieder 12 Stunden daran gearbeitet und nichts.
Bitte informieren Sie uns über mögliche Entwicklungen.
Ich habe array[100], auch gespeichert binäre Datei mit Größe [1000], wie man Array der binären Datei letzten 100 Werte zurück. Gibt es etwas Universelles? Ich arbeite seit 12 Stunden daran und nichts.
Wenn ich mich richtig erinnere, wurde in mql4 geschrieben, dass, wenn count = WHOLE_ARRAY oder value die Anzahl der Arrayelemente überschreitet, das gesamte Array an das Ende geschrieben wird. Und es wurde nichts über eine Marge gesagt. D.h. es steht außer Frage, 1.000 nicht zu erwähnen.
Um dies zu überprüfen, zählen Sie, wie viele Werte geschrieben werden und wie groß die Datei ist.
Wenn ich mich richtig erinnere, wurde in mql4 geschrieben, dass wenn count = WHOLE_ARRAY oder value die Anzahl der Arrayelemente überschreitet, das gesamte Array an das Ende geschrieben wird. Und es wurde nichts über eine Marge gesagt. Es kann also völlig ausgeschlossen sein, dass es keine 1000-Punkte-Marge gibt.
Um dies zu überprüfen, berechnen Sie, wie viele Werte geschrieben werden und die daraus resultierende Dateigröße.
Ich meine nicht, dass nach dem Schreiben des Arrays in die Binärdatei neue Daten erscheinen und ich sie über ein neu dimensioniertes Array (= die Dimension der primären Array-Spalte) jedes Mal bis zum Ende der Datei für eine neue j-Spalte in die Binärdatei schreibe
dann müssen wir die Daten aus der Binärdatei entfernen, deren Anzahl dem Index des ursprünglichen Arrays entspricht, das bei der ersten Integration in die Binärdatei übertragen wurde. Die letzten Daten werden jedoch in dieses begrenzte Array aufgenommen, da das binäre Array größer ist als das primäre Array, da sekundäre Zeilen hinzugefügt wurden. Die sekundären Zeilen müssen in den Lesebereich gehen, und die ersten Zeilen im Binärbereich müssen außerhalb des Bereichs liegen.
Ich meine nicht, dass nach dem Schreiben des Arrays in die Binärdatei nach einer gewissen Zeit neue Daten erscheinen, die ich über ein neu dimensioniertes Array (= Dimension der primären Array-Spalte) jedes Mal am Ende der Datei für eine neue j-Spalte in die Binärdatei schreibe
dann müssen wir die Daten aus der Binärdatei entfernen, deren Anzahl dem Index des ursprünglichen Arrays entspricht, das bei der ersten Integration in die Binärdatei übertragen wurde. Die letzten Daten sollten jedoch so entfernt werden, dass die letzten Daten in diesem begrenzten Array enthalten sind, da das binäre Array durch die Hinzufügung der sekundären Zeilen größer ist als das primäre Array.
Dann brauchen Sie dem Array vor dem Lesen keine Größe zuzuweisen. Wenn es sich nicht um die ersten Daten handelt, die benötigt werden, dann berechnen Sie die Größe in Bytes und verschieben Sie die Startposition für das Lesen um den richtigen Betrag.
Das ist die Frage, wie man Bytes berechnet
s1=FileReadInteger(h,INT_VALUE); //ножно ли перед восстановлением считываем размер массива?
может как то через это sizeof
Dies ist die Frage, wie man Bytes berechnet
s1=FileReadInteger(h,INT_VALUE); //ножно ли перед восстановлением считываем размер массива?
может как то через это sizeof
Wenn die Daten vom doppelten Typ sind, teilen Sie die Dateigröße durch die Anzahl der Bytes, die durch die Anzahl der doppelten Typen belegt sind, d.h. durch 8.
Wenn es sich um doppelte Daten handelt, wird die Dateigröße durch die Anzahl der Bytes geteilt, die von der doppelten Zahl belegt werden, d. h. durch 8.
Ist es vonFileFindFirst?
oder einfach jede neue Zeile byteweise scannen
file_size=+FileSize(handle); // чтобы выяснить индекс от которого открывать
FileReadArray(file_handle,arr,file_size,WHOLE_ARRAY);
MitFileFindFirst?
ÜberFileFindFirst?
Oder einfach jede neue Zeile in Bytes zusammenfassen
file_size=+FileSize(handle); // чтобы выяснить индекс от которого открывать
FileReadArray(file_handle,arr,file_size,WHOLE_ARRAY);
Sie hätten Ihren Beitrag nicht korrigieren sollen, nachdem Sie ihn beantwortet haben...
Falsch. Bevor Sie ein Array lesen, definieren Sie dessen Größe file_size = FileSize(handle); und dividieren Sie durch den vom Datentyp belegten Speicher, d.h. für double durch 8. Sie erhalten die Anzahl der Nummern in der Datei. Wenn das Array zweidimensional ist, dann ist die Anzahl der Datensätze in der Datei doppelt so hoch. Und Sie erhalten, wie viele Bytes verschoben werden müssen, um die gewünschte Zeile zu lesen.
Sie hätten Ihren Beitrag korrigieren sollen, nachdem Sie darauf geantwortet haben...
Falsch. Bevor Sie ein Array lesen, definieren Sie dessen Größe file_size = FileSize(handle); und dividieren Sie durch den vom Datentyp belegten Speicher, d.h. für double durch 8. Sie erhalten die Anzahl der Nummern in der Datei. Wenn das Array zweidimensional ist, dann ist die Anzahl der Datensätze in der Datei doppelt so hoch. Und Sie erhalten, wie viele Bytes verschoben werden müssen, um die gewünschte Zeile zu lesen.