Скачать MetaTrader 5

Функция для замены в числах точки на запятую

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Они уже зарабатывают с помощью Маркета. Зарабатывай и ты!
Андрей
1890
Андрей 2010.12.04 23:13 

Когда люди ругаются что Csv файл из под МТ не открывается - приходится объяснять
де... МТ4 - программа молодая, всего 230 версий, поэтому региональные
настройки пока не подхватывает.
В смысле, подхватывает, конечно, но только если разделитель дробной 
и целой части установлен, как точка. И всё нормально!
Показываешь проторенную дорожку к региональным настройкам,
там люди ставят точку- и все работает!
.
А тут случился казус... Excel 2002 оказывается подхватывает 
региональные настройки только при условии, что там стоит запятая...
Ну вот и приплыли - подружить МТ с Excel уже не получится...
.
Ну, я, понятное дело, не обрадовался. Вроде и сделать что-то надо...
Сунулся поискать StringReplace... нету.
.
Вот функцию написал... вроде работает

extern string NUMBER_DELIMITER = ".";
string makeItComma(string str) {
    int pos = StringFind(str, ".");
    string str1 = str;
    if(pos != -1) {
        str1 = StringSubstr(str, 0, pos) + NUMBER_DELIMITER + StringSubstr(str, pos+1);
    }
    return (str1);
}

P.S.: если у часов стрелки замерли- вы не думайте плохого- 
они работают. И даже время правильное показывают.
Правда, если только текущее время такое же, как на них.

Леонид
1782
Леонид 2010.12.05 00:16  

полезная весчь ...

igor
1144
igor 2010.12.05 17:59  
Мне кажется,что проще в Excel поставить децимал сепаратор тот который нужен. Excel для этого и создан.
Андрей
1890
Андрей 2010.12.05 18:26  
zhuki:
Мне кажется,что проще в Excel поставить децимал сепаратор тот который нужен. Excel для этого и создан.
При открытии файла csv? Decimal separator?
Excel открывает Csv без диалогов.
И вообще-то открывать нужно десятки файлов. А не один.
igor
1144
igor 2010.12.05 18:54  
jartmailru:
При открытии файла csv? Decimal separator?
Excel открывает Csv без диалогов.
И вообще-то открывать нужно десятки файлов. А не один.

Это разве не то?


Андрей
1890
Андрей 2010.12.05 19:14  
zhuki:

Это разве не то?

Спасибо, не знал, пригодится.
Может быть в этом и была вся "заковырка" на клиентском компьютере.
.
Однако, здесь нет разделителя списка (точка-с-запятой или запятая-
формат-то comma-separated-list) и формата даты- т.е. решение не полное.
Я как-то посидел полчаса- теперь мой csv из C++ по формату даты
и разделителю списка соответствует региональным стандартам.

EQU
323
EQU 2010.12.05 20:36  
jartmailru:

Спасибо, не знал, пригодится.
Может быть в этом и была вся "заковырка" на клиентском компьютере.
.
Однако, здесь нет разделителя списка (точка-с-запятой или запятая-
формат-то comma-separated-list) и формата даты- т.е. решение не полное.
Я как-то посидел полчаса- теперь мой csv из C++ по формату даты
и разделителю списка соответствует региональным стандартам.

мысль настолько хороша, што не мог не поделиццо..

Господа разарабоччики.. Товарищи!!!

а нафига в МТ _ваще присутствуют ДРОБНЫЕ?? числа..

Будет время - эт неспешно.. - подумайте.. ответьте..;)

Alexey Subbotin
4998
Alexey Subbotin 2010.12.05 20:45  
equ:

мысль настолько хороша, што не мог не поделиццо..

Господа разарабоччики.. Товарищи!!!

а нафига в МТ _ваще присутствуют ДРОБНЫЕ?? числа..

Будет время - эт неспешно.. - подумайте.. ответьте..;)

ваш вопрос откровенно ставит в тупик!))) Почаще бы такие глубокие мысли появлялись на нашем форуме!

по теме - у меня есть для универсальности писанная функция замены подстрок. Подойдет и для замены точки на запятую, и наоборот.

string StringReplace(string text, string matched_text, string replace_text)
{
   int pos=StringFind(text,matched_text);
   while(pos>=0)
   {
      if(pos==0) text = StringConcatenate(replace_text,StringSubstr(text,StringLen(matched_text)));
      else text = StringConcatenate(StringSubstr(text,0,pos),replace_text,StringSubstr(text,pos+StringLen(matched_text)));
      pos=StringFind(text,matched_text);
   }
   return(text);
} 
Vladimir Gomonov
8277
Vladimir Gomonov 2010.12.05 21:25  
equ:

мысль настолько хороша, што не мог не поделиццо..

Господа разарабоччики.. Товарищи!!!

а нафига в МТ _ваще присутствуют ДРОБНЫЕ?? числа..

Будет время - эт неспешно.. - подумайте.. ответьте..;)

Очевидно ж. Чтоб нерыночные котировки могли умещаться. // Ответ в стиле соседнего топика. ;)
Yuri
634
Yuri 2010.12.05 21:35  
Попробуйте загружать файл через меню Данные - Импорт внешних данных, хоть и CSV файл.
Vladimir Gomonov
8277
Vladimir Gomonov 2010.12.05 21:37  
equ:

а нафига в МТ _ваще присутствуют ДРОБНЫЕ?? числа..

А если серьёзно - меня долго злило отсутствие целочисленных индикаторных буферов. Ну и структурных тож. Да и многомерные массивы в качестве буферов удобны во многих случаях.

Щаз привык.. смирился.

После появления пятёрки первым делом посмотрел, не появилась ли фича.. Не. Не появилась.

Ну и ладно. Лишний повод вумные скоростные длл-ки писать.

А вапче разрабтчиков спросить надо, что за суеверия у них на эту тему..

Я вот не понимаю даже зачем dooble для котировок использовать. На крайняк float вполне сойдёт, если целых шугаться. Пользы никакой, только пространство жрут.

12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий