Schreiben in die Datei in eine neue Zeile - Seite 2

 
EfremovSergey:
Wie kann man eine Zeichenkette löschen, nachdem man sie gelesen hat, gibt es eine einfache Möglichkeit, dies zu tun?

Von wem gelesen? Wenn es von Ihnen ist, können Sie es mit den Händen ausradieren. Wenn es durch einen Roboter geschieht, ist es sinnlos. Sie können eine Entscheidung über den Algorithmus treffen, sobald Sie die Daten erhalten haben.

 
Valeriy Yastremskiy:

Von wem gelesen? Wenn es von Ihnen ist, können Sie es mit den Händen ausradieren. Wenn es durch einen Roboter geschieht, ist es sinnlos. Sie können eine Entscheidung über den Algorithmus treffen, sobald Sie die Daten erhalten haben.

Wenn man die bereits verarbeiteten Informationen nicht loswird, muss man meiner Meinung nach Ressourcen für ihre erneute Analyse aufwenden.

 
Ihor Herasko:

In den meisten Fällen ist es besser, die gesamte Datei zu lesen, die notwendigen Änderungen im Speicher mit den Daten vorzunehmen und dann die gesamte Datei zu überschreiben. Dies ist einfacher als das Verschieben der Daten in einer geöffneten Datei.

Wenn ein EA eine Datei vollständig liest, kann dann ein anderer EA zur gleichen Zeit wie der erste auf dieselbe Datei zugreifen, um eigene Aktionen durchzuführen?

Zu Versuchszwecken habe ich die Datei manuell geöffnet und versucht, den Expert Advisor in die Datei zu schreiben; die Informationen wurden erst nach erneutem Öffnen angezeigt.

Wenn ich versuche, die Datei manuell zu öffnen, während der Expert Advisor an der Datei arbeitet, weigert er sich einfach, sie zu öffnen, weil die Datei zu sehr mit dem Prozess beschäftigt ist.

Ich verstehe die Verordnung nicht ganz. Funktioniert es nicht, dass im Falle einer vollständigen Überschreibung alles, was noch nicht gelesen wurde, gelöscht wird?

Ein weiteres Detail ist, dass auf die Datei von verschiedenen Expert Advisors zugegriffen wird und diese nicht wissen, ob andere Expert Advisors die für sie relevanten Informationen bereits gelesen haben oder nicht, so dass die gesamte Datei geleert werden kann.

 
EfremovSergey:

Wenn ein EA eine Datei vollständig liest, kann dann ein anderer EA zur gleichen Zeit wie der erste auf dieselbe Datei zugreifen, um eigene Aktionen durchzuführen?

Zu Versuchszwecken habe ich die Datei manuell geöffnet und versucht, den Expert Advisor in die Datei zu schreiben; die Informationen wurden erst angezeigt, nachdem die Datei erneut geöffnet wurde.

Wenn ich versuche, die Datei manuell zu öffnen, während der Expert Advisor an der Datei arbeitet, weigert er sich einfach, sie zu öffnen, weil die Datei zu sehr mit dem Prozess beschäftigt ist.

Ich verstehe die Verordnung nicht ganz. Ist es nicht so, dass bei einem vollständigen Überschreiben alles, was noch nicht gelesen wurde, ebenfalls gelöscht wird?

Fügen Sie beim Öffnen der Datei das Co-Read-Flag FILE_SHARE_READ hinzu, vielleicht benötigen Sie auch das Co-Edit-Flag {write}. Es liegt an Ihnen zu entscheiden, ob dies notwendig ist.

 
Alexey Viktorov:

Beim Öffnen einer Datei FILE_SHARE_READ als Co-Read-Flag hinzufügen, eventuell auch Co-Edit-/Schreib-Flag. Es liegt an Ihnen zu entscheiden, ob dies notwendig ist.

Gut. Ich danke Ihnen vielmals. Nützliche Informationen.

Und wie kann man nur eine Zeile löschen, kann jemand einen Vorschlag machen?

 
EfremovSergey:

Ja. Ich danke Ihnen vielmals. Nützliche Informationen.

Kann jemand vorschlagen, wie man nur eine Zeile löschen kann?

Es kommt darauf an, welche Linie. Ich habe es noch nicht getan, aber wenn es sein muss, werde ich erst einmal mit eigenen Experimenten beginnen. Wer will schon mit den Ideen anderer Leute experimentieren? Außer vor Müßiggang. Prüfen Sie, ob es möglich ist, Ihre Datei in die SQLite-Datenbank einzulesen, diese Zeichenkette zu löschen und sie wieder zurückzuschreiben. Wenn es in ein Array oder ein Array von Strukturen geschrieben werden kann, können Sie es auch tun. Das Problem ist jedoch, dass Arrays und Strukturen in .bin-Dateien geschrieben werden, die sonst nicht geöffnet und eingesehen werden können. Ganz allgemein: Phantasie und Experimentierfreude, um ein Ergebnis zu erzielen.

 
Alexey Viktorov:

Das hängt von der Art der Schnur ab. Ich habe es noch nicht getan, aber wenn es sein muss, werde ich erst einmal mit eigenen Experimenten beginnen. Wer will schon mit den Ideen anderer Leute experimentieren? Außer vor Müßiggang. Prüfen Sie, ob es möglich ist, Ihre Datei in die SQLite-Datenbank einzulesen, diese Zeichenkette zu löschen und sie wieder zurückzuschreiben. Wenn es in ein Array oder ein Array von Strukturen geschrieben werden kann, können Sie es auch tun. Das Problem ist jedoch, dass Arrays und Strukturen in .bin-Dateien geschrieben werden, die sonst nicht geöffnet und eingesehen werden können. Alles in allem handelt es sich um einen Höhenflug und Experimente, um ein Ergebnis zu erzielen.

Eine gewöhnliche Textdatei... Wenn man nicht weiß, wie man es macht, verschwindet die Frage von selbst, jeder experimentiert damit. Das Konzept liegt, wie man so schön sagt, an der Oberfläche und benötigt keine zusätzliche Vertonung.

 
EfremovSergey:

Kann jemand vorschlagen, wie man nur eine Zeile löschen kann?

Am einfachsten ist es, die Datei zu lesen, die Daten zu verarbeiten und sie zurückzuschreiben. Die direkte Bearbeitung von Dateidaten, ohne zu viele Fragen zu stellen, ist nur zeichenweise möglich: Lesen Sie ein Zeichen und schreiben Sie es an die Stelle der zu löschenden Information zurück. Das Überschreiben in Blöcken ist schwieriger, da sich verschiedene Datenstücke überschneiden können. All dies ist also kompliziert und es ist nicht ganz klar, warum es notwendig ist. Ist wirklich nicht so viel Arbeitsspeicher vorhanden? Aber dann ist auch der Betrieb einer großen Anzahl von Programmen nicht mehr möglich.

 
EfremovSergey:

Eine einfache Textdatei... Wenn man nicht weiß, wie es geht, dann erledigt sich die Frage von selbst, jeder experimentiert so gut er kann, was er kann. Das Konzept liegt, wie man so schön sagt, an der Oberfläche und benötigt keine zusätzliche Vertonung.

Nun, wenn Sie denken, dass die Information "Normale Textdatei ..." ausreicht, dann sind Sie einfach zu telepatisch. Ich kenne die Adresse nicht, Sie können sie selbst herausfinden. Aus irgendeinem Grund berücksichtigen Sie nicht, dass auch Textdateien unterschiedlich sind. Gibt es ein Zeilenende, was befindet sich in der Datei: Zahlen oder Text, und es kann noch weitere Nuancen geben.

Igor hat Ihnen den einfachsten Weg angeboten. Wahrscheinlich hat es Ihnen nicht gefallen, also habe ich Ihnen vorgeschlagen, zu experimentieren. Und das Konzept ist nur für Sie an der Oberfläche.........

 
Ihor Herasko:

Am einfachsten ist es, die Datei zu lesen, die Daten zu verarbeiten und sie zurückzuschreiben. Die direkte Bearbeitung der Dateidaten ohne allzu viele Fragen ist nur zeichenweise möglich: Lesen Sie ein Zeichen und schreiben Sie es an die Stelle der zu löschenden Information. Das Überschreiben in Blöcken ist schwieriger, da sich verschiedene Datenstücke überschneiden können. All dies ist also kompliziert und es ist nicht ganz klar, warum es notwendig ist. Gibt es wirklich nicht so viel Arbeitsspeicher? Aber dann wäre auch der Betrieb einer großen Anzahl von Programmen nicht möglich.

Der Haken an der Sache ist, dass es 10 Programme gibt, die in die Datei schreiben, und weitere 10, die aus ihr lesen.

Dateien:
Copy.txt  1 kb