なでしこの育て方

日本語プログラム言語「なでしこ」 を紹介しながら勉強しながら応援しています。

●更新履歴
・2010/09/09:なでしこ1.5331応。命令一覧、差分。
・2010/01/08:なでしこ1.5325応。命令一覧、差分。
・2009/09/19:なでしこ1.5322応。命令一覧、差分。



本の紹介:


命令一覧&差分

command.txt、vnako.nakoの変更点を列挙。

  • なでしこ命令一覧 New
    公式マニュアルなでしこ命令一覧〜機能順(50音順)もどうぞ。
  • なでしこ命令差分
  • vnako差分
    • vnako差分(-1.5321)

      ■イメージ +グラフィック部品 +マウスイベントプロパティ +ポップアッププロパティ +画像プロパティ
       ・文字描画(XX,YYへSを)〜
          自身のXX,YYへSをシステム:文字描画。
       ・文字表示(XX,YYへSを)〜
          自身のXX,YYへSをシステム:文字表示。

    • vnako差分(-1.519)

      ■コンボ +エディタ系部品 +アイテムプロパティ +マウス入出イベントプロパティ +ポップアッププロパティ +ドロッププロパティ
       ・{イベント}リスト開いた時
       ・{イベント}リスト閉じた時
       ・{イベント}リスト選択した時

    • vnako差分(-1.520)
      vnako_diff_1520.txt
      色々変わったそうなので、http://nadesi.com/History.txtを見るのが吉です。
    • vnako差分(-1.519)

      ■マウスイベントプロパティ
       ・マウス位置〜それは「{自身→マウスX},{自身→マウスY}」

    • vnako差分(-1.512)

      ■イメージリスト +ウィンドウ部品
       ・置換(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 - テキスト音声合成ミドルウェア
が同梱されて音声合成できるようになりましたね。面白そう。
「音声記号列」というのでアクセント、イントネーションをコントロールしないと田舎っ娘みたい。

  • 速度を変えることができる。↓
  • 本家から別声種のDLLを持ってきて、男声、ロボット声などが使える。

#サンプル_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をインストール

Subversion(http://subversion.tigris.org/)
>Downloads>「Windows NT, 2000, XP and 2003」付近の「this directory」>安定版のsetup.exeの新しいもの
今回は「svn-1.4.3-setup.exe」をダウンロードしてインストール。

(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)なでしこソースの差分を眺める

WinMerge 日本語版
http://www.geocities.co.jp/SiliconValley-SanJose/8165/winmerge.html
などを使って古いソースとの差分を表示させると、 どこに手が加えられたかよく分かる。

(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で戻る

ab
cd

(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)



ごみ箱

以下更新していないもの

・はじめに
・ひまわりとの違い
・GUI部品
・グループ
・雑記
・ブログ
・メモ日記
・なでしこ本紹介


リンク

・なでしこ
なでしこ本家。

・ひまわり
ひまわり本家。

・なでしこごっこ
vnakoグループ一覧
(けんさん) vnako.nakoが整理されて見やすい。GUI部品を扱う時に便利。サンプル増加中。

その他のリンク(old)



サイトポリシー

日本語プログラム言語「なでしこ」を、
紹介しながら勉強しながら応援していくサイトです。

リンクフリー。どこにでも。
アンリンクフリー。いつでも。

*プログラムなどの再利用について
 プログラム・文章など、著作物の著作権は放棄しませんが、 ダメと書いてなければ、それらの利用はだいたい自由にどうぞ。
 ちょいと工夫あるプログラムなら著作権が発生しますが、 工夫も創造性もないただのサンプルなら、どうにでもしてくれです。
 プログラムを実行して損害が出ても補償できませんが、 そんなプログラムにならないようなるべく努力します。

ひまわりの倉庫(old)
もどうぞ。放置されてますが…。

サイトマップ(old)
マップというかただのファイル一覧です。
古い命令一覧や差分などがあります。


(C) 2004-2007 moka