<   2011年 02月 ( 5 )   > この月の画像一覧

Delphi XE で Subversion を使う方法 その4 他のパソコンでの更新編2
開発用パソコンとは違うノートパソコン ( ThinkPad X201 Tablet ) にインストールしたDelphi XE Professional で確認にして記事を書いてます。

開発用パソコンでファイルというかフォームを1つ追加した状態のpasファイルをノートパソコンで取得してしまい、ファイルが存在しないためにエラーになってビルドができなくなっていたので追加したフォームファイルを Subversion を使って取得します。

作業前の状態


プロジェクトマネージャ でEXE ファイルを右クリックして
コンテキストメニューで [Subversion] → [更新] → [ リポジトリ ルートからの相対パス] を選択。



更新作業が開始される


しかし、プロジェクトマネージャにはファイルが増えない。
[PR]

by arigayas | 2011-02-19 14:02 | Delphi Programming | Trackback | Comments(0)
Delphi XE 標準の正規表現を使う基本がわかったかも。
たぶん、Delphi XE 標準の正規表現を使い方がわかったかも。という事でメモ。

使いたいソース(*.pasファイル)の冒頭にある interface の uses 節RegularExpressions を追加します。
Delphi 標準の正規表現のヘルプを見て使いたい関数を選びます。

例えば、IsMatch を選びます。

function IsMatch(const Input: string): Boolean; overload;
function IsMatch(const Input: string; StartPos: Integer): Boolean; overload;
class function IsMatch(const Input, Pattern: string): Boolean;overload; static;
class function IsMatch(const Input, Pattern: string; Options: TRegExOptions): Boolean; overload; static;

とあるので コレを参考にかっこの中には
 IsMatch('比較したい文字列', '正規表現') 
をそれぞれ入れます。
例えば
 IsMatch('あいうえお', 'a')
とすると False が返って来るはずなんですが
このまま書くと「未定義の識別子 'IsMatch'」のエラーになります。

このエラーを無くすために IsMatch('あいうえお', 'a')の頭に「TRegEx.("TRegEx"のすぐ後ろにピリオド)」を付ける必要があります。
つまり
 TRegEx.IsMatch('あいうえお', 'a')
とすべきなのです。

これを応用すると
[PR]

by arigayas | 2011-02-18 10:02 | Delphi Programming | Trackback | Comments(0)
Delphi に正規表現の コンポーネント ? or ライブラリ ?を追加して関数のヘルプの読み方を覚えた。
Delphi XE から正規表現がサポートされたらしいけどDelphi 初心者には(使い or 書き)方がよくわからなかった。

自分としてはメールアドレスの入力欄にちゃんとメールアドレスが入力されたかどうかをチェックしたい!と思って
ログイン設定
正規表現 の機能を追加するために 「Delphi 正規表現」でググって
Delphi用正規表現ユニット「SkRegExp」」 に行き着いたので ここから最新版をダウンロード。



インストール

この「SkRegExp」(コンポーネント ? or ライブラリ ?)の場合は、ダウンロードした圧縮ファイルを適当なフォルダに解凍して、 SkRegExpConst.pas と SkRegExpW.pas と UnicodeProp.pas
Project フォルダにコピペすればインストール完了。
使っている Delphi バージョンに応じて 「2010 or later」フォルダから SkRegExpConst.pas をコピペして置き換える必要がある。

使用方法

で、「SkRegExp」を使う場合には、*.pasファイルの冒頭にある unit の uses 節に、SkRegExpW を記述するだけ。

関数の書き方

しかし、Delphi 初心者には、ヘルプの関数のページを見ても関数の使い方がわからない!!
ヘルプには

RegIsMatch 関数

構文
function RegIsMatch(const ARegExpStr, AInputStr: REString; AOptions: TREOptions): Boolean;

パラメータ:
ARegExpStr: 正規表現パターン
AInputStr: 対象文字列
AOption: 正規表現オプション

返り値:
ARegExpStr が AInputStr にマッチすれば True

概要:
文字列 AInputStr が正規表現 ARegExpStr にマッチしたとき True を返します。ARegExpStr に文法エラーがあると例外が起こります。

とあってソースに
 function RegIsMatch(const ARegExpStr, AInputStr: REString; AOptions: TREOptions): Boolean;
って書けば、良いのかなと思ってコピペして追記してみたら構文エラーの嵐!!

これでは埒が明かないと思ったのでTwitterで聞いてみたところ、
文字列が大文字のアルファベットのみか調べる時は
RegIsMatch('[A-Z]+', 'あいうえお')
こんな感じとか、これはFalseが返ってきます
と教えてもらえて理解出来たので歓喜&感謝!!

続きを読む
[PR]

by arigayas | 2011-02-17 21:02 | Delphi Programming | Trackback(1) | Comments(0)
Delphi XE Professionalで Subversion を使う方法 その3 更新編
開発用パソコンとは違うノートパソコン ( ThinkPad X201 Tablet ) にインストールしたXEで確認にして記事を書いてます。

プロジェクトマネージャで更新したいファイルを右クリックして
コンテキストメニューで [Subversion] を選んで [更新]



「更新中」ウィンドウが表示される。変更点がほぼ無いので1秒位で更新が終わった。

「更新中」ウィンドウが表示される。変更点がほぼ無いので1秒位で更新が終わった。



更新できたのはいいけどメインパソコン(開発機)で追加したフォームもコミットするのを忘れていて
ThinkPad X201 Tablet ではファイルが存在しないから構文?構造?エラーになっている(苦笑)。
あとでコミット忘れたファイルもコミットしておこうw
[PR]

by arigayas | 2011-02-05 05:02 | Delphi Programming | Trackback(1) | Comments(0)
Delphi XE Professionalで Subversion を使う方法 その2 登録編
1つ前の記事とは違うパソコンにDelphi XE Professional をインストールしたので試してみた。

[ファイル]→[バージョン管理リポジトリから開く...]


「チェックアウト」ウィンドウが開かれる。


リポジトリのURLにURLを入力してURLの横にある[...]ボタンを押す。

スクリーンショット省略

「リポジトリブラウザ」ウィンドウが開かれる。


URLにアドレスを入力して[読み込み]ボタンを押す。


「Subversion ログイン」ウィンドウが開かれる。

小さなウィンドウが出ます。

ユーザ名とパスワードを入力して[OK]ボタンを押す。

スクリーンショット省略

「リポジトリブラウザ」ウィンドウに戻ってくるとチェックアウトしたファイルがダウンロードされる。


「チェックアウト」ウィンドウに戻ってくる。


コピー先に保存するフォルダを[...]ボタンを押して決める。


「チェックアウト」ウィンドウの[OK]ボタンを押す。

スクリーンショット省略

「更新中 - URL 」なウィンドウが開かれる。

スクリーンショット省略

更新が終わったら「開くプロジェクト グループまたはプロジェクトの選択」ウィンドウが開かれる。


プロジェクトファイル(***.dproj)が選択された状態になっているので[OK]ボタンを押す。

スクリーンショット省略

プロジェクトマネージャに”***.dproj”の***.exeが追加される。

b0003577_10241593.jpg

「更新中 - URL 」なウィンドウの[OK]ボタンを押してウィンドウを閉じる。

これで終わり。


ちなみにサブ機からコミットできるか、まだ試していない。
[PR]

by arigayas | 2011-02-01 16:02 | Delphi Programming | Trackback(1) | Comments(0)