Kann nicht in die Datei schreiben, wenn der Auftrag geöffnet ist

 

Ich habe einen EA, der einige Informationen in eine Logdatei schreibt. An einigen Stellen entscheidet er sich, einen Auftrag zu öffnen, und wenn dies geschieht, schreibt der EA nicht mehr in die Datei, ich erhalte nur:

Ungültige Integer-Zahl als Parameter 1 für die Funktion 'FileWrite'

Ich hänge einen Screenshot an: Wenn der EA die Order öffnet, ändert sich der Dateihandle nicht, aber aus irgendeinem Grund kann er die Datei nicht mehr öffnen. HILFE!!

Log-Fehler

 
Sie hätten stattdessen die entsprechenden Codes anhängen sollen. Sehen Sie sich einige file_write-Beispiele in der Codebasis an. Prüfen Sie die Gründe für die Fehlermeldung in den Dokumentationen.
 

Danke, der Code funktioniert gut, es erstellt die Datei, wenn der EA geladen wird, dann auf jeden Tick öffne ich die Datei, setzen Tonnen von Informationen in der Datei und dann schließen Sie es. Aber sobald es eine Bestellung öffnet, funktioniert es nicht mehr.

Ich habe dies überall gesucht und ich kann keine Informationen über den Fehler finden, ich kann niemanden finden, der das gleiche Problem hatte, ich kann niemanden mit dem gleichen Fehler finden, einige Leute haben es:

"Ungültige Integer-Zahl als Parameter 1 für TimeToNumber-Funktion "

Aber ich kann nichts finden über:

"Ungültige Integer-Zahl als Parameter 1 für die FileWrite-Funktion "

 
favosys:

Danke, der Code funktioniert gut, es erstellt die Datei, wenn der EA geladen wird, dann auf jeden Tick öffne ich die Datei, setzen Tonnen von Informationen in der Datei und dann schließen Sie es. Aber sobald es eine Bestellung öffnet, funktioniert es nicht mehr.

Ich habe dies überall gesucht und ich kann keine Informationen über den Fehler finden, ich kann niemanden finden, der das gleiche Problem hatte, ich kann niemanden mit dem gleichen Fehler finden, einige Leute haben es:

"Ungültige Integer-Zahl als Parameter 1 für TimeToNumber-Funktion "

Aber ich kann nichts finden über:

"Ungültige Integer-Zahl als Parameter 1 für die FileWrite-Funktion "

Ihr Handle ist ungültig/nicht int ... Korrigieren Sie Ihren Code. Vielleicht verwenden Sie eine lokal deklarierte Variable mit demselben Namen wie eine global deklarierte Variable, wobei die eine ein int und die andere kein int ist. Es ist schwer zu helfen, ohne Ihren Code zu sehen.
 

SUre, das ist der Code für die init-Funktion:

int init()

  {

//----

   File_Name = StringConcatenate(Name_of_file, " - ", Symbol(), " - ", TimeToStr(TimeLocal(),TIME_DATE), " - ", TimeHour(TimeLocal()), ".", TimeMinute(TimeLocal()), ".", TimeSeconds(TimeLocal()), ".txt");

   Handle=FileOpen(File_Name,FILE_CSV|FILE_WRITE,";");//File opening

   if(Handle==-1)                      // File opening fails

     {

      Alert("An error while opening the file. ",// Error message

              "May be the file is busy by the other applictiom");

      PlaySound("Bzrrr.wav");          // Sound accompaniment

      return;                          // Exir start()      

     }

     FileClose( Handle );

//----

   return(0);

  } 

Damit wird also nur die Datei erstellt.

Dann öffne ich in der start-Funktion die Datei mit:

Handle=FileOpen(File_Name,FILE_CSV|FILE_READ|FILE_WRITE,";");//File opening
    //Handle = 1;
    Print("Handle: ", Handle);
   if(Handle==-1)                      // File opening fails
     {
      Alert("An error while opening the file. ",// Error message
              "May be the file is busy by the other applictiom");
      PlaySound("Bzrrr.wav");          // Sound accompaniment
      return;                          // Exir start()      
     }
   FileSeek(Handle, 0, SEEK_END);

Und dann schreibe ich Sachen in die Datei wie:

Qnt_Symb=FileWrite(Handle,"**** STARTING TICK ", Symbol(), ": ", TimeToStr(TimeLocal(),TIME_DATE|TIME_SECONDS), " ****");
Qnt_Symb=FileWrite(Handle,"************************************************************"); 

Und dann schließe ich die Datei am Ende

Qnt_Symb=FileWrite(Handle,"***************************");      
Qnt_Symb=FileWrite(Handle,"**** END TICK ", Symbol(), " ****");        
FileClose( Handle );
//----
   return(0);

Und das war's.

Vielen Dank für eure Hilfe!

 
favosys:

SUre, das ist der Code für die init-Funktion:

Damit wird also nur die Datei erstellt.

Dann öffne ich in der start-Funktion die Datei mit:

Und dann schreibe ich Sachen in die Datei wie:

Und dann schließe ich die Datei am Ende

Und das war's.

Vielen Dank für eure Hilfe!

Haben Sie nach ( Strg + F ) Handle in Ihrem Code gesucht, um andere Deklarationen zu finden ? haben Sie irgendwelche Rückgaben in start() außer am Ende ? haben Sie sich die CSV-Datei angesehen, um zu sehen, ob sie vollständig ist ? wenn Künste fehlen, könnte Ihnen das eine Idee davon geben, was ausgeführt wird oder nicht.
 
Handle=FileOpen(File_Name,FILE_CSV|FILE_WRITE,";");//File opening
 Handle=FileOpen(File_Name,FILE_CSV|FILE_READ|FILE_WRITE,";");//File opening
Ungültiges letztes Argument - kein int
 
RaptorUK:
Haben Sie in Ihrem Code nach ( Strg + F ) Handle gesucht, um andere Deklarationen zu finden? Haben Sie andere Rückgaben in start() als am Ende? Haben Sie sich die CSV-Datei angesehen, um zu sehen, ob sie vollständig ist? Wenn arts fehlen, könnte Ihnen das eine Idee davon geben, was ausgeführt wird oder nicht.


Hallo Raptor UK,

Es gibt keine weiteren Handle-Dekalationen

Die einzige andere Rückgabe ist die, die Sie beim Öffnen der Datei sehen, wenn Handle -1 ist

Ich bin mir nicht sicher, was Sie meinen, wenn die Datei vollständig ist. Wenn der Auftrag geöffnet wird, wird die gesamte Startfunktion verarbeitet, und ich weiß, dass die Datei die letzten Zeilen, die ** END TICKET **-Zeilen, enthält, so dass ich weiß, dass sie das Ende erreicht und die Datei geschlossen hat.

Was meinen Sie mit fehlenden Künsten? Tut mir leid, ich weiß nicht, was Kunstwerke sind?

 
WHRoeder:
Ungültiges letztes Argument - kein int


Hallo WHRoeder,

Was meinen Sie damit? Das letzte Argument von FileOpen ist

Begrenzungszeichen - Begrenzungszeichen für csv-Dateien. Standardmäßig wird das Symbol ';' verwendet.

Prost

 
favosys:


Hallo Raptor UK,

Es gibt keine weiteren Handle-Dekalationen

Die einzige andere Rückgabe ist die, die Sie beim Öffnen der Datei sehen, wenn Handle -1 ist

Ich bin mir nicht sicher, was Sie meinen, wenn die Datei vollständig ist. Wenn der Auftrag geöffnet wird, wird die gesamte Startfunktion verarbeitet, und ich weiß, dass die Datei die letzten Zeilen, die ** END TICKET ** Zeilen, enthält, so dass ich weiß, dass sie das Ende erreicht und die Datei geschlossen hat.

Was meinen Sie mit fehlenden Künsten? Tut mir leid, ich weiß nicht, was Künste sind?

Entschuldigung, "Teile" ... erhalten Sie die Meldung **** END TICK USDCHF **** ? oder endet es vorher ?
 
favosys:


Hallo WHRoeder,

was meinen Sie damit? Das letzte Argument von FileOpen ist

Begrenzungszeichen - Begrenzungszeichen für csv-Dateien. Standardmäßig wird das Symbol ';' verwendet.

Sie haben ";" nicht ';'... die Fehlermeldung, die Sie erhalten haben, bezog sich auf Parameter 1, ist das nicht das Dateihandle?