くだすれDelphi(超初心者用)その24
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2005/05/09(月) 04:42:56もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが、
お礼はDelphiの布教と初心者の救済をお願いします。
<前スレ>
くだすれDelphi(超初心者用)その23
http://pc8.2ch.net/test/read.cgi/tech/1110470895/
<その他>
Borland Home Page
http://www.borland.co.jp/
DelWiki
http://onigiri.s3.xrea.com:8080/delphi/
0002デフォルトの名無しさん
2005/05/09(月) 04:44:0722 http://pc5.2ch.net/test/read.cgi/tech/1107332482/
21 http://pc5.2ch.net/test/read.cgi/tech/1104511938/
20 http://pc5.2ch.net/test/read.cgi/tech/1101530485/
19 http://pc5.2ch.net/test/read.cgi/tech/1097454588/
18 http://pc5.2ch.net/test/read.cgi/tech/1093996761/
17 http://pc5.2ch.net/test/read.cgi/tech/1091671391/
16 http://pc5.2ch.net/test/read.cgi/tech/1089779142/
15 http://pc5.2ch.net/test/read.cgi/tech/1087823906/
14 http://pc5.2ch.net/test/read.cgi/tech/1085239007/
13 http://pc5.2ch.net/test/read.cgi/tech/1081003641/
12 http://pc5.2ch.net/test/read.cgi/tech/1076610073/
11 http://pc5.2ch.net/test/read.cgi/tech/1076609666/
0003デフォルトの名無しさん
2005/05/09(月) 04:44:5110 http://pc5.2ch.net/test/read.cgi/tech/1074523803/
09 http://pc5.2ch.net/test/read.cgi/tech/1071294733/
08 http://pc5.2ch.net/tech/kako/1068/10682/1068201045.html
07 http://pc5.2ch.net/tech/kako/1065/10651/1065195699.html
06 http://pc5.2ch.net/tech/kako/1063/10632/1063202727.html
05 http://pc5.2ch.net/tech/kako/1061/10610/1061090908.html
04 http://pc5.2ch.net/tech/kako/1058/10588/1058834815.html
03 http://pc5.2ch.net/tech/kako/1055/10559/1055986736.html
02 http://pc5.2ch.net/tech/kako/1053/10537/1053757982.html
01 http://pc5.2ch.net/tech/kako/1051/10518/1051882835.html
0004デフォルトの名無しさん
2005/05/09(月) 04:59:43つい先ほどDelphi6をインストールしたばかりなのですが、
Delphi6を最大化しても他のプログラムのウィンドウや
デスクトップとかが見えてすごく気が散ります。
環境オプションにもそれ関係の設定は見あたりませんでした。
そういうもんなんでしょうか?
0005デフォルトの名無しさん
2005/05/09(月) 05:49:22StringReplaceで半角カナを全角カナに変換する関数を作っているのですが、
目的の文字列に変換できません。
function KanaHanToZen(data: string): string;
// 半角カナを全角カナに変換する処理
var
TRF: TReplaceFlags;
begin
TRF := [rfReplaceAll];
data := stringReplace(data, 'バ', 'バ', TRF);
data := stringReplace(data, 'パ', 'パ', TRF);
Result := data;
end;
バ が バになり、パ が パになる。
他の文字は、アはアとなるのですが、どうやら濁音と半濁音が正常に変換されないようです。
こういう場合、どうしたらよいのでしょうか?他に代替案はありますでしょうか?
よろしくお願いいたします。
0006デフォルトの名無しさん
2005/05/09(月) 07:12:360007デフォルトの名無しさん
2005/05/09(月) 08:24:03rubyだとx+=1、cだとx++
こんな感じで
x := x + 1; を短縮する形ってありますか?
0008デフォルトの名無しさん
2005/05/09(月) 08:32:540009デフォルトの名無しさん
2005/05/09(月) 09:15:11ありがとうございます
FAQ以前に基本でしたね
すいません
00105
2005/05/09(月) 12:22:58お返事どうもありがとうございます。
AnsiReplaceStr関数があったので、やってみましたが、結果は>>5と同じになりました。
パやバが一文字とならず、点々と丸が別の文字となってしまいました。
引き続き、何か対策方法がありましたら、教えてください。
よろしくお願いいたします。
0011デフォルトの名無しさん
2005/05/09(月) 12:32:330014デフォルトの名無しさん
2005/05/09(月) 15:45:26配列の要素をクリアするメソッドみたいなものありますか?
var rx: Array [ 1..100 ] of integer;
宣言の際、これだけだと適当な値が各要素に入ってしまいます。
0015デフォルトの名無しさん
2005/05/09(月) 15:55:560016デフォルトの名無しさん
2005/05/09(月) 16:37:08FillChar(rx,SizeOf(rx),0);
0017デフォルトの名無しさん
2005/05/09(月) 16:37:38rx[1]:=0;
rx[2]:=0;
rx[3]:=0;
rx[4]:=0;
rx[5]:=0;
rx[6]:=0;
rx[7]:=0;
rx[8]:=0;
rx[9]:=0;
rx[10]:=0;
rx[11]:=0;
rx[12]:=0;
rx[13]:=0;
rx[14]:=0;
rx[15]:=0;
rx[16]:=0;
↓省略!
0018デフォルトの名無しさん
2005/05/09(月) 17:54:47for I := Low(rx) to High(rx) do
rx[I] := 0;
0019デフォルトの名無しさん
2005/05/09(月) 18:50:02ショートカットから実行した時
ショートカットが存在するパスを取得するには
どうすればいいのでしょうか。
'c:\abc.exe'
'd:\abc.lnk'
の状態で'abc.lnk'実行時、exe内部で'd:\'を知りたいです。
よろしくお願いします
0020デフォルトの名無しさん
2005/05/09(月) 19:02:07wwwwwwwwwwwwうぇwwwwうはっwwwおkwww
っうぇ
っうぇっうぇうはっwwwうはっwww
っwwwっうぇうぇwwwwwwwっっ
うはっwww
0021デフォルトの名無しさん
2005/05/09(月) 20:48:15あちこちで見るけど、何これ?
0022謎電波
2005/05/09(月) 21:18:01Cドライブの中身だかとデスクトップのキャプチャ画像だかを公開するらしい。
0023デフォルトの名無しさん
2005/05/09(月) 22:15:170024デフォルトの名無しさん
2005/05/09(月) 23:04:04それであのコードを自動で書くためのツールつくって、そのなかでは For 文使ってる。
0025デフォルトの名無しさん
2005/05/09(月) 23:34:42配列c{i]にその一バイトずつが入ってるのですが、そのまま
edit1.text:=edit1.text+c[i];
のようにしたらダメでした
0026デフォルトの名無しさん
2005/05/09(月) 23:37:51できるとしたら 方法も教えてくれると嬉しいです。
0027デフォルトの名無しさん
2005/05/09(月) 23:51:31何スレか前で見た質問だ。
0028デフォルトの名無しさん
2005/05/09(月) 23:53:46マジですかorz
過去スレ見れないからorz
0029ゴッド
2005/05/10(火) 01:06:34// 暗号化
procedure XorEncode(const Source, PassWord: string;var ba:ByteArray);
var
i, LP,LS: Integer;
begin
SetLength(ba,0);
LP := Length(Password); LS := Length(Source);
if (LP = 0) or (LS = 0) then Exit;
SetLength(ba,LS);
for i := 1 to LS do
ba[i-1] := Ord(Source[i]) xor Ord(Password[(i-1) mod LP +1]);
end;
// 復号化
function XorDecode(const ba: ByteArray;const PassWord: string):string;
var
i, LP,LS: Integer;
begin
result := '';
LP := Length(Password); LS := Length(ba);
if (LP = 0) or (LS = 0) then Exit;
SetLength(result,LS);
for i := 1 to LS do
result[i] := Char( ba[i-1] xor Ord(Password[(i-1) mod LP +1]) );
end;
0030たまご
2005/05/10(火) 01:36:150031たまご
2005/05/10(火) 01:38:160032デフォルトの名無しさん
2005/05/10(火) 01:59:13スマートにまとめることはできますか?
if a > 10 then a := -10;
if a < -10 then a := 10;
if b > 10 then b := -10;
if b < -10 then b := 10;
if c > 10 then c := -10;
if c < -10 then c := 10;
if d > 10 then d := -10;
if d < -10 then d := 10;
if e > 10 then e := -10;
if e < -10 then e := 10;
if f > 10 then f := -10;
if f < -10 then f := 10;
0033デフォルトの名無しさん
2005/05/10(火) 02:01:02a := EnsureRange2(a, -10, 10);
b := EnsureRange2(b, -10, 10);
c := EnsureRange2(c, -10, 10);
...
0034デフォルトの名無しさん
2005/05/10(火) 02:03:390035デフォルトの名無しさん
2005/05/10(火) 12:30:54Borlandは出すみたいだけどまだ出てないとか、逆に出すつもりはないらしいとか何でも良いので(自分で作れとかは無しで)そういう情報を教えてください。
(公式版・非公式版などは問いません)
0036デフォルトの名無しさん
2005/05/10(火) 12:44:33Delphi6で対応はありえないだろ。
0037ななしへたぐらま ◆XcB18Bks.Y
2005/05/10(火) 14:39:28おそらく「そういうもん」というのが答えになってしまいます.
初期のVisual Basic(VB)の統合環境がこういう感じだったんですよ.
ただ,エディタウィンドウに他のウィンドウをドッキングさせ,
エディタウィンドウを最大化することで
ある程度画面を埋めることはできると思います.
#うちはエディタウィンドウを半透明化させて壁紙がよく見えるようにしているのですが,ニーズは様々ですね.
>>26
はずしているかもしれませんが,
・単に特定のウェッブページを表示させたい→APIのShellExecuteを使う
・ファイルのダウンロード→IdFTPコンポなどを使う
・あちこちのウェッブページを表示させたい→WebBrowserコンポを使う
こんなところでしょうか.
#ちなみに『プ』じゃなくて『ブ』です.
#元はといえば『MS Pゴシック』という判読しづらいフォントを用意したマイクロソフトが悪いのですが….
#ちなみに元になった単語はここ↓でチェックできますので発音も聞いておくともう間違えませんよ.
# ttp://www.excite.co.jp/dictionary/english_japanese/?search=browse&match=beginswith&dictionary=NEW_EJJE&block=35519&offset=1542
0038ななしへたぐらま ◆XcB18Bks.Y
2005/05/10(火) 15:17:12変数a〜fが全く同じ目的の変数なら配列変数にしてはいかがでしょうか.
たとえばゲームなら複数いるそれぞれの敵のパラメータとか,
イベントか何かでの人気投票ソフトで各候補の得票数とかいう場合です.
TForm1 = class(TForm)
private
TekiNoBasho: array [1..6] of integer; // a〜fに相当.必ず目的に合わせて名前を変えること.
end;
procedure TForm1.Button1Click(Sender: TObject);
procedure fix(var n: integer);
begin
if n > 10 then n := -10;
if n < -10 then n := 10;
end;
var
i: integer;
begin
for i := Low(TekiNoBasho) to High(TekiNoBasho) do
fix(TekiNoBasho[i]);
end.
>>34 多分-10〜10の間でループするのでしょう.
0039デフォルトの名無しさん
2005/05/10(火) 15:48:452次元の動的配列で、SetLength(V, y, x) とした場合、
後で x と y の値をどのようにして取得できますか?
Vを関数の引数にして、関数内で x や y を参照したい場合です。
初心者の質問ですが、よろしくお願いします。
0041デフォルトの名無しさん
2005/05/10(火) 16:07:05var
V:array of array of integer;
begin
SetLength(v,3,7);
Label1.Caption := IntToStr(Length(V));
Label2.Caption := IntToStr(Length(v[0]));
end;
004335
2005/05/10(火) 20:58:57情報ありがとうございました。
自分は未だにDelphi6を使っているので(理由は単純に無償だからなんですが)、できればDelphi6の64bit版のコンパイラがほしいんです。
Delphi2005とか次バージョンで、無償版+64bit版のコンパイラがあればいずれ乗り換えたいと思っています(もちろんPC環境を64bitにするのが先ですが)。
0044デフォルトの名無しさん
2005/05/10(火) 21:42:14ありがとうございます^^
ちなみに そのソフトやらはフリーウェアなんですか?
0045デフォルトの名無しさん
2005/05/10(火) 22:05:34>できればDelphi6の64bit版のコンパイラがほしいんです。
ずいぶん簡単に言ってくれるじゃないの。
なんでDelphi6にこだわるのか意味不明なんだが。
そもそも「Delphi6の64bit版のコンパイラ」って、ワケワカメ
0046デフォルトの名無しさん
2005/05/10(火) 22:08:280047デフォルトの名無しさん
2005/05/10(火) 22:11:43ありましたら教えてください。多分見ても作れないとは思いますが一応知りたいです。
0048デフォルトの名無しさん
2005/05/11(水) 00:38:51フォーマットの決まっている掲示板HTMLからスレ一覧とか、レスに分割したりしたいんですが
0049デフォルトの名無しさん
2005/05/11(水) 00:44:140050デフォルトの名無しさん
2005/05/11(水) 00:55:32でもD7のヘルプって手抜き?情報量が以前より少ないみたいだ。
0051デフォルトの名無しさん
2005/05/11(水) 01:01:35定期的にこの話題が出るけど、
「ネットから」
っていつも答えてる。
大体、検索すれば何とかなる場合の方が多いし。
日本のだけじゃなくて、英語のページから探と良いことあるかも。
なぜかロシア語がヒットしやすかったりすんだよなw
0052デフォルトの名無しさん
2005/05/11(水) 01:52:140053デフォルトの名無しさん
2005/05/11(水) 01:58:23最大値と最小値によるけど、テーブルでやるのもいいかもしれない。
Table: array[-20..20] of Integer = (
10, 10, ...., 10, 10,
-10, -9, -8, ... 8, 9, 10,
-10, -10, ..., -10, -10);
0054デフォルトの名無しさん
2005/05/11(水) 02:27:24IdSMTP1.QuickSend(host,subject,mailto,from,body);
で、メールを送信してるんですが、SMTPサーバからメッセージが帰ってこないとき
タイムアウトさせたいのですが、うまい方法はないでしょうか?
同報メール送信ソフトを作っています。
よろしくお願いします。
0055デフォルトの名無しさん
2005/05/11(水) 02:43:55だから何だってこともないけど、スレはあるよ。
http://pc8.2ch.net/test/read.cgi/tech/1093654251/
0056デフォルトの名無しさん
2005/05/11(水) 14:31:11TBitmapには便利なScanLineとかありますが、
ビットマップのデータのアドレスとか、必ずしも
順番に並んでないんでしょうか?
たとえば、ScanLine[0]とScanLine[1]だけを取得し、
その差から他のラインのアドレスを計算して
処理すると都合の悪い場合があるんでしょうか?
ある処理をMMX化したんですが、上の方法で
アドレス計算してしまってるんで、はたして
こんなんでいいのかと、ふと疑問に思ったもんで。
0057ななしへたぐらま ◆XcB18Bks.Y
2005/05/11(水) 14:37:36すいません,WebBrowserコンポはDelphi 5以降のPro版以上のようです.
もとはActiveXコントロールなのでDelphiから取り込んでコンポとして使うことができます.
ぐぐっていたらこんなサイトが出てきました.参考になるかもしれません.
ttp://hogehoge2001.at.infoseek.co.jp/note-delphi.html
IdFTPコンポも6以降に標準で付いていたような.
(なかったらフリーで落とせます.詳しくはIndyスレ(>>55)の>1で)
>>52
その不便さを補ってあまりある魅力があるということでもあるのですよ.
>>50
初代から5まで見ていますがバージョンが上がるたびに悪くなってます.
0058ななしへたぐらま ◆XcB18Bks.Y
2005/05/11(水) 14:58:35Delphi 5のGraphicsユニットのソースを見る限り,
ScanLineプロパティはBottom-UpとTop-Downの差を吸収した上で
計算した値を返しているようですから問題なさそうな感じです.
ただ速度的に問題がなければ動的配列にScanLineプロパティの値を
丸ごとコピーしておくのが安全だと思います.
005956
2005/05/11(水) 15:32:04さっそくの回答、ありがとうございます。
そうか、ソースを見ればある程度は回答が得られたのか。
調べてくれて、ホントにありがとうございました。
0060デフォルトの名無しさん
2005/05/11(水) 17:22:50>動的配列にScanLineプロパティの値を丸ごとコピーしておくのが安全
激しく無駄。第一線一本引いただけで古くなるし。なにが危険なのか?
0061デフォルトの名無しさん
2005/05/11(水) 18:52:16Windowsのビットマップは下のラインから順番に格納されてるからScanline[Height-1]が先頭アドレスな。
0062ななしへたぐらま ◆XcB18Bks.Y
2005/05/11(水) 20:00:25危険だとは思っていません.より安全,というか確実ということです.
各ラインごとにScanLineプロパティを読むぶんにはそれが正しいと保証されているので.
動的配列へのコピーは同じラインの先頭アドレスを何度も読みに行く場合に速くなります.
1回しか読みに行かないならおっしゃるとおり激しく無駄です.
>>61
上のラインから格納しているビットマップデータもあるそうなのですよ.
>>58のBottom-Up(下のラインから上に),Top-Down(上のラインから下に)
というのはこのことです.
0063デフォルトの名無しさん
2005/05/11(水) 20:27:54TMemo の内容を TStringList にコピーしようとしています。
で、SL.Text := Memo1.Text とか SL.Assign(Memo1.Lines) とかすると、
最後に改行コードができてしまいます。Lines で1行づつ代入ってのも
試したのですが、1行がある程度長いとなぜか途中で改行されてしまいます。
いかが致したらそのままコピーできるものでしょうか。
Delphiは7 OSはWinXP です。
0064ゴッド
2005/05/11(水) 20:45:28以下を改造して使え
http://rerere.zive.net/res/up/source/up5424.txt
0065デフォルトの名無しさん
2005/05/11(水) 20:50:240066デフォルトの名無しさん
2005/05/11(水) 20:59:15TStringList.Textに代入したときに、末尾が改行で終わっていないと
自動的に改行を付けるようになっているみたいだね
内部はAddメソッドというかInsertメソッドだから仕方がないのかな
改行されて困るんならMemo型をそのまま使えば?
それと途中改行はWardWrapプロパティのせいだから
0067デフォルトの名無しさん
2005/05/11(水) 21:20:46くっつけて保存ってことをやりたかったのです。うーん、もちっと考えてみます。
あと、WordWrap を False にしても、1行がすごーく長いと途中で改行されるんです。
どーもディスプレーの長さで改行っぽい感じもするのですが気のせいかも。
0068デフォルトの名無しさん
2005/05/11(水) 21:33:40WindowsXPのLunaに対応させようとmanifestを作成したのですが
ステータスバーやタブがうまく表現されません。
うまく表現させるにはどのようにすれば良いでしょうか。
何か良いコンポーネント等はありますでしょうか。
0069デフォルトの名無しさん
2005/05/11(水) 21:40:37まだ試してないけど、サンクスコ。
0070デフォルトの名無しさん
2005/05/11(水) 22:10:39var
p :PChar;
begin
p := PChar(Memo1.Lines[1];
TreeView1.Items.Add(nil, p);
end;
のようにやると文字の後に点が2つ付きます。(CRLFなんでしょうか?)
これを消すにはどうしたらいいでしょうか?
StrMove(n, p, StrLen(p)-2);
などもやってみたのですが、上手くいきませんでした。
0071デフォルトの名無しさん
2005/05/11(水) 22:12:45> 動的配列へのコピーは同じラインの先頭アドレスを何度も読みに行く場合に速くなります.
>>58
>速度的に問題がなければ
矛盾してないか?
0072デフォルトの名無しさん
2005/05/11(水) 22:26:26そのとおりやってみたけど、ゴミはつかないけど
0073デフォルトの名無しさん
2005/05/11(水) 22:51:51この問題と関係あるか分らないけど、TMemo.Lines.Strings[i] は
呼ばれるたびにメッセージ送って取得してるから、文字列の実体が静的に存在してない。
だからポインタだけ取って置くのは危険。
ローカル変数に移してからやったほうがイイ。
0074デフォルトの名無しさん
2005/05/11(水) 23:04:18そうですか…
試して頂いてありがとうございます。
>>73
よくわかりませんが、ありがとうございます。
高速化したかったんですが、String使うようにします。
素直にソースそのまま貼った方がよかったんでしょうか?
0075デフォルトの名無しさん
2005/05/12(木) 00:13:01function Add(Node: TTreeNode; const S: string): TTreeNode;
なんでわざわざPCharなんか使うのかわからん。このSはツリー項目名となるのだから巨大なサイズの
テキストを渡すことはない。だから
> 高速化したかったんですが、String使うようにします。
もナンセンス。
0076デフォルトの名無しさん
2005/05/12(木) 00:26:58D6 Personalで使えるかは不明ですが
ttp://www.delphi-gems.com/ThemeManager.php
はD7からついているものと同じものです。
007876
2005/05/12(木) 01:05:50XPというタブがコンポーネントに追加されていないでしょうか?
その中の ThemeManager というものをメインフォームにでも貼り付けてください
後は勝手にすべてのコンポーネントがTheme対応になります(一部除く)
008076
2005/05/12(木) 01:11:32Theme Manager\Delphi\Delphi 6 Personal.txtを見てください。
0081デフォルトの名無しさん
2005/05/12(木) 01:24:31>その不便さを補ってあまりある魅力があるということでもあるのですよ.
と、思う人が少ないからいつまでもマイナーなわけだが。
0082デフォルトの名無しさん
2005/05/12(木) 01:27:42http://pc8.2ch.net/test/read.cgi/tech/1110454743/
はいはい、せっかくわざわざ用意してあるんだから。
008368
2005/05/12(木) 02:19:15ありがとうございます。
書かれている事を実践してみたところ、XPというタブが追加されました。
早速ThemeManagerを貼り付けてコンパイルしてみたところ、何故か
反映されませんでした(´・ω・`)
う〜む、明日起きたらまたやってみたいと思います。
008476
2005/05/12(木) 03:01:18先ほどのホームページから Windows XP manifest resource (WinXP.ZIP)をダウンロードしてください
その中の winxp.res をプロジェクトに加えてください。
これでテーマ対応になると思います。
winxp.resだけでも TButton等はテーマが反映されます。
TBitBtn等はThemeManagerを貼り付けておく必要があります。
008568
2005/05/12(木) 03:16:50ありがとうございます。きちんと望み通りの動作をしました。
これで心置きなく作れます!
76さん長々とお付き合いいただき本当にありがとうございました(つД`)
0086デフォルトの名無しさん
2005/05/12(木) 08:44:12すごく長いと改行するってメモ帳でも同じ動作をするのでWindows側の制限ぽいが
(ちなみにMemoは1K、RichEditは4Kを超えると改行@D7)
それとTStringListに代入した時点で最後に必ずCRLFが付くことがわかったのだから
別のものとくっつけるときは(長さ-2)だけくっつけるようにすればいいっしょ
0087デフォルトの名無しさん
2005/05/12(木) 11:12:08c:char;
s:string;
の場合で
c:=chr($00);と等価の式を
s:='00';を使って実現するにはどうしたらいいでしょうか?
0088デフォルトの名無しさん
2005/05/12(木) 11:17:56008987
2005/05/12(木) 11:39:58ありがとうございます!
0090ななしへたぐらま ◆XcB18Bks.Y
2005/05/12(木) 16:10:12プロパティの値をポインタに保管しているのがいけないのでしょう.
少なくとも配列プロパティの読み出しは内部的には関数です.
関数の戻り値はすぐに消滅する変数のようなもので
この場所を覚えておいても意味がありません.
(ある程度,あるいは完全に原形をとどめていたりすることがあるのは
生物が死んでもすぐに消滅しないのと同じです)
ポインタを使うのでしたら指している実体が変数などとして存在していなければなりません.
一方,string(AnsiString)型は同じ型同士で変数に代入しても文字列データそのもののコピーは行われません.
速度の心配は不要でしょう.よってstring型を使うべきです.
(詳しくはヘルプの『長い文字列』をご覧下さい)
>>71
そうかもしんない(汗),すいません.
>>56は多分上から1ラインずつ読み書きするのでしょうから,
ScanLineの値を動的配列にコピーする意味はありませんね.
0091デフォルトの名無しさん
2005/05/12(木) 17:26:21どうすればいいのでしょうか?
検索処理高速化の為に並列化(スレッド化)したい!
1つの文字列中を20個の単語で検索する場合。
検索対象=STR
検索単語=s[0],s[1],s[2]...s[19]とし
wordfind.pas(スレッドオブジェクト)に
STRとs[x]の内容をわたせればいいのですが。。
//--メイン---
for i := 0 to 20 do begin
wthread[i]:=wordfind.Create(False);
//どうやって記述するの?
wthread[i].Resume;
end;
--スレッドオブジェクト--
procedure wordserch.Execute;
var
STR_t,s_t:string;
begin
{ ToDo : スレッドとして実行したいコードをここに記述 }
end;
0092デフォルトの名無しさん
2005/05/12(木) 18:08:38スレッドもクラスだから、プロパティ作ってそこにつっこめば?
009391
2005/05/12(木) 18:26:36>プロパティ作ってそこにつっこめば?
すみません。具体的にどこにどう記述するのでしょうか?
場所はwordfind.pasのtype節ですか?
0094デフォルトの名無しさん
2005/05/12(木) 18:33:10んで、プライベートな変数に保持しておく。
0095デフォルトの名無しさん
2005/05/12(木) 18:40:19public property Text: String read FText;
...
wthread[i] := TWordFindThread.Create(FALSE);
wthread[i].Text := Str;
てな感じか。
ただし検索スレッドを20個も立ち上げるのは効率悪すぎ。
うまく工夫してCPUが物理的にさばけるスレッドの個数に抑えるのが無難。
Pen4なら1本、Pen4HTなら2本、デュアルCPUの構成なら4本とか。
# HTだと並列化しても速くならんかも・・・
0096デフォルトの名無しさん
2005/05/12(木) 18:41:110097デフォルトの名無しさん
2005/05/12(木) 18:56:56type TMyThread = class(TThread)
private
FHensuu1: Integer;
FHensuu2: string;
public
constructor Create(nandakke: Booelan; hensuu1: Integer; hensuu2: string);
...
constructor Create(nandakke: Booelan; hensuu1: Integer; hensuu2: string);
begin
inherited Create(nandakke);
FHensuu1 := hensuu1;
FHensuu2 := hensuu2;
end;
0098デフォルトの名無しさん
2005/05/12(木) 18:57:310099デフォルトの名無しさん
2005/05/12(木) 19:51:18破棄せずに再利用できなくない?
必要ならコンストラクタでもプロパティでも両方使えるようにしてる。
0100デフォルトの名無しさん
2005/05/12(木) 19:54:30コード量と利便性のトレードオフ
010191
2005/05/12(木) 21:23:42ありがとうございました。
95さんのようにパブリックなプロパティにしたらできました。
ですが、↓の例のように
http://homepage1.nifty.com/MADIA/delphi/delphi_bbs/200404_04040088.html
劇的に早くなるかな?とおもったのですが、
メモリ使用量との兼ね合いでスレッドを絞らざるを得なくなり
速度的には変わりませんでした。(むしろ遅くなったかも(笑))
0102デフォルトの名無しさん
2005/05/12(木) 21:37:59一個しかなければいくらスレッド分けても速くはならない。
0103デフォルトの名無しさん
2005/05/12(木) 21:43:09小文字や大文字をその通りに取得する事は可能でしょうか。
0104デフォルトの名無しさん
2005/05/12(木) 22:11:55試しにコンパイルしてみるとVarIsNullとかのバリアント系識別子が軒並みエラーになる。
使用する環境に入ってるのはDelphi7。
当然漏れの作ったソースじゃなく、漏れ自身、数年ぶりのDelphiの仕事。
取り敢えずusesにSystem加えたりとかしてみたんだけど駄目。
VarIsNullだけならまだ回避出来る物のVarTypeとかってなるともうどうして良いやら。
Variantに関して何か変更とかあったの?
代替の識別子とかってあるの?
コンパイル出来ないとどんな動きのアプリなのかイメージが掴みにくいです。
漏れの凡ミスであればある意味不幸中の幸い。解決策、誰か教えて下さい。
010525
2005/05/12(木) 22:17:09>>29
初心者なのでわからないのですが、どの部分が二バイト文字への変換なんでしょう?
0106デフォルトの名無しさん
2005/05/12(木) 22:25:50> Variantに関して何か変更とかあったの?
色々とあったと思う。Delphi6 What's Newあたりをダウンロードして
読むべし。
0107デフォルトの名無しさん
2005/05/12(木) 23:37:05現在Variant関連は uses にVariantsを追加する仕様になっている。
どのバージョンからだったかは覚えていないが。
っていうか VarIsNulllやVarTypeでヘルプを引けばわかると思うが・・・
0108デフォルトの名無しさん
2005/05/13(金) 00:16:54なんてことは可能なんでしょうか?
いったん普通に表示させて、その画像を取得後、
縮小処理なんてプロセス以外にない?
できれば、背後で画像を作成したいんですが。。。
0109デフォルトの名無しさん
2005/05/13(金) 00:39:40マジレスしていいんだよな…?
オレの環境(Windows95)じゃ、そんなことないけど。
0110デフォルトの名無しさん
2005/05/13(金) 01:13:421. TBitmap 作って、
2. その Canvas にTextOut して、
3. 表示したいものに縮小コピー、かな。
そんな面倒なプロセスでも無いっしょ
0111デフォルトの名無しさん
2005/05/13(金) 01:15:240112デフォルトの名無しさん
2005/05/13(金) 01:16:16日本のサイト
ttp://www2.big.or.jp/~osamu/Delphi/Tips/key.cgi?key=33#0247.txt
海外のサイト
ttp://www.swissdelphicenter.ch/torry/showcode.php?id=1983
こちらのは前もって WebBrowserに読み込んでおいて保存するもの
WebBroeserを非表示にしておけば画面には表示されない。
ちょとソフトの修正がいるがうまく出来た。
0113デフォルトの名無しさん
2005/05/13(金) 01:17:41111じゃないけど、「ハァ?」って書かれてもしょうがないな。
111に同意見。
0115デフォルトの名無しさん
2005/05/13(金) 09:52:080116103
2005/05/13(金) 09:54:49漏れですか?もちろんしてます。
つーか直前で取得して代入して95だけで上手くいかないから
ShowMessageで確認したんですよ〜。
何故なんだろorz
0117104
2005/05/13(金) 12:07:42了解。解決しました。ありがとうございます。
ぶっちゃけ、ホント凡ミスでごめんなさい。
ブランクがあってヘルプに対する漏れの依存性が薄れていたのと、
VarをVerに間違えて検索していたのが困惑の要因でした。orz
0118デフォルトの名無しさん
2005/05/13(金) 13:29:19ヘルプを開いて、キーワード検索ではそれらのヘルプが表示されますが
IDEのコード上ででF1キーを押しても、ヘルプは起動しますが、キーワードが空白のまま表示されます。
どうやったらいいですか。
0119デフォルトの名無しさん
2005/05/13(金) 14:08:20わー、ありがとうございます。
Torryのページのは、僕が希望してたそのものです。。
さっそく使わせてもらいます。
0120デフォルトの名無しさん
2005/05/14(土) 21:46:49Delphiを使って詳しく解説してるサイトはないですか?
C/C++は結構あるんですけど、Delphiは情報が少なすぎて…
012125
2005/05/14(土) 22:00:19>>29
初心者なのでわからないのですが、どの部分が二バイト文字への変換なんでしょう?
0122デフォルトの名無しさん
2005/05/14(土) 22:10:33(´・ω・)カワイソス)カワイソス)カワイソス
)カワイソス)カワイソス(´・ω・)カワイソス
)カワイソス(´・ω・)カワイソス)カワイソス
)カワイソス
(´・ω・)カワイソス)カワイソス(´・ω・)カワイソス)カワイソス)カワイソス
0123デフォルトの名無しさん
2005/05/14(土) 22:32:19自身のパスを取得してc:\hoge.txtのように絶対パスで指定するのと./hoge.txtのように相対パスで
指定するのってどちらが良いのでしょうか。どちらが一般的でしょうか。
0124デフォルトの名無しさん
2005/05/14(土) 22:44:03探せばあると思うけど、C/C++をDelphiに変換した方が早い。
0125デフォルトの名無しさん
2005/05/14(土) 22:48:00相対パスでいいんじゃない。
0127デフォルトの名無しさん
2005/05/14(土) 23:25:490129デフォルトの名無しさん
2005/05/14(土) 23:31:23いつの間にかカレントディレクトリが移動してることだって十分ある
0130デフォルトの名無しさん
2005/05/14(土) 23:32:27TOpenDialog などを使っていてカレントディレクトリが変わるなら
相対パスはバグの元になるのでお勧めしない。
(プロパティ弄れば変えないようにもできるけど)
0131デフォルトの名無しさん
2005/05/14(土) 23:34:33OpenDialogでファイル開いても変わるしね
0132デフォルトの名無しさん
2005/05/14(土) 23:36:440133123
2005/05/14(土) 23:39:19hoge.txtと./hoge.txtって同じ事になるのでしょうか。
てっきり後者の場合はカレントディレクトリを無視して必ず実行ファイル
直下を指定してるモソだと思い込んでいましたorz
絶対パスで指定する事にします!
0134デフォルトの名無しさん
2005/05/14(土) 23:47:24var
eByte: ByteArray;
S :string;
XorEnCode('Ord関数やChar関数のことはわかってるの?','ぱすわーど',EncodeByte);
S := XorDecode(eByte,'ぱすわーど');
とすると
S = 'Ord関数やChar関数のことはわかってるの?'
となる(はず)。
0135デフォルトの名無しさん
2005/05/14(土) 23:52:41'Ord関数やChr関数のことはわかってるの
スマソ。しかしXorDecodeの
for i := 1 to LS do
result[i] := Char( ba[i-1] xor Ord(Password[(i-1) mod LP +1]) );
部分はChar(キャスト)でいい。
0136デフォルトの名無しさん
2005/05/14(土) 23:53:37TListViewの各ItemのCheckedの変化に対応したいんですが、
どのようなイベントを使うといいのでしょうか?
よろしくお願いします。
0137デフォルトの名無しさん
2005/05/15(日) 00:19:56OnChanging/OnChange
何かしら工夫しないと選択状態とかフォーカスの変化と区別できないけど。
チェックボックスの変化だけを表すメッセージ自体が無いらしい。
0138デフォルトの名無しさん
2005/05/15(日) 00:27:44下記のように作ったところ、XORをかけて、もう一度かけた
時に元に戻らなかったり(一部の文字が化けてしまいます)
場合によっては不正な処理ということで強制終了してしまいます。
function MyXor(str: PChar): PChar; stdcall;
var
i, j, k: Integer;
begin
Result := '';
j := length(str);
k := 16;
for i := 0 to j do
begin
str[i] := Chr(Ord(str[i]) xor k);
end;
Result := str;
end;
おそらく書き方に問題があるのではと思いますが
どのように直せば良いでしょうか?
0139デフォルトの名無しさん
2005/05/15(日) 00:33:01jの値がおかしい
for i := 0 to j do // 0..j
0141デフォルトの名無しさん
2005/05/15(日) 00:51:50× for i := 0 to j do
○ for i := 1 to j do
Delphi(というかPascal)の文字列は、1から始まる。
>>29もそうなってる。
0142デフォルトの名無しさん
2005/05/15(日) 01:05:39for i := 0 to j-1 do
ではないかな。それにしても
Result[j] := #0
しなくていいのだろうか?
0143デフォルトの名無しさん
2005/05/15(日) 01:43:36>Result[j] := #0
>しなくていいのだろうか?
参照渡しの中を直接いじっているだけで長さも変わっていないからいいんじゃない。
0144デフォルトの名無しさん
2005/05/15(日) 02:22:49細かいことを言えば
>j := length(str);
は良くない。
Length()を使うとstr:PCharがいったんstringに変換されてしまう。
PCharで使うならここは
j:=StrLen(str);
としたほうがよい。
ただしどちらの場合も Xorによって #0が出ないことが前提。
こういうことを行う場合は PByteと Lenを渡すようなほうがベター。
0145138
2005/05/15(日) 03:15:35まだ試行錯誤中ですが、何とか出来そうです!
0146デフォルトの名無しさん
2005/05/15(日) 05:20:52ありがとうございます。
OnChanging/OnChangeって、いろんな状況で呼び出され、
区別するのが大変ですね。がんばってみます。
0147デフォルトの名無しさん
2005/05/15(日) 05:23:16procedure test;
var i,h:integer;
procedure nakami;
begin
h:=i;//※iが心配なんです。
end;
begin
for i:=0 to maxint do
nakami
end;
この場合
procedure nakami;を
procedure nakami(const i:integer);とやらなくても大丈夫でしょうか?
0148デフォルトの名無しさん
2005/05/15(日) 05:30:170149デフォルトの名無しさん
2005/05/15(日) 05:32:340150デフォルトの名無しさん
2005/05/15(日) 10:53:08の返り値が 0 なんですが、なぜですか?
日本語のロケールだと'〇'は無視されてしまうということですか?
0151デフォルトの名無しさん
2005/05/15(日) 11:37:14ホントだなあ。引数がstring型の AnsiCompareStr もいっしょだ。
両方ともWinAPIのCompareStringをつかっているからこれが原因だろうか?
0152デフォルトの名無しさん
2005/05/15(日) 12:41:48d :string;
d[2*i]:=inttostr(k);
これで、整数型のintをstringの中に入れようと思ったのですが、
Charと Stringには互換性がありません
とでてしまいます。
この場合どうしたらいいのでしょうか?
0153デフォルトの名無しさん
2005/05/15(日) 12:46:21やっぱりそうですか…。ありがとうございました
0154デフォルトの名無しさん
2005/05/15(日) 13:44:31半角一文字に '1234' とか入れようとしても無理だろ。
>この場合どうしたらいいのでしょうか?
どうしようもない。
0155デフォルトの名無しさん
2005/05/15(日) 13:57:00if k < 10 then d[2*i] := s[1] else d[2*i] := '0';
d[2*i+1] := s[2];
StringをCharにばらしてやればいい
文字列sでs[n]とやればn番目のChar型文字を得られる
0156デフォルトの名無しさん
2005/05/15(日) 19:07:16>Length()を使うとstr:PCharがいったんstringに変換されてしまう。
へえ、そうなんだ。これ知らなかったです。まあPChar型の文字列を
カウントするのにLengthを使うことは普通はないとは思うけど。
0157デフォルトの名無しさん
2005/05/16(月) 12:29:06具体的には、自前で作ったアプリケーションを複数起動して、そのアプリケーション間で、レコード型の座標情報を送受信したいのです。
PostMessage で送信すればいいのでしょうか・・。
0158デフォルトの名無しさん
2005/05/16(月) 13:01:34試してないけどこんな感じかな
送り側
procedure TForm1.Button1Click(Sender: TObject);
var
hndl: THandle;
begin
hndl := FindWindow(nil, 'アプリケーション名');
if hndl <> 0 then
PostMessage(hndl, 3333 , 0 ,0);
end;
受け側
const
Mymsg = 3333;
type
private
procedure GetMyMessage(var Message: TMessage); message MyMsg;
end;
procedure TForm1.GetMyMessage(var Message: TMessage);
begin
ShowMessage('メッセージ来たよ')
end;
0159デフォルトの名無しさん
2005/05/16(月) 13:17:19ありがとうございます。
hndl := FindWindow(nil, 'アプリケーション名');
の部分では、1つのプロセスしか掴めないようです。
3つ、4つのプロセスが起動している時に、全てを取得する方法はありますでしょうか。
また、自分自身のハンドルを取得したりしないでしょうか。
その場合、 if Application.Handle = hndl で判定可能でしょうか。
0160デフォルトの名無しさん
2005/05/16(月) 13:18:400161デフォルトの名無しさん
2005/05/16(月) 13:38:02メモリマップドファイルとかの共有メモリにプロセスリストとウィンドウハンドル格納しておくのがスマートな実装と思われ。
(起動時に共有メモリオブジェクトの存在をチェック>(なければ作成>)自身のウィンドウハンドルを追加>終了時には自身の情報を削除)
0162デフォルトの名無しさん
2005/05/16(月) 13:39:490163159
2005/05/16(月) 13:48:41たとえばレコード型へのポインタを入れて送る事は可能なのですか?
0164デフォルトの名無しさん
2005/05/16(月) 14:41:09http://homepage2.nifty.com/t-katochin/download/memma06.lzh
文字列を送受信するだけなら、アトムがお手軽です。
ポインタはわかりません。すみません。
0165デフォルトの名無しさん
2005/05/16(月) 14:47:30http://www.asahi-net.or.jp/~nk2w-ishr/programs.htm
0166デフォルトの名無しさん
2005/05/16(月) 14:55:250167デフォルトの名無しさん
2005/05/16(月) 16:04:34にあるMersenne Twisterという乱数発生器を使って、
1〜10の整数で乱数を発生させるには
どのようなードを書けばいいのでしょうか?
かなりの乱数を発生させるプログラムなので、
高速らしいMersenne Twisterを試してみたいのです。
どうぞよろしくお願いします。
0168デフォルトの名無しさん
2005/05/16(月) 16:10:00少なくともC/C++コードがあるからbccでコンパイルすればリンクできるよ。
0169デフォルトの名無しさん
2005/05/16(月) 16:47:07そのページのどれを使いたいのかわからないけど、mt19937.pas にはサンプルあるからその通り使えばいいのでは。
1〜10の整数なら Trunc(1.0+9.0*x.real1) かな?
0170デフォルトの名無しさん
2005/05/16(月) 16:52:100171デフォルトの名無しさん
2005/05/16(月) 19:01:30アプリ間ではメモリ空間が異なるのでポインタではデータのやり取りは出来ない。
そういう用途にはWM_COPYDATAを使用する。
用途によっては共有メモリより簡便
0172デフォルトの名無しさん
2005/05/16(月) 21:05:15定義されていません。とでてしまいました。
オーバーロード関数って一つの名前で複数の処理が可能な関数のことですか?
で、どこにどう定義すればいいのでしょうか?
indy9のIdUDPClientを使用してまして
Form1.IdUDPClient1.SendBuffer()の場所でエラーがでます。
0173デフォルトの名無しさん
2005/05/16(月) 21:15:51「あれ?IntToStrは引数に整数を取るはずだぞ?
そうか!IntToStrをオーバロードして浮動小数点を引数に取るIntToStrを
作ったのか。よしよし」と勝手に思い込む
で、いざ翻訳を始めると「オーバーロードされてないじゃん、ウソツキ!」と怒る
要するに引数の型が違うってこと
0174デフォルトの名無しさん
2005/05/16(月) 21:38:37わかりやすい解説ありがとうございました。
そして引数の型間違ってましたorz
初心者にやさしいエラーにしてほしいですね。。
0175デフォルトの名無しさん
2005/05/16(月) 23:13:03Mersenne Twisterは別に速いのが売りなんじゃないよね。
速いだけなら従来の線形合同法のほうがはるかに速いわけだし。
要は疑似乱数として周期が極めて長く一様なランダムさをもった良い乱数って話なだけでしょ。
0176デフォルトの名無しさん
2005/05/16(月) 23:18:470177デフォルトの名無しさん
2005/05/17(火) 00:17:55extendedにしてfloattostrを挟むことで解決したんですが、指数表記が気に入らなくて・・
これって取り去れるものなんでしょうか?
0178デフォルトの名無しさん
2005/05/17(火) 00:41:160179デフォルトの名無しさん
2005/05/17(火) 00:43:540180デフォルトの名無しさん
2005/05/17(火) 05:07:22Boldにする方法はわかったのですが、それ以外の装飾をつけるにはどうしたらよいのでしょうか?
0181デフォルトの名無しさん
2005/05/17(火) 12:24:580182デフォルトの名無しさん
2005/05/17(火) 17:12:35Timer.Intervalが小さく(300ぐらい)て
Timer.OnTimerイベント中にDBをゴリゴリいじるような
時間の掛かる処理を書いた場合に
イベントが続けざまに来ることがあるのでしょうか?
もしそうだとしたら
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Timer1.Enabled := False
//時間の掛かる処理・・・・
Timer1.Enabled := True
end;
とタイマーイベントがダブらないように書いたほうがいいのでしょうか
0183デフォルトの名無しさん
2005/05/17(火) 18:18:12使えるようにするにはどうしたらいいでしょうか?
0184デフォルトの名無しさん
2005/05/17(火) 18:26:25たぶん300msecを超えるとメッセージが飛んでくる。イベントを抜けたらまた入ることになるので、
その処理はあった方がいい。
できるのであれば、スレッドにした方がいいのでは?
0185デフォルトの名無しさん
2005/05/17(火) 19:22:52ありが�d。おかげで簡単なファイル暗号化ツールができました。
0186デフォルトの名無しさん
2005/05/17(火) 19:45:37発想逆にして
while ProcessDB do
Application.ProcessMessages;
にするとか。処理はこっちのがシンプルになるかもね。
0187デフォルトの名無しさん
2005/05/18(水) 08:52:36付箋紙や時計やカレンダーソフトなどによくあるような、
Formをデスクトップに貼り付けるという動作をしたい場合、どうすればいいかがわかりません。
どこを弄ればいいのか…あるいはどんなコードを書けばいいのか、お教えください。
0188デフォルトの名無しさん
2005/05/18(水) 09:47:28{ Private 宣言 }
public
procedure WMWindowPosChanging(var Msg: TWMWindowPosChanging);message WM_WINDOWPOSCHANGING;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.WMWindowPosChanging(var Msg: TWMWindowPosChanging);
begin
inherited;
Msg.WindowPos.hwndInsertAfter := HWND_BOTTOM;
end;
0190デフォルトの名無しさん
2005/05/18(水) 12:40:22どうすればファイル名を取得できますか?
0191デフォルトの名無しさん
2005/05/18(水) 12:46:330192デフォルトの名無しさん
2005/05/18(水) 12:47:470193デフォルトの名無しさん
2005/05/18(水) 16:52:36いまいち使い方がよく分からなくて未だD6と使い分けの状態です。D6からD7への移行はどうされましたか?
0194RAVEが憎い
2005/05/18(水) 18:10:49Raveを使われてる方に質問です。
RVDSでデーターセットを指定して、デザイナーで新規データーオブジェクト、ダイレクトデータービュでDATAVIEW1を作っても、先頭レコードの先頭フィールド(INDEX)しか見えません。
フォーム上のVCL、DBGridなどからは問題なく接続できています。
詳しい方おられましたらよろしくお願いします。
0195デフォルトの名無しさん
2005/05/18(水) 21:23:52フォームのBorderStyleをiniファイルに保存したい場合、
ReadBoolやReadStringやReadIntegerなどを使うと、TBorderStyleと互換性が無いって怒られます。
どのように指定すればいいのでしょう?型を変えるにしても、何型やら…
ヘルプを見たりググってみても出てこないので…。
0196デフォルトの名無しさん
2005/05/18(水) 21:29:310197デフォルトの名無しさん
2005/05/18(水) 21:41:320198デフォルトの名無しさん
2005/05/18(水) 21:55:59俺ならそうする
0199195
2005/05/18(水) 23:40:43エラーは吐かないものの、iniファイルにはそこの部分だけ出力されてません。
今気づいたんですが、もしかして、iniファイルのセクションって自由に作成・指定できるわけではないんですか?
0200デフォルトの名無しさん
2005/05/18(水) 23:45:48Form1.BorderStyle:=ReadInteger('Section', 'Ident', Integer(Form1.BorderStyle));
エラーチェックも忘れずにな
0201デフォルトの名無しさん
2005/05/18(水) 23:48:04Form1.BorderStyle:= TBorderStyle(ReadInteger(省略))
つーか、列挙方は簡単にIntegerにキャスト出来る
0203デフォルトの名無しさん
2005/05/19(木) 01:55:00ウインドウより大きい画像の場合スクロールバーで操作できるようにしたいのですが
実際に画像を表示させるとスクロールバーが出てきてくれません。
スクロールバーを出すにはどうしたらいいのでしょうか?
0204デフォルトの名無しさん
2005/05/19(木) 01:59:06AutosizeっぽいプロパティがTrueになってるか確認してみて。
0207204
2005/05/19(木) 02:08:21TImageかな?たぶん。
0208203
2005/05/19(木) 02:11:560209204
2005/05/19(木) 02:13:070210203
2005/05/19(木) 02:21:47両方alCliantでした
ScrollBoxとTImageのAlignをalNoneにしたらスクロールバーが出てきました!
少し変な気もしますがここからは自分で頑張りたいと思います
ありがとうございました
0211デフォルトの名無しさん
2005/05/19(木) 06:34:50Delphian Worldで配布されていたSusie Plug-in 読込コンポをインストールした後
コンポーネント-ActiveXの取り込みからTWebBrowserをインストールしたらSusieのコンポが消えてしまうんですが
これらのコンポを共存させる方法があれば教えてください
0212デフォルトの名無しさん
2005/05/19(木) 09:18:010213デフォルトの名無しさん
2005/05/19(木) 09:24:06叶です。
0214デフォルトの名無しさん
2005/05/19(木) 10:45:42.Hint := 'aaa'#13'bbb';
0215デフォルトの名無しさん
2005/05/19(木) 12:45:01コンテキストメニューを自作のアプリで出したいのですが
そういったライブラリはありますか?
0216デフォルトの名無しさん
2005/05/19(木) 14:03:100217デフォルトの名無しさん
2005/05/19(木) 14:15:430218デフォルトの名無しさん
2005/05/19(木) 20:43:39どういったコードを書けばEnterキーが効くようになりますか?
DelphiのバージョンはDelphi6 personalです、どなたか教えてください
0219デフォルトの名無しさん
2005/05/19(木) 21:24:03FormがリサイズされたときにButton同士が重ならないように
縦の比率を保って追従していくというのを、
オブジェクトインスペクタの設定等のみでコードを書かずに実現できますか?
0220デフォルトの名無しさん
2005/05/19(木) 21:48:180221デフォルトの名無しさん
2005/05/19(木) 22:00:13http://www.swissdelphicenter.ch/en/showcode.php?id=1055
0223デフォルトの名無しさん
2005/05/19(木) 22:26:580224デフォルトの名無しさん
2005/05/19(木) 22:28:24英語で何か問題あるのか。
0225デフォルトの名無しさん
2005/05/19(木) 22:32:54ほとんど英語ねーじゃん
0226デフォルトの名無しさん
2005/05/19(木) 22:36:550227RAVEが憎い
2005/05/19(木) 22:44:140228219
2005/05/19(木) 23:03:40パネルの中にボタンを並べるのですか?
それともボタンごとにパネルを作ってパネルを並べるのですか?
どちらであるにしても、ボタンを縦に並ばせるには
どのプロパティに注目すればいいのでしょうか?
0229デフォルトの名無しさん
2005/05/19(木) 23:22:59無理。
Delphiには賢いレイアウトマネージャはありましぇーん。
自称最強の開発環境はもうとっくに進歩を止めてます。
0231デフォルトの名無しさん
2005/05/20(金) 00:58:45デファクトスタンダードな STL みたいなライブラリとかってあるんでしょうか?
おすすめがあればご教授ください。
0232デフォルトの名無しさん
2005/05/20(金) 01:05:440233デフォルトの名無しさん
2005/05/20(金) 02:08:50実行時に、タスクバーにタスクバーボタンを表示しないようにするには、どうしたらいいんですか?
ググって調べてたら、プロジェクトファイルに
Application.ShowMainForm := False;
と記述するとか出てきましたが、それではフォームごと消えてしまいます…。
フォームを表示しつつ、タスクバーから消したいんです。
よろしくお願いします。
0234デフォルトの名無しさん
2005/05/20(金) 02:29:20procedure TForm1.FormShow(Sender: TObject);
begin
ShowWindow(Application.Handle, SW_HIDE);
end;
では?
0236デフォルトの名無しさん
2005/05/20(金) 10:18:18ここを参考にしたのですがうまくいかず、
zipの解凍をしたいのですが、どうすればいいでしょうか?
0237デフォルトの名無しさん
2005/05/20(金) 10:56:30解凍できないなんて事はないからアドバイスのしようがない。
0238デフォルトの名無しさん
2005/05/20(金) 11:05:02そのソフトを利用して圧縮・解凍するには別途DLLが必要です。
解凍するのなら
ftp://ftp.info-zip.org/pub/infozip/WIN32/
から unz552dN.zip を落として中に入っている unzip32.dll をパスの通っているフォルダか
実行ファイルと同じところにおくこと
0240デフォルトの名無しさん
2005/05/20(金) 12:48:320241デフォルトの名無しさん
2005/05/20(金) 12:51:210242デフォルトの名無しさん
2005/05/20(金) 14:30:46opposite
【名】 反対{はんたい}、正反対{せいはんたい}の人[物・こと]、逆の物、反対{はんたい}の物、反意語{はんいご}
0243デフォルトの名無しさん
2005/05/20(金) 14:56:17誰も意味なんて聞いてないと思うけどw
0244デフォルトの名無しさん
2005/05/20(金) 15:10:56スレッドをFreeOnTerminate:=trueで作って
スレッド内である条件でexecuteを終了した場合、
実際にスレッドが開放された時点をメインスレッド内から
どのようにして検出したらいいんでしょうか?
よろしくお願いします。
0245ななしへたぐらま ◆XcB18Bks.Y
2005/05/20(金) 15:23:38ここで発音を聴いてみるとよいかも.
ttp://www.excite.co.jp/dictionary/japanese_english/?search=opp&match=beginswith&block=40669&offset=708
0246デフォルトの名無しさん
2005/05/20(金) 16:40:40日本語が微妙に理解しにくいんだが、
要はFreeOnTerminateで自動解放されるThreadの
終了タイミングを知りたいということなのか?
だとしたら、ThreadのdestructorでSynchronizeでメインスレッドの
処理を呼び出したり、メッセージを送ればOKなような
0247デフォルトの名無しさん
2005/05/20(金) 17:09:49FreeOnTerminate:=Falseでスレッド作って
スレッド呼び出し元で
while not Executeメソッドが終わるまで do
Application.ProcessMessages;
と書いたほうがよさげな気がする
0248デフォルトの名無しさん
2005/05/20(金) 19:39:510249デフォルトの名無しさん
2005/05/20(金) 21:34:48PageControlを使用し、ユーザーが自由にタブを作成、削除できるようにしたいのです。
例えばタブブラウザやタブエディタのように。
その場合、PagecontrolでTabSheetを作成するということでしょうから、とりあえず
procedure MakeSheet (Sender: TObject);
var
TabSheet:TTabSheet;
RichEdit: TRichEdit;
begin
TabSheet := TTabSheet.Create(PageControl1);
TabSheet.PageControl := PageControl1;
TabSheet.Caption := '***';
RichEdit.Create(TabSheet);
end;
と書いているわけです。コンパイルは通るのに、まっさらなTabSheetが出来上がります。
そして何かいろいろ足りない気がします…ご教授くださいorz
0250デフォルトの名無しさん
2005/05/20(金) 21:39:06RichEdit.Parent:=TabSheet;
この一行を追加すれば万事OK
"Owner"と"Parent"は全く違う概念だが、
これで理解出来るかな?
0251デフォルトの名無しさん
2005/05/20(金) 21:47:48これじゃコンパイラに怒られるだろ
RichEdit:= TRichEdit.Create(TabSheet);
だな
0252249
2005/05/20(金) 21:52:27それでやってみます。
>>251 素直にコピペすりゃよかったわけですが、単なる書き間違いですorz
0253デフォルトの名無しさん
2005/05/20(金) 22:46:45何か分かりにくい文章ですみません。
実はあるクラス(通信関係)を作ったんですが、そのクラスは
非同期で通信を行うスレッドを使います。
アプリケーション終了時にクラスを破棄するとき、当該クラスで
スレッドに対して通信切断と終了するように指示します。
で、このときスレッドが実際に開放されるまで時間がかかるようで、
さきに当該クラスが開放されてしまい、タイミングによって、
スレッドがクラスにアクセスして違反が起こります。
それで、このクラスの終了時に、スレッド開放まで待つ効率的な処理が
ないかと。。。
そうですね、スレッド自身が終了をクラスに伝えるまで待てばいいんですね。
ありがとうございました。
0254デフォルトの名無しさん
2005/05/21(土) 02:02:42二回目にファイルを読み込むと最初に読み込んだファイルのパスがすべて消えてしまい
そこに新しくパスが書き込まれてしまいます
最初に読み込んだパスの最後尾に続けて文字列を書き込むにはどういったコードを書けばいいのでしょうか?
0255デフォルトの名無しさん
2005/05/21(土) 02:03:38隠れたウィンドウのキャプも出来るらしく調べてるのですが
↓のコードでも不可のようなのでMSDNを参考に弄ったりはしてるものの
http://www.experts-exchange.com/Programming/Programming_Languages/Delphi/Q_21272659.html
APIあまり理解してないのか下手なのか今のところうまくいかない模様。
当方XPでAltTab(Powertoy)も動くことから環境制限はない…と思います。
DelphiMLやFDELPHIのログでも見当たらなかったのですがもしかして駄目ってことはまずないですよね…
Delphiでうまく動かす方法ご存知の方いらっしゃいますでしょうか?
MSDN-Windows XP の視覚スタイルおよび PrintWindow を Windows アプリケーションで使用する
ttp://www.microsoft.com/japan/msdn/windows/windowsxp/xpvisualstyles.asp
MSDN-PrintWindow
ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/prntspol_6qpj.asp
VBsample
ttp://www.mentalis.org/apilist/5474182B9FF59F9FC97856E69B9E9442.html
当たり前のことだったりしてorz
0256デフォルトの名無しさん
2005/05/21(土) 02:13:26opendialog1.Execute;
Memo1.Lines.Add(opendialog1.FileName);
では?
0258デフォルトの名無しさん
2005/05/21(土) 15:57:380259デフォルトの名無しさん
2005/05/21(土) 22:13:40procedure 〜
begin
if A=B and C=D and D=E then
begin F:=G
end
else
begin showmessage('*****');
end;
end;
としたときに、何故かF:=GとShowmessageが両方実行されてしまいます。
加えて、A=BであってC<>Dであっても、F:=Gが実行されてしまいます。
これは文法が間違っているのか、あるいは他の部分が間違っているのか、
ご教授ください。
0260デフォルトの名無しさん
2005/05/21(土) 22:21:20少なくともオレの環境だと
if (A = B) and (C = D) and (D = E) then
としないと駄目だ
あと、一応試したがちゃんと期待通りの動作をする
文法ではなくコードに問題があるんじゃないか?
0261デフォルトの名無しさん
2005/05/21(土) 22:24:160262デフォルトの名無しさん
2005/05/21(土) 22:24:260263デフォルトの名無しさん
2005/05/21(土) 22:32:300264デフォルトの名無しさん
2005/05/21(土) 22:33:57分からないけどTListViewだと駄目な理由って何かあるの?w
0265259
2005/05/21(土) 22:34:58F:=Gも実行されています。
試しに同じ場所に判り易いShowmessageとか入れても、両方実行されます。
if A=B and C=D and D=E の方は、むしろ条件が一つでも満たされれば実行されるような感じ。
or じゃなくてand なのに…。
やっぱりコードが悪いんですかね?
ここでいうAやBやCなどに入ってると、動作がおかしくなる型条件などはありますか?
0266263
2005/05/21(土) 22:35:40すいません。こうでないと表現が正しくないですね。
0267デフォルトの名無しさん
2005/05/21(土) 22:38:20その部分がコメントになってるんじゃないのか
if error! A=B and C=D and D=E
とかやってコンパイルエラー出るか?
0268デフォルトの名無しさん
2005/05/21(土) 22:38:32ちょっとコード晒してみろ
0270デフォルトの名無しさん
2005/05/21(土) 22:55:30× if (A=B) and (C=D) and (D=E) then
○ if A=(B and C)=(D and D)=E then
になってるとか。
0271デフォルトの名無しさん
2005/05/21(土) 22:59:31それだと
A = (B and C) = (D and D) = E
と解釈される。
=が左結合だったか右結合だったか忘れたけど、
AとEのどっちかが論理型だったら文法的には正しいとみなされそうだな。
0272デフォルトの名無しさん
2005/05/21(土) 23:00:28@, not1 位(最高)
*, /, div, mod, and, shl, shr, as2 位
+, -, or, xor3 位
=, <>, <, >, <=, >=, in, is4 位(最低)
一見すると不要と思われる状況でもカッコが必要な場合があります。次に例を示します。
X = Y or X = Z
この式が次のように解釈されることを意図して書かれたものだとしても,
(X = Y) or (X = Z)
カッコがなければ,コンパイラは演算子の優先順位の規則に従って次のように解釈します。
(X = (Y or X)) = Z
このため,Z が論理型でない限り,コンパイル時にエラーが発生します。
checkbox6.Checked:=False;
checkbox7.Checked:=False;
if checkbox1.Checked=checkbox2.Checked and
checkbox3.Checked=checkbox4.Checked and
checkbox4.Checked=checkbox5.Checked
then begin
checkbox6.Checked:=True;
end else begin
checkbox7.Checked:=True;
0273259
2005/05/21(土) 23:01:48begin
cell[X,Y] := not cell[X,Y];
//上
if Y-1 >= 0 then
cell[X,Y-1] := not cell[X,Y-1];
//下
if Y+1 <= 4 then
cell[X,Y+1] := not cell[X,Y+1];
//左
if X-1 >= 0 then
cell[X-1,Y] := not cell[X-1,Y];
//右
if X+1 <= 4 then
cell[X+1,Y] := not cell[X+1,Y];
if (cel[0,0] = True) and (cell[0,1] = True) and (cell[0,2] = True) and (cell[0,3] = True) and
(cell[0,4] = True) and (cell[1,0] = True) and (中略)
(cell[4,3] = True) and (cell[4,4] = True) then
ShowMessage('****');
StringGrid1.Visible := False;
StringGrid1.Enabled := False;
end;
(var cell:array[0..4,0..4] of Boolean)←グローバル
(一部ですけど)問題の部分はこんなかんじです。所謂ライツアウトってゲームを作ってみてるわけです。
クリア後のイベントのはずが、ワンクリックで実行とかわけわかめ。
上の書き込みの例で何故かF:=GとShowmessageが両方実行されてしまうというのは別の関数ですので除外して考えていただきたい…。
0274デフォルトの名無しさん
2005/05/21(土) 23:08:22ShowMessage('****'); ←これと
StringGrid1.Visible := False; ←これが同時に実行されるって事?
StringGrid1.Enabled := False;
end;
if...thenの後はbegin...end;でくくらないと一番上の条件(ShowMessage)しか
処理に入らないよ。
0275デフォルトの名無しさん
2005/05/21(土) 23:17:110276デフォルトの名無しさん
2005/05/22(日) 00:57:40DirectXのヘルプ見る限りではあるよ。
0277259
2005/05/22(日) 01:01:11レスくれたかたありがとうございます。もうちょっと自分でがんばってみることにします。
0278デフォルトの名無しさん
2005/05/22(日) 10:53:50とDLL内に書いているのですがローカルフックしかできません。
グローバルフックを行うためにはどうしたらいいのでしょうか?(Delphi6 personal)
0279デフォルトの名無しさん
2005/05/22(日) 11:08:13参考
ttp://www.swissdelphicenter.ch/torry/showcode.php?id=1722
0280デフォルトの名無しさん
2005/05/22(日) 11:36:10参考になりました
ファイルマッピング使うんですね
いろいろと試してみます
0281デフォルトの名無しさん
2005/05/22(日) 12:00:47ここのサンプルではうまく変更出来ませんでした。
http://forum.nifty.com/fdelphi/samples/00802.html
よろしくご教授願います。
0282デフォルトの名無しさん
2005/05/22(日) 16:01:31天才しときますね。実際に正しいかは自前でお願い。
95,98ではコンパネ>マウスより7段階の調節が可能。
速度設定はレジストリに
"MouseSpeed"、"MouseThreshold1"、"MouseThreshold2"
の3つの値で調整、保存される。
----------------------------------------------------
速度 遅 速
----------------------------------------------------
MouseSpeed 0 10 7 4 1 4 4 4
MouseThreshold1 0 0 0 0 0 12 9 6
MouseThreshold2 0 1 1 1 1 2 2 2
----------------------------------------------------
パラメータの内容は不明。
2,0,0で速くなるとも。
3.1時代からwin.iniで設定できたらしい?
2k,XPではコンパネ>マウスより11段階の調節が可能。
レジストリに"MouseSensitivity"という値が追加された。
速度設定はこの値で調整、保存される
----------------------------------------------------
速度 遅 速
----------------------------------------------------
MouseSensitivity 1 2 4 6 … 18 20
----------------------------------------------------
0283282の続き
2005/05/22(日) 16:05:272kでは"なし"、"小"、"中"、"大"の4段階
XPでは"精度を高める"の有効、無効の2段階
----------------------------------------------------
OS 2k |XP
----------------------------------------------------
加速? 無 小 中 大 | 無 高
----------------------------------------------------
MouseSpeed 0 1 2 2 | 0 1
MouseThreshold1 0 7 4 4 | 0 6
MouseThreshold2 0 0 12 6 | 0 10
----------------------------------------------------
パラメータの意味は"MouseSpeed"で変わる。
MouseSpeedが
0の時:加速しない。
1の時:しきい値1を超えると移動量が倍になる。
2の時:しきい値1を超えると倍に、しきい値2を超えると
4倍になる。
補)
マウスウェアを入れている場合は上述の設定を無効化して
独自に管理される場合がある。
以上。自分での結果と海外サイトの混ざってるので穴もあるかも。
ところでPrintWindowやっぱ無理ですかねぇ。
0284デフォルトの名無しさん
2005/05/22(日) 16:27:33> 多倍長整数ユニット拾ってくるとか。どこにあるか知らないけど
多倍長整数ユニットなら「コンピュータアルゴリズム事典」(奥村晴彦著 技術評論社)
のP157以下を少し改造したものが
http://www.vector.co.jp/soft/win95/personal/se066024.html
のソースにある。
0286デフォルトの名無しさん
2005/05/22(日) 20:33:48>>283
PrintWindow使って何が駄目なのか書いてないのでスルーしていたわけだが。
つーかDCをメッセージで投げるだけだろ。
0287デフォルトの名無しさん
2005/05/22(日) 20:59:41var
wnd: HWND;
dc: HDC;
bmp: TBitmap;
begin
wnd := GetDesktopWindow;
bmp := TBitmap.Create;
bmp.Height := Screen.Height;
bmp.Width := Screen.Width;
bmp.PixelFormat := pf24bit;
dc := bmp.Canvas.Handle;
PrintWindow(wnd, dc, 0);
Image1.Picture.Assign(bmp);
bmp.free;
end;
とかではbmpが受け取ってくれないみたいで空白になります。
色々弄ってはいるんですが未だ正しい方法がわからずじまい。
MSDNのサンプル見て同じように書いてみたりしたものの駄目みたいで・・・
どう書けば正常に結果を返してもらえるのか恥ずかしいことにほとほとわからない状態です。
0288デフォルトの名無しさん
2005/05/23(月) 00:10:19外部アプリの背面にする(自作アプリにフォーカスを移しても外部アプリが消え
ないようにする)にはどうしたらいいのでしょう?
0289デフォルトの名無しさん
2005/05/23(月) 00:31:08WM_WINDOWPOSCHANGINGで。
procedure TForm1.WMWindowPosChanging(var m: TWMWindowPosChanging);
begin
inherited;
if not IsIconic(そのアプリのウィンドウハンドル) then m.WindowPos.hwndInsertAfter := そのアプリのウィンドウハンドル;
end;
0290デフォルトの名無しさん
2005/05/23(月) 00:53:17GetDesktopWindowが駄目だったみたい。
0291デフォルトの名無しさん
2005/05/23(月) 16:50:500292デフォルトの名無しさん
2005/05/23(月) 16:55:18できればダイアログなどを出さず保存したいのですが
DelphiのバージョンはPersonal6です
0293デフォルトの名無しさん
2005/05/23(月) 16:56:30Form1.Print;
0294デフォルトの名無しさん
2005/05/23(月) 17:41:17サンクス。
もしユーザーに外部アプリを登録させるようなソフトだと
FApliName がたとえば 'D:\MyTools\Editor\K2Editor.exe' の場合
procedure TForm1.WMWindowPosChanging(var Msg: TWMWindowPosChanging);
var
Wnd: HWnd;
begin
inherited;
if AnsiPos('K2EDITOR.EXE',AnsiUpperCase(FApliName)) then
Wnd := FindWindow('TK2EditMain', nil)
else if AnsiPos ・・・・・・・
・・・・・・・
・・・・・・・
if not IsIconic(Wnd) then //ウィンドウがアイコン化されているかどうか
Msg.WindowPos.hwndInsertAfter := Wnd;
end;
というような感じかなあ?
0295デフォルトの名無しさん
2005/05/23(月) 17:51:55自分で起動するんだからスレッドIDからたどって見つける。
0296デフォルトの名無しさん
2005/05/23(月) 17:52:420297デフォルトの名無しさん
2005/05/23(月) 18:05:27その画像をクリアする方法を教えて下さいでつ。
0298デフォルトの名無しさん
2005/05/23(月) 18:43:42FormにはPrintメソッドがあるんですね。
TImageの見たままを印刷するにはどうしたら良いですか?
0299デフォルトの名無しさん
2005/05/23(月) 18:52:36Printer
0300298
2005/05/23(月) 19:08:20ふつーにコーディングしる!、ということでつか。
ところで、ネットで見かけたのですが、
TImageのCanvasは実態がTBitmapというのは本当ですか?
Bitmapを印刷する関数みたいなのは作ったんですが、
TImage.CanvasをTBitmapにキャストすれば良いのかなぁ?
0301298
2005/05/23(月) 19:14:42TImageのTBitmap取得方法きぼんゆ。
0303デフォルトの名無しさん
2005/05/23(月) 20:37:47初期化(というかクリアは)TImage.Picture = Nil
代入はなんとなくだけどAssigneを使ったほうが良いような気がする
0304デフォルトの名無しさん
2005/05/23(月) 20:41:350305デフォルトの名無しさん
2005/05/23(月) 22:00:44クラスとか型とか、少し勉強してから質問してください。
0306デフォルトの名無しさん
2005/05/24(火) 08:47:26FormをスクロールするとToolbarが画面から消えます。
Toolbarって画面の上固定じゃないのか...
どうしよう
0307デフォルトの名無しさん
2005/05/24(火) 08:59:34代入でおk、ですた。
Assignってクリアじゃなくて、生成のような気がして...
0308デフォルトの名無しさん
2005/05/24(火) 10:23:16もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが、
お礼はDelphiの布教と初心者の救済をお願いします。
0309デフォルトの名無しさん
2005/05/24(火) 10:23:21TScrollBox
0310デフォルトの名無しさん
2005/05/24(火) 10:42:39書き方が悪かった
イメージの初期化はNilを代入でOK
Assignを書いたのはコピーなら代入よりこれを使ったほうがいいから
0311デフォルトの名無しさん
2005/05/24(火) 12:07:17代入も内部でAssignしてるだけだよ
0312デフォルトの名無しさん
2005/05/24(火) 13:18:580313デフォルトの名無しさん
2005/05/24(火) 13:36:270314デフォルトの名無しさん
2005/05/24(火) 13:42:180315デフォルトの名無しさん
2005/05/24(火) 13:58:24--------------------------
//Image1を白く塗りつぶす
Image1.Canvas.Brush.Color := clWhite;
Image1.Canvas.FillRect(Rect(0,0,Image1.Width,Image1.Height));
Form1.Refresh;sleep(1000);//見やすくするため再描画+1秒待機
//Image2にImage1のイメージを代入
Image2.Picture.Assign(Image1.Picture);
Form1.Refresh;sleep(1000);//見やすくするため再描画+1秒待機
//Image1を消去
Image1.Picture.Assign(nil);
--------------------------
Imageに描くときはImage.Canvasでおk。出し入れする時はImage.Picture。ファイルのbmpやjpgもPictureに入る。
ただしPictureにjpgが入ってる時はImage.Canvasでは描けない。
デフォルトで持ってるImage.Picture.Bitmap.Canvasにアクセスするようなものだが
JpegImage(Image.Picture.JpegImage)は編集するCanvasを持たないから。
0316デフォルトの名無しさん
2005/05/24(火) 14:54:26ディレクトリの中のファイル名を順番に出力したいのですが、
どうしたらいいでしょか?
0317デフォルトの名無しさん
2005/05/24(火) 15:14:23ファイルリスボックスを貼り付けて不可視にする。
ディレクトリプロパティに表示したいフォルダのパスを入れる。
アイテムズプロパティにアクセスして表示する。
0318デフォルトの名無しさん
2005/05/24(火) 15:43:19Visible:=FalseにしたTListBoxやTFileListBoxを
画面に置いてやりとりしてたなあ〜
0319デフォルトの名無しさん
2005/05/24(火) 15:44:531.列挙する
2.ソートする
3.出力する
0320デフォルトの名無しさん
2005/05/24(火) 21:11:09アーカイブファイルってどんなファイルですか?
0321320
2005/05/24(火) 21:13:470322デフォルトの名無しさん
2005/05/25(水) 00:49:53ここで、メールアドレス送信したんですが、
一体何日ぐらいで返事が、届くものなんでしょうか?
登録キーを入力する画面より先に進めずにいます。心配です。
0323デフォルトの名無しさん
2005/05/25(水) 01:15:13すぐに届く
0324デフォルトの名無しさん
2005/05/25(水) 01:36:20ありがとうございました。おかげさまで無事キーを得ることができました。
レスがなければ、あと数日待ってたかも知れません。ありがとうございました。
0325デフォルトの名無しさん
2005/05/25(水) 18:04:04ファイルをダウンロードする際、レジューム機能をつけたいんですけど、何か参考になる本やサイトはありませんか?
0326デフォルトの名無しさん
2005/05/25(水) 18:15:560327デフォルトの名無しさん
2005/05/25(水) 19:27:480328デフォルトの名無しさん
2005/05/25(水) 19:34:260329デフォルトの名無しさん
2005/05/25(水) 23:19:380330デフォルトの名無しさん
2005/05/25(水) 23:20:160331デフォルトの名無しさん
2005/05/26(木) 03:28:03フルパスを導きだしたいのですが、
ExpandFileName はカレントフォルダをベースに、相対→絶対変換ですよね?
そうではなく、%PATH% の中から探したいのですが、
こういった場合は自分でゴリゴリ書くしかないんでしょうか?
それとも何か便利な関数はありますでしょうか?
ご教授ください。よろしくお願いします。
0332デフォルトの名無しさん
2005/05/26(木) 03:31:09?
よく分からないけど、'notepad.exe' が複数あったらどーするの?
0334デフォルトの名無しさん
2005/05/26(木) 03:44:18SearchPathかな?
0335デフォルトの名無しさん
2005/05/26(木) 14:10:04新規にwindowsのログインユーザーを作成したのですが、
Delphiを立ち上げると今までのライブラリパスやエディタ環境
全て吹っ飛んでしまいました。
この場合、再度環境の設定をやり直すしかないのでしょうか?
旧ユーザーでログインしていた際に使用されていたDelphiの環境設定の
ファイル等が存在すればそれを再利用すれば設定は簡単そうに思えるの
ですが、そのような事は可能なのでしょうか?
宜しくお願いします。
0336デフォルトの名無しさん
2005/05/26(木) 14:16:05まずやってみてから質問しれ。
0337335
2005/05/26(木) 14:24:06一応レジストリと、ユーザーを変更してるんでC:\Documents and Settingsの中身全てに
それらしい設定情報がないか探してみたのですが見つからなくて・・・・・・。
やはり一から設定し直すしかないのでしょうか・・・・。
0338デフォルトの名無しさん
2005/05/26(木) 14:53:28既存のDelphi環境は引き継いでくれません。
ので、既存のユーザー上でDelphi関連のレジストリデータを
ファイルに書き出しておいて、新規ユーザーに移り、
そこでさっきのファイル(.reg)を起動すればOK。
0339デフォルトの名無しさん
2005/05/26(木) 15:05:00ありがとうございます。早速試してみます。
0342デフォルトの名無しさん
2005/05/26(木) 20:39:39複数列の一覧表で
「項目名の押下で並べ変え」
「CTRLキー+マウスクリックで任意の複数行選択」
をゆくゆくは実現したいのですが、
最適のコンポーネントは何をチョイスすればいいでしょうか?
今まではTstringList+StringGridでやってたのですが
何かと制限がありまして。。。
0343デフォルトの名無しさん
2005/05/26(木) 20:52:510344デフォルトの名無しさん
2005/05/26(木) 21:09:220345デフォルトの名無しさん
2005/05/27(金) 01:15:392005ではTtableやDBgridなどという
データの取りまわしが楽そうなコンポーネントが
あるのですが(実際使ったことないので憶測です。)
やはり、TlistViewの方がいいのでしょうか?
0346デフォルトの名無しさん
2005/05/27(金) 01:17:13提示されたんだから、後は自分で決めるのが良いと思うんだが。
ダメだったら、他のを考えたら?
0347デフォルトの名無しさん
2005/05/27(金) 01:28:26Table, DBGridはデータベースに繋がってるコンポだからDB使うならあり。
ただし使い勝手はStringGridと変わらない。
それ以外の一般的な用途にはListView。
0348デフォルトの名無しさん
2005/05/27(金) 07:28:16回答ありがとうございます。
Listviewでできるとこまでやってみます。
ダメなら他も考えます。
345の発言は
http://www.borland.co.jp/qanda/delphi/d0005075.html
を見て、ん?と思ったからでした。Tableって外部データベースに
繋げないと使えないんですか?
0349デフォルトの名無しさん
2005/05/27(金) 10:48:27delphiで関数の別名とかって定義できませんかね?
function a(p: integer): boolean;
type
b = a: function;
みたいな感じで・・・
delphiは6です。
0350デフォルトの名無しさん
2005/05/27(金) 10:54:47var b: TAFunction = a;
0351349
2005/05/27(金) 10:57:51うお!即レスどうもありがとうございます。
できました!!
ホント助かりました。
0352デフォルトの名無しさん
2005/05/27(金) 13:15:330353デフォルトの名無しさん
2005/05/27(金) 14:30:50s := ' C:\foo';
r := 'file:///' + StringReplace(s, '\', '/', [rfReplaceAll]);
0354デフォルトの名無しさん
2005/05/27(金) 15:16:01てきとうにやってみても動きません
クラスの配列使ったやさしいプログラムがあれば教えて下さい
0355デフォルトの名無しさん
2005/05/27(金) 15:49:42type
TAho = class(TObject)
nenrei :Integer;
seibetu:Integer:
private
pablic
end;
var Aho:array [0..100] of TAho;
implime...
procedure ahomaker(i:Integer);
var
j:Integer;
begin
if i=0 then
for j:=0 to 200 do
begin
Aho[j].nenrei:=1;
Aho[j].seibetu:=1;
end;
end;
これでボタン作ってAho makerを作動させると止まります。
0356デフォルトの名無しさん
2005/05/27(金) 15:53:02begin
Aho[j] := TAho.Create; ←
Aho[j].nenrei:=1;
Aho[j].seibetu:=1;
end;
0357デフォルトの名無しさん
2005/05/27(金) 16:06:46TAho = class(TObject)
nenrei :Integer;
seibetu:Integer;
private
public
end;
var
Form1: TForm1;
Aho:array [0..100] of TAho;
implementation
procedure ahomaker(i:Integer);
var
j:Integer;
begin
if i=0 then
for j:=0 to 200 do
begin
Aho[j].Create;
Aho[j].nenrei:=1;
Aho[j].seibetu:=1;
end;
end;
{$R *.xfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
ahomaker(0);
end;
end.
やっぱり動きません。。。。。
0358デフォルトの名無しさん
2005/05/27(金) 16:07:27~~~
for j:=0 to 200 do
~~~
0359デフォルトの名無しさん
2005/05/27(金) 16:09:23Aho[j] := TAho.Create;
って書いてあるのに、なんで
Aho[j].Create;
に勝手に変えるの??
0360デフォルトの名無しさん
2005/05/27(金) 16:10:560361デフォルトの名無しさん
2005/05/27(金) 16:12:52ちょっと最近ブルー続きでどつぼ嵌まってます
首つって来ます、ありがとうございましたOTL
0362デフォルトの名無しさん
2005/05/27(金) 17:29:350363デフォルトの名無しさん
2005/05/27(金) 17:44:170364デフォルトの名無しさん
2005/05/27(金) 21:59:38置いときます。
で、CustomizeDlgでいくつかのActionToolBarを非表示に変更してからActionManagerを
SaveToFileで保存してアプリを終了します。
で、アプリ起動すると、フォームのOnCreateでLoadFromFileしてるんですが、
非表示にしたActionToolBarが元に戻ってしまっています。
なんででしょう。osはwinXP,delphi7です。
0365デフォルトの名無しさん
2005/05/28(土) 04:47:40Form1.OnShow から Form2.Show をするようにしました。
この Form2 を常に手前にしたいと考え、オブジェクトインスペクタ上で
FormStyle を fsStayOnTop に設定したのですが、
何故か常に手前に表示されませんでした。
そこで、SetWindowPos API を使って Form2.OnShow や Form2.OnActivate で
SetWindowPos(Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE or SWP_NOMOVE);
と書いてみましたが、やはり常に手前に来ませんでした。(SetWindowLong による WS_EX_TOPMOST も試しました)
これは何故なんでしょうか? 解決法をご教授ください。
何か基本的な事を見落としているのかとも思うのですが…
0366デフォルトの名無しさん
2005/05/28(土) 08:20:19Form2.showmodal;
じゃ駄目?よくダイアログに使われる。ただしその間Form1は入力を受け付けない、だったかな。
0367デフォルトの名無しさん
2005/05/28(土) 09:19:52べつにForm2.ShowしなくてもForm2.Visibleを最初からTrueにしとけばえんでない。
0368デフォルトの名無しさん
2005/05/28(土) 10:22:27メインフォームでならいけるから Form2でなくてForm1でTOP_MOSTするように仕様を作れない?
0369デフォルトの名無しさん
2005/05/28(土) 10:33:570370デフォルトの名無しさん
2005/05/28(土) 11:02:09367は単に From2.SHowが必要なくなるといっていりうだけで365の希望のTOP_MOSTにならない
0371デフォルトの名無しさん
2005/05/28(土) 11:20:16ttp://www.asahi-net.or.jp/~HA3T-NKMR/tips003.htm
の様に Form2を作る
Form1で TForm2.CreateOwnedForm(Application, Form1);
の様にForm2を作成するとOK
Form2はプロジェクトオプションで「自動作成の対象」ではなく「選択可能なフォーム」とする。
0372371
2005/05/28(土) 11:24:36SetWindowPos(Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE or SWP_NOMOVE);
をしておくこと
0373デフォルトの名無しさん
2005/05/28(土) 11:25:580374デフォルトの名無しさん
2005/05/28(土) 11:36:24同じアプリ内ならTOP_MOSTは有効だが、いったん他のソフトにフォーカスを当てても
そのままTOP_MOSTを維持している?
0375373
2005/05/28(土) 11:46:490376スレ違いだけど・・・
2005/05/28(土) 13:32:32で判断しているので C/C++Builder 製もあるかもしれない)で作られていた。マイナーコ
ンパイラとしては大したもんじゃなかろうか。ちなみにVBとHSPで作成されたものが1つず
つ、後はおそらくVisual C/C++Builder 製だろう。
皆さんはどうかな?
0377デフォルトの名無しさん
2005/05/28(土) 13:36:040378365
2005/05/28(土) 14:46:55>>371 の方法で上手く行きました。完璧です。
サブフォームは複数あり、かつそのフォームの中で設定を読み込んで TOP_MOST を設定する機構だったので、
モーダルや、メインフォームから TOP_MOST というのは出来なかったのです…
出来るだけシンプルにしようとしてしまい、私の記述不足で、
お手数をかけてしまい、すいませんでした。m(_ _)m
0379デフォルトの名無しさん
2005/05/28(土) 17:06:390380デフォルトの名無しさん
2005/05/28(土) 18:45:340381デフォルトの名無しさん
2005/05/28(土) 18:46:350382デフォルトの名無しさん
2005/05/28(土) 19:07:430383デフォルトの名無しさん
2005/05/28(土) 21:36:130384デフォルトの名無しさん
2005/05/28(土) 22:02:180385デフォルトの名無しさん
2005/05/28(土) 23:12:57あるわけないだろ。 makeint64(123,-1) をどうしたいわけ?
0386デフォルトの名無しさん
2005/05/28(土) 23:22:25makewordみたいにしたいんだろ
Int64Rec でも使って自分で作ればいいんでないの?
0387デフォルトの名無しさん
2005/05/29(日) 01:49:570388デフォルトの名無しさん
2005/05/29(日) 02:13:13としたいのでは?
0389デフォルトの名無しさん
2005/05/29(日) 02:15:530390デフォルトの名無しさん
2005/05/29(日) 03:04:280391デフォルトの名無しさん
2005/05/29(日) 03:09:280392デフォルトの名無しさん
2005/05/29(日) 03:23:48ここで>>385みたいな言い方勘違い杉。
0393デフォルトの名無しさん
2005/05/29(日) 09:40:000394デフォルトの名無しさん
2005/05/29(日) 10:30:57マウスカーソルの直下にあるコントロールをスクロールさせたい」
のですが・・・
Form1にMemo1, Memo2を配置して縦スクロールバーを出しておきます。
何もコーディングしないと、Memo1,2をホイールを使ってスクロールするには、
まずクリックなどでフォーカスを当ててからホイールを回さないといけません。
これをフォーカスを移動せずに(あるいは自動でフォーカスを当て)
マウスカーソルの下にあるMemoをスクロールさせたい、ということです。
TForm1でMouseWheelHandlerをoverrideしてこんなコードを書きました。
procedure TForm1.MouseWheelHandler(var Message: TMessage);
var
TargetControl: TControl;
begin
TargetControl := Self.ControlAtPos(ScreenToClient(Mouse.CursorPos), True, True);
if TargetControl <> nil then
begin
TWinControl(TargetControl).SetFocus;
end;
inherited MouseWheelHandler(Message);
end;
Memo1にフォーカスのある状態でMemo2の上でスクロールすると、1回目のスクロールではMemo1がスクロールし、
2回目のスクロール以降にMemo2がスクロールします。
(即座にフォーカスが移らないためだと思います)
改良案、または全く別の実装法はありませんでしょうか?
0395デフォルトの名無しさん
2005/05/29(日) 11:17:57こういう使い勝手の問題はアプリ側で組み込むのはやめてWIndows標準にしておいたほうが良いですよ。
使う人によって好みが違うので。
上記のような動作が好みならそのような動作をさせるマウス制御ソフトがあるのでそれを使えばよいです。
ttp://www.vector.co.jp/soft/winnt/util/se311994.html
ttp://toshi.pobox.ne.jp/software/wplus.html
等
ZWheelは横スクロールにも対応している。
0396デフォルトの名無しさん
2005/05/29(日) 12:00:58そのトイレ我慢してるの人のせいにするみたいな言い方どうにかなりませんか?
テンプレ嫁。
0397デフォルトの名無しさん
2005/05/29(日) 12:35:12Application.OnMessageではSendMessageされたメッセージは拾えないようなのです
(なんでこんな仕様なんだろ?通過するメッセージ数が半端じゃないから?)
なんとかSendMessageされたメッセージも拾う方法は無いでしょうか?
0398デフォルトの名無しさん
2005/05/29(日) 13:32:41ローカルフックで拾える
0399デフォルトの名無しさん
2005/05/29(日) 13:46:06{ Private 宣言 }
public
function HookProc(var Message: TMessage): Boolean;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
Application.HookMainWindow(HookProc);
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
Application.UnhookMainWindow(HookProc);
end;
0400デフォルトの名無しさん
2005/05/29(日) 13:46:25function TForm1.HookProc(var Message: TMessage): Boolean;
begin
if (Message.Msg = WM_APP) then ShowMessage('received!');
result := true;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
SendMessage(Application.Handle,WM_APP,123,456);
end;
0401デフォルトの名無しさん
2005/05/29(日) 13:58:24じゃローカルフックじゃなくていいね
0403394
2005/05/29(日) 14:38:23その指摘はまことに正しく、反論のしようがないんですが、
それでも実装したいと言うことでお願いします・・・
ということはこれはWindowsの仕様なんですね。
VCLかもと思っていたんですが。
0404デフォルトの名無しさん
2005/05/29(日) 14:50:41ん〜じゃあ、ローカルフックでホイールのメッセージ奪い取って処理するとか。
OSの仕様である以上正攻法ではいかんわな
0405デフォルトの名無しさん
2005/05/29(日) 15:32:25procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG; var Handled: Boolean);
var
control: TControl;
begin
if Msg.message = WM_MOUSEWHEEL then
begin
control := FindDragTarget(Point(LoWord(Msg.lParam), HiWord(Msg.lParam)), False);
if control <> nil then
begin
control.Perform(WM_MOUSEWHEEL, Msg.wParam, Msg.lParam);
Handled := True;
end;
end;
end;
0406395
2005/05/29(日) 16:06:05>ということはこれはWindowsの仕様なんですね。
Windowsの仕様というか・・・メッセージの処理ルーチンの中でやろうとしているからうまくいかない。
405さんの言うようにポスト処理されているので >>405 のように入り口で処理すればOKのハズ
0407デフォルトの名無しさん
2005/05/29(日) 16:06:35batファイルを使用してみたんですが、上手く行きません。他に方法はありますか?
0408デフォルトの名無しさん
2005/05/29(日) 16:09:59Halt(0);
0409デフォルトの名無しさん
2005/05/29(日) 16:15:45ありがとうございます。
Mutexを使って二重起動を防止してるせいなのか、そのコードだと終了後に起動出来ませんでした。。
0411デフォルトの名無しさん
2005/05/29(日) 16:21:56引数に/rebootでも渡したら
0412デフォルトの名無しさん
2005/05/29(日) 16:25:28出来ましたw ありがとうございます。
0413デフォルトの名無しさん
2005/05/29(日) 19:35:38Mutex 殺して自分を起動後、終了
0414デフォルトの名無しさん
2005/05/29(日) 20:37:19待たせて表示させたいのですが頓挫してます。
フックでWM_CREATEをとらえるとこまでは出来ましたが・・・
今のところ思いついたのは
sleep(1000)入れてみる。→やぱり駄目
SetWindowLongで非表示にしてみる。→一瞬表示される
あるとしたらやはりAPIでキチンとプロセスを一時中断させる方法しかないのでしょうか。
0415デフォルトの名無しさん
2005/05/29(日) 22:22:060416デフォルトの名無しさん
2005/05/29(日) 22:53:29どうプログラムを書けばいいのでしょうか
0417デフォルトの名無しさん
2005/05/29(日) 23:03:10したくないわけじゃなくて
APIとかでの挙動の制御に詳しくないんで
正攻法なりクリアする方法なりを知りません。
0418デフォルトの名無しさん
2005/05/29(日) 23:08:45MoveFile
>>417
知らないからと別の方法を探してたら何時までたっても分らないままだろ。
そもそも正攻法も正攻法じゃないやり方も知らないんじゃん。
0419デフォルトの名無しさん
2005/05/29(日) 23:19:14Timerを使えばできないわけではないけど、グローバルフックという常套手段を使えば
目的はクリアできます。
そんな感じの詳しい方のヒントとか欲しかったんです。
0420デフォルトの名無しさん
2005/05/30(月) 02:04:13解説されているサイトか書籍をご存知なら教えていただけませんか
0421デフォルトの名無しさん
2005/05/30(月) 02:53:09>知らないからと別の方法を探してたら何時までたっても分らないままだろ。
>そもそも正攻法も正攻法じゃないやり方も知らないんじゃん。
どうしようもないくらい正論だなw
0422デフォルトの名無しさん
2005/05/30(月) 05:08:510423デフォルトの名無しさん
2005/05/30(月) 05:10:09「マスター」とか気軽に言ってるあたりが負け組。
0424デフォルトの名無しさん
2005/05/30(月) 05:28:40論理的にお答えください。
0426デフォルトの名無しさん
2005/05/30(月) 06:17:40言っている奴に限ってその気になっているだけだったりするよな。
>423はそれを遠まわしに言ってるんだと思われ。
0427デフォルトの名無しさん
2005/05/30(月) 08:04:26ミ,,゚Д゚彡フサギコのフサフサDelphi談話室その23
http://pc8.2ch.net/test/read.cgi/tech/1116997081/
0428デフォルトの名無しさん
2005/05/30(月) 09:44:12.NETがWin32を完全にリプレースするのはかなり先だし
趣味かつクライアント限定ならいいんじゃないの。
ただコミュニティが崩壊して揚げ足取りのチャンスばっかりうかがってる
出がらしのカスばっかり残ってるけどスルーしとけば無問題。
0429デフォルトの名無しさん
2005/05/30(月) 10:07:06QuickReportで、以下のデータを担当者毎に改ページして出力しています。
│担当者│取引先│金額│
ここで、改ページする単位毎に
頁数の表記を[現在頁/全体頁]と出力したいのですが、可能なのでしょうか?
0430デフォルトの名無しさん
2005/05/30(月) 10:30:02ここはそろいも揃ってバカだなw
質問に答えられないならそういえばいいじゃんww
0431デフォルトの名無しさん
2005/05/30(月) 11:04:27聞いた話では、VBは完全なオブジェクト指向言語でGenericプログラミングもできるそうです。
Delphiもそうなんですか?
0432デフォルトの名無しさん
2005/05/30(月) 11:17:330433デフォルトの名無しさん
2005/05/30(月) 11:36:400434デフォルトの名無しさん
2005/05/30(月) 12:05:08VBはもう終わりですから
0435デフォルトの名無しさん
2005/05/30(月) 12:30:180436デフォルトの名無しさん
2005/05/30(月) 12:31:130437デフォルトの名無しさん
2005/05/30(月) 13:10:53趣味なら、いかに楽しいかです。
従って、言語は関係ありません。
0438デフォルトの名無しさん
2005/05/30(月) 13:28:25そんな事はないよ。
0439デフォルトの名無しさん
2005/05/30(月) 13:33:25>>431
>>435
>>436
巣にお帰り。
0440デフォルトの名無しさん
2005/05/30(月) 14:05:16ttp://pc8.2ch.net/test/read.cgi/tech/1116997081/
0442デフォルトの名無しさん
2005/05/30(月) 15:55:58もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが、
お礼はDelphiの布教と初心者の救済をお願いします。
0443デフォルトの名無しさん
2005/05/31(火) 00:57:11みんなどうしてる?
0444デフォルトの名無しさん
2005/05/31(火) 01:11:11俺だったら
1.起動時にモニタサイズを取得
2.モニタサイズになっていたらデフォルトのサイズで真ん中に表示する
ようにすると思う。
0445デフォルトの名無しさん
2005/05/31(火) 01:12:00それは質問ですか?
オレは「TWindowPlacement」、「GetWindowPlacement」を
使ってるけど。
0446デフォルトの名無しさん
2005/05/31(火) 01:18:12マスターベーションは一人よがりになりがち。
使う人がいてこそのソフトウェアと言う事を忘れないで。
0447デフォルトの名無しさん
2005/05/31(火) 01:21:21モニタサイズの時は保存しないようにしてたw
GetWindowPlacementって便利そうだね。
ありが�d
0448デフォルトの名無しさん
2005/05/31(火) 01:23:04443じゃなくて444氏の方法ね。
0449デフォルトの名無しさん
2005/05/31(火) 01:55:13そのドロップしたフォルダの中のファイルのフルパスを全てメモに書き出したいんですが
どんなコードを書けばいいでしょうか
Delphiのバージョンは6のPersonalです
0450デフォルトの名無しさん
2005/05/31(火) 02:18:180451デフォルトの名無しさん
2005/05/31(火) 02:25:34どこに宣言すれば良いのでしょうか。初歩的な質問ですみません。
0452デフォルトの名無しさん
2005/05/31(火) 02:29:54unit Unit1;
interface
var
Hoge: String; // ← ココ
implementation
0453デフォルトの名無しさん
2005/05/31(火) 02:34:55ShellAPI、WM_DROPFILES、DragQueryFile、DragAcceptFiles
あたりを検索してみてください。
0455デフォルトの名無しさん
2005/05/31(火) 07:20:380456デフォルトの名無しさん
2005/05/31(火) 08:45:42http://lupin.client.jp/delphi/
の、
エクスプローラーからファイル名をドラッグ&ドロップで取得
にある
0457デフォルトの名無しさん
2005/05/31(火) 08:50:25http://www.geocities.jp/coa9999/index.html
http://parafla776.jog.buttobi.net/
http://www.geocities.jp/dr0p4u/how2/
http://members.at.infoseek.co.jp/to5422/actionscriptlesson/actionScript.htm
でFlashを作成した後、
ShockwaveFlash1.Movie := 'フラッシュファイル名';
ShockwaveFlash1.Play;
0458デフォルトの名無しさん
2005/05/31(火) 08:55:29usesに ShellApi を追加。 Pirivate エリアに
procedure ReceiveDropFiles(var Msg: TWMDropFiles); Message Wm_DropFiles;
を追加。implementation エリアに
procedure TForm1.ReceiveDropFiles(var Msg: TWMDropFiles);
const
MaxLength = 1024;
var
Files, i: Integer;
FileName: array[0..(MaxLength+10)] of Char;
begin
with Msg do
begin
Files := DragQueryFile(Drop, $FFFFFFFF, nil, 0);
for i := 0 to Files - 1 do
begin
DragQueryFile(Drop, i, FileName, MaxLength);
if Memo1.Lines.IndexOf(FileName) = -1 then
Memo1.Lines.Add(FileName);
end;
DragFinish(Drop);
end;
end;
を追加。Memoを乗せているフォームの OnCreate に
DragAcceptFiles(Handle, True);
を追加。ドロップの度に追加されるのが嫌なら、ReceiveDropFiles手続きの最初に「Memo1.Clear」を入れる事。これはTStlingListで有効なのでListBoxとかにも使える。
0459デフォルトの名無しさん
2005/05/31(火) 09:53:050460デフォルトの名無しさん
2005/05/31(火) 10:12:130461デフォルトの名無しさん
2005/05/31(火) 14:33:03どうなるか、なら分かります。
・・・アプリ作者が悲しみます。
0462デフォルトの名無しさん
2005/05/31(火) 15:05:53確かにその人が一生懸命書いたアイコンだったら悲しむかもしれませんね・・・
でもEXEのアイコンチェンジャーみたいなのを作りたいんですよ。どうにかなりませんか・・・?
0463デフォルトの名無しさん
2005/05/31(火) 15:10:44自作のDelphiアプリで他のEXEファイルのリソースを変更するプログラムを組みたいという意味?
それとも単に他のアプリのアイコンが気に食わないから変更したいということ?
0464463
2005/05/31(火) 15:14:58ttp://www.wilsonc.demon.co.uk/delphi.htm
にDelphi5/6/7/2005それぞれに対応したリソースコンポがあるよ。
そこそこ難易度高し・・・
0465デフォルトの名無しさん
2005/05/31(火) 15:20:56前者ですね。
>>464
英語ですか・・・ちょっと頑張ってみます。
0466デフォルトの名無しさん
2005/05/31(火) 15:54:15TOleContainerにワード文書を挿入して編集するプログラムを作成しているんですが、
最初の呼び出した時はワード文書を編集できます。
が、他にフォーカスが移動するとワードが編集できなくなってしまいます。
これってプロパティか何かで制御して常に編集できる状態にできないんですかね?
0467デフォルトの名無しさん
2005/05/31(火) 16:24:20Flashでもいいけど、より汎用性が高いのは
VideoForWindowsあたりでaviに圧縮エンコードすることかな。
確か、そんなことができるコンポーネントがあったはず。
かりになくても、自分でエンコード・クラス作るのは
そんなに難しくないよ。
0468デフォルトの名無しさん
2005/05/31(火) 18:12:060469デフォルトの名無しさん
2005/05/31(火) 18:40:390470デフォルトの名無しさん
2005/05/31(火) 18:53:03TImage.Picture.Bitmap.BitRate:=???;
0471デフォルトの名無しさん
2005/05/31(火) 19:54:150472デフォルトの名無しさん
2005/05/31(火) 20:12:50ビットレートとはあまり言わないかも。
色深数のことならPixelFormatでヘルプを調べるといいよ。
bmp := TBitmap.Create;
bmp.PixelFormat := pf24bit;
bmp.Height := bmp2;
bmp.Width := bmp2;
bmp.Assign(bmp2);
bmp.PixelFormat := pf8bit;
とかやれば8bitに減色されないかな?
0473質問
2005/05/31(火) 20:28:40アドレス00D5399Bでアドレス1C010ED5に対する書き込み違反が起きました。
との警告が出たのですが、何が原因でこの警告が出たのかわかりません。
どなたか教えてください。
0474デフォルトの名無しさん
2005/05/31(火) 20:35:48GetMemで確保した範囲を超えて書き込んだとか。
0475デフォルトの名無しさん
2005/05/31(火) 20:38:42ありがとうございました。
それを元に原因を探してみます。
0476デフォルトの名無しさん
2005/05/31(火) 23:32:18文字の下のイメージが消えてしまいます。
なんとか文字の下のイメージはそのままに文字を描画する方法はないでしょうか?
0477デフォルトの名無しさん
2005/05/31(火) 23:38:30Canvas.Brush.Style := bsClear;
0478476
2005/05/31(火) 23:42:33うわぁ恥ずかしい。
ヘルプ見て単純に白抜きになるんだと思ってました。
こんなつまらないことに答えていただきありがとうございます。
0479デフォルトの名無しさん
2005/06/01(水) 12:51:160480479
2005/06/01(水) 12:54:060481デフォルトの名無しさん
2005/06/01(水) 12:59:48ShowMessage('画像有り')
else
ShowMessage('画像無し')
0483デフォルトの名無しさん
2005/06/01(水) 17:44:24TIcon.Lordfromfileでicoファイルを読み込んだあとどうすればいいか分かりません。
と言うか、他のプログラムのリソース云々が分かりません。 自身のリソースしか弄れないんですが・・
0484デフォルトの名無しさん
2005/06/01(水) 17:48:32よく英語版を日本語版にする奴いるだろ?
それと同じようにできると思うよ。
0485デフォルトの名無しさん
2005/06/01(水) 17:54:36ResourceHacker とかですよね? でも仕組みが全く分からないんですよ
0486デフォルトの名無しさん
2005/06/01(水) 18:13:19そこまで知っててまったくわからんなんてありえんだろ
0487デフォルトの名無しさん
2005/06/01(水) 18:20:54ふつうにファイル開いて加工するしかないんじゃないかな?
0488464
2005/06/01(水) 19:36:02EXEファイルのPEヘッダの構造も理解しないといけないので
「くだすれ」のレベルではないです
0489487
2005/06/01(水) 19:51:58リンク先まで読んでなかった、スマソ
英語だからとかレスがあったので長文でリソースについて
解説してあるのかと思った。
つーか、コンポーネントの配布元が英語でもクラス名とかプロパティの名前で
だいたい使い方分かるよね・・・
ロシア語でもコードだけ拾ってヒントになったりすることもあるし
0490デフォルトの名無しさん
2005/06/01(水) 20:00:230491デフォルトの名無しさん
2005/06/01(水) 20:14:28自力で調査したり英語読んだり出来ない低能はDelphiなんて使って欲しくないね。
質が下がるから。
煽り抜きでまじVBかC#やるといいよ。
答える側にも我慢の限界ってものがあるわけで
あまり安易なノリで質問して欲しくないんだよ。
質問するならまずは関連しそうなヘルプを熟読して
さらにソースの検索かけて、さらにGoogleで最低10回はキーワードを変えて試してみて
それでも駄目なら初めてここで聞く位の努力をしてもらいたい。
0492464
2005/06/01(水) 20:15:47興味のある方はどうぞ
0493デフォルトの名無しさん
2005/06/01(水) 21:16:200494デフォルトの名無しさん
2005/06/01(水) 21:19:05http://homepage3.nifty.com/m-and-i/tips/utftosjis.htm
0495デフォルトの名無しさん
2005/06/01(水) 22:00:54例えば音楽ファイルを読み込んで、それを編集しつつ音楽プレイヤーに送るようなフィルターのようなソフトって難しいでしょうか?
0496デフォルトの名無しさん
2005/06/01(水) 22:23:06ファイルから読み込む。
メモリ上で編集する。
編集したデータを一時ファイルに書き出す。
クリエイトプロセスかシェルエクスキュートで一時ファイルを引数として目的のアプリを起動。
こんな流れではダメなのか。
0497デフォルトの名無しさん
2005/06/01(水) 22:26:31他のアプリから見れるってことはRAMディスクみたいなもんだから
相方も自作でないと難しいんでない?
普通にTempファイルをコピーして作る方が楽だし今時HDDもはやいし。
0498デフォルトの名無しさん
2005/06/01(水) 22:29:150499デフォルトの名無しさん
2005/06/01(水) 22:34:10直接の答えは知らんけど
各プレイヤーのプラグインとして実装するのが手っ取り早いんじゃないの。
あとは自分でプレイヤー作るとか。そうすればバッファいじり放題。
0500デフォルトの名無しさん
2005/06/01(水) 22:41:30クルマの方向操縦の輪。ステアリングともいう。
ドアの把手という意味もある。
0501デフォルトの名無しさん
2005/06/01(水) 22:54:13大げさだがTCPなどで実装すれば理論上あらゆるアプリケーションと通信できるが…
0502デフォルトの名無しさん
2005/06/01(水) 23:05:16>>497
大きなファイルの場合だと時間がかかってしまうかな?と思いまして・・
でもそれが一番楽に出来そうですね。
>>499
自分で作ったとして他のプレイヤー以上の操作性とか機能を作る自信が・・・
センスも無いしorz
>>501
処理したのをストリーミングで配信みたいな感じですかね?
難しそうだけど、理想に一番近いかも
0503デフォルトの名無しさん
2005/06/01(水) 23:05:26つーか、DirectShowのフィルタがまさにそれだろ。
自分でフィルタ書いて、フィルタグラフ構築の時にそのフィルタを追加して構築する。
だが、フィルタを作るのはそこらのソフトを作るのより何十倍もむずいと思うぞ。
0504デフォルトの名無しさん
2005/06/01(水) 23:40:59イベントを動的にセットする方法なんですけど、
仮に
Procedure AAA(Sender: TObject)
procedure BBB(Sender: TObject)
と2つメソッドを作っておいて、実行時に、
Button1.OnClick := AAA;
で1つ目のイベントは登録されるのですが、
C#で言うところの、
Button1.OnClick += AAA;
Button1.OnClick += BBB;
で両方ともイベントを登録できるみたいな事できないでしょうか?
なぜ、わざわざ2つメソッドをつくる必要があるかというと、
AAAはフォーム上にある十数個のコンポーネント共通の処理で、
BBBは1つのコンポーネントのみの処理だから分けているんです。
そうすれば、実際コードも見やすいと思うんですよ。。。
ちなみに、C#の方法をDelphiでやろうと思い、
Button1.OnClick := AAA;
Button1.OnClick := Button1.OnClick + BBB;
とするとコンパイルエラーでした。(そりゃそうですね。。。)
どなたか教えてください
0505504
2005/06/01(水) 23:42:30>C#で言うところの、
>Button1.OnClick += AAA;
>Button1.OnClick += BBB;
> .......................
>で両方とも「メソッド」を登録できるみたいな事できないでしょうか?
でした!
0506504
2005/06/01(水) 23:46:12>C#で言うところの、
>Button1.OnClick += new EventHandler(AAA);
>Button1.OnClick += new EventHandler(BBB);
>で両方とも「メソッド」を登録できるみたいな事できないでしょうか?
です!なんども訂正してすみません!
0507デフォルトの名無しさん
2005/06/01(水) 23:46:130508デフォルトの名無しさん
2005/06/01(水) 23:57:37これをマルチキャストっていうんですね〜。そういえば、去年MSDNみてたら書いていたような気が・・。 orz
改めて調べたら、やっぱり無理っぽいですね。
でも、自分Delphi7使いですが、 Delphi8は対応?? [Delphi-ML:81054] Delphi 8 の言語拡張
いずれにしても、1つのメソッド内で、クラスの型と名前で個別を特定してのゴリ押ししか無さそうですね。
いままで、Delphiでマルチキャストをする程の物を作ってなかったので、今回、勉強になりました。
ありがとうです!
0509Delフサギコ ◆A6VzDeLphI
2005/06/02(木) 01:24:00|゚Д゚彡 できんじゃねーの?
|⊂ミ
| ミ Borland - Delphi for .NET コンパイラプレビュー
|`J http://www.borland.co.jp/delphi/papers/dh7_comp/dh7_comp5.html
procedure TWinForm.Button1_Click(sender: System.Object; e: System.EventArgs);
begin
Include( Button2.Click ,MyButton1_Click);
Include( Button2.Click ,MyButton2_Click);
end;
procedure TWinForm.Button2_Click(sender: System.Object; e: System.EventArgs);
begin
MessageBox.Show('Button2_Click' , 'Caption');
end;
procedure TWinForm.MyButton1_Click(sender: System.Object; e: System.EventArgs);
begin
MessageBox.Show('MyButton1_Click!' , 'Caption');
end;
procedure TWinForm.MyButton2_Click(sender: System.Object; e: System.EventArgs);
begin
MessageBox.Show('MyButton2_Click!' , 'Caption');
end;
0510デフォルトの名無しさん
2005/06/02(木) 07:19:240511デフォルトの名無しさん
2005/06/02(木) 07:21:210512デフォルトの名無しさん
2005/06/02(木) 08:00:230513デフォルトの名無しさん
2005/06/02(木) 08:00:310514デフォルトの名無しさん
2005/06/02(木) 08:25:32(3)プログラミングで、ポインタへのポインタのこと。
0515デフォルトの名無しさん
2005/06/02(木) 09:02:37Windows上でウィンドウを管理するための(ややこしい・・)識別番号
0516デフォルトの名無しさん
2005/06/02(木) 09:18:14全ユーザーのスタートメニューに追加するか
カレントユーザーのスタートメニューだけに追加するか
を選択式にすることはできますか?
0517デフォルトの名無しさん
2005/06/02(木) 09:27:560518デフォルトの名無しさん
2005/06/02(木) 09:36:30innoにもついてるのかなと思いまして・・・
AlwaysUsePersonalGroup
という指定は見つけたのですがどうすれば選択式にできるのかが分からなくて。
0519デフォルトの名無しさん
2005/06/02(木) 09:37:32http://www.geocities.jp/mystral_kk/iskb.htm
ここあたりで探してみるとか
0521デフォルトの名無しさん
2005/06/02(木) 09:45:38http://www.google.co.jp/search?hl=ja&q=inno+setup&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=lang_ja
で役に立ちそうなサイト片っ端から見ていくしかないんじゃないの?
金有るならインストールシールド
0522デフォルトの名無しさん
2005/06/02(木) 09:58:18調べるのがメンドイだけで。
0523デフォルトの名無しさん
2005/06/02(木) 10:03:39[Tasks]と[Icons]セクション使えばできそうじゃない。
0524デフォルトの名無しさん
2005/06/02(木) 10:13:31inno使い出してからインストールシールドの性能の悪さとかにヘキエキ。
innoは誤動作しないし便利。
唯一の欠点はANSIでフォルダなんかにアクセスするから、
ANSIの言語設定が壊れたWindowsではフォルダアクセス失敗する。
なんて、当たり前か。
0525デフォルトの名無しさん
2005/06/02(木) 10:22:310526デフォルトの名無しさん
2005/06/02(木) 10:32:37俺が使ったことあるのは5年以上前のバージョンだったけど
あの頃はスクリプト記述がメンドイ分細かなところまで制御できたぞ
今は違うのかな
0527516
2005/06/02(木) 10:33:47>>521
拙作のフリーソフトなんでインストールシールドは大げさかなと・・・
>>522
禿同です。
>>523
その辺でできそうですよね・・・
0528516
2005/06/02(木) 11:40:49このMLのスレがそれなのかな・・・ふぅ
0529デフォルトの名無しさん
2005/06/02(木) 11:43:380530516
2005/06/02(木) 13:32:27SelectTasksLabel2の翻訳が何か違う感じ(翻訳者さんゴメソ)がしたのでついでに修正を。
[Languages]
Name: en; MessagesFile: "compiler:Default.isl"
Name: jp; MessagesFile: "compiler:Languages\Japanese.isl"
[Icons]
Name: "{code:GetGroupPath}\My Programs"; Filename: "{app}\project1.exe"
[Messages]
jp.SelectTasksLabel2=[name] インストールの追加オプションを選択して「次へ」をクリックしてください。
[CustomMessages]
en.InstallforAllUsers=&Everyone
en.InstallforCurUsers=Just &me
en.InstallforGroupDisc=Install for yourself, or for anyone who uses this computer.
jp.InstallforAllUsers=すべてのユーザー(&E)
jp.InstallforCurUsers=このユーザーのみ(&M)
jp.InstallforGroupDisc=現在のユーザー用か、またはすべてのユーザー用にインストールします。
[Tasks]
Name: InstallforAllUsers; Description: "{cm:InstallforAllUsers}"; GroupDescription: "{cm:InstallforGroupDisc}"; Flags: exclusive;
Name: InstallforCurUsers; Description: "{cm:InstallforCurUsers}"; GroupDescription: "{cm:InstallforGroupDisc}"; Flags: exclusive unchecked;
[Code]
function GetGroupPath(Param: String): String;
begin
if IsTaskSelected('InstallforAllUsers') then
Result := ExpandConstant('{commonprograms}\{groupname}')
else
Result := ExpandConstant('{userprograms}\{groupname}')
end;
0531デフォルトの名無しさん
2005/06/02(木) 14:09:10[Icons]
Name: "{userprograms}\{groupname}\My Program"; Filename: "{app}\project1.exe"; Tasks: InstallforCurUsers
Name: "{commonprograms}\{groupname}\My Program"; Filename: "{app}\project1.exe"; Tasks: InstallforAllUsers
これだけじゃダメなの?試してないけど・・・
0532516
2005/06/02(木) 15:04:25せっかくなんでinno作者(ですよね?)のコードを取り入れてみますた。
ttp://news.jrsoftware.org/news/innosetup/msg30399.html
0533デフォルトの名無しさん
2005/06/02(木) 16:27:16http://www2.big.or.jp/~osamu/Delphi/Tips/key.cgi?key=41
上にあるIntegerへのキャストはDelphi 6ではコンパイルエラーになってしまいます。
コンパイルオプションを変更してスルーする方法はあるかもしれないですが、
そういう手を使わずにやる方法はないでしょうか?
0534デフォルトの名無しさん
2005/06/02(木) 16:55:02集合型で定義している要素数によってキャストは変わります。
8個以内は Byte
16個以内は Word or Smallint
32個以内は Dword or Integer
0535デフォルトの名無しさん
2005/06/02(木) 16:56:05>>533のリンク先にあるソースコンパイルできたよ
0536533
2005/06/02(木) 19:38:31>>534さんの通りにByteキャストで通りました。
>>535
すいません、確認不足でした。
リンク先のコードはコンパイルできました。
が、こちらのテストコードでは集合の要素となる列挙型の定義を型の定義を
TDbit = 0..25; ではなく
TDbit = (hoge, foo, bar ... ) としていたので
コンパイルエラーが出たようです
ありがとうございました
0537デフォルトの名無しさん
2005/06/03(金) 00:10:57本読んだ?
それとも実際に自分の作りたいプログラム作成?
0538デフォルトの名無しさん
2005/06/03(金) 00:18:41↓
適当に改造したりしてDelphiに慣れる
↓
簡単な入門書を読む
↓
Delphiを色々触ってみる
↓
詳しい解説書を読む
漏れの場合
0539デフォルトの名無しさん
2005/06/03(金) 00:20:01俺は後者
0540デフォルトの名無しさん
2005/06/03(金) 00:21:54文法をある程度理解したら後は実践あるのみ
入門書とかのサンプルなんて、作っても全然面白くなかった
0541デフォルトの名無しさん
2005/06/03(金) 00:25:13入門書だと、必要な事は全部書いてあるから、「調べる」事が覚えられない。
0542デフォルトの名無しさん
2005/06/03(金) 00:29:26→ゲーム
→ツール
→ネットのTips漁る
→Delphiヘルプ、Win32APIヘルプ、MSDN等々を引くことが多くなる
→コンポーネントつくったりしてる
0543デフォルトの名無しさん
2005/06/03(金) 09:58:000544デフォルトの名無しさん
2005/06/03(金) 10:22:13その読み込めないBitmapをうPしてみて
0545デフォルトの名無しさん
2005/06/03(金) 10:32:400546デフォルトの名無しさん
2005/06/03(金) 10:36:25アルファベット順に自動ソートされないか?
あるいはdprファイルを直接開いて順番かえるとか
0547デフォルトの名無しさん
2005/06/03(金) 10:39:35こんなんでいいかな。
http://up.isp.2ch.net/up/56cadbeff22a.zip
0548デフォルトの名無しさん
2005/06/03(金) 10:44:57いんぽ
0549デフォルトの名無しさん
2005/06/03(金) 10:46:030550デフォルトの名無しさん
2005/06/03(金) 10:52:190551543
2005/06/03(金) 10:54:510552デフォルトの名無しさん
2005/06/03(金) 11:01:46Delphi6では自動でソートされましたが、Delphi7ではソートされないようです。
dprの順序変更しかないすかね・・。
0553デフォルトの名無しさん
2005/06/03(金) 11:02:53なんでソートされていないんだろう。
0554デフォルトの名無しさん
2005/06/03(金) 11:07:39アプリでBMPに多少の「方言」が付くことがあるんじゃないかな
バイナリエディタとBMPのフォーマットを見比べれば分かると思うけど
1バイトでもフォーマットに反していればDelphiはBMPとして認識しないだろう
0555544
2005/06/03(金) 11:09:00TNkDIBで読んでみたらOKでした。
とりあえず 'bmp'の処理もnkdibでさせるというのはどうでしょう
OpenPictureDialog等でもサポートさせたい場合は
nkdib.pasのInitializationで dib を登録しているところに同じように 'bmp'も追加してあげればよいです
0556デフォルトの名無しさん
2005/06/03(金) 13:17:33いやいや、Delphi の TBitmap が手抜きしてるんだよ。
0557デフォルトの名無しさん
2005/06/03(金) 13:23:120558デフォルトの名無しさん
2005/06/03(金) 14:29:53http://homepage1.nifty.com/MADIA/delphi/delphi_bbs/200409_04090090.html
0559デフォルトの名無しさん
2005/06/03(金) 19:02:20これをDelphiでできますか?
0560デフォルトの名無しさん
2005/06/03(金) 19:27:380561デフォルトの名無しさん
2005/06/03(金) 19:54:340562デフォルトの名無しさん
2005/06/03(金) 19:58:20何そのアイコンの位置って。
0563デフォルトの名無しさん
2005/06/03(金) 20:02:100564デフォルトの名無しさん
2005/06/03(金) 20:09:49はい。
0565デフォルトの名無しさん
2005/06/03(金) 21:20:07マルチ氏ね。
0566デフォルトの名無しさん
2005/06/03(金) 21:38:490567ななしへたぐらま ◆XcB18Bks.Y
2005/06/03(金) 22:52:21細かいことですがintegerは避けてLongWordとしたほうがよいでしょう.
Delphiではintegerは32ビット環境では32ビット整数ですが,
Delphi初代の16ビット環境では16ビット整数です.
今後出るであろう64ビット版では64ビット整数になることは十分に考えられます.
(cardinalも同様です)
またそうならなかったとしても扱うデータの長さが明確に決まっているときは
それが一目でわかるようにしておくのが得策です.
#ちなみに本来のPascalではintegerは16ビット整数みたいです.
0568デフォルトの名無しさん
2005/06/03(金) 23:13:23posじゃできませんか
0569デフォルトの名無しさん
2005/06/03(金) 23:17:49Stringの配列ではなくてTStringListに入れてIndexOfを使えば。
0570デフォルトの名無しさん
2005/06/03(金) 23:18:05TStringList を使った方がいいと思うけど…
普通に考えれば StrArray を string 型配列、見つけたい文字列を Sub として
for i := Low(StrArray) to High(StrArray) do
if AnsiPos(Sub, StrArray[i]) <> 0 then
begin
// i が Sub を持つ文字列のインデックス
end;
0571デフォルトの名無しさん
2005/06/03(金) 23:25:54TreeView にコピーしてそこから改めてデータを(この場合文字列)をとる必要があって以
下のようにしたのですが OK ボタンをクリックした場合はうまくいくのですが、サブフォ
ームの TreeView をクリックしたとき、エンターキーを押したときうまくいきません。
ChildForm には Ok ボタンと Cancel ボタンを貼り付けそれぞれの ModalResult に
mrOk と mrCancel を設定してあります。
ChildTree.Items.Assign(Form1.TreeView1.Items);
ChildTree.Items[i].Data := Form1.TreeView1.Items[i]; という関係
0572デフォルトの名無しさん
2005/06/03(金) 23:26:15AnsiIndexStr / AnsiIndexText
0573571& ◆6HGqJl7TD6
2005/06/03(金) 23:27:19var
Node: TTreeNode;
begin
Result := False;
with TChildForm.Create(Application) do
begin
try
if ShowModal = mrOk then
begin
Result := True;
Node := TTreeNode(ChildTree.Selected.Data);
S := TNodeData(Node.Data).ItemStr; //TNodeDataは独自のクラス
end;
finally
Free;
end;
end;
end;
0574デフォルトの名無しさん
2005/06/03(金) 23:27:310575571続き
2005/06/03(金) 23:27:51begin//これがダメ
if key = Chr(27) then
begin
key := Chr(0);
ModalResult := mrCancel;
Close;
end else if key = Chr(13) then
begin
key := Chr(0);
ModalResult := mrOk;//メインフォームでこれが反映されない
Close;
end
end;
procedure TChildForm.ChildTreeDblClick(Sender: TObject);
begin//これもダメ
ModalResult := mrOk;//メインフォームでこれが反映されない
Close;
end;
0576デフォルトの名無しさん
2005/06/03(金) 23:31:490577デフォルトの名無しさん
2005/06/03(金) 23:44:52ModalResult設定したあとCloseしてるからだよ。ModalResultは設定するだけでフォーム閉じるよ。
0578デフォルトの名無しさん
2005/06/03(金) 23:50:29AnsiIndexTextで解決しましたありがとう
0580デフォルトの名無しさん
2005/06/04(土) 00:29:36> 今後出るであろう64ビット版では64ビット整数になることは十分に考えられます.
いや、32ビットのままです。
0581デフォルトの名無しさん
2005/06/04(土) 00:48:38ちゃんと時計みたいに表示させたいんですが
どうプログラムを書けばいいのでしょうか?
0582デフォルトの名無しさん
2005/06/04(土) 00:59:59どっち?
0583デフォルトの名無しさん
2005/06/04(土) 01:07:140585デフォルトの名無しさん
2005/06/04(土) 04:05:470586デフォルトの名無しさん
2005/06/04(土) 04:52:23タブコントロールのタブの文字列の色を変えられないでしょうか?
TabNode.Font.Color := clBlue;
ではだめでした。
0587デフォルトの名無しさん
2005/06/04(土) 08:46:550588デフォルトの名無しさん
2005/06/04(土) 10:18:37OwnerDraw を True にして
procedure TForm1.TabControl1DrawTab(Control: TCustomTabControl;
TabIndex: Integer; const Rect: TRect; Active: Boolean);
begin
with TabControl1.Canvas do
begin
Font.Color := clRed;
TextOut(Rect.Left+5, Rect.Top+5, TabControl1.Tabs[TabIndex]);
end;
end;
0589デフォルトの名無しさん
2005/06/04(土) 18:01:27釣りかな?
マジレスしておくと、iTuneの様にではなくて、何をどうしたいのかを具体的に書き出してみるといいよ。
そうすれば自力で実装できることと調べればわかりそうなこととどこから調べたらいいのかわからないことがはっきりする。
0591デフォルトの名無しさん
2005/06/04(土) 18:25:28フォームにButtonをおいてKeyDownイベントに
procedure TForm1.Button1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
ShowMessage('押されたよ');
end;
を記述したんですが
カーソルキー押下したときはイベントが発生しないのですがそんなもん何でしょうか?
<(_ _)>
0592591
2005/06/04(土) 18:29:10Buttonのコントロールってカーソルキーで移動できるんですね
なのでカーソルキーを押したときはイベントが発生しないのでしょうか
0593デフォルトの名無しさん
2005/06/04(土) 18:31:29@゜)つ ttp://www.asahi-net.or.jp/~HA3T-NKMR/vcl3-3.htm
0594デフォルトの名無しさん
2005/06/04(土) 18:32:320595593
2005/06/04(土) 18:35:11あとこっちも
@゜)つ ttp://www.borland.co.jp/qanda/delphi/d0000149.html
0596591
2005/06/04(土) 18:57:24593のページはちょっと難しいです
WM_KEYDOWNのメッセージがButtonコントロールまで、とどかないみたいですね
これは直接WM_KEYDOWNのメッセージをとって・・・・処理なのかな
やりたかったことは
EditとかComboboxとかのコントロールの移動をカーソルキーで移動させたかったのです
EditやComboboxはうまくいったのですがFormにPanelを2つ置いて1つにはEditとComboboxを置いて
もう一つのPanelにButtonを置いてみてカーソルキーで移動させるとButtonのところで次のコントロール
にカーソルキー移動しなくなりました
594
の方法もよくわからないですけどActiveControlってのでHelpを引きながら考えてみます
595のホープページでPanelがでてきたので おぉーーと思ったんですけど
なんのことか理解できないです
あぁわからないことだらけ _(_ _)ゞ
0597591
2005/06/04(土) 18:58:41ありがとうございました
0598ななしへたぐらま ◆XcB18Bks.Y
2005/06/04(土) 20:26:15[Ctrl]+[Space]で出てくるやつならこれを右クリックしてみてください.
(昔niftyで見た情報の受け売りですが)
>>580
あららそうなんですか.情報ありがとうございます.
>>591,592,596
●アクションリストを使う方法.
・フォームにアクションリストコンポを置いてダブルクリック.
・ダイアログが出てくるので[Insert]キーかダイアログ上部左端の追加ボタンを押す.
・アクションオブジェクトが追加されるのでオブジェクトインスペクタで…
・Nameプロパティを適当な名前に変える(ここでは"DownKeyAction"とした)
・ShortCutプロパティに Down をセット
・OnExecuteをダブルクリックしてイベントハンドラを記述.以下は例.
procedure TForm1.DownKeyActionExecute(Sender: TObject);
begin
{ Button1にフォーカスがあるときだけ処理を行う }
if ActiveControl = Button1 then
ShowMessage('↓キーが押されたぜ!');
end;
0599デフォルトの名無しさん
2005/06/04(土) 20:46:13ボタンクリックなどのイベントが走った後に
ActiveControl := nilの状態にしたいのです。
0600ななしへたぐらま ◆XcB18Bks.Y
2005/06/04(土) 21:37:33どこにもフォーカスが残らないとまずいので
(キーボードで操作しているユーザーは困ると思う)
Edit1.SetFocus とか,ComboBox1.SetFocus とかでほかのコンポにフォーカスを移しては?
0601599
2005/06/04(土) 21:43:31ああ、なるほど。すごい説得力です。
そうかキーボードユーザーとかまで考えてなかった。
どおりでプロパティでフォーカスが残らない設定にできないわけだ・・。
0602デフォルトの名無しさん
2005/06/05(日) 00:35:300603デフォルトの名無しさん
2005/06/05(日) 00:58:41TPaintBox.CanvasがあるんだからTBitmapにでもコピーして保存すればいいだけじゃ?
0604デフォルトの名無しさん
2005/06/05(日) 00:58:48TBitmap作って、Canvas間でCopyRectしてSaveToFile
0605デフォルトの名無しさん
2005/06/05(日) 02:29:410606デフォルトの名無しさん
2005/06/05(日) 11:53:04くらい簡単なライブラリないっすか?
0607デフォルトの名無しさん
2005/06/05(日) 12:13:020608デフォルトの名無しさん
2005/06/05(日) 17:45:35CUP使用率がいやに高いんだけど。
PaintBoxにDivX動画出力時:20〜30%
オーバーレイ使用時:60%〜
縮小を伴うとき:〜100%(コマ落ち発生)
まあ、自分のRGB->YUV変換のコードがダメなのはいいとして、
縮小したとき、なんでCPU使用率が上がるんだろう?
あれってビデオカード内で処理されるんじゃなかったっけ?
TDirectDrawOverlayの使い方って、どこかに出てないでしょうか?
0609デフォルトの名無しさん
2005/06/05(日) 18:30:32要するにTStringList.Strings[x]と同じようなものなんですけど
CmdLineとかで結局需要がありそうだからあるかなーと思って探してみたものの見当たらない。
ないなら自分で作るつもりですが、Delphi付属のルーチンが既にあるなら
そっちの方が性能がいいだろうと思いまして
0610デフォルトの名無しさん
2005/06/05(日) 18:37:20普通にTStringList.Textに代入ってのは駄目なん?
0611デフォルトの名無しさん
2005/06/05(日) 18:40:35DelってDirectShowつかえんの?
0613デフォルトの名無しさん
2005/06/05(日) 18:49:36じゃあ無理。x, x+1の座標自前で検索して間を切り出すしかない
0614デフォルトの名無しさん
2005/06/05(日) 19:07:45改行コード、全角文字、半角文字をチェックするだけでいいから大して
手間もかからない。
0615デフォルトの名無しさん
2005/06/05(日) 19:35:54TStringListのソースみりゃいいやん
0616デフォルトの名無しさん
2005/06/05(日) 19:37:090617デフォルトの名無しさん
2005/06/05(日) 19:41:090618デフォルトの名無しさん
2005/06/05(日) 19:42:310619デフォルトの名無しさん
2005/06/05(日) 21:16:580620608
2005/06/05(日) 21:24:22使えるんじゃないの? 結構有名なDSPackってあるし。
ただ、ここではDirectDrawなんだが・・・
DelphiXって開発終了だから、資料がなくて困る。
TDirectDrawOverlayの使い方については、
同梱のHelpを含めて、使い方がまったく書かれてない。
ただ、堀さんが以前、TMpegEncでDelphiXのオーバーレイと
DirectSoundは使ってるって言ってたから、使い方次第では
正常に動作すると思うんだけど。
ここ1、2週間、この問題で頭が煮詰まってしまった・・・
0621デフォルトの名無しさん
2005/06/05(日) 22:55:44をまづは見ろ
というのはFAQだな
0622デフォルトの名無しさん
2005/06/05(日) 23:42:02他の言語みたいにオンラインのマニュアルないの? アホらしくてやってられないよ。
http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/
http://www.python.jp/doc/release/lib/lib.html
http://www.ruby-doc.org/core/
0623デフォルトの名無しさん
2005/06/05(日) 23:44:460626デフォルトの名無しさん
2005/06/06(月) 14:15:542006/13/32 といった変な日付を入力するとDelphiのエラーが出て
プログラムが終了してしまいます。
変な日付が入力された時は、再入力させたいのですが、
どうすればよいのでしょうか
超初心者ですが、よろしくおねがいします。
0627デフォルトの名無しさん
2005/06/06(月) 14:53:22try〜exceptで例外を拾って再入力を促すメッセージ表示すればいいんじゃないの
0628デフォルトの名無しさん
2005/06/06(月) 15:40:33どのイベントに書けばいいか、わからないです
(´・ω・`)ごめんなさい
0629デフォルトの名無しさん
2005/06/06(月) 15:54:130630デフォルトの名無しさん
2005/06/06(月) 16:23:55ありがとうございます、エラーでなくなりました。
これから、エラーが出た時に、どうするか色々と勉強してみます。
0631626
2005/06/06(月) 17:03:09エラーが出なくなったのですが、エラーチェックのタイミングを
入力→Tabキー→(このタイミングでチェック)→次の項目
としたいのですが
OnChangeイベントでは、1文字入力ごとにイベントが発生してしまい
OnExitでは、チェックの前にDelphiのエラーが表示されます
「'2005/05/41'は日付または時刻ではありません 」
どうすればいいでしょうか (つ∀`)
0632デフォルトの名無しさん
2005/06/06(月) 17:58:06直接TDBEditに入力するのではなくて、TDBEditの上に普通のTEditを表示して
入力された文字が正しいかコードでチェックしてからDBコンポーネントに渡すようにしたらどう?
0633デフォルトの名無しさん
2005/06/06(月) 19:01:120634デフォルトの名無しさん
2005/06/06(月) 20:22:34例えば「hoge1,hoge2,hoge3の3つの文字列を全て含む場合そのアイテムを選択する」という風にしたい
のですが。どうかよろしくお願い致しますm(_ _;)m
0635デフォルトの名無しさん
2005/06/06(月) 20:42:17procedure TForm1.Button1Click(Sender: TObject);
var
i : Integer;
begin
for i := 0 to ListBox1.Count do
begin
if (pos('hoge1',ListBox1.Items[i])<>0)
and
(pos('hoge2',ListBox1.Items[i])<>0)
and
(pos('hoge3',ListBox1.Items[i])<>0)
then ListBox1.Selected[i] := True;
end
end;
こんな感じかな。どういう実装をしたいのかが今ひとつ不明なのではずしているかもしれません。
0636デフォルトの名無しさん
2005/06/06(月) 20:44:03AnsiPosにしとけ
0637デフォルトの名無しさん
2005/06/06(月) 21:28:120638デフォルトの名無しさん
2005/06/06(月) 21:32:450639634
2005/06/06(月) 21:35:530640デフォルトの名無しさん
2005/06/06(月) 22:11:080641631,626
2005/06/06(月) 22:59:30OnValidateイベントをようやく発見できました
とりあえず、イベントのタイミングを調べるため
ShowMessage('通ったよ');
と書いてみたのですが、
日付のエラーの時は、Delphiのエラーが先に表示されました
( ´Д⊂
0642ななしへたぐらま ◆XcB18Bks.Y
2005/06/06(月) 23:25:50× for i := 0 to ListBox1.Count do
○ for i := 0 to ListBox1.Count - 1 do
単なる書き忘れだと思いますが重要ですので.
0644デフォルトの名無しさん
2005/06/06(月) 23:41:41いちばんやすくTChart使えるのはいくらですか??
0645デフォルトの名無しさん
2005/06/07(火) 02:29:04Cでいうところの__DATE__マクロに相当する機能ってないですか?
コンパイルした日付をexeに埋め込んでくれるような機能です。
PEヘッダにコンパイル日時のフィールドがあるんですが、Delphi6でコンパイルした
ものは、一定値($2a425e19)が埋め込まれてしまうようです。
bcb6では、コンパイル日時がちゃんと入るんですが。
0646デフォルトの名無しさん
2005/06/07(火) 02:52:11MSChartを頑張って使えばいいと思うよ
0647デフォルトの名無しさん
2005/06/07(火) 04:12:37せめて名称だけでも分からないと調べようがない orz
0648デフォルトの名無しさん
2005/06/07(火) 04:16:100649デフォルトの名無しさん
2005/06/07(火) 04:39:19え・・?
0650デフォルトの名無しさん
2005/06/07(火) 10:20:39「ボタン1」 「ボタン2」
これを
「ボタン1」「ボタン2」
とピッタリくっつけたいときは、どうすればいいですか?
0651デフォルトの名無しさん
2005/06/07(火) 10:32:480652デフォルトの名無しさん
2005/06/07(火) 10:53:190653デフォルトの名無しさん
2005/06/07(火) 10:56:190654デフォルトの名無しさん
2005/06/07(火) 11:07:450655デフォルトの名無しさん
2005/06/07(火) 12:56:03無料なの? 使い方のお勧めサイトあります?
おねがいします。
0656デフォルトの名無しさん
2005/06/07(火) 13:17:500657デフォルトの名無しさん
2005/06/07(火) 13:30:550658デフォルトの名無しさん
2005/06/07(火) 13:41:23ついてウザイんですけどこれってどうやって消すのでしょうか?
0659デフォルトの名無しさん
2005/06/07(火) 13:42:53Auto・・グフッ・・・
0660658
2005/06/07(火) 13:54:00TPopupMenuのAutoHotKeysをmaManualにするんですね!
追加した個別メニューのそれを変えても変化なかったもんで
とまどってしましました。ありがとうございました!
0661デフォルトの名無しさん
2005/06/07(火) 15:27:42http://onigiri.s3.xrea.com:8080/delphi/index.php?DeCal%2FMANUAL10G
0662デフォルトの名無しさん
2005/06/07(火) 16:54:55デルファイ初めてダウソしてインスコしたんだけど
デスクトップにもスタートのとこにもなんも出ないよ
どこにデルファイのプログラム入ってんですか?
あと段階的に教えてくれてるサイトもキボンヌ
0663デフォルトの名無しさん
2005/06/07(火) 17:55:420664デフォルトの名無しさん
2005/06/07(火) 17:57:090665デフォルトの名無しさん
2005/06/07(火) 18:24:40シー コロン エンマーク プログラムファイルズ エンマーク ボーランド エンマーク デルファイロク くらいにはいっているはずなんだが。
0666デフォルトの名無しさん
2005/06/07(火) 18:28:010667デフォルトの名無しさん
2005/06/07(火) 18:31:48$ ls
test.pas
$ dcc test.pas
$ chmod 777 test
$ test
hellow Delphi World!
という感じ。
0668デフォルトの名無しさん
2005/06/07(火) 18:33:430669デフォルトの名無しさん
2005/06/07(火) 18:47:37開いてしまうんですけど。。
0670デフォルトの名無しさん
2005/06/07(火) 18:48:59プロパティを見てください。
0671デフォルトの名無しさん
2005/06/07(火) 18:58:29その場合、SHBrowseForFolderを使えば良い
APIが嫌ならFolderDialogでググレばコンポが見つかる
0672デフォルトの名無しさん
2005/06/07(火) 19:21:30スタートメニューにショートカットがあると思うが・・・
実体はProgram Files\Borland\Delphi6\Bin\Delphi32.exeかな(たぶん)
> あと段階的に教えてくれてるサイトもキボンヌ
http://onigiri.s3.xrea.com:8080/delphi/index.php?cmd=read&page=%A5%EA%A5%F3%A5%AF%2F%A4%BD%A4%CE%A3%B1#content_1_6
0673669
2005/06/07(火) 19:31:05>>670
プロパティのどこですか?optionsのどれかですか?
>>671
SHBrowseForFolderでググってみます。
正直。。もっと簡単にはできないんですよね?
0674デフォルトの名無しさん
2005/06/07(火) 19:32:46GoogleでTSelectFolderDialogを検索汁
0675669
2005/06/07(火) 20:33:45ありがとうございます。まさにこういうのが欲しかったんです!
ってダウンロードしたんだけど、2005非対応みたい??
readmeにコンポーネントのインストールって書いてあるけど
2005にはコンポーネントのインポートしかみあたらないんですよね。。
で、聞いてくるファイルもpasじゃなくてdllだったりして
全然わかりません(笑)パッケージとかはdpkってファイルで
できるみたいですけど。どなたか教えてください。
0676デフォルトの名無しさん
2005/06/07(火) 20:38:220677デフォルトの名無しさん
2005/06/07(火) 20:40:390678デフォルトの名無しさん
2005/06/07(火) 20:41:440679デフォルトの名無しさん
2005/06/07(火) 21:23:40Delphi2005のコンポーネントのインストールについては
http://homepage2.nifty.com/Mr_XRAY/Delphi/plSamples/CompInstall.htm
0680669
2005/06/07(火) 21:23:44うう。2005は購入しちゃダメだったの?(+_+)
>>677
OpenDialogっぽいのがよかったんです。実は
ofAllowMultiSelecにして任意のファイルとフォルダを
tstringで取得できたらなーと思ってたので。
README呼んだ限りではTSelectFolderDialogが
近かった気がするんだけどなー。あきらめます。。。
0681デフォルトの名無しさん
2005/06/07(火) 21:27:32Delphiはそれができる言語です。
0682デフォルトの名無しさん
2005/06/07(火) 21:48:35自作できるならここで聞かないでしょ。
0683デフォルトの名無しさん
2005/06/07(火) 21:49:05TOpenDialog で何が不足なの?
0684デフォルトの名無しさん
2005/06/07(火) 21:49:420685デフォルトの名無しさん
2005/06/07(火) 22:07:21ドライブコンボボックスとディレクトリリストボックスあたりで自作したほうがわかりやすいんじゃないか?
0686669
2005/06/07(火) 22:13:19イメージは固まってるんだけどもがいてまーす(笑)
>>683
ファイルは取得できるけどディレクトリが取得できなくないですか?
たとえば、1つのディレクトリを選択したいんだけどボタン押すと
選択されないで開いちゃうんですよね。
>>684
SelectDirectryですよね???
2005でのコンポーネント作成について調べて見ます。。
0687デフォルトの名無しさん
2005/06/07(火) 22:18:36ShellListView使えば良くない?
0688デフォルトの名無しさん
2005/06/07(火) 22:19:37OpenDialogで選択されたファイルにExtractFilePathかけるんだっけ?
漏れは経験無いけど、そうやってディレクトリ選択ダイアログに代用してる人が居るって聞いたことがあるよ。
0689デフォルトの名無しさん
2005/06/07(火) 22:19:43Synchronizeを使用するという話ですが、VCLコンポーネントっていうのは具体的に
何を指すんでしょうか?コンポーネントパレットにあるもの?それともクラスすべて?
例えば、TStringListとかTBitmapとかは、使う時にSynchronizeする必要は
あるんでしょうか?
0690デフォルトの名無しさん
2005/06/07(火) 22:26:40メッセージ処理が必要ないものは Synchronize しても意味無いし。
0691デフォルトの名無しさん
2005/06/07(火) 22:30:30また、例えば TStringList を Form1.Memo1.Lines.Assign() などで使う場合は、そのときだけ
Synchronizeするばいい。要は、他スレッドに割り込むときは、どんな場合も Synchronizeする必要がある。
0692デフォルトの名無しさん
2005/06/07(火) 22:32:53未定義の識別子 : 'LVM_***'
とでてきます。
usesに何か足りないんだと思いますが、何が足りないんでしょうか?
0693デフォルトの名無しさん
2005/06/07(火) 22:34:26CommCtrl;
0694デフォルトの名無しさん
2005/06/07(火) 22:35:570695デフォルトの名無しさん
2005/06/07(火) 22:37:300696デフォルトの名無しさん
2005/06/07(火) 22:38:03できました。
CommCtrlだったんですね。
Messagesだと思ってました。
0697デフォルトの名無しさん
2005/06/07(火) 22:38:39パッチにソースが付くなんて某らしくておもしろい
0698デフォルトの名無しさん
2005/06/07(火) 22:45:21レスどもです。
すると、俺が挙げた例以外でも、VCLコンポーネントだろうとメッセージ処理の絡まないプロパティとかであれば
Synchronizeしなくても実は問題ないって事ですかね?
0699デフォルトの名無しさん
2005/06/07(火) 22:54:34これ、絡むかどうか見極めるのは結構面倒だけど、確信できるならそのとおり
0700デフォルトの名無しさん
2005/06/07(火) 22:55:28そのプロパティーには他スレッドはアクセスしない、という条件がつくけど
0701デフォルトの名無しさん
2005/06/07(火) 22:56:400702669
2005/06/07(火) 23:01:05ShellListViewでhelp検索しても何もでてこないけど
あとで調べてみます!
不評の2005で
新規作成-パッケージ
プロジェクトに追加で
ttp://hp.vector.co.jp/authors/VA029585/VCL/SelectFolder/index.html
からダウンロードしたPasファイルを指定。
プロジェクトマネージャーの右クリックでインストール
ツールオプション-ライブラリパスにダウンロードしたフォルダを指定
DELPHIを再起動(保存しなくてもいいみたい)
とやったらコンポーネント(dialogにいるよ)追加できました!
こういう使い方は作者さんに言わなきゃ怒られるのかなー?
で、、、
ふつーに動いたけどshowmodalで表示したフォーム上では
ダイアログがでてこないよー(笑)
でもできたので皆さんありがとです![解決]
0703デフォルトの名無しさん
2005/06/07(火) 23:04:29そうだね。Synchronize がメッセージ処理を同期する、という意味では、アクセス相手が
メッセージ処理をするかどうかは関係あるけど。
0704デフォルトの名無しさん
2005/06/07(火) 23:07:240705デフォルトの名無しさん
2005/06/08(水) 05:19:43で、Synchronizeの使いどころとは関係あるのは何?
0706デフォルトの名無しさん
2005/06/08(水) 15:06:16InitialDirプロパティて指定した場所から、移動
出来ないようにしたいのですがどうしたら良いですか?
0707デフォルトの名無しさん
2005/06/08(水) 18:11:540708デフォルトの名無しさん
2005/06/08(水) 18:18:220709デフォルトの名無しさん
2005/06/08(水) 18:48:36教えてください。
0710デフォルトの名無しさん
2005/06/08(水) 19:07:450711デフォルトの名無しさん
2005/06/08(水) 19:09:46宿題スレ池。それから仕様が意味不明なんでまずは日本語でアルゴリズムを書き出してみろ。
0712デフォルトの名無しさん
2005/06/08(水) 20:02:214で割り切れたら・・・余りが出たら・・・みたいな話なんじゃないか。
0713デフォルトの名無しさん
2005/06/08(水) 20:09:540714デフォルトの名無しさん
2005/06/08(水) 20:23:05100で割り切れる年は閏年ではない
ただし400で割り切れる年は閏年
((X mod 4 = 0) and (X mod 100 <> 0)) or (X mod 400 = 0)
0715デフォルトの名無しさん
2005/06/08(水) 20:49:17冬は間の年だっけ?
0716デフォルトの名無しさん
2005/06/08(水) 21:03:25すいませんでした。
0717デフォルトの名無しさん
2005/06/08(水) 23:01:06するにはどうしたらいいのでしょう? ヘルプに
fmShareExclusive ほかからの読み書きを禁止するとあるので
ReadF := TFileStream.Create(FName, fmOpenRead or fmShareExclusive);
としてみましたがいくつでも開いてしまいます。
「TFileStream 排他制御」でぐぐったらここの過去スレが出てきましたが、読めませんで
した(^^;)。
0718デフォルトの名無しさん
2005/06/08(水) 23:15:14fmShareExclusive他のアプリケーションはファイルを開くことができない
fmShareDenyWrite他のアプリケーションは読み出し用にファイルを開くことはできるが,書き込み用に開くことはできない
fmShareDenyRead他のアプリケーションは書き込み用にファイルを開くことはできるが,読み出し用に開くことはできない
0719デフォルトの名無しさん
2005/06/08(水) 23:19:19今、実際に試してみたけど2つ目からちゃんとEOpenErrorになったぞ。
0720デフォルトの名無しさん
2005/06/08(水) 23:45:390721デフォルトの名無しさん
2005/06/08(水) 23:58:370722デフォルトの名無しさん
2005/06/09(木) 00:02:07簡単にグラフを作れるようにするのがDelphiの役目では?
0723デフォルトの名無しさん
2005/06/09(木) 00:05:530724721
2005/06/09(木) 00:11:28ほんとですか〜。
データベースソフトを作ろうと思っててVBにしようかと思ったらVBはグラフ作る
のは激しくムズイらしく、しかしDelphiは学習するのにデータベースの参考書ないし
でかれこれどちらにしようか半年も悩んでいます…。
0725デフォルトの名無しさん
2005/06/09(木) 00:17:10ホントか?腐るぐらいあったような気がするけど
0726デフォルトの名無しさん
2005/06/09(木) 00:23:39これは?
ttp://www.amazon.co.jp/exec/obidos/ASIN/4844316346/
0727ああ、そうなんです
2005/06/09(木) 00:32:36いや、そうなんです。
自作のアプリで2つ以上開きたくないのです。これを防ぐにはどうしたらいいのでしょう?
0728デフォルトの名無しさん
2005/06/09(木) 00:53:070729デフォルトの名無しさん
2005/06/09(木) 00:53:17多重起動禁止にする。
0730721
2005/06/09(木) 00:53:59しかしDelphiよさそうですねー。
こりゃ一からDelphiについて調べなおそうかな。
0731デフォルトの名無しさん
2005/06/09(木) 00:55:300732デフォルトの名無しさん
2005/06/09(木) 01:04:14何回も読み直していろいろやってみたが、やっぱり意味がわからない。
どういうこと?
自作アプリAでファイルCを開く
自作アプリBでファイルCを開く←これを禁止したい
こういう意味にとったがfmShareExclusiveを設定してればやっぱり2つ目はエラーになるよ?
0733デフォルトの名無しさん
2005/06/09(木) 01:11:180734デフォルトの名無しさん
2005/06/09(木) 01:12:13幾らでも制御できそうなものだが、何か問題でもあるのだろうか
0735721
2005/06/09(木) 01:20:370736デフォルトの名無しさん
2005/06/09(木) 01:32:120737デフォルトの名無しさん
2005/06/09(木) 01:53:49頭悪くてすいません
まず自作アプリはSDIです。
最初起動してhoge.datを開きます。
次にもう一つ自作アプリを起動してhoge.datを開こうとしても開けないようにしたいのです。
> 自アプリ内の操作なら変数使えば
タブ型アプリなら確かに変数を使って簡単にできると思いますけど普通のSDIだとど
うしていいかわからないのです。
ウィンドウキャプションにファイル名を表示さているので後に開いたウィンドウから先
に開いたウィンドウキャプションにアクセスする方法がわかればできると思うのですが。
0738デフォルトの名無しさん
2005/06/09(木) 01:58:370739デフォルトの名無しさん
2005/06/09(木) 02:00:47ものすごく姑息な解決策を教えてあげよう。
最初にhoge.datを開いたアプリが目印を残す。
例えばflag.txtを作るだけでいい。
二番目以降に起動したアプリは if not FileExists('flag.txt') then AssignFile(F, 'hoge.dat'); とする。
最初にhoge.datを開いたアプリが終了するときはflag.txtを掃除しておくこと。
0740デフォルトの名無しさん
2005/06/09(木) 02:23:58> ものすごく姑息な解決策を教えてあげよう。
ま、単なる目印だからそれで十分だと思いますが、あちこち捜しまくってもう少しましな方法を見つけました。
function IsMyFileOpen(FName: string): Boolean;
var
aCaption: string;
Wnd: HWND;
begin
aCaption:= AnsiUpperCase(FName);
Wnd := FindWindow('TMyForm', PChar(aCaption));
Result := Wnd > 0;
end;
0741デフォルトの名無しさん
2005/06/09(木) 02:32:050742デフォルトの名無しさん
2005/06/09(木) 03:22:430743デフォルトの名無しさん
2005/06/09(木) 03:57:400744デフォルトの名無しさん
2005/06/09(木) 04:02:160745デフォルトの名無しさん
2005/06/09(木) 04:03:420746デフォルトの名無しさん
2005/06/09(木) 06:51:320747デフォルトの名無しさん
2005/06/09(木) 07:35:080748デフォルトの名無しさん
2005/06/09(木) 08:50:060749デフォルトの名無しさん
2005/06/09(木) 09:07:41どうすればいいのでしょうか?
プログラムで、自分のPC内に保存されているクッキー情報を
取得したいんです・・・
Response を使えば出来るのかと思っていろいろやってみましたが
よくわかりませんでした。
0750デフォルトの名無しさん
2005/06/09(木) 11:37:120751デフォルトの名無しさん
2005/06/09(木) 12:48:32ヒントありがとう・・・いろいろやってみたけど
取得してあるクッキー情報から直接取得出来るのだろうか
なんか、出来なさそうなんだけど(漏れには敷居が高いのかも)
0752デフォルトの名無しさん
2005/06/09(木) 18:46:35データとして保持してないと駄目だな。
modで簡単に得られるもんじゃない(4年毎とは限らない)。
最近では冬大会が,1992年、1994年と2年間しか間隔がない。
0753デフォルトの名無しさん
2005/06/09(木) 18:51:430754ななしへたぐらま ◆XcB18Bks.Y
2005/06/09(木) 19:36:11・複数の文書を扱うアプリを作りたい
・それぞれの文書は独立したフォームに表示させる
・アプリ全体で使うデータがありhoge.datというファイルに保存している.
ということでしたら,同じアプリをいくつも起動するのではなくて,
ひとつのアプリで複数の文書フォームを表示させるほうがよいと思います.
1. アプリ全体の情報は文書フォームから分離してデータモジュールに格納する.
2. 文書フォームから別の文書フォームを開くようにする
3. 同じアプリを二重起動しようとしたらあとから起動した方は終了させて
元のアプリは新しい文書フォームを開く.
1. は文書に特有の処理以外はすべてデータモジュールに移し,
文書フォームのuses節にこのデータモジュールを定義したユニットを追加.
(文書フォームで[ファイル]→[ユニットを使う]が楽)
2. は文書フォームの名前が DocForm だとしたら TDocForm.Create(Application) .
ただしDelphiでは最初に開いたフォームがメインフォームとなり
最初に開いた文書フォームを閉じるとアプリケーションが終わってしまうので,
ダミーのフォームを用意します.
ダミーフォームのOnActivateイベントに ShowWindow(Handle, SW_HIDE) と書いてこのフォームが表示されないようにします.
そしてこのフォームをメインフォームに指定します.
また文書フォームのVisibleをTrueにします.
(これで起動時に文書フォーム1個だけが表示されます)
3. はやり方がわからないのでほかの方にお任せします.
0755デフォルトの名無しさん
2005/06/09(木) 20:53:47変数に特定のフラグが含まれているならその特定のフラグを削除し
変数に特定にフラグが含まれて居ないならなにもしない。って演算はどうやるんですか?
今のところは
if (変数 and 特定のフラグ)=特定のフラグ then
変数 := 変数 xor 特定のフラグ;
って書いてるんですけど
もっと簡単に済ませられませんか?
0756デフォルトの名無しさん
2005/06/09(木) 20:59:22要するにフラグを落としたいってこと?
変数 := 変数 and not(特定のフラグ) じゃなくて?
0757デフォルトの名無しさん
2005/06/09(木) 20:59:540758755
2005/06/09(木) 21:03:15おおお、ありがとうございます。
まさにそれです。
手持ちの本の論理演算のところを見ても、フラグ落とし?は載ってなかったのです。
助かりました。
0759デフォルトの名無しさん
2005/06/09(木) 23:07:40それをフックしたいのですが。
0760デフォルトの名無しさん
2005/06/09(木) 23:23:110761デフォルトの名無しさん
2005/06/09(木) 23:31:44WininetのFindFirstUrlCacheEntryで出来ませんか?
的はずれだったら無視してください。
0762デフォルトの名無しさん
2005/06/09(木) 23:32:520763デフォルトの名無しさん
2005/06/10(金) 00:24:23自作クラスを作って、オブジェクトリストにAddしたあとで、
そのうちのひとつを取り出すときに、メモリリークが起きているらしい
自作クラス→TObject、 TObject→自作クラス って相互変換する
個所が多くて、そこがうまくいかない クロスキャストってやつだろうか
機能的にはうまくいっているのに、メモリ使用量がガンガンあがっていく
0764デフォルトの名無しさん
2005/06/10(金) 00:26:150765デフォルトの名無しさん
2005/06/10(金) 00:26:46で、それは質問なの?
0766デフォルトの名無しさん
2005/06/10(金) 00:28:170767デフォルトの名無しさん
2005/06/10(金) 00:46:50今度はこの配列からひとつ取り出して、TObjectから自作クラスへキャストしなおす
これを繰り返すとどんどんメモリリークするのが不思議
もちろんメモリリークをどうやって押さえればいいのか、というのが質問
0768デフォルトの名無しさん
2005/06/10(金) 00:48:16Addの逆をしたいわけだよ。
0769デフォルトの名無しさん
2005/06/10(金) 00:48:280770デフォルトの名無しさん
2005/06/10(金) 00:50:01と書かない理由は?
0771デフォルトの名無しさん
2005/06/10(金) 00:54:58>>767で書いたよ
0772デフォルトの名無しさん
2005/06/10(金) 00:56:140773デフォルトの名無しさん
2005/06/10(金) 00:56:23「礼儀」って言葉、知ってる?
0774デフォルトの名無しさん
2005/06/10(金) 00:57:39ライブラリよりも自分のコードを疑うべし
最小限の再現コードを作ってそれでも起きるなら晒せ
0775デフォルトの名無しさん
2005/06/10(金) 00:59:42消えていいよお前。
0776デフォルトの名無しさん
2005/06/10(金) 01:06:000777デフォルトの名無しさん
2005/06/10(金) 01:28:56TObjectList のソース見る限り、出し入れでリークするところなんかないぞ。
0778デフォルトの名無しさん
2005/06/10(金) 01:39:58上位クラスのデストラクタが呼ばれていないのでは?
0779デフォルトの名無しさん
2005/06/10(金) 01:41:390780デフォルトの名無しさん
2005/06/10(金) 02:34:160781デフォルトの名無しさん
2005/06/10(金) 02:40:38TObject.Destroy なんて呼べないでしょ。Freeだけど。
TObject にキャストしても virtual なら、ちゃんとインスタンスの型にあったメソッドが呼ばれる。
(てかこうじゃないと、Template Method パターンとか使えないしね)
メモリリークするのは、ただ単に自作クラスのデストラクタで、解放していないものがあるだけ。
もしくは、そもそも自作クラスのインスタンスを解放していないだけ。
0782デフォルトの名無しさん
2005/06/10(金) 02:50:450783デフォルトの名無しさん
2005/06/10(金) 05:30:56おまえら優しいな
0784デフォルトの名無しさん
2005/06/10(金) 06:25:480785デフォルトの名無しさん
2005/06/10(金) 07:58:58もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが、
お礼はDelphiの布教と初心者の救済をお願いします。
0786デフォルトの名無しさん
2005/06/10(金) 10:19:08著しく欠いてるのとか、最低限の礼儀も知らないのとか、はプログラミング以前の問題だよなぁー
某掲示板も最近はそんなのばかり・・・
0787デフォルトの名無しさん
2005/06/10(金) 10:44:470788デフォルトの名無しさん
2005/06/10(金) 11:37:240789デフォルトの名無しさん
2005/06/10(金) 11:38:550790デフォルトの名無しさん
2005/06/10(金) 11:47:18http://pc8.2ch.net/test/read.cgi/tech/1116997081/
0791デフォルトの名無しさん
2005/06/10(金) 12:34:19れいぎをしらにない連中のあつまりってきいたきがする。
礼儀をしらないものに礼儀論をしても馬の耳に念仏
20歳すぎると人格の矯正は困難・・・
0792デフォルトの名無しさん
2005/06/10(金) 12:42:48消えていいよお前ら。
0793デフォルトの名無しさん
2005/06/10(金) 13:17:350794デフォルトの名無しさん
2005/06/10(金) 13:43:130795デフォルトの名無しさん
2005/06/10(金) 13:56:060796デフォルトの名無しさん
2005/06/10(金) 14:00:12やっぱ無礼だと気持ちわるいだろ
0797デフォルトの名無しさん
2005/06/10(金) 14:32:460798デフォルトの名無しさん
2005/06/10(金) 14:34:330799デフォルトの名無しさん
2005/06/10(金) 16:58:44今はmixerSetControlDetailsで調整しているのですが、これだと
特定のマシンではきちんと動作するけど他のマシンでは動作しない状況が多々あり
困ってます。
もしありましたら教えてください。
0800デフォルトの名無しさん
2005/06/10(金) 17:10:551.作りたいものは複合コンポーネント(TLabelとTEditを複合したTLabeledEdit等)。
2.作成するのはTEditが3つくっついたもの。TCustomControl上に作成。THogeControlとする。
3.内部でTEdit.OnChange:=HogeChange;といったように各コントロールにイベントを設定する。
4.このコンポーネントは各コントロール(TEdit)にアクセスするためのプロパティがある。
上記のような状態でコンポーネントユーザがTHogeControl.EditA.OnChange:=HogeAChange;と
した場合、3でコンポーネント作者の設定したイベントが無効化されます。
これを回避する方法はどのような手法がありますでしょうか?
以上よろしくおねがいします。
開発環境:Delphi7〜
0801デフォルトの名無しさん
2005/06/10(金) 17:36:060802デフォルトの名無しさん
2005/06/10(金) 17:47:56複合コンポで EditA で TEdit にまるまるアクセスできてしまうのが問題。
ちゃんと隠蔽してユーザは勝手にイベントハンドラを設定できないようにする。
0803デフォルトの名無しさん
2005/06/10(金) 18:36:02stringからcharへ変換するにはどうすればいいのでしょうか?
0804デフォルトの名無しさん
2005/06/10(金) 18:40:360805800
2005/06/10(金) 19:49:03出来る限りユーザにはTEditのイベントハンドラ、プロパティはDelphi標準の物を使用してほしいのです。
こういった要望をみたすことは不可能なのでしょうか?
TEdit.OnChange:=HogeChange;の部分をフック?でメッセージをキャッチし
処理したいと考えましたがその方法がわからず(出来るかどうかも)途方にくれています。
0806デフォルトの名無しさん
2005/06/10(金) 19:56:26if Length(s) >= 1 then c := s[1]
0807デフォルトの名無しさん
2005/06/10(金) 20:01:12procedure TCustomEdit.Change; // protected dynamic method
begin
inherited Changed;
if Assigned(FOnChange) then FOnChange(Self);
end;
あたりをoverrideしてみるとか
0808デフォルトの名無しさん
2005/06/10(金) 20:32:060809釣られ坊主
2005/06/10(金) 21:10:27俺、知らな〜い!
stringをPCharへキャストするということなら>>740あたりが参考になるんじゃないの。
0810デフォルトの名無しさん
2005/06/10(金) 22:00:45動かない!!ときっぱり言ってみる。
wineは
noteadが動く程度
あまりの遅さに絶句。
まともにwinあぷりも動かないんだから
ちなみに仕様上、OSはXPとかNTは動かない。
9.x系が入っているフォルダを指定してやっとnotepadが動く程度。
しかも、バージョンによっては全くWineそのものがエラーを出して動かない。
動くバージョンを発掘から開始っていう探検の始まり始まり
うちの動作確認とれているのはっと・・・・
OS起動しなおすのが面倒なので省略 (笑
っていうか Win上でDelphi動かしなさい
0811デフォルトの名無しさん
2005/06/10(金) 22:04:03Kylixじゃだめなん?
0812デフォルトの名無しさん
2005/06/10(金) 22:13:320813デフォルトの名無しさん
2005/06/10(金) 22:15:39>出来る限りユーザにはTEditのイベントハンドラ、プロパティはDelphi標準の物を使用してほしいのです。
>こういった要望をみたすことは不可能なのでしょうか?
言ってることが矛盾してる。ユーザには好きに代入させておいて、それを阻止したい? おかしいとは思わないの?
0814デフォルトの名無しさん
2005/06/10(金) 22:24:39ツリー形式の掲示板じゃないんだから無駄レスつけるとグングン回答率が下がるんだよ。
基本的にわかる質問にだけ答えりゃいいんだよ。
質問の仕方が悪いなら誰もレスつけないだけ
誰もあなたに答えてもらいたいなんていってない。
あと念のために、
また「質問者のくせに〜」とか荒れないように言っとくけど漏れ800じゃないから
0815デフォルトの名無しさん
2005/06/10(金) 22:40:49例) >>814
0816デフォルトの名無しさん
2005/06/10(金) 22:46:05質問者のくせに〜
0817デフォルトの名無しさん
2005/06/10(金) 23:16:330818sage
2005/06/10(金) 23:31:16俺も今日からDelphiするぜ!!
みんなよろしくな!!
0819デフォルトの名無しさん
2005/06/10(金) 23:51:08その情報で経験則ではわからない。すまんね。
今日昨日窓杜で紹介されてた音量ソフトの
作者さんのサイトにそれ系のコンポと情報があったはず。
それで手続きの中身とか参考にならない?
0820デフォルトの名無しさん
2005/06/11(土) 00:19:26はぁ?
ttp://sidenet.ddo.jp/winetips/compat.html
2k とヅアルブートしてるんで system32 をパチってるが、かーなり色んなもの動いてますが?
それに、最近は DLL も結構不要になってるし、2D メインのエロゲなら高確率で動くっぽい
どれもが完璧な動作するとは言えないがな
ほんとバカばっかりだな、ここ
0821デフォルトの名無しさん
2005/06/11(土) 00:19:57なるほど・・・。
TEditを直に使わずTEditをTMyEditで継承し必要な部分をoverrideする。
そしてそれを組み込むのですね。
早速試してみたいと思います。
>>813
>言ってることが矛盾してる。ユーザには好きに代入させておいて、それを阻止したい? おかしいとは思わないの?
阻止したいのではありません。言葉が足りなかくて申し訳ありません。
いいたかった事はTHogeControlの内部でTEdit.OnChange:=HogeChange;等と書いた場合
プロパティでそれぞれEditA,EditB,EditCとpublicで公開したときに
使用ユーザがTHogeControl.EditA.OnChange:=FooChange;とした場合にHogeChangeが
無視されるのを防ぎたかったのです。
阻止したいのはユーザの代入ではなく、代入されたことにより内部で設定した手続きが
無効になるのを防ぎたかったのです。
0822デフォルトの名無しさん
2005/06/11(土) 00:55:50動くといっているアホがいる
WineはWinのファイルがないと動かないってことしらんのか? 説明書読め
WindowsマシンでLinuxを起動してわざわざその上でゲームして喜ぶのもがいるのが滑稽
ほんとばかだな
0823デフォルトの名無しさん
2005/06/11(土) 02:28:20今Vineを知った自分が言えた義理じゃないがw
GDIには結構対応してるってことじゃないの?(曖昧な表現ですまない)
だからゲームやウィンドウ内で帰結するプログラムには強いとか。
対極にあたるExplorerを動かすのが難しいらしいあたりそう感じる。
で、公式サイト見るとDelphiアプリ対応の修正は加えてるみたいだが、Delphi自体を使えるかは
情報見つけらんなかった。でもDelphiってpascal純正だから普通には動くんじゃw
自分レベル低くてすまんねぇ。
0824デフォルトの名無しさん
2005/06/11(土) 02:55:21アチャー (つ∀`)
> WineはWinのファイルがないと動かない
Winのファイルって何だよw
つか、全く不要とは書いてねーだろ、真性バカw
> WindowsマシンでLinuxを起動してわざわざその上でゲームして
はい?
ツッコミどころ満載だけど、とりあえずWindowsマシンって何ですかw
> ほんとばかだな
>>822
ちなみに、マウント外して、.wine をリネームして $wine notepad.exe したらちゃんと起動しましたよ?
確認してないから自信はないけど、最近は dll なしでもかなり起動すると思った
>>810 の時点で情報古すぎなのはミエミエだったが
>>823
DirextX も、サポートされていると思った。
XWine だかという派生ソフトもあったし
バカに付き合うとその人もバカに見える法則 orz
……スレ違いスマソ。誤った情報は正しておきたかった。
0825デフォルトの名無しさん
2005/06/11(土) 03:11:15ツッコミに無理があるな。特に誤字脱字で揚げ足取ってるあたり必死に見える。
0826デフォルトの名無しさん
2005/06/11(土) 05:04:550827デフォルトの名無しさん
2005/06/11(土) 05:30:08揚げ足取っておきながら自分でも誤字ってる品。
もうアフォかと。
0828デフォルトの名無しさん
2005/06/11(土) 06:41:17古い情報を正すのでも、今はこうなっているとだけ書けばいいのであって、貶める言葉を書く必要はない。
そもそも専用板があるんだからそっちでやってくれないかな。
0829デフォルトの名無しさん
2005/06/11(土) 07:17:54char(String)のことか?
0830デフォルトの名無しさん
2005/06/11(土) 07:19:14不明瞭な自分専用の用語で使っていても、恥しくもない上に自信満々な人が多いですよね。
すごくかっこいい。
0831デフォルトの名無しさん
2005/06/11(土) 09:55:47http://pc8.2ch.net/test/read.cgi/tech/1116997081/
犬厨はこっちでやれ
0832デフォルトの名無しさん
2005/06/11(土) 11:17:47そんなバグだらけのDelphiの古いversionを使うより
FreePascalをお勧めします。
DelphiのVCLと互換性も少しあるようです。
コンパイラはここでゲット
http://www.freepascal.org/
IDEはここからゲット
http://www.freepascal.org/links.html
いろいろなOSで動作する
無料で強力なpascal言語です。
0833デフォルトの名無しさん
2005/06/11(土) 11:30:380834デフォルトの名無しさん
2005/06/11(土) 13:50:400835デフォルトの名無しさん
2005/06/11(土) 13:52:160836デフォルトの名無しさん
2005/06/11(土) 16:14:38分からないような質問して「読解力がない」とかいうのは逆ギレ。
0837デフォルトの名無しさん
2005/06/11(土) 18:04:50もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが、
お礼はDelphiの布教と初心者の救済をお願いします。
0838デフォルトの名無しさん
2005/06/11(土) 18:33:350839いまだDelphi5
2005/06/11(土) 20:46:37> Delphi Ver.5 の comctrls.pas にバグがあり、Delphi Ver.5 版では
> comctrls.pas にパッチを当てて開発していました。
というのがあったけど、どんな問題があるのでしょうか。
0840デフォルトの名無しさん
2005/06/11(土) 22:05:07ttp://buglist.jrsoftware.org/
0841今もDelphi2使っています
2005/06/11(土) 22:21:34そんなことないよ
バージョンアップしないでずっと使えるし
安くて、いい言語だよ
0842デフォルトの名無しさん
2005/06/11(土) 23:52:46巣にお帰り。
0843デフォルトの名無しさん
2005/06/11(土) 23:59:25今でも3.1とか使ってる人けっこういそうだよね。
0844デフォルトの名無しさん
2005/06/12(日) 00:24:410845デフォルトの名無しさん
2005/06/12(日) 03:02:41btnA: TButton;
procedure btnAOnClick;
begin
btnA.Free;
end;
とすると、稀に例外が飛んできます。
0846デフォルトの名無しさん
2005/06/12(日) 03:14:26その部分のコードはたぶん問題ない。
Freeした後にそことは別の箇所でbrnAを参照しちゃってんじゃないの。
とりあえずbtnA := nil;して参照箇所を探してアクセスしないようにしてみるとか。
可能ならbtnA.Visible := False; で非表示にするのが無難だと思うけどね。
0847デフォルトの名無しさん
2005/06/12(日) 03:42:28例えばD:\hogeの中にいくつかフォルダがあるとして、
D:\hogeの下にあるフォルダの名前だけ取得したいんです。
0848845
2005/06/12(日) 04:15:28>とりあえずbtnA := nil;して参照箇所を探してアクセスしないようにしてみるとか。
上記を記述して参照するときもif Assigned(btnA) then btnA.Click;としているのですが
速いPCで実行すると問題なし。
遅いPCで実行するとbtnA.Freeの後に例外が飛んでくる。
といった結果になりました。
そこでPostMessageで非同期でやってみようと思いやってみると、うまくいきました。
う〜ん、何が原因なんだろう??
自分自身をFreeするときは「特別な処理が必要だ」とどこかで見た気がしましたが、勘違いだったかな?
0849デフォルトの名無しさん
2005/06/12(日) 04:25:39削除すると例外がでる。Free を PostMessage() で非同期化すると問題ない。
0850デフォルトの名無しさん
2005/06/12(日) 04:33:36FindFirst
FindNext
FindClose
0851デフォルトの名無しさん
2005/06/12(日) 09:32:16TShellListViewのソースのIsFolder関数のところが参考になるんじゃないかな。
0852デフォルトの名無しさん
2005/06/12(日) 10:53:280853デフォルトの名無しさん
2005/06/12(日) 11:08:09まぁね。今ならClasses.pasだけは無料でダウンロードできるけど
でも、それを差し引いてもBorlandは気前がよすぎると思うけどな。(というかバカかと)
これほどの開発環境を無料って・・いくらシェア拡大を狙ったとしてもやりすぎ。
しかもPersonal版の制限なんてDB関係とシェアソフト禁止ぐらいだし
趣味でやる分には製品版買わないよな・・。
0854デフォルトの名無しさん
2005/06/12(日) 11:27:29もともと教育機関言語。
MSがアカデミックが異常なほど安い。
教育機関でそっちにながれる・・・
→ 講義に利用されなくなる
→ pascalのシェアが格段におちる。
→ ユーザーが次第に減る。
→ 存在が忘れられる。
→ 商売がなりたたなくなる。
ただにする
教えやすいので
教育機関でそっちにながれる・・・
→ pascalのユーザーが増える。
→ pascal好きが徐々に増える。
→ 物好きが物足りなくて上位へバージョンアップする。
→ 商売が維持できる。
MS防衛策+先行投資みたいなものだよ
0855デフォルトの名無しさん
2005/06/12(日) 11:45:120856デフォルトの名無しさん
2005/06/12(日) 11:48:38>>854
いい加減こっちでやれって言ってんだろ
http://pc8.2ch.net/test/read.cgi/tech/1116997081/
0857デフォルトの名無しさん
2005/06/12(日) 11:57:150858デフォルトの名無しさん
2005/06/12(日) 12:19:42でも結局アカデミックを仕掛けたのって元房ランドのOH!NOじゃないの?
つまり・・・・
0859デフォルトの名無しさん
2005/06/12(日) 12:39:350860デフォルトの名無しさん
2005/06/12(日) 17:45:120861デフォルトの名無しさん
2005/06/12(日) 18:13:010862デフォルトの名無しさん
2005/06/12(日) 18:18:02間違い。
>>845
ボタンのOnClickイベントの時にFreeしているのだと思われるが、この時呼び出し元のコードでは
まだ自分自身のフィールドにアクセスする可能性が残っている状態にある。(というかアクセスする)
で、たまたまFreeしたときそのメモリ領域が無効化されていない状態だと、AVが発生しない。
てかトレースすりゃすぐわかるだろ。
0863デフォルトの名無しさん
2005/06/12(日) 18:25:180864デフォルトの名無しさん
2005/06/12(日) 19:06:54を作りたいのですがどうすればいいのでしょうか?
TSplitterでできると思ったんですがコンポーネントを配置してないと強制的に端に来てしまう
のでどうやら無理みたいです。何かいい方法ありますでしょうか?
0865デフォルトの名無しさん
2005/06/12(日) 19:26:43どうしてもMDI(親フォームの中に子フォームが複数ある)でないといけないの?
今風のインターフェースだと、パネルを二つ用意してスプリッタで仕切ると言うのが主流だと思うけど。
0866864
2005/06/12(日) 20:02:17特にMDIにこだわりはないんですが、たとえばDonutのようなタブブラウザの
ワークスペースが二つあるようなソフトってその方法で作れるのでしょうか?
タブで複数のドキュメントを管理する方法っていったらMDIしか頭になかったので、
それ以外でつくれるなら何でもいいです。
0867デフォルトの名無しさん
2005/06/12(日) 20:36:00Donutと言うのは使ったことがないのではずしているかもしれませんが、
タブによるページの切り替えをやりたいのなら、Win32コンポーネントパレットにあるTPageControlが使いやすいと思います。
言葉尻を捕らえてあれこれいうつもりではありませんが、タブブラウザのようなインターフェースとMDIというのは違うものです。
MDIというのは、ちょっと前のエクセルやワードのようなインターフェースのことをさします。
0868デフォルトの名無しさん
2005/06/12(日) 20:39:35文字列の位置から単語を取得したいのですが、どのようにやれば出来ますでしょうか?
0869デフォルトの名無しさん
2005/06/12(日) 20:47:421、ダブルクリックされた位置を取得。
2、ダブルクリックされた位置にある一文字を取得。
3、2の場所から文字列を前後に検索して半角もしくは全角スペースを探す。
4、スペースが見つかったらスペースからスペースを1単語として判断して選択状態にする。
連続した日本語文字列で3をやるためにはそれなりの辞書が必要かも。あるいは助詞で判断するか。
0870デフォルトの名無しさん
2005/06/12(日) 21:03:13ヘルプファイル
Power(Base, Ex) = Exp(Ex * Ln(Base))
違う値がかえってくる・・・
変だなと。 mathのソースをみると・・・・
まにうけた俺がばかだった。。。
アセンブリわからないので。
整数乗のときは、Resultにforでかけつづけることにした。
うそ情報ながしうやがって、 ひとこと 精度が・・・
とかいてくれてていたら
きがついたものを・・・
坊のあほ。
0871864
2005/06/12(日) 23:07:18MDIでやらなくてもTPageControlでタブによる切り替えができるんですね。
DonutがMDIみたいなのでタブブラウザ=MDIみたいな図式が出来上がってました。
>>865>>867
お二人ともありがとうございました。
0872デフォルトの名無しさん
2005/06/12(日) 23:36:30>てかトレースすりゃすぐわかるだろ。
この現象で以前悩んだがトレースするのは厳しいぞ。
このコード書いた時点で「なんかやばいかもなー」なんて思っても
実行してみると「あ、うごいた」ってことで放置。
何度かやってみると数十回に一度あるかどうかの確立でAV。
しかもDelphi5〜2005でも同じ現象、実行するマシンによって再現もまちまちだからな。
そりゃそうと、これの解決方法はPostMessageでやるのがベストなのか?
原因はなんとなくわかるが、解決方法がPostMessageでいいのか未だによくわからん。
0873デフォルトの名無しさん
2005/06/12(日) 23:46:340874デフォルトの名無しさん
2005/06/12(日) 23:58:05そうか、サンクス。これで安心出来るよ。
0875デフォルトの名無しさん
2005/06/13(月) 01:27:200876デフォルトの名無しさん
2005/06/13(月) 10:51:04自由にフォームのキャプションを変える方法はありますか? それか、無料のスキン搭載コンポーネントはあるのでしょうか?
0877デフォルトの名無しさん
2005/06/13(月) 11:03:40少しは自分でやれよ。
0878デフォルトの名無しさん
2005/06/13(月) 11:29:32もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが、
お礼はDelphiの布教と初心者の救済をお願いします。
0879デフォルトの名無しさん
2005/06/13(月) 18:24:45FormのDCハンドルを取得。
SystemParamInfoでキャプションバーの高さを取得
Canvas.TextOutでキャプションに好きな文字列を描画。(CanvasのブラシはbsSolidな)
0880デフォルトの名無しさん
2005/06/13(月) 19:10:300881デフォルトの名無しさん
2005/06/13(月) 20:01:49とあるアプリのウィンドウクラス名がTApplicationなので
どうもBorland開発環境製だなと思うのですが
これがDelphi製なのかそれとも他のC++Builderとかなのか判別する方法ってありますか?
0882デフォルトの名無しさん
2005/06/13(月) 20:35:520883デフォルトの名無しさん
2005/06/13(月) 20:45:460884881
2005/06/13(月) 21:02:07というか読める文字列はお約束の「This program must be run under Win32」ぐらいです。
exeのサイズを減らす圧縮ツールでも使ってるのかな・・。
0885デフォルトの名無しさん
2005/06/13(月) 21:05:54作者に聞く
0886デフォルトの名無しさん
2005/06/13(月) 21:06:08そうなんでない?
普通読める文字入りまくりだから。
0887デフォルトの名無しさん
2005/06/13(月) 21:23:38いったいなんて言うアプリだ。
ひょっとして俺の作ったソフトじゃねえか(w
0888デフォルトの名無しさん
2005/06/13(月) 21:31:37だったらBCBだが。
0889デフォルトの名無しさん
2005/06/13(月) 21:32:54ま た お 前 か
0890デフォルトの名無しさん
2005/06/13(月) 21:33:560891デフォルトの名無しさん
2005/06/14(火) 00:03:240892デフォルトの名無しさん
2005/06/14(火) 00:44:52モジュール 'HOGE.EXE' のアドレス ××××× でアドレス ××××× に対する読み
込み違反がおきました。
が発生することがあります。やはり明示的に廃棄するべきなんでしょうか?
0893デフォルトの名無しさん
2005/06/14(火) 00:52:48それで、そのエラーだが、恐らく自動的に解放されたはずの
インスタンス参照用変数を参照してしまっているんじゃないか?
自動解放ではnilは割り当てられないからAssignedでのチェックも無意味だぞ
0894デフォルトの名無しさん
2005/06/14(火) 13:57:14Win32Check(32<=ShellExecute(Application.Handle, 'properties', 'c:\test.txt', nil, nil, sw_show));
というコードを実行しても関連付けがないと怒られます。
何がいけないのでしょうか。c:\test.txtというファイルはちゃんと存在しています。
c:\windowsに変更しても同様のエラーが出ます。
0895デフォルトの名無しさん
2005/06/14(火) 14:01:060896デフォルトの名無しさん
2005/06/14(火) 14:13:590897デフォルトの名無しさん
2005/06/14(火) 14:18:280898デフォルトの名無しさん
2005/06/14(火) 14:41:480899デフォルトの名無しさん
2005/06/14(火) 14:42:420900デフォルトの名無しさん
2005/06/14(火) 14:43:070901デフォルトの名無しさん
2005/06/14(火) 14:45:120902デフォルトの名無しさん
2005/06/14(火) 14:52:370903デフォルトの名無しさん
2005/06/14(火) 15:53:02我部凝れしか無いのは困る。
0904デフォルトの名無しさん
2005/06/14(火) 15:55:03最近見かけないけど、DelphiのDFMロード用ツールがあって、
それでプロジェクトファイルまで復元できたらDelphi、
出来なかったらBCBと判定できたYO!
0905デフォルトの名無しさん
2005/06/14(火) 16:01:060906デフォルトの名無しさん
2005/06/14(火) 17:29:53ここ超初心者スレだよな?
0907デフォルトの名無しさん
2005/06/14(火) 18:00:08ソフトのどのパーツにもClassの名称があって特にDelphiはT〜が標準だから
その手のツールで見るとすぐわかる。
※飛龍さんのClassFinderが使いやすいかもしれない。
が、BCB(C++Builder)も同じようにT〜とか表示されるから区別しにくい。
Exescope(であってるかな?)みたいな調べものツールで
BCBソフトを開けないことで結果的に区別できたということ。かな?
ちなみにプログラムの圧縮についてはUPXとかで検索してみること。
HDD上やDLサイズ上でexeのサイズ節約のメリットがあるけどソフトが軽くなるわけではい。
ガーベージコレクションとはメモリ管理をある程度OS-プログラム側で受け持ってくれること。
逐一開放とか気にしなくて良いから開放忘れが減る。大体そんなかんじで
0908デフォルトの名無しさん
2005/06/14(火) 19:27:260909デフォルトの名無しさん
2005/06/14(火) 19:40:260910デフォルトの名無しさん
2005/06/14(火) 20:37:37UPX1.21と、Del4orBCB5のEXEを組み合わせると、
できあがるEXEが使用不能だった。
0911デフォルトの名無しさん
2005/06/14(火) 20:59:04圧縮オプションでいらんとこまで圧縮するとそうなる。
0912デフォルトの名無しさん
2005/06/15(水) 02:26:390913デフォルトの名無しさん
2005/06/15(水) 03:41:34DirectsoundのSetFrequencyを使うとある程度簡単に周波数を指定した音を再生できると
ネットで調べて分かったのですが、どうしてもコードが分かりません。
どなたかどんなコードになるのか教えていただけないでしょうか?
あるいはどこかにサンプルコードがあったら教えてください。
Delphi-MLなどを色々と調べたのですが、ぐぐっても英語や中国のサイトばかりで何も
見つかりませんでした。
0914デフォルトの名無しさん
2005/06/15(水) 08:06:04http://www-fu.magma.ne.jp/~hayase/dddd/whats.html
ここにDelphiでDirectXを比較的カンタンに扱えるライブラリがあるよ
0915デフォルトの名無しさん
2005/06/15(水) 15:23:390916デフォルトの名無しさん
2005/06/15(水) 15:49:39ネットで勉強してゲーム(マリオみたいな)つくれるようになる?
マイナー言語だって聞いたけど、ここまでとは・・(・c_・` )
ヴィジュアルベーシックは初心者には遠い言語になったそうだし
これしかないと思っております。
よろー
0917デフォルトの名無しさん
2005/06/15(水) 15:58:56なるでしょ。ネットでちょっとした構文を覚えて
ゲーム用のライブラリの使い方を覚えれば御しまい。
ゲーム関係なら、このあたりかな。
http://gamdev.org/w/?%5B%5BDelphi%A4%DE%A4%C8%A4%E1%5D%5D
0918デフォルトの名無しさん
2005/06/15(水) 16:00:56http://onigiri.s3.xrea.com:8080/delphi/index.php?cmd=read&page=%A5%EA%A5%F3%A5%AF%2F%A4%BD%A4%CE%A3%B1
0919デフォルトの名無しさん
2005/06/15(水) 16:47:04やる気も無く最初っから人にたよりすぎてるおまえは、
これ以上、人間としてのスキルアップはのぞめません。
かえれ。
0920デフォルトの名無しさん
2005/06/15(水) 16:51:42もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが、
お礼はDelphiの布教と初心者の救済をお願いします。
0921デフォルトの名無しさん
2005/06/15(水) 16:54:17賛同します!
0922デフォルトの名無しさん
2005/06/15(水) 17:48:19Abstractエラー!って怒られます。
どうしたらいいでしょう。
procedure TForm1.Button1Click(Sender: TObject);
var stream:Tstream;
begin
try
stream:=Tstream.Create;
//try
Memo1.Lines.SaveToStream(stream);
//except
//end;
finally
stream.Free;
end;
end;
0923デフォルトの名無しさん
2005/06/15(水) 17:49:260924デフォルトの名無しさん
2005/06/15(水) 18:01:52コラムを再編集して別冊にしたりいい雑誌です・・・だった。
0925デフォルトの名無しさん
2005/06/15(水) 18:04:04まったくの初心者なら、デルファイ2時代の本でも結構参考になる。
根本のところが大きく変わっていないから。
ネットオークションとか古本屋を当たるもの手だよ。
俺も今はデルファイ6ENTを使っているけど、デル2時代の本が結構参考になったりする。
0926922
2005/06/15(水) 18:15:40ありがとうございます。確かにエラーはでなくなったのですが
最終的にはTstream型を要するコンポーネントに使用したいので
Tstreamで実現することはできないでしょうか?
0927デフォルトの名無しさん
2005/06/15(水) 18:21:03代入可能。OOP をもすこし勉強すべし。
0928デフォルトの名無しさん
2005/06/15(水) 18:22:42TStreamは両クラスを統一的に扱うための抽象クラスなので
var stream: TStream;
stream := TFileStream.Create or TMemoryStream.Create
Memo1.Lines.SaveToStream(stream); <- Memo1はどちらのクラスに書き込んでいるかは感知しない
という使い方が出来ます。
このあたりはオブジェクト指向プログラミングの肝なので
いずれ勉強することになると思います。
0929デフォルトの名無しさん
2005/06/15(水) 19:13:50大規模書店でもない。どこにもない!
0930デフォルトの名無しさん
2005/06/15(水) 19:27:08今本棚見たらInsideWindowsが4冊だけ残ってた。
ほとんど持ってたんだが、どこいったんだろ。
0931デフォルトの名無しさん
2005/06/15(水) 19:39:432002,3年以降はあまり出版されてないみたい。知らなかった(汗
買い漁った=手持ちはほとんど2000年前後ですね。D5〜7あたり。栄枯盛衰・・・orz
あと、プログラム関連、学術書(学〜院)関連は
普通の古本屋には買い取れないジャンルだそうです。
プログラマーにとっては欲しい古本は沢山あると思うんですが
マイナー且つ古い情報になるので売れない&場所をとる筆頭だとか。
0932デフォルトの名無しさん
2005/06/15(水) 19:45:050933デフォルトの名無しさん
2005/06/15(水) 19:47:15そこでメジャーに移籍するか、または、マニアに変身するかが分かれ目。
Del厨は言うまでもなく後者なわけだが・・・・・
0934デフォルトの名無しさん
2005/06/15(水) 19:51:260935デフォルトの名無しさん
2005/06/15(水) 19:54:18http://pc8.2ch.net/test/read.cgi/tech/1116997081/
はい誘導
0936デフォルトの名無しさん
2005/06/15(水) 20:00:05アイコンが見つかりません。
どこにあるんですか?
0937デフォルトの名無しさん
2005/06/15(水) 20:08:28それ俺もはまったw
ダミーのプロジェクト作って*.resから取り出すとか。
0938デフォルトの名無しさん
2005/06/15(水) 20:16:28おお、なるほど。*.resに入ってることすら知りませんでした。
おっしゃる通りにダミーのプロジェクト作って
それのresファイルと置き換えたら元のアイコンに戻りました。
ありがとうございました。
0939デフォルトの名無しさん
2005/06/15(水) 20:18:16きみ:えっ
おれ:ほら 中だよ
きみ:えっ ^_^;;;
おれ:だから中だって
きみ:えええっ ^_^;;;
おれ:だから中だって
きみ:えええっ ^_^;;;
おれ:だから中だって \BIN\DELPHI32.EXE
きみ:えええっ ^_^;;;
0940デフォルトの名無しさん
2005/06/15(水) 20:47:150941デフォルトの名無しさん
2005/06/15(水) 21:15:26kana Like '%ABC%'
といった絞り込みを行いたいのですが、
「この操作は行えません」とDelphiのエラーが表示されます。
他の項目(日付など)では問題なくFilterできました。
どうすればよいのでしょうか?
0942デフォルトの名無しさん
2005/06/15(水) 22:55:47フィルタ式はSQLじゃないから、
kana = '*ABC*'だよ〜ん。
0943デフォルトの名無しさん
2005/06/16(木) 00:42:46>もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
>Delphi使いが優しくコメントを返しますが、
>お礼はDelphiの布教と初心者の救済をお願いします。
度々これ出るけど、これって技術的に解らない(説明できない)って意味じゃないのか?
少なくとも日本語書けないような奴や調べようともしていない奴の言い訳に使われるのは
激しく違う気がする。
0944デフォルトの名無しさん
2005/06/16(木) 00:46:550945デフォルトの名無しさん
2005/06/16(木) 01:39:480946デフォルトの名無しさん
2005/06/16(木) 04:25:180947デフォルトの名無しさん
2005/06/16(木) 04:40:20>>622 に禿同だったんが、次のレスみてかなり萎えた。
Delphi6 Personal が無料といわれても、その後のイメージが悪過ぎる。
ちょっとしたことを調べるだけでも、かなり手間と金が掛かる気がする。
俺は Delphi でやりたいことがあるのでコツコツと続けているが、
こんな状態では、新規参入する人なんて殆ど居ないんじゃなかろうかと思った。
0948デフォルトの名無しさん
2005/06/16(木) 05:54:17WinHelpで十分だろ。
> ちょっとしたことを調べるだけでも、かなり手間と金が掛かる気がする。
気がするだけでしょ。いいかげんな事言わないの。
こっちにおいで、ミ,,゚Д゚彡フサギコのフサフサDelphi談話室その23
http://pc8.2ch.net/test/read.cgi/tech/1116997081/
0949デフォルトの名無しさん
2005/06/16(木) 09:04:44言いたいことは分かるけどね……それは既に熟練した結果なんじゃない?
ちょうど、今 WideFormat 使ってで変換したくなって、適当に使ってみたら実パラメータが足りないと怒られた。
Delphi6 Personal 付属のヘルプ
function WideFormat(const Format: WideString; const Args: array of const): WideString;
で、具体的にはどう使うのだ?
例文無いし、付属のヘルプはリンク切れしてる (よくある)
WideFormat delphi で Google検索
http://www.google.com/search?q=WideFormat+delphi&sourceid=mozilla-search&start=0&start=0&ie=utf-8&oe=utf-8&client=firefox-a&rls=org.mozilla:en-US:official
日本語限定で3件ヒット 1件リンク切れ
生きた2つリンクも実際に行ってみれば分かると思うが、全く無意味 orz
で、次は英語で漁るとして、それで駄目ならどうやって調べたものかな……と。
適当にソース漁りまくるか、本買うしか思い付かない。
こんな馬鹿みたいに単純なことをしたいだけなんけど。
まぁ、俺の調べ方が変なのかもしれないが、初心者なんてこんなものですよ。
というか、毎度毎度こんな状態ばっかりで萎えまくり、なんか良い本ないですか?
[ちらしの裏]
って、投稿する寸前に、似た別の変換関数で検索することに思い付いたら解決した orz
printf に似た利用方法な関数で、第1引数 は'%s' 第2引数は [変数] と指定すれば良いのか?
付属ヘルプだけで、どうこれに辿り付けば良いのか分からないですよ orz
こんなことか可能になるだけで 30分以上浪費しましたとさ
他の言語では、こんな酷い状態に陥りまくったことはないんだけど
0950デフォルトの名無しさん
2005/06/16(木) 09:05:43そういうのも構わないというのが、このスレの主旨だったはず。
「こいつには回答したくねー」と思うならスルーすればよし。回答する義務はないんだし。
0951デフォルトの名無しさん
2005/06/16(木) 09:10:49Format関数にたどり着ければなぁ・・・。
0952デフォルトの名無しさん
2005/06/16(木) 09:27:08日本語限定というのが、おかしいですね。
そのGoogle検索でも、すでに大量にヒットしているじゃないですか。
英語が分からなくても、コードをみれば「適当に」分かるのでは?
付属ヘルプもリンク切れしていないようですし。
初心者すれで聞けば、すぐ回答がつく事ですし
何を求めているのか良く分かりません。
完璧を求めるなら、ソース付のPro版をお勧めします。
0953デフォルトの名無しさん
2005/06/16(木) 09:39:53何と比較しているのか良く分からんが
他の言語は金を出してもソースがついて来ないからな。
つか、適当に使って、上手く行かないって逆切れしている>>949って・・・
0954デフォルトの名無しさん
2005/06/16(木) 09:40:45ヘルプのリンク切れであれこれ悩んで長文書く間に
お気軽にWideFormatってなんだと聞いてくれればいいのに。
# 気持ちはわかるがこのスレでそういう物言いをすると
# おにいさんたちが嬉々として寄ってくるので正直もう少し言葉遣いを考えてくれ。
# このスレの平和と安定の為に・・・
0955デフォルトの名無しさん
2005/06/16(木) 09:51:180956デフォルトの名無しさん
2005/06/16(木) 09:58:130957デフォルトの名無しさん
2005/06/16(木) 10:07:560958デフォルトの名無しさん
2005/06/16(木) 10:09:50http://pc8.2ch.net/test/read.cgi/tech/1116997081/
0959デフォルトの名無しさん
2005/06/16(木) 11:27:320960デフォルトの名無しさん
2005/06/16(木) 14:17:07Delphiでファイルの更新時刻を正確に取得するにはどうしたらいいんでしょうか。
調べてみたところ、ファイルシステムがFAT32だと、奇数秒が切り上げられるというファイルシステム上の
制限があるらしいのですが、私の使用している端末はNTFSです。
テストに使用した関数は、
・FileAge→FileDateToDateTime
・FileGetDate→FileDateToDateTime
・(FindFirst→)SearchRec.Time→FileDateToDateTime
です。すべて同じように奇数秒が偶数に切り上げられます。
OSはWindowsXP SP1
DelphiはDelphi7 Enterprise
です。
よろしくお願いします。
0961デフォルトの名無しさん
2005/06/16(木) 14:54:520962デフォルトの名無しさん
2005/06/16(木) 15:41:19NTFS専用ならばSearchRec.FindData.ftLastWriteTimeを
FileTimeToSystemTimeで変換しる
>>961使う場合のやり方は>>961に聞け
0963960
2005/06/16(木) 15:48:37私ももうちょっと調べてみましたが、Delphiから呼ばれるAPIは
・FileAge→FindFirstFileA
・FileGetDate→GetFileTime
・(FindFirst→)SearchRec.Time→FindFirstFileA
となっていました。
GetFileTime APIは、FileGetDateから呼ばれているようですね。
FATの最終更新時刻の分解能は 2 秒で、NTFSでは1秒(?)なので、
FileGetDateで正しく取得できるはずなんですけどねえ...
0964デフォルトの名無しさん
2005/06/16(木) 15:53:24FileTimeToDosDateTimeを見落としてる
0965デフォルトの名無しさん
2005/06/16(木) 15:54:33ごめん、>>962はFileTimeToLocalFileTimeしてからFileTimeToSystemTimeだ
0966デフォルトの名無しさん
2005/06/16(木) 16:08:30SearchRec.FindData.ftLastWriteTime→FileTimeToLocalFileTime→FileTimeToSystemTime→SystemTimeToDateTime
とすればうまく取得できますね。
こんな感じになりました。
function GetFileUpdTime(sFileName: String): TDateTime;
var
SearchRec: TsearchRec;
LocalTime: TFileTime;
SysTime: SYSTEMTIME;
begin
FindFirst(sFileName, faAnyFile, SearchRec);
try
FileTimeToLocalFileTime(SearchRec.FindData.ftLastWriteTime, LocalTime);
FileTimeToSystemTime(LocalTime, SysTime);
result := SystemTimeToDateTime(SysTime);
finally
FindClose(SearchRec);
end;
end;
0967960
2005/06/16(木) 16:31:28FileAgeやFileGetDateでは、内部でFileTimeToLocalFileTime→FileTimeToDosDateTime
と変換しているため、秒が切り上げられてしまうんですね。
というわけで、GetFileTime(API)→FileTimeToLocalFileTime→FileTimeToSystemTime→SystemTimeToDateTime
でもうまくいきました。
ところでなぜ、DelphiではFileTimeToSystemTimeを使わずに、FileTimeToDosDateTimeを使っているのでしょうか?
FileTimeToSystemTimeがWin95/98に対応している以上、FATでも問題あるじゃないですよね?
0968デフォルトの名無しさん
2005/06/16(木) 16:49:06WindowsAPIのヘルプにFATは2秒単位だと書いてあるが?
互換性という意味ではDOS形式にするのが正しい罠
ただ、プラットフォームで切り分けれとも思うけどさ
0969デフォルトの名無しさん
2005/06/16(木) 17:01:540970960
2005/06/16(木) 17:35:54互換性ですか。分解能が高くなる分には問題ないような気はしますが、もし互換性のためであれば、
やっぱりNTFSとFATの両方に対応した新しい関数も用意して欲しいものですね。
0971ななしへたぐらま ◆XcB18Bks.Y
2005/06/16(木) 17:43:51フォームを閉じただけではフォームは廃棄されず,そのコンポも廃棄されません.
閉じるときに廃棄したい場合はOnCloseイベントでAction に caFree を代入します.
>>929
もう5年くらい前ですが東京・新宿の紀伊國屋書店にDelphi関連書籍がほとんど無くて参ったことがありました.
近場の書店の方が揃っていたという.
(※近年,某魔法メガネ君の本で有名になった八王子駅前の某書店)
>>948
Delphiのヘルプは駄目なのは事実ですけどね.
J Builderの成功例をまねて普及のために無料版をばらまくなら
初心者がしっかり学べるドキュメントを残さなければいけなかったのですが….
0972デフォルトの名無しさん
2005/06/16(木) 17:44:11偶数しか入ってこないはず、と思い込んでるソフトもあるんじゃないかな?
0973デフォルトの名無しさん
2005/06/16(木) 19:33:12> 初心者がしっかり学べるドキュメントを残さなければいけなかったのですが….
personal では作れないチュートリアルとかがあって、まだ修正されてないし、
もうそのときからドキュメントに関してはアキラメ。よって、ユーザ拡大もアキラメ。
先細りは自業自得だわな
0974デフォルトの名無しさん
2005/06/16(木) 19:57:53「登録の最終確認のメールを xxxxx@xxxxxx に送信しました」
って出てから2日待ってもメールが来ないのは俺だけ?
もちろんメアドが間違ってるなんてオチじゃないよ。
0975デフォルトの名無しさん
2005/06/16(木) 19:58:10もう暗くなったよ。巣にお帰り。
0976デフォルトの名無しさん
2005/06/16(木) 20:29:26イベントが起きるようなコンポーネントかAPIってあります?
スクリーンセーバーみたいなことをやりたいんですが、
TApplication.OnIdle はメインスレッドが暇になったときにガンガン呼ばれるようで、
目的に合致しません。
Delphi 2005使ってます。
0977デフォルトの名無しさん
2005/06/16(木) 20:51:08OnIdle イベント
アプリケーションがアイドル状態になったときに一度だけ呼び出され,
Done プロパティが False に設定されない限り再び呼び出されることはありません。
Delphi6のヘルプより。
0978976
2005/06/16(木) 21:04:27Done := True; すればいいのではないか、ということでしょうか?
アイドル状態の説明が不十分だったのでちゃんとしておきます。
私がやりたいのは、一定時間マウスやキーボードをいじらずに
放置しておいた場合、イベントを発生させるということです。
TApplication.OnIdleは、処理すべきウィンドウメッセージがなくなったりすると
Done := True としてもミリ秒単位で発生するので向いていないようです。
よろしくお願いします。
0979デフォルトの名無しさん
2005/06/16(木) 21:11:300980976
2005/06/16(木) 21:24:19ありがとうございます。
そのキーワードで検索したらDelphi-MLが出てきました。
お恥ずかしい限りです。
http://leed.issp.u-tokyo.ac.jp/~takeuchi/delphi/browse.cgi?index=079021
0981デフォルトの名無しさん
2005/06/17(金) 04:34:350982デフォルトの名無しさん
2005/06/17(金) 08:52:42これかな?
http://jedicodeformat.sourceforge.net/
0983デフォルトの名無しさん
2005/06/17(金) 08:55:22これも
http://onigiri.s3.xrea.com:8080/delphi/index.php?cmd=read&page=%A5%BD%A1%BC%A5%B9%A4%CE%BC%AB%C6%B0%C0%B0%B7%C1%A5%C4%A1%BC%A5%EB&word=formatter
0984デフォルトの名無しさん
2005/06/17(金) 10:30:400985デフォルトの名無しさん
2005/06/17(金) 10:38:070986ななしへたぐらま ◆XcB18Bks.Y
2005/06/17(金) 16:52:47すれたい:くだすれDelphi(超初心者用)その25
>>1 用 -------------------------------
このスレッドはBorland(ボーランド)のDelphi(デルファイ)について、
他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが、
お礼はDelphiの布教と初心者の救済をお願いします。
<前スレ>
くだすれDelphi(超初心者用)その24
http://pc8.2ch.net/test/read.cgi/tech/1115581376/
<その他>
Borland Home Page
http://www.borland.co.jp/
DelWiki (無料版Delphiの入手方法など)
http://onigiri.s3.xrea.com:8080/delphi/
----------
(続く)
0987ななしへたぐらま ◆XcB18Bks.Y
2005/06/17(金) 16:56:14過去スレ
23 http://pc8.2ch.net/test/read.cgi/tech/1110470895/
22 http://pc5.2ch.net/test/read.cgi/tech/1107332482/
21 http://pc5.2ch.net/test/read.cgi/tech/1104511938/
20 http://pc5.2ch.net/test/read.cgi/tech/1101530485/
19 http://pc5.2ch.net/test/read.cgi/tech/1097454588/
18 http://pc5.2ch.net/test/read.cgi/tech/1093996761/
17 http://pc5.2ch.net/test/read.cgi/tech/1091671391/
16 http://pc5.2ch.net/test/read.cgi/tech/1089779142/
15 http://pc5.2ch.net/test/read.cgi/tech/1087823906/
14 http://pc5.2ch.net/test/read.cgi/tech/1085239007/
13 http://pc5.2ch.net/test/read.cgi/tech/1081003641/
12 http://pc5.2ch.net/test/read.cgi/tech/1076610073/
11 http://pc5.2ch.net/test/read.cgi/tech/1076609666/
-------------------------------
(続く)
0988ななしへたぐらま ◆XcB18Bks.Y
2005/06/17(金) 16:56:3710 http://pc5.2ch.net/test/read.cgi/tech/1074523803/
09 http://pc5.2ch.net/test/read.cgi/tech/1071294733/
08 http://pc5.2ch.net/tech/kako/1068/10682/1068201045.html
07 http://pc5.2ch.net/tech/kako/1065/10651/1065195699.html
06 http://pc5.2ch.net/tech/kako/1063/10632/1063202727.html
05 http://pc5.2ch.net/tech/kako/1061/10610/1061090908.html
04 http://pc5.2ch.net/tech/kako/1058/10588/1058834815.html
03 http://pc5.2ch.net/tech/kako/1055/10559/1055986736.html
02 http://pc5.2ch.net/tech/kako/1053/10537/1053757982.html
01 http://pc5.2ch.net/tech/kako/1051/10518/1051882835.html
-------------------------------
(以上)
0989ななしへたぐらま ◆XcB18Bks.Y
2005/06/17(金) 18:43:13特になければこのテンプレでスレ立てにトライしてみます.
以下,1レス消費してしまったので.
>>975 >>973の指摘は正しいと思います.ヘルプのリンク切れってぶっちゃけあ(ry
>>984 そうです.ここ数ヶ月は理工書売り場に行っていませんが,多分今でもおいてあると思います.
0990デフォルトの名無しさん
2005/06/17(金) 18:49:090991デフォルトの名無しさん
2005/06/17(金) 19:07:500992デフォルトの名無しさん
2005/06/17(金) 19:25:26とすると
かなり数値が偏るんですが
対処法は無いでしょうか?
0993デフォルトの名無しさん
2005/06/17(金) 19:27:460994デフォルトの名無しさん
2005/06/17(金) 19:31:330995デフォルトの名無しさん
2005/06/17(金) 19:34:29ttp://tobysoft.net/wiki/index.php?Delphi%2FMersenne%20Twister
0997ななしへたぐらま ◆XcB18Bks.Y
2005/06/17(金) 20:38:10くだすれDelphi(超初心者用)その25
http://pc8.2ch.net/test/read.cgi/tech/1119008091/
以後の質問は上記スレでおねがいします.
>>992
起動時にRandomize手続きを実行していますか?
0998デフォルトの名無しさん
2005/06/18(土) 00:46:11乙です。
0999デフォルトの名無しさん
2005/06/18(土) 00:46:421000デフォルトの名無しさん
2005/06/18(土) 00:47:1410011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。