|
今回は、文字の置換、つまり、文字を検索し該当する文字を別の文字に置き換える、というプログラムを作成しようと思います。文字の検索は、範囲選択を行ったものを対象とし、文字データの一部が合致する場合と、文字データ全部が合致(完全合致)する場合を選択して実行出来るようにします。また、「大文字・小文字を区別しない」の選択も出来るようにします。
文字の置換後の文字長さの最大を255バイト(半角255文字)とします。それを超える場合には置換を行いません。
それではバッチファイルから。
|
p050_文字置換.bat |
REM p050−文字置換
@echo off
REM #jww
REM #cd
REM #hf
REM #zs
REM #zc
REM #zz
REM #zw
REM #h3
REM #hc 【範囲選択】文字を選択して下さい。
REM #g1
REM #hr
start /w p050.exe |
|
プロジェクト「p050」の準備を行います。「C:\DelphiProgram\jww」フォルダの中に「p050」というフォルダを作成し、Delphi6を起動します。メニュー「プロジェクト」→「オプション」を実行し、下記の設定を行います。
[アプリケーション]頁
タイトル | p050−文字置換 |
[ディレクトリ/条件]頁
パス及びディレクトリ | C:\DelphiProgram\jww\p050 |
メニュー「ファイル」→「名前を付けて保存」
「C:\DelphiProgram\jww\p050」の中に「Unit1.pas」を保存
メニュー「ファイル」→「プロジェクトに名前を付けて保存」
「C:\DelphiProgram\jww\p050」の中に「p050.dpr」として保存
◆
Form1の画面は、取りあえずいつもと同じく、大きさを扱いやすいよう小さくし、オブジェクトインスペクタで Form1 のプロパティを設定します。
BorderIcons
biMaximize | False | 最大化しないように |
BorderStyle | bsSingle | 画面をリサイズしないように |
Caption | 文字置換 | タイトルバーに表示されます |
Color | clWhite | 画面色 御自由にどうぞ |
Font内
Name | MS ゴシック |
プロポーショナルフォントは
文字配置調整が微妙なので |
Font内
Size | 10 | 小さいと少し見難い為 |
Scaled | False |
動作環境によっての文字の
大きさ変動を少し抑えられる |
メニュー「表示」→「プロジェクトマネージャ」
を実行し、コード画面の左側にドッキングさせておきます。前回及び上記で作成した「MyFunc.pas」「JwwGaibu.pas」を取り込みます。Unit1.pas の uses節に MyFunc と JwwGaibu を追加します。(※以下では全角空白を付けて桁調整等をしていますが実際は半角空白或いは無しです)
|
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs,
MyFunc, JwwGaibu ;
type
TForm1 = class(TForm)
・・・ |
|
メニュー「ファイル」→「すべて保存」を行い
メニュー「プロジェクト」→「再構築」を行いエラー表示されない事を確認して下さい。アイコンが Delphi6デフォルトのものになっていますので、アイコンファイルを作成してフォーム・プロジェクトで指定しておきます。
◆
画面上に [Standard]内の Label コンポーネントを2つ、Edit コンポーネントを2つ、CheckBox コンポーネントを2つ、Button コンポーネントを2つ配置します。
|
Label1
Label2
Edit1、2
MaxLength | 255 | 最大入力可能な文字長さ |
Text | | 文字内容(空;何も無し) |
CheckBox1
CheckBox2
Caption | 大文字・小文字を区別しない | 左上の表示内容 |
Button1
Caption | OK(&Y) | ボタン上の文字 |
Default | True | [Enter]キーを押したら[OK] |
Button2
Caption | キャンセル(&N) | ボタン上の文字 |
Cancel | True | [Esc]キーを押したら[キャンセル] |
|
画面のレイアウトは下図のようにしてみました。
□文字の一部が合致 のチェックがオフの場合(デフォルト)は、文字が完全一致する場合、つまり、置換前の文字=文字データの場合としてプログラミングを行います。チェックがオンの場合は、AnsiPos関数で文字データ内に置換前の文字が含まれる場合、としてプログラミングを行います。この場合は1つの文字データ内に複数の置換がある場合も有り得ますので注意します。
□大文字・小文字を区別しない のチェックがオフの場合(デフォルト)は、大文字・小文字を区別する、という事でそのまま処理しますが、チェックがオンの場合は、置換前の文字、文字データともに AnsiUpperCase で大文字に変換した状態で処理を行います。なお、これは半角・全角の事ではありませんので御注意下さい。半角・全角は常に区別されます。
オブジェクトインスペクタにて Form1 の イベント OnShowの箇所でダブルクリック、OnCloseの箇所でダブルクリック、及び、
Button1、Button2 をダブルクリックして OnClickイベントを記述出来るようにします。なお、文字の長さを最大255文字まで使えるよう JwwGaibu.pas を少し修正しておきます。
|
Unit1.pas |
(・・・前略・・・)
type
TForm1 = class(TForm)
(・・・)
private
{ Private 宣言 }
AppPath : string ;
public
{ Public 宣言 }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
// 起動時
procedure TForm1.FormShow(Sender: TObject);
begin
Form1.Left := Mouse.CursorPos.X - Form1.Width div 2;
Form1.Top := Mouse.CursorPos.Y - 4;
// 初期設定
InitJwwGaibu ;
// プログラムのあるフォルダを取得します
AppPath := ExtractFilePath(Application.ExeName) ;
//
OpenTempFile(AppPath+'JWC_TEMP.TXT') ;
S_Init ;
end;
// 終了時
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
SaveTempFile(AppPath+'JWC_TEMP.TXT') ;
// 最終処理
EndJwwGaibu ;
end;
// [OK]
procedure TForm1.Button1Click(Sender: TObject);
var
i,j : integer ;
s,ss,st1,st2 : string ;
cb1,cb2 : Boolean ;
begin
st1 := Edit1.Text ;
st2 := Edit2.Text ;
cb1 := CheckBox1.Checked ;
cb2 := CheckBox2.Checked ;
if (st1 = '') then begin
MessageBeep(Word(-1));
Edit1.SetFocus ;
exit ;
end;
if (cb2) then st1 := AnsiUpperCase(st1);
for i:=0 to JW_EntTextN-1 do begin
with JW_EntText[i] do begin
s := st ;
if (cb2) then s := AnsiUpperCase(s);
if not(cb1) then begin
// 完全一致
if (s = st1)and(Length(st2) <= 255) then
st := st2 ;
end
else begin
// 一部一致
ss := '';
j := AnsiPos(st1,s) ;
while (j > 0) do begin
ss := ss + Copy(s,1,j-1) + st2 ;
s := Copy(s,j+Length(st1),Length(s));
j := AnsiPos(st1,s) ;
end;
ss := ss + s ;
if (Length(ss) <= 255) then
st := ss ;
end;
end;
end;
// 生成
SendMem('hd');
S_EntAll(-1,-1,-1,-1,-1,-1,-1,0, nil);
Close ;
end;
// [Cancel]
procedure TForm1.Button2Click(Sender: TObject);
begin
Close ;
end;
end. |
|
メニュー「ファイル」→「すべて保存」を行い
メニュー「プロジェクト」→「再構築」を行いエラー表示されない事を確認して下さい。
Windowsのエクスプローラ等で、「C:\DelphiProgram\jww\p050」内に作成された「p050.exe」をフォルダ「Gapp」内へコピーします。外部変形を実行して動作確認をしてみて下さい。
今回のバッチファイルと実行ファイル、及び、ソースファイルについては、Pcataサイトに置いておきますので必要な方はそちらからダウンロードして下さい。
|
|
CAD装置(1)
CAD装置(2)
メディア
AutoCADの
DIESELマクロ
CSV
DXF
PCES
IGES
STEP
数学とCAD
CAD作ろ!
M7
Jw_cad
[BACK]
[NEXT]
|