2014年12月26日 更新
アプリケーションエラー EConvertErrorがモジュール szkw64.exe の 000000000002DD02で 発生しました。 "2000/01/01 00:00:00"は日付または時刻ではありません。このエラーは鈴川エディタの起動時に実行されるDelphiの関数
aまたはbの重複行削除を実行できる行数は、前述した行を削除するかどうかを示すデータをメモリに確保できる行数によって決まる。鈴川エディタ32では最大200億行(使用メモリは2.5GB)である。100億行分のデータに要するメモリは約1.2GBである。鈴川エディタ64では数千億行である。1000億行分のデータに要するメモリは約12.3GBである。1兆行では約130GB必要である。
並び替え(同時に重複行削除をしてもしなくてもどちらでも同じ)は、行を削除するかどうかを示すデータは必要ないので、前述のa、bの並び替えをしない重複行削除より、大きい行数の対象ファイルに対して実行できる。どのくらいの行を並び替えることができるか、ファイルサイズ、1行の文字数にもよるので、一概にはわからない。好条件がそろえば、1兆行もできるかもしれない。計算時間も重複行削除よりはすこし短くなる。
■ 2014-06-14(ver04.00.17)35回目 [バグ修正] 1
メニュー → ヘルプ → テキスト処理
テキスト処理で最初に実行される対象テキストファイルの行数計算が正確でない場合がある。行数が多めに計算される。これを修正した。
対象ファイルの行数が正確でないと、重複行削除、並び替えも正確に実行されない。
この不具合の原因は以下の通り。テキスト処理の対象ファイル(複数)がBOMを含む文字コードであるとき、処理レベルの分割並び替えで複数回に分業する場合に、一つ一つの分業で対応する対象ファイルを読み込む必要がある。そのとき、最初に読み込むファイル位置を計算しなければならない。その計算でBOMのサイズを考慮していなかった。これが本元の原因である。そのために読み込むべき文字列が一部読み込まれない結果になり、結局、並び替えが正常に実行されず、重複行削除もうまくいかない、ということになったのである。
ワークファイルリスト内で右クリックすると、「カレント個別ワークフォルダ確認」「選択行の個別ワークフォルダ確認」というメニューがある。このほかにも同じ機能を有するメニューはいくつかある。この機能は個別ワークフォルダについて、[個別ワークフォルダ - 確認]ダイアログボックスを開き、一つ以上のワークフォルダをWindows付属のExplorerで確認するものであるが、[個別ワークフォルダ - 確認]ダイアログボックスで余計なワークフォルダが表示される、という不具合がある。
テキスト処理(並び替え、重複行削除)を実行するとき、[オプション-1]ページ:[オプション]グループボックス:["改行"無視]チェックボックスのチェックが常についている(ONの状態である)ものとして解析され、対象テキストファイルにダブルクウォートが含まれていると、ダブルクウォートの分布状況によってはテキスト処理が中断されることがある。
[個別ワークフォルダ]コンボボックスで複数指定の個別ワークフォルダを指定し、外部ファイルを開くと、ワークファイルリストで開いたワークファイルフォルダのデータが表示されない、という不具合がある。ただし、一旦、鈴川エディタを終了し再起動すると、ワークファイルリストに問題のデータが表示される。この不具合を修正する。
[個別ワークフォルダ]コンボボックスに追加される個別ワークフォルダは単一指定と複数指定があり、複数指定は複数のワークフォルダを<+>記号で連結した文字列で表現される。この複数指定にもう一つ、次のような表現方法を加える。
複数のワークフォルダ名を1行ずつ収納したテキストファイルを作成し、そのファイル名の先頭に<F>記号を追加し、".wfl"を拡張子として表現する形式。
たとえば、
<F>IWF140506085749.wfl
このうち、IWF140506085749部分は自由に指定できるが、先頭記号<F>と拡張子".wfl"は変えることはできない。
結局、個別ワークフォルダは次の3通りになる。
上記の改良に伴う改良点、変更点を以下に列挙する。
外部ファイルに対してある文字列(検索文字列)を検索(GREP)すると、鈴川エディタメインウィンドウの下部にディスク検索リスト(DSL)が表示される。これは問題ないが、一旦、DSLを閉じて、上記のメニューで再び、DSLを表示すると、DSLが空になっている、という不具合がある。
これは再表示するとき、DSLの中身が確かに存在するかどうかチェックするのであるが、DSLのビーズファイルをチェックする場合にビーズフォルダの存在が考慮されていなかったのが原因。そのため、ビーズファイルが一つも見つからないで、結局該当するDSLは存在しないと判断されて再表示ができなかったのである。
ワークファイルリストのワークファイルフォルダを複数選択し、右クリックすると表示されるポップアップメニューで「置換」メニューを実行すると、置換文字列の如何に関わらず置換文字列がヌル文字として実行される。つまり、検索文字列がヌル文字に置換されるのであるが、これは検索文字列が削除されるということである。この不具合は「検索情報」が悪さをしているのだが、その説明は面倒である。とにかく、この不具合を修正した。
下記のa~dのファイルを開くダイアログボックスで、[オプション]ボタン(キャプションは「@現在」「@現在1」など)をクリックすると[今後使うオプション]ポップアップメニューが表示される。このメニューで最後の項目「(M)選択」を選択する。ファイルを開くダイアログボックスの[開く]ボタンをクリックする。[個別オプション]ダイアログボックスがタイトル「オプションの選択」として表示される。[設定]ページ:オプションの設定:オプションリストで、これから開くファイルに適用したい個別オプションを選択する。[個別オプション]ダイアログボックスの[OK}ボタンをクリックすると、ファイルが読み込まれる。ここまでは問題ないが、表示されるテキストに希望する個別オプションが反映されない。これが不具合。
検索文字列 → 置換文字列矢印は、以前は文字(→)であったが、これを図形として描画し、矢印と背景の色を指定できる。
検索文字列[20]→[20]置換文字列のように、半角空白を可視化した文字[20]が→の両側に表示されるが、→の両側の半角空白は可視化しないのが正常な表示。正しい表示は次の通り。
検索文字列 → 置換文字列
ダイアログボックス内のコンボボックスで右クリックすると、Windows標準のコンテキストメニュー(ポップアップメニュー)が表示される。このメニューには「切り取り」「コピー」「貼り付け」「削除」「Unicode 制御文字の表示」「Unicode 制御文字の挿入」などのメニュー項目が並んでいる。
これがWindowsアプリケーションでの一般的な動作であるが、鈴川エディタのいくつかのダイアログボックスでは、その中のコンボボックスで右クリックすると、「実行」「参照」などメニュー項目をもつポップアップメニューが表示されることがある。たとえば、「ファイルを開く」「名前をつけて保存」「検索」などを実行すると表示されるダイアログボックスである。
鈴川エディタのいずれのダイアログボックスでも、その中のコンボボックス内で右クリックするとWindows標準のコンテキストメニューが表示されるように、改善した。
body { font-family: Osaka,"MS Pゴシック","MS PGothic",Sans-Serif; }
上記の操作例でStep7の次にStep8で、「置換」「置換して検索」「すべて置換」を実行するとき、次のような動作をすることに改めた。
検索文字列は変更されました。 東京 // [A1文字列] ↓ 京都 // [B1文字列] すべて置換: 京都 // [B1文字列]:検索文字列 ↓ Kyoto // [B2文字列]:置換文字列 実行しますか?ダブルスラッシュ(//)以降はコメントで、メッセージには表示されない。
すべて置換: 京都 // 検索文字列 ↓ Kyoto // 置換文字列 実行しますか?
ABC123 456aBC 7Abc89「すべて置換」を実行すると、下記のテキストになる。
日本123 456日本 7日本89「すべて置換」に対するUndoを実行すると、下記のテキストになり、置換した文字列が元に戻らない。すべて「abc」になる。
abc123 456abc 7abc89
メニュー → ファイル → 部分的にファイルを開く
→ [部分的にファイルを開く]ダイアログボックス
と同時に表示している[ファイルを見る]ダイアログボックス(テキストウィンドウ)で以下(a~e)の操作をして、[ファイルを見る]ダイアログボックス(設定)を起動しようとすると、鈴川エディタはフリーズして操作不能に陥る。
[部分的にファイルを開く]ダイアログボックスと[ファイルを見る]ダイアログボックス(テキストウィンドウ)の二つが同時に表示される場合は、次の二通りある。
この不具合は以前はなかったものであるが、
■ 2013-04-17(ver04.00.10) [改良] 1
でウィンドウ親子関係を変更したために生じた不具合である。
不具合の対策として、[部分的にファイルを開く]ダイアログボックスと同時に表示している[ファイルを見る]ダイアログボックス(テキストウィンドウ)で上記のa~eの操作を実行できないようにした。
鈴川エディタの利用ライセンスを購入する場合、ライセンス申込者はライセンスキーファイルを取得するために、パソコン情報(マザーボード、CPU、Macアドレス、WindowsOSのプロダクトID)を暗号化したファイル(ライセンス申請用添付ファイル)を鈴川エディタ作者にメールに添付して送付する必要があったが、このパソコン情報を鈴川エディタ作者に送付しなくても(知らせなくても)、ライセンスキーファイルを作成する方法を考案した。
ライセンスキーファイルの取得手順は次の通り
[種類]ラジオグループで「タブ」を指定した場合、二つ以上のテキストファイルを開いているとき、アクティブではないウィンドウタブ(切り替えタブ)をクリックしてテキストウィンドウを切り替えようとすると、そのテキストウィンドウが閉じてしまう不具合がある。
アクティブファイルのウィンドウタブをクリックするとそのテキストウィンドウが閉じるのは仕様であるから問題ない。[種類]ラジオグループで「フラットボタン」「ボタン」を指定する場合は仕様どおりの動作をする。
「タブ」を指定する場合のみ上記の不具合がある。鈴川エディタでは「タブ」だけを特殊に扱うことはしていない。現在、不具合の原因は不明であるが、「タブ」の場合も「フラットボタン」「ボタン」と同じ動作をするように改めた。
上から下に向かって「すべて置換」を実行する。そのUndoを実行する。さらにそのRedoを実行すると、すべての置換は正常に実行されるが、それが終了するとき、[編集経過]ダイアログボックスで実行置換数がすべての置換数よりすこし少ない、つまり100%に達していない。これは最終段階で実行した置換の数が[編集経過]ダイアログボックスの表示に反映されていないのが原因。
以下の不具合はver04.00.00(コントロールテキストのUnicode化と64bit化)の作成過程でできたものである。
ヘルプ > 補足説明 > 「リストビュー」コントロール > 複数選択
の説明は間違いがあるので今回、修正した。
StringGridで複数選択する操作方法は
■ 2013-03-01(ver04.00.07)
の時点で既に改善していたが、関連するヘルプの修正が終わっていなかった。
CSV整列したCSVテキストファイルで検索文字列(初期設定:背景色緑、文字色白)、しおりマーク(初期設定:背景色水色、文字色黒)の表示が具合が悪い。
検索文字列、しおりマークの背景色がその先頭文字位置から行末まで塗りつぶしてしまう不具合がある。他の不具合を修正するためにテキスト描画のプログラムでコードを一部追加したのであるが、それが検索文字列、しおりマークの描画を乱すことになった。
CSV整列したCSVテキストファイルでテキストエリアを右クリックするとポップアップメニューが表示される。その中でCSVファイルに関するメニューが上方で三つ並んで見える。その中の一つ「CSV整列情報削除」メニューに不具合がある。
正常動作の場合、「CSV整列情報削除」メニューを実行すると直ちにCSVテキストファイルはCSV整列が解除されてCSV整列情報は削除される。もう一度、右クリックして表示されるポップアップメニューにはCSVファイルに関する三つのメニューは現れない。
これが正常動作であるが、これに対して、次のような動作は正常ではない。
「CSV整列情報削除」メニューを実行しても直ちにCSVテキストファイルはCSV整列が解除されず、もう一度、右クリックして表示されるポップアップメニューには現れてはならないはずのCSVファイルに関する三つのメニューが現れる。このとき、CSV整列情報は既に削除されたはずであるが、三つのCSVファイルに関するメニューのうち、一番上の「CSV整列」メニューにはチェックがついている。さらにこの「CSV整列」メニューを選択するとエラーが発生する。
これは以下の理由による。
[CSV項目操作]ダイアログボックスの中で項目情報を示すリストはListViewコントロールであるが、このコントロールは項目数が多くなると(たとえば、1万以上)項目データの読み込みと鈴川エディタ終了時のメモリ開放に時間がかかり、操作性が非常に悪い。
ListViewコントロールに対して、[CSVファイル整列]ダイアログボックスの中で項目情報を示すリスト、StringGridコントロールは項目データが2万以上でも殆ど一瞬で読み書きができ、鈴川エディタ終了時のメモリ開放も時間がかからない。
このメニューを選択すると、以前は[CSV項目操作]ダイアログボックスを表示したが、このダイアログボックスは廃止した。
その代わりに[CSVファイル整列ダイアログボックスを表示し、最初に[操作]ページを表示することにした。
ヘルプ参照。
鈴川エディタでは1行内で先頭から数えて何文字目にあるかを示す文字位置を扱うプログラムデータは、
4バイト型(int、最大数値 2の31乗 - 1 = 2,147,483,647 ≒ 21億)
であるが、鈴川エディタのプログラムコードで2,3箇所
2バイト型(WORD、最大数値 2の16乗 = 65,536)
が間違って使用されていた。このバグのために、65,536を超える文字位置で編集できない不具合があった。2バイト型のデータを本来の4バイト型に修正した。
■ 2013-01-11(ver04.00.02) [改良] 1.
で一行の最大文字数を262,144個(2の18乗)に増やしたが、今回のバージョンで1行の文字数を最大524,288個(2の19乗)にさらに増やした。
1行の文字数が大きくなると動作が悪化し、相応のパソコン性能がないと操作不能に陥る。この点を留意する必要がある。
この数値を2の19乗 = 524,288個に固定し、テキストボックスは変更できないように改めた。ヘルプ参照
アクティブなテキストウィンドウ内のテキストファイルに対して
メニュー → 検索 → 検索
→ [検索]ダイアログボックス
で検索を実行すると、テキストウィンドウ内に散在する検索文字列が黄色の背景(初期設定)で強調される。この検索文字列の強調表示は自動的に実行されるのであるが、1行の文字数が大きくなる(行が長い)と、強調表示に時間がかかり、動作が悪化する。
そこで、行の長いテキストファイルでは、動作の悪化を防ぐために、検索の後、検索文字列の強調表示が自動的に実行されないように設定できることにした。行の長いテキストファイルでは「色分け」をすると「検索文字列の強調表示」以上に動作が極端に悪くなり、殆ど操作できない状態になるが、元々、「色分け」は実行しない設定にできるので、問題はない。
以下のダイアログボックスやメニューに検索文字列強調を自動的に実行するかしないか設定できるチェックボックスあるいはメニューを追加した。
上記のデータの読み込みと保存ではIniファイル(テキストファイル)を利用していたが、Iniファイルはデータ変更への対応が容易で便利であるが、大量データの読み書きに非常に時間がかかる。
このIniファイルを利用する方法から、CSV項目データをバイナリデータとしてファイルに保存、読み込む方法に変更することで、上記の遅い動作を解消した。
この改良で、パソコン性能にもよるが、項目数が1万を超えても問題なくCSVファイルを扱うことができるだろう。
鈴川エディタで扱うことができる1行の文字数を102,400から262,144に増やした。項目数も最大で32,768に増やした。
ただし、CSVファイルの1行の文字数、項目数が大きくなると、パソコン性能にもよるが、動作が非常に悪化する。現実的には、マイクロソフト製エクセルの最大列数16,384ぐらいが限度であろう。
このダイアログボックスは各種ダイアログボックスから起動できるが、一つだけ下記に示す。
メニュー → ヘルプ → 選択
→ [Explorerで開くフォルダ - 選択]ダイアログボックス
→ [追加]ボタンで表示
このダイアログボックスは各種ダイアログボックスに含まれるコンボボックスのリストを編集するのが目的であるが、コンボボックスの右側にある緑色の三角印ボタンをクリックすると表示される。これを表示するメニューを一つだけ下記に示す。
メニュー → 検索 → 検索改行コード、制御コードを含むテキストをメモファイルとして保存するとき、メモファイルを選択するポップアップメニューに表示するキャプションで、改行コード、制御コードが表示されなかったが、
これを
[文字列]テキストボックスで入力される文字列の文字コードは以前はShift_JISであったが、Unicodeに変更された。
そこで、文字列を乱数の種である整数値に変換するのに一旦UnicodeからUTF-8に変換する処理を挟むことにした。
「開く」「削除」「選択削除」の実行中、カーソルを「作業中」を表すカーソルに改めた。
10GB以下のファイルならば、殆ど一瞬で終了する作業であり「作業中」を表すカーソルに変える必要もなかったが超巨大ファイル(特に100GB以上)になると作業に長い時間がかかり、その間、他の操作をしないようにユーザーに示す必要がある。また、他の操作をできないように改良した。
たとえば、
メニュー → オプション → 共通オプション
→ [共通オプション]ダイアログボックス
[読み込み]ボタン、[保存]ボタン設定、保存するオプションファイルなど