MQL5Book/Scripts/p4/StringInit.mq5
super.admin 1c8e83ce31 convert
2025-05-30 16:09:41 +02:00

66 lines
No EOL
2.4 KiB
MQL5

//+------------------------------------------------------------------+
//| StringInit.mq5 |
//| Copyright 2021, MetaQuotes Ltd. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#define PRTE(A) Print(#A, "=", (A) ? "true" : "false:" + (string)GetLastError())
//+------------------------------------------------------------------+
//| Helper function to show the given string and its metrics |
//+------------------------------------------------------------------+
void StrOut(const string &s)
{
Print("'", s, "' [", StringLen(s), "] ", StringBufferLen(s));
}
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart()
{
string s = "message";
StrOut(s);
PRTE(StringReserve(s, 100)); // ok, but got larger capacity: 260
StrOut(s);
PRTE(StringReserve(s, 500)); // ok, buffer is expanded to 500
StrOut(s);
PRTE(StringSetLength(s, 4)); // ok: string is shrinking
StrOut(s);
s += "age";
PRTE(StringReserve(s, 100)); // ok: but buffer is still 500
StrOut(s);
PRTE(StringSetLength(s, 8)); // no: string expansion not available
StrOut(s); // via StringSetLength
PRTE(StringInit(s, 8, '$')); // ok: string is expanded and filled
StrOut(s); // buffer is the same
PRTE(StringFill(s, 0)); // ok: string is collapsed, because it's
StrOut(s); // filled with 0, buffer is intact
PRTE(StringInit(s, 0)); // ok: string is zeroed, including buffer
// s = NULL; // equivalent of above
StrOut(s);
/*
output:
'message' [7] 0
StringReserve(s,100)=true
'message' [7] 260
StringReserve(s,500)=true
'message' [7] 500
StringSetLength(s,4)=true
'mess' [4] 500
StringReserve(s,10)=true
'message' [7] 500
StringSetLength(s,8)=false:5035
'message' [7] 500
StringInit(s,8,'$')=true
'$$$$$$$$' [8] 500
StringFill(s,0)=true
'' [0] 500
StringInit(s,0)=true
'' [0] 0
*/
}
//+------------------------------------------------------------------+