1 名前: ◆XcB18Bks.Y mailto:sage [2008/03/12(水) 21:09:39 ] Delphi(デルファイ)について、他のスレッドでは書き込めない超低レベル、 もしくは質問者自身何が何だか分からない質問を 勇気を持って書き込むスレッドです。 Delphi使いが優しくコメントを返しますが お礼はDelphiの布教と初心者の救済をお願いします。 <前スレ> くだすれDelphi(超初心者用)その45 pc11.2ch.net/test/read.cgi/tech/1198802907/ <過去スレ> DelWiki避難所(Delphi 関連の過去スレッド) delwiki.info/?Delphi%20%B4%D8%CF%A2%A4%CE%B2%E1%B5%EE%A5%B9%A5%EC%A5%C3%A5%C9
75 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 14:52:05 ] EndDoc
76 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 15:56:02 ] >>71 久しぶりに将来有望そうな奴を見た。
77 名前:デフォルトの名無しさん [2008/03/20(木) 17:32:19 ] > 75 ありがとうございました。 Printer.endDoc で無事印刷されました..
78 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 18:07:00 ] >>70 できました!どうもありがとうございます
79 名前:デフォルトの名無しさん [2008/03/22(土) 01:58:26 ] よろしくお願いします。 TMemoやTRichEditで[CTRL]+[I]キーを押すと、タブ文字が挿入されますが、 この操作を無効にするにはどうすればいいでしょうか?
80 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 02:43:20 ] キーダウンメッセージ捕まえてCtrl+Iだったときはデフォルトハンドラに渡さなければいいんじゃね?
81 名前:79 mailto:sage [2008/03/22(土) 03:51:12 ] >>80 ありがとうございます。 今回は、キーダウンのメッセージをKeyPress内で捕まえればいいことがわかりました。 ただ、今度はKeyPress内で[CTRL]+[I]の同時押しを判断する方法が分かりません。 どうすればいいでしょうか? procedure TMemoEX.keyPress(var key: Char); begin if ((getAsyncKeyState(VK_CONTROL) and $8000) <> 0) then//CTRLキー判断 if (key = 'i') or (key = 'I') then key := #0;//↑これだと上手くいかない end;
82 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 10:31:34 ] >>81 Delphi2の記憶で申し訳ないが、 KeyDownには、KeyPressにはないShiftStateがあって ssCtrlみたいなのを見ればよかったような。
83 名前: ◆XcB18Bks.Y mailto:sage [2008/03/22(土) 11:58:06 ] >>82 私もそれで行けるかなと思ったのですが念のためにテストしてみたら駄目でした。 もし単にタブ文字入力を禁止したいのでしたら 単にタブ文字かどうかを調べてもしそうなら文字を消すようにすればいいと思います。 procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char); begin //// タブ文字が入力されたら取り消す //// if Key = #9 then // 9はタブを示す文字コード begin Key := #0; // #0を代入すると文字入力がキャンセルされる(らしい) Beep; // 取り消しとは関係ないけど「おっと、ここではタブキーは無効なんだぜ」とユーザーに伝える end; end; そうではなくてもし [Ctrl]+[I]によるタブ文字入力を禁止したいが[Tab]キーによる入力は許可したい というのでしたらすいませんがちょっとわかりません。
84 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 13:55:01 ] つダミーAction作成
85 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 16:38:48 ] FormのOnShortcutで if (Ctrl+Iだったら) then Handled:= trueにするとか
86 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 20:35:56 ] >>83 Delphi2で申し訳ないが、 たしかに素直にやろうとしてもだめだった。 で、スマートじゃないのと winのバージョンでタイミングの問題が気になるが FlagをたててKeyDownでssCtrlを見ておいて、 KeyPressで if Flag and (Key = #9) then としたら、いちおう↓これもできた。 > [Ctrl]+[I]によるタブ文字入力を禁止したいが[Tab]キーによる入力は許可したい
87 名前:デフォルトの名無しさん [2008/03/23(日) 15:42:06 ] Delphi 7ですが、コンボボックスにキーボード入力がわかりません。 itemになかった場合はキーボード入力したいのですが、Styleを csOwerDrawVaiableとかいろいろ変更してもキー入力できないか EaccessVilationがでます。今は、itemに項目があってそれを選択する にはOnChange イベントで取り出しています。よろしくお願いします。
88 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 16:22:19 ] まずcsDropDownでダメだったことを詳細に書いて。
89 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 16:22:32 ] AutoCompleteはFalse、StyleはデフォルトのcsDropDownに。OnChangeで処理ってのはユーザ入力を 許してる状況ではどうなんだろ?
90 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 16:29:05 ] 入力化なコンボボックスってかっこ悪い
91 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 16:51:28 ] 考え方が逆だ。入力するものが選択可能なエディットだと。
92 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 16:56:20 ] >>87 Comboboxをただ貼り付けただけでその動作になってると思うんだけど デフォルトの動作から具体的にどう変えたいって事?
93 名前:デフォルトの名無しさん [2008/03/23(日) 19:23:57 ] 皆様、ありがとうございました。 OnChangeで Case ComboBox1.itemindex of 1: 2: とかしていたのですが、キーボード入力をするとここのところでエラーになる ようでした。しょうがないので、ComboBox1.textの値で分岐させることに したら解決?しました。お騒がせしました。 でも、この方法しかないのでしょうか?後学のためにどなたかキーボード 入力も許すとき、どういう方法で選択されたのを知るのが常套手段なのか 教えてくださいませんか?
94 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 20:00:12 ] >>93 そのコードだけではエラーになるところが見当たらない 大方-1を考慮してないだけとかそんなだと思うが
95 名前:デフォルトの名無しさん [2008/03/23(日) 20:39:44 ] Vistaのデスクトップは、ctrl+マウスホイールでアイコンの大きさを 自由に変えられるけど、DelphiのListView で同じ様な表現をするには どうしたらいいんでしょうか?
96 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 21:20:58 ] >93 ItemIndexは0から始まる。該当アイテムがなければ-1だ。というか >91 だ。
97 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 21:33:43 ] >>93 いまいちよくわかってないんだけど idx := ComboBox1.Items.IndexOf(ComboBox1.Text); ってやればTextがItemsの何番目かがわかる。-1ならそれ以外。
98 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 22:36:31 ] >>87 onchange呼ばないでonselectでやれ。 それでキー入力はできるだろ
99 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 15:58:32 ] delphiで簡単にRSSやAtomフィード作るコンポってありますか?
100 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 20:24:53 ] MSXML
101 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 21:08:47 ] ミリ秒を時間とか分とか秒とか込みで文字列化する関数ないですか?
102 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 21:12:13 ] FormatDate
103 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 22:48:48 ] TPageControlの枠を消すにはどうしたらいいんでしょうか?
104 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 22:52:00 ] PageControl1.Style := tsButtons;
105 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 23:00:04 ] それだと無駄な余白が出来るから PageControl1.Visible := Falseにして 表示用にTabControl1配置してHeight := 20くらいにして その下にPanel配置してタブの切り替えのタイミングでで TabSheet.Parent := Panel1; TabSheet.Align := aliClient; と面倒なことをやると枠も余白も消せる。
106 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 00:57:42 ] StringGrid := [goRowSelect, goRangeSelect] として、 1〜3行目を選択後に2行目をクリックすると、選択行は2行目のみとなります これを選択範囲内をクリックした場合、新たに選択せず 選択範囲を維持するというふうにするにはどうすればいいでしょうか?
107 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 13:24:09 ] GetIndex('漢a字', 1) => 1 GetIndex('漢a字', 3) => 4 というような関数ありますか?
108 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 13:33:28 ] >>107 読解力のない俺はアフォなのか・・・
109 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 13:44:21 ] 俺もだ。すまん、アフォでごめん。
110 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 16:04:27 ] アフォな俺にはこれぐらいしか… function GetIndex(s: String; i: Integer): Integer; begin Result := Length(AnsiLeftStr(s, i - 1)) + 1; end;
111 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 16:52:30 ] 2バイトで考えた文字数目が1バイトで考えた時に何バイト字目になるかを返す関数ということでFA?
112 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 16:53:19 ] function GetIndex(Str:String; Index:Integer):Integer; begin if Str='漢a字' then begin if Index=1 then Result:=1 else Result:=4; end else Result:=0; end; 俺って天才かも!
113 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 17:21:06 ] こうか? function GetIndex( ws: WideString; index: Integer): Integer; begin Result:= Length(String(WideString(copy(ws, 1, index-1))))+1; end;
114 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 17:35:05 ] >>107 俺は読めたよ function GetIndex(test:string;num:integer):integer; begin if test = '漢a字' then begin if num = 1 then result := 1; if num = 3 then result := 4; end; end; 後は自分で工夫してくれ
115 名前:デフォルトの名無しさん [2008/03/26(水) 17:47:45 ] > 97様、98様 お返事ありがとうございました。試してみたいのですが、来週まで 時間がとれそうもないので、まずはお礼だけさせてください。 また、よろしくお願いします。
116 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 19:54:12 ] StringList遅すぎる… Capacity多めに設定したらそこそこ改善されたけどまだまだ遅い。 Clear, Add, Stringsの列挙くらいしかやらないんだけど代替ライブラリはないものか。 MemoryStreamでも使うか。
117 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 21:20:57 ] 遅いコード晒せ
118 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 21:26:48 ] MemoryStreamを引き合いに出している時点で明らかに使い方が間違っている
119 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 21:47:26 ] FastMM使ってなかったら、>>116 はメモリマネージャ交換した方がよさそうだな。
120 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 21:49:55 ] FastMM って3年前からだよ。それまでStringListって遅かったのか?
121 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 21:49:57 ] ほんとにClear,Add,Stringsだけしか使ってない?それで遅いって、100万件ぐらい データ突っ込んでのかな。
122 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 03:42:15 ] TMemoでしたって落ち?
123 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 08:18:10 ] 自分の無能さをライブラリのせいにするな
124 名前:デフォルトの名無しさん [2008/03/27(木) 09:03:40 ] 配列の宣言にpackedがついている場合を見かけますが、これ何か意味あるんですか?
125 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 09:07:08 ] メジャーになれなかった理由の一つがまさにこういった事。 比較的多用しそうな事がいまいちで滅多に使わなそうな事がすげー便利。
126 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 09:29:16 ] >>124 たとえば3バイトのメンバーを持つ構造体の配列とか?
127 名前:124 mailto:sage [2008/03/27(木) 09:36:45 ] >>126 type THoge = packed record A: array[0..2] of Byte; end; // 3バイトの要素を持つ構造体 THogeArray = array[0..9] of THoge; TPackedHogeArray = packed array[0..9] of THoge; begin WriteLn(SizeOf(THoge)); // 3 WriteLn(SizeOf(THogeArray)); // 30 WriteLn(SizeOf(TPackedHogeArray)); // 30 end; 違いが分からないんです。
128 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 09:46:15 ] 配列についているんじゃなくて、構造体についているのよ。 packedをつけないと、アライメントされるかどうかはコンパイルオプションによる。 常にpackedつけておけばOK。 >>127 packedを外してコンパイルしてみ。
129 名前:124 mailto:sage [2008/03/27(木) 09:50:48 ] >>128 > packedを外してコンパイルしてみ。 TPackedHogeArrayのpackedをですか?
130 名前:124 mailto:sage [2008/03/27(木) 09:54:58 ] THogeとTPackedHogeArrayのpackedを外してみましたが、 出力は変わりませんでした。 ちなみにコンパイラオプションは{$A8}です。
131 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 09:55:01 ] >>129 何が起こるか想像がつかないなら、やってみる価値はある。
132 名前:131 mailto:sage [2008/03/27(木) 10:57:08 ] ごめん、勘違いしてた。 混ざらないと駄目みたい。 そうなると、packed配列は意味ありませんね。 procedure TForm1.Button1Click(Sender: TObject); type THoge1 = record A: Byte; B: Byte; C: Byte; end; THoge2 = record A: Byte; B: Byte; C: Byte; D: Word; end; begin Caption := Format('%d, %d', [SizeOf(THoge1), SizeOf(THoge2)]); end;
133 名前:124 mailto:sage [2008/03/27(木) 11:16:28 ] ありがとうございます。 構造体のメンバのアラインメントは他の言語にもあるのでわかるのですが、配列のpackedは謎です。 VCLのソースの中でも配列の宣言にpackedがついていたりいなかったりで、 何か使い分けがされているような気もするのですが、挙動の違いが分からないので釈然としません。 とりあえずつけておけば問題はなさそうですが・・・
134 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 11:52:13 ] >>133 Delphiでしか使わないなら気にしない。
135 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 15:14:18 ] Vista対応ってしとく必要あんのかな
136 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 16:52:40 ] TTabControlで質問です。 タブを選択した時に、その番号に関連付けられてるオブジェクトが 条件を満たさないときはそのタブを選択させないようにするにはどうすればいいんでしょうか? OnChangingイベントでいけるかと思ったんですが これから選択しようとしているタブ番号の取得方法がわかりません。 クリックの時はマウス座標を取得する事でどうにか出来ない事もないんですが、 キーボードの時に詰まってしまいます。
137 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 20:51:54 ] Delphiクイックリファレンスによると配列のpackedは標準Pascalとの互換性のためで Delphiでは何の意味もないそうです
138 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 21:50:08 ] StrToIntをAPIで書くとしたらどうなるんですかね? SysUtilsはあまり使いたくない性分です・・・
139 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 21:52:42 ] どう考えても意味不明だろ、それ。
140 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 21:57:55 ] >>138 APIは知らんけどSystem.Val しかしこのスレ無内容な一行レスばっかりだな。彼らは一体何がしたいのか。
141 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 22:07:38 ] >>140 こんな関数があるとは・・・ 勉強になります ありがとうございます
142 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 22:12:26 ] 関数ではなくて手続きでしたね、すみません
143 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 23:06:08 ] いやだってSysUtilsは使いたくないって意味不明じゃん。ValもStrToIntも変わらないでしょ。
144 名前:|Д゚彡 ◆A6VzDeLphI mailto:sage [2008/03/28(金) 02:16:29 ] >>107 CharToByteIndex なんだって。
145 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 05:27:30 ] 1文字目は1バイト目から始まり、 3文字目は4バイト目から始まるって意味か。 >>138 こんなんでどうだ?(未チェック) 16進数が必要なら自分でやって。 function StrToInt(const Str: string): Integer; var I: Integer; P: PChar; Minus: Boolean; begin Result := 0; Minus := False; P := PChar(Str); if P^ in ['+', '-'] then begin Minus := P^ = '-'; Inc(P); end; while P^ <> #0 do begin if not (P^ in ['0'..'9']) then raise Exception.Create('変換エラー'); // EConvertみたいなのあったかも。 Result := Result * 10 + Ord(P^) - Ord('0'); Inc(P); end; if Minus then Result := Result * -1; end;
146 名前:デフォルトの名無しさん [2008/03/28(金) 06:05:11 ] Result := Result * 10 + Ord(P^) - Ord('0'); ここおかしくない?
147 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 06:05:56 ] やべ、スレあげちまった。
148 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 07:09:17 ] 123の場合、 Result := 0 * 10 + '1' - '0' → 1 Result := 1 * 10 + '2' - '0' → 12 Result := 12 * 10 + '3' - '0' → 123 であってると思うけど。
149 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 07:43:32 ] ああ、あってるね。ごめんなさい。
150 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 09:51:44 ] +,-,#0の一文字だけのとき、0になるわ。
151 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 10:01:22 ] delwiki.info/?%A5%B3%A1%BC%A5%C9%C1%D2%B8%CB%2F%BF%F4%C3%CD%A4%E4CSV%A4%CE%BC%E8%A4%EA%BD%D0%A4%B7 この GetInteger10を呼び出してる GetIntegerみたいに好みの仕様を追加したらいいんじゃないの?
152 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 15:17:15 ] TreeViewで特定の項目だけVisible:=Falseにできますか? または代わりの方法があれば教えてください。
153 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 17:15:01 ] Canvasにウィンドウ右上の_ □ ×ボタンをレンダリングする方法ないですか? ビットマップで用意するとテーマの変更に追従できないので。 >>152 たぶん無理。Add/Deleteするしか。
154 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 00:26:03 ] >>153 WinAPIのDrawFrameControl
155 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 10:18:18 ] DrawFrameControlってテーマに対応してるの?
156 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 10:37:32 ] Win32APIだし、内部的にそれらのAPI使ってWindowsはウィンドウ描画してるんじゃ? てか、それぐらい自分で試せるだろ。
157 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 10:39:03 ] いや、テーマAPI別にあるから対応してねぇかも。
158 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 10:45:44 ] Win32のスレで聞きな。そっちの方が知ってる人多いと思う。
159 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 13:26:10 ] TRegExprでtr演算子の置換をするにはどうすればいいですか? たとえば「tr/abc/ABC/」見たいなのです 英語とか良く分からないしググッても出ないし・・・ よろしくお願いします
160 名前:159 mailto:sage [2008/03/29(土) 14:48:57 ] 今頃ですがTRegExprでなくてもDLLを使わないようなものでなければ大丈夫です
161 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 15:53:24 ] TRegExprの使い方 delwiki.info/?%A5%B3%A5%F3%A5%DD%A1%BC%A5%CD%A5%F3%A5%C8%2FTRegExpr PCRE使ったの cc.codegear.com/Item/25062
162 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 17:47:55 ] 鬼車ベースのライブラリってないの?
163 名前:159 mailto:sage [2008/03/29(土) 17:54:41 ] >>161 > TRegExprの使い方 これを読んでみて分かりませんでした・・・ 何かサンプルをいただけないでしょうか
164 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 18:08:56 ] ぢゃ日本製使え ttp://homepage1.nifty.com/bmonkey/delphi/delphi.html
165 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 02:33:50 ] DirectoryListBox で、今選んでいるフォルダの深さが何階層目かを知る方法ってありますか?
166 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 02:40:05 ] それ16ビットUIの名残り。使わない方がいいよ。
167 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 03:00:55 ] >>166 そうですか、今後なるべく使わない様にします。 じゃあ、変数に入ってるパスが何階層目かを知る方法ってありますか?
168 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 04:05:07 ] デリミタの数を数えるとか
169 名前:|Д゚彡 ◆A6VzDeLphI mailto:sage [2008/03/30(日) 04:23:47 ] delfusa.main.jp/delfusafloor/opensource/delfusalibrary/20070828160200/WordDecompose/WordDecompose.pas.txt 俺も自作のを使ってしまうなあ。
170 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 06:13:30 ] StringReplaceで\を\_にでも変換して、 長さの差を取れば\の数は分かるんじゃないのか?
171 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 06:19:44 ] \の数だけだとUNCパスで誤動作するんじゃね?
172 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 09:42:07 ] はぁ・・・Del7買ってから出来たものはボタンクリックして画像表示 それから2Dのスクロールと3Dモデルの回転のみ・・・ 変数宣言めんどくせー コンパイラ時に自動作成して後で修正させるようにしてくれりゃいいのに
173 名前:167 mailto:sage [2008/03/30(日) 10:01:31 ] >>168-171 やはり文字系で処理するしかないですか なんかディレクトリの命令であるかなと思ったんで すいませんでした、なんとかやってみます ありがとうございましたw
174 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 10:03:40 ] ExtractFileDriveしてExcludeTrailingPathDelimiterしつつExtractFilePathできる回数を数える
175 名前:167 mailto:sage [2008/03/30(日) 11:19:06 ] >>174 あっ、そういう方法でも出来るんですね なんか出来そうな感じがしてきました 試しにやってみます、ありがとうございましたw