Проблема с CSV

 

Помогите понять проблемку.

Есть такой код

string data[10][3];
while (FileIsEnding(handle)==FALSE)
   {
    for (j=0;j<=3;j++)
    data [i][j] = FileReadString(handle);
    i++;
   } 

Файл имеет строку:

20090721;000429;950.90000;15


Когда я пытаюсь узнать значение

data[0][0]=20090721

data[0][1]=000429

data[0][2]=950.90000

data[0][3]=

Почему в data[0][3] не присваивается значение '15'?








            
 
Потому что количества ячеек не хватает в массиве.
 
Раз уж залез в эту тему тоже спрошу,..... возможна ли такая ситуация с записью в CSV файл,.... при большом кол-ве записи данных (из функций разнообразных относящихся к ордерам), зацикливание, повтор, дублирование, записи данных? то есть изначально запись идет нормально какое-то время, а потом происходит повтор записи предыдущих данных, причем многократно, потом снова в какойто момент пишет новые данные,.. и потом сново циклит запись, и так далее...... может ли это быть из-за кол-ва записываемых данных,.. или к примеру из за нехватки аппаратных средств компа,..... ???????? почему может такая ситуевина возникнуть?
 

Где-то промелькивала инфа от разработчиков (Стринго или Роша, не помню)

суть: закрывайте файл почаще...

 

У меня тож проблема... ;)

Пытаюсь сообразить как читать цсв "по координатам".

Если так:

дата;

дата;

...;

или так:

дата;дата; ...;

читать не проблема, то вот читать\писать "таблицу 4х5" пока никак.

дата;дата;дата;дата;

дата;дата;дата;дата;

дата;дата;дата;дата;

дата;дата;дата;дата;

дата;дата;дата;дата;

Функция типа Read(№столбца, №строки);

пример выше Read(3, 4);

 
kombat >>:

Где-то промелькивала инфа от разработчиков (Стринго или Роша, не помню)

суть: закрывайте файл почаще...

хм,... я закрываю его после записи 3 строк с содержинем в них 16 записываемых параметров,.....

если я буду зарывать файл после каждой из строк,.... думаете это должно сработать? 

 
Infinity >>:

хм,... я закрываю его после записи 3 строк с содержинем в них 16 записываемых параметров,.....

если я буду зарывать файл после каждой из строк,.... думаете это должно сработать?


Не знаю... ибо не сталкивался с подобной проблемой.

Вполне может быть и перегруз оперативы...

может https://docs.mql4.com/ru/files/FileFlush поможет?

 
kombat >>:

Не знаю... ибо не сталкивался с подобной проблемой.

Вполне может быть и перегруз оперативы...

может https://docs.mql4.com/ru/files/FileFlush поможет?

спасибо я попробую,....! надеюсь это меня спасет)

 
Infinity писал(а) >>

спасибо я попробую,....! надеюсь это меня спасет)

кода не видел, но попытаюсь предположить проверить циклы... особенно с этим нужно осторожно, если "открытие", "закрытие", "запись данных" разнесены достаточно далеко друг от друга... в логическом плане... "закрывайте чаще" - направлено именно на устранение этой ошибки... проверьте логику. на системные ошибки, в этом случае, надо грешить в самую последнюю очередь.

 
DDFedor >>:

кода не видел, но попытаюсь предположить проверить циклы... особенно с этим нужно осторожно, если "открытие", "закрытие", "запись данных" разнесены достаточно далеко друг от друга... в логическом плане... "закрывайте чаще" - направлено именно на устранение этой ошибки... проверьте логику. на системные ошибки, в этом случае, надо грешить в самую последнюю очередь.

Все довольно бонально,... стоит флаг записи при определенном условии,..... если последний ордер закрылся,.. флаг true запись в файл результатов  закрытого ордера + параметры, если ордер еще присутствует в рынке, флаг записи в файл false...  поэтому тут даже входа двойного не происходит на запись. а запись сама тоже проста .флаг есть,write, .write.write............. close file, все цикл закончен. появился уже новый ордер,... но запись,... в файл по его закрытию не происходит, вместо этого он дублирует запись предыдущего закрытого. 

 
Infinity писал(а) >>

Все довольно бонально,... стоит флаг записи при определенном условии,..... если последний ордер закрылся,.. флаг true запись в файл результатов закрытого ордера + параметры, если ордер еще присутствует в рынке, флаг записи в файл false... поэтому тут даже входа двойного не происходит на запись. а запись сама тоже проста .флаг есть,write, .write.write............. close file, все цикл закончен. появился уже новый ордер,... но запись,... в файл по его закрытию не происходит, вместо этого он дублирует запись предыдущего закрытого.

Ваши слова ни к чему, и ни о чем не говорят... если уверены в логике кода, тогда вопрос логики отпадает... не уверены - код "в студию"... ошибки нужно искать последовательно. и чтобы переходить на следующий уровень проверки нужно быть уверенным в правильности на предыдущем уровне.

Причина обращения: