2016-08-24 5 views
2

Я довольно новичок в языке CAPL. Следовательно, у меня возникают проблемы с записью данных в файл .txt. Это код, который я написал (а):Запись CAPL в текстовый файл

includes 
{ 

} 

variables 
{ 
    message Generate_Num Gen; 
    message Logger Logs; 
    msTimer tim_100ms; 
    msTimer tim_500ms; 
    int time_over; // 500 ms flag. 
    dword handle=0; 
    float val=0; 
    long index=0; 
    int val_arr[512]; 
} 

on start 
{ 
    time_over=0; 
    setWritePath("C:\\Users\\Türker\\Desktop\\soft_pro"); 
    handle= openFileWrite("Log.txt",1); 
    Gen.Num_Data=1; 
} 

on envVar Logger_Sw 
{ 

    if(@this) 
    { 
     setTimer(tim_500ms,500); 
     setTimer(tim_100ms,100); 
    } 
    else 
    { 
     cancelTimer(tim_500ms); 
     cancelTimer(tim_100ms); 
    } 

} 

on envVar Save_txt 
{ 
    if(@Save_txt==1) 
    { 
     int i; 
     float val_n; 
     for(i=0;i<elcount(val_arr);i++) 
     { 
     val_n=val_arr[i]; 
     writeProfileFloat("1","1",val_n,"Log.txt"); 
     } 
    } 
} 

on timer tim_100ms 
{ 
    output(Gen); 
    Gen.Num_Data++; 
    setTimer(tim_100ms,100); 
} 

on message Generate_Num 
{ 
    if(time_over==1) 
    { 
    val=this.Num_Data; 
    val_arr[index]=val; 
    Logs.Logged_Val=val; 
    output(Logs); 
    index++; 
    time_over=0; 
    } 

} 

on timer tim_500ms 
{ 
    time_over=1; 
    setTimer(tim_500ms,500); 
} 

Я хранил выборочные данные в массиве «val_arr». Я хочу, чтобы это было написано в текстовом файле. Однако он всегда перезаписывает записанные данные. Окружающая переменная «Save_txt» выполняет задание на запись.

Cheers.

ответ

0

Откройте файл в другом режиме доступа.

OpenFileWrite ("Log.txt",2); 

Если режим = 0 письмо может быть выполнен в режиме ASCII;
Если режим = 1 запись может выполняться в двоичном режиме. Уже существующий файл будет перезаписан.
mode = 2 для добавления данных в конце файла для использования в режиме ASCII.
mode = 3 для добавления данных в конце файла для двоичного режима.

0

Вот простой пример записи значения переменной по мере его увеличения.

variables 
{ 
    dword logFile;  // logfile handle 
    int i;     
    char results[1024]; // store our formatted string 
} 

on start 
{ 
    setFilePath("C:\\Demo\\Results", 2);  // 2 = read & write 
    logFile = openFileWrite("Results.txt", 2); // 2 = append file 

    for (i = 0; i < 10; i++) 
    { 
    snprintf(results, 1024, "The value of 'i' is %d\n", i); 
    filePutString(results, 1024, logFile);  
    } 
    fileClose(logFile); 
} 
Смежные вопросы