先述の3パターンをモジュールにしてみました。
peekとpoke、memcpyのやり方はどこに改行があるかを特定しなければいけないという点で
どちらにも共通するので、準備段階の処理は同じになります。
#module
// 指定した改行の削除(メモリーノートパッド版)
#deffunc delCRLF_1 var buf, int p1
notesel buf;
src1 = "";
src2 = "";
noteget src1, p1-1;
noteget src2, p1;
notedel p1;
noteadd src1+src2, p1-1, 1;
return;
// 指定した番号(何番目か)の改行のインデックスを返す
#defcfunc _searchCRLF var buf, int p1
_idx = 0;
repeat p1
_idx += instr(buf, _idx, "\n") + 2;
loop
return _idx-2;
// 指定した改行の削除(peek&poke版)
#deffunc delCRLF_2 var buf, int p1
buflen = strlen(buf);
idx = _searchCRLF(buf, p1);
repeat buflen-idx
poke buf, idx+cnt, peek(buf, idx+cnt+2);
loop
return;
// 指定した改行の削除(memcpy版)
#deffunc delCRLF_3 var buf, int p1
buflen = strlen(buf);
idx = _searchCRLF(buf, p1);
memcpy buf, buf, buflen-idx, idx, idx+2;
return;
#global
// テスト用文字列
buf = {"
あいうえお
かきくけこ
さしすせそ
たちつてと
なにぬねの"};
pos 0, 0;
mes "元の文字列\n\n"+buf;
// メモリーノートパッド形式
buf2 = buf; // 元の文字列をコピー
delCRLF_1 buf2, 2;
pos 320, 0;
mes "メモリーノートパッドで2番目の改行削除\n\n"+buf2;
// peek&poke形式
buf2 = buf; // 元の文字列をコピー
delCRLF_2 buf2, 3;
pos 0, 240;
mes "peek&pokeで3番目の改行削除\n\n"+buf2;
// memcpy形式
buf2 = buf; // 元の文字列をコピー
delCRLF_3 buf2, 4;
pos 320, 240;
mes "memcpyで4番目の改行削除\n\n"+buf2;