Delphi – string型

Delphiのstring型について。一般的なプログラミング言語にある文字列を扱う型。char型は1文字を扱うがstring型は複数の文字からなる文字列を扱う。string型はchar型が配列となったものと見なすこともできる。その時のアクセス方法はstr[n]と配列を扱うときと同様になる。ただしstring型を配列として扱う場合、要素の0番目は参照できない。要素1番目から文字列1文字目が該当する。

Delphi – 配列の宣言と使い方

Delphiで配列を使うにはvar節で配列要素数を設定する静的宣言と実行時に配列要素数を決定する動的宣言をする。要素数を動的に扱う配列が一般的だと思うのでそれについて記述する。

宣言

var
ar: array of char;

配列要素数の設定

begin
SetLength(ar,10);
end;

配列要素への代入

begin
ar[0]:=’abc’;
ar[1]:=’def’;
ar[2]:=’ghi’;
end;

配列要素へのアクセス

begin
for i:=0 to Length(ar)-1 do begin
OutPutDebugString(PChar(ar[i]));
end;
end;

ゲームエンジンGame Guruに3DモデリングソフトCinema 4dは使えない

ゲームエンジンのGame GuruというソフトウェアでCinema4Dで作成したモデルをインポートしてみようと思ったが上手くいかない。GameGuruは3Dモデルのインポート機能を搭載しているが、cinema4dで作成されたオブジェクトはどうしても受け付けてくれない。cinema4dにはエクスポートする機能で多彩なフォーマットに対応しており、GameGuruが採用しているDirect3Dというフォーマット(.x)形式でもエクスポートすることができるが、ロードすることができない。

ググってみたところ、https://youtu.be/tDXXFDVfnBI この動画がいいところまで行っているように見えるが、最後は何もマップ上で表示されないという結末で終わっている(´Д`;)

他にも色々調べたが、どうもcinema4dはgameguru開発には相性が悪い様子。理由はわからないがうまく行っている人も見当たらない。その他にはAutodesk 3ds Maxというモデリングソフトであれば成功したという人を見つけた。

他にも使えそうな3Dモデリングソフトが見つかったら追記予定

嘘でした。使えます。私の調べ不足と不注意。Cinema4dでモデリングしてDirectX形式でエクスポートしてGameGuruで取り込めば普通にレンダリングされるし、ゲーム内でも表示されることを確認。失敗していたのはそれ以外のファイルタイプでやっていたから。.xタイプのファイル以外にも取り込むことができそうだったけれどそれに失敗していた。

ちなみに同じことが無料の3Dモデリングソフトのblenderでもできる。初期状態ではDirectX形式で出力できないのでユーザー設定からアドオンを追加するだけで出力できるようになる。

色々迷走しながらblenderも試用してみたが、無料なのにcinema4dと同じようなことができるのに驚いた。操作感とUIは大分違うが機能的にはあまり変わらないんじゃないだろうか・・・。有料でそれなりに高価なcinema4dの方が多少は使いやすく洗練されているような気もするが。

npmが異常終了した場合に発生する起動エラー

npmサーバーをデバッグで起動していて、例のWindowsアップデートで強制再起動をかけられてしまったため妙なことになった。大したことないだろうと思って再度起動してみると下記のようなエラーを吐くようになった。一応サーバーを再起動してみたんだが、同じエラーが出るのは不可解。というのもエラーの内容を見る限りポート80が既に使われているというような内容のようだが、ポート80は私のコードでは使ってないのだが。それに再起動までしたのに。

events.js:165
      throw er; // Unhandled 'error' event
      ^

Error: listen EADDRINUSE :::80
    at Server.setupListenHandle [as _listen2] (net.js:1342:14)
    at listenInCluster (net.js:1383:12)
    at Server.listen (net.js:1471:7)
    at Object. (/home/nakahira/nodejs/server.js:52:4)
    at Module._compile (module.js:649:30)
    at Object.Module._extensions..js (module.js:660:10)
    at Module.load (module.js:561:32)
    at tryModuleLoad (module.js:501:12)
    at Function.Module._load (module.js:493:3)
    at Function.Module.runMain (module.js:690:10)
Emitted 'error' event at:
    at emitErrorNT (net.js:1362:8)
    at process._tickCallback (internal/process/next_tick.js:114:19)
    at Function.Module.runMain (module.js:692:11)
    at startup (bootstrap_node.js:194:16)
    at bootstrap_node.js:666:3

psコマンドで該当するプロセスをkillしてみるかと調べたがよくわからないので、ポート80を使っているかもしれないプロセスを強制的にkill

kill -9 $(lsof -t -i:80)

これでnpm startとしたら起動するようになったが、まだ正常稼働にはいたらない。

追記で、異常終了した場合にnpmのpackage.jsonというファイルが紛失していることを確認した。npm init -yで復帰することはできたが色々とわからない現象が多い。

DSPack Delphi

DSPackとは?

DirectShowを使いやすくしたライブラリ。動画の再生やウェブカメラ映像の保存などの機能を使いたいときに使うライブラリかもしれない。

DSPackでできること

  • 動画を再生する
  • 動画のキャプチャを作成する
  • ウェブカメラの映像を動画ファイルとして保存する
  • ウェブカメラの映像からスナップショットの画像を作成する

DSPackに含まれるコンポーネント

  • TFilterGraph
  • TVideoWindow
  • TSampleGrabbber
  • TFilter
  • TASFWriter
  • TDSTrackBar
  • TDSVideoWriterEx2

cocos2d-x javascript no.4 スプライトを作成する

画像無しで矩形スプライトを作成する

var sprite = cc.Sprite.create();
sprite.setTextureRect(cc.rect(0,0,100,100));
sprite.setAnchorPoint(0.5, 0.5);
sprite.setPosition(size.width / 2, size.height / 2);
sprite.setColor(cc.color(128,0,0));
currentScene.addChild(sprite, 0);