Werte protokollieren

 

Hallo Leute,

ich versuche gerade verschiedene Werte in eine Datei zu protokollieren. Ziel soll es sein, den Tester über einen bestimmten Zeitraum laufen zu lassen (z.B. 3 Tage) und dann eine TXT zu erhalten, die 3 Zeilen mit den protokollierten Daten enthält. Die Werte werden über den Tag mitgeschrieben und die Protokollfunktion am Ende des Handels aufrufen, anschließend gelöscht und ein neuer Handelstag beginnt.

Leider wird immer nur der letzte Tag mitgeschrieben, da die Datei immer wieder neu geschrieben wird, also nicht geöffnet um die Protokollierung weiter zu führen.

Gibt es eine Möglichkeit, das zu erreichen? Ich habe hier kein "FILE_WRITE_ADD" oder so was gefunden.

Hier das Script:


void PROTOKOLL()
{
   int file_handle=FileOpen(InpDirectoryName+"//"+InpFileName,FILE_READ|FILE_WRITE|FILE_TXT);
   
   FileWrite(file_handle,
               TimeCurrent()          ," FP:  CP:=",DoubleToString(FP_CrossPoints,0)," Max:=",DoubleToString(FP_MaxCrossPoints,0)," Min:=",DoubleToString(FP_MinCrossPoints,0)
                                      ," FA1: CP:=",DoubleToString(FA1_CrossPoints,0)," Max:=",DoubleToString(FA1_MaxCrossPoints,0)," Min:=",DoubleToString(FA1_MinCrossPoints,0) 
                                      ," FA2: CP:=",DoubleToString(FA2_CrossPoints,0)," Max:=",DoubleToString(FA2_MaxCrossPoints,0)," Min:=",DoubleToString(FA2_MinCrossPoints,0) 
                                      ," STO: CP:=",DoubleToString(Stoch_CrossPoints,0)," Max:=",DoubleToString(Stoch_MaxCrossPoints,0)," Min:=",DoubleToString(Stoch_MinCrossPoints,0) 
                                      ," ALB: CP:=",DoubleToString(ALB_CrossPoints,0)," Max:=",DoubleToString(ALB_MaxCrossPoints,0)," Min:=",DoubleToString(ALB_MinCrossPoints,0) 
                                      ," RVI: CP:=",DoubleToString(RVI_CrossPoints,0)," Max:=",DoubleToString(RVI_MaxCrossPoints,0)," Min:=",DoubleToString(RVI_MinCrossPoints,0) 
                                      ," MA:  CP:=",DoubleToString(MA_CrossPoints,0)," Max:=",DoubleToString(MA_MaxCrossPoints,0)," Min:=",DoubleToString(MA_MinCrossPoints,0) );
   FileClose(file_handle);
}   

Danke! Uwe

 

Hier ist meine Funktion eine Zeile zu einer bestehenden Datei am Ende hizuzufügen (jede Zeile muss mit "\n" enden!!):

//use:  addLineToFile("newLine\n", "folder\\name.txt")
bool addLineToFile(const string line, const string fName, const bool shared = true, const int maxPrt=10) {
   ResetLastError();
   int nErr=0;
   int fH;
   if ( shared )
      fH = FileOpen(fName,FILE_READ|FILE_WRITE|FILE_BIN|FILE_SHARE_READ|FILE_SHARE_WRITE);
   else 
      fH = FileOpen(fName,FILE_READ|FILE_WRITE|FILE_BIN);
   if (fH == INVALID_HANDLE ) { if (nErr<maxPrt) ErrT("File: "+fName+" Open FAILED "+(string(++nErr))); return(false);}
   //ErrT("File: "+fName+" Open");
   FileSeek(fH,0,SEEK_END);
   //ErrT("File: "+fName+" SeekEnd ");
   FileWriteString(fH, line, StringLen(line) );
   //ErrT("File: "+fName+" WriteLine: "+line);
   FileClose(fH);
   //ErrT("File: "+fName+" Close");
   if (_LastError<2) return(true);
   if ( nErr < maxPrt ) ErrT("Write "+(string(++nErr))+" to file: "+fName+" went wrong?");
   return(false);
}
 
Carl Schreiber:

Hier ist meine Funktion eine Zeile zu einer bestehenden Datei am Ende hizuzufügen (jede Zeile muss mit "\n" enden!!):

Super!

vielen Dank! Das bringt mich weiter :-)

Gtuß Uwe