Ошибки, баги, вопросы - страница 3510

 
A100 #:

Никаких принципиальных сложностей с хранением нуля в string нет, потому что существует длина строки

Для доказательства этого утверждения хорошо бы показать аналоги.

DATA_STRING::ToString
DATA_STRING::FromString
 
fxsaber #:

Для доказательства этого утверждения хорошо бы показать аналоги.

Аксиома не требует доказательств. В данный момент есть ошибки в реализации. Вы путаете ошибки в реализации ShortArrayToString и StringToShortArray и сложности. Ошибки есть, а сложностей - нет: string - это буфер заранее известного размера и нет разницы, что хранить в ячейке этого буфера - ноль или другое значение

 
A100 #:

Аксиома не требует доказательств. В данный момент есть ошибки в реализации. Вы путаете ошибки в реализации ShortArrayToString и StringToShortArray и сложности. Ошибки есть, а сложностей - нет: string - это буфер заранее известного размера и нет разницы, что хранить в ячейке этого буфера - ноль или другое значение

FileReadString в помощь.

 
fxsaber #:

FileReadString в помощь.

FileReadString неправильно работает, а FileWriteString - правильно (в данном случае):

void OnStart()
{
    string text = "ABC" + "\0" + "DEF";
    int h = FileOpen( "tmp.txt", FILE_BIN | FILE_WRITE );
    Print(FileWriteString( h, text, StringLen( text )));
    FileClose( h );
}

Результат: 14 байт (7 * sizeof(ushort))

Файлы:
tmp.txt  1 kb
 
A100 #:

FileReadString неправильно работает

А как правильно?
 
fxsaber #:
А как правильно?

Правильно было бы, если бы записываемая и считываемая строки были бы равны:

void OnStart()
{
    string file = "tmp.txt";
    string text1 = "ABC" + "\0" + "DEF";
    int h1 = FileOpen( file, FILE_BIN | FILE_WRITE );
    int n = FileWriteString( h1, text1, StringLen( text1 ));
    FileClose( h1 );
    int h2 = FileOpen( file, FILE_BIN | FILE_READ  );
    string text2 = FileReadString( h2, n/sizeof(ushort));
    FileClose( h2 );
    Print(StringLen(text1)==StringLen(text2));
}

Результат:   false

Ожидалось: true

А они не равны, при том, что text1 совпадает с tmp.txt - значит в данном случае FileWriteString работает правильно, а FileReadString - неправильно

 
A100 #:

Правильно было бы, если бы записываемая и считываемая строки были бы равны:

Попробуйте тогда связку EventChartCustom+OnChartEvent  с передачей/приемом sparam.
 
fxsaber #:
Попробуйте тогда связку EventChartCustom+OnChartEvent  с передачей/приемом sparam.

В связке не работает:

const string text = "ABC" + "\0" + "DEF";
void OnInit()
{
    EventChartCustom( 0, 0, 0, 0, text );
}
void OnChartEvent(const int id, const long&, const double&, const string& sparam)
{
    if ( id == CHARTEVENT_CUSTOM ) Print( text == sparam );
}

Результат:   false

Ожидалось: true

 
Не возможно закачать с маркета советник на мт4 ,который стоит на впс ., пишет на терминале Installation is failed , а в журнале - MQL4 Market: failed download product 'Risen mt4' [403]. В чём причина ,непонятно .

 
A100 #:

В связке не работает:

Так и останется.