日本語プログラム言語「なでしこ」 を紹介しながら勉強しながら応援しています。
●更新履歴
・2010/09/09:なでしこ1.5331応。命令一覧、差分。
・2010/01/08:なでしこ1.5325応。命令一覧、差分。
・2009/09/19:なでしこ1.5322応。命令一覧、差分。
command.txt、vnako.nakoの変更点を列挙。
■イメージ +グラフィック部品 +マウスイベントプロパティ +ポップアッププロパティ +画像プロパティ
・文字描画(XX,YYへSを)〜
自身のXX,YYへSをシステム:文字描画。
・文字表示(XX,YYへSを)〜
自身のXX,YYへSをシステム:文字表示。
■コンボ +エディタ系部品 +アイテムプロパティ +マウス入出イベントプロパティ +ポップアッププロパティ +ドロッププロパティ
・{イベント}リスト開いた時
・{イベント}リスト閉じた時
・{イベント}リスト選択した時
■マウスイベントプロパティ
・マウス位置〜それは「{自身→マウスX},{自身→マウスY}」
■イメージリスト +ウィンドウ部品
・置換(NOに画像ファイルを)〜
VCL_COMMAND(オブジェクト, "置換", NO&"@"&画像ファイル)
■サンプルの倉庫(old)
ひまわりとの速度比較やAPIの使い方など。
■Tips
●半角カタカナ判定
なでしこ質問掲示板 - 半角カタカナの判定
を見て、
1行で出来るんだスマート!、とか思ったが自分でやるとこうかな。
#サンプル_半角カタカナか判定
//--------------------------------------
//文字列Sの1文字目が半角カタカナか判定
//--------------------------------------
●半角カタカナか判定({=?}Sが)
もし、S=空ならば、S=それ
もし、Sが全角か判定ならば、0で戻る
(Sを全角変換)がカタカナか判定
戻る
"ア{~}イウエ{~}オカキ{~}ア{~}あ{~}漢"を反復
「{対象}={対象が半角カタカナか判定}」を表示
##結果
#ア=1
#イウエ=1
#オカキ=1
#ア=0
#あ=0
#漢=0
(2007/11/28)
●SQLiteフロントエンド
> 2007/10/05 version 1.50045
> -ローカルマニュアルのリファレンス表示にSQLiteを導入。(r163)
ということで、
nadesiko\tools\cmd\*.txt
の1000個近いファイルが
nadesiko\tools\command.db
に収まったようです。
このSQLite用のファイルを触る時に便利なのが
TkSQLite。
GUIでテーブル設定作ったり、データ編集してアップデートできます。
tksqlite-{バージョン}-win32-bin.zipをDLして解凍するだけ。
設定ファイルはC:\Documents and Settings\{ユーザ名}\.tksqlite。
もし、メニューなどが日本語化されてない場合は、環境変数にLANG=jaを追加してやるとOK。
XPならマイコンピュータ>詳細設定>環境変数あたりで。
(2007/10/08)
●音声合成で遊ぶ
AquesTalk - テキスト音声合成ミドルウェア
が同梱されて音声合成できるようになりましたね。面白そう。
「音声記号列」というのでアクセント、イントネーションをコントロールしないと田舎っ娘みたい。
#サンプル_AQT話す_変速
!「aquestalk.nako」を取り込む
//速度指定できる関数を追加
●AQT話す_変速(Mと|Mを{整数=100}Sで)
AQUESTALK_PlaySync(M,S)
●AQT非同期話す_変速(HでMと|Mを{整数=100}Sで)
AQUESTALK_Play(H,M,S,母艦ハンドル,0,0)
「あいうえおー」をAQT話す
「あいうえおー」をAQT話す_変速
「あいうえおー」を50でAQT話す_変速
「あいうえおー」を150でAQT話す_変速
(2007/09/05)
●進捗表示はほどほどに
時間のかかるループ処理で進捗状況を表示することがある。 「母艦=回数」とかよくやる。↓
全回数=100
(全回数)回
母艦=「{回数}/{全回数}」
0.01秒待つ //何らかの処理
で、最近&今更気付いた。1000回とかループする時、1回ずつ進捗表示するともったいない。 いちいち母艦のタイトルプロパティに値を代入するくらいなら、 何回かに1回という条件判断する方が低コストっぽい。↓
全回数=100
(全回数)回
もし、回数=1||回数%10=0||回数=全回数ならば、母艦=「{回数}/{全回数}」
0.01秒待つ //何らかの処理
このサンプルじゃコストもパフォーマンスも分からんけど。
(2007/09/04)
●『それ』を『変数エイリアス作成』して『デバッグ』
『デバッグ』すると変数一覧が出ますよね。
『それ』を確認しようとすると、
メニュー>表示スコープ>グローバルスコープとして、
大量の変数から探すか、「それ」で検索すると出ます。
ちょっと面倒くさいので、
『変数エイリアス作成』を使ってみます。
スコープを選択し直さなくても、
標準のユーザースコープに表示されるので確認が簡単。
#サンプル_変数エイリアス作成
それをそれ_に変数エイリアス作成
デバッグ
今日の「/」を「-」に置換
表示
それの「-」を「」に置換
表示
(2007/08/29)
●全フォルダ列挙
練習と実用を兼ねて『全フォルダ列挙』関数を作ってみた。
再帰が苦手で、時々作ろうとしては完成したのかどうか覚えがない。
#サンプル_全フォルダ列挙_20070822
●全フォルダ列挙(F)
Rとは文字列=「」
FFとは文字列
F=Fの終端パス追加
Fのフォルダ列挙
反復
FF=(F&対象)の終端パス追加
RにFFを一行追加
全フォルダ列挙(FF)
もし、それ<>空ならば、Rにそれを追加
Rで戻る
全フォルダ列挙(ランタイムパス)
言う
大幅にレベルダウンするが、コードHTML化を自前スクリプトでやってみた。
(2007/08/22)
●表ハッシュ変換
『SQLITE実行』などのSELECT結果にアクセスしやすいように、
『表ハッシュ変換』という関数を作ってみた。
#サンプル_表ハッシュ変換
//DBでSELECTした結果
S=「ID,NAME,VALUE
1,山田太郎,長男
2,山田次郎,次男
3,"山田三郎,山田よし子","三男,長女"
」をCSV取得
//2次元配列でアクセスすると行番号、列番号に注意が必要
「■出力(2次元配列):」を表示
「●すべて表示」を表示
Sを反復
「{対象\0}:{対象\1}:{対象\2}」を表示
「●指定表示」を表示
「[1][1]={S\1\1}」を表示
「[1][2]={S\1\2}」を表示
//ハッシュ配列にして行番号とキー名でアクセス
「{~}■出力(ハッシュ配列):」を表示
「●すべて表示」を表示
H=Sを表ハッシュ変換
Hを反復
「{対象@"ID"}:{対象@"NAME"}:{対象@"VALUE"}」を表示
「●指定表示」を表示
「[1]["ID"]={H[1]@"ID"}」を表示
「[1]["NAME"]={H[1]@"NAME"}」を表示
//--------------------------------------
//ヘッダ付きの表データをハッシュ配列に変換する
//--------------------------------------
●表ハッシュ変換({=?}Sを|Sから)
もし、S=空ならば、S=それ
もし、S=空ならば、Sで戻る
Aとは配列=「」
Hとはハッシュ=「」
Cとは配列
S=SをCSV取得
Sを反復
//カラム名を取得
もし、回数=1ならば
C=対象
続ける
//カラム名をキーにしたハッシュに代入
対象を反復
H@(C[回数-1])=対象
//ハッシュを配列に追加
AにHを配列追加
Aで戻る
(2007/07/27)
●配列重複削除
『表重複削除』って便利なんだけど、キーとなる列を指定しなければならない。
行単位で重複削除したい場合にはちょっと困る。
『配列重複削除』という関数を作ってみよう。
A=「a
a,b
a,b
a,b,c
a,b,c」
Aの0を表重複削除を表示 //a
↑0列目で重複削除するので1行目だけ残る。
A=「a
a,b
a,b
a,b,c
a,b,c」
Aを配列重複削除して表示 //a{~}a,b{~}a,b,c
//配列Aの重複要素を削除する
●配列重複削除(Aを|Aの)
Rとは文字列=「」
Aを反復
対象を","で配列結合
Rに「"{それ}"」を一行追加
Rの0を表重複削除
戻る
↑各行を""で囲んで1列の表として、0列目で重複削除。
配列は改行区切り、配列の配列はカンマ区切り、
で表されるなでしこの仕様なので、途中小細工する。
「"」「,」混じりの文字列だとどうなるやら…。
(2007/07/09)
●なでしこソースのダウンロード
(1)Subversionをインストール
(2)なでしこソースをダウンロード
なでしこ開発者の情報共有ページ>リポジトリの取得
http://aoi-project.com/nadesiko/dev/wiki/index.php?%A5%EA%A5%DD%A5%B8%A5%C8%A5%EA%A4%CE%BC%E8%C6%C0
を参考に、コマンドプロンプトで以下のように実行。
svn co svn://aoikujira.com/usr/local/svnrepos/nadesiko/trunk c:\nadesiko_svn
svn co(CheckOutということ?) ソース場所 保存場所
(3)なでしこソースの差分を眺める
(2007/05/30)
●テーブルタグ作成
ひまわりの『テーブルタグで囲む』を真似てみた。
#Tips_テーブルタグ作成
S=「a,b{~}c,d」
Sを「border=1 cellpadding=5」でテーブルタグ作成
表示
●テーブルタグ作成({配列=?}Sを{文字列=""}Aで)
Rとは文字列 #結果
Tとは文字列 #一時格納用
もし、S=「」ならば、S=それ
もし、A<>「」ならば、A=「 {A}」
R=「」
Sを反復
T=「」
対象を反復
Tに「<td>{対象}</td>」を追加
Rに「<tr>{T}</tr>」を一行追加
R=「<table{A}>{~}{R}</table>{~}」
Rで戻る
| a | b |
| c | d |
(2005/10/29)
●アクティブ時イベント
フォーム部品のイベントに 『アクティブ化した時』 『アクティブ時』 『非アクティブ時』 がある。
『アクティブ化した時』と『アクティブ時』はどう違うのか。
なでしこソースを見て分かったが、
『アクティブ時』:プログラムがアクティブになった時
『アクティブ化した時』:フォームがアクティブになった時
#Tips_アクティブ時イベント
母艦のアクティブ時は〜「母艦{\t}{\t}:アクティブ時」を表示
母艦のアクティブ化した時は〜「母艦{\t}{\t}:アクティブ化した時」を表示
フォーム1とはフォーム
そのタイトルは「フォーム」
そのアクティブ時は〜「フォーム{\t}:アクティブ時」を表示 #無意味
そのアクティブ化した時は〜「フォーム{\t}:アクティブ化した時」を表示
その表示
(2005/10/26)
●拡張子関連
『拡張子抽出』で得られるのは「.拡張子」である。
『拡張子変更』で指定するのは「.拡張子」である。
「文字列.拡張子」を指定すれば、
「{元ファイル名}文字列.拡張子」となる。
#Tips_拡張子関連
S=「C:\DIR\FILE.EXT」
Sから拡張子抽出して表示 #「.EXT」
Sを「.TXT」に拡張子変更して表示 #「C:\DIR\FILE.TXT」
Sを「TXT」に拡張子変更して表示 #「C:\DIR\FILETXT」
Sを「」に拡張子変更して表示 #「C:\DIR\FILE」
#連番ファイル名を生成
10回
Sを「_{回数}{Sから拡張子抽出}」に拡張子変更して表示
#「C:\DIR\FILE_1.EXT」〜「C:\DIR\FILE_10.EXT」
#存在しないファイル名
「{ランタイムパス}ReadMe.txt」の非存在ファイル名取得して表示
#「{ランタイムパス}ReadMe_1.txt」
●非存在ファイル名取得(Fの)
FFとは文字列=F
(FFが存在)の間
FF=Fを「_{回数}{Fから拡張子抽出}」に拡張子変更
FFで戻る
(2005/10/26)
●母艦設計
プログラム起動時、母艦が表示されるまでに何かしたい時は、 『母艦設計』を使ってみよう。ひまわりの『母艦浮上』と同じようなことができる。 「●母艦設計」という関数を用意してもいいが、下のようにすると楽かも。
!母艦設計=「母艦の可視はオフ」
母艦のW=100
母艦のH=100
母艦を中央移動
母艦の可視はオン
(2005/10/26)
・なでしこ
なでしこ本家。
・ひまわり
ひまわり本家。
・なでしこごっこ
vnakoグループ一覧
(けんさん)
vnako.nakoが整理されて見やすい。GUI部品を扱う時に便利。サンプル増加中。
その他のリンク(old)
日本語プログラム言語「なでしこ」を、
紹介しながら勉強しながら応援していくサイトです。
リンクフリー。どこにでも。
アンリンクフリー。いつでも。
*プログラムなどの再利用について
プログラム・文章など、著作物の著作権は放棄しませんが、
ダメと書いてなければ、それらの利用はだいたい自由にどうぞ。
ちょいと工夫あるプログラムなら著作権が発生しますが、
工夫も創造性もないただのサンプルなら、どうにでもしてくれです。
プログラムを実行して損害が出ても補償できませんが、
そんなプログラムにならないようなるべく努力します。
ひまわりの倉庫(old)
もどうぞ。放置されてますが…。
サイトマップ(old)
マップというかただのファイル一覧です。
古い命令一覧や差分などがあります。
(C) 2004-2007 moka