Fehler, Irrtümer, Fragen - Seite 327

 
mrProF:
Auf den ersten Blick wird die gesamte Datei in str...
FILE_ANSI Flag hinzufügen, da es standardmäßig Unicode liest:)
Außerdem werde ich 15 sein, da am Ende eine Leerzeile steht.
Laut MQL5-Dokumentation liest die Funktion FileReadString "einen String aus der Datei mit der aktuellen Position des Dateizeigers ... Beim Lesen aus einer csv-Datei wird die Zeichenkette von der aktuellen Position bis zum nächsten Trennzeichen oder bis zum Zeichen des Endes der Zeichenkette gelesen". Ich bin also nicht der Meinung, dass "die gesamte Datei geschrieben wird". Ich habe es mit FILE_ANSI versucht, aber es funktioniert nicht. Zu der leeren Zeile am Ende: Ich verstehe nicht ganz, von welcher Zeile Sie sprechen.
 
DenisR:
Laut MQL5-Dokumentation, FileReadString Funktion "liest eine Zeichenfolge von der aktuellen Position des Dateizeigers... Beim Lesen aus einer csv-Datei wird die Zeichenkette von der aktuellen Position bis zum nächsten Trennzeichen oder bis zum Ende der Zeichenkette gelesen". Ich bin also nicht der Meinung, dass "die gesamte Datei geschrieben wird". Ich habe es mit FILE_ANSI versucht, aber es funktioniert nicht. Bezüglich der leeren Zeichenfolge am Ende: Ich verstehe nicht ganz, welche Zeichenfolge Sie meinen.

Es geht darum, ob es ein Komma richtig findet, wenn die Kodierung nicht passt, kann es sein, dass es nicht gesehen wird.
Ich werde es mir mit dem Debugger ansehen.
Ich habe Ihren Code kopiert und die Flagge hinzugefügt - alles ist in Ordnung.
 
Und hier sind die Ergebnisse, wie ich schon sagte.
Ohne ansi liest es Abrakadabra und ohne Kommas zu sehen, fliegt es zum Ende der Datei.
Mit Ansi ist es in Ordnung.
Siehe Anhänge.
Dateien:
 
-Alexey-:
In MetaEditor öffnet die Schaltfläche "Liste der Funktionen in der Datei" die Liste. Wenn ich es nach unten scrolle, endet es bei P und bewegt sich nicht weiter (das schwarze Dreieck nach unten wird inaktiv), obwohl es Klassen zum Buchstaben R gibt. Bitte reparieren Sie das.

Weitere Einzelheiten sind erforderlich.

Bauen, ablegen, auflösen...

Ich habe es gerade mit der Datei ChartObject.mqh ausprobiert - sie scrollt auf und ab.

 
mrProF:
Und hier sind die Ergebnisse, wie ich schon sagte.
Ohne ansi liest es abracadabra und ohne die Kommas zu sehen, fliegt es zum Ende der Datei.
Mit Ansi ist es in Ordnung.
Siehe Anhänge.
Von ansi habe ich es lesen (5 505 1009), d.h. i ist jetzt 5 statt 0 aus irgendeinem Grund, Dateigröße ist 505 wie zuvor und FileTell ist 1009 wie zuvor. In MT4 lautet das gleiche Skript (15 505 505).
 
alexvd:

Weitere Einzelheiten sind erforderlich.

Bauen, ablegen, auflösen...

Ich habe es gerade mit der Datei ChartObject.mqh ausprobiert - sie scrollt auf und ab.

Interesting:
Und welche ungefähre Listengröße? Vielleicht gibt es eine Grenze für die Größe der Liste...

-Aleksey-

Genau 100 Zeilen.


Interessant:

Ich habe mit einer meiner Bibliotheken experimentiert (110 Funktionen), sie zeigt in der Liste 100 bis 106 an (immer eine andere Zahl, aber nicht 110).

Build last, scheint ein Problem mit der Anzahl der Zeilen größer als 100 zu sein. ChartObject.mqh hat nur 62 Zeilen in der Liste. Auflösung 1680x1050. Windows7, Schriftartenschema ist vergrößerte Schriftarten.

 
DenisR:
Von ansi habe ich es lesen (5 505 1009), d.h. i ist jetzt 5 statt 0 aus irgendeinem Grund, Dateigröße ist 505 wie zuvor und FileTell ist 1009 wie zuvor. In MT4 lautet das gleiche Skript (15 505 505).
Hmm, meine lautet 155091009.


//+------------------------------------------------------------------+
//|                                                         test.mq5 |
//|                                                           mrProF |
//|                                                          http:// |
//+------------------------------------------------------------------+
#property copyright "mrProF"
#property link      "http://"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+


void OnStart()
  {int handle;
   ulong i, size;
   double _Ask, _Bid;
   string str;
      
   handle = FileOpen("test.csv",FILE_CSV|FILE_READ|FILE_ANSI,',');
   
   if (handle != INVALID_HANDLE)
     {
      size = FileSize(handle);
      
      for (i = 0; i < size; i++)
        {
         str = FileReadString(handle);
         _Ask = FileReadNumber(handle);
         _Bid = FileReadNumber(handle);
        
         if (FileIsEnding(handle))
           {
            Print(i," ",size," ",FileTell(handle));
            break;
           }
        }
     }   
      
   FileClose(handle);

   return;

  }
//+------------------------------------------------------------------+


Versuchen Sie, Zeile für Zeile zu debuggen, wenn Sie wissen, wie...

 
mrProF:
Hmm, ich habe 155091009.



Ich hatte zuerst auch 15 505 1009, aber dann wurde das Terminal auf die neueste Version (408) aktualisiert und es wurde 5 505 1009. In jedem Fall aber darf das Dateiendungszeichen nicht größer sein als die Datei selbst. Das ist im Moment meine größte Sorge.
 
alexvd:

Weitere Einzelheiten sind erforderlich.

Bauen, ablegen, auflösen...

Habe es gerade mit der Datei ChartObject.mqh ausprobiert - scrollt auf und ab.

Builds 404 und 408, Win XP Prof SP3, 3,0 GHz CPU und 3,0 Gb RAM.

Schriftgröße und andere Einstellungen (außer Farbe) sind Standard.

Die Aktionen sind wie folgt:

1. Erstellen Sie eine Bibliothek oder ein anderes Programmmodul;

2. Erzeugen Sie eine Reihe von Prozeduren und Funktionen, die 100 überschreiten müssen. In meinem Fall war es 110 (ich habe mich über meine Migrationsbibliothek lustig gemacht).

Genauer gesagt waren es 110 Funktionen, und das Modul hatte einen Umfang von etwa 3310 Zeilen.

3. Kompilieren des Moduls;

4. Wir versuchen, die Liste der Funktionen durchzusehen.

In der Liste sah ich zwischen 100 und 106 Funktionen (bei jeder Neukompilierung eine andere Anzahl und Zusammensetzung von Funktionen). Zuerst wurden die Namen von 106 Funktionen angezeigt, dann wurde die Zahl immer kleiner.

Gleichzeitig waren nie alle 110 Funktionen in der Liste enthalten.

PS

Eine weitere seltsame Sache - ich weiß nicht, nach wie vielen Funktionen (auf jeden Fall weniger als 50) neue Funktionen nach der ersten Kompilierung nicht mehr in der Liste erschienen, musste ich zwei oder drei Neukompilierungen vornehmen.

Ich schlage vor, entweder die Reihenfolge der Bildung der Liste zu ändern, z.B. einzelne Klassen in Form eines Gruppenmenüs zuzuordnen (mit der Anzeige der "Füllung" Klasse in einer separaten Liste), oder einen separaten Manager zu organisieren, wie der in Delphi (Diskussion über einen solchen Antrag wurde bereits auf dem Forum gewesen).

 
-Alexey-:
alexvd:

Weitere Einzelheiten sind erforderlich.

Bauen, ablegen, auflösen...

Ich habe es gerade mit der Datei ChartObject.mqh ausprobiert - sie scrollt auf und ab.

Das letzte Bild scheint ein Problem mit der Anzahl der Zeilen zu sein, die größer als 100 ist. ChartObject.mqh hat nur 62 Zeilen in der Liste. Auflösung 1680x1050. Windows7, Schriftartenschema ist vergrößerte Schriftarten.

Ja, sie wurde reproduziert.

Danke, sehen wir uns das mal an.