Собственно сабж.
С какой целью? Для передачи в длл?
Да нет. У меня идет сброс на диск из строчного массива поэлементно. Инициализирется слив из разных мест программы по различным критериям: объем накопленной информации, время, прошедшее с последнего слива ил деинициализация эксперта. Если происходит слив по двум последним критериям, он не заполнен полностью новыми данными, а есть остатки от предыдущего цикла его заполнения. Чтобы не мудрить,я после каждого слива делаю ему ресайз до нулевого размера, а потом обратно до нужного. Дешево и сердито. Но при этом, все элементы получают значение по умолчанию. Т.е. не читаемая пустая строка. А мне ее надо определить, чтобы остановить на таком элементе слив. Все предыдущиу-то имеют какое-то значение. На первом пустом встаем. Вот кусок кода:
k = ArraySize(saTicks); for (i = 1; i <= (k - 1); i++) { if (saTicks[i] == "") { Print("Empty", " ", i, " of ", k," - ", saTicks[i]); break; } Print("Write", " ", i, " of ", (k - 1)," - ", saTicks[i]); } pReason = StringConcatenate(pReason, " ", (i - 1), "/" , (k - 1)); Print(pReason, " ..\\", sFPathName, sFIndex, " - ", TimeToStr(TimeCurrent(),TIME_SECONDS)); FileFlush(iFileHandle); ArrayResize(saTicks,0); // Resize to zero & ... ArrayResize(saTicks,iBufTicksSize + 1); // ... resize to setted in externals uplevel +1 iBufTmrSize = GetTickCount() - iFlushTimer; // set new size of FlushTimer like in previous cycle iFlushTimer = GetTickCount(); // reset FlushTimer iBufTicks = 0; // reset buffered ticks counter for (i = 0; k -1; i++) {saTicks[i] = "";}
Приходится в конце пробегаться по всем элементам с присвоением ""
Да нет.
Одна инт переменная, и никакого геммора (и, кстати, лишних ArraySize и ArrayResize).
Мне кажется, проще хранить количество заполненных элементов, и "сливать" только их ( for( i = 0; i < COUNT; i ++ ) { sliv(array[i]); } ).
Одна инт переменная, и никакого геммора (и, кстати, лишних ArraySize и ArrayResize).
Да. Конечно так. Благодарю. Я просто сам зациклился на выявлении
string "" и забыл зачем это нужно. Это уже ночью было :)
Но, так или иначе, Проблема (может это только для меня?) с string "" остается... Я, кажется, уже все пересмотрел на эту тему.
Рекомендую перейти от одномерного строкового массива к двумерному целочисленному...
Рекомендую перейти от одномерного строкового массива к двумерному целочисленному...
Вах... А как же с моими string данными? Хранить их в виде десятичных последовательностей? Или я не так понял?
Вах... А как же с моими string данными? Хранить их в виде десятичных последовательностей? Или я не так понял?
Ну, я это и имел ввиду. Но ведь это полная засада получается. Идет
сбор тиковой истории, по большому кол-ву инструментов. По трем
ДЦ, в реале. Для этого отдельный комп выделяется. Задохнется
комп и потери тиков будут.
Ну, я это и имел ввиду. Но ведь это полная засада получается. Идет сбор тиковой истории, по большому кол-ву инструментов. По трем ДЦ, в реале. Для этого отдельный комп выделяется. Задохнется комп и потери тиков будут.
Пример навскидку привести не могу, но в моей программистской практике бывали такие случаи, когда, вроде бы, большой и не совсем логичный код работает намного быстрее компактного и логичного кода. Критерий истины здесь может быть только один - это практика. Не попробовав, утверждать нельзя.
А быстродействие надо просто проверить (это Chen-у).
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Здравствуйте.
Собственно сабж. Если есть возможность ответить подробнее, то:
1. Какое значение получает строковая переменная при инициализации?
2. Как получить ее значение (сынициализированное)? Она не равна "" . С чем ее сравнивать?
3. Как можно махом сынициализировать строковый массив (по аналогии с int ArrayInitialize( double&array[], double value, с присвоением элементам нормальной пустой строки ""? (цикл, sTmp[n] = {"", "", ... , ""), ресайз в ноль и обратно, плз, не предлагать)
Благодарю