EA-Setka-2/framework/extension/ext_string.mqh

73 lines
1.7 KiB
MQL5
Raw Permalink Normal View History

2025-05-30 14:50:44 +02:00
#ifndef FRAMEWORK_EXT_STRING_MQH
#define FRAMEWORK_EXT_STRING_MQH
#define EXT_STRING_EMPTY ""
#define dtos(value) DoubleToString(value, layer_account::digits())
#define ttos(value) TimeToString( value, TIME_DATE | TIME_MINUTES | TIME_SECONDS )
#define itos(value) IntegerToString(value)
#define ext_string_equals( first, second, check_case ) (StringCompare ( first, second, check_case ) == 0)
class ext_string {
public:
static string replace ( string value, string find, string replaced ) {
StringReplace ( value, find, replaced );
return value;
}
static double truncate_real_part ( double value, int count ) {
string buffer = DoubleToString ( value );
int length = StringLen ( buffer );
int index_of = StringFind ( buffer, ".", 0 );
if ( length - index_of + 1 <= count ) {
return value;
}
buffer = StringSubstr ( buffer, 0, index_of + 1 + count );
return StringToDouble ( buffer );
}
static string get_hash ( string value, ENUM_CRYPT_METHOD metod=CRYPT_HASH_SHA256 ) {
uchar data[];
StringToCharArray ( value, data );
ArrayResize ( data, ArraySize ( data ) - 1 );
uchar key[1] = {0};
uchar result[];
CryptEncode ( metod, data, key, result );
string resultStr = EXT_STRING_EMPTY;
for ( int i = 0; i < ArraySize ( result ); i++ ) {
resultStr += StringFormat ( "%02x", result[i] );
}
return resultStr;
}
};
class str_builder {
private:
string source;
public:
str_builder() {
source = EXT_STRING_EMPTY;
}
void append ( string value ) {
source += value;
}
void append_line ( string value ) {
source += value + "\r\n";
}
string to_str() {
return source;
}
};
#endif