[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 03/27 01:12 / Filesize : 247 KB / Number-of Response : 962
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【Lua】組み込み系言語総合 その2【Squirrel】



1 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 09:11:41 ]
LuaやSquirrelなどアプリケーションへの組み込み用途で
使われるプログラミング言語についてのスレッドです
まとめwiki(なにか質問する前に必ずみること!)
wikiwiki.jp/lua/

その他の参考URLは>2から

■前スレ
【Lua】組み込み系言語総合【Squirrel】
pc12.2ch.net/test/read.cgi/tech/1205208141/

■過去スレ
その3 pc11.2ch.net/test/read.cgi/tech/1160799232/
その2 pc8.2ch.net/test/read.cgi/tech/1063711237/
その1 pc5.2ch.net/tech/kako/1034/10341/1034182349.html

321 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 08:12:58 ]
         \   l´⌒\⌒\ \\ \
           \ ヽ   )  )   \\ \\   
              (   \ \∩___∩ \\ 
           \   \  ⌒⌒| ノ      ヽ  \\      
              \ \   /  ●   ● ト、\ \\\ 
               \  Y |    ( _●_)  ミ\  \\\  
               \ / 彡、_  |∪| ノ   \  \\\
                 (____)―ヽノ' ヽ      ̄ ̄ ヽ\\
                                \,  j  l l .l }
                         Lua!   l (_ノノノノ



322 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 17:53:23 ]
>>320
Xtalのコードは俺の頭じゃ解析不可能だからLua読んでます。

323 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 18:55:12 ]
SqPlus使おうと思ったらもう全然更新してないのか
いったいどれにすれバインダ

324 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 20:22:51 ]
そもそもSquirrel自体全然盛り上がってないというか終わってるというか
始まる前に終わっちゃったよ的な

325 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 20:29:35 ]
Lua 5.2まだー

326 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 22:01:57 ]
>>323
SqPlusはダメすぎる、忘れましょう、使ってる人はたぶんいません
squirrelのバインダは自分で使い易いように自分で書いた方が1024倍マシよ

327 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 22:15:15 ]
そこでバインダとか無くても全然問題のないAngelScriptの出番だな

328 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 22:36:22 ]
>>326
ごめん、動いてるものはさわるな原則にのっとって使い続けてる^^;
一部手はいれてあるけど。
時間あったら新しいバインダにしたいんだけどなかなか……

329 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 23:08:08 ]
スクエニのゲームはSqPlus使ってるって
cedecのスライドに書いてあったよね。



330 名前:318 mailto:sage [2009/10/26(月) 01:03:53 ]
SquirrelとXtal読んでみます。
ありがとうございました。

331 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 02:05:58 ]
こうなったらLuaとSquirrelとAngelScriptの合わせ技でいくか

332 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 14:10:36 ]
angelscript初めて知った。いいなこれ!!
スタックゴニョゴニョしなくていいからコード読みやすいし
なによりデフォルトでメモリ上から「のみ」スクリプトコードをロードできるってのがイイ!
ゲーム開発だと裸のままスクリプトファイルが置いてあることなんてないからね。。。
モジュールのロードとかもオブジェクト指向で非常に素直に書けるぽいし
さっそくLuaを破棄して組み込んでみよう

333 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 14:25:29 ]
AngelScript つかう場合は、これ C++ だけでよくね?という思考に陥らないように注意な


334 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 16:01:05 ]
まんまC++なのがメリットでありデメリットでもある

335 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 20:39:28 ]
>>AngelScript つかう場合は、これ C++ だけでよくね?という思考に陥らないように注意な
前使おうとして陥った
ちょっと聞きたいんだが、AngelScriptを使っている人や使わなくなった人(他の言語に移った人)は
なんで使っている、使わなくなった?

C++そのままというか継承に制限があるのが大きくてSquirrelに移ろうと思ってるんだけど、
他の人はどう思ってるのか気になる
アプリ実行時にちょこちょこ書き直したり、コンパイル/リンク時間の省略とかスクリプト自体の
メリットは分かるんだが…


336 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 21:10:20 ]
コルーチン

337 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 23:17:06 ]
コルーチン

338 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 23:21:46 ]
チンコール

339 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 08:20:18 ]
           ∩_
           〈〈〈 ヽ
          〈⊃  }
   ∩___∩  |   |
   | ノ      ヽ !   !
  /  ●   ● |  /
  |    ( _●_)  ミ/ Lua!!
 彡、   |∪|  /
/ __  ヽノ /
(___)   




340 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 09:35:24 ]
>>335
C++との連携が簡単、C++クラスをほぼそのままで使える、複数のコンテキスト(LuaStateに相当?)を同時に処理させるのも簡単、
定数定義や列挙型も使える、といった点が便利なんで使ってる。

特にC++との連携はLuaやSquirrelより簡単だし、マニュアルもサンプルも英語だけどわかりやすい。

341 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 18:19:47 ]
コルーチン

342 名前:デフォルトの名無しさん mailto:sage [2009/10/28(水) 00:13:00 ]
AngelScriptに乗り換えようかな
細かいとこがc++と違和感無くて簡単だわ

343 名前:デフォルトの名無しさん mailto:sage [2009/10/28(水) 04:00:43 ]
そこで敢えてPawnという選択肢も

344 名前:デフォルトの名無しさん mailto:sage [2009/10/28(水) 04:39:16 ]
コルーチ

345 名前:デフォルトの名無しさん mailto:sage [2009/10/28(水) 13:47:14 ]
AngelScript と Luaって
メモリ消費や処理速度はどれほど違う?

346 名前:デフォルトの名無しさん mailto:sage [2009/10/28(水) 14:09:25 ]
   /ヽ /ヽ
  ':' ゙''"  `':,
  ミ   ・ω・ ;,
 :; . っ     ,つLua!
  `:;      ,;'
   `( /'"`∪


347 名前:デフォルトの名無しさん mailto:sage [2009/10/28(水) 14:17:51 ]
Pawnつえーな、使い勝手とか全然知らないけど
ttp://codeplea.com/game-scripting-languages

348 名前:デフォルトの名無しさん mailto:sage [2009/10/28(水) 14:48:51 ]
これ見るとリス使いの俺涙目だわ

349 名前:デフォルトの名無しさん mailto:sage [2009/10/28(水) 15:50:27 ]
・メモリ消費低
・静的型付
・スレッドセーフ
・スタック操作なし(またはLuaより容易)

で選ぶとしたら
やっぱりAngelScriptがいいのかな〜



350 名前:デフォルトの名無しさん mailto:sage [2009/10/28(水) 15:51:52 ]
おなじくリス使いの俺涙目(笑)

まあ、リスはわかりやすいからいいんだよ!とか言ってみる。
でも Pawn の性能は魅力だな。とりあえず組み込みテストして
みてよさそうなら、静的スクリプト言語としての併用もかんがえてみよう

351 名前:デフォルトの名無しさん mailto:sage [2009/10/28(水) 15:53:37 ]
まあなんとかとかんとかはトレードオフってやつだな

352 名前:デフォルトの名無しさん mailto:sage [2009/10/28(水) 18:03:22 ]
Pawnはスクリプト内で日本語文字列を扱わなくてもいいならいいかも

353 名前:デフォルトの名無しさん [2009/10/28(水) 18:17:32 ]
リスのバグ発見。

setdebughookを仕掛けた状態で_callメタメソッドをコールすると死ぬ。(SQVMでぬるぽ発生)

ちなみにdebughook関数の中身を空にしても同様です。
公式フォーラムの垢を紛失してしまったので誰か報告たのむ
squirrel-lang.org/forums/7/ShowForum.aspx


function debughook(event_type, sourcefile, line, funcname) {
 local fname = funcname ? funcname : "unknown";
 local srcfile = sourcefile ? sourcefile : "unknown";
 ::print(::format("%s:%d: [DEBUGHOOK:%c] %s\n", srcfile, line, event_type, fname));
}
::setdebughook(debughook);
class FOO {
 function test() { ::print("FOO::test()\n"); }
 function _call(orig_this) { ::print("FOO::_call()\n"); }
};
local foo = FOO();
foo.test();
::setdebughook(null);
foo();
::setdebughook(debughook);
foo(); // Segmentation fault (core dumped)


354 名前:デフォルトの名無しさん mailto:sage [2009/10/28(水) 18:39:16 ]
>>353
すんまそ、環境を書いてなかった。
Squirrel 2.2.3 stable
VisualC++, cygwin, Linux, 何れでも発生。
Squirrel 3はまだ試していません。

355 名前:デフォルトの名無しさん mailto:sage [2009/10/29(木) 12:22:06 ]
Pawn Language Guide っていうドキュメントみてみたけど、無名関数がつくれないっぽいね。
だとするとクロージャが作れないから、ちょっと不便かな。
状態遷移とかの記述に特化しているようだし、UnrealScript に似ているかも。


356 名前:デフォルトの名無しさん mailto:sage [2009/10/29(木) 17:27:53 ]
347のリンク先見て思ったが、GameMonkeyが何気に性能いいな。

357 名前:デフォルトの名無しさん mailto:sage [2009/10/29(木) 20:25:50 ]
>>353
拙い英語ですが報告しておきました。
temp_regがメタメソッドコール前にhookで使われるのが一因っぽいです。


358 名前:デフォルトの名無しさん mailto:sage [2009/10/30(金) 04:54:40 ]
Squirrel フォーラムに代理の報告をしてもらえるなら、 sq_mem.cpp をはじめ
メモリ確保失敗についてまったく考慮してないのを修正してくれ、と頼んでみて
もらえまいか?

組み込み言語としてリソースの乏しい環境で使うことを考えれば、メモリ確保が
失敗しないなどという前提で組まれるとツライものがある。

359 名前:デフォルトの名無しさん mailto:sage [2009/10/30(金) 04:56:12 ]
s/sq_mem/sqmem/



360 名前:デフォルトの名無しさん mailto:sage [2009/10/30(金) 04:57:50 ]
なんで自分で報告しないのん?

361 名前:デフォルトの名無しさん mailto:sage [2009/10/30(金) 05:00:20 ]
残念ながら英語で会話ができる自信がない。
リファレンスマニュアルを読む程度ならなんとかなるんだけど。

362 名前:デフォルトの名無しさん mailto:sage [2009/10/30(金) 05:20:40 ]
パッチ作って送れば英語できなくてもだいじょぶじゃないかな。
here is a patch for memory allocation error
とか一文だけ書いとけば通じると思う。

363 名前:デフォルトの名無しさん mailto:sage [2009/10/30(金) 05:42:29 ]
うーん。問題はコード全体に散らばってるんで、まずは全体的な方針をはっきり
決めてからじゃないとマズイ感じ。

sq_malloc や sq_realloc がいくつかのマクロを通して間接的に使われてるんだけど、
どれも呼び出し元で NULL が返ってくることが考慮されてない。

典型的なのは配列伸ばすのに p = SQ_REALLOC(p,oldsize,newsize) してるところ。
NULL 返したら元の領域がリークするうえに後続のコードでは確保成功したものとして
余裕でアクセスしてくる。

最初は、C++だからsqmem.cppの関数から例外投げろってことかと思ったんだけど、
呼び出し側で例外の発生も考慮されてないからまた別の理由でリークするし。

364 名前:デフォルトの名無しさん mailto:sage [2009/10/30(金) 10:21:32 ]
AngelScriptでマルチバイト文字列を使おうとする場合の不具合も報告したほうがよさそうなんだけどなぁ…

365 名前:353 mailto:sage [2009/10/30(金) 14:26:46 ]
>>357
ありがとう!!

366 名前:デフォルトの名無しさん mailto:sage [2009/10/30(金) 17:39:48 ]
>>364
なんか不具合あるの?
AngelScript試してみようと思ってるんで気になる
UTF8扱いたいんだ

367 名前:デフォルトの名無しさん mailto:sage [2009/10/30(金) 17:48:06 ]
>>366
ライブラリをビルドする際にプリプロセッサでAS_DOUBLEBYTE_CHARSETを定義するんだけど、
それやるとビルドでエラーが出ちゃう。
しかもマルチバイト文字かシングルバイト文字かを判定するやり方もマズい。

最新版出るたびに毎回そこ修正してるよ。

368 名前:デフォルトの名無しさん mailto:sage [2009/10/30(金) 19:04:19 ]
それは本家に報告してあげればみんな幸せに

369 名前:デフォルトの名無しさん mailto:sage [2009/10/30(金) 23:19:35 ]
>>367
ソース弄ってみるよ



370 名前:デフォルトの名無しさん [2009/10/31(土) 00:09:14 ]
>>221
それ新しい版では修正されてたと思った。


371 名前:デフォルトの名無しさん mailto:sage [2009/10/31(土) 10:39:11 ]
AngelScriptでUTF8を使う場合、ソースの修正なくても、

asIScriptEngine *lpEngine=asCreateScriptEngine(ANGELSCRIPT_VERSION);
lpEngine->SetEngineProperty(asEP_SCRIPT_SCANNER, 1);

みたいな感じでエンジンの設定すれば大丈夫だったと思う。

372 名前:デフォルトの名無しさん mailto:sage [2009/11/01(日) 23:04:23 ]
あら、ありがと

373 名前:デフォルトの名無しさん mailto:sage [2009/11/02(月) 06:54:37 ]
AngelScript2.17.2で試してみた
UTF8はデフォルトでサポートしてるっぽく読めたんでDLしたまんまビルド
static const char* scriptString =
"void hellow()"
"{"
" Print( \"hellow world\" );"
" Print( \"UTF8テスト\" );"
"}";
とりあえずこれOKだった
ホストへstd::stringで渡せたり楽だわあ

374 名前:デフォルトの名無しさん mailto:sage [2009/11/02(月) 13:25:04 ]
次の更新でUTF16もサポートするみたいなことが書いてあるね

375 名前:デフォルトの名無しさん mailto:sage [2009/11/03(火) 16:16:50 ]
>>374
それできたらShitJIS対応の改造しなくて済むな。

376 名前:デフォルトの名無しさん mailto:sage [2009/11/04(水) 10:58:55 ]
Linuxでx64運用してるんだが、ファイルをHDD中でコピーするだけでファイルが壊れてしまう状態になって、
パーツを電源も含めて色々入れ換えてみたところ、
SATAケーブルをノイズに強いタイプに変更したら改善した。

残念ながら完全には直ってないようだけど、十分実用レベルには戻った。
資金に余裕ができたらHDD買い足してパーティションを作り直そう……。

377 名前:デフォルトの名無しさん mailto:sage [2009/11/04(水) 10:59:54 ]
おっと。スレ違いスマン。

378 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 09:41:07 ]
pawnダウンロードして、マニュアル読みながらcmake使ってVC++用のプロジェクトファイル作るところまではできたんですが…
プロジェクト開いても、なんかファイル構成がよくわからないです。
もしかしてこれ、コンパイラとVMが別のプロジェクトファイルになっているんでしょうか?
luaみたいに、単純にヘッダファイルとlibファイルだけが欲しいんですが…
もしかしてDLLしかない??

379 名前:デフォルトの名無しさん mailto:sage [2009/11/07(土) 16:02:52 ]
>>378
pawnについていいなと思い試してみたはいいものの
詳しく使おうとするにつれてファイル構成が?で
投げ出した俺と同じ状態だね
確かにあれはわかりにくい



380 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 02:12:15 ]
>>371
asEP_SCRIPT_SCANNER の設定で何がどう変わるのか AngelScript 2.17.2 の
ライブラリのソースを見てみたけど、単に 'あ' みたいなUTF-8の文字リテラルが
正しく読めるようになるだけっぽい。
"あいう" みたいな文字列リテラルは設定に関係なく1バイトずつ読んで処理してる。

ただし AS_DOUBLEBYTE_CHARSET プリプロセッサを有効にしてビルドしたライブラリで
asEP_SCRIPT_SCANNER の設定が 0 だと、マルチバイト文字を考慮する。
>>367が言っているように判定方法がマズいからShift_JISの半角カタカナを渡すと
おかしな挙動になるだろうけど。

あと AngelScript 2.17.2 での asEP_SCRIPT_SCANNER の既定値は 1 っぽい。

381 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 16:15:58 ]
となると、マルチバイト判定用のコールバック関数を登録できるような改造した方がいいのかな。
2箇所いじれば大丈夫っぽいし。

382 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 04:57:26 ]
>>381
Xtalはそんな感じのことをやってますね。
初期化関数に渡す Setting クラスインスタンスの ch_code_lib メンバに
文字コードクラス(例:SJISChCodeLib)のインスタンスを渡すことで好きな
文字コードを選択できるようになってます。
SJIS, EUC, UTF8, UTF16, UTF32 の文字コードクラスは標準で用意してある模様。

383 名前:382 mailto:sage [2009/11/10(火) 05:09:58 ]
> SJIS, EUC, UTF8, UTF16, UTF32 の文字コードクラスは標準で用意してある模様。
…とはいっても別に内部で文字コード変換をしてくれるわけじゃないから、
Windowsのマルチバイト文字セットで使うなら基本的にSJISを選ぶことになるだろうけど。

Unicode文字セットで使うなら、XtalライブラリをUnicode文字セットでビルドして、
文字コードクラスは指定しない(=デフォのまま)ことで正しい挙動になりそう。
もちろんその場合のスクリプトはUnicodeで書く&渡す。

連投&AngelScriptと直接は関係ない話でゴメン。

384 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 09:30:35 ]
試してないけどソース見る限り、UTF-16用の文字コードクラス使うと、
文字列長取得時にサロゲートペアのことも考慮してるようだ

他の文字コード用のも、一文字進めるとか比較とかも変えられるようにはしているようではあるが、
今のところ文字単位での文字列長取得しか違いはないようだ

385 名前:デフォルトの名無しさん mailto:sage [2009/11/11(水) 11:02:15 ]
AngelScript、TCHARとかにも対応できて、Unicodeとマルチバイトのどっちでもビルドできるようにしたいが、
かなりの大部分を修正しないとダメだなぁ…
Squirrelは最初から対応してるみたいだけど。

386 名前:デフォルトの名無しさん mailto:sage [2009/11/11(水) 22:18:49 ]
// .amxファイル(コンパイル済みPawnバイナリ)を実行するための最小コード。これをビルドするためには
// ダウンロードしてきたPawnのソースに含まれている amx.c, amx.h, amxaux.c, amxaux.h, amxcons.c, amxcore.c をプロジェクトに追加しておく
#include "amx.h"
#include "amxaux.h"
#include <stdio.h>
extern "C" AMX_NATIVE_INFO console_Natives[];
extern "C" AMX_NATIVE_INFO core_Natives[];
int main(int argc, char *argv[]) {
 AMX amx;
 cell ret = 0;
 if (aux_LoadProgram(&amx, "test.amx", NULL) != AMX_ERR_NONE) exit(1);
 if (amx_Register(&amx, console_Natives, -1)) exit(1);
 if (amx_Register(&amx, core_Natives, -1)) exit(1);
 if (amx_Exec(&amx, &ret, AMX_EXEC_MAIN)) exit(1);
 printf("%ld\n", (long)ret);
 aux_FreeProgram(&amx);
 return 0;
}


387 名前:デフォルトの名無しさん mailto:sage [2009/11/11(水) 22:20:25 ]
Pawnコンパイラのビルド方法
--
CMakeダウンロードする
CMakeインストールする
CMake起動する
"Browse Source"をクリックし、実行環境をビルドするなら<pawn>\source\amxを指定する。Pawnコンパイラをビルドするなら<pawn>\source\compilerを指定する
"Browse Build"をクリックし、適当な出力フォルダを指定する(以下、<out> と表現する)
"Configure"をクリックし、VisualC++ネイティブを選択する。エラーが起きても、もう一度 ConfigureをクリックするとGenerateボタンが有効になる。
"Generate"をクリックしてファイルを生成する
<out>にVC++用のプロジェクトファイルができている
ソースに<pawn>\source\compilerを指定した場合、<out>にはpawnc.slnができている。それをVCで開いてビルドする。
..\bin\pawn.icoが存在しませんとかエラーがでたら、該当場所に適当なアイコンファイルを入れておく。
<out>\Debugにpawnc.dllとpawncc.exeができている。それがコンパイラ。


388 名前:デフォルトの名無しさん mailto:age [2009/11/11(水) 23:56:32 ]
Goのビルドが早いらしいので期待age

389 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 00:07:43 ]
ttp://jp.techcrunch.com/archives/20091110google-go-language/



390 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 13:31:44 ]
そのGoって組み込みじゃないんじゃ・・・・

391 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 17:18:47 ]
ゴルーチン

392 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 23:59:48 ]
ttp://golang.org/doc/go_faq.html#Do_Go_programs_link_with_Cpp_programs

There is a “foreign function interface” to allow safe calling of
C-written libraries from Go code. We expect to use SWIG to
extend this capability to C++ libraries.

There is no safe way to call Go code from C or C++ yet.

組み込みまだ出来なさそう。あとは、luaみたいに使える方向性があるか分からない。
現在の対応はdarwinのx86/x86_64とlinuxのx86/x86_64/armとnative clientのような気がする

393 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 00:23:26 ]
you ain't gonna need it

394 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 11:03:02 ]
GCサポートとあるけどc++好きにはウケナイ気がする
GC無しでc++的にガチガチに使えるなら使いたい
c++は0xも控えてるしGoは微妙な位置に落ち着きそう

395 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 11:47:27 ]
そういや0xって後50日くらいで終了するんだなぁ

396 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 12:51:11 ]
C++0xはコンセプトを捨てて再調整中で、まだ時間がかかるようだ
最近はC++1xと呼ばれている・・・

397 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 12:52:17 ]
っていうか検索しにくさでDに勝負挑んでんの? って感じのネーミングなんだが……。

398 名前:397 mailto:sage [2009/11/13(金) 13:00:17 ]
あ、ごめんなさい誤爆。Dスレに投げたつもりだった……。

399 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 18:49:47 ]
Squirrelの画像検索のしにくさよりはましだろ



400 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 19:04:49 ]
16進数だと思って欲しいだって
びょーん?さんのお知らせ

401 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 02:54:01 ]
で、誰かPawnつかってみた? 激高速ぽいし、静的型付けで余計なバグも少なそうだし、かなり使えそうだけど…


402 名前:デフォルトの名無しさん mailto:sage [2009/11/14(土) 21:13:23 ]
>>388
GoはLinuxとMacにしか対応していません。

403 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 21:54:06 ]
この手の組込スクリプトエンジンをShiftJIS対応させる場合、基本的にWindows用に組んじゃって大丈夫なのかな。
Unicode対応させる場合はWindowsだけじゃダメだよね?

404 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 23:22:05 ]
修正を公開するつもりが無いならどうしたって構わないよ
#ifで切り分けるくらいはしておけばいいんじゃないか

#if (defined WIN32)
 実装
#else
 naiyo!!
#endif

これならWindows以外で使いたい人が中を見て、流用できそうならそうすることも出来るだろう

405 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 23:56:52 ]
thx!

406 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 00:09:23 ]
>>404
上手くいけば公開しようかなと思ってる。
ただ、Windowsでしかプログラム組んでないんで、Linuxでもちゃんと動くようにするための技法とかさっぱりわからないんだ。

ちなみにShiftJIS対応は簡単だけど、Unicode対応はソースあちこちいじらないとダメなんで無理かも…

407 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 07:08:38 ]
UTF-8でもなければUCS2やUTF16でもなく、UNICODEと言っている時点で、
何にも分かってないのが丸わかりだからやめておけ。

408 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 08:00:11 ]
   /ヽ /ヽ
  ':' ゙''"  `':,
  ミ   ・ω・ ;,
 :; . っ     ,つLua!
  `:;      ,;'
   `( /'"`∪


409 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 08:10:51 ]
ぅあたんおはよう



410 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 10:48:18 ]
しかし、今時ShiftJISはねえなあw

411 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 11:48:04 ]
WindowsだとまだShiftJIS現役だしなぁ…

412 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 13:12:23 ]
WindowsのNTFSのファイル名とかUTF-8にする方法ある?

413 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 13:25:40 ]
それ以前に一つ確認しておくが、NTFSのファイル名のエンコードがどうなっているのかは理解しているのか?

414 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 14:27:33 ]
ICUとか無駄にでかいのを勧めてみる
そういう話じゃないんだろうけど、Windows依存の話はもう勘弁しておくれなんし

415 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 14:56:21 ]
ファイル名ってUNICODEじゃなくてmbcsだろ
mbcsにUTF-8そのまま突っ込んでもファイルは出来るが
望みのものにはならない訳で


416 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 15:05:36 ]
www-06.ibm.com/jp/domino01/mkt/cnpages7.nsf/page/default-007ACA9B

417 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 17:13:46 ]
>>415
Windowsは内部的には全部 Unicode で NTFS もUnicode。
Win32 API的には、Uincode な API と MBCS な API が両方同時に存在していて任意に選んで使う。

原理的にはエンコードが UTF-8 な Locale を指定すれば MBCS なAPIでそのまま使えるはずだが、
あいにくそんなロケールは定義されてない。もっとも、UTF-8 から Unicode へは単純に変換できるので、
Unicode な API をラッピングして使えば良いだけなので自前プログラム上で問題になることは特にはない。
自分のプログラムで文字列を char ベースで扱ってるなら、MFC の CString のような char <-> wchar_t 変換
対応したクラスを作ってAPI に渡す時はそれを介するようにしておけば良い

一般的にこの手の組み込み言語の場合「Unicode対応 」ってのはワイドキャラ化のこと。変換は全部入出力部で
処理してしまって、内部は全部 char ではなく wchar_t で処理を行うようにする。英数字もひらがなかたかな
漢字も同じ「1文字」として扱えるので、もろもろ概念や処理が楽になる。そのかわりメモリを喰らう。
Windows だと、Unicode な APIがあるのでこれで作業するのが定番。
UNIX 系OSは、Unicode API は存在してないので、API に渡す必要がある部分(ファイル名など)は
逆にMBCS に変換する必要があってそれなりに面倒だったりするが、これが C言語系における正道

「SJIS対応」だとパーサの類をいじって、\ とかの特殊文字のエスケープ対応を行う対応になる。
また、文字列系のクラスに、専用の mblen とか mbsubstr とかSJISとして1文字単位で扱える
専用の処理を足さないと実用上困る。正規表現系をまじめに対応とかすると死ねる。
「UTF-8対応」や「EUC対応」はASCII 的に安全な文字コードなのでパーサ部は通常いじる必要がないが、
文字列処理用に専用の命令系を足さないと実用性が低いのは SJIS対応と同じ。

古いプログラムを wchar_t 化するのは大変だけど、Unicode は扱いたい、といった場合にUTF-8 対応が行われる。

418 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 17:18:13 ]
ファイル名の場合、NFDにも注意ね

419 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 17:23:01 ]
>>418
OSX はさっさと直せよと思う。まじで



420 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 18:20:29 ]
Microsoftのコンパイラは wchar_t は2byteなので、全部一文字って訳にはいかないです
サロゲートペアに対応させようとかおもった場合は手動で処理してやらんとダメです。
少なくともVS2008時点では、_tcsincやCharNextといった ポインタを進める関数がサロゲートペアをちゃんと処理してくれない
(おそらくOSがサロゲートペアに対応する前のコードとの互換性を気にしてるのだろう)
もっとも、クロスプラットフォーム名コード書くなら、CharNextとか使わずに自前で処理してるだろうけど・・・

421 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 19:20:13 ]
書かれてる事の意味が解らないままレスする人多すぎ
ここが組み込み系言語のスレな事も考えず読んでる人も多すぎ






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<247KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef