HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2020
1106
ふじこlpみんな関数ならいいのに。3解決


ふじこlp

リンク

2020/11/6(Fri) 19:30:01|NO.91754


/******************************** * みんな関数ならいいのに.as * * by Rasten-U(ふじこlp) * *********************************/ #module MinnaKansuu #undef exist #defcfunc exist str _p1 exist@hsp _p1 return strsize #undef noteget #defcfunc noteget int _p1 noteget@hsp _ret,_p1 return _ret #undef bload #defcfunc bload str _p1,int _p2,int _p3 bload@hsp _p1,ret,_p2,_p3 return _ret #undef getkey #defcfunc getkey int _p1 getkey@hsp _ret,_p1 return _ret #undef stick #defcfunc stick int _p1,int _p2 stick@hsp _ret,_p1,_p2 return _ret #ifdef __hsp3utf__ #undef cnvstoa #defcfunc cnvstoa str _p1 cnvstoa _ret,_p1 return _ret #undef cnvstow #defcfunc cnvstow str _p1 cnvstow _ret,_p1 return _ret #endif #global



この記事に返信する


f(修羅場in2020)

リンク

2020/11/9(Mon) 17:02:58|NO.91769

すラばしい…。

常々面倒とは思っていたが、そこで止まってたわ…
目から角膜が剥離する思いだわ…



ふじこlp

リンク

2020/11/9(Mon) 19:27:38|NO.91770

>すラばしい…。
>常々面倒とは思っていたが、そこで止まってたわ…
>目から角膜が剥離する思いだわ…
ありがとうございます!
「なぜこれが命令なんだよ!!」というのが多かったので作りました。
モジュールにもいろいろあるのでそれもどうにかしたいと思います。



Pさん

リンク

2020/11/9(Mon) 23:43:03|NO.91773

bloadやcnvstowは命令形式でないとちゃんと動きません
nullを含むバイナリをreturnで返そうとしても、null終端の文字列として認識されるため途中で切られてしまうためです

また、HSPの文字列型は初期値64Byteのため、自動拡張のないcnvstowで全角31文字以上を変換しようとすると最悪メモリオーバーフローでHSPのプロセスが落ちます
事前にWin32のMultiByteToWideCharで変換後に必要な領域をsdimしてあげる必要がありますね

ただ、命令の失敗をいちいちstatで見るのが面倒なので、命令を廃止して関数に一本化するのは賛成です
C言語のようにただの数値(=関数の結果)は無視してもらうようにしてほしいところです



ONION software Copyright 1997-2021(c) All rights reserved.