string to_split="мама_мыла_раму"; // строка для разбивки на подстрокиstring sep="_"; // раздедитель в виде символаushort u_sep; // код символа разделителяstring result[3]; // массив для получения строк//--- получим код разделителя
u_sep=StringGetCharacter(sep,0);
//--- разобьем строку на подстрокиint k=StringSplit(to_split,u_sep,result);
//--- выведем комментарий PrintFormat("Получено строк: %d. Использован разделитель '%s' с кодом %d",k,sep,u_sep);
//--- теперь выведем все полученные строкиif(k>0)
{
for(int i=0;i<k;i++)
{
PrintFormat("result[%d]=%s",i,result[i]);
}
}
StringSplitについて: なぜ静的配列が使えないのでしょうか?
ヘルプの例
動作はしますが、エラー4007が発生します。メモリも十分ありそうだし、サイズを変える必要もなさそうだし...よくわからない。StringSplitについて:なぜ静的配列が使えないのでしょうか?
ヘルプファイルからの例
動作はしますが、エラー4007が発生します。メモリは足りているようだし、リサイズも必要ないようだし・・・よくわからない。ヘルプには「ママがフレームを洗った」とも書かれているのでしょうか?ヘルプにある例を参照しているのであれば、その例へのリンクも教えてください。
信じられないだろうが...。
ストリングスプリット
信じられないだろうが...。
ストリングスプリット
配列宣言された文字列のようなものはありません result[3]; リンクにエラーがあります、なぜなら。
"配列の再分配に必要なメモリが足りないか、静的配列のサイズを変更しようとした!"
配列宣言された文字列result[3]などは存在しません;これにはエラーがあります。
私は、「なぜ」と問いかけ、「どこ(を変えたのか)」を強調した。
理由を聞いて、どこを(変えたのか)強調しました。
配列を 静的と宣言 したから -3.そして、出来上がった部分文字列は3文字以上となる。
静的な[3]は3文字ではなく、3(副)行だと思いました。
はい、3文字までなら削除可能です
というわけではありません。一般に静的配列は、いつ、どのように使用するのかが明確ではありません。コンパイラに任せきりで、動いているようでいてエラーが出る、そんな問題には遭遇したくないようです。