SQLの窓

2014年07月30日


VB.netとC# : SQL 文を外部テキストにして、String.Format でデータ部分を置き換えて利用する

基本的には、String.Format メソッドのお話ですが、文字列の配列の扱いとの関係での注意事項です。
-- ******************************
-- 社員マスタ更新
-- ******************************

UPDATE 社員マスタ
set 
	氏名 = '{1}',
	給与 = {2},
-- 行コメント
	生年月日 = {3}

where 社員コード = '{0}'

-- 行コメント

行コメントは、正規表現で削除します。{} 部分の個数より、配列が大きい必要があり、Nothing が指定されると、{} ごとなくなります。
※ 配列のリサイズが必要な場合は、Array.Resize メソッドで行います。

VB.net による記述
Imports System.IO
Imports System.Text

Module Module1

	Sub Main()

		' 入力ファイルのパス ( "入力ファイルのパス" と指定する )
		Dim arguments As String() = Environment.GetCommandLineArgs()
		' 引数は一つのみ許可
		If arguments.Length <> 2 Then
			Console.WriteLine("引数を指定して下さい")
			Return
		End If

		' 引数から取得
		Dim BaseFilePath As String = arguments(1)

		' *********************************
		' 主なエンコード
		' *********************************
		' SHIFT_JIS
		Dim SJIS_Enc As Encoding = Encoding.GetEncoding(932)
		' EUC-JP
		Dim UJIS_Enc As Encoding = Encoding.GetEncoding(51932)
		' UNICODE 用
		Dim UNI_Enc As Encoding = Encoding.GetEncoding(1200)
		' UTF-8N
		Dim UTF8N_Enc As New UTF8Encoding()
		' UTF-8
		Dim UTF8_Enc As New UTF8Encoding(True)

		' *********************************
		' UTF-8N で読込み
		' *********************************
		' 読み込み用
		Dim ReadFile As StreamReader = New StreamReader(BaseFilePath, UTF8N_Enc)

		' 読込み
		Dim SqlText As String = ReadFile.ReadToEnd()
		Dim SqlWork As String = SqlText
		Dim SqlResult As String = Nothing

		' 全て読み込んでいるので閉じて解放
		ReadFile.Close()
		ReadFile.Dispose()

		' 行コメントの削除
		SqlWork = RegularExpressions.Regex.Replace( _
		 SqlWork, "([^\n-]*)--[^\n]*\n", "$1" _
		)

		' 改行が入っているので Write
		Console.Write(SqlWork)

		Dim rpl As String() = {"0001", "山田太郎", "100000", "'1980/01/01'"}
		Console.WriteLine("配列の数は {0} です", rpl.Length)

		Console.WriteLine("値を String.Format でセットします")
		SqlResult = String.Format(SqlWork, rpl)
		Console.Write(SqlResult)

		rpl(0) = "0002"
		rpl(1) = "山田花子"
		rpl(2) = "20000"
		rpl(3) = "NULL"
		SqlResult = String.Format(SqlWork, rpl)
		Console.Write(SqlResult)
		Console.WriteLine()

		rpl(0) = "0003"
		rpl(1) = "山田美子"
		rpl(2) = "20000"
		rpl(3) = "'1980/01/01'"
		SqlResult = String.Format(SqlWork, rpl)
		Console.Write(SqlResult)

		' *********************************
		' 終了処理
		' *********************************
		Console.WriteLine("処理が終了しました")

		' 一時停止
		Console.Write("Enterキーを押して下さい : ")
		Console.ReadLine()

	End Sub

End Module


C# による記述
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace StringFormat
{
	class Program
	{
		static void Main(string[] args)
		{
			// 入力ファイルのパス ( "入力ファイルのパス" と指定する )
			string[] arguments = Environment.GetCommandLineArgs();
			// 引数は一つのみ許可
			if ( arguments.Length != 2 ) {
				Console.WriteLine("引数を指定して下さい");
				return;
			}

			// 引数から取得
			string BaseFilePath = arguments[1];

			// *********************************
			// 主なエンコード
			// *********************************
			// SHIFT_JIS
			Encoding SJIS_Enc = Encoding.GetEncoding(932);
			// EUC-JP
			Encoding UJIS_Enc = Encoding.GetEncoding(51932);
			// UNICODE 用
			Encoding UNI_Enc = Encoding.GetEncoding(1200);
			// UTF-8N
			Encoding UTF8N_Enc = new UTF8Encoding();
			// UTF-8
			Encoding UTF8_Enc = new UTF8Encoding(true);

			// *********************************
			// UTF-8N で読込み
			// *********************************
			// 読み込み用
			StreamReader ReadFile = new StreamReader(BaseFilePath, UTF8N_Enc);

			// 読込み
			string SqlText = ReadFile.ReadToEnd();
			string SqlWork = SqlText;
			string SqlResult = null;

			// 全て読み込んでいるので閉じて解放
			ReadFile.Close();
			ReadFile.Dispose();

			// 行コメントの削除
			SqlWork = System.Text.RegularExpressions.Regex.Replace( 
				SqlWork, "([^\n-]*)--[^\n]*\n", "$1"
			);

			// 改行が入っているので Write
			Console.Write(SqlWork);

			string[] rpl = {"0001", "山田太郎", "100000", "'1980/01/01'"};
			Console.WriteLine("配列の数は {0} です", rpl.Length);

			Console.WriteLine("値を String.Format でセットします");
			SqlResult = String.Format(SqlWork, rpl);
			Console.Write(SqlResult);

			rpl[0] = "0002";
			rpl[1] = "山田花子";
			rpl[2] = "20000";
			rpl[3] = "NULL";
			SqlResult = String.Format(SqlWork, rpl);
			Console.Write(SqlResult);
			Console.WriteLine();

			rpl[0]= "0003";
			rpl[1] = "山田美子";
			rpl[2] = "20000";
			rpl[3] = "'1980/01/01'";
			SqlResult = String.Format(SqlWork, rpl);
			Console.Write(SqlResult);

			// *********************************
			// 終了処理
			// *********************************
			Console.WriteLine("処理が終了しました");

			// 一時停止
			Console.Write("Enterキーを押して下さい : ");
			Console.ReadLine();

		}
	}
}

引数は、プロジェクトのプロパティからデバッグタブを開けて設定します。





posted by lightbox at 2014-07-30 12:31 | VB.NET : ベーシック | このブログの読者になる | 更新情報をチェックする

2011年09月11日


VB.net : 「ファイルを開くダイアログ」のパラメータを単純なテキストファイルより取得する

テキストファイルは、メモ帳で以下のようにして作成します
C:\
HTML|*.html;*.htm|CSS|*.css|JavaScript|*.js|全てのファイル|*.*
4
★ ファイルを選択してください ★
True
True
True
True は、Boolean.Parse によって変換します。True と False 以外はエラーと なるので注意して下さい。 文字列配列による Split は第二引数にオプションが必要です。ここでは通常の StringSplitOptions.None を指定しています
Imports System.IO
Imports System.Text
Imports System.Windows.Forms

Module Module1

	Sub Main()

		' 文字列と Boolean 変換テスト
		Console.WriteLine(Boolean.TrueString)
		Console.WriteLine(Boolean.Parse("true"))

		Console.ReadLine()

		' パラメータファイルを一括読み込み
		Dim SJIS_Enc As Encoding = Encoding.GetEncoding(932)
		Dim sr As StreamReader = New StreamReader("param.txt", SJIS_Enc)
		Dim text As String = sr.ReadToEnd()
		Console.WriteLine(text)
		sr.Close()

		' CRLF を区切り文字列としてテキストデータ全体を分割
		Dim stringSeparators As String() = {Microsoft.VisualBasic.Constants.vbCrLf}
		Dim myParamArray As String() = text.Split(stringSeparators, StringSplitOptions.None)

		For Each strMember As String In myParamArray
			Console.WriteLine(strMember)
		Next

		Console.ReadLine()

		' 取得した文字列の配列を使って「ファイルを開くダイアログ」を表示
		Dim ofd As New OpenFileDialog()

		ofd.InitialDirectory = myParamArray(0)
		ofd.Filter = myParamArray(1)
		ofd.FilterIndex = myParamArray(2)
		ofd.Title = myParamArray(3)
		ofd.RestoreDirectory = Boolean.Parse(myParamArray(4))
		ofd.CheckFileExists = Boolean.Parse(myParamArray(5))
		ofd.CheckPathExists = Boolean.Parse(myParamArray(6))

		'ダイアログを表示する
		If ofd.ShowDialog() = DialogResult.OK Then
			Console.WriteLine(ofd.FileName)
		End If

		Console.ReadLine()

	End Sub

	'C:\
	'HTML|*.html;*.htm|CSS|*.css|JavaScript|*.js|全てのファイル|*.*
	'4
	'★ ファイルを選択してください ★
	'True
	'True
	'True

End Module

関連する記事

VB.net での テキストファイルの読み書きを、
出力時のみキャラクタセット毎に条件コンパイル指定する


posted by lightbox at 2011-09-11 15:36 | VB.NET : ベーシック | このブログの読者になる | 更新情報をチェックする

2011年09月10日


VB.net での テキストファイルの読み書きを、出力時のみキャラクタセット毎に条件コンパイル指定する



以下のように指定した文字列を使用して条件コンパイルを行います

vbc.exe vbc_textfile.vb /define:SJIS_BUILD

主なエンコード として以下の5つのエンコードを使用します
1) SHIFT_JIS
2) EUC-JP
3) UNICODE
4) UTF-8N
5) UTF-8 ( BOM付き )
( パッケージ内に簡易ダンプを同梱してますので、インストールして BOM を確認できます ) 比較的小さなファイルの場合は、ReadFile.ReadToEnd() で一度に全てメモリに 取得するのが簡単ですが、大きなファイルは行単位で処理するのが通常です。
Imports System.IO
Imports System.Text

Module Module1

	Sub Main()

		' 入力ファイルのパス ( "入力ファイルのパス" と指定する )
		Dim arguments As String() = Environment.GetCommandLineArgs()
		' 引数は一つのみ許可
		if arguments.Length <> 2 then
			Console.WriteLine("引数を指定して下さい")
			Return
		end if

		' 引数から取得
		Dim BaseFilePath As String = arguments(1)

		' **************************************************
		' 主なエンコード
		' **************************************************
		' SHIFT_JIS
		Dim SJIS_Enc As Encoding = Encoding.GetEncoding(932)
		' EUC-JP
		Dim UJIS_Enc As Encoding = Encoding.GetEncoding(51932)
		' UNICODE 用
		Dim UNI_Enc As Encoding = Encoding.GetEncoding(1200)
		' UTF-8N
		Dim UTF8N_Enc As New UTF8Encoding()
		' UTF-8
		Dim UTF8_Enc As New UTF8Encoding(True)

		' **************************************************
		' SHIFT_JISで読み、SHIFT_JIS で出力する
		' **************************************************
		' 読み込み用
		Dim ReadFile As StreamReader = New StreamReader( BaseFilePath, SJIS_Enc )
		' 書き込み用( 第二引数が False なので、上書き )

#If SJIS_BUILD Then
		Dim WriteFile As StreamWriter = New StreamWriter( BaseFilePath + ".txt", False, SJIS_Enc )
#End If
#If UJIS_BUILD Then
		Dim WriteFile As StreamWriter = New StreamWriter( BaseFilePath + ".txt", False, UJIS_Enc )
#End If
#If UNI_BUILD Then
		Dim WriteFile As StreamWriter = New StreamWriter( BaseFilePath + ".txt", False, UNI_Enc )
#End If
#If UTF8N_BUILD Then
		Dim WriteFile As StreamWriter = New StreamWriter( BaseFilePath + ".txt", False, UTF8N_Enc )
#End If
#If UTF8_BUILD Then
		Dim WriteFile As StreamWriter = New StreamWriter( BaseFilePath + ".txt", False, UTF8_Enc )
#End If

		' SHIFT_JIS で読み込み
		Dim LineText As String = Nothing
		' Peek() は、StreamReader オブジェクトの現在位置は変わりません
		' それ以上読み取り可能な文字がない場合、戻り値は -1 です。
		' 以下は、MSDN ライブラリでのサンプルコードと同じものです
		Do While ReadFile.Peek() >= 0
			LineText = ReadFile.ReadLine()

			WriteFile.WriteLine( LineText )
		Loop

		' **************************************************
		' 終了処理
		' **************************************************
		WriteFile.Close()
		WriteFile.Dispose()
		ReadFile.Close()
		ReadFile.Dispose()

		Console.WriteLine("処理が終了しました")

		' 一時停止
		Console.Write("Enterキーを押して下さい : ")
		Console.ReadLine()

	End Sub

End Module



タグ:VB.NET
posted by lightbox at 2011-09-10 15:01 | VB.NET : ベーシック | このブログの読者になる | 更新情報をチェックする

2011年09月07日


VB.net での DateDiff メソッドの使用方法

DateDiff 関数 : VBScript(Microsoft) 

DateDiff は、VBScript でも利用できるポピュラーなメソッドですが、Framework では、
引数は二通り用意されており、一つは VBScript と互換のあるデータ型で、もうひとつは
Framework の型を使ったものです。
Module Module1

	Sub Main()

		' DateDiff(日付差分)は、Microsoft.VisualBasic 名前空間の
		'  DateAndTime クラス内にあるメソッドで、VBScript でも定義されている関数

		Dim strBoundary As String = Nothing

		' VBScript でも実行可能な記述方法
		strBoundary = DateDiff("s", "1970/1/1 0:00:00", DateAdd("h", -9, Now))
		Console.WriteLine(strBoundary)

		' 上記結果を Framework に合った書き方で DateDiff する為に引数を用意
		Dim myDateTimeValue As String = "1970/1/1 0:00:00"
		Dim myDateTime As DateTime = DateTime.Parse(myDateTimeValue)
		Dim today As System.DateTime = System.DateTime.Now
		Dim duration As System.TimeSpan = New System.TimeSpan(0, -9, 0, 0)
		Dim target_date As System.DateTime = today.Add(duration)

		' Framework 用の実行
		strBoundary = DateDiff(DateInterval.Second, myDateTime, target_date)
		Console.WriteLine(strBoundary)

		Console.ReadLine()

	End Sub

End Module

関連する記事

VBScript で HTTPプロトコルで PHP へファイルをアップロードする方法


タグ:VB.NET DateDiff
posted by lightbox at 2011-09-07 11:39 | VB.NET : ベーシック | このブログの読者になる | 更新情報をチェックする

2010年07月06日


VB.net : 整数 : カンマ編集/前ゼロ/前スペース/16進数文字列変換

業務処理では、整数を3ケタ毎のカンマで編集表示する事は必ず必要です。また、前ゼロの編集は入力された値を文字列としてのコードとして編集するのに必要です。前スペースの編集は出力処理(主に印刷)の桁あわせに必要な場合があります。

さらに、元データとしては文字列である場合も多いので、いったん整数に変換してから編集する事も多くなると思います
vb.net>str_format.exe
||
|0|
|1,000,000|
------------------------------------
0
1,000,000
------------------------------------
1,000.123
------------------------------------
||
|0|
|1,000,000|
------------------------------------
A
a
------------------------------------
|A|
|a|
------------------------------------
|0010|
------------------------------------
|0010|
------------------------------------
     1,000
------------------------------------
1000000
1000000


Module MyModule

' ********************************
' 数字関係の編集処理
' ********************************
Sub Main()

	' ********************************
	' 整数をカンマ編集
	' ********************************
	Dim nData As Integer = 0

	' 1) 整数そのものを ToString
	' |(縦棒) は、編集文字以外なので、そのまま表示
	' ※ カスタム書式では、他の文字を混在できます
	Console.WriteLine( nData.ToString("|#,#|") )
	Console.WriteLine( nData.ToString("|#,0|") )
	nData = 1000000
	Console.WriteLine( nData.ToString("|#,0|") )

	Console.WriteLine( "------------------------------------" )


	' 以下のようなコードでも可能です( # のような機能はありません )
	' N0 の 0 は小数以下の精度です
	' ※ 標準書式では、他の文字を混在できません
	nData = 0
	Console.WriteLine( nData.ToString("N0") )
	nData = 1000000
	Console.WriteLine( nData.ToString("N0") )

	Console.WriteLine( "------------------------------------" )

	' Decimal は、10進数を表現するオブジェクトです
	' N0 の 0 は小数以下の精度です
	Dim decData As Decimal = 1000.12345
	Console.WriteLine( decData.ToString("N3") )

	Console.WriteLine( "------------------------------------" )

	' Format メソッド
	Console.WriteLine( String.Format( "|{0:#,#}|", 0  ) )
	Console.WriteLine( String.Format( "|{0:#,0}|", 0  ) )
	Console.WriteLine( String.Format( "|{0:#,0}|", 1000000  ) )

	Console.WriteLine( "------------------------------------" )

	' ********************************
	' 整数を16進数
	' ********************************
	nData = 10

	' 整数そのものを ToString( 大文字と小文字 )
	Console.WriteLine( nData.ToString("X") )
	Console.WriteLine( nData.ToString("x") )

	Console.WriteLine( "------------------------------------" )

	' Format メソッド( 大文字と小文字 )
	Console.WriteLine( String.Format( "|{0:X}|", 10  ) )
	Console.WriteLine( String.Format( "|{0:x}|", 10  ) )

	Console.WriteLine( "------------------------------------" )

	' ********************************
	' 整数を前ゼロコードに変換
	' この場合、固定長のコードに変換できます
	' ********************************
	nData = 10

	' 整数そのものを ToString(  )
	Console.WriteLine( nData.ToString("|0000|") )

	Console.WriteLine( "------------------------------------" )

	' Format メソッド( 大文字と小文字 )
	Console.WriteLine( String.Format( "|{0:0000}|", 10  ) )

	Console.WriteLine( "------------------------------------" )

	' ********************************
	' 整数を前スペース文字列に変換
	' 全ての言語共通の方法として、必要な文字列長のスペースを
	' 前につなげて右から必要な文字数の文字列を切り取ります
	' "     Z,ZZ9" (10ケタ) という文字列が欲しい場合
	' ********************************
	nData = 1000

	' まず、Z,ZZ9 部分を作成
	Dim str As String = nData.ToString("#,0")
	' 10ケタのスペースを連結
	str = "          " + str
	' 右から10ケタを取得
	str = str.Substring( str.Length - 10 )
	' 結果
	Console.WriteLine( str )

	Console.WriteLine( "------------------------------------" )


	' ********************************
	' 【補足】16進数文字列を整数に変換する : Integer.Parse
	' ********************************

	' A は 16進数 の 10
	Console.WriteLine( Integer.Parse("A", _
			System.Globalization.NumberStyles.HexNumber) * 100000 )

	' ********************************
	' 【補足】文字列を整数に変換する : Integer.Parse
	' ********************************

	Console.WriteLine( Integer.Parse("10" ) * 100000 )

End Sub

End Module



▼ C#
using System;

class MyModule {
    
    // ********************************
    //  
    // ********************************
    static void Main() {
        // ********************************
        //  
        // ********************************
        int nData = 0;
        Console.WriteLine(nData.ToString("|#,#|"));
        Console.WriteLine(nData.ToString("|#,0|"));
        nData = 1000000;
        Console.WriteLine(nData.ToString("|#,0|"));
        Console.WriteLine("------------------------------------");
        nData = 0;
        Console.WriteLine(nData.ToString("N0"));
        nData = 1000000;
        Console.WriteLine(nData.ToString("N0"));
        Console.WriteLine("------------------------------------");
        Decimal decData = 1000.12345m;
        Console.WriteLine(decData.ToString("N3"));
        Console.WriteLine("------------------------------------");
        Console.WriteLine(string.Format("|{0:#,#}|", 0));
        Console.WriteLine(string.Format("|{0:#,0}|", 0));
        Console.WriteLine(string.Format("|{0:#,0}|", 1000000));
        Console.WriteLine("------------------------------------");
        // ********************************
        //  
        // ********************************
        nData = 10;
        Console.WriteLine(nData.ToString("X"));
        Console.WriteLine(nData.ToString("x"));
        Console.WriteLine("------------------------------------");
        Console.WriteLine(string.Format("|{0:X}|", 10));
        Console.WriteLine(string.Format("|{0:x}|", 10));
        Console.WriteLine("------------------------------------");
        // ********************************
        //  
        // ********************************
        nData = 10;
        Console.WriteLine(nData.ToString("|0000|"));
        Console.WriteLine("------------------------------------");
        Console.WriteLine(string.Format("|{0:0000}|", 10));
        Console.WriteLine("------------------------------------");
        // ********************************
        //  
        // ********************************
        nData = 1000;
        string str = nData.ToString("#,0");
        str = ("          " + str);
        str = str.Substring((str.Length - 10));
        Console.WriteLine(str);
        Console.WriteLine("------------------------------------");
        // ********************************
        //  
        // ********************************
        Console.WriteLine((int.Parse("A", System.Globalization.NumberStyles.HexNumber) * 100000));
        // ********************************
        //  
        // ********************************
        Console.WriteLine((int.Parse("10") * 100000));
    }
}



タグ:VB.NET
posted by lightbox at 2010-07-06 12:16 | VB.NET : ベーシック | このブログの読者になる | 更新情報をチェックする

2010年06月28日


テキストファイルとキャラクタセットの処理


VB.net : テキストファイルとキャラクタセット
通常は、バイナリを意識せずにテキストを相互変換します。 一旦メモリ上の UNICODE に変換すると思えば良いでしょう。 Byte 配列は、他の処理からそういう形でしか用意されない場合に使用 しますが、結局大差はありません。エンコード指定は同じですし、ただ バイトとしての長さを意識するくらいです。 ※ FileStream に読み込む場合、長さを指定しないと 0x00 が1バイト付加されてしまいました キャラクタセット ■ SHIFT_JIS ■ UTF-8( BOM あり ) ■ UTF-8( BOM なし ) ■ EUC-JP ■ UNICODE ■ JIS
posted by lightbox at 2010-06-28 08:37 | VB.NET : ベーシック | このブログの読者になる | 更新情報をチェックする

2010年06月02日


VB.net : String、Char()、Byte() の相互変換

Byte はキャラクタセットとしての内部コードが必要な場合に使用します

ある値を(特定のキャラクタセットで) Char か 文字列で比較したい場合は Byte 配列の中に一つ数値をセットして、Encoding.GetChars か Encoding.GetString で変換して使用します
------------------------------------------------------
Dim ByteCr As Byte() = New Byte() { 13 }
Dim ByteLf As Byte() = New Byte() { 10 }
------------------------------------------------------
Imports System.Text

Module MyModule

' ********************************************************
' 相互変換
' ********************************************************
Sub Main()

	Dim base As String = "アイ"


	' **************************************************************
	' 文字列の "アイ" を Byte 配列に変換 : String => Byte()
	' ※ Byte 配列変換時は、キャラクタセットによって実体が変わります
	' **************************************************************

	Dim a_byte As Byte() = Encoding.GetEncoding("Shift_JIS").GetBytes(base)


	' SHIFT_JIS としてバイト変換しているので、B1 B2 となります
	Console.WriteLine( a_byte.Length )
	Console.WriteLine( a_byte(0).ToString("X") )
	Console.WriteLine( a_byte(1).ToString("X") )

	Console.WriteLine( "----------" )

	' 元に戻す

	Dim work As String = Encoding.GetEncoding("Shift_JIS").GetString( a_byte )

	Console.WriteLine( work )

	Console.WriteLine( "----------" )


	' **************************************************************
	' バイト配列(Shift_JIS) "アイ" を Char 配列(Unicode)に変換 : Byte() => Char()
	' ※ Byte 配列内のキャラクタセットに合わせて変換する必要があります
	' **************************************************************

	Dim a_char As Char() = Encoding.GetEncoding("Shift_JIS").GetChars( a_byte )

	Console.WriteLine( a_char )
	Console.WriteLine( a_char.Length )

	Dim b As Byte() = Encoding.Unicode.GetBytes(a_char)

	' Unicode として値を表示しています
	Console.WriteLine( b.Length )
	Console.WriteLine(b(0).ToString("X"))
	Console.WriteLine(b(1).ToString("X"))
	Console.WriteLine(b(2).ToString("X"))
	Console.WriteLine(b(3).ToString("X"))

	Console.WriteLine( "----------" )


	' **************************************************************
	' Char 配列(Unicode)を String に変換 : Char() => String
	' **************************************************************

	' Char 単位で変換して連結
	Console.WriteLine( a_char(0).ToString() & a_char(1).ToString() )

	' いったん Byte 配列に戻す(Unicode)
	a_byte = Encoding.Unicode.GetBytes(a_char)
	Console.WriteLine( Encoding.Unicode.GetString(a_byte) )

	' いったん Byte 配列に戻す(Shift_JIS)
	a_byte = Encoding.GetEncoding("Shift_JIS").GetBytes(a_char)
	Console.WriteLine( Encoding.GetEncoding("Shift_JIS").GetString(a_byte) )

	Console.WriteLine( "----------" )


	' **************************************************************
	' 文字列の "アイ" を Char 配列に変換 : String => Char()
	' **************************************************************

	a_char = base.ToCharArray()

	Console.WriteLine( a_char )
	Console.WriteLine( a_char.Length )

	b = Encoding.Unicode.GetBytes(a_char)

	' Unicode として値を表示しています
	Console.WriteLine( b.Length )
	Console.WriteLine(b(0).ToString("X"))
	Console.WriteLine(b(1).ToString("X"))
	Console.WriteLine(b(2).ToString("X"))
	Console.WriteLine(b(3).ToString("X"))

	Console.WriteLine( "----------" )

	' **************************************************************
	' Char 配列(Unicode)を Byte配列に変換 : Char() => Byte()
	' ※ Byte 配列変換時は、キャラクタセットによって実体が変わります
	' **************************************************************

	a_byte =  Encoding.Unicode.GetBytes(a_char)

	' Unicode として値を表示しています
	Console.WriteLine( a_byte.Length )
	Console.WriteLine(a_byte(0).ToString("X"))
	Console.WriteLine(a_byte(1).ToString("X"))
	Console.WriteLine(a_byte(2).ToString("X"))
	Console.WriteLine(a_byte(3).ToString("X"))

	Console.WriteLine( "----------" )


	' **************************************************************
	' バイト配列(Unicode) を String)に変換 : Byte() => String
	' ※ Byte 配列内のキャラクタセットに合わせて変換する必要があります
	' **************************************************************

	Console.WriteLine( Encoding.Unicode.GetString(a_byte) )

	Console.WriteLine( "----------" )


	' **************************************************************
	' 単一の文字列(String) を 単一の Char に変換 String => Char
	' **************************************************************

	Dim char1 As Char = Char.Parse("ア")
	Dim a_char2 As Char() = {char1,"イ"}

	Console.WriteLine( a_char2 )

End Sub

End Module


関連する記事

VB.net : 文字単位の ASCII と Unicode
VB.net と C# における KeyPress イベントの受け取り方
VB.net : テキストファイルとキャラクタセット


posted by lightbox at 2010-06-02 12:26 | VB.NET : ベーシック | このブログの読者になる | 更新情報をチェックする

2010年05月30日


VB.net : 文字単位の ASCII と Unicode

0 〜 127 までは同じですが、Chr で作成される文字は SHIFT_JIS なので、全てが存在しません。それに対して、ChrW では、全ての文字コードが存在しています。 

また、SHIFT_JIS の半角カタカナは、SHIFT_JIS の文字コードにありますが、Unicode として表現される場合は、SHIFT_JIS のコードとは違います。

半角カナの ア は、SHIFT_JIS では 0xB1 ですが、Unicode では、0xFF71 です
Module MyModule

' *****************************************
' Chr と ChrW と Asc と AscW
' *****************************************
Sub Main()

	Dim I As Integer
	Dim J As Integer
	Dim c As Char
	Dim c_code As Integer

	' SHIFT_JIS
	For I = 0 to 15
		For J = 0 to 15

			c = Microsoft.VisualBasic.Strings.Chr(I+J*16)
			c_code = Microsoft.VisualBasic.Strings.Asc(c)

			if J = 0 then
				Console.Write( "0" & c_code.ToString("X") & " ")
			else if c_code = 0
				Console.Write( "-- " )
			else
				Console.Write( c_code.ToString("X") & " ")
			end if

		Next
		Console.WriteLine()
	Next

	Console.WriteLine()

	' SHIFT_JIS の中の文字の一部を Unicodeに変換
	For I = 0 to 15
		For J = 0 to 15

			c = Microsoft.VisualBasic.Strings.Chr(I+J*16)
			c_code = Microsoft.VisualBasic.Strings.AscW(c)

			if J = 0 then
				Console.Write( "0" & c_code.ToString("X") & " ")
			else if c_code = 0
				Console.Write( "-- " )
			else
				Console.Write( c_code.ToString("X") & " ")
			end if

		Next
		Console.WriteLine()
	Next

	Console.WriteLine()

	' Unicode
	For I = 0 to 15
		For J = 0 to 15

			c = Microsoft.VisualBasic.Strings.ChrW(I+J*16)
			c_code = Microsoft.VisualBasic.Strings.AscW(c)

			if J = 0 then
				Console.Write( "0" & c_code.ToString("X") & " ")
			else if c_code = 0
				Console.Write( "-- " )
			else
				Console.Write( c_code.ToString("X") & " ")
			end if

		Next
		Console.WriteLine()
	Next

End Sub

End Module


00 10 20 30 40 50 60 70 80 -- A0 B0 C0 D0 -- --
01 11 21 31 41 51 61 71 -- -- A1 B1 C1 D1 -- --
02 12 22 32 42 52 62 72 -- -- A2 B2 C2 D2 -- --
03 13 23 33 43 53 63 73 -- -- A3 B3 C3 D3 -- --
04 14 24 34 44 54 64 74 -- -- A4 B4 C4 D4 -- --
05 15 25 35 45 55 65 75 -- -- A5 B5 C5 D5 -- --
06 16 26 36 46 56 66 76 -- -- A6 B6 C6 D6 -- --
07 17 27 37 47 57 67 77 -- -- A7 B7 C7 D7 -- --
08 18 28 38 48 58 68 78 -- -- A8 B8 C8 D8 -- --
09 19 29 39 49 59 69 79 -- -- A9 B9 C9 D9 -- --
0A 1A 2A 3A 4A 5A 6A 7A -- -- AA BA CA DA -- --
0B 1B 2B 3B 4B 5B 6B 7B -- -- AB BB CB DB -- --
0C 1C 2C 3C 4C 5C 6C 7C -- -- AC BC CC DC -- --
0D 1D 2D 3D 4D 5D 6D 7D -- -- AD BD CD DD -- FD
0E 1E 2E 3E 4E 5E 6E 7E -- -- AE BE CE DE -- FE
0F 1F 2F 3F 4F 5F 6F 7F -- -- AF BF CF DF -- FF

00 10 20 30 40 50 60 70 80 -- F8F0 FF70 FF80 FF90 -- --
01 11 21 31 41 51 61 71 -- -- FF61 FF71 FF81 FF91 -- --
02 12 22 32 42 52 62 72 -- -- FF62 FF72 FF82 FF92 -- --
03 13 23 33 43 53 63 73 -- -- FF63 FF73 FF83 FF93 -- --
04 14 24 34 44 54 64 74 -- -- FF64 FF74 FF84 FF94 -- --
05 15 25 35 45 55 65 75 -- -- FF65 FF75 FF85 FF95 -- --
06 16 26 36 46 56 66 76 -- -- FF66 FF76 FF86 FF96 -- --
07 17 27 37 47 57 67 77 -- -- FF67 FF77 FF87 FF97 -- --
08 18 28 38 48 58 68 78 -- -- FF68 FF78 FF88 FF98 -- --
09 19 29 39 49 59 69 79 -- -- FF69 FF79 FF89 FF99 -- --
0A 1A 2A 3A 4A 5A 6A 7A -- -- FF6A FF7A FF8A FF9A -- --
0B 1B 2B 3B 4B 5B 6B 7B -- -- FF6B FF7B FF8B FF9B -- --
0C 1C 2C 3C 4C 5C 6C 7C -- -- FF6C FF7C FF8C FF9C -- --
0D 1D 2D 3D 4D 5D 6D 7D -- -- FF6D FF7D FF8D FF9D -- F8F1
0E 1E 2E 3E 4E 5E 6E 7E -- -- FF6E FF7E FF8E FF9E -- F8F2
0F 1F 2F 3F 4F 5F 6F 7F -- -- FF6F FF7F FF8F FF9F -- F8F3

00 10 20 30 40 50 60 70 80 90 A0 B0 C0 D0 E0 F0
01 11 21 31 41 51 61 71 81 91 A1 B1 C1 D1 E1 F1
02 12 22 32 42 52 62 72 82 92 A2 B2 C2 D2 E2 F2
03 13 23 33 43 53 63 73 83 93 A3 B3 C3 D3 E3 F3
04 14 24 34 44 54 64 74 84 94 A4 B4 C4 D4 E4 F4
05 15 25 35 45 55 65 75 85 95 A5 B5 C5 D5 E5 F5
06 16 26 36 46 56 66 76 86 96 A6 B6 C6 D6 E6 F6
07 17 27 37 47 57 67 77 87 97 A7 B7 C7 D7 E7 F7
08 18 28 38 48 58 68 78 88 98 A8 B8 C8 D8 E8 F8
09 19 29 39 49 59 69 79 89 99 A9 B9 C9 D9 E9 F9
0A 1A 2A 3A 4A 5A 6A 7A 8A 9A AA BA CA DA EA FA
0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AB BB CB DB EB FB
0C 1C 2C 3C 4C 5C 6C 7C 8C 9C AC BC CC DC EC FC
0D 1D 2D 3D 4D 5D 6D 7D 8D 9D AD BD CD DD ED FD
0E 1E 2E 3E 4E 5E 6E 7E 8E 9E AE BE CE DE EE FE
0F 1F 2F 3F 4F 5F 6F 7F 8F 9F AF BF CF DF EF FF


posted by lightbox at 2010-05-30 17:06 | VB.NET : ベーシック | このブログの読者になる | 更新情報をチェックする

2009年12月07日


コマンドプロンプト : 入力したキーストロークを表示しない readkey.exe

ブラウザでダウンロード
標準入力でデータを入力できるアプリケーションに対して、
パスワード等の入力時に表示させたくない処理を想定して作成しました。

php による FTP ダウンロードのサンプルを付加しています

Framework では、日本語入力がうまくいかなかったので、VC8 でビルド
した readkey_vc.exe ( 含ソースコード ) も添付しています
Imports System.Text
Imports System.Threading

Module MyModule

' ********************************************************
' * エコー無しのキー入力
' * Backspace キーでバッファクリア
' * Enter で入力内容を標準出力
' ********************************************************
Sub Main()

	Dim cki As ConsoleKeyInfo = New ConsoleKeyInfo()
	Dim ret As String = ""

	Do
		' 押されたキーが入力ストリームに入るるまで待つ
		Do While Console.KeyAvailable = False
			Thread.Sleep(250)
		Loop

		' キーを取得( エコーしない )
		cki = Console.ReadKey(True)
		if cki.Key = ConsoleKey.Enter
			Exit Do
		end if
		if cki.Key = ConsoleKey.Backspace
			ret = ""
		else
			ret = ret & Char.ToString(cki.KeyChar)
		end if
	Loop

	Console.WriteLine( ret )

End Sub

End Module

#include <stdio.h>
#include <tchar.h>
#include <conio.h>
#include <ctype.h>

int _tmain(int argc, _TCHAR* argv[])
{
	int ch;

	char buff[1024];
	int p;

	buff[0] = 0x00;
	p = 0;
	while(1) {
		ch = _getch();
		if ( char(ch) == 0x0d ) {
			break;
		}
		if ( char(ch) == 0x08 ) {
			buff[0] = 0x00;
			p = 0;
			continue;;
		}
		buff[p] = ch;
		p++;
		buff[p] = 0x00;
	}

	printf("%s\n", buff);

	return 0;
}

@echo off
echo 以下にパスワードを入力して下さい & readkey | php.exe ftp_download.php

************************************************************
* エコー無し入力
* 入力した結果は表示されず、Enter キーを入力すると
* 標準出力へ出力します
* Back Space で入力内容をリセットできます
************************************************************

【VB.net : 日本語入力不可】
readkey.exe 

【VC8 : 日本語入力可】
readkey_vc.exe 

************************************************************
* 利用方法
************************************************************
入力時に表示したくないパスワード入力に使用します。
結果をリダイレクトする事によって次のアプリケーション
にパスワードを引き渡します

************************************************************
* 自分でビルドしたい場合( readkey.vb )
************************************************************
Framework3.5 でビルドする場合は、build_35.bat を実行します。
以下のファイルがあれば動作するばずです

C:\WINDOWS\Microsoft.NET\Framework\v3.5\vbc.exe

Framework2.0 でビルドする場合は、build_2.bat を実行します。
以下のファイルがあれば動作するばずです

■ 同梱している httpdownload.exe は、2.0 でビルドしています

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\vbc.exe


************************************************************
* ソースコード
************************************************************
■ readkey.vb

■ readkey_vc.cpp


************************************************************
* PHP を使ったサンプル
************************************************************
■ ftp_download.php

■ run.bat


************************************************************
* その他
************************************************************
■ 著作権その他

このプログラムはフリーです。どうぞ自由に御使用ください。
著作権は作者である私(lightbox)が保有しています。
また、本ソフトを運用した結果については、作者は一切責任を
負えせんのでご了承ください。


VB.net 関連の記事


posted by lightbox at 2009-12-07 17:18 | VB.NET : ベーシック | このブログの読者になる | 更新情報をチェックする

2009年12月03日


VB.net/C# : 連続する文字の作成と良く使う文字列フォーマット

文字列へ変換するフォーマット文字列は、数値書式指定文字列 です。
' Char 型の "0" を作成
Dim baseFormat As Char = Char.Parse("0")

' 連続する "0" を作成
Dim zeroFormat As String = New String(baseFormat, 10)

' Char 型の "あ" を作成
Dim moji As Char = Char.Parse("あ")

' 連続する "あ" を作成
Dim many_moji As String = New String(moji, 20)
Console.WriteLine(many_moji)


' 16777215 => "0016777215"
Console.WriteLine((&HFFFFFF).ToString(zeroFormat))
Console.WriteLine(String.Format("{0:" + zeroFormat + "}", &HFFFFFF))

' 16777215 => "FFFFFFFF"
Console.WriteLine((&HFFFFFF).ToString("X"))
Console.WriteLine(String.Format("{0:X}", &HFFFFFF))

' 16777215 => "ffffffff"
Console.WriteLine((&HFFFFFF).ToString("x"))

' 16777215 => "16,777,215"
Console.WriteLine((&HFFFFFF).ToString("#,###"))

' 結果が空文字になります
Console.WriteLine("/" + (0).ToString("#,###") + "/")

' 10 は、文字列長指定
' 0 の位が # だと、0 はスペース、0だと、0 は 0
Console.WriteLine(String.Format("{0,10:#,###} : {1,10:#,##0}", 0, 0))

ああああああああああああああああああああ
0016777215
0016777215
FFFFFF
FFFFFF
ffffff
16,777,215
//
           :          0
▼ C#
char baseFormat = char.Parse("0");

string zeroFormat = new string(baseFormat, 10);

char moji = char.Parse("B");

string many_moji = new string(moji, 20);


Console.WriteLine(many_moji);
Console.WriteLine(16777215.ToString(zeroFormat));

Console.WriteLine(string.Format(("{0:" 
                    + (zeroFormat + "}")), 16777215));
Console.WriteLine(16777215.ToString("X"));

Console.WriteLine(string.Format("{0:X}", 16777215));

Console.WriteLine(16777215.ToString("x"));

Console.WriteLine(16777215.ToString("#,###"));

Console.WriteLine(("/" 
                + (0.ToString("#,###") + "/")));

Console.WriteLine(string.Format("{0,10:#,###} : {1,10:#,##0}", 0, 0));

オンライン(リアルタイム) VB=>C# ツール

関連するMicrosoft リンク

String.Format メソッド (String, Object) (System)


関連する記事


posted by lightbox at 2009-12-03 15:33 | VB.NET : ベーシック | このブログの読者になる | 更新情報をチェックする

VB.net : 各種ディレクトリパスの取得 : テンポラリ/システム/特殊ディレクトリの列挙

何故か、GetTempPath で 最後に \ が付加されたので、無条件にGetDirectoryName を使用していますが、実際は、\ の有無で判断してから、処理したほうが良いと思います
' テンポラリディレクトリ( GetTempPath だと最後に \ が付加されてしまう )
Console.WriteLine( System.IO.Path.GetDirectoryName( System.IO.Path.GetTempPath() ) )

' VB的 テンポラリディレクトリ
Console.WriteLine( My.Computer.FileSystem.SpecialDirectories.Temp )

' システムディレクトリ
Console.WriteLine( Environment.SystemDirectory )

' Windows ディレクトリ
Console.WriteLine( System.IO.Path.GetDirectoryName( Environment.SystemDirectory ) )


' GetFolderPath で取得できるディレクトリ一覧
Dim Folders As Integer() = _
	Environment.SpecialFolder.GetValues(GetType(Environment.SpecialFolder))
Dim i As Integer

For i = 0 To Folders.Length - 1

	Console.WriteLine( Environment.GetFolderPath( Folders(i)) )

Next

' GetFolderPath で取得できるディレクトリ一覧とそれに対応する定義名一覧
Dim FolderNames As String() = _
	Environment.SpecialFolder.GetNames(GetType(Environment.SpecialFolder))
Dim nType As Integer

For i = 0 To Folders.Length - 1

	Console.WriteLine( FolderNames(i) )

	nType = CType( _
		System.Enum.Parse(GetType(Environment.SpecialFolder),FolderNames(i)), _
		Integer _
	)

	Console.WriteLine( Environment.GetFolderPath( nType ) )

Next

Desktop
C:\Documents and Settings\lightbox\デスクトップ
Programs
C:\Documents and Settings\lightbox\スタート メニュー\プログラム
Personal
C:\Documents and Settings\lightbox\My Documents
MyDocuments
C:\Documents and Settings\lightbox\My Documents
Favorites
C:\Documents and Settings\lightbox\Favorites
Startup
C:\Documents and Settings\lightbox\スタート メニュー\プログラム\スタートアップ
Recent
C:\Documents and Settings\lightbox\Recent
SendTo
C:\Documents and Settings\lightbox\SendTo
StartMenu
C:\Documents and Settings\lightbox\スタート メニュー
MyMusic
C:\Documents and Settings\lightbox\My Documents\My Music
DesktopDirectory
C:\Documents and Settings\lightbox\デスクトップ
MyComputer

Templates
C:\Documents and Settings\lightbox\Templates
ApplicationData
C:\Documents and Settings\lightbox\Application Data
LocalApplicationData
C:\Documents and Settings\lightbox\Local Settings\Application Data
InternetCache
C:\Documents and Settings\lightbox\Local Settings\Temporary Internet Files
Cookies
C:\Documents and Settings\lightbox\Cookies
History
C:\Documents and Settings\lightbox\Local Settings\History
CommonApplicationData
C:\Documents and Settings\All Users\Application Data
System
C:\WINDOWS\system32
ProgramFiles
C:\Program Files
MyPictures
C:\Documents and Settings\lightbox\My Documents\My Pictures
CommonProgramFiles
C:\Program Files\Common Files


関連する記事


タグ:VB.NET
posted by lightbox at 2009-12-03 12:19 | VB.NET : ベーシック | このブログの読者になる | 更新情報をチェックする

VB.net : アプリケーションを開始した実行可能ファイルのパス

アセンブリ名(拡張子なし)はファイル名を変更しても変わりませんが
この場合はファイル名そのものを指します

※ My.Application.Info.AssemblyName
Console.WriteLine( System.Windows.Forms.Application.ExecutablePath )



関連する記事


タグ:VB.NET
posted by lightbox at 2009-12-03 11:09 | VB.NET : ベーシック | このブログの読者になる | 更新情報をチェックする

VB.net : アプリケーションディレクトリ

概要
exe が存在するディレクトリです。通常、設定ファイル等を開く時に必要になります。
上のほうは、VB として用意されているもので、下は同じものですが
Framework として取り出しています
' VB 的 アプリケーションディレクトリ
Console.WriteLine(My.Application.Info.DirectoryPath)

' Freamework 的 アプリケーションディレクトリ
Dim thisA As System.Reflection.Assembly = System.Reflection.Assembly.GetExecutingAssembly()
Dim info As Microsoft.VisualBasic.ApplicationServices.AssemblyInfo = _
 New Microsoft.VisualBasic.ApplicationServices.AssemblyInfo(thisA)
Console.WriteLine(info.DirectoryPath)

以下は C# で書いたものです
// Freamework 的 アプリケーションディレクトリ 
System.Reflection.Assembly thisA = System.Reflection.Assembly.GetExecutingAssembly(); 
Microsoft.VisualBasic.ApplicationServices.AssemblyInfo info = 
	new Microsoft.VisualBasic.ApplicationServices.AssemblyInfo(thisA); 
System.Console.WriteLine(info.DirectoryPath); 

// ビルド例
// csc /r:%windir%\Microsoft.NET\Framework\v2.0.50727\Microsoft.VisualBasic.dll info.cs



関連する記事


タグ:VB.NET
posted by lightbox at 2009-12-03 05:52 | VB.NET : ベーシック | このブログの読者になる | 更新情報をチェックする

2009年12月01日


VB.NET : バッチファイル用ファイルの参照ダイアログ

2009/12/01 更新
1) OpenFileDialog.exe をビルドしてパッケージ化しました
2) サンプルパッチファイルを付加しています

ブラウザでダウンロード
概要
コマンドプロントベースでファイルの参照ダイアログを開き、標準出力に出力すると、
バッチファイルでファイルのパスを取り出す事が出来ます。
Imports System.Windows.Forms

Module Module1

	Sub Main()

		Dim ofd As OpenFileDialog = New OpenFileDialog()

		If ofd.ShowDialog = Windows.Forms.DialogResult.OK Then

			Console.Out.WriteLine(ofd.FileName)

		Else

			Console.Out.WriteLine("")

		End If

	End Sub

End Module

@echo off
REM ここでセットされた環境変数は、このバッチファイル内でのみ有効
setlocal

REM 1回目のメモ帳起動
REM 選択してない場合は For 内には入らないので if の
REM 真の実行文は何でも良い
REM "delims=" は、区切り文字をデフォルトのスペースから無しに変更
For /F "delims=" %%i in ('OpenFileDialog.exe') do (
	if "%%i"=="" ( pause ) else ( notepad.exe "%%i" )
)

REM 2回目のメモ帳起動
REM 選択した場合のみ処理される( 前回と同じ )
For /F "delims=" %%i in ('OpenFileDialog.exe') do (
	if not "%%i"=="" ( notepad.exe "%%i" )
)

REM ファイル参照の結果を一旦変数にセット
For /F "delims=" %%i in ('OpenFileDialog.exe') do (
	set PATH01=%%i
)

REM ファイルが選択されなかった場合の処理は終了
if "%PATH01%"=="" ( goto ExitAction )

REM 3回目のメモ帳起動
notepad "%PATH01%"

REM 終了
:ExitAction
echo "%PATH01%"

関連するページ
Framework2.0 VB.NET バッチビルドセット


posted by lightbox at 2009-12-01 16:14 | VB.NET : ベーシック | このブログの読者になる | 更新情報をチェックする

2009年09月12日


コマンドプロンプト : クリップボードにあるファイル情報を標準出力へ

バイナリダウンロード ( cf.exe )

ブラウザでダウンロード
エクスプローラでファイルを選択してクリップボードにコピーしても、テキストデータとして取り出す事ができません。このデータを標準出力に出力してコマンドプロンプトで使用できます。
Imports System.Collections.Specialized

Module MyModule

' ***********************************************
' * クリップボードにあるファイル情報を標準出力へ
' ***********************************************
Sub Main()

	' 引数による処理タイプの決定
	' name : ファイル名のみ
	' path : フルパス
	Dim argv As String()
	argv = System.Environment.GetCommandLineArgs()
	Dim ActType As String
	If argv.Length = 1 Then
		ActType = "name"
	Else
		' name または path
		ActType = argv(1)
	End If
	' SHIFT キーを感知できた場合は処理を反転する
	If My.Computer.Keyboard.ShiftKeyDown Then
		If ActType = "name" Then
			ActType = "path"
		else
			ActType = "name"
		End If
	End If

	Dim FileList As StringCollection
	Dim FilePath As String
	Dim ClipString As String = ""
	Dim delimStr As String = "\"
	Dim delimiter As Char() = delimStr.ToCharArray()
	Dim aData As String()

	' クリップボードにファイルのデータがあった場合
	If My.Computer.Clipboard.ContainsFileDropList() Then
		'データを取得する
		FileList = My.Computer.Clipboard.GetFileDropList()
		'取得したファイル名を列挙する
		For Each FilePath In FileList
			If ActType = "path" Then
				Console.WriteLine( FilePath )
			Else
				aData = FilePath.Split(delimiter)
				Console.WriteLine( aData(aData.Length - 1) )
			End If
		Next
	End If


End Sub

End Module





タグ:VB.NET
posted by lightbox at 2009-09-12 22:34 | VB.NET : ベーシック | このブログの読者になる | 更新情報をチェックする
Seesaa の各ページの表示について
Seesaa の 記事がたまに全く表示されない場合があります。その場合は、設定> 詳細設定> ブログ設定 で 最新の情報に更新の『実行ボタン』で記事やアーカイブが最新にビルドされます。

Seesaa のページで、アーカイブとタグページは要注意です。タグページはコンテンツが全く無い状態になりますし、アーカイブページも歯抜けページはコンテンツが存在しないのにページが表示されてしまいます。

また、カテゴリページもそういう意味では完全ではありません。『カテゴリID-番号』というフォーマットで表示されるページですが、実際存在するより大きな番号でも表示されてしまいます。

※ インデックスページのみ、実際の記事数を超えたページを指定しても最後のページが表示されるようです

対処としては、このようなヘルプ的な情報を固定でページの最後に表示するようにするといいでしょう。具体的には、メインの記事コンテンツの下に『自由形式』を追加し、アーカイブとカテゴリページでのみ表示するように設定し、コンテンツを用意するといいと思います。


※ エキスパートモードで表示しています

アーカイブとカテゴリページはこのように簡単に設定できますが、タグページは HTML 設定を直接変更して、以下の『タグページでのみ表示される内容』の記述方法で設定する必要があります

<% if:page_name eq 'archive' -%>
アーカイブページでのみ表示される内容
<% /if %>

<% if:page_name eq 'category' -%>
カテゴリページでのみ表示される内容
<% /if %>

<% if:page_name eq 'tag' -%>
タグページでのみ表示される内容
<% /if %>
この記述は、以下の場所で使用します


Windows
container 終わり

フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

Android SDK ポケットリファレンス
改訂版 Webデザイナーのための jQuery入門
今すぐ使えるかんたん ホームページ HTML&CSS入門
CSS ドロップシャドウの参考デモ
Google Hosted Libraries
cdnjs
BUTTONS (CSS でボタン)
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり