|
新規の関数 SetUnicodeIndexAutoConvert を次のマクロで試してみました。
//--------------------------------------------------
loaddll "hmjre.dll";
#n = dllfunc("SetUnicodeIndexAutoConvert", 1);
$seperator = "[,/\u2f]";
$line1 = "\uC0\uC1\uC2,\uD2\uD3\uD4"; //(1)
$line2 = "\uC0\uC1\uC2あいabc/\uD2\uD3\uD4"; //(2)
$line3 = "あいうabc\u2fあいうddd"; //(3)
#a = dllfunc( "FindRegular", $seperator, $line1, 0 );
$part1a = wcsleftstr($line1, #a);
$part1b = wcsmidstr($line1, #a + 1);
message $part1a;
message $part1b;
#a = dllfunc( "FindRegular", $seperator, $line2, 0 );
$part2a = wcsleftstr($line2, #a);
$part2b = wcsmidstr($line2, #a + 1);
message $part2a;
message $part2b;
#a = dllfunc( "FindRegular", $seperator, $line3, 0 );
$part3a = wcsleftstr($line3, #a);
$part3b = wcsmidstr($line3, #a + 1);
message $part3a;
message $part3b;
freedll;
endmacro;
//--------------------------------------------------
(1) は成功しますが,(2),(3)はうまくいきません。
次のマクロでも同じ結果になりました。使い方がおかしいのでしょうか。
//--------------------------------------------------
loaddll "hmjre.dll";
$seperator = "[,/\u2f]";
$line1 = "\uC0\uC1\uC2,\uD2\uD3\uD4"; //(1)
$line2 = "\uC0\uC1\uC2あいabc/\uD2\uD3\uD4"; //(2)
$line3 = "あいうabc\u2fあいうddd"; //(3)
#a = dllfunc( "FindRegular", $seperator, $line1, 0 );
#a = byteindex_to_charindex( $line1, #a );
$part1a = wcsleftstr($line1, #a);
$part1b = wcsmidstr($line1, #a + 1);
message $part1a;
message $part1b;
#a = dllfunc( "FindRegular", $seperator, $line2, 0 );
#a = byteindex_to_charindex( $line2, #a );
$part2a = wcsleftstr($line2, #a);
$part2b = wcsmidstr($line2, #a + 1);
message $part2a;
message $part2b;
#a = dllfunc( "FindRegular", $seperator, $line3, 0 );
#a = byteindex_to_charindex( $line3, #a );
$part3a = wcsleftstr($line3, #a);
$part3b = wcsmidstr($line3, #a + 1);
message $part3a;
message $part3b;
freedll;
endmacro;
//--------------------------------------------------
なお,前のスレッドで h-tom さんに紹介していただいた"hmonig.dll"を使う
と成功します。
//--------------------------------------------------
loaddll "hmonig.dll";
$seperator = "[,//\u2f]";
$line1 = "\uC0\uC1\uC2,\uD2\uD3\uD4";
$line2 = "\uC0\uC1\uC2あいabc/\uD2\uD3\uD4";
$line3 = "あいうabc\u2fあいうddd";
#a = dllfuncw( "FindRegularW", $seperator, $line1, 0 );
$part1a = wcsleftstr($line1, #a);
$part1b = wcsmidstr($line1, #a + 1);
message $part1a;
message $part1b;
#a = dllfuncw( "FindRegularW", $seperator, $line2, 0 );
$part2a = wcsleftstr($line2, #a);
$part2b = wcsmidstr($line2, #a + 1);
message $part2a;
message $part2b;
#a = dllfuncw( "FindRegularW", $seperator, $line3, 0 );
$part3a = wcsleftstr($line3, #a);
$part3b = wcsmidstr($line3, #a + 1);
message $part3a;
message $part3b;
freedll;
endmacro;
//--------------------------------------------------
山紫水明
|
|