10/06/26 09:57:52 YCZ3L8nQ0
>>574
ポインタで受け取ったら、実体をコピーすればいいです。
> VB.net
> Declare Function lstrcpy Lib "kernel32.dll" (ByVal lpString1 As String, ByVal lpString2 As Integer) As Integer
UWSC
DEF_DLL lstrcpyA(string, Long): Long: kernel32.dll
DEF_DLL lstrlenA(string): Long: kernel32.dll
ここで文字列を格納する場所の確保が必要です。
できればstrlenAで文字列の長さを調べ、その長さのバッファを確保したほうがいいんですけど・・・
とりあえず空白文字列を代入で確保しかないです。
好きな長さにするには文字列連結回数で調整ですね。
wav = AquesTalk_Synthe(str1, sp)
str2 = " " //この長さを超えるとメモリが壊れる。
lstrcpyA(str2, wav)
FPUT(fp, str2)
ところで、.wav ファイルを開いているようですが、UWSCはテキストファイルしか扱えません。
仮に音声データでないとしたら、間違って再生してしまうような拡張子はやめるべきです。
メモリ破壊を防ぐには、lstrcpynA() 関数を使い、コピーする長さを限定します。
n = (str2とwavの短いほうを選択して代入)
lstrcpynA(str2, wav, n)