<   2014年 11月 ( 3 )   > この月の画像一覧

Delphi XE Pro - 正規表現で一致する文字を抽出して表示する
ひとつだけの場合
uses
RegularExpressions 追加して正規表現を使えるようにする。

procedure TForm1.Button1Click(Sender: TObject);
var
Str: string;
hoge: TMatch;
begin
 Str := 'ふかふかふか(やってみる)(lv196799094)';

 if TRegEx.IsMatch(Str,'lv\d+') then
  begin
   hoge := TRegEx.Match(Str,'lv\d+');
   ShowMessage(hoge.Value);   出力結果: lv196799094
  end;
end;

試しに Str := 'ふかふかふか(やってみる)(lv196799094)(lv200000000)'; とした場合にも出力結果はlv196799094となった。


複数個当てはまる場合
procedure TForm1.Button2Click(Sender: TObject);
var
 i: Integer;
 str, tempStr: string;
 hoges: TMatchCollection;
 SortList : TStringList;
begin
 Str := 'ふかふかふか(やってみる)(lv20000000000)(lv10000)(lv196799094)';

 if TRegEx.IsMatch(Str,'lv\d+') then
  begin
   hoges := TRegEx.Matches(Str,'lv\d+');
    if hoges.Count = 1 then
     
tempStr := hoges.Item[0].Value
    else // 複数候補がある場合は最大値を適用する
    begin    
     if hoges.Count > 1 then
      SortList := TStringList.Create;
      for I := 0 to hoges.Count - 1 do
       SortList.Add( hoges.Item[I].Value );
      SortList.Sort;
      for I := 0 to SortList.Count - 1 do //ソートされて最後が最大値になっているはず
       tempStr := SortList.Strings[i];
    end;
   ShowMessage(tempStr);   出力結果: lv20000000000
  end;
end;



[PR]

by arigayas | 2014-11-29 05:07 | Delphi Programming | Trackback | Comments(0)
[2ch] [コピペ] - chaika で名前が数字だけの場合、そのスレの番号の書き込みをポップアップさせる

chaika とは、Firefox 上で2ちゃんねるをシームレスかつ快適に見るアドオンです。
chaika :: Add-ons for Firefox

bbs2chreader/chaika Part44 の194から198のコピペ。
194 :名無しさん@お腹いっぱい。:2014/11/11(火) 23:42:07.23 ID:7p7DSdkQ0
  要望です。
  名前が数字だけの場合、名前部分にマウスカーソルを持っていったら、
  そのスレで該当する数字の書き込みをポップアップして欲しいです。

195 :名無しさん@お腹いっぱい。:2014/11/11(火) 23:57:55.66 ID:73aln7JZ0
  >>194
  対応したスキン使えば?
  それともデフォルトスキンに対する要望?

196 :名無しさん@お腹いっぱい。:2014/11/12(水) 00:12:10.63 ID:EAKgsBa30
(無関係なので略)

197 :名無しさん@お腹いっぱい。:2014/11/12(水) 00:18:06.52 ID:M50RNDXE0
  >>194
  
デフォスキンなら、置換マネージャで名前の\d{1,4}を>>$&に置換


198 :名無しさん@お腹いっぱい。:2014/11/12(水) 00:32:46.26 ID:M50RNDXE0
  >>197 だとMANGO板とかの実体参照が壊れるので、^(?:>)*(\d{1,4})を>>$1に置換に修正

文字参照を使っている部分がエキサイトブログだと変換されてしまうのでスクリーンショットで図解します。
画像をクリックするとポップアップして表示します。
スクリーンショットは chaika 1.7.1 です。


  1. アドオン一覧から chaika の設定を開きます。
  2. chaika の設定が開かれたら「置換マネージャ」のボタンをクリック。
    b0003577_14033103.png
  3. ボタンを押すと下図のような物が表示されるので「新規」のボタンをクリック。
    b0003577_14142875.png
  4. ボタンを押すと下図のような物が表示されます。
    b0003577_14275948.png
  5. 下図のように”名前”と”検索文字列”と”置換文字列”に入力して正規表現にチェックを入れて「OK」のボタンをクリック。
    b0003577_14314228.png
  6. 設定が増えた「置換マネージャ」が表示されるので「閉じる」(バツ)ボタンを押します。
    b0003577_14370300.png
  7. 設定は終了です。

[PR]

by arigayas | 2014-11-12 14:45 | Mozilla/Firefox/TB | Trackback | Comments(0)
[解決?] Delphi XE Pro - DUnit の使い方を知りたい というかファイルを指定して読み込ませる事ができるのか知りたい
Delphi XE Proでニコニコ生放送のコメントを表示するソフトを作っている。
しかし、Indy(ネットワーク関連の処理をまとめたコンポーネント群)の使い方がさっぱりわからないので
今のところ、とあるソフトでニコニコ生放送のコメント(XMLファイル)をダウンロードし、そのダウンロードしたXMLファイルを表示するソフトになっている。
あとNCVで保存したコメントファイルを開く事も出来るように今週改良を加えた。

しかし動作テストする為に毎回、最低でも6ファイルぐらいテスト用のXMLファイルを手動で開いて、ちゃんと動くのか読み込ませるのが面倒臭く感じてきたので
「Delphiで使えるテストツールがないかなぁ?」と思い軽く検索してみたら「DUnit」というのがあるのがわかったけど、関数(procedure/function)単位でテストするようだった。
この「DUnit」というは、ファイルを複数指定すると指定したファイルを順次読み込んでテストしてくれるのかどうか、詳しい方教えてください。

作ったプログラムのメインのpasファイルには、
procedure TForm1.XMLRaedVirtualView(FileName, Encoding);
って言う感じになっていて、テストプロジェクトには、
procedure TestTForm1.TestXMLRaedVirtualView;
var
 Encoding: TEncoding;
 FileName: string;
begin
 // TODO: メソッド呼び出しパラメータのセットアップ
FForm1.XMLRaedVirtualView(FileName, Encoding);
 // TODO: メソッド結果の検証
end;
という状態です。




追記分
[PR]

by arigayas | 2014-11-06 18:21 | Delphi Programming | Trackback | Comments(0)