5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

くだすれDelphi(超初心者用)その53

1 :デフォルトの名無しさん:2011/06/27(月) 00:17:35.67
Delphi(デルファイ)について、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を
勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが
お礼はDelphiの布教と初心者の救済をお願いします。

<前スレ>
くだすれDelphi(超初心者用)その52
http://hibari.2ch.net/test/read.cgi/tech/1279506667/

<過去スレ>
DelWiki避難所(Delphi 関連の過去スレッド)
http://delwiki.info/?%E3%83%AA%E3%83%B3%E3%82%AF%2F%E3%82%B3%E3%83%9F%E3%83%A5%E3%83%8B%E3%83%86%E3%82%A3%2FDelphi%20%E9%96%A2%E9%80%A3%E3%81%AE%E9%81%8E%E5%8E%BB%E3%82%B9%E3%83%AC%E3%83%83%E3%83%89

2 :デフォルトの名無しさん:2011/06/27(月) 00:26:40.30
<関連スレ>
delphiで作った有名ソフトって何があるの?
http://hibari.2ch.net/test/read.cgi/tech/1135654787/
【Delphi互換!?】FreePascal/Lazarus その2【GPL】
http://hibari.2ch.net/test/read.cgi/tech/1261676778/

ネットワークゲーム作成のお勉強(Delphi専用スレ)
http://hibari.2ch.net/test/read.cgi/gamedev/1028278884/
Delphiでアクションゲームが作りたい!! Part2
http://hibari.2ch.net/test/read.cgi/gamedev/1027482533/
delphiでMMO
http://hibari.2ch.net/test/read.cgi/gamedev/1072515100/

では質問どうぞ。

3 :デフォルトの名無しさん:2011/06/27(月) 23:49:36.92
あ、立ってた
>1乙

4 :デフォルトの名無しさん:2011/06/29(水) 10:22:15.98
>>1


5 :デフォルトの名無しさん:2011/06/30(木) 18:32:47.76
質問です:ファイル選択ダイアログ何かが他のウィンドウの下になったりした場合、回避策はありますか?
ウィンドウハンドルとか取れるんだろうか?

6 :デフォルトの名無しさん:2011/06/30(木) 21:10:21.57
Delphi のバージョンが分からないのとファイル選択ダイアログが隠れた経験はないけど
http://www.freeml.com/delphi-users/1416
https://groups.google.com/group/delphicbuilder-ml-archive/browse_thread/thread/c1ad817181b0d82c?hl=ja
http://homepage1.nifty.com/MADIA/delphi/delphi_bbs/200406/200406_04060079.html


7 :デフォルトの名無しさん:2011/07/01(金) 08:56:57.78
つ [d] >>6

順番に試してみます。

普通に開発する分には隠れないのですが、TFormのCreateParamをオーバーライドして属性弄ってるので。。。

8 :デフォルトの名無しさん:2011/07/01(金) 09:49:29.57
低速PCでクリック連打やるとわりとどんなソフトでも起こり得るんじゃないの?
タスクマネージャ→実行タスク→手前に表示でダイアログが一番上に来るからこれをコードにして
間に噛ませば回避できそうだけど。

9 :デフォルトの名無しさん:2011/07/01(金) 12:49:05.78
delphimm.dllとborlndmm.dllって何ですか?

10 :デフォルトの名無しさん:2011/07/01(金) 12:52:44.60
メモリマネージャ

11 :6:2011/07/01(金) 18:42:47.82
>>7
そこを最初に書いてくれなきゃだわw

12 :デフォルトの名無しさん:2011/07/03(日) 23:17:50.42
デルファイに付いてる TeeChart (Standart 4)で聞きたいのですが、
Y 軸のスケールをソース上で指定するにはどう書くのでしょう?

スケールの
最大/最小値の自動調整 : Boolean
最大値 自動調整 : Boolean
最小値 自動調整 : Boolean
最大値、最小値

Chart1.
識者の方おねがいします

13 :デフォルトの名無しさん:2011/07/03(日) 23:56:58.28
何書いてあるのか読めないけど適当に書いたらできた
ttp://www.programfan.com/club/showtxt.asp?id=345826

Chart1.BottomAxis.Automatic := False;
Chart1.LeftAxis.Maximum := MaxY;
Chart1.MaxYValue(Chart1.LeftAxis);

14 :デフォルトの名無しさん:2011/07/05(火) 11:32:37.54
TScrollBox上に乗せたコントロールが範囲外か判定したいです。

Control.Left > ScrollBox.Width
で判定しようとすると、スクロールが有る場合、上手くいきません。
どういう判定式になるのでしょうか?

15 :デフォルトの名無しさん:2011/07/05(火) 16:39:49.59
ふと気がつくと、実行ファイルのサイズが18Mになってたんですが、普通ですか?

16 :デフォルトの名無しさん:2011/07/05(火) 20:30:59.14
>>15
リソースでクソでかい画像など入れてんじゅあねーの

17 :デフォルトの名無しさん:2011/07/05(火) 21:12:25.89
>>14
Control.Left > ScrollBox.ClientWidth

18 :14:2011/07/06(水) 12:16:34.20
つ [d] >>17

TScrollBoxで、スクロールバーが表示か非表示か判定難しいですね。
ScrollのVert/HorzにVisibleで問い合わせてもtureのみorz

19 :デフォルトの名無しさん:2011/07/06(水) 14:07:12.54
じゃあTScrollBoxを派生させて自分でコントロール作れ

20 :デフォルトの名無しさん:2011/07/06(水) 20:34:15.89
>>18
IsScrollBarVisible

21 :デフォルトの名無しさん:2011/07/06(水) 22:19:34.69
procedure TForm1.ApplicationEvents1Idle(Sender: TObject;
var Done: Boolean);
var
ScrollBarActive:Boolean;
begin
Done:=True;
with ScrollBox1.HorzScrollBar do
ScrollBarActive:=(IsScrollBarVisible) and (ClientWidth < Range);
if not ScrollBarActive then
with ScrollBox1.VertScrollBar do
ScrollBarActive:=(IsScrollBarVisible) and (ClientHeight < Range);

Caption:=BoolToString(ScrollBarActive);
end;


22 :デフォルトの名無しさん:2011/07/07(木) 00:04:24.50
仕事でDelphiやることになったわ
糞言語さんよろしく

23 :デフォルトの名無しさん:2011/07/07(木) 05:11:03.83
skypeの設定ウィンドウで使われている、TOptionsPanelって、カスタムコンポーネントですか?
TListBoxとか使って同じようなの作ろうとしたが、あの動きは難しい

24 :18:2011/07/07(木) 08:45:50.00
つ orz >>20 >>21

25 :デフォルトの名無しさん:2011/07/07(木) 08:50:25.12
orzを感謝に使うやつ初めて見た

26 :デフォルトの名無しさん:2011/07/07(木) 13:30:53.72
C#で言うところのHttpWebRequestのような、
Http接続関係のライブラリって、Delphi 2010やXEで標準装備されますか?
昔と同じくIndyでやるしかないですかね?

27 :デフォルトの名無しさん:2011/07/07(木) 15:44:39.49
Del7からIndyが標準装備でわ?

28 :デフォルトの名無しさん:2011/07/07(木) 15:52:22.35
Del7時代と違って、今ならサードパーティ製でなく標準で
ネット系ライブラリが用意されてるかもと思ったんですか、
やっぱりないんですね。
調べてみたらXEでIP*Works!も付けたみたいですが、
これSSLさえ対応してないし(別売)。。微妙

29 :デフォルトの名無しさん:2011/07/07(木) 15:59:28.67
Indyってサードパーティじゃなくてオプソでは?
メモリマネージャーもオプソのもの取り込んだし。
ソースとして取り込んで、製品に組み込むときにソース制御(確認だけとしても)してるわけだから、
標準と言えるんでわ?

30 :デフォルトの名無しさん:2011/07/07(木) 16:38:14.97
>>29
そうですね。
ただ、Del7のときにIndyのバグで散々な目にあったので、
Indyはあまり信用してないんですよね。
Indyが微妙だからIP*Worksも取り入れたような気もしますし・・

31 :デフォルトの名無しさん:2011/07/07(木) 18:44:39.26
indy以外でありますか?

32 :デフォルトの名無しさん:2011/07/08(金) 09:34:05.90
は? Indy自体オープンソースだから、バグは自分で直して使うんだよ。

33 :デフォルトの名無しさん:2011/07/08(金) 09:38:55.60
>31
商用ならいくつか

34 :デフォルトの名無しさん:2011/07/08(金) 19:13:06.41
ドイツもこいつも役立たねぇ奴らゔぁあじやのぉ


35 :デフォルトの名無しさん:2011/07/08(金) 23:30:07.78
UnicodeString s = L"\t";

C++Builderでこう書くようなのって、Delphiだとどうするのでしょうか?
Unicodeのエスケープ文字をソース内で指定したいのです

36 :デフォルトの名無しさん:2011/07/09(土) 04:01:40.10
s: UnicodeString := #9
http://docwiki.embarcadero.com/RADStudio/ja/%E5%9F%BA%E6%9C%AC%E7%9A%84%E3%81%AA%E6%A7%8B%E6%96%87%E8%A6%81%E7%B4%A0#.E6.96.87.E5.AD.97.E5.88.97

37 :デフォルトの名無しさん:2011/07/09(土) 12:21:14.14
>>36
ありがとう

38 :デフォルトの名無しさん:2011/07/11(月) 00:20:37.26
最近知ってちょっとショック受けてるんですが(プロじゃないってことで何卒ごかんべん)
ユーザーって、なんかダブルクリックの癖がついてるんですね。
職場でつかってる自作のソフトのことなんですが、ボタンダブルクリックに対するプロシージャは何一つ書いてません。

ダブルクリックされた場合に、シングルクリックの命令が2回実行されてしまうなんて可能性はありますか?
もしそうだとしたら、すべてのボタンに対して、ダブルクリックにexitとか書く必要が出てきたりしますか?

39 :デフォルトの名無しさん:2011/07/11(月) 00:57:16.07
>>38
> ダブルクリックされた場合に、シングルクリックの命令が2回実行されてしまうなんて可能性はありますか?

あるでしょうなぁ。ってぇか試してみればいいじゃない、自分で。OnDblClickがないコントロールは
OnClick-OnClickとイベントが発生するでしょう(ObDblClickがあればOnClick-OnDblClickになる)。

> もしそうだとしたら、すべてのボタンに対して、ダブルクリックにexitとか書く必要が出てきたりしますか?

さぁ。あなたのプログラムの作り次第でしょう。必要なら必要だろうし、不要なら不要。OnClickの
処理をしている間はコントロールやフォームのEnabledをFalseにするだけでも十分かもしれないし。

40 :デフォルトの名無しさん:2011/07/11(月) 01:06:32.03
シングルクリックとダブルクリックを判定するしきい値の設定=
コントロールパネルのマウス|ボタン|ダブルクリックの速度の
設定が「速く」になっているとか。

41 :sage:2011/07/11(月) 02:19:27.92
>>39,40

ありがとうございます。
>>試してみればいいじゃない
まったくそのとおりでした。

procedure AllBtnDblClick(Sender: TObject);
begin
exit{何も書かなくても一緒か};
end;

な感じの、虚しすぎる関数つくって全てのボタンのOnDblClickにあてがう
みたいなやり方しか思いつきませんが、取りあえず根性で修正します

42 :デフォルトの名無しさん:2011/07/11(月) 02:22:18.36
ごめんなさい
sage書く場所間違えた

43 :デフォルトの名無しさん:2011/07/11(月) 06:06:18.56
?そんなのいらないじゃん。

44 :41:2011/07/11(月) 17:18:52.78
>>43
無根性でやりとげられる何か楽な方法があるんでしょうか。
ヒントだけでもいただければ幸い

45 : 忍法帖【Lv=20,xxxPT】 【東電 88.0 %】 :2011/07/11(月) 18:23:51.54
>>38を見る限り、何の問題も起きてないと読み取れるんだけど

ダブルクリックされるとどんな問題が発生したのか書いてないし、
そもそも当該のコントロールがなんなのかも明らかにしてないね

46 :飛び立てガングリオン ◆D1fPvmHJCo :2011/07/11(月) 20:49:53.27
こゆこと?
private
{ Private 宣言 }
ClickedTime:Double;

procedure TForm1.Button1Click(Sender: TObject);
begin
if GetTickCount-ClickedTime<=GetDoubleClicktime then exit;
ClickedTime:=GetTickCount;
Memo1.Lines.Add(IntToStr(Tag));
Tag:=Tag+1;
end;
ClickedTime の処理しない場合Wクリックされたら確かに二つずつ増えてくね


47 :デフォルトの名無しさん:2011/07/11(月) 22:28:31.79
Delphiで作ったプログラムはC#やVBみたいに何かランタイムをインストールしてもらう必要はありますか?

48 :デフォルトの名無しさん:2011/07/11(月) 23:44:10.12
普通は不要

49 :デフォルトの名無しさん:2011/07/11(月) 23:45:51.88
ボタンのOnClickに「ボタン自身のEnableをFalseにする」でダメなの?
処理が終わったらEnableをTrueにすればいいし
基本的にボタンはそうやってるけど
何か勘違いしてたらスルーしておくれ

50 :デフォルトの名無しさん:2011/07/12(火) 08:43:39.46
>>41

>49 の例
procedure TForm1.Button1Click(Sender: TObject);
begin
Button1.Enabled := False;

// 処理中

Button1.Enabled := True;
end;

わざわざ Button1DblClick(Sender: TObject); を書く意味が分らない。

51 :デフォルトの名無しさん:2011/07/12(火) 10:16:39.73
俺ならTrueにする前にApplication.ProcessMessagesを挟んじゃうね。

52 :デフォルトの名無しさん:2011/07/12(火) 12:59:00.14
いらんだろ。.NETならともかく。

53 :デフォルトの名無しさん:2011/07/12(火) 21:30:53.23
まぁ、例外はちゃんと処理しないと二度と押せなくなるがw

54 :デフォルトの名無しさん:2011/07/12(火) 22:31:03.07
なんのためのtry...finallyだよ

55 :デフォルトの名無しさん:2011/07/13(水) 05:36:31.44
delphi6を使っています。
FindDragTargetでAllowDisabledをTrueにしているのですが、
Enabled=FalseやVisible=Falseの状態のボタンを見つけられません。
何が間違っているのでしょうか?
よろしくお願いします。

56 :デフォルトの名無しさん:2011/07/13(水) 05:45:49.26
ちゃんとスクリーン座標に変換している?
AllowDisabledはVisibleには効果なし
Visible=FalseだとAllowDisabledに関わらず引っ掛からない

57 :デフォルトの名無しさん:2011/07/13(水) 06:12:42.22
>>56
ありがとうございます。visibleに関しては了解いたしました。
スクリーン座標は試してみたのですが、やはりダメです。
enabled=trueのものはスクリーン座標、クライアント座標に関わらず見つかりますが、enabled=falseのものがやはり見つかりません。

GetCursorPos(pntXY);
target_component := FindDragTarget(pntXY, True);
if target_component <> nil then
begin
HelpMessage.Caption := target_component.Name;
end

記述はこうなっています。
引き続きよろしくお願いします。

58 :デフォルトの名無しさん:2011/07/13(水) 06:50:20.48
Enabled=Falseのボタンだとうまくいかないみたいだね
TWinControl.ControlAtPosを使えば?

59 :デフォルトの名無しさん:2011/07/13(水) 07:14:55.88
target_component := FindDragTarget(pntXY, True);
これだと確かにダメだね(うちのD6Per)
target_component := ControlAtPos(ScreenToClient(pntXY), True, True);
これならEnabled=FalseでもOk
バグかね?
そもそもDisableなコントロールにドロップすることなんか無いから気付かないよなあ

60 :デフォルトの名無しさん:2011/07/13(水) 22:03:49.42
TList.Add(Nil)とTList.Count:=TList.Count+1は同じこと?

61 :デフォルトの名無しさん:2011/07/13(水) 23:37:16.45
何に着目しているかにもよるねぇ
データの数なら同じだけど、処理速度はAddの方が速い
ちなみにAddを1000回繰り返すのとTList.Count:=TList.Count+1000では
後者の方が速くなる



62 :デフォルトの名無しさん:2011/07/14(木) 06:36:16.98
>>59
できました。ありがとうございます。

63 :デフォルトの名無しさん:2011/07/14(木) 07:04:03.27
連続ですいません。

1.ボタンをクリックすると、メッセージ表示用ラベルのcaptionを変更。
2.その後、画面のどこでもいいからクリックすると続きを表示。
3.表示するメッセージがなくなったらイベントを終了。

というonclickイベントを作ろうとしたのですが、
ラベルの変更がイベント終了まで適用されないようで困っています。

イベントの途中でcaptionの変更を適用する方法はないのでしょうか?

64 :デフォルトの名無しさん:2011/07/14(木) 07:41:23.29
>>63
Boolean の変数を作っておいて
procedure TForm1.ボタンクリックで
変数:= not 変数;
if 変数 then ボタン.caption:= '変更' else ボタン.caption:= 'もと';

procedure TForm1.全体クリック
if 変数 then 続き

分けちゃだめなの?

65 :デフォルトの名無しさん:2011/07/14(木) 08:03:28.78
>>63
Label1.Update;
Label1.Repaint;
Label1.Refresh;
好きなの使え

しかし>>64も指摘してるように、ちょっと作りが変な気もする
どうせならイベントハンドラを全部ここで見せてみたら?

66 :デフォルトの名無しさん:2011/07/14(木) 09:00:44.57
【概要】ゲーム(RPG)の戦闘シーン。
 ボタンの1個1個が装備・魔法などのコマンドに対応している。
 ボタンを押すと敵の行動も決定され、互いに選択したアクションを実行。

 BattleMain関数の中でLabel1.Repaintを使って解決しましたが、普通はこういう風にはしないのでしょうか?

procedure TForm1.Item1Click(Sender: TObject);
begin

case game_state of
//(中略)
BATTLE_ACTION_CLICK:
begin
if Item1.Tag = character[0].action then begin
   // 同じボタンを2回クリックすることで行動決定
game_state := BATTLE_ACTION_EXECUTE;
BattleMain;
// BattleMain関数の中で戦闘を処理する。
// 攻撃⇒命中、回避などをメッセージ用のcaptionで表示、プレイヤーのクリックを待つ。
// 同様に敵キャラクターの行動もcaptionで表示してプレイヤーのクリックを待つ。
// 一通り終わったら行動選択に戻る。
game_state := BATTLE_ACTION_CHOISE;
end else begin
character[0].action := ( Sender as TComponent ).tag;
end;
end;
end;
end;



67 :60:2011/07/14(木) 09:14:34.13
>>61
いきなりCount:=1000でもいいんですね。
どうもありがとう。

68 :デフォルトの名無しさん:2011/07/14(木) 23:09:12.43
DelphiのライブラリにC++のstd::mapみたいなクラスは存在してますか?
キーは文字列、値はTObject派生型です

69 :デフォルトの名無しさん:2011/07/14(木) 23:15:40.17
TStringsのStings[]とObjects[]で似たようなことはできるが。

70 :デフォルトの名無しさん:2011/07/15(金) 23:41:32.84
Application.ProcessMessagesでいいだろ

71 :デフォルトの名無しさん:2011/07/16(土) 20:12:58.75
bmp及びjpegファイルをTimage1に読み込むにはどうすればいいでしょうか。
ファイルをOpenDialog1で
一種類の拡張子(bmp)で読み込むことはできるのですが、
jpegのファイルを読み込むのがうまくいきません。
どちらでも読み込めるようにしたいのです。


72 :デフォルトの名無しさん:2011/07/16(土) 23:54:45.46
uses Jpeg;

73 :デフォルトの名無しさん:2011/07/17(日) 06:02:06.79
TForm1以外のクラスから、TForm1内のTImageやTLabelを操作しようとすると
"メソッド識別子が必要です"と言われてコンパイルできません。
TForm1.ImageList1.Draw
といった形で指定しているのですが、何がいけないのでしょうか?

74 :デフォルトの名無しさん:2011/07/17(日) 06:51:08.54
Form1.ImageList1.Draw
が正しい。
T付きじゃインスタンスではなく型に対して
操作しようとしてるからエラーになる。

75 :デフォルトの名無しさん:2011/07/17(日) 08:39:31.31
事実上ヌルポインタ操作だものな

76 :デフォルトの名無しさん:2011/07/17(日) 09:07:41.42
>>74
なるほど、考えてみればそのとおりですね。ありがとうございます。

77 :71:2011/07/17(日) 09:17:39.84
レスありがとうございます。
最初の質問ですが、さらに質問です。
Image1でbmpを表示させるときは下記でできたのですが、

procedure TForm1.Button4Click(Sender: TObject);
Var
 BitMap : TBitMap;

begin
if OpenDialog1.Execute then //オープンダイアログボックスの呼び出し
begin

BitMap := TBitMap.Create;
//ビットマップにファイルをロードする。
BitMap.LoadFromFile(OpenDialog1.FileName);
//イメージにビットマップを渡す。
Image1.Picture.Bitmap := BitMap;
//解放する
BitMap.Free;
end;
end;

これをbmpでもJpegでも読み込みできるようにするにはどうすればいいでしょうか。

78 :デフォルトの名無しさん:2011/07/17(日) 09:34:26.89
Image1.Picture.LoadFromFile(OpenDialog1.FileName);

79 :デフォルトの名無しさん:2011/07/17(日) 10:07:06.65
例えば画像処理にGDIPLUS.DLLを利用する
これをDELPHIで操作するのがGDIPAPI.PAS GDIPOBJ.PAS ググればどこかにある

BMPとJPGとPNGに対応するはず 画像処理用のDLLだから縮小拡大とかいろいろできる

bmp: TGPBitmap;
bmp := TGPBitmap.Create(filename); こんな風にビットマップを作れる

80 :71:2011/07/17(日) 10:19:04.60
>>78
できました。
ありがとうございます。

81 :71:2011/07/17(日) 19:16:11.29
>>79
こちらの方法でもできました。ありがとうございました。

82 :デフォルトの名無しさん:2011/07/18(月) 06:03:47.90
クラス内にコンポーネントを作成する方法を教えてください。

constructor TestClass.Create;
begin
TestLabel := TLabel.Create(Form1);
TestLabel.Caption := 'test';
TestLabel.Enabled := true;
TestLabel.Visible := true;
TestLabel.Top := 400;
TestLabel.Left := 550;

TestLabel.Refresh;

end;

このような形で宣言しているのですが、TestClassを作成してもラベルが画面に表示されません。

83 :デフォルトの名無しさん:2011/07/18(月) 06:08:08.56
試してないけどTestLabel.Parentを設定してみて

84 :デフォルトの名無しさん:2011/07/18(月) 07:51:55.44
すいません、実はtwincontrolが何だかわかっていません。
parentに設定するtwincontrolはどうやったら調べられるでしょうか?

85 :デフォルトの名無しさん:2011/07/18(月) 08:08:33.28
Form1でいいんじゃね

86 :デフォルトの名無しさん:2011/07/18(月) 08:21:06.41
>>84
Parentには、張付け先の変数名を指定する。
フォームに直張りするなら、TestLabel.Parent:=Form1;
TPanelとか、TGroupBoxならその変数名。

Createに渡している変数(今回の例で言えば、Form1)は、自動でそのTLabelを後片づけしてくれる人。通常は、張付け先のルート(大抵はTFormか)を指定する。
諸事情により、後片づけを自分でやるときは、Createの引数にnilを渡す。ただし画面に表示するオブジェクトを自分で後片づけすることは、まずないと思う。

87 :デフォルトの名無しさん:2011/07/18(月) 09:33:24.05
たぶんコンストラクタじゃなくてActiveになったときに処理すべきか
コンストラクタだとFormとの作成順がおかしくなるんじゃないの

88 :デフォルトの名無しさん:2011/07/18(月) 11:06:51.83
>>83-87
みなさんありがとうございます。Form1を指定でうまくいきました。
しかし今度は、TestClass.FreeをしてもForm1に表示したラベルが消えなくなってしまいました。
TestClassのデストラクタでTestLabelも解放してるのですが、画面に残ったままです。
どうか消し方をお教えください。

>>87
Formが作成され終わった後にしか作成されないクラスなので、
その点は多分大丈夫じゃないかと思います。

89 :デフォルトの名無しさん:2011/07/18(月) 14:54:06.57
>>88
LabelのParentにnilは指定して見たかい?

90 :デフォルトの名無しさん:2011/07/18(月) 17:18:28.06
これは設計からして間違ってるだろ・・・

91 :デフォルトの名無しさん:2011/07/18(月) 21:03:54.70
間違ってるけど、本人がやりたいんならほっとけ、という気も
普通はFrameとか使うだろうが

92 : ◆XcB18Bks.Y :2011/07/19(火) 08:39:40.89
>>88
「FTest := TestClass.Create;
 の後にFTestを解放せずに
 FTest := TestClass.Create;
 を実行してしまって
 TestClass型の実体を間違えて二つ作ってしまったので
 一つを解放してもう一つが残っている」

に一票。



93 :デフォルトの名無しさん:2011/07/19(火) 11:02:58.67
オブジェクト指向を根本的に勘違いしていると思われ

94 :デフォルトの名無しさん:2011/07/19(火) 15:24:21.68
DLLでフォームを扱うときって、Application.Handleだけ渡すのと
ApplicationとScreenを変数ごと渡す方法があるらしいけど
どっちが正解?

95 :デフォルトの名無しさん:2011/07/19(火) 15:37:30.96
Packageにする

96 : ◆XcB18Bks.Y :2011/07/19(火) 16:53:39.59
>>93
でもオブジェクト指向設計とか
オブジェクト指向プログラミングってむずかしいですね。

C++でも一緒でしょうけれど
漠然とオブジェクト指向言語に触れても
全くオブジェクト指向プログラミングは出来ませんし、
オブジェクト指向プログラミングの書籍って難解なのが多くて…
もっと簡単になればいいのにって今でも思います。


97 :デフォルトの名無しさん:2011/07/19(火) 16:54:33.92
どこが難解なんだ...

98 :デフォルトの名無しさん:2011/07/21(木) 11:13:07.78
くだらないんだけど、
PString、@String、PChar(String)は同じ?

99 :デフォルトの名無しさん:2011/07/21(木) 20:20:06.07
型が違うんじゃまいか?

100 :デフォルトの名無しさん:2011/07/21(木) 21:30:46.94
PStringの^はStringだけど
PCharの^はCharですなぁ


101 :デフォルトの名無しさん:2011/07/21(木) 22:57:22.68
^は変数(の後)につけるときは逆参照だけど型(の前)につけるとポインタ型になるからその言い方は紛らわしい

102 :デフォルトの名無しさん:2011/07/22(金) 09:34:38.90
PStringはStringへのポインタで、中身はString型変数のアドレス。
@StringはStringの参照で、評価値はString型変数のアドレス。
PChar(String)はStringに対する変換で、評価値は空文字列に対してはnil、中身があれば
@(String[1])、つまり先頭文字のアドレス。

103 :デフォルトの名無しさん:2011/07/22(金) 09:42:36.54
ごめん、頭わるくて。
String変数のアドレスと、先頭文字のアドレスってのは違うの?

104 :デフォルトの名無しさん:2011/07/22(金) 11:26:46.55
String型変数は実際はポインタで、Stringの記憶領域を指している。
ここの部分の構造はC文字列と互換性があるのでPCharでキャストすると
Cのchar *またはwchar_t *として使える。

105 :デフォルトの名無しさん:2011/07/22(金) 15:14:35.62
ほんとすまないんだけど、String型をShortStringに変えたとき
PChar(String)だった部分は、@ShortStringでいい?

106 :デフォルトの名無しさん:2011/07/22(金) 15:37:46.38
ShortStringとか使うのはなぜ?いまさらありえないっしょ。
とはいえ、@Str[1]でいいんじゃまいか。

107 :デフォルトの名無しさん:2011/07/22(金) 16:20:57.49
いやね、array[0..n] of Stringとか使うと
なんか知らんけどmemcheckがリークしてるって出るのよ。


108 :デフォルトの名無しさん:2011/07/22(金) 16:56:19.94
array [0..9] of Char;
じゃなく?

109 :デフォルトの名無しさん:2011/07/22(金) 17:07:25.24
文字列の配列っす。
けどなんで?

110 :デフォルトの名無しさん:2011/07/22(金) 18:03:22.30
文字列の配列なんて普通はリークしないから。

111 :デフォルトの名無しさん:2011/07/22(金) 22:01:19.26
あとFastMM4つかうといいよ。

112 :デフォルトの名無しさん:2011/07/23(土) 15:00:34.47
インスタンスをfreeした後、そのインスタンスがnilでない場合、という条件をつけた処理が実行されてしまいます。
freeを行う=nilになる、というわけではないのですか?

113 :デフォルトの名無しさん:2011/07/23(土) 15:07:58.06
それじゃあ聞くけどFreeAndNilって何のために存在するの?

114 :デフォルトの名無しさん:2011/07/23(土) 15:08:29.50
ならない。
FreeAndNilでも使ってみてはどうだろう。

115 :デフォルトの名無しさん:2011/07/23(土) 16:50:50.05
>>113
くだすれなのに
なんでわざわざ嫌みな書き方するの?
114みたいに書けないん?

116 :デフォルトの名無しさん:2011/07/23(土) 17:32:56.71
なぜFreeAndNilを作らなければならない仕様にしたのか、がわからん。

117 :デフォルトの名無しさん:2011/07/23(土) 17:44:38.91
C言語のfree、C++のdelete、COMのQueryInterfaceのReleaseとかもnil相当にはならないよ?

118 :デフォルトの名無しさん:2011/07/23(土) 17:45:52.69
「nilで埋める = メモリを0という数値で埋める(代入する)」

よって、処理速度の観点から見れば、nilで埋めない方が、代入処理がない分だけ高速に動作します。
けど、近年のポインタをどうこうするような、難解なプログラムを開発する時、安全の観点から言えばnilで埋める方が安全ですよね。

まだプロセッサの性能が低い & プログラムが単純だった時代から存在している言語だから、必然的に前者の実装になって、今に至っているのではないでしょうか。

119 :デフォルトの名無しさん:2011/07/23(土) 21:13:34.53
nilで埋めるって書き方にものすごい違和感を感じる

120 :デフォルトの名無しさん:2011/07/24(日) 00:42:33.26
クラスのメソッドから変数に代入なんて出来ないだろ
だからこそFreeAndNilなんてのがあるわけで

121 :デフォルトの名無しさん:2011/07/25(月) 12:00:31.66
del7ってwindows7でも使える?

122 :デフォルトの名無しさん:2011/07/25(月) 14:21:01.09
FreeAndNilのコード見てみたけど、nilの後にFreeしてるね。
そういうのありなんだ。

123 :デフォルトの名無しさん:2011/07/25(月) 15:33:04.20
確実にnilにするためにそうなってる

124 :デフォルトの名無しさん:2011/07/25(月) 17:53:25.14
>>121
逆にこの互換性バリバリを売りにしてる歴代Windowsでなぜ今回使えなくなると思った

>>122
「ありなんだ」ってどういうこっちゃね
別の変数に入れただけじゃん

125 :デフォルトの名無しさん:2011/07/25(月) 21:53:51.31
>>124
使用に際して、何か不具合は起きないか?ってききたかったんじゃない


126 :デフォルトの名無しさん:2011/07/25(月) 23:24:03.49
インストールでコケるソフトも多いが。


127 :デフォルトの名無しさん:2011/07/26(火) 04:43:16.25
便乗でスマソ
xp32bitから7の64bitに変えたいんだけどDEL7 おK?

128 :デフォルトの名無しさん:2011/07/26(火) 05:33:50.42
デバッガ動かないんじゃなかったっけ?非公式パッチ出ていたっけ?

129 :デフォルトの名無しさん:2011/07/26(火) 06:17:43.91
XP mode推奨。

130 :デフォルトの名無しさん:2011/07/26(火) 10:03:17.68
TMainMenuでメニューを作って、アクセラレータを付けています。
Windows7で実行しても常時表示されたままになってしまい、
普通は消えていてALTキー押すと表示されるような動作になりません。
何が悪いのでしょうか?

131 :デフォルトの名無しさん:2011/07/26(火) 15:24:09.89
>>112
ヌルで確かめるんじゃなくて、Assign(hoge) でインスタンスを確かめれば?

132 :デフォルトの名無しさん:2011/07/26(火) 15:33:17.49
意味は一緒だ

133 :デフォルトの名無しさん:2011/07/26(火) 16:36:19.56
Assignedはnilと比較できないものに使うんだよ
例えば引数のない関数とかな
ポインタの有効性を調べる関数なんて使ってるとこ見たことない

134 :デフォルトの名無しさん:2011/07/26(火) 16:59:59.73
ちょっと語弊があると思う。以前Allen Bauerか誰かのBlogにあったと思うけど、
Assignedには実際には2つの使い方があって、単なるポインタに対しては
<> nilだけれども、クラスのメソッドポインタの場合はメソッドポインタの部分だけを
取り出して<> nilしてる、みたいな。もちろんそのポインタが指している領域が
有効かどうかなんて判別をすることができないのは>>132の指摘のとおり。

135 :デフォルトの名無しさん:2011/07/26(火) 18:54:49.46
違った、正しく指摘してたのは>>133ね。

136 :デフォルトの名無しさん:2011/07/26(火) 19:37:54.03
>例えば引数のない関数とかな
関数を Assigned で調べてどうする。って突っ込みが入らんな。
引数を持たない(ポインタを返す)関数を示すポインタ。のことだな。
古きなつかしき TurboPascal の時代、まだ Assigned なんかなかった時代では

if @Func = nil then

で、引数を持たない(ポインタを返す)関数へのポインタが nil かどうか判断できる
ここはくだすれなので、説明しておくと

  if Func = nil then

は引数を持たないポインタを返す関数の返した値が nil かどうかを判定するコード。
関数ポインタ Func そのもののアドレスをとるには

@@Func

となる。

137 :デフォルトの名無しさん:2011/07/27(水) 17:16:59.05
と、今まではされてきたんだけど、実は>>134も実際の挙動とは違う。
正確に言うと、8バイトあるメソッドポインタのうち、3バイト目と4バイト目が0かどうかチェックする、が正しい。
一応この挙動にはちゃんとした理由があるんだけど、何故こういう風になってるか分かる人はさすがにもういないかな…?

138 :デフォルトの名無しさん:2011/07/27(水) 19:15:00.26
RTTI依存か?

139 :デフォルトの名無しさん:2011/07/28(木) 02:36:57.21
beta7.5 で試したら x64 でも 2バイトしかチェックしていないけど、これでいいのか?

140 :デフォルトの名無しさん:2011/07/29(金) 16:07:00.67
procedure TTestThread.Execute;
var
  i: Integer;
begin
  SetName;
  { ToDo : スレッドとして実行したいコードをこの下に記述してください }

  for i := 0 to 1000 do
  begin
    Sleep( 1 );
  end;

  OutputDebugString( PAnsiChar( 'ThreadEnd:' + IntToStr( i ) ) );
  OnTerminate(self);//追加
end;


141 :デフォルトの名無しさん:2011/07/29(金) 16:25:30.90
なんや

142 :デフォルトの名無しさん:2011/07/29(金) 17:18:51.28
今のdelphiってウインドウのID調べる奴とか付いてるの?

143 :デフォルトの名無しさん:2011/07/29(金) 18:09:32.12
ないみたい

144 :デフォルトの名無しさん:2011/07/29(金) 18:19:08.38
>>140
OnterminateをExecuteの中で呼ぶなよ
http://docwiki.embarcadero.com/RADStudio/ja/%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%A2%E3%83%83%E3%83%97_%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AE%E6%9B%B8%E3%81%8D%E6%96%B9

145 :デフォルトの名無しさん:2011/07/29(金) 20:42:53.10
皆さんはゼスチャーを使うソフトって作ってる?

146 :デフォルトの名無しさん:2011/07/30(土) 21:08:08.12
ジェスチャーなら

147 :デフォルトの名無しさん:2011/07/31(日) 09:07:33.67
うお、はずかしい

148 :デフォルトの名無しさん:2011/08/02(火) 19:02:55.24
加藤チャー

149 :デフォルトの名無しさん:2011/08/03(水) 09:38:42.26
下記のコードを書きました。

procedure TForm1.ComboBox1KeyPress(Sender: TObject; var Key: Char);
begin
ComboBox1.OnSelect:=nil;
if Key='a' then Key:='b';
ComboBox1.OnSelect:=ComboBox1Select;
end;

キーボードが押された時はSelectイベントが一時的に無効になって、KeyPressイベントが
終わったら有効になるつもりだったのですが、Selectイベントも起動してしまいます。

キーが押された時はSelectイベントが無効になるようにするにはどうしたらいいでしょうか?

150 :デフォルトの名無しさん:2011/08/03(水) 09:46:46.11
ちゃんと動くけど?

151 :149:2011/08/03(水) 10:34:45.81
ありがとうございます。
そうですか、select イベント起きませんか。
もう少し調べてみます。

152 :149:2011/08/03(水) 12:13:08.69
コンボボックスのイベントの発生タイミングを調べていたんですが、
オートコンプリートを有効にしておいて、エディット部分に入力をした時に
オートコンプリートに合うデータが有った場合に入力補完される訳ですが、
このタイミングでクリックイベントも発生します。
これっておかしいと思うのですが、クリックしてないのにクリックイベントが起きるのを
抑える方法って有りますでしょうか?

環境はDel7+XPsp3です。

よろしくお願いします。


153 :デフォルトの名無しさん:2011/08/03(水) 16:44:08.22
オートコンプリート切れ
いや割と真面目に

154 :デフォルトの名無しさん:2011/08/03(水) 16:49:43.62
ソース見てみたがオートコンプリートが発動してアイテムが変更されるとClickメソッドと
Selectメソッドが呼び出される。まぁオートコンプリートは該当アイテムがあったらそれを
選択する動作をエミュレートするのでおかしい動作ではない罠。

155 :デフォルトの名無しさん:2011/08/04(木) 14:29:50.68
遅くなりましたが、>>153、154さん、ありがとうございました。
取りあえず、キープレスイベントが起きたかどうかをフラグで
確認して、クリックイベントを実行orスルーさせるようにしました。

156 :デフォルトの名無しさん:2011/08/04(木) 22:08:43.09
関数などの末尾にstaticがあるやつとないやつは何が違うんでしょうか…。

class procedure iyan; static;
class procedure iyan;

↑メソッドですが、この2つに違いはありますか?

157 :デフォルトの名無しさん:2011/08/05(金) 02:28:50.06
暗黙の引数 Self があるかないか。


158 :デフォルトの名無しさん:2011/08/05(金) 12:59:47.41
上はクラスに所属してる関数、
下はクラスメソッド

159 :デフォルトの名無しさん:2011/08/06(土) 20:51:57.38
ImageListに横幅300くらいの大きい画像を登録しようとするとdelphiが落ちてしまいます。
小さなサイズに分割するしかないのでしょうか?
また、これはマシンスペックに依存する現象でしょうか?

160 :デフォルトの名無しさん:2011/08/06(土) 22:56:46.83
pcodeさんは生きてますか?

161 :デフォルトの名無しさん:2011/08/06(土) 23:57:05.96
バージョンも書かずに質問とな?

その画像壊れてんじゃない?一回ペイントブラシかなにかで開いて保存しなおしてみたら?

162 :デフォルトの名無しさん:2011/08/07(日) 01:46:43.93
超ヘボPCで巨大画像扱おうとしたとか

163 :デフォルトの名無しさん:2011/08/07(日) 09:37:38.31
他の箇所のメモリ破壊が、ImageListの所で発現したとか

164 :デフォルトの名無しさん:2011/08/07(日) 10:48:49.92
ご回答ありがとうございます。
やはり、PC依存なのでしょうか。
バージョンは6personalです。
元がpngの画像を変換ソフトでbmpにして使うのがまずいのかと思い、
簡単なbmpを作成して新規のFormにImageListだけ置いて試してみたところ、
やはり登録はできるのですが起動しようとすると固まってしまいます。
(登録しようとすると落ちると書きましたが、登録後起動時に落ちるの誤りです)
最新ではないものの超ヘボということはないと思うのですが、一般的な症状ではないようですね。
分割すれば対処できない問題ではないので、その方法で進めようと思います。



165 :デフォルトの名無しさん:2011/08/07(日) 12:15:55.45
6Proで試してみたけど起動時じゃなくてリンク時にこけてるね
PNGに変換しなきゃいけないけどPngComponentsのPngImageListなら
1280x1024ぐらいはいけた

166 :デフォルトの名無しさん:2011/08/07(日) 12:50:11.71
XP、Delphi6Pro、BDE(TDatabase、TTable、TDBGrid)、MSAccess
グリッドに直接入力
数値フィールド(小数点あり)に入力するとき

・桁数オーバーのとき
・数値として正しくない「-1.2.3-」とか入力されたとき

例外エラーが出る

どう対処すればいいか教えてくだされ
(例外を拾える場所?入力制限?)


167 :デフォルトの名無しさん:2011/08/07(日) 18:12:04.34
例外で出て入力制限されてんだから何か問題でも?
それが嫌?でどう対処したいのかかかねぇと答えようがねぇ。

168 :166:2011/08/07(日) 20:11:26.05
すまん
赤×のエラーがイヤなんで
「数値を入力してください」とかメッセージ出したい

169 :デフォルトの名無しさん:2011/08/07(日) 20:26:04.04
>>168
tryとかで例外処理じゃないの

170 :169:2011/08/07(日) 20:29:51.93
>>169
tryで拾えるイベントが見あたらないんだ

171 :デフォルトの名無しさん:2011/08/07(日) 21:13:55.11
>>170
なんでもかんでもエラーが起きたら処理で良いんでないか
tryの範囲を狭くしとけば、おかしなエラーは拾わないでしょ

172 :166:2011/08/07(日) 21:35:08.36
>>171
すまない書き方が悪かった 名前欄も間違った

「どこにtry〜exceptを書けば例外を拾えるかわからない」
「-1.2.3-」って入力してエンターでEDatabaseErrorになるわけだが
具体的にどの瞬間に例外が発生するのかわからない
IDEも現在どこにステップがあるのか教えてくれん

173 :デフォルトの名無しさん:2011/08/07(日) 22:02:31.08
>>166
> XP、Delphi6Pro、BDE(TDatabase、TTable、TDBGrid)、MSAccess
> グリッドに直接入力

す、すまん
データベースやTDBGridが絡んだのは、よく分からん。
良く読んでなかったよ。

ただ、どこに書いて良いか分からないならエラー処理用のプロシージャーを書いて
ApplicationEventsかApplicationのOnExceptionに登録すれば良いんじゃいかな

174 :デフォルトの名無しさん:2011/08/07(日) 22:09:14.97
ググったらこんなんあった
http://support.embarcadero.com/article/37435

procedure TForm1.MyExcept(Sender: TObject; E: Exception);
begin
if E is EDatabaseError then
MessageDlg('Trapped exception', mtInformation, [mbOk], 0)
else
{調べたい例外でなかった場合};
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Application.OnException := MyExcept;
end;

175 :166:2011/08/07(日) 22:54:34.14
バッチリ出来たよ ありがとう
欲を言えばどのフィールドでエラーが出たか取りたい
Sender、Eでは取れなかった
他のやり方もあれば是非。


176 :デフォルトの名無しさん:2011/08/07(日) 23:52:03.01
D6のTListViewでグループ化の機能を使うのは難しいのでしょうか?

177 :デフォルトの名無しさん:2011/08/08(月) 00:34:19.13
自分で実装するのが無理だというのであれば、はい

178 :デフォルトの名無しさん:2011/08/08(月) 00:49:19.45
需要無いってわけじゃなさそうだし海外にでも落ちてるんじゃないの

179 :デフォルトの名無しさん:2011/08/08(月) 00:58:12.82
>>175
とりあえず例外が起きている場所と原因の特定が必要だと思う。コンパイラオプションのデバッグ版DCUを使うに
チェックオンして、例外発生でブレークしたところで呼び出し履歴を遡って原因箇所(例外を投げる関数を
呼び出しているところ)とその理由(エラー側に分岐する原因となる変数とその内容)を確認、という手順で。

180 :デフォルトの名無しさん:2011/08/08(月) 01:00:13.63
こういうの?
ttp://delphi.about.com/od/vclusing/a/delphi-list-view-groups-expand-collapse-items.htm

181 :デフォルトの名無しさん:2011/08/08(月) 14:12:47.01
>>180
Windowsは2000までしか使ったことがないの?

182 :デフォルトの名無しさん:2011/08/08(月) 17:11:33.32
いや、試してないんで。Windows XP以降ではうまくいかんの?

183 :デフォルトの名無しさん:2011/08/08(月) 22:07:17.55
>>175
TField.OnValidateイベントはもう試した?

184 :デフォルトの名無しさん:2011/08/08(月) 22:09:24.49
>>166
TFieldのOnValidateとか、TDataSetのOnEditErrorとかは使えないの?
入力エラー時のメッセージを変えたいだけならConstraintErrorMessageでできそうだけど

185 :デフォルトの名無しさん:2011/08/09(火) 15:51:37.30
呼び出し元を終了させる関数を作る方法を教えてください。
functionA 内で functionB を呼び出し、functionB の中で条件判定をして場合によっては Exit を返し functionA を終了させるというようなことをやりたいのです。
関数ポインタで検索してみましたが参考になりそうなことは見付かりませんでした。
よろしくお願いします。

186 :デフォルトの名無しさん:2011/08/09(火) 15:57:19.01
例外処理で一気にAbortするか
function functionB(var exitcode: integer): xxx;
としてexitcodeにこの変数の値読んで抜けてくれというコードをfunctionAに記述する

まあ後者が無難

187 :185:2011/08/09(火) 16:03:58.85
>>186
では functionA 側で Exit を呼び出すのが無難ということですね。
関数一つ記述してコードをすっきりさせたかったのですが後者でやることにします。
速レスありがとうございました。


188 :デフォルトの名無しさん:2011/08/09(火) 16:34:26.90
>>185
Anonymous Methodsで検索した?

189 :185:2011/08/09(火) 16:48:35.20
>>188
ごめんなさい、Delphi 5 です……。

190 :デフォルトの名無しさん:2011/08/09(火) 23:26:55.72
>>188
それでならやる方法があるとでも言いたいようだけど無理でしょ

191 :185:2011/08/09(火) 23:53:22.52
結局無理なんですか。
配列に関数ポインタ入れて判定関数の戻り値を添字にすればいいかなとも思ったんですが結局よくわかりませんでした。
もう if 判定関数 then exit; と書くことにします。
色々ありがとうございました。

192 :デフォルトの名無しさん:2011/08/10(水) 00:16:30.50
例外でやればいいじゃないの。

procedure functionA
begin
  try
    functionB;
  except



end;

193 :デフォルトの名無しさん:2011/08/10(水) 00:23:09.27
↑誤投稿

procedure functionA;
begin
  try
    functionB;
    functionB2;
    functionB3;
    functionB4;
  except
    on EUserBreak do …;//←ほかの例外と区別するため自分で作った例外クラス使った方が良いよ
  end;
end;

procedure functionB;
begin
  raise EUserBreak.Create('中止しますた');
end;



194 :デフォルトの名無しさん:2011/08/10(水) 01:47:06.45
独自に作らなくてもそういう時のためにAbortっていう手続きとEAbort例外が昔から組み込まれてるんだけどね
ま 知らないんだろうけどね

195 :デフォルトの名無しさん:2011/08/10(水) 02:34:46.44
んぅ?区別するために独自の例外を発生させているのでは?

196 :デフォルトの名無しさん:2011/08/10(水) 09:14:46.61
EAbortはAbortを呼ばない限り発生しないので区別する必要がありませんよ
ご存じでした?

197 :デフォルトの名無しさん:2011/08/10(水) 09:24:34.94
Abortも含めて区別するためでしょう。


198 :デフォルトの名無しさん:2011/08/10(水) 09:33:22.80
うぜーからお前らは質問した人にだけ、聞かれたことだけを答えとけばいいよ

199 :デフォルトの名無しさん:2011/08/10(水) 11:43:54.19
まるでXRayみたいな物言いだな


200 :デフォルトの名無しさん:2011/08/10(水) 23:29:35.16
>>197
何と?

201 :デフォルトの名無しさん:2011/08/11(木) 12:26:01.18
>>200
Abortをどんな用途で使っている?

202 :デフォルトの名無しさん:2011/08/11(木) 13:27:21.26
DelphiからPDFファイルの作成者やキーワードを取得したいんだけど簡単な方法ないかね?


203 :デフォルトの名無しさん:2011/08/11(木) 21:11:19.33
プロパティの read と write のスコープを別々にする方法があれば教えてください。

private
property foo: Boolean write Ffoo;
public
property foo: Boolean read Ffoo;

としたら多重定義だと怒られました。
read を public に、write を private にする方法はありませんか?

204 :デフォルトの名無しさん:2011/08/11(木) 21:48:05.45
プロパティはreadだけ公開して、プライベートではFfooをそのまま使う

205 :203:2011/08/11(木) 22:27:57.43
ああ……やはりそれですね。わかりました。ありがとうございます。

206 :デフォルトの名無しさん:2011/08/11(木) 22:58:30.98
>>201
何と?

207 :デフォルトの名無しさん:2011/08/11(木) 23:02:17.17
そもそも「プロパティの read と write のスコープを別々」にできる言語ってあるの?

208 :203:2011/08/11(木) 23:13:44.70
ないんですか?
Delphi 以外ではプロパティを使ったことがないのでわかりませんが。

209 :デフォルトの名無しさん:2011/08/11(木) 23:24:28.01
C#
つ ttp://msdn.microsoft.com/ja-jp/library/75e8y5dd%28v=vs.80%29.aspx

でもほかの言語でサポートされないような機能を
積極的に使う気にはなれないなぁ

210 :デフォルトの名無しさん:2011/08/12(金) 02:35:36.22
C#のあれはサブクラスで非公開にしたプロパティにアクセスすると、
エラーにならずにスーパークラスのプロパティにアクセスしてしまうという
設計上のミスとしか考えられない酷い仕様があるからな…

211 :デフォルトの名無しさん:2011/08/13(土) 00:10:09.71
プロジェクトを開くと、突然
「クラス〜が見つかりません。エラーを無視して続けますか?」と出るようになりました。
見つかりませんと言われているクラスは自作のTframeクラスで、Unit1のusesで宣言しています。
何がいけないのでしょうか?

212 :デフォルトの名無しさん:2011/08/13(土) 00:20:17.43
>>211
Tframe の置場所にパスが通っていないのでは?
今作っているプロジェクトと同じフォルダに入れれば解決するかと。

213 :デフォルトの名無しさん:2011/08/13(土) 00:31:00.26
IDEにインストールしないといけないんじゃなかった?

214 :デフォルトの名無しさん:2011/08/13(土) 00:40:49.57
>>212
すべて同じフォルダに入っています。
ただ、プロジェクトを作成している途中で参考用に
他のフォルダに入っている別のプロジェクトのpasを開いて閉じたりはしていました。
その辺りで何かプログラムの方で混乱が起きたのでしょうか?

215 :デフォルトの名無しさん:2011/08/13(土) 16:01:32.95
Personalの6を使っています。

Excel := CreateOleObject('Excel.Application');
WorkBook:=Excel.Application.WorkBooks;
 WorkBook :=Excel.WorkBooks.Open(FileName := 'data.xls', readOnly := True);
WorkSheet := WorkBook.WorkSheets[1];
name := WorkSheet.Cells[1,1].Value;

このようにエクセルのデータを読み込もうとしているのですが、ファイルが見つからないと
メッセージが出ます。excellはもちろん同じディレクトリに置いてあります。
相対パスで指定しているのがいけないのでしょうか?

216 :デフォルトの名無しさん:2011/08/13(土) 16:07:32.51
>>215
フルパスで試してからまた来てね

217 :デフォルトの名無しさん:2011/08/13(土) 19:57:54.13
>>216
できました。
フルパスだと他のPCで利用できないのでは……と思っていたのですが、
自分の位置を取得してフルパスにすればいいのだと気づきました。
ありがとうございます。

218 :166:2011/08/14(日) 13:49:33.41
>>183
>>184
遅くてすまない
OnValidateは数値の桁数オーバーなら拾えそうだが
文字を貼り付けたりするとやっぱりイベント発生前にエラー出るんだな
OnEditErrorは発生しない
ConstraintErrorMessageを設定しといても変わらなかった 謎

219 :デフォルトの名無しさん:2011/08/15(月) 22:22:26.30
スパイ系のツールってなに使ってる?

220 :デフォルトの名無しさん:2011/08/16(火) 01:06:44.27
MS謹製

221 :デフォルトの名無しさん:2011/08/16(火) 11:08:52.80
それってフリーで落とせるのけ?
ていうか、昔のdelに付いてた奴って7とかでも通用すんの?

222 :デフォルトの名無しさん:2011/08/17(水) 12:18:28.33
Delphi2010を使用しています

class destructor Destroy;

をprivate節に置くと、コンパイル時に警告「一度も呼ばれることのないメソッド」が発生するのですが、これはなぜなんでしょうか。
class constructor/destructorはコードから呼ぶものではなくて、initialization/finalization的な呼ばれかたをするものだという感じのことがヘルプに書いているのに…。
constructorのほうは、このような警告が表示されません。

223 :デフォルトの名無しさん:2011/08/17(水) 15:32:10.57
デストラクタ ってclassメソッドに出来たっけ? もし出来たとしてどんな意味があるんだろ?

インスタンスオブジェクトに対して廃棄したいからデストラクタを作るんじゃないとしたら、どういう時に呼ぶの?

どっちにしても、誰かが明示的に呼ばないとそのコードは呼ばれないのだから
一度も呼んでないならそのメッセージが出て当然だと思うが

普通は Free メソッドの中で呼ぶから

 destructor Destroy; override;

となる筈


224 :デフォルトの名無しさん:2011/08/17(水) 16:07:28.75
コード自体はちゃんと呼び出されてるなら
単にコンパイラの警告のバグなんじゃね

関係ないけど
case a of
0: x:=0;
else x:=0;
end;
でxは初期化されませんと怒られたことがあったな

225 :デフォルトの名無しさん:2011/08/17(水) 16:20:47.12
何をしたいのか判らないけど、作法としてはTObject 継承なら
 destructor Destroy; override;
とするべきで、それ以外のデストラクタは混乱させるだけ。

完全自作クラスで実験的な事をやりたいのなら別だけど
クラスメソッドのデストラクタってどう考えても成り立たない。
何をやりたいのか教えて欲しい


226 :222:2011/08/17(水) 16:27:16.24
レスどうもありがとうございます。

>>223さん
動作を確認した感じでは、
クラスconstructorは、該当クラスのpasが参照された時点で呼ばれる
クラスdestructorは、該当クラスのpasがどこからも参照されなくなった時点で呼ばれる
みたいな理解をしています。そもそもこの理解が間違っていたら終わりですけど...。

>>224さん
一応、警告は出ますけど、↑で述べさせてもらった動作をしているようです。
おっしゃるように、コンパイラのバグのセンもありますが、使い方を間違えていないか今一度調査してみます。

// 以下確認したコードです(このpasを他からusesして使用)
TBox = class
private
class constructor Create;
class destructor Destroy; // ← ここが警告を出すが、ちゃんと呼ばれていた
end;

class constructor TBox.Create;
begin
asm nop end; // ブレークポイント:プロジェクト実行時にここに突入していた
end;

class destructor TBox.Destroy;
begin
asm nop end; // ブレークポイント:プロジェクト終了時にここに突入していた
end;


227 :デフォルトの名無しさん:2011/08/17(水) 16:42:16.66
>>226
× クラスconstructorは、該当クラスのpasが参照された時点で呼ばれる
 そもそもコントラクタは本質的にクラスメソッドと同じでクラス参照で呼び出してるでしょ?

×クラスdestructorは、該当クラスのpasがどこからも参照されなくなった時点で呼ばれる

そのpas ファイルのコンストラクタ・デストラクタ相当は
initialization 初期化部
finalization 終了処理部
で行うのが普通


で、どこからも参照されなくなった時ではなくて、実行ファイル開始時と終了時なわけだけど

228 :デフォルトの名無しさん:2011/08/17(水) 17:01:28.71
どっかのバージョンで追加された クラス コンストラクタ クラスデストラクタの機能だね

>クラス コンストラクタの呼び出しは、そのクラスが定義されているユニットの initialization セクションに、コンパイラが自動的に挿入します。 通
>クラス デストラクタには、目的が終了処理であるという点以外は、クラス コンストラクタと同じ

だから、>>226さんの理解で正しいけど Delphiを主に使ってる人は下位互換を気にしてあまり使わないかも。
他言語からの移植を楽にする機能ってところでしょ


229 :デフォルトの名無しさん:2011/08/17(水) 17:03:22.31
class constructor/destructorを知らない奴はせめてググれよ
俺はこれに対応したDelphiを持ってないんで詳しい挙動は知らんけどね
ちなみに俺はinitialization/finalizationよりこれを使ったほうが見やすい、それだけだと理解してる
でもクラスが使われてないときにはこいつらは呼ばれない、とかあるかもね

230 :デフォルトの名無しさん:2011/08/17(水) 17:54:00.15
いくら超初心者用スレとはいえ、質問に答える側の知識も超初心者だと質問者が可哀想だなw

>>226
試してみたけど単純なクラスでも同じ症状が出たから、ほぼバグと見て間違いないと思うよ
一度も呼ばれないprotectedなメソッドが、プロジェクト内のどこでも使われていなくてもヒント出ないように、
可視性がprivateになっているものは明示的な参照が無い限り一律でヒント出すようになってるんだろうね
出るメッセージも警告じゃなくてヒントだよね?ヒントなら問題がなければ気にしなくていいはず

あと呼び出しのタイミングの理解は間違ってる
まずプログラム内のどこかでクラスが使われていなければ、
いくらusesしていてもクラスコンストラクタもデストラクタも呼ばれない
使われてる場合、クラスコンストラクタは参照されている位置に関係なくプログラムの初期化時に呼ばれる
この時の呼び出しの順番はusesの記述順に依存する
クラスデストラクタも同様だけど、タイミングはプログラム終了時で、呼び出し順はクラスコンストラクタとは逆になる

231 :デフォルトの名無しさん:2011/08/17(水) 21:19:22.68
オーバーライドもわからない人はオブジェクト指向を1から勉強し直せ

232 :デフォルトの名無しさん:2011/08/17(水) 21:39:46.50
>>231
class constructor の存在を知らずに間の抜けた回答をし続けた方ですか?

233 :デフォルトの名無しさん:2011/08/17(水) 21:42:16.61
デストラクタは必ずしもプログラム終了時に処理されるものじゃないよ
むしろ、そうさせないためにオーバーライドして使う
質問者が言ってるのは、意図したタイミングでデストラクタが呼ばれないってことだろ?
わざわざ特殊なやり方をして、処理されず困ってるなんて意味わからん 基本に戻れ基本に

234 :デフォルトの名無しさん:2011/08/17(水) 21:45:36.50
>>225も結構アホなこと言ってるよな
「TObject継承なら」とか「完全自作クラス」とか。
DelphiはどうやってもTObject継承のクラスしか作れないんだが。

235 :デフォルトの名無しさん:2011/08/17(水) 21:51:52.71
>>233
TNoob = class abstract
public
  class constructor Create;
  class destructor Destroy;
end experimental;

こういう書き方がちゃんとコンパイルできるバージョンで試してから発言して下さいね、時代遅れさん

236 :デフォルトの名無しさん:2011/08/17(水) 21:56:05.67
CheatEngineって言うDelphi製ソフトで、その中の
「unrandomizer」って機能があるんですが
これどういう仕組みなのか分かる方いませんか?
直接アドレスの中身を検索して書き換えてるかフックしてるんだろうと
思うんですが・・・

一応ソースです
http://ce.colddot.nl/browser/Cheat%20Engine%206/unrandomizer.pas

237 :222:2011/08/17(水) 22:32:58.34
すみません、なんか色々とひっかき回してしまったみたいで…。
たとえば、あるクラスでしか外部DLLの関数を使わないとした場合、通常のコンストラクタ/デストラクタに書くと、その度に関数ロード/開放するのって微妙かなぁ?と思いました。
かといってグローバル要素を使うのもためらわれまして。
で、色々調べてみたら、classコンストラクタ/デストラクタっていうのがあるってのを知ったもので、じゃあここに書けばいいじゃない、って感じで使おうとしたんです。
ヘルプを読んだら、明示的に呼ばなくても自動的に呼ばれる、みたいなことが書いてあるし、いいじゃんって思って使ったんですが…。

そしたらprivateでなんかメッセージが出たから、何か解釈間違っていたかなあ?と思って質問した次第です。
すみませんでした。

238 :222:2011/08/17(水) 22:47:28.53
レス、全部読ませて頂きました。
実際呼ばれるのにヒント出るのはヘンだと思ったんですが、とりあえず、>>230さんのおっしゃるように
Delphi側の不具合、ということで一件落着しようと思います。

みなさん、どうもありがとうございました!

239 :デフォルトの名無しさん:2011/08/17(水) 23:35:11.20
クラスコンストラクタとクラスデストラクタはそもそも明示的に呼べないけどね

240 :デフォルトの名無しさん:2011/08/17(水) 23:47:57.27
>>222,230さん
ちなみに、このコードでもヒントは出ますか?

type
TBox = class
private
class var FList: TList<Integer>;
class constructor Create;
class destructor Destroy;
end;

implementation

class constructor TBox.Create;
begin
{ Initialize the static FList member }
FList := TList<Integer>.Create();
end;

class destructor TBox.Destroy;
begin
{ Finalize the static FList member }
FList.Free;
end;

end.

すみません、Delphi2010が買えない貧乏人なのでお願いします。

ちょっとprivateのクラスデストラクタだけで
ヒント(警告?)が出るのが気になるのでお願いします。


241 :デフォルトの名無しさん:2011/08/17(水) 23:55:26.93
>>240
はい、出ます。
class destructor Destroyの位置だけが問題のようなので。

242 :デフォルトの名無しさん:2011/08/18(木) 00:08:52.11
そうですか、有難う御座います。

embarcaderoのサンプルソースですらヒントが出るんですね。
ちょっと驚きです。

243 :デフォルトの名無しさん:2011/08/18(木) 00:39:44.28
docwikiは平気で間違ったこと書いてるのでしょうがないかと。
最近だとTStopwatchクラスの挙動が実際の処理と全く違うことが書いてあると某所で話題になりましたし。

244 :デフォルトの名無しさん:2011/08/18(木) 10:15:55.73
警告メッセージが出るのが嫌だって話? それ以外はまったく問題なし?

アホすぎる・・・・・

245 :デフォルトの名無しさん:2011/08/18(木) 11:14:23.80
>>244
自己紹介がお上手ですね^^

246 :デフォルトの名無しさん:2011/08/18(木) 11:24:31.31
>>236
なんか特定のコードを見つけたら置き換えてしまうようだけど?

247 :デフォルトの名無しさん:2011/08/18(木) 12:20:52.23
>>244
元の質問は出るのが嫌とかじゃなくて、出るはずのない場所で警告される理由を聞いてるだけですよ
日本語が読めない在日さんですか?意思の疎通もできない人は早く国に帰って下さいね

248 :デフォルトの名無しさん:2011/08/18(木) 12:27:50.87
DQN の日本人よりは生まれも育ちも日本の在日のほうが優秀だぞ

249 :デフォルトの名無しさん:2011/08/18(木) 12:47:35.27
捏造技術だけは世界的に見ても優秀ですね

250 :デフォルトの名無しさん:2011/08/18(木) 17:40:01.20
質問と関係ないですが、一応初心者スレなので補足してみます。(個人的な解釈です)

クラスコンストラクタ/クラスデストラクタの主要な用途は
クラスフィールドの作成(フィールドがオブジェクトの場合)・初期化と破棄などを行います。
通常はinitialization/finalizationでも代用できますが
(privateで宣言されたフィールドでも操作できるのは、私はDelphiの欠点だと思っていますが)
新しいバージョンのDelphiでは、よりオブジェクト指向に準拠したstrict privateが使用可能になりました。
これでクラスフィールドを定義した場合initialization/finalizationでは操作出来ません。
クラスコンストラクタ/クラスデストラクタのみが唯一操作出来ます。

>>225,227さんなど、バージョンの古いDelphi(7以前)を使用している人?は、クラスメソッドに対しては知識があって
クラスフィールドやstrict privateなどに対してをあまり認識がないので混乱しているのではないですかね?


251 :デフォルトの名無しさん:2011/08/18(木) 18:02:58.64
それは少し違いますね
strict privateなクラスフィールドは単なるクラスメソッドでも操作できますから、
initialization・finalizationでそういったメソッドを呼べばいいだけです

もちろん特定のクラス向けの初期化・終了処理をそのクラス内で実装することは理に適っていますが、
本来のクラスコンストラクタ・クラスデストラクタの用途は無用なリンクを防ぐことです
従来のようにinitialization・finalizationブロックに特定のクラスや変数の初期化処理を書いた場合、
それらを一切利用しないプログラムでも、ユニットをusesしただけでプログラムにリンク・実行されてしまいます
一方、クラスコンストラクタ・クラスデストラクタは利用されている場合のみリンク・実行されます
これがinitialization・finalizationとの最大の差であり、メリットです

252 :250:2011/08/18(木) 21:03:57.00
>>251
そうですね、そのメリットもありますね。

ただ私は、どちらかと言うとオブジェクト指向に重きを置いているので観点が違うようです。

>strict privateなクラスフィールドは単なるクラスメソッドでも操作できますから、
>initialization・finalizationでそういったメソッドを呼べばいいだけです
その場合だと継承した時にどうなりますか?コードにもよりますがそのままでは不正な動作になりますよね。
250ではカプセル化の観点から書きましたが継承/多態性からでも
クラスフィールドの操作にはクラスコンストラクタ/クラスデストラクタを使うべきだと思っています。

そもそも私は、>>222さんがクラスデストラクタをprivateに定義しているのを見て>>231さんの意見に近かったです。

私はinitialization・finalizationを代用することでオブジェクト指向に
弊害が出ることの方が問題だと思っています。
もちろんサイズも重要です、実際の現場ではオブジェクト指向よりも実物が大事にされますから。


253 :デフォルトの名無しさん:2011/08/19(金) 01:03:16.69
相変わらず簡単な質問が簡単に終わらないスレだねw

254 :デフォルトの名無しさん:2011/08/19(金) 01:42:03.70
>>252
class constructor/class destructorは仮想にできないので、
継承した場合はあなたのいうinitialization/finalizationと同じ問題が発生するけど?
クラスフィールドはグローバル変数の構文糖に過ぎないから、
継承したってプログラム中に存在するのはたったひとつだけどその点理解してる?

privateフィールドが読める=オブジェクト指向的ではない、
というあなたの考えも教科書的に言えば正解だけど、実は大きな勘違いをしてるよね

そもそも同一ユニット内でクラス間のprivateフィールドが読めるのはDelphiの設計に由来してる
DelphiはC/C++のような二重インクルード問題が無くなった代わりに、循環参照問題が発生した
だからこれを回避するためにはあらゆるクラスを同じユニットに詰め込む必要があった
さらにDelphiのユニットはinterfaceとimplementationという二つのブロックに分かれることで、
クラスのprivateやpublicによるアクセス制御とは別のカプセル化が可能になってる
だからクラス間でprivateフィールドを参照できても、ユニットを外から見た分には十分隠蔽できてるわけ
つまりオブジェクト指向的にも問題ない

教科書通りのオブジェクト指向はこういった二重のカプセル化を考慮してないので
そういう典型的なオブジェクト指向しか知らないと、あなたのような勘違いが生まれるんじゃないかな

255 :デフォルトの名無しさん:2011/08/19(金) 02:09:34.07
プライベートが触れるのはDelphiでは普通だと思うよ。
設計者が意図してそうしたんだし、VCL内でも触れるのが前提のコードが腐るほどある。
多くの名著と呼ばれる本でも通常のテクニックとして使われてる。
自分の信念が何だろうと本来Delphiはそういう作法なんだよ。

256 :デフォルトの名無しさん:2011/08/19(金) 02:48:39.74
つうか激しくどうでもいい。元質問の答は出てるんだし、ぼくのかんがえたさいきょうのおはなしは他でやってくれんかね。

257 :デフォルトの名無しさん:2011/08/19(金) 09:50:35.03

Delphi XE のプログレスバー TProgressBar の Smooth を True にしても
「滑らかなバー」にならないんですが、仕様なんでしょうか?

BarColor も BackgroundColor も変えられないんです。


258 :デフォルトの名無しさん:2011/08/19(金) 10:04:41.92
Windowsの見てくれをクラシックにしないと反映されないみたいだ
もう死に機能っぽい

259 :257:2011/08/19(金) 10:40:58.60
>>258
うわ、本当ですね。ありがとうございました。

Delphi 登録ユーザーのみですが、ビジュアルコンポーネントセットが
ダウンロードでき、TAdvSmoothProgressBar が使えそうなので、
これでやってみます。

ttp://blogs.embarcadero.com/teamj/2011/06/01/2034/

TMS Smooth Controls for Delphi and C++Builder XE
ttp://cc.embarcadero.com/item/28271

スクリーンショット
ttp://www.tmssoftware.com/site/img/AdvSmoothProgressBar.png

260 :250:2011/08/19(金) 19:25:16.01
>>254
>継承した場合はあなたのいうinitialization/finalizationと同じ問題が発生するけど?
例えば
TBase = class
protected
class var FStr: String;
public
{ Public 宣言 }
class procedure setstr();
class function getstr():String;
end;
TBBB = class(TBase)
protected
public
class procedure setstr();
end;
{ TBase }
class function TBase.getstr: String;
begin
Result := FStr;
end;
class procedure TBase.setstr;
begin
FStr := 'TBase';
end;
>>次に続きます。


261 :250:2011/08/19(金) 19:28:42.03
{ TBBB }
class procedure TBBB.setstr;
begin
FStr := FStr + '-TBBB';
end;
initialization
TBase.setstr;
TBBB.setstr;
の場合
procedure TForm1.FormCreate(Sender: TObject);
begin
Caption := TBBB.getstr;
end;
では画面キャプションが'TBase-TBBB'になります。
>>次に続きます。

262 :250:2011/08/19(金) 19:29:55.65
こんどは、TBaseから継承したTCCCを追加します。
TCCC = class(TBase)
protected
class constructor Create();
public
class procedure setstr();
end;
class procedure TCCC.setstr;
begin
FStr := FStr + '-TCCC';
end;
initialization
TCCC.setstr;
の場合
procedure TForm1.FormCreate(Sender: TObject);
begin
Caption := TCCC.getstr;
end;
では画面キャプションが'TBase-TBBB-TCCC'となります。

次にsetstrの部分をclass constructorで実装すると
画面キャプションが'TBase-TCCC'となります。

このような場合initialization/finalizationと
class constructor/class destructorでは結果が違ってきます。
>>次に続きます。


263 :250:2011/08/19(金) 19:37:17.01
また
initialization
TBBB.setstr;
TBase.setstr;
とした場合、FStrは'TBaseとなり、クラス構造を把握していないと正しくかけません。

あと
>というあなたの考えも教科書的に言えば正解だけど、実は大きな勘違いをしてるよね
私とは考え方違うみたいですが、>>222さんの件とは、かなり違った話で、しかも
>>222さんみたいな初心者の方には分かりにくい議論だと思うので別の機会で。

264 :デフォルトの名無しさん:2011/08/20(土) 01:58:15.19
一体何をどう頑張りたがっているのかさっぱりわからん

265 :デフォルトの名無しさん:2011/08/20(土) 11:44:02.57
日本人のふりをした中国人が書いているとしか思えない

266 :デフォルトの名無しさん:2011/08/20(土) 15:52:03.79
どうでもいいですよ

267 :デフォルトの名無しさん:2011/08/20(土) 16:38:01.76
認めたか。
三国人は国にカエレ!

268 :デフォルトの名無しさん:2011/08/20(土) 19:01:14.55
>267 なにしにきたの?

269 :デフォルトの名無しさん:2011/08/21(日) 06:25:57.66
      ̄ ̄ ̄ ̄ ̄ ̄ ̄l/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
          ∧_∧
         ( ´・ω・`)     ∧_∧
         /     \   (    )何言ってんだこいつ 
     .__| |    .| |_ /      ヽ
     ||\  ̄ ̄ ̄ ̄   / .|   | |
     ||\..∧_∧    (⌒\|__./ ./
     ||.  (    )     ~\_____ノ|   ∧_∧
       /   ヽ 空気読めよ   \|   (    ) 
       |     ヽ           \/     ヽ. オマエ馬鹿だろ
       |    |ヽ、二⌒)        / .|   | |
       .|    ヽ \∧_∧    (⌒\|__./ /

270 :デフォルトの名無しさん:2011/08/22(月) 10:56:01.07
TTimerで、あるタイミングでTimer1.Enabled := Falseにするのですが、
Falseにする前にWM_TIMERメッセージが既にポストされてると、OnTimerイベントが
発生しちゃうでしょうか?

271 :デフォルトの名無しさん:2011/08/22(月) 11:06:50.74
Enableじゃなくて、OnTimer := nilすることにしました。

272 :デフォルトの名無しさん:2011/08/23(火) 02:07:49.66
250はいったい何を伝えたいのか分からない
仮想メソッドは継承先で振るまいが変わるので初心者には難しいとか言ってるオッサンと同レベル

273 :デフォルトの名無しさん:2011/08/23(火) 02:21:05.90
クラス変数を継承先が好き勝手書き換えるという設計がそもそも糞だけど、
それをクラスコンストラクタでやっちゃう場合、継承クラスが定義されたユニットをusesに書く順によって
呼ばれるクラスコンストラクタの順番が変わるので、initializationで初期化するよりよっぽどカオスになる
250はそのことを理解してない馬鹿

274 :デフォルトの名無しさん:2011/08/23(火) 02:51:50.55
大事なことなので2回書きました たった4分で2回も書きました

275 :デフォルトの名無しさん:2011/08/23(火) 06:41:07.32
>>270
最近そういうの追いかけるの嫌だから、1ワードのフラグたててセマファで管理してる
いちいち
if flag then exit
flag:=True;
try
・・・・
finally flag:=false end;
みたいに書くの面倒だけどさ

276 :デフォルトの名無しさん:2011/08/23(火) 09:40:42.99
TImer イベントの冒頭で Timer1.Enabled をチェックしたら?

277 :デフォルトの名無しさん:2011/08/23(火) 16:29:56.07
それか、

Timer1.Enabled := False;
Timer1.OnTimer := nil;

Timer1.Enabled := True;
Timer1.OnTimer := OnTimer;

278 :250:2011/08/23(火) 19:26:53.83
>>272
上の例は、TBaseクラス・TBBBクラス・TCCCクラスが下記のように継承されていて
TBase→TBBB
TBase→TCCC
本来は使わないTBBBクラスをinitializationで初期化することによりTBBBクラスが実行され
不正な値がクラスメソッドに設定されてしまうと言うことです。

これは>>251さんのこれと同じことです。
>従来のようにinitialization・finalizationブロックに特定のクラスや変数の初期化処理を書いた場合、
>それらを一切利用しないプログラムでも、ユニットをusesしただけでプログラムにリンク・実行されてしまいます

つまり、これは間違いだと言うことです。
>strict privateなクラスフィールドは単なるクラスメソッドでも操作できますから、
>initialization・finalizationでそういったメソッドを呼べばいいだけです

>>273
>それをクラスコンストラクタでやっちゃう場合、継承クラスが定義されたユニットをusesに書く順によって
>呼ばれるクラスコンストラクタの順番が変わるので、initializationで初期化するよりよっぽどカオスになる
> 250はそのことを理解してない馬鹿
これは間違いです。継承先のクラスが継承元のクラスより先に実行されることはありません。
継承順にクラスコンストラクタは実行されます。これはオブジェクト指向の基本なので
初級レベルでいいのでオブジェクト指向の勉強された方がいいと思いますよ。


279 :デフォルトの名無しさん:2011/08/23(火) 20:44:50.38
サブクラスが複数あってそれぞれ別のユニットになってたらどうなるの?
もしかして全く考慮してなかったの?馬鹿なの?

280 :デフォルトの名無しさん:2011/08/23(火) 20:53:13.92
自分の頭の悪い説を正当化しようとしたあまり
継承は何段階でも何個でもできるということに頭がまわらず、
基底クラスとその派生クラスが1つのみという特殊なケースしか考えてなかったんだろ
初心者が陥りやすいミスだけど、ここ超初心者スレだからしょうがない

281 :250:2011/08/23(火) 21:57:08.55
>>279
>サブクラスが複数あってそれぞれ別のユニットになってたらどうなるの?
別のユニットでも同じですね、使われないクラスは実装されないだけですから。

>>280
>継承は何段階でも何個でもできるということに頭がまわらず、
>基底クラスとその派生クラスが1つのみという特殊なケースしか考えてなかったんだろ
クラスの階層が深くなっても問題はないですね、クラスコンストラクタが継承順に実行されるだけですから。

282 :デフォルトの名無しさん:2011/08/26(金) 08:40:45.36
sage

283 :デフォルトの名無しさん:2011/08/26(金) 21:31:28.83
TFoo = class
end;
TFooWithResult<TResult> = class(TFoo)
 function GetResult: TResult;
end;
TFooWithInteger = class(TFooWithResult<Integer>);
があるとします。この時、
var Foo: TFoo;
で、Foo is TFooWithIntegerやFoo is TFooWithResult<Integer>など、
クラスがどこで宣言され、使用されてようが、問題ないでしょうか?

284 :デフォルトの名無しさん:2011/08/27(土) 10:44:32.10
つか、ジェネリックインターフェース型IFoo<T> = interfaceも閉じた生成型にGUID
付かないからインターフェースからインターフェースの問い合わせ
as,is演算子でできねぇな。しねよ。クソdelphi。

285 :デフォルトの名無しさん:2011/08/27(土) 12:18:44.27
何でもかんでもクラスにする人ってオブジェクト指向をまったく理解してなさそうw

286 :デフォルトの名無しさん:2011/08/27(土) 22:09:01.26
すみません。スレ違いかもしれないのですが
教えてください。

今まで、無償のBorland Turbo Delphi Exprolerを使っていたのですが、
最近Borland Developer Studioを購入して、インストールしたところ、
Delphi,Delphi for Microsoft.net, C++builder,C#builderのうち
Delphiだけは使用できて、ほかの3つの開発環境は

「Borland C++Builder(またはDelphi for Microsoft.net,C#builder)を使用する
ライセンスがありません。」
とエラーメッセージがで、うまく起動できません。

無料版の時は、どれか1つのライセンス(自分の場合Delphi)しかパソコンに
インストールできない仕様になっていたのが影響しているのだろうと思い
一度無料版をアンインストールした後再度製品版をインストールしましたが
やはり、上記のエラーメッセージが出てしまいます。

せっかく製品版を購入したので、何とか使えるようにしたいのですが、
どうすればいいでしょうか。

287 :286:2011/08/27(土) 22:09:47.41
あと、パソコンはWindows7 64bit
を使っています。

288 :デフォルトの名無しさん:2011/08/27(土) 22:25:51.26
サポートに問い合わせればいいんじゃね?つか今更BDS2006?
あとWin7 x64ならXPモードをVMware Playerで動かしてそこに入れるほうがよいかと。

289 :286:2011/08/28(日) 08:32:05.67
アドバイスありがとうございます。
試してみます。

290 :デフォルトの名無しさん:2011/08/28(日) 10:24:38.70
今度の新しいやつ買う価値有り?

291 :デフォルトの名無しさん:2011/08/28(日) 17:29:59.91
まだわからん

292 :デフォルトの名無しさん:2011/08/29(月) 09:43:57.00
Delphi7 XP環境でしつもんです
テキスト状態の日本時間から時差を±した世界各国の日時を出すために
何ヶ月後の日時を出す IncMonth() ような感じで
VB の DateAdd にかわるものありますか?
外部コンポーネントでもいいので

時間に±して日をまたげば日を±して、月の境なら月の最大日ごとにまた月を±して、年は〜
で書かないとダメなの?

293 :デフォルトの名無しさん:2011/08/29(月) 10:19:21.91
>>292
TDateTimeに変換してIncHour

294 :デフォルトの名無しさん:2011/08/29(月) 10:19:39.67
http://goo.gl/Oynly

295 :デフォルトの名無しさん:2011/08/29(月) 17:27:44.25
uses
DateUtils;
----------------
var
LocalDateTime :TDate;
Uyear〜〜〜

begin
 〜〜〜〜
LocalDateTime := EncodeDateTime(Uyear,Umonth,Uday,Utime,Uminute,0,0);
LocalDateTime := IncHour(LocalDateTime, Utc);

いけましたありがとう!!!

296 :デフォルトの名無しさん:2011/08/29(月) 18:18:29.50
IncHourだとインドやベネズエラの30分誤差に対応できないな

297 :デフォルトの名無しさん:2011/08/29(月) 19:42:50.50
IncSecondで一秒ずつインクリメントしろ低能

298 :デフォルトの名無しさん:2011/08/30(火) 09:57:08.99
0.5/HoursPerDay を加減算した方が誤差蓄積が無いかもな

IncHour の2番目の引数浮動小数点渡しにしたのを自作すればいいだけかもしれん

299 :デフォルトの名無しさん:2011/08/30(火) 10:02:54.58
これだけヒント出してやってるのにいい加減気づけよ

300 :デフォルトの名無しさん:2011/09/02(金) 18:30:12.57
うるせーはげ

301 :デフォルトの名無しさん:2011/09/03(土) 07:20:16.20
でもどうして IncHour とか、いったん掛け算してから後で割算するんだろ 

(A*24 + 1 )/24 と A+1/24 って浮動小数点で計算しても精度違ってくるの?

精度同じだとしたら何かメリットあるのかな

302 :デフォルトの名無しさん:2011/09/04(日) 10:05:23.83
del7でキャプチャーソフトを作ったんだけど質問御願いします。

bitmapで保存するのは速て綺麗、でもサイズがでかい。
del標準のjpegに変換するとサイズは小さいが画像がイマイチ汚い。
保存速度も速くて画像も綺麗なjpegファイルを作るVCLって無いですか?
ゴリゴリ一から作る知識もスキルもないです。


303 :デフォルトの名無しさん:2011/09/04(日) 10:11:21.92
CompressionQuality設定すればいいんじゃないの
pngのが良さ気な気もするけど

304 :デフォルトの名無しさん:2011/09/04(日) 10:44:20.21
>>301
基本中の基本だはげ

305 :302:2011/09/04(日) 14:01:45.17
今、CompressionQualityを設定してテストしてみたのですが、
100に設定した時の画質とCompressionQuality無しの時が同じ
感じでした。
そこでpngを使いたいのですが、TpngimageってDel7には無いのでしょうか?
ググったら標準で付いてるっぽい説明が有ったのですが、
自分のにはないみたいなのです。

306 :デフォルトの名無しさん:2011/09/04(日) 14:03:46.95
PngComponentsかGDIPlus

307 :302:2011/09/04(日) 14:32:32.57
どちらもないけど。。。
どこからかダウンロードするって事?
俺のDel7がおかしいのか?

308 :デフォルトの名無しさん:2011/09/04(日) 15:01:43.21
何でググらないの?

309 :デフォルトの名無しさん:2011/09/04(日) 15:08:18.51
Delphiプログラミングは外部のライブラリに頼りまくることになるから
何かの機能が欲しくなったら
delphi (unit or component) jpeg
delphi (unit or component) png
とかで検索

310 :デフォルトの名無しさん:2011/09/04(日) 15:31:49.47
ググってたけど標準で備えてあるような感じで書いてある
サイトが目立ったから、俺のにはないのかと思ってしまったんだよ。
GDI+で解決しそうです。
ありがと

311 :デフォルトの名無しさん:2011/09/05(月) 16:06:00.40
Delphi 5 Pro を使っています。
システムロケールを知る方法を教えてください。
フォームの日本語をロケールによって他の言語で表示できるようにしたいのです。
よろしくお願いします。

312 :デフォルトの名無しさん:2011/09/05(月) 18:29:28.93
リソースDLLウィザードじゃだめなん?

313 :311:2011/09/05(月) 19:18:33.95
あ、すみません、解決しました。
GetUserDefaultLCID() でできました。

314 :デフォルトの名無しさん:2011/09/05(月) 20:01:10.93
それじゃシステムロケールじゃなくてユーザーロケールじゃん

315 :デフォルトの名無しさん:2011/09/05(月) 21:22:28.33
Shake it up Baby

316 :311:2011/09/05(月) 22:00:23.44
ああ、GetSystemDefaultLCID() でした。失礼しました。

317 :デフォルトの名無しさん:2011/09/06(火) 17:09:45.19
DelでDDE通信する解説サイトって無い?

318 :デフォルトの名無しさん:2011/09/07(水) 12:31:46.15
Delphiで小さな実行ファイルを作ろう
http://www36.tok2.com/home/tok/test/read.cgi/tech/1009080085/
の38
くらいしかない

319 :デフォルトの名無しさん:2011/09/08(木) 14:14:22.16
delphiXEのProでエクセルって操作できますか?
del7にはofficeのVCLがあるのに、自分のXEには見あたらない。

320 :デフォルトの名無しさん:2011/09/08(木) 19:52:48.40
>>317
昔、株関連のサイトですごく判りやすい解説を読んだ。お陰で
楽天証券経由で株を自動売買するソフトを作ることができた。

321 :デフォルトの名無しさん:2011/09/08(木) 20:23:30.29
>>320
株関連?
で、どうしろと

322 :320:2011/09/08(木) 20:27:03.08
>>321
DelでDDE通信ってことは、株の自動売買以外にないだろうと思うが?(常考)

323 :デフォルトの名無しさん:2011/09/08(木) 21:03:23.26
それが、以前に勤めてた会社で昔に作ったソフトが
DDEでなんかやってるらしくって、仕事もらったんだけど
自分じゃやったことがなくてね。
やってだめなら、それから断ってもいいよって言われたから。

ちなみに楽天でRSSていうのがDDEなのは知ってる。
でも、ぐぐったけどでてきたかなぁ。

324 :デフォルトの名無しさん:2011/09/10(土) 10:47:30.99
>>322
釣りなのかマジキチなのか判断に苦しむ

325 :デフォルトの名無しさん:2011/09/10(土) 17:37:35.61
ビットマップをdel6でjpegで100で変換した時と
photshopでレベル10で保存した時で、delの方が
劣化が酷いんだけど何で?
ファイルサイズはほぼ同じ。

326 :デフォルトの名無しさん:2011/09/10(土) 17:43:10.18
コードが違うから
規格が一緒なら変換結果が常に同じになるというわけじゃない
高品質なのが欲しかったら標準にこだわらずさっさと他のライブラリ探せと

327 :デフォルトの名無しさん:2011/09/10(土) 18:28:32.18
一緒だよ

328 :デフォルトの名無しさん:2011/09/10(土) 18:30:16.96
勘違い

329 :320=322:2011/09/11(日) 00:25:10.61
>>324
なんで?

330 :デフォルトの名無しさん:2011/09/11(日) 00:31:04.93
自分の常識と世間の常識が必ずしも一致しないということでは?

331 :デフォルトの名無しさん:2011/09/11(日) 00:33:39.12
>>329
マジキチの方でしたか
お大事に…

332 :320=322=329:2011/09/11(日) 09:25:40.82
>>331
まったく意味が判りませんが、別にマジキチでも結構です
お気遣いありがとう、ではではw

333 :デフォルトの名無しさん:2011/09/11(日) 10:43:14.05
うわあ…

334 :デフォルトの名無しさん:2011/09/11(日) 11:27:08.15
>>332
まぁ、なんだ、染んでくれ

335 :デフォルトの名無しさん:2011/09/11(日) 12:25:55.77
>DelでDDE通信ってことは、株の自動売買以外にないだろうと思うが?(常考)
そうですね。証券業界ではエクセルでデータを扱う場合には
昔はよくDDEが使われていましたね(まだ残ってはいますが)
でも現在ではarrowheadの稼動とかもありRTDが使われていますね。
(arrowhead稼動の前からもDDEの欠点からRTDに移行していましたが、arrowhead稼動でより顕著になりました)

336 :デフォルトの名無しさん:2011/09/11(日) 13:29:18.58
>>332
きんもー☆

337 :325:2011/09/12(月) 00:09:26.11
delのjpegユニット探したら有った。
サンプリングっつうもんが固定で低い?から画像が劣化するらしい。
で、サンプリング上げてやってみたら綺麗なんだけど、時間がかかる。
かかると言っても2,3秒なんだけど。
画像の変換ソフトとかだと、瞬間的?
(一般的な感覚で)

338 :デフォルトの名無しさん:2011/09/14(水) 19:18:37.26
del7です。
自作アプリの2台のPCに入れて、一方通行で良いので文章を送って、
受け取って表示みたいな事がしたいのですが、Indyを使わないと
出来ないですか?

339 :デフォルトの名無しさん:2011/09/14(水) 19:26:06.63
Indyが嫌ならその下のWinSockを使えばいいよ。
結局やること同じだけど。
TCP/IPがなんだかわかってれば
サンプルも少なくないしそんなに面倒でもないよ。

340 :デフォルトの名無しさん:2011/09/14(水) 19:32:11.15
超手抜きでやりたいならLANの公開フォルダにテキスト突っ込んで
それを監視して読み取る

341 :デフォルトの名無しさん:2011/09/14(水) 19:33:22.26
>>339
ありがとうございます。
TCP/IPはよく分かってないんですが、
2つのうち自分が取っつきやすそうな方でやってみます。

342 :デフォルトの名無しさん:2011/09/14(水) 20:44:11.42
>>341
del7のサンプルフォルダに、indyのソケット通信のコードあるから、見てみるといいよ

343 :デフォルトの名無しさん:2011/09/15(木) 02:11:09.96
IndyってOS XやiOSでも動く?

344 :デフォルトの名無しさん:2011/09/15(木) 08:06:13.58
一方にWebサーバ立てて、ブラウザで見ればいいんじゃないの?
DELPHIいらないだろ

345 :デフォルトの名無しさん:2011/09/15(木) 08:11:09.41
>>342
ありがとうございます。
見てみます。

>>344
受け取ったら表示とは書きましたが、最終的には外部ソフトに投げるのが
目的です。
そこに突っ込まれるとは思わなかった。w


346 :デフォルトの名無しさん:2011/09/15(木) 08:59:17.16
ServerSocketとClientSocketコンポーネント使え。
インストールCDに入ってるはず。

347 :デフォルトの名無しさん:2011/09/15(木) 09:02:04.48
windows限定なら、メールスロットが簡単だと思うけどな 

送る側は '\\相手のパソコン名\mailslot\スロット名' というファイル名で TStrings.SaveToFile するだけ

受信する側は CreateMailslot して 定期的にGetMailslotInfoでポーリングして 
THandleStream でハンドル開いて TTStrings.LoadFromStream

348 :デフォルトの名無しさん:2011/09/15(木) 09:08:20.28
一方でTHandleStream使うなら、両方ともTHandleStream+TStringStreamの方がよくね?

349 :デフォルトの名無しさん:2011/09/15(木) 09:23:58.98
>>348 その場合送る側は CreateFile ね CreateMailslotは受信側=サーバのためのものだから


起動中のPCの一覧は
ttp://delfusa.main.jp/delfusafloor/archive/www.nifty.ne.jp_forum_fdelphi/samples/00976.html


350 :デフォルトの名無しさん:2011/09/15(木) 10:19:00.92
>>338
アララットシナプスのデモにそういうのあるよ。そのまま使えば?

351 :338:2011/09/15(木) 10:47:06.03
おいてけぼりくってます。
(゚Д゚≡゚Д゚)エッナニナニ?

352 :338:2011/09/15(木) 11:24:59.90
皆さん、レスありがとうございます。
ちょっと状況が変わりまして、受け取るソフトはDelphiで作るのですが、
送り元のソフトがdelphiで自作ではなくて、Excelから送れないか調べる
必要が出てきました。

ちょっと、エクセルの方へ行ってきます。

353 :デフォルトの名無しさん:2011/09/15(木) 12:38:51.77
net send / msgコマンドでおk

354 :デフォルトの名無しさん:2011/09/16(金) 11:33:58.50
元のソースに影響がないようにプロジェクトのフォルダーをコピーして、
修正しようと思ったのですが元のソースも同じように修正されてしまいます。
一応、「~」が付いているファイルとリソースファイルは削除したのですが、
他に削除するファイルって有りますか?
Delphi7を使っています。

355 :デフォルトの名無しさん:2011/09/16(金) 11:54:12.94
絶対パスで元ソースを参照してることがないように
コピー先のファイル群に対して"元パス"文字列を検索して
ヒットしたファイルを削除するなり変更する

356 :デフォルトの名無しさん:2011/09/16(金) 22:11:41.38
すんません、プログラムの考え方とかアルゴリズムとか
どこで聞いたらいいですか?

357 :デフォルトの名無しさん:2011/09/16(金) 22:59:10.18
>>356
Delphiのこと?それならここで。
それともプログラミングまったくの未経験者なの?

358 :356:2011/09/16(金) 23:44:22.39
趣味でdelphiを使ってプログラムをしています。
プログラムはスタンドアローンのソフトで簡単なものなら
って感じです。
今回株関係のソフトを作りたいのですが、グラフ(チャート)
を分析するので考え方とかが質問したいのです。

359 :デフォルトの名無しさん:2011/09/17(土) 00:12:55.49
チャートの専門知識がないと理解できない話なら他所でお願いします
それ以外ならどうぞ
質問するのはタダですから

それでも他のスレのほうが適切かもしれませんね…例えばココとか
<集大成>アルゴリズム大辞典
http://hibari.2ch.net/test/read.cgi/tech/1086272325/

360 :356:2011/09/17(土) 00:40:05.34
ありがとうございます
そっち行きます。

361 :デフォルトの名無しさん:2011/09/17(土) 12:51:09.28
上昇トレンドかどうか聞いてるのか、そりゃスレちがいって言われるだろ

株価データがあるのなら、極大点 極小点 (付近より高い、低い点)を出して
今回の極小点が前の極小より大きく、かつ極大点が前の極大より大きい状態が続いているのが上昇トレンド

グラフからデータを取り出すのは色別でもしてくれていないと面倒だね

362 :デフォルトの名無しさん:2011/09/20(火) 10:16:21.24
プロジェクトを開いただけでdelphiを終了すると
0xなんたらかんたらの命令が0xなんちゃらのメモリーを参照しました〜
って、出るんだけど何で?
何時も同じプロジェクトで出る

363 :デフォルトの名無しさん:2011/09/20(火) 10:32:03.11
・プロジェクトが壊れてる
・PCが壊れてる
・ユーザが壊れてる

364 :デフォルトの名無しさん:2011/09/20(火) 10:51:32.92
インストール済みカスタムコンポーネントがバグってると
結構簡単にIDEが不安定になる

365 :デフォルトの名無しさん:2011/09/20(火) 11:08:32.51
DCUファイルにデバッグ情報を入れるってどういう事ですか?
入れてどう活用するのでしょうか?

366 :デフォルトの名無しさん:2011/09/20(火) 11:17:05.46
DCUファイルだけでステップ実行とか出来るんじゃないの?
違ってたらゴメン。

367 :デフォルトの名無しさん:2011/09/20(火) 12:21:09.06
DCUファイルだけで実行なんて出来るんですか?
ググったけど、それらしい情報が出てこないんで
教えて下さい。

368 :デフォルトの名無しさん:2011/09/20(火) 12:45:08.66
>>362
そういう時はプロジェクトの不要ファイルを削除するといいよ

ttp://delwiki.info/?Tips%2F%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%81%AE%E4%B8%8D%E8%A6%81%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E5%89%8A%E9%99%A4%E3%81%99%E3%82%8B

del /S *.~*
del /S *.$$$
del /S *.dsm
del /S *.dcu
del /S *.DBG
del /S *.DLG
del /S *.TDS

これくらい消せば大丈夫だと思うけどな

369 :デフォルトの名無しさん:2011/09/20(火) 13:02:58.73
>>368
あと
*.local
*.identcache
*.cbk
があったらこれらも

>>367
通常はVCL/RTLの関数はステップイン(F7)で中に入っていけないけど、
プロジェクトオプションのコンパイラでデバッグ版DCUを使うをONにすると
これらの関数の中にステップインすることができるようになる。これは
VCL/RTLのDCUにデバッグ情報をつけたものが別途存在していて、
これをリンクすることで可能になる。DCUにデバッグ情報をつける、
というのはこのような(後者のような)DCUを作成するということ。

370 :デフォルトの名無しさん:2011/09/20(火) 13:54:46.92
ありがとうございます。
VCL/RTLの中に今まで普通に入っていたので
そんなもんかと思ってました。
スッキリしました。

371 :デフォルトの名無しさん:2011/09/21(水) 21:18:05.48
今月中にダウンロード版買えばDVDももらえるらしいけど、
DVD版を買えば良いんじゃないの?

372 :デフォルトの名無しさん:2011/09/21(水) 22:01:48.15
値段がいくらに上がるかご存じ?

373 :デフォルトの名無しさん:2011/09/21(水) 22:05:00.58
DVD版はキャンペーン無しなんだ。

374 :デフォルトの名無しさん:2011/09/23(金) 11:14:17.41
「2011年9月20日」と「2011年9月21日」の文字列で
どちらが最新の日付か判断しようとすると

1.TstringListに入れてソートして、Indexの大きい方
2.年、月、日の文字を消して、<とかで比較

が、思い浮かんだんですけど、もっとスマートな
方法ってありますか?

375 :デフォルトの名無しさん:2011/09/23(金) 11:22:23.70
スマートも何も単純な文字列比較じゃ'2011/9/10'>'2011/10/1'なんてことになりかねないから
正規表現等で3つの数値を抽出して上から比較するかTDateTimeに変換するかしかない。

376 :デフォルトの名無しさん:2011/09/23(金) 14:40:18.36
VarToDateTime使えば漢字が使われてても正しくTDateTimeに変換されるんじゃなかったっけ

377 :デフォルトの名無しさん:2011/09/23(金) 23:04:15.11
>>375
「するしかない」って言い方はどうかと思うが

378 :デフォルトの名無しさん:2011/09/23(金) 23:18:03.61
「するしかない」とは書かれてないね
揚げ足取ろうとしたのに自分が揚げ足取られるのもどうかと思うよ

379 :374:2011/09/24(土) 08:34:32.26
皆さん、ありがとうございます。
VarToDateTime、便利です。

380 :デフォルトの名無しさん:2011/09/25(日) 15:52:00.85
するめいかしかない

381 :デフォルトの名無しさん:2011/09/25(日) 15:58:15.82
すいかしかない


382 :デフォルトの名無しさん:2011/09/26(月) 23:20:34.43
キー入力を拾う処理を作っています。
Form1.KeyPreview := True; とし OnKeyDown と OnKeyPress で Key を調べていますが ASCII 表と異なる結果が出ます。

Delete は OnKeyPress では検出できず OnKeyDown では 127(0x7F) ではなく 46(0x2E) と出ます。
@ は OnKeyPress ではちゃんと 64(0x40) と出ますが OnKeyDown では 192 になります。

印刷可能文字以外も ASCII の通りに検出したいのですが良い方法はありませんか?
ちなみに環境は Win7, Del5 で富士通のノートパソコンです。

383 :デフォルトの名無しさん:2011/09/26(月) 23:43:37.84
>>382
俺は使い方をよく知らんのだけど、Ascとかord は?

384 :デフォルトの名無しさん:2011/09/26(月) 23:52:40.04
>>382
仮想キーコードでググレカス

385 :デフォルトの名無しさん:2011/09/27(火) 00:00:41.43
>>383
レスありがとうございます。>>384 で解決しました。

>>384
ぐぐりました。ありがとうございます。

386 :デフォルトの名無しさん:2011/09/27(火) 00:04:49.42
Windows.pasをVK_で検索するといいよ

387 :デフォルトの名無しさん:2011/09/27(火) 09:04:45.68
winsightというかAPIの質問になってしまうかもしれないのですが、
見た目、ボタンが並んでいるパネルなのにwinsightで見ても、
ボタン1つ1つのハンドルはでていなくて、パネルのハンドルしか
並んでいない場合、delphiから任意のボタンにクリックメッセージを
投げたい時はどうすればいいのでしょうか?

388 :デフォルトの名無しさん:2011/09/27(火) 09:19:44.30
そのパネルにWM_MBUTTONDOWN
 で 座標を変更しながら送って反応を見てみたら?

389 :デフォルトの名無しさん:2011/09/27(火) 09:40:12.96
>>388
レス、ありがとうございます。
教えてもらった事はまだ試していないのですが、
ボタンが並んでるパネルがスライド式で、隠れている場合の
対処方法はあるのでしょうか?


390 :デフォルトの名無しさん:2011/09/27(火) 10:15:06.94
試してから言えよ

391 :デフォルトの名無しさん:2011/09/27(火) 10:40:58.73
はい、では、明日質問します。

392 :デフォルトの名無しさん:2011/09/27(火) 16:26:16.99
あれ? >>388 は 真ん中のボタンだ。  左ボタンはWM_LBUTTONDOWN ね
wh := FindWindow でもしてそのパネルを捕まえたら

パネル上のボタンの位置だけずらしたx,yで

PostMessage(wh, WM_LBUTTONDOWN, x, y);
Sleep(100);
PostMessage(wh, WM_LBUTTONUP, x, y);

パネルにボタンの絵を描いてボタンが複数あるように見せるとか
グリッドの入力で1つのEDITを移動させて使うとか

昔は窓ハンドルを抑えるために工夫したみたいね。



393 :デフォルトの名無しさん:2011/09/27(火) 19:31:38.78
>>387
そのボタンはリソースを持たないボタンではないですか?
(TSpeedButtonとかTGraphicControlより継承されたコンポーネントとかでは?)

試してないのではっきりとは言えませんが、多分winsightにも出なかったようね気がします。

>並んでいない場合、delphiから任意のボタンにクリックメッセージを
>投げたい時はどうすればいいのでしょうか?
一般的なWin32アプリの作りとして、SpeedButtonはメニューにも
同等の機能があるのでそちらを呼んでみては?

一般的なWin32アプリの作りとして、キーボードのみ(マウスなし)でも
操作出来るように作るので、フォーカスがないSpeedButtonは代替の機能があるはずです。

394 :デフォルトの名無しさん:2011/09/27(火) 21:47:54.45
間抜けな話なんですが、本職のプログラマーではなく
5年以上前に本を片手に簡単なプログラムを作ったのですが、
最近、またプログラムする必要が出てきて、昔作った奴を
参考にしようと思ったのですが、何だこれ?っていう部分がありまして
相談に乗って欲しいのですが。

レコードの定義があって
type
THogeHoge = record
LoadFile:String;
DataList:TStringList;
end;
PHogeHoge = ^THogeHoge;

あるプロシージャの中に
PHogeHoge(CheckListBox1.Items.Objects[0]).DataList.Add(s);
とありまして、何故これが許されるのかが分からないというか、当時何でこんな事出来たんだろうと思い出せない。orz

PHogeHoge.DataList.Add(s); なら sを追加するんだろうと思いますが
(CheckListBox1.Items.Objects[0])がなぜ許されるのかが分からないのです。

間抜けな話ですが、教えて下さい。

395 :デフォルトの名無しさん:2011/09/27(火) 22:00:17.55
ポインタの勉強しなおせ

396 :デフォルトの名無しさん:2011/09/27(火) 23:36:21.46
CheckListBox1.Items.Objects[]にAllocMemしたTHogeHogeのアドレスを入れてあるんじゃねーの?

397 :デフォルトの名無しさん:2011/09/28(水) 13:10:44.49
.Items.Objects[0] は TObject 型を返すのだけど
オブジェクト形というのは中身は常にポインタ。使うときに参照される。

だからレコードのポインタと同じサイズなんで無理やり使っても物理的には問題ない

もっと酷い人になると Items.Object[]に無理に整数型を入れて使う人もいる。

398 :デフォルトの名無しさん:2011/09/28(水) 13:22:51.05
別に酷くはない
基本的にTagとかObjects[]とかDataとかはそうやって使うもんだし

399 :デフォルトの名無しさん:2011/09/28(水) 17:23:39.66
>>386
やってみます。ありがとうございます。

400 :394:2011/09/28(水) 19:16:25.94
みなさん、ありがとうございます。
ポインタをググって調べたのですが、
PHogeHoge(CheckListBox1.Items.Objects[0]).DataList.Add(s);
は、ポインタの位置をCheckListBox1.Items.Objects[0]によって指定しているという
解釈でよろしいでしょうか?



401 :デフォルトの名無しさん:2011/09/28(水) 19:53:07.39
ポインタの位置って何よ

402 :デフォルトの名無しさん:2011/09/28(水) 20:49:46.18
>>400
いいけど言葉を正確に使うならポインタそのものが何かの位置を示すものだから「ポインタの位置」というのはおかしい。

403 :デフォルトの名無しさん:2011/09/28(水) 20:54:30.22
>>400
「ポインタ」は入れ物。入っているのは「アドレス」。Objects[]にはアドレスが格納されていて、
そのアドレスが指す先がTHogeHogeレコード型になっている。

404 :デフォルトの名無しさん:2011/09/28(水) 21:00:23.13
ぐぐってわかるぐらいならプログラマなんていらないよ

405 :394:2011/09/28(水) 21:19:32.92
皆さん、ありがとうございます。
Objects[0]が示すアドレスにあるTHogeHogeのDataListに
「s」を追加しているって事ですね?
どこからこんな書き方探してきたんだろう。
ポインタを使う時はDelphiでは一般的なんですか?

>>404
そんなくだらない事言っていたらダメだよ。
良い事も悪い事も全部自分に返ってくるんだから。


406 :デフォルトの名無しさん:2011/09/28(水) 21:26:37.98
>>402,403
何か言っている事がおかしいような気がする。

407 :デフォルトの名無しさん:2011/09/28(水) 21:29:35.65
>>401

408 :デフォルトの名無しさん:2011/09/28(水) 21:53:21.98
>>405
× ポインタを使う時はDelphiでは一般的なんですか?
○ ポインタを使う時に今回のような書き方って、Delphiでは一般的なんでしょうか?


409 :デフォルトの名無しさん:2011/09/29(木) 09:28:26.69
Delphi使いによる優しい日本語講座

410 :デフォルトの名無しさん:2011/09/29(木) 18:31:04.52
ググってコピペったソースを理解できずに困ったでござるの巻、か

411 :デフォルトの名無しさん:2011/09/29(木) 23:57:27.21
楽天証券のRSSを使いたいんだがTDdeClientConvに銘柄コードと市場、
TDDEClientItemに取得したい項目を書けばいいの?
TDdeClientConvにt「7203.」
TDDEClientItemに「現在値」
TDDEClientItemを増やして、TDdeClientConvに
結びつければ複数項目同時に取得できるってことでおk?

412 :デフォルトの名無しさん:2011/09/30(金) 08:31:20.91
DELのXEでツールバーに Secondsとか出てるのって何?

413 :デフォルトの名無しさん:2011/09/30(金) 09:54:42.54
AQTime

414 :デフォルトの名無しさん:2011/10/03(月) 00:52:54.88
Del7で今までデスクトップで使っていたのを
ノートでもそのまま環境を移して使う方法を
教えて下さい。

カスタムコンポーネントはCustom.dpkと言うのを作って
登録するようにしています。
ライブラリパスは、今のをコピペすれば簡単に通せると思うのですが、
コンポーネントの再登録を簡単にするにはどうすればいいでしょうか?

415 :デフォルトの名無しさん:2011/10/03(月) 08:59:40.50
自分の書き込みの中に答えがあるではないか

416 :デフォルトの名無しさん:2011/10/03(月) 09:28:53.38
>>415
多分、Custom.dpkをインストールすればいいじゃんと言うことだと思うのですが、
[エラー] 自動構築されないパッケージ 'custom' が常に構築対象となるパッケージ 'dclusr' を要求しています
と出てしまって出来ないのです。

417 :デフォルトの名無しさん:2011/10/03(月) 10:14:52.99
小出しよくない

418 :デフォルトの名無しさん:2011/10/03(月) 10:50:17.72
>>416
requiredからdclusrを外す

419 :デフォルトの名無しさん:2011/10/04(火) 15:56:35.23
Del7で
今フォーム数が1500個くらいのシステムを整理しています
現状1フォルダになっているので、機能単位にフォルダ分けして
コンパイルを通る作業をしていますが、
例えば商品マスタ参照みたいな汎用画面が、修正機能付与等で
実質100画面くらい内包外包しているとします
他のプロジェクトで商品マスタ画面を参照したいだけなのに
usesすると他の100画面もプロジェクトマネージャに
パス解決登録せざるを得ないのをさける方法はありますでしょうか
(プロジェクトの検索パス指定以外の方法をお聞かせください
 問題画面が1つだけではないので検索パスが指定しきれません)
(implementationのusesでパス指定できれば解決なんだけどだめみたい)

Del3以来になります。よろしくお願いします

420 :デフォルトの名無しさん:2011/10/04(火) 16:15:34.13
UnitAを別のプロジェクトに取り込むとUnitAがusesしてるUnitA1,UnitA2,UnitA3...が
全部必要になるとかそういう話?そりゃ作りを変えなきゃだめだろうねぇ。

421 :デフォルトの名無しさん:2011/10/04(火) 16:21:19.34
>>420
ありがとうございます
問題画面をDLL化するくらいしかないですかね?
XEとかだとプロジェクトグループusesみたいなの
あるんですかね

422 :デフォルトの名無しさん:2011/10/04(火) 17:24:27.18
パッケージにしたら?

423 :デフォルトの名無しさん:2011/10/04(火) 17:38:19.97
>>422
おお、パッケージってありましたね
外包画面もあるので単純にはいかない気もしますが試してみます
ありがとうございます

424 :デフォルトの名無しさん:2011/10/05(水) 10:22:53.98
ListviewをvsReport形式でデータをプログラムから
入力して表示することは出来たのですが、
例えば、2行目の左から3,4,5番目の文字列を
プログラム上から変更するにはどうすればいいですか?
TItemに列指定があると思ったのですが、ヘルプ見てもよく分からなかったです。


425 :デフォルトの名無しさん:2011/10/05(水) 10:48:31.11
SubStrings

426 :デフォルトの名無しさん:2011/10/05(水) 11:25:27.27
>>424
ちなみに、Listviewは件数が多くなると極端に遅くなるので
最初から仮想リストビューで作ったほうがいいですよ。

procedure TForm1.ListView1Data(Sender: TObject; Item: TListItem);
begin
 Item.Caption:='1カラム目';
 Item.SubItems.Add('2カラム目');
end;

427 :デフォルトの名無しさん:2011/10/05(水) 11:36:12.09
>>425-426
ありがとうございます。
仮想リストビュー調べてみます。

428 :デフォルトの名無しさん:2011/10/05(水) 14:28:22.07
>>422
ありがとうございました
パッケージでほぼ理想の形で管理できそうです

429 :デフォルトの名無しさん:2011/10/06(木) 08:55:14.69
楽天証券のRSSというツールがあって
DDEが使えれば自作が出来るというので
作っています。

マルチスレッドを使ってDDE通信させようと
テストしていたのですが、スレッドのCreateの
中で、DDECliantCnvとCliantItemを動的に作成
すると通信するのですが、同じプログラムをExecute
の中で実行すると通信しません。

楽天RSSのスレでは、DDEはUIの中でやるものと
教えてもらって、そうするつもりではいるのですが、
CreateとExecuteで何故違うのでしょう。

430 :デフォルトの名無しさん:2011/10/06(木) 08:57:22.19
読んで字のごとく
生成、実行

431 :デフォルトの名無しさん:2011/10/06(木) 09:10:34.22
>>430
> 読んで字のごとく
> 生成、実行
早速のレス、ありがとうございます。
何故と言う言葉の意味分かりますか?

432 :デフォルトの名無しさん:2011/10/06(木) 09:15:25.47
>>431
喧嘩売ると答えてもらえると思ったんですか?

433 :デフォルトの名無しさん:2011/10/06(木) 09:30:15.98
何やってんだか…

434 :デフォルトの名無しさん:2011/10/06(木) 10:05:18.87
喧嘩売ったのはそっち
軽くからかったつもりが、ちょっときつめに
言われたら、あわわわってw

435 :デフォルトの名無しさん:2011/10/06(木) 10:12:17.11
DDEのコンポーネントは使いまわすとうまく動かなくて都度生成破棄が正解だった気が

436 :デフォルトの名無しさん:2011/10/06(木) 10:27:56.17
>>435
ありがとうございます。
その都度、生成破棄しているのですがCreateでは何回でも接続できるのです。
RSSというツールは接続数に300という上限があるのですが、
生成破棄しているので、3000以上の株銘柄分接続は出来ます。

同じプログラムをExecuteで実行すると、一つも接続できないので質問しました。

437 :デフォルトの名無しさん:2011/10/06(木) 10:31:38.98
>>429
CreateとExecuteの違いは、Createではまだマルチスレッドになっていないと思いますが。

たしかDelphiのDDEは非同期だったような気がしますが?
その場合でもスレッドは必要ですか?

438 :デフォルトの名無しさん:2011/10/06(木) 10:44:08.00
>>437
そういうことですか。
ありがとうございます。

DDEの接続時に時間が掛かるので、
スレッドを五つくらいに分けられたらなと
考えました。
一度接続してしまえば、ホットリンクとかしなくても
そこそこ反応は良いので、そんなに気にすることもないのですが、
見た目の問題というか、ちょっと気になって何日もグダグダやってました。


439 :デフォルトの名無しさん:2011/10/06(木) 11:26:36.12
だっさw

440 :デフォルトの名無しさん:2011/10/06(木) 12:05:24.86
だっさw

441 :デフォルトの名無しさん:2011/10/06(木) 12:07:27.80
何度もご苦労w

442 :デフォルトの名無しさん:2011/10/06(木) 12:23:22.22
ウンコチンチーン

443 :デフォルトの名無しさん:2011/10/06(木) 12:33:06.38
人口少ないんだからけんかすんなよ
ほとんどの人は社会人なんだから
聞く方は下手下手でいこうね


444 :デフォルトの名無しさん:2011/10/06(木) 12:39:55.54
どっちもどっち。
仕掛けた方のレスが幼稚だけどね
それに反応するなって話だわ

445 :デフォルトの名無しさん:2011/10/06(木) 12:58:53.82
でーでーいーー

446 :デフォルトの名無しさん:2011/10/06(木) 18:59:03.48
>>444
必死ですね

447 :デフォルトの名無しさん:2011/10/06(木) 22:30:18.37
今、質問しても良い?

448 :デフォルトの名無しさん:2011/10/06(木) 22:39:24.93
いいよ

449 :447:2011/10/06(木) 22:40:33.35
THoge=Class
HogeList:TStringList;
end;
みたいなクラスを作って使う時に
Hage:THoge;
Hage:=THoge.Create;(HogeListもCreate)
で、これ一個だけなら捨てる時に
Hage.Freeってやればいいと思うんだけど
Hageを何個もCreateしてTListみたいなので
管理した場合の捨て方ってどうすればいい?

450 :デフォルトの名無しさん:2011/10/06(木) 22:51:10.66
TObjectListでコンストラクタのパラメータにTrueを指定。こいつに作ったクラスのインスタンスを保持させる。

451 :デフォルトの名無しさん:2011/10/06(木) 22:54:37.49
TObjectList
もしくは、IInterfaceを実装してるなら、TInterfaceList

あと、バージョンぐらい書こうぜ、な。


452 :デフォルトの名無しさん:2011/10/06(木) 23:02:03.16
初心者で練習用ならfreeしなくてOK。.NET使おうぜ

453 :デフォルトの名無しさん:2011/10/07(金) 01:05:27.80
XE2ってiosソフトをXE単体では作れないのね。
興奮して損した

454 :453:2011/10/07(金) 09:21:23.48
XE2で本田さんのiniファイルやレジストリを
扱うコンポーネントみたいなのってありますか?

455 :デフォルトの名無しさん:2011/10/07(金) 09:43:11.41
>>451
> TObjectList
> もしくは、IInterfaceを実装してるなら、TInterfaceList
>
> あと、バージョンぐらい書こうぜ、な。
>
すんません

456 :デフォルトの名無しさん:2011/10/07(金) 09:46:56.88
>>455
謝れって言ってるんじゃなくて書けって言ってるのが分からない?
バージョンによって対応方法が違うでしょ?新しい方が機能も豊富なわけだし

457 :デフォルトの名無しさん:2011/10/07(金) 09:55:55.80
すみません。もういいです。 > 456

458 :デフォルトの名無しさん:2011/10/07(金) 11:19:04.41
Delphi(デルファイ)について、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を
勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが
お礼はDelphiの布教と初心者の救済をお願いします。

459 :デフォルトの名無しさん:2011/10/08(土) 00:31:58.82
すみません。もういいです。 > 458

460 :447:2011/10/08(土) 00:35:57.28
>>456
バージョンはXEです

461 :デフォルトの名無しさん:2011/10/08(土) 02:51:27.22
仕事ならともかく、趣味でやる人で
XEとか買う人いるんかね。

462 :447:2011/10/08(土) 03:03:02.04
もう結構です。 >461

463 :447:2011/10/08(土) 03:08:29.16
もう結構です。 >462

464 :デフォルトの名無しさん:2011/10/08(土) 04:15:48.84
Delphi 使い=糞

465 :デフォルトの名無しさん:2011/10/08(土) 09:31:42.73
バージョンD7
ソフトAからソフトBを起動させる時に、状況に応じて1とか2とか数字を
送って、ソフトBで受け取るというとこをしたいしたいのだけどどうすればいいてすか?

466 :デフォルトの名無しさん:2011/10/08(土) 09:46:41.58
起動オプション?

"softB -1"みたいに

467 :447:2011/10/08(土) 09:56:03.36
A が c:\ にファイルを書いて
B がずっと監視する。ってのが確実


468 :デフォルトの名無しさん:2011/10/08(土) 10:13:12.06
>>461
TurboPascalやってた人やDelphi6辺りで知った人が趣味で買ってる例は結構あるみたいだね
TurboPascalを見ても分かるように時代が古いから、使用者の年齢層も高くて比較的楽に買える人も多いし
知り合いには60過ぎで趣味でDelphi使ってる人がいるよ

469 :デフォルトの名無しさん:2011/10/08(土) 11:00:22.03
60過ぎが個人で何のプログラムを作るんだい?
使っている。と思っているだけだろう?

年寄りはためた金使い切ってとっとと死んでください。
俺たちの未来はお前たちのものではない。


470 :デフォルトの名無しさん:2011/10/08(土) 11:10:20.61
>>466-467
dです。
ファイルを書くのが単純で確実そうですね。
起動オプションはググってきます。



471 :デフォルトの名無しさん:2011/10/08(土) 12:34:01.60
>>469
お前に未来なんてあったの?

472 :デフォルトの名無しさん:2011/10/08(土) 17:03:48.28
無いだろうなw

473 :デフォルトの名無しさん:2011/10/08(土) 23:12:50.66
会社のサーバーからデータを取ってきて表示するツールを作りました。
今回、データの種類別にツールを単独で作って、表示だけをする
アプリで各ツールからデータを取ってきてオペレーターの希望するデータを
表示するというものにしました。

そのこと自体は何とか出来たのですが、データを取ってくるツールは
FormにIndyがあるだけです。

起動するとタスクバーにずらずらと起動させたアプリが並んで、
なんかみっともない感じがするので、データだけを取ってくるアプリは
オペレーターから見られないように起動させることは可能でしょうか?
起動、終了は表示するアプリが親になってやっています。

環境、Delphi7pro、windowsXpsp3です。

474 :デフォルトの名無しさん:2011/10/08(土) 23:17:44.56
可能ですね

475 :デフォルトの名無しさん:2011/10/08(土) 23:46:06.20
どうすれば?

476 :デフォルトの名無しさん:2011/10/09(日) 00:42:16.50
フォームがいらないってことでしょ? コンソールアプリにすればいいじゃん
一番スマートなのはDLLかな

477 :デフォルトの名無しさん:2011/10/09(日) 07:15:22.43
SHowInTaskBar:= False

478 :デフォルトの名無しさん:2011/10/09(日) 18:50:07.78
>>476
コンソールアプリにしただけだとIndy動かないよ

479 :デフォルトの名無しさん:2011/10/09(日) 21:03:05.80
ホームに貼る代わりに自分でCreateすればいいだけじゃねーの?

480 :デフォルトの名無しさん:2011/10/09(日) 21:29:20.66
もしそれを指してるならIndyが動かないじゃなくてIndyが使えないと書いてるだろうね

481 :デフォルトの名無しさん:2011/10/11(火) 02:02:23.43
Delphi 7 での時間の計算に関して教えて下さい。
8時から17時までが何時間かという計算は、
ヘルプを見て分かったのですが、この答えから
さらに、1時間を引くのにはどうすればいいのでしょうか。

今は8時から9時までの1時間を計算しておいて、引くように
していますが、もっと単純なやり方を教えて下さい。


482 :デフォルトの名無しさん:2011/10/11(火) 03:27:12.76
これでどうですか?
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(FormatDateTime('HH:MM:SS', VarToDateTime('17:00:00') -
VarToDateTime('08:00:00') -
VarToDateTime('01:00:00')));
end;


483 :デフォルトの名無しさん:2011/10/11(火) 08:30:41.60
>>482
おお!ありがとうございます。
普通の数字での計算みたいに考えて良いんですね。


484 :デフォルトの名無しさん:2011/10/11(火) 08:36:14.01
DateTimeの正体はdouble

485 :デフォルトの名無しさん:2011/10/11(火) 09:42:10.25
>>481
DateUtilsにその辺の操作関数が全部入ってるよ

486 :デフォルトの名無しさん:2011/10/11(火) 09:48:11.12
確か、DateTimeの中身がdoubleで1.0が1日分だったような気がするから

DateTime(17時) - DateTime(8時) - 1 / 24
ってやればよかった気がする

487 :デフォルトの名無しさん:2011/10/11(火) 10:06:33.05
中身弄らずにIncHour使え

488 :481:2011/10/12(水) 00:52:01.39
皆さんありがとうございます。
日時を扱うのは初めてで、ヘルプは見るのですが
どう記述すればいいかが分からなくて、
何となくおっくうになってしまいます。w

また、よろしく御願いします。


489 :デフォルトの名無しさん:2011/10/12(水) 10:55:18.23
「リストのインデックスを超えています」ってエラーがでるんだけど、
エラー箇所の特定が出来ずにはまっています。

TstringListを使っているプロジージャーは一個だけなので
その中にTry〜Exceptをあちこちに仕掛けているんだけど、
上記のエラー表示が出て、Try〜Exceptで書いた独自の
メッセージは出てきません。
FormのCreateにもTry〜Exceptを仕掛けたのですが、反応はありません。

エラー箇所の特定はどうしたらいいでしょうか?
Delphi6です。

490 :489:2011/10/12(水) 11:07:51.69
>FormのCreateにもTry〜Exceptを仕掛けたのですが、反応はありません。
は、Createの中でTstringListのCreateをしているので書きました。

イミフな文章すいません。


491 :デフォルトの名無しさん:2011/10/12(水) 11:33:20.57
>>489
ステップ実行で特定出来ないんですか?

例外が発生したアドレスは分かりますよね?
そのアドレスから調べたらどうですか?

[表示]→[デバッグ]→[モジュール]

エラーメッセージにアドレスが無い場合は、ExceptAddrを
ApplicationEventsExceptionで表示するとか。

あと、画面作成中に例外が拾えないのなら
プロジェクトファイル(dpr)やどのかのinitializationで発生しているとかはないですかね?

492 :デフォルトの名無しさん:2011/10/12(水) 11:33:48.25
デバッグ起動すれば一発だろ

493 :デフォルトの名無しさん:2011/10/12(水) 11:49:19.60
try〜exceptはデバッグのための機能ではないと思うんだ

494 :デフォルトの名無しさん:2011/10/12(水) 11:54:29.91
>>489
デバッガ使えよ

495 :デフォルトの名無しさん:2011/10/12(水) 13:22:03.25
Delphi(デルファイ)について、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を
勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが
お礼はDelphiの布教と初心者の救済をお願いします。


496 :デフォルトの名無しさん:2011/10/12(水) 13:23:19.85
>>489
ソースうpしろよ。慣れた人のソース読むだけでバグ発見能力ははんぱじゃないから

497 :デフォルトの名無しさん:2011/10/12(水) 13:38:39.68
なぜ>>495が貼られたのかがわからん。

498 :デフォルトの名無しさん:2011/10/12(水) 14:32:07.51
>>495
そんなもん貼る暇があったらお前が教えてやれよw

499 :デフォルトの名無しさん:2011/10/12(水) 14:44:04.04
そこは質問者本人が貼った可能性も頭に入れておかないと

500 :デフォルトの名無しさん:2011/10/12(水) 22:49:14.16
>>489
起動時なのか、なにかボタンなりを押した時なのか、その辺もっと詳細な情報をだして。

501 :デフォルトの名無しさん:2011/10/12(水) 22:53:36.63
初心者が一番陥りやすいのが要らない行を Delete する時に
for i:=0 to Count-1 do
でしてしまうことだと思う
そこは downto で最下段から

あ、もしかして超初心者ならこの可能性もあり
for i:=0 to Count do


502 :デフォルトの名無しさん:2011/10/13(木) 07:35:44.81
文字列sが改行コード(や#0..#19すべて)を含む文字列の場合に
MyStrings.Add(s)
ss := MyStrings[n]
したして問題ない事って保証されてますか?

MyStrings2.Text := MyStrings.Text
したりするとリストの要素が変わってしまうんでしょうけどそれ以外で。

503 :デフォルトの名無しさん:2011/10/13(木) 09:08:49.95
明文化された記述はないけれど、
DOS 時代なら保証されていたと思うが、
ほとんどすべての Windows API が(C 系の RTL を使っているため) 0 を文字列終端として
扱うため、Delphi RTL としては「保証」はされなくなったはず。




504 :デフォルトの名無しさん:2011/10/13(木) 09:51:14.25
>>502
保証はないけど、実装からみて問題ない。Delphiの長い文字列はNUL終端文字列ではないから。
Textプロパティは文字列の内容を解釈するんで当然駄目だけど、Strings[]は内容を見ない。

505 :デフォルトの名無しさん:2011/10/13(木) 11:07:01.89
保証はない。以上。

506 :デフォルトの名無しさん:2011/10/13(木) 16:46:09.48
>>489 コンパイルオプションで「最適化」をオフにするのと、実行時エラーやデバッグオプション
を全部オンにしてから、プロジェクトを再構築する
最適化がかかったままだとデバッガがまともに動かない

507 :デフォルトの名無しさん:2011/10/13(木) 17:34:22.43
えっ

508 :デフォルトの名無しさん:2011/10/13(木) 21:10:07.31
コンパイルオプションはデフォルトが基本って中村師匠が言ってた

509 :デフォルトの名無しさん:2011/10/13(木) 21:13:43.58
Delphi(デルファイ)について、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を
勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが
お礼はDelphiの布教と初心者の救済をお願いします。


510 :デフォルトの名無しさん:2011/10/15(土) 01:14:46.97
7からeX2に変えたんだけど、64bitアプリ作るならいいけど、
作らないなら必要なかったな。
買う価値と言ったらゼスチャーくらいか

511 :デフォルトの名無しさん:2011/10/15(土) 11:07:09.08
独り言はチラシの裏へ

512 :デフォルトの名無しさん:2011/10/15(土) 12:51:14.15
eX2
ゼスチャー

513 :デフォルトの名無しさん:2011/10/15(土) 15:47:22.47
SimpleRoundToについて教えて下さい。

a:double;
a:=SimpleRoundTo(0.5,2);
だと、「0」が入って

s:string;
s:=FloattoStr(SimpleRoundTo(0.5,2));
だと、「1」が入るんですが、これってstringを返すんですか?

514 :デフォルトの名無しさん:2011/10/15(土) 15:56:31.10
普通に'0'が入るが

515 :デフォルトの名無しさん:2011/10/15(土) 16:06:57.20
すみません、間違えました。
a:=SimpleRoundTo(0.5,0);
です。

この場合って切り上げられて「1」になると思ったんですが、
違いますか?

516 :デフォルトの名無しさん:2011/10/15(土) 16:16:22.56
>>515
http://docwiki.embarcadero.com/VCL/XE2/ja/Math.SimpleRoundTo

517 :デフォルトの名無しさん:2011/10/15(土) 18:07:41.55
ありがとうございます。
SetRoundMode 関数を使って明示的に
使うんですね。

518 :デフォルトの名無しさん:2011/10/15(土) 18:16:48.16
つうか Trunc(x+0.5)とかやろ普通

519 :デフォルトの名無しさん:2011/10/15(土) 18:24:24.49
そうなんですか、ありがとうございます。

520 :デフォルトの名無しさん:2011/10/15(土) 22:47:23.54
>>519
Round関数のヘルプも見るといいよ

521 :デフォルトの名無しさん:2011/10/16(日) 17:12:25.94
a:=5;
b:=0.1;
c:=a/b;
で c が 0 になったり 49 になったりするんだけど、
変数の型は何にしたらいいですか?

522 :521:2011/10/16(日) 17:33:54.42
色々やっていて訳分からなくなってしまいました。

やりたいことは、少数の切り捨てなんですが、
Truncを使ったら、1が0とか50が49とかになるので
小数部分の切り捨ては何を使ったらいいですか?
simpleround関数も上野を見てやってみたんですが、
別に小数部分が変わるようでもないみたいですし、
よろしくお願いします。

523 :デフォルトの名無しさん:2011/10/16(日) 17:44:31.33
Frac関数使って出来ました。
お騒がせしました。

524 :デフォルトの名無しさん:2011/10/16(日) 17:52:23.53
> Truncを使ったら、1が0とか50が49とかになるので

おかしいだろそれ
何か壮大に勘違いしてる可能性が高い

525 :521:2011/10/16(日) 18:21:18.34
上のスレ見てSetRoundMode 関数を
いじってみたりしたんですが関係ないですか?

526 :デフォルトの名無しさん:2011/10/16(日) 18:47:13.33
>Truncを使ったら、1が0とか50が49とかになるので
無駄なレスしてないでソースを上から下まで全部コピペして書けよ

527 :デフォルトの名無しさん:2011/10/16(日) 21:12:46.70
命令される覚えはないんですが

528 :デフォルトの名無しさん:2011/10/16(日) 21:35:59.97
じゃあがんばって思い通りに動くようDelphiに命令してね

529 :デフォルトの名無しさん:2011/10/16(日) 22:15:33.57
>Truncを使ったら、1が0とか50が49とかになるので
コンパイラのせいにしてるから怒られてるんだよw

530 :デフォルトの名無しさん:2011/10/17(月) 12:05:55.38
作ったアプリをバージョンアップさせる場合のソースファイルの
管理ってどうやってますか?
改造する時にフォルダーごとコピーして、元のフォルダーの
名前を変更して元フォルダー内のソースファイルに変更が
されないようにしているのですが、正規の方法みたいなものが
あるのでしょうか?

531 :デフォルトの名無しさん:2011/10/17(月) 12:08:17.93
>>530
バージョン管理システムを使う

532 :デフォルトの名無しさん:2011/10/17(月) 12:34:08.27
すみません、バージョン書いてなかった。
Delphi7Proですが、管理システムがあるのですか?
プロジェクトメニューのオプション画面ですか?

533 :デフォルトの名無しさん:2011/10/17(月) 12:37:24.97
Subversionとかgitとか外部のアプリを使う

534 :デフォルトの名無しさん:2011/10/17(月) 13:05:56.80
個人ならTortoiseSVNが楽かも
あとはそれと併用してpdumpfs

前者は明示的にver1.0.1と言ったタグを付けて
あとから好きなバージョンを取り出したり差分を表示したりするもので
後者は毎日問答無用でスナップショットを取っていき
日付単位で元に戻したりできる

535 :デフォルトの名無しさん:2011/10/17(月) 16:12:53.89
>>530
>改造する時にフォルダーごとコピー
一人なら、それで良いと思いますよ、

バージョン管理のツールはバージョン管理に
コストをかけない為にあるものなので
変にツールを導入してコストが掛かるのなら
普通にコピーがいいです。

複数人で行う時以外は、バージョン管理は深く考えない方がいいですよ。

536 :デフォルトの名無しさん:2011/10/17(月) 16:22:42.91
ありがとう。
TortoiseSVNをググって見ます。

537 :デフォルトの名無しさん:2011/10/17(月) 17:33:55.67
>>536
技術者なら知ってて当然の事だし
一人で使っても超便利なのでおすすめです

538 :デフォルトの名無しさん:2011/10/17(月) 17:55:16.44
なんだ、また自作自演か。

539 :デフォルトの名無しさん:2011/10/17(月) 18:52:54.75
そうなんですか、ありがとうございます。

540 :デフォルトの名無しさん:2011/10/17(月) 20:12:54.62
名前かメール欄にキーワード入れるとIDが出るとかならんのかね

541 :デフォルトの名無しさん:2011/10/17(月) 20:17:37.12
自演って何のこと?ここ最近で変な書き込みなんて見てないんだが

542 :デフォルトの名無しさん:2011/10/17(月) 22:23:38.25
>>536
フォルダコピーが文化として定着しているのなら、各フォルダに管理情報を置くSubversionよりもルートに一つだけ置く
gitのほうがいいかもしれない。

Linux環境でレポジトリを共有する場合は、文字コードの問題があるけど、windows単体なら、多分問題ないのかな。

bazaar使いの俺にはよく分からんとです。

543 :デフォルトの名無しさん:2011/10/17(月) 23:38:46.91
>>541
>>538-540

544 :デフォルトの名無しさん:2011/10/18(火) 00:34:21.78
インターネットからデータをダウンロードしたい時に
JavaScriptを使ったサイトのようにURL自体は変わらない
サイトからデータをダウンロードしたい時はどうすれば良いですか?
ちなみに下記から
http://jp.moneycentral.msn.com/investor/charts/historicdata.aspx?symbol=JP%3a7203
データを落としたいのです。

545 :デフォルトの名無しさん:2011/10/18(火) 01:52:26.39
ブラウザで表示してキャッシュを漁るほうがてっとり早い

546 :デフォルトの名無しさん:2011/10/18(火) 02:03:20.84
>>544
その程度のIQで株に手を出さないほうがいいと思う

自動株取引を研究して儲かりそうだったら、株始めようと思ったけど
なかなかうまくいかなかった

547 :デフォルトの名無しさん:2011/10/18(火) 03:37:24.25
>>542
Subversion 1.7.0からルートに一つになったらしい

548 :デフォルトの名無しさん:2011/10/18(火) 07:13:44.77
Delphi XEでコードとフォームを同時に表示するのって出来ますか?

Classic Undockはそうならない上に
コンポーネントパレットが使いにくい以前のものに戻ってしまいました。

549 :デフォルトの名無しさん:2011/10/18(火) 07:57:56.42
>>547
おお!マジですか。
DVCSはなかなか薦めにくいけど、Subversionは枯れてるから、またトライしてもらうかな?

550 :デフォルトの名無しさん:2011/10/18(火) 08:42:41.24
>>546
ヤフーからは時系列データを落としてデータ作ってるんだけど、
分割調整後の終値しかないからイマイチなんだ。
始値とかも計算させれば良いんだけど、細かい誤差が
出てしまうから。

JavScript ダウンロードでググってもあんまりヒットしないし。

自動売買は駄目だよ。
何でそんなことやりたいか分からない。
証券会社だって自動じゃないよ。
アルゴで売買タイミングや仕掛けを通知するだけ。
それくらい分からなきゃ、時間の無駄だよ。


551 :デフォルトの名無しさん:2011/10/18(火) 09:02:28.64
そりゃ「JavScript」じゃ引っかからないだろうな

552 :デフォルトの名無しさん:2011/10/18(火) 09:14:44.26
やっぱIQ低いな、おれ

553 :デフォルトの名無しさん:2011/10/18(火) 09:14:46.58
>>550
その程度のIQで株に手を出さないほうがいいと思う

554 :デフォルトの名無しさん:2011/10/18(火) 09:20:55.10
>>553
そんなに必死になるな。
オリンパス良いぞ

555 :デフォルトの名無しさん:2011/10/18(火) 14:52:53.37
>>554
その程度のIQでオリンパスに手を出さないほうがいいと思う

556 :デフォルトの名無しさん:2011/10/18(火) 15:17:23.75
馬鹿だなぁ、昨日売って大引けで買い戻し。
儲かったけど、怖すぎw

557 :デフォルトの名無しさん:2011/10/18(火) 15:19:36.70
それと目的のものは出来た。
分かったら簡単だった。w

558 :デフォルトの名無しさん:2011/10/18(火) 15:30:33.12
その程度のIQで株に手を出さないほうがいいと思う

559 :デフォルトの名無しさん:2011/10/18(火) 16:22:17.10
だんだん、広がってるじゃねーかwww

560 :デフォルトの名無しさん:2011/10/18(火) 17:24:59.40
その程度のIQで株に手を出さないほうがいいと思う

561 :デフォルトの名無しさん:2011/10/18(火) 17:26:58.05
idが無いだけで人はこうなるのか

562 :デフォルトの名無しさん:2011/10/18(火) 17:44:03.76
その程度のIQでIDに手を出さないほうがいいと思う

563 :デフォルトの名無しさん:2011/10/18(火) 17:48:08.21
エクレアの話しようず

564 :デフォルトの名無しさん:2011/10/18(火) 17:57:08.70
その程度のIQでエクレアに手を出さないほうがいいと思う

565 :デフォルトの名無しさん:2011/10/18(火) 19:02:36.92
新しいDelphiでiOSソフトの作り方おしえて。
最初にゆっとくけどIQ高いよ

566 :デフォルトの名無しさん:2011/10/18(火) 19:25:31.69
>>565
ゆっとくけど
ゆっとくけど
ゆっとくけど
ゆっとく
ゆっとく
ゆっとく
ゆう
ゆう
ゆう


567 :デフォルトの名無しさん:2011/10/18(火) 19:56:11.10
>>557
URLが変わらないこととJavascriptは無関係であるのに気付いたか。
良かったな。

568 :デフォルトの名無しさん:2011/10/18(火) 20:27:53.59
>>565
Lua iOS で検索してみるとよいよ

569 :デフォルトの名無しさん:2011/10/18(火) 22:04:35.27
>>568
ありがとう、何とか作れそうだ。

>>566
┐(´ー`)┌

570 :デフォルトの名無しさん:2011/10/18(火) 22:48:06.48
>>566
ゆうちゃんはパソコンの大先生だからIQ高いに決まってんだろボケ

571 :デフォルトの名無しさん:2011/10/22(土) 16:44:14.59
あるメニューを選択したとき
コンボボックスComboBox1.ItemIndex + 1
が選択されているときと
同じ動作をさせるには
どうすればいいですか。


572 :デフォルトの名無しさん:2011/10/22(土) 17:04:42.95
>>571
まず、ズボンを脱いで下さい。


573 :デフォルトの名無しさん:2011/10/23(日) 00:07:31.67
できました。ありがとうございます。

574 :デフォルトの名無しさん:2011/10/23(日) 17:37:42.80
やっぱりズボンだったのか

575 :デフォルトの名無しさん:2011/10/24(月) 22:33:47.51
新しいのをキャンペーン中に買ったんだけど、
DVDって勝手に送られてくるの?

576 :デフォルトの名無しさん:2011/10/24(月) 22:51:41.46
申し込みが必要。ここにリンクがある。
ttp://www.embarcadero.com/jp/radoffer

577 :デフォルトの名無しさん:2011/10/24(月) 23:18:20.58
ありがと、今手続きした。

578 :デフォルトの名無しさん:2011/10/25(火) 09:33:44.02
お礼よりブツよこせ

579 :デフォルトの名無しさん:2011/10/25(火) 14:26:46.38
わかった
尻洗って待ってろ

580 :デフォルトの名無しさん:2011/10/27(木) 13:44:07.56
delphi xeで無効になっているブロックをコメント表示にすることってできませんか?
{$define XXX}
{$ifdef XXX}
普通に表示
{$else}
コメント表示
{$endif}
てな感じで‥define消したら表示が切り替わるような

581 :デフォルトの名無しさん:2011/10/27(木) 13:52:46.20
何がしたいのか分からない

582 :デフォルトの名無しさん:2011/10/27(木) 14:34:42.23
$IFDEFとかで無効になる側をIDEでコメント扱いにして表示してほしいってこってしょ?
できません。

583 :デフォルトの名無しさん:2011/10/28(金) 10:38:12.77
Del7かEX2でエクセルのセルみたいに一升毎に色を塗れる
VCLってありますか?
ストリンググリッドが出来るかなと思ったのですが
駄目みたいで。

584 :デフォルトの名無しさん:2011/10/28(金) 11:20:13.11
>>583
TStringGrid、余裕で出来ます。

これが出来るようになれば君のプログラミングの幅が広がるでしょう。

585 :デフォルトの名無しさん:2011/10/28(金) 11:22:59.12
>>583
TStringGridのOnDrawCellで自前で描画するか、TMSあたりのGridコンポーネントを買えばできます。

586 :デフォルトの名無しさん:2011/10/28(金) 11:30:24.89
VirtualTreeViewがオヌヌメ

587 :583:2011/10/28(金) 11:34:10.40
ありがとう。
ヘルプをよく読み返してみたらできそうでした。
スレ汚しスマソ

588 :デフォルトの名無しさん:2011/10/28(金) 22:43:41.22
セルの色なんか塗れて当然だろ

589 :デフォルトの名無しさん:2011/10/28(金) 23:21:47.82
でた、当然厨wとえらそうに言ってなんだが、
VirtualTreeViewてどうやるの?

590 :デフォルトの名無しさん:2011/10/28(金) 23:38:30.55
答えはひとつだ。「DELPHIにできないことはない」 すべてが可能。

591 :デフォルトの名無しさん:2011/10/29(土) 00:05:12.09
C言語ではOSが作れて、Delphiじゃ作れないのは何で?

592 :デフォルトの名無しさん:2011/10/29(土) 00:44:06.36
x86コードが吐けるんだから、Delphiでも頑張れば作れるよ
実際SysInitやSystemをOS作成用に差し替えてCUIレベルのOS作った人は海外にいたんじゃなかったかな

593 :デフォルトの名無しさん:2011/10/29(土) 00:47:29.15
じゃ、ドライバは普通に作れるのね。
ありがまんこ

594 :デフォルトの名無しさん:2011/10/29(土) 08:32:52.81
EX2ってDemoのプログラムってないの?

595 :デフォルトの名無しさん:2011/10/29(土) 09:10:25.35
その前にEX2ってなんですか?

596 :デフォルトの名無しさん:2011/10/29(土) 09:46:06.71
XE2だっけ
どうでも良いから教えろ

597 :デフォルトの名無しさん:2011/10/29(土) 10:06:42.61
Demo はない

598 :デフォルトの名無しさん:2011/10/29(土) 11:44:23.90
Sample はある

599 :デフォルトの名無しさん:2011/10/29(土) 16:13:53.73
ラベルとかに表示する文字の太さだけを変えるにはどうすればいい?

600 :デフォルトの名無しさん:2011/10/29(土) 18:18:13.17
Label1.Font.Style := Label1.Font.Style + [fsBold];

601 :デフォルトの名無しさん:2011/10/29(土) 18:33:24.00
すみません、質問間違えました。
BoldのOn、Offじゃなくて徐々に太くしていくみたいな
感じで出来ないかと言うことです。
ボタンを押す度に少しずつ太くなるイメージです。

602 :デフォルトの名無しさん:2011/10/29(土) 22:50:24.76
CreateFont API辺りを使って自分でFont作ってFont.Handleに代入

603 :デフォルトの名無しさん:2011/10/31(月) 10:53:58.85
XE&Win7に対応したShellListViewの機能強化版ってないですか
良いコンポーネントなのにサンプル扱いで放置されてるのが悲しい…

604 :デフォルトの名無しさん:2011/10/31(月) 12:00:16.60
>>602
それじゃうまくいかないと思う。パスとか使う必要があるのでは?

605 :デフォルトの名無しさん:2011/10/31(月) 12:31:39.28
>>603
XP放置していいなら、Vista以降にIExplorerBrowser,INameSpaceTreeControlオブジェクトとして
シェルで標準で用意されてるから、それ使えば、Windowsエクスプローラと同じ機能が使える。
ttp://mrxray.on.coocan.jp/Delphi/plSamples/947_ExplorerBrowsert.htm

606 :デフォルトの名無しさん:2011/10/31(月) 12:32:00.85
実際にやったわけじゃないのに推測で否定する馬鹿がDelphi使いには多いですね

607 :デフォルトの名無しさん:2011/10/31(月) 12:38:50.34
gdiplusか?

608 :デフォルトの名無しさん:2011/10/31(月) 13:53:59.40
>>604
ラベルでパスとか使ってやるにはどうしたらいいですか?
四の五の言わずに動くソース書いてください

609 :デフォルトの名無しさん:2011/10/31(月) 15:16:58.68
Delphi(デルファイ)について、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を
勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが
お礼はDelphiの布教と初心者の救済をお願いします。


610 :デフォルトの名無しさん:2011/10/31(月) 17:49:39.40
DELを真に愛する人はDELをお勧めしない てなことはないかな?

611 :デフォルトの名無しさん:2011/10/31(月) 20:35:01.60
DELを使いこんだんだ人はクソな部分がいっぱい見えて、DELをお勧めしないが正解


612 :デフォルトの名無しさん:2011/10/31(月) 21:19:27.42
>>608
まーGDI+でもできるかもしれないけどなぁ。Path使って字を書くのは中村御大の本を買えば書いてある。
あーサンプルは御大のページにあったな。無能なのでサンプル書けなくてごめんな。自分でガンバレ!

613 :デフォルトの名無しさん:2011/10/31(月) 22:43:43.88
DELって略す人は年配が多いよね

614 :デフォルトの名無しさん:2011/10/31(月) 23:42:10.71
それが何か?

615 :デフォルトの名無しさん:2011/10/31(月) 23:48:24.08
おっさんは黙ってろってことだよ言わせんな恥ずかしい

616 :デフォルトの名無しさん:2011/10/31(月) 23:58:04.14
だが断る

617 :デフォルトの名無しさん:2011/11/01(火) 00:09:00.15
うわあ・・・

618 :神族 忍法帖【Lv=22,xxxPT】 【東電 81.9 %】 :2011/11/01(火) 16:51:09.70
誰か詳しくDelphi教えてくれる人募集中!
通信はスカイプで
僕のスカイプ名はblueskyokinawajp2010で表示名は神族です。

619 :デフォルトの名無しさん:2011/11/01(火) 19:58:47.28
最近のDelphiってpngが標準で使えるって聞いたんだけど、
pngってサンプリングだっけ?jpegjみたいにいくつかあるの?
あるとしたら、Delphiで選んでビットマップから変換とか出来る?

620 :デフォルトの名無しさん:2011/11/01(火) 20:32:24.73
まずはDelphi pngでググろうねぼうや

621 :デフォルトの名無しさん:2011/11/01(火) 20:38:45.63
仕事の逃避で久しぶりに来てみたが、
相変わらず見事なスレだな。
Delphiにもまだ新参者がいるって分かり安心したよ。

622 :神族 忍法帖【Lv=22,xxxPT】 【東電 80.9 %】 :2011/11/01(火) 22:32:22.33
ついにmod_MTのDL回数が100回突破しました!いやぁ〜うれしいすね d(・∀・)b
今日作ったmod_MTのさらにバージョンアップをうpしますw
使い方説明めんどいのでINIファイル見ればわかると思います。
        *'``・* 。
        |     `*。
       ,。∩      *    ttp://www.megaupload.com/?d=K65II6R4
      + (´・ω・`) *。+゚
      `*。 ヽ、  つ *゚*
       `・+。*・' ゚⊃ +゚
       ☆   ∪~ 。*゚
        `・+。*・ ゚

623 :デフォルトの名無しさん:2011/11/02(水) 00:13:05.69
>>620
わかったよ、坊主

624 :神族 忍法帖【Lv=22,xxxPT】 【東電 62.8 %】 :2011/11/02(水) 06:10:38.04
>>622って今頃スレに書き間違えたw(本当はマビチートスレに書き込むはずなんだけどw)

625 :デフォルトの名無しさん:2011/11/02(水) 11:18:38.05
でlpひ7で使えるpngユニットない?

626 :デフォルトの名無しさん:2011/11/02(水) 11:21:50.80
http://www.google.co.jp/search?q=%E3%81%A7%EF%BD%8C%EF%BD%90%E3%81%B27%E3%81%A7%E4%BD%BF%E3%81%88%E3%82%8Bpng%E3%83%A6%E3%83%8B%E3%83%83%E3%83%88%E3%81%AA%E3%81%84%EF%BC%9F&ie=UTF-8

627 :デフォルトの名無しさん:2011/11/02(水) 11:36:12.83
http://www.soft-gems.net/supplement/download.php?ID=13

628 :デフォルトの名無しさん:2011/11/02(水) 15:20:56.16
BitmapをPngに変換した時に黒が透明になってしまうのは何故?

629 :デフォルトの名無しさん:2011/11/02(水) 16:21:39.58
アルファ

はい、次の方どうぞ

630 :デフォルトの名無しさん:2011/11/02(水) 20:02:00.43
Delphu 7 Pro で質問です。

超久しぶりに Delphi 使ったら、状況感知ヘルプが全然うごきません。
以前は F1 キー押下で該当プロパティやメソッドのヘルプが出たはずですが

C:Delphi7helpd7.hlp ファイルが見つかりません。このファイルを自分で探しますか?

と出るだけです。ヘルプファイルのパスから「 \ 区切り」が消えてる点が気になります。

これってどうやったら直るでしょう? ちなみに修正パッチはすべて適用済みです。


631 :デフォルトの名無しさん:2011/11/02(水) 23:18:17.15
書式指定で数値を16進数の0埋め16桁で出力するにはどうすればいいんでしょうか?
{0:X16}では機能しないみたいですが

632 :デフォルトの名無しさん:2011/11/02(水) 23:24:07.52
Formatと形式文字列の項嫁

633 :デフォルトの名無しさん:2011/11/03(木) 10:57:21.30
これでiPhoneアプリ作ろうとしても、結局Mac がいるんだよね?

634 :デフォルトの名無しさん:2011/11/03(木) 11:26:09.58
はい

635 :デフォルトの名無しさん:2011/11/04(金) 08:50:58.55
教えてください
TIconにアイコンをロードして、アイコンを少しだけ加工したくて
TBitmapにアイコンのビットマップを
Canvas.StretchDraw()することによりコピーして、加工するまでは出来たのですが
TBitmapからアイコンへ加工済みのビットマップを戻す方法がわかりません。
TIconにはCanvasはないみたいですし
どうすれば良いでしょうか。


636 :デフォルトの名無しさん:2011/11/04(金) 09:10:53.71
ImageListにビットマップを突っ込んでGetIcon
またはAPIで頑張る

637 :デフォルトの名無しさん:2011/11/04(金) 09:14:00.08
>>630
RegEditで
HKEY_CURRENT_USER\Software\Borland\Delphi\7.0\Help
を修正するんだろうけど、再インストールが早いんじゃないの?

>>635
ICONの描画は DrawIconとかのAPIで描画されてる。ttp://msdn.microsoft.com/ja-jp/library/cc410781.aspx
だけなので TICONINFO ttp://msdn.microsoft.com/ja-jp/site/ms648052  を弄らないといけません。


ttp://leed.issp.u-tokyo.ac.jp/~takeuchi/delphi/browse.cgi?index=19514

638 :635:2011/11/04(金) 09:38:27.97
>>636
>>637
ありがとうございます。やってみます。


639 :デフォルトの名無しさん:2011/11/04(金) 09:43:05.74
自作アプリがアクティブの時に、キーボードが押されたのを関知する目的で
ApplicationコンポーネントのOnMessageでKeyPressのメッセージを捕まえています。
処理後にそのメッセージを元に戻す(返す?)にはどうしたらしいですか

640 :639:2011/11/04(金) 10:07:41.37
Msg.wParamが「.」かどうかを判断するにはどうしたらいいでしょうか?
if Msg.wParam=PChar('.') then
とやっても、互換性がないとエラーになってしまいます。
VK_***であるのかと思い調べましたがわかりませんでした。
よろしくお願いします。

641 :デフォルトの名無しさん:2011/11/04(金) 10:15:23.98
640はVK_DECIMALでした。
スレ汚してごめんなさい


642 :デフォルトの名無しさん:2011/11/04(金) 13:14:09.31
フックしたのをまたポストすりゃいいんじゃね

643 :デフォルトの名無しさん:2011/11/04(金) 13:27:30.31
http://www.asahi-net.or.jp/~ha3t-nkmr/vcl3-3.htm

644 :デフォルトの名無しさん:2011/11/04(金) 15:43:29.87
引数のHandledを操作しなければ勝手に返すと思うけど

645 :デフォルトの名無しさん:2011/11/04(金) 18:00:22.95
delphiのプロジェクトファイルをxcodeのプロジェクトファイルに変換できれば良いのに。

646 :デフォルトの名無しさん:2011/11/04(金) 18:38:26.77
Delphi VCL→(Midaかなんか)→Delphi FireMonkey→XCODEじゃだめなん?

647 :デフォルトの名無しさん:2011/11/04(金) 23:33:16.09
DelphiのDVD来た?
修正を含めるとか言ってたからまだかな?

648 :デフォルトの名無しさん:2011/11/05(土) 01:14:30.66
もうそれ終わってますが

649 :デフォルトの名無しさん:2011/11/05(土) 08:20:51.45
DVDはUpdate 1が出た直後にきたな
まぁ既にUpdate 2/Help Update 1が出てしまったのであまり意味がないが

650 :デフォルトの名無しさん:2011/11/05(土) 08:43:34.84
俺のところ、まだ来てない

651 :デフォルトの名無しさん:2011/11/05(土) 08:58:00.38
今の時点で来てないやつはもう来ることはないよ

652 :デフォルトの名無しさん:2011/11/05(土) 09:30:04.13
マジで?
まぁ、いいか

653 :デフォルトの名無しさん:2011/11/05(土) 10:29:50.79
Pagecontrolに複数のページを設定して、それぞれに
Memoを乗せています。
アクティブになっているページのMemoにアクセスするには
どうしたらいいですか

654 :デフォルトの名無しさん:2011/11/05(土) 20:09:42.50
XE2ってバージョン管理できるのね。

655 :デフォルトの名無しさん:2011/11/06(日) 00:49:37.03
svn辺りと協調動作出来るの?

656 :デフォルトの名無しさん:2011/11/06(日) 10:26:58.64
svn自体をよく知らないけど、delphi自体で差分管理する感じみたいよ。
ヘルプにsubversionって単語使ってるから、なんか関係あるかもね。

657 :デフォルトの名無しさん:2011/11/06(日) 12:52:35.78
VersionInsightでぐぐれ

658 :デフォルトの名無しさん:2011/11/06(日) 15:59:17.65
>>656
知らないならレスしないで下さい

659 :デフォルトの名無しさん:2011/11/06(日) 17:26:16.42
>>658
XEで出来るんだから良いじゃん
生理か

660 :デフォルトの名無しさん:2011/11/06(日) 21:18:59.08
おっさん…

661 :デフォルトの名無しさん:2011/11/06(日) 22:07:33.27
Delphi 7 で作った自作プログラム、自分で使う分には何ひとつ不自由なく Windows 7 SP1 64bit で
動きますが、とりあえず「Win7 対応してます!」と言い張るためには、最低限どんなことしとくべきですか?

662 :デフォルトの名無しさん:2011/11/06(日) 23:07:02.50
面の皮を厚くしておく

663 :デフォルトの名無しさん:2011/11/06(日) 23:24:05.78
「対応してます」じゃなくて「動作確認してあります」でいいんじゃ?

664 :デフォルトの名無しさん:2011/11/06(日) 23:50:03.76
>>661
プロジェクトのオプションでバージョン番号と会社名入れとけ

665 :デフォルトの名無しさん:2011/11/07(月) 15:06:47.66
Del5なんだけど、listviewやstringgridの列や行の幅の
変更を知る方法ってある?

666 :デフォルトの名無しさん:2011/11/07(月) 15:08:44.49
やり方調べるのが面倒だから俺ならtimerでチェックする

667 :デフォルトの名無しさん:2011/11/07(月) 15:12:31.29
listview column resize messageで検索すればそれっぽいメッセージを受けてるコードが見つかるな

668 :デフォルトの名無しさん:2011/11/07(月) 15:14:08.18
スレッドを作ってそっちで監視するってのは?

669 :デフォルトの名無しさん:2011/11/07(月) 15:17:07.19
>>668
なんでもかんでもスレッドっていう発想www
vclってスレッドセーフじゃないし

670 :デフォルトの名無しさん:2011/11/07(月) 15:47:22.48
一部な

671 :デフォルトの名無しさん:2011/11/07(月) 17:10:58.25
>>669
常時監視の時なんか便利じゃん

672 :デフォルトの名無しさん:2011/11/07(月) 17:13:13.21
>>669
方法も示さずに草だけ生やす・・・

673 :デフォルトの名無しさん:2011/11/07(月) 17:22:22.04
delphiと直接関係ないんだけど、アプリに設定するアイコンが
何故か小さく表示されるんだけど、サイズって32*32で良いんだよね?

674 :デフォルトの名無しさん:2011/11/07(月) 18:46:36.71
ちがうよ。全然ちがうよ。

675 :デフォルトの名無しさん:2011/11/07(月) 18:56:13.52
ありがとう。
ググって見たけど、アイコン作るツールとかで
16*16、32*32、64*64とかを一つのアイコンとして
保存すればいい?

676 :神族 忍法帖【Lv=26,xxxPT】 【東電 89.4 %】 :2011/11/07(月) 19:21:39.21
誰かDelphiでマクロの作り方知りたいのでサンプルソース教えてくれませんか?
@起動
Aボタン押してマクロ開始
Bマクロでテキスト開く
Cマクロで自動で入力する内容は「Hello Word!!」
D入力し終わったら自動で閉じる
って感じでソース教えて下さい。

677 :デフォルトの名無しさん:2011/11/07(月) 20:08:04.56
>>676
お前には無理だ、やめとけ

678 :デフォルトの名無しさん:2011/11/07(月) 20:16:00.80
>>676
prodecure TFrom1.Bottun1Cilck(Sedner: TObjcet);
vra
 S: stirng;
 Straem: TFeliStraem;
bigen
 Straem := TFeliStraem.Craete('マクロ.txt', fmOpneRaed);
 rty
  S := 'Hello Word!!';
  Straem.WiretBeffur(S[1], Legnth(S));
 fanilly
  Staem.Feer;
 ned;
ned;

679 :デフォルトの名無しさん:2011/11/07(月) 21:50:31.88
>>678
お前にも無理だ、やめとけ

まず、お前は >>676 の要求仕様が理解できていない
そして >>676 は、要求仕様を日本語で喋ってない

680 :デフォルトの名無しさん:2011/11/07(月) 21:59:48.63
Staem www あちゃーこれは恥ずかしい誤記

一度じゃなくて全部間違えとるなw

681 :デフォルトの名無しさん:2011/11/07(月) 22:03:54.37
よく見るとわざとのような?ここまで徹底していればこれはこれであり鴨?

682 :デフォルトの名無しさん:2011/11/07(月) 22:06:41.62
prodecureをわざわざ書き換える必要ないだろwww

683 :神族 忍法帖【Lv=26,xxxPT】 【東電 80.3 %】 :2011/11/07(月) 22:23:48.87
ww

684 :678:2011/11/07(月) 22:34:34.87
釣れました^^

685 :神族 忍法帖【Lv=26,xxxPT】 【東電 76.5 %】 :2011/11/07(月) 22:58:04.47
          ノ : : : : : : : : : : : : : : : : : : : : : : : : : :_;/. : : : : : : : : : : : : :/
           │: /,>: : : : : : : : : : : : : : : : .<⌒ヽ : : : : : : : : : : : : : : :〈
         '; :l/厂\: : : : : : / ̄⌒〉ノ.ハ;〉   ∨: : : : : : : : : : : : : :|
            |::l′  `⌒¨¨´       /    |l: : : : : : : : : : : : :ノ
            |::|                       リ: : : : : : : : : : : : :〉
            |::|l                      _ノ: : : : : : : : : : : : :/
          Y                        \: : : : : : : : : : : : :|
           仆:,.、             __,..   ヽ : : : : : : : : : : ;'
          厂二≧;.、     ,.::≦,ニ二,._      '; : : : : : : : : :〈
           l 人__じリン:.  .::´:;∠. じリ゙フ′    ∨: : \: : : :「〉 >>678 そんなソースで大丈夫か?
           :.       .::   : :      ̄          l: : :厂`ヽ人l
            :.      .:::   : :                  l:.:/    仄リ
                   .::;′                  |/    /リ
               .::::l                        _,.イ/
            ;   ::人_ ,--ノ                厂 W
               l                    .;   |′
             ', .:ニ、_     _,..          . :〃   |___
              ',: : : .  ̄¨¨ ̄         . : /    ∨'⌒ヽ\
              '; : :  ⌒          . : :/        ∨///ハ
               八: :          . : ,: :'′      __///////',


686 :デフォルトの名無しさん:2011/11/07(月) 23:00:52.88
このやりとりを30,40のおっさんが無表情で打ち込んでるのかと思うと薄ら寒くなってくるな

687 :678:2011/11/07(月) 23:40:19.53
まだ10代だよ^^

688 :神族 忍法帖【Lv=26,xxxPT】 【東電 58.2 %】 :2011/11/08(火) 06:17:45.61
俺は17歳

689 :デフォルトの名無しさん:2011/11/08(火) 07:54:11.86
私は26のばばあ

690 :デフォルトの名無しさん:2011/11/08(火) 16:00:03.87
>>688
17歳なら逮捕されても実名出ないからいいね

691 :神族 忍法帖【Lv=27,xxxPT】 【東電 80.6 %】 :2011/11/08(火) 16:09:46.24
>>690
ww

692 :神族 忍法帖【Lv=27,xxxPT】 【東電 80.7 %】 :2011/11/08(火) 16:45:22.97
誰かマクロのサンプルソース教えてくれよw
>>678はわざと全部並び替えてるのでわかりづれーよ

693 :デフォルトの名無しさん:2011/11/08(火) 16:57:02.44
マクロって何?
open tools API?

http://d.hatena.ne.jp/A7M/20101114/1289711588

694 :神族 忍法帖【Lv=27,xxxPT】 【東電 80.7 %】 :2011/11/08(火) 17:30:21.98
マクロは自分が記録したのを自動で記録したの同じように繰り返して動かす

695 :神族 忍法帖【Lv=27,xxxPT】 【東電 80.7 %】 :2011/11/08(火) 17:31:24.53
ちょい俺BOTを作りたいので(パケ送受信利用して)俺初心者ですからソースぐらい見ればなんとかわかる

696 :デフォルトの名無しさん:2011/11/08(火) 19:02:09.04
教えようか?

697 :デフォルトの名無しさん:2011/11/08(火) 19:15:05.77
ちょい俺BOTって何?

698 :神族 忍法帖【Lv=27,xxxPT】 【東電 88.2 %】 :2011/11/08(火) 19:22:23.64
>>696
教えてほしい!特に知りたいのはBooleanを使って繰り返していの使いたい
たとえば2つのボタンある開始と終了
最初はEnabledがFalseでもしコンパイルしたEXEを起動して勝手に始まらないようにで
開始押したらEnabledがTrueになって開始して繰り返し状態でHello World!を入力
終了押したらEnabledがFlaseになって繰り返しがとまって入力するのを止まる
みたいなサンプルソースがほしいのでどうかお願いします!

699 :デフォルトの名無しさん:2011/11/08(火) 19:29:00.00
こいつ日本人じゃないな

700 :デフォルトの名無しさん:2011/11/08(火) 19:33:41.32
IQ低そうだから教えがいが無いな。コスパが悪い

701 :デフォルトの名無しさん:2011/11/08(火) 19:38:28.08
俺IQ70

702 :デフォルトの名無しさん:2011/11/08(火) 20:07:39.39
馬鹿には無理

703 :神族 忍法帖【Lv=27,xxxPT】 【東電 86.6 %】 :2011/11/08(火) 20:29:23.96
馬鹿ではなく無知識です

704 :デフォルトの名無しさん:2011/11/08(火) 20:51:47.72
>>703
お前には無理だ、やめとけ


705 :神族 忍法帖【Lv=27,xxxPT】 【東電 83.1 %】 :2011/11/08(火) 21:14:25.43
あきらめたらそこで終わりだ!

706 :デフォルトの名無しさん:2011/11/08(火) 21:17:32.32
消えろ低能

707 :神族 忍法帖【Lv=27,xxxPT】 【東電 83.1 %】 :2011/11/08(火) 21:32:47.68
不思議に消えない俺

708 :デフォルトの名無しさん:2011/11/08(火) 21:38:05.36
ここまで自作自演

709 :デフォルトの名無しさん:2011/11/08(火) 21:56:38.66
>>698
あーなるほどな

710 :デフォルトの名無しさん:2011/11/08(火) 22:22:41.88
pngの画像って同じXPでも表示されるPCとされないPCって何が違うの?
サービスパック?
フォトショが入ってるとその関係で表示されるとかある?

711 :デフォルトの名無しさん:2011/11/08(火) 23:43:02.77
何言ってるのかちょっと分かんないです

712 :デフォルトの名無しさん:2011/11/09(水) 03:25:45.19
>>710
InternetExplorer のバージョン?

713 :デフォルトの名無しさん:2011/11/09(水) 08:54:44.16
ちがいます。

714 :710:2011/11/09(水) 09:48:10.54
キャプチャーアプリを作ったんだけど、画像をpngで保存してImageコンポに
表示させるんだけど、自分のPCでは正常に動作するんだけど、
友人のPCだと表示できない。
透明になってるのかな。
Delphi7でpngを扱えるVCLをダウンロードして使ってます。
XEで作った方がいい?

715 :デフォルトの名無しさん:2011/11/09(水) 10:47:19.28
はい。

716 :デフォルトの名無しさん:2011/11/09(水) 10:50:08.00
>>710
>>714
解析班はまだか

717 :デフォルトの名無しさん:2011/11/09(水) 10:57:23.21
まずbmpで保存してみろよwww

718 :デフォルトの名無しさん:2011/11/09(水) 11:04:13.32
>>714
だけど使いすぎ
小学校3年生からやり直しましょう

719 :デフォルトの名無しさん:2011/11/09(水) 11:07:22.40
>>710 >同じXPでも
そのXP実は違うんだよ。知らないのか?

720 :710:2011/11/09(水) 12:41:27.10
うほ、ほんとだ
で、答えまだチンチン

721 :デフォルトの名無しさん:2011/11/09(水) 12:42:20.78
>>710
とりあえずBmpで同じ事やって表示できるかは重要。
24bitか32bitカラーが今時はオススメ。
XPだと稀に256色PCがあるにはある、
グラフィックアクセラレータが256色をサポートしていないものもあるにはある。

722 :710:2011/11/09(水) 12:55:41.42
>>721
ありがとうございます。
今日、確認したら私のPCでキャプチャーしたものは
bmpは私のPC、相手のPC共にOK、,pngは相手のPCでは表示されず

相手のPCでキャプチャーしたものは、bmpは私のPCはOK、相手のPCもOK
pngは私のPC、相手のPCともに表示されずでした。

相手のPCはpngだけ駄目なようです。

私はXPしか持ってないのですが、相手はxp、vist、7で試してもらったのですが、
いずれも駄目と言われました。
(bitmapはOK)

XEで作り直してみます。

723 :デフォルトの名無しさん:2011/11/09(水) 13:40:57.96
人的エラーだろ

724 :デフォルトの名無しさん:2011/11/09(水) 13:50:14.50
まぁ、XEの標準ライブラリ使ってみるよ。

725 :デフォルトの名無しさん:2011/11/09(水) 14:45:58.10
だとすると、
先ずTBitmapで全て組んで保存の直前だけPNGにするのがオススメです。
その方がメモリ効率も速度も良いです。
つまり、保存の際にPNGを作成して、BitmapからPNGに書きこむ。
読み込みの際は、PNGを開いたらすぐにBitmapにコピー
一応念のため、Bitmapのpixcelformatは24bitか32bit指定してあげる。
大抵のコンポーネントは24bit,32bit Bitmapをメインターゲットとしてる為。
実のところ32bit Bitmapがサイズこそ大きくなりますが、描画や変換関連は最速だったりします。

726 :デフォルトの名無しさん:2011/11/09(水) 15:09:52.08
>>725
ありがとうございます。
表示の際のpngからのbitmap・・・思いつかなかった。
目から鱗です。

727 :デフォルトの名無しさん:2011/11/09(水) 15:10:35.47
相手のPCの画面をぜーんぶストリーミングで流し込めよ

728 :神族 忍法帖【Lv=28,xxxPT】 【東電 88.3 %】 :2011/11/09(水) 19:20:33.47
誰かWhileていうループを使ってカウントダウンするサンプルソース下さい
1秒で−1になってこんなふうに
たとえば10だとしたら
10










ってかんじで最後に0で止まるようにしたいのでどうかよろしくおねがいします


729 :デフォルトの名無しさん:2011/11/09(水) 19:20:49.05
>>725
そうでもないです

730 :デフォルトの名無しさん:2011/11/09(水) 19:21:29.18
>>728
わかりました

731 :デフォルトの名無しさん:2011/11/09(水) 19:48:39.63
>>728
Pascalの宿題は俺にやらせろ!!Part3
http://hibari.2ch.net/test/read.cgi/tech/1260922392/

732 :デフォルトの名無しさん:2011/11/09(水) 19:50:18.64
>>728
ttp://home.interlink.or.jp/~wincome/

733 :神族 忍法帖【Lv=28,xxxPT】 【東電 86.8 %】 :2011/11/09(水) 20:06:18.38
俺知りたいのはPascalではなくDelphiです

734 :デフォルトの名無しさん:2011/11/09(水) 20:08:18.11
>>733
>教育用(?)プログラムPascalの宿題をやって頂くスレ
>
>■丸投げOK
>■全く分かってない阿呆も放置しないで優しく対応
>■他言語はよそ逝け( ゚Д゚)ゴルァ
>■DelphiもTurbo PascalもFreePascalも完全対応

735 :デフォルトの名無しさん:2011/11/09(水) 20:48:44.55
>>728 スキルが分からんから全文コピペるすよ。
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms, Dialogs, StdCtrls;
type
TMyThread = class(TThread)
private
fCount:Integer;
fOnProcess: TNotifyEvent;
procedure Event;
protected
procedure Execute; override;
property Count:Integer read fCount write fCount;
property OnProcess:TNotifyEvent read fOnProcess write fOnProcess;
end;

TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
fThread: TMyThread;
procedure fThreadOnProcess(Sender:TObject);
procedure fThreadOnTerminate(Sender:TObject);
public
end;

736 :デフォルトの名無しさん:2011/11/09(水) 20:50:27.60
var
Form1: TForm1;

implementation

{$R *.dfm}

{ TMyThread }
procedure TMyThread.Event;
begin
if Assigned(fOnProcess) then
fOnProcess(Self);
end;

procedure TMyThread.Execute;
begin
inherited;
while fCount>0 do
begin
dec(fCount);
Synchronize(Event);
Sleep(1000);
end;
end;


737 :デフォルトの名無しさん:2011/11/09(水) 20:50:58.84
{TForm1}

procedure TForm1.Button1Click(Sender: TObject);
begin
if fThread<>nil then
Exit;
fThread := TMyThread.Create(True);
fThread.FreeOnTerminate:=True;
fThread.Count:=10;
fThread.OnProcess:=fThreadOnProcess;
fThread.OnTerminate:=fThreadOnTerminate;
fThread.Resume;
end;
procedure TForm1.fThreadOnProcess(Sender: TObject);
begin
Caption := IntToStr(fThread.Count);
end;
procedure TForm1.fThreadOnTerminate(Sender: TObject);
begin
fThread:=nil;
end;
end.


738 :神族 忍法帖【Lv=28,xxxPT】 【東電 83.9 %】 :2011/11/09(水) 21:34:27.12
>>735
ごめん言い忘れたけど俺知りたいのはユニットではなくライブラリの知りたい
プラグイン用のDLLとして

739 :デフォルトの名無しさん:2011/11/09(水) 21:35:59.44
pixelformatがdeviceになってるせいとか

740 :デフォルトの名無しさん:2011/11/09(水) 21:37:02.24
以後、放置でおながいします

741 :デフォルトの名無しさん:2011/11/09(水) 21:44:12.06
真性か…
マジレスして損した。
頭の中まで見れるわけないっしょ、
しかも単語の意味も自分定義っぽいな、それじゃ誰も分からんよ。

742 :デフォルトの名無しさん:2011/11/09(水) 22:01:36.54
質問の仕方が下手だし、その後のフォローが最悪だな。
折角、答えられそうな人が出てきたのにもったいない。
そういう時は、まず丁寧語で感謝のあいさつ。
そのあと、重ねて質問したいのですが、これと同じ事をDLL上で実現するにはどうしたら良いのでしょうか?
って聞くのがベスト、
ちなみに質問の後出し、重ねて質問は技術MLではNGだから、その辺も謝罪しつつ聞くとなおよし。
初心者なんだからせめてマナーくらい学んどかないと、答えられる人が居ても逃げちゃうよ。

743 :デフォルトの名無しさん:2011/11/09(水) 22:12:54.45
どれだけ丁寧でも、自分で手を動かさず「お前ら俺の言うとおりのソースよこせ」と言ってる奴は論外。

744 :デフォルトの名無しさん:2011/11/09(水) 22:16:45.11
>>738
前も言ったけどIQの低さ的に実現できる気がしない

ちょい俺BOT作りたいんだろ? ウイルス作りたいの?

explorer.exeにdll組み込んでキーロガーとかいたずらソフト作ったことあるけど
説明しても理解できなそう

745 :デフォルトの名無しさん:2011/11/09(水) 23:22:01.40
タイマーコントロールで、イベントごとにインターバルを-1000(1秒引く)すりゃいい
whileとかsleepとかアホなやり方だ

746 :神族 忍法帖【Lv=28,xxxPT】 【東電 76.6 %】 :2011/11/09(水) 23:24:38.20
>>744
ウィルスは作りたくない

747 :神族 忍法帖【Lv=28,xxxPT】 【東電 76.6 %】 :2011/11/09(水) 23:36:43.38
>>745
Delphiのライブラリってタイマーコントロールできるの?

748 :デフォルトの名無しさん:2011/11/10(木) 09:34:05.86
本物でした

749 :デフォルトの名無しさん:2011/11/10(木) 18:03:08.02
しょうがないにゃあ…

750 :デフォルトの名無しさん:2011/11/10(木) 19:59:01.56
今だ、円馬鹿出ろもiPhoneを超えるスマートフォン出すんだ!!
開発環境はDelphi for xxx

その名もDelphone!!!



751 :神族 忍法帖【Lv=29,xxxPT】 【東電 85.1 %】 :2011/11/10(木) 20:48:03.40
>>750
DelphoneよりdPhoneでいいんじゃね?w

752 :デフォルトの名無しさん:2011/11/10(木) 21:16:07.18
ショートカットキーでctrl+1って設定した時に、テンキーの1じゃ反応しないんだけど何で?

753 :デフォルトの名無しさん:2011/11/10(木) 21:28:02.46
bakaPhone

754 :デフォルトの名無しさん:2011/11/10(木) 21:43:32.52
>>751
せっかくPhまで合ってんだから、Delphoneが良いかなとw


755 :神族 忍法帖【Lv=29,xxxPT】 【東電 81.8 %】 :2011/11/10(木) 21:52:29.26
>>754
それじゃもしDelphiの事知らない人がDelPhoneみたら絶対こう思うぞw携帯削除ww
Del=Delete=削除
Phone=携帯

756 :デフォルトの名無しさん:2011/11/10(木) 22:00:21.65
>>755
(iPhoneを)Del=削除

と、好意的に解釈(ry


757 :デフォルトの名無しさん:2011/11/10(木) 22:47:24.77
しょうがないにゃあ…

758 :神族 忍法帖【Lv=29,xxxPT】 【東電 77.8 %】 :2011/11/10(木) 23:23:41.90
>>756
wwww

759 :デフォルトの名無しさん:2011/11/11(金) 13:16:58.52
>>752
キーボード内部でのIDが違う的な話でしょ。

760 :デフォルトの名無しさん:2011/11/11(金) 17:18:34.27
>>759
dです。
そういう時はキープレスか、キーダウンとかで監視しするってことか。

761 :760:2011/11/11(金) 23:51:06.08
だめだった。。・゚・(ノД`)・゚・。
どうすればいい?

762 :デフォルトの名無しさん:2011/11/11(金) 23:54:45.36
今でも、くだすれDelphiって続いているんだ、感激。
D7の頃以来だ、;が懐かしいよ。
懐かしいついでに質問です、Win7でも使えるの?.net対応はどうなった?
.netの便利さ、簡単さにつられてVSに走った薄情物です。


763 :デフォルトの名無しさん:2011/11/12(土) 00:07:00.15
俺、.netが簡単って感覚がよくわからんのだけど、簡単あれ?
よく知らないんだけど、メモリ開放しなくても問題なかったりとか、なんか勝手に動かれて気持ち悪くない?
ポインタを使いにくいし。
ってスレ違いの内容かもしれないな、ごめん

764 :デフォルトの名無しさん:2011/11/12(土) 00:21:19.86
C#って一番実用的な言語な気がする

765 :デフォルトの名無しさん:2011/11/12(土) 00:37:45.82
メモリに関しては慣れればこんなもんかなってとこ。
.netが便利と感じたのはUDPやTCPを使うのにwinshockいらないとか、客のPCの環境を考えずに作れるところ。
個人的にはDelphi好きだったけど、やっつけ仕事には向かないかな。


766 :デフォルトの名無しさん:2011/11/12(土) 09:36:10.03
もう、.NETのクラスライブラリが豊富だったり、タスクとか非同期とか
マルチスレッドが便利すぎて、Delphiはネイティブアプリ作れるぐらいしか
利点なし。後はデメリットだらけ。

767 :デフォルトの名無しさん:2011/11/12(土) 09:48:14.93
腕がないだけやん。
簡単→誰でもできる→プログラマイラネ→君失業

768 :デフォルトの名無しさん:2011/11/12(土) 09:51:13.54
インラインアセンブリとか使うのが楽しいからDelphiが楽しい
一方できちんと設計して綺麗に書くのも楽しいからC#もたのしい

769 :デフォルトの名無しさん:2011/11/12(土) 11:58:09.78
>>765
>客のPCの環境を考えずに作れる
その点はまだDelphiの方がマシだろ
未だに.netが入ってない化石PCはそこら中に転がってるぞ
特に平均年齢が高い会社はそんなんばっかりで、9xやNTすら現役だから.netが逆に動かない
だからDelphi7は今もよく使う

770 :デフォルトの名無しさん:2011/11/12(土) 13:01:23.55
Delphi7が出た頃は、今頃は組込端末とかでKylixが大活躍の筈だったんだが・・・・俺もそう夢想してたし。
それじゃメーカも商売にならないから現実はipodとAndroidだもんな。

771 :デフォルトの名無しさん:2011/11/12(土) 17:45:29.98
そういうのは別のスレでやって下さい

772 :デフォルトの名無しさん:2011/11/12(土) 20:48:51.22
>>761
普通に出来るぢゃん
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
var
KeyMsg:string;
begin
case Key of
$30:begin Caption:='VK_0'; KeyMsg:='0キー';end;
$31:begin Caption:='VK_1'; KeyMsg:='1キー';end;
$32:begin Caption:='VK_2'; KeyMsg:='2キー';end;
$33:begin Caption:='VK_3'; KeyMsg:='3キー';end;
$34:begin Caption:='VK_4'; KeyMsg:='4キー';end;
$35:begin Caption:='VK_5'; KeyMsg:='5キー';end;
$36:begin Caption:='VK_6'; KeyMsg:='6キー';end;
$37:begin Caption:='VK_7'; KeyMsg:='7キー';end;
$38:begin Caption:='VK_8'; KeyMsg:='8キー';end;
$39:begin Caption:='VK_9'; KeyMsg:='9キー';end;
$60:begin Caption:='VK_NUMPAD0'; KeyMsg:='テンキーの0キー';end;
$61:begin Caption:='VK_NUMPAD1'; KeyMsg:='テンキーの1キー';end;
$62:begin Caption:='VK_NUMPAD2'; KeyMsg:='テンキーの2キー';end;
$63:begin Caption:='VK_NUMPAD3'; KeyMsg:='テンキーの3キー';end;
$64:begin Caption:='VK_NUMPAD4'; KeyMsg:='テンキーの4キー';end;
$65:begin Caption:='VK_NUMPAD5'; KeyMsg:='テンキーの5キー';end;
$66:begin Caption:='VK_NUMPAD6'; KeyMsg:='テンキーの6キー';end;
$67:begin Caption:='VK_NUMPAD7'; KeyMsg:='テンキーの7キー';end;
$68:begin Caption:='VK_NUMPAD8'; KeyMsg:='テンキーの8キー';end;
$69:begin Caption:='VK_NUMPAD9'; KeyMsg:='テンキーの9キー';end;
else ;
end;
end;
あとは Shift: TShiftState を見れ


773 :デフォルトの名無しさん:2011/11/12(土) 22:44:22.03
えっ

774 :超初心者:2011/11/13(日) 01:51:56.12
delphiで簡単な情報の管理システムを作っています。
初めてのpascal,delphiで苦戦しています。。。
簡単なコードでのプログラミングでないと自作したことを説明もできないくらいのレベルです。。
今回、レコード型の配列で個人データ(名前、生年月日、登録番号、住所、電話番号)を5人分、入れておきたいのですがエラーばかりでてしまい、全くできてません。
簡単なものでもサンプルでもなんでもありがたいのでご教授ください。
後のFormで検索したりして引き出せるようにする予定です。。

775 :デフォルトの名無しさん:2011/11/13(日) 06:35:50.14
type
TKojinRec = record
name:string[30];
birth:TDateTime;
no:integer;
addr:string[100];
tel:string[20];
end;

var
KojinTable: array[1..5] of TKojinRec;
KojinFile: File of TKojinRec;



776 :デフォルトの名無しさん:2011/11/13(日) 12:43:10.63
リストビューで表示したほうが簡単 配列なんか不要

777 :デフォルトの名無しさん:2011/11/13(日) 12:49:09.05
>>774
エラーメッセージとエラーが出ているコードを書け

778 :超初心者:2011/11/13(日) 18:52:36.58
>>777
pascal教科書のサンプルを題材にしました。。
unit Unit5;
{$mode objfpc}{$H+}

interface

uses
Classes, SysUtils;

Type
pstype = (man,woman)
line = array [1..50] of Char;
date = record
month : 1..12;
day : 1..31;
year : 1800..2000;
end;
member = record
number : 0..30;
name : line;
address : line;
sex : pstype;
birth : date;
end;

var book1,book2,book3,book4,book5:member;
begin
   book1.number:=17; //実行できるかどうかのためにサンプルとしてこのデータだけいれました。。
end.


779 :超初心者:2011/11/13(日) 18:53:28.22
>>777
こちらエラーコードです。。
unit5.pas(12,6) Fatal: Syntax error, ";" expected but "identifier LINE" found

ほんとに初歩的ですみません。
このプログラムをほかのユニットで使いたいと考えてます。

780 :デフォルトの名無しさん:2011/11/13(日) 18:57:52.86
Delphiじゃなくね?FPCスレ行け

781 :超初心者:2011/11/13(日) 19:12:50.37
>>780
Lazarusなんですけど、delphiとほとんど変わらないと聞いたので。。。


782 :デフォルトの名無しさん:2011/11/13(日) 19:19:22.87
ところどころ;がぬけてる
エラーメッセージにもそう書いてあるだろ

783 :超初心者:2011/11/13(日) 19:30:47.11
エラーのヘルプがないみたいで、似たようなものを探したりしているのですが、よければ抜けている個所などおしえていただけませんか?

784 :デフォルトの名無しさん:2011/11/13(日) 19:32:23.63
おとなしくvisualbasicでもやればよくね

785 :デフォルトの名無しさん:2011/11/13(日) 19:35:39.83
Delphiの前に英語というか翻訳サイトの使い方を覚えてください

786 :超初心者:2011/11/13(日) 19:49:53.69
<<784
指定ソフトでの課題なのです

787 :超初心者:2011/11/13(日) 19:52:21.76
<<785
構文がまちがってるとはわかってたんで、似たものをさがしてたんですが。
救済してください。。

788 :デフォルトの名無しさん:2011/11/13(日) 20:08:44.07
>>787
pstype = (man,woman) の後に";"がない

789 :超初心者:2011/11/13(日) 20:14:39.20
>>788
unit5.pas(12,6)のエラーが解消できました。ほんとうにありがとうございます。
またエラーでてしまったのですが、自分で再度考えてみます。
ありがとうございます。

790 :超初心者:2011/11/13(日) 21:49:00.60
>>775
KojinFile: File of TKojinRec;
参考にしてみたんですけど、この部分の説明いただいてもいいですか?

791 :デフォルトの名無しさん:2011/11/13(日) 22:08:36.32
>>790
こっちで聞け
【Delphi互換!?】FreePascal/Lazarus その2【GPL】
http://hibari.2ch.net/test/read.cgi/tech/1261676778/

792 :デフォルトの名無しさん:2011/11/13(日) 22:23:52.85
指定ソフトがlazarusとかありえねえよ
どんな嘘だよ

793 :デフォルトの名無しさん:2011/11/13(日) 22:26:33.70
>>790
こんな時期に新人研修ってこともないだろうし、課題って事は学校か何かだろ?
なんでわざわざ金払って教えてもらってるところで聞かずにここで聞くんだ?

794 :超初心者:2011/11/13(日) 22:35:43.44
>>792
本当です。だからさらに苦戦してます
>>793
学校です。学校のほうに話すと長くなってしまう諸事情があり、教えてくれる先生もいらっしゃるんですが、ヒント程度でかなり苦戦しています
なので友人に勧められ詳しい方に救済を求めました

795 :デフォルトの名無しさん:2011/11/13(日) 23:56:27.63
とりあえずマルチして聞く事じゃない

796 :デフォルトの名無しさん:2011/11/14(月) 00:34:18.98
なんで友人に聞かないの?

797 :デフォルトの名無しさん:2011/11/14(月) 01:21:07.45
line = array [1..50] of Char;

これがよくわからない なんでキャラを50個なんだろう 変な仕様だ・・・

798 :デフォルトの名無しさん:2011/11/14(月) 02:32:53.01
>>797
標準Pascalにはstring型がないから、文字列を格納するにはCharの配列を
用意する必要があった。

799 :デフォルトの名無しさん:2011/11/14(月) 05:56:01.26
オブジェクトパスカルなら=じゃなくて:=じゃないかと思ったけど俺の勘違いか

800 :デフォルトの名無しさん:2011/11/14(月) 07:38:39.05
>>790
普通はファイルに保存するだろ?
ソース内に定数で情報持つなら扶養。ただそれだけ。

801 :デフォルトの名無しさん:2011/11/14(月) 08:59:41.99
>>799
そんなのも分からない素人は引っ込んでて下さい

802 :デフォルトの名無しさん:2011/11/14(月) 09:02:13.51
>>798
短い文字列なら昔からあっただろ

803 :デフォルトの名無しさん:2011/11/14(月) 10:27:35.00
>>772
そんなことしなくてもdfmをテキスト表示してShortcutの値を16481にすればOK。
テンキー側の0-9をショートカットにしたいときは+48の値を設定すればいい。

804 :デフォルトの名無しさん:2011/11/14(月) 11:58:03.14
>>802
短い文字列はTurbo Pascalで実装された型で標準Pascalにはない

805 :超初心者:2011/11/14(月) 13:09:52.38
>>796
同じ課題をやっている友人は数名で皆初めてで悩んでいて、先輩方も知人の方もプログラミングをかじったくらいのひとしかいなくてpascalはしらないそうです。。
すいません低レベルなのはわかってますが必死で

806 :デフォルトの名無しさん:2011/11/14(月) 13:32:56.92
>>804
え、Pascal文字列ってTurbo Pascalからなの?

807 :デフォルトの名無しさん:2011/11/14(月) 14:10:41.65
>>805
だから学校で聞けよ
自分で学費払っててそういう手段を利用しないのであれば単なる馬鹿だし、
親に払ってもらっててそれなら今すぐやめるべき

808 :デフォルトの名無しさん:2011/11/14(月) 14:46:34.05
>>805
Lazarusスレの方にサンプルソース上げたよ。

レベル的にはこのスレだけど、話題的にはLazarusスレだよね。
どっちのスレでやるんだい?

俺は普段Lazarusスレしか覗いてないんだが。

809 :超初心者:2011/11/14(月) 15:14:38.40
>>808
参考にさせていただきます
じぶんで考えて、他力本願にならない程度にまたLazarusスレで質問させていただきます

810 :デフォルトの名無しさん:2011/11/14(月) 17:38:30.80
>>806

>え、Pascal文字列ってTurbo Pascalからなの?

 そうそう。文字列型がなかったら、Turbo Pascal や delphi に
手を出さなかった。


811 :デフォルトの名無しさん:2011/11/14(月) 17:56:13.05
Pascal文字列、Turbo Pascalが最初だったのかは覚えてないなー。
仕様にはないけど実装にはある型って印象。初期のPascal実装から
あるんじゃないの?

OSXより前のMacのAPIはPascal文字列渡しがデフォルトだったくらい
だから、Think Pascalには当然あるよね。

逆にPascal文字列のないPascal処理系ってどんなのがあるんだ?
Sun Pascalくらいじゃね?

812 :デフォルトの名無しさん:2011/11/14(月) 18:03:36.35
>>811
UCSDが先っぽいよ>Pascal文字列

813 :デフォルトの名無しさん:2011/11/14(月) 20:15:56.11
Turbo Pascal以前からあったよ
>>804が嘘言ってるだけだね

814 :798:2011/11/14(月) 21:45:24.07
>>811
「標準Pascalは配列でないと文字列が表現できない」というのが
論点であって、処理系ごとの実装の話は焦点がぼやけるよ。
そうしないと投稿者のソースがなぜ文字配列なのかという疑問の
答えにならないから。

815 :デフォルトの名無しさん:2011/11/14(月) 23:34:50.76
string使えよwww。本質的じゃないところにこだわる

言語仕様覚えるよりも、アルゴリズムを覚えるほうが大事。
アルゴリズムさえ自分で考える能力があれば、言語仕様なんかぐぐりながら書ける

816 :デフォルトの名無しさん:2011/11/15(火) 07:44:27.15
CategoryPanelGroupでWindows7のリソースモニタのようなUIが作りたいです。
http://s1.gazo.cc/up/s1_5813.jpg

各カテゴリのパネルのリサイズ
右部分のようにカテゴリを垂直に表示し、全て折りたたまれたらCategoryPanelGroup自体が縮むようにしたい

この2つを可能にするやり方があったら教えて下さい。

1カテゴリ毎にCategoryPanelGroup+Splitter作ってイベントハンドラで頑張るしかないですかね。

817 :デフォルトの名無しさん:2011/11/15(火) 09:01:51.98
>>814
そもそも標準Pascalじゃないし
何勘違いして熱くなっちゃってんの?

818 :デフォルトの名無しさん:2011/11/15(火) 09:11:54.33
         ,,-―--、
        |:::::::::::::;;;ノ  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
        |::::::::::( 」 <  「標準Pascalは配列でないと文字列が表現できない」というのが論点であって・・・
        ノノノ ヽ_l   \______________
       ,,-┴―┴- 、    ∩_
     /,|┌-[]─┐| \  (  ノ
      / ヽ| |  バ  | '、/\ / /
     / `./| |  カ  |  |\   /
     \ ヽ| lゝ    |  |  \__/
     \ |  ̄ ̄ ̄   |
      ⊂|______|
       |l_l i l_l |
       |   ┬    |


819 :デフォルトの名無しさん:2011/11/15(火) 12:02:03.22
バカで〜〜〜す

820 :デフォルトの名無しさん:2011/11/15(火) 12:09:52.24
>>817
へえ、質問者の使ってるPascal教科書ってLazarus用の教科書なのかw
頭の悪奴だなあ
C++コンパイラ使ってCを勉強している人がクラスやテンプレートを使わないのは
コンパイラに実装されてないからじゃないんだよ、分かる?

821 :デフォルトの名無しさん:2011/11/15(火) 12:16:30.50
以降、バカは放置で

822 :デフォルトの名無しさん:2011/11/15(火) 13:33:00.70
Lazarus用の教科書ってこれかな?w

やさしいPascal入門: 土屋 勝
http://www.amazon.co.jp/dp/487783270X/

823 :デフォルトの名無しさん:2011/11/15(火) 14:20:47.32
>>820
勘違いで引っ込みが付かなくなったのは分かるけど、
それ以上続けると惨めなだけだよ^^;

824 :デフォルトの名無しさん:2011/11/15(火) 14:27:11.98
っていうかさ、
line = array [1..50] of Char;
みたいなコードってStringがあるかないかにかかわらず固定長データ扱う時は今でも普通に使うだろ
だからこのコード見て「変な仕様だ」と言う>>797も頭悪いし、
それに対して「標準Pascalにはstring型がないから」としか返せない>>798も見識が狭い

825 :デフォルトの名無しさん:2011/11/15(火) 14:53:50.25
>>824
超初心者用スレなのであえて補足すると、現代Delphi(2009〜)なら
固定長データは

line = array [1..50] of AnsiChar;

じゃないとダメね。Charはユニコード文字なので固定長にならない。

826 :デフォルトの名無しさん:2011/11/15(火) 14:58:11.32
>>825
固定長の意味分かってるか?
バージョン間互換がないだけの話でChar自体は可変長でも何でもないぞ

827 :デフォルトの名無しさん:2011/11/15(火) 15:04:04.75
揚げ足とるやつ多すぎだな。議論をするときは、相手の意図を汲み取る努力をお互いにしないと
IQが低いだけならまだしも協力もしないっていう

>>826
>>825の言いたいことが分からない人が居ると思ったのかよwww

828 :デフォルトの名無しさん:2011/11/15(火) 15:13:37.21
>>825=>>827か?w

829 :827:2011/11/15(火) 15:15:26.41
>>828
自分以外はみんなグル症候群かよwww

830 :デフォルトの名無しさん:2011/11/15(火) 15:37:26.54
不毛すぎる…

831 :デフォルトの名無しさん:2011/11/15(火) 16:21:49.10
誰がハゲやねんっ!

832 :デフォルトの名無しさん:2011/11/15(火) 17:23:44.68
まぁド素人が固定長なんて扱うのは百年早いってこった

833 :デフォルトの名無しさん:2011/11/15(火) 18:45:42.59
分かったか?ド素人 > 798

834 :デフォルトの名無しさん:2011/11/15(火) 18:49:22.38
×Charはユニコード文字なので固定長にならない
○Charはユニコード文字になったので固定長データ内に組み込む際は注意する必要がある

固定長にならないなんていう頭悪い書き方するから突っこまれるんだ
最初からこう書いておけば良かった

835 :デフォルトの名無しさん:2011/11/17(木) 10:44:00.51
Delphi XE2のトライアルをやっていますが、
エディタ画面でUnit1とUnit2のウインドウを同時に表示することできますか?

836 :デフォルトの名無しさん:2011/11/17(木) 11:01:03.34
View | New Edit Window
で、別ウィンドウが開くから、メインのエディタのタブをドラッグ
同一ファイルの複数表示も可能

837 :デフォルトの名無しさん:2011/11/17(木) 11:19:15.03
>>836 ありがとございます。
"別の編集ウインドウを開く"で分離できました!

838 :デフォルトの名無しさん:2011/11/18(金) 13:09:08.84
stdcallのwin32の関数のヘッダを移植してるのですが、レコード型へのアドレスが入力パラメータの
時、constを指定すると、勝手に参照渡し?になってアドレスが渡されるようですが、
いちいちレコード型へのポインタ型を宣言する手間が省けるのですが、これ仕様?で
どんどん利用してよい?
function A(A: PMyRecord)の代わりに
function A(const A: TMyRecord)

839 :デフォルトの名無しさん:2011/11/18(金) 13:15:07.83
内容が変更される場合はconstじゃなくてvarね。overloadで両方定義しておくのも
いいかも(const/varだとNULLが渡しにくいので)。

840 :デフォルトの名無しさん:2011/11/18(金) 13:24:16.08
WindowsSDKに定義されてるCでの宣言は
例えば、int Func(tagStructure *a);みたいに宣言されてます、これを
tagStructure = record
end;
function Func(const a: tagStructure): Integer; stdcall;と。

PTagStructure = ^TTagStructure;
function Func(a: PTagStructure);
と宣言するのが本来いいんでしょうけど、stdcallの場合、const付けると、
何か、勝手にアドレスを渡してくれるので。
いくつか、Delphiについて来るヘッダの移殖みてると、const付けてごまかしてる
のがあるので、使ってもいいのでしょうかね?

841 :デフォルトの名無しさん:2011/11/18(金) 13:29:20.04
例えば、ShlObj.pasに宣言されているIShellFolder.BindToObjectの第3引数のriidとか
なんですが、これはTGUIDのポインタなんですが、
const付けて、
function BindToObject(pidl: PItemIDList; pbcReserved: Pointer;
const riid: TIID; out ppvOut): HResult; stdcall;
ごまかしてるので。

842 :デフォルトの名無しさん:2011/11/18(金) 15:03:34.12
4 バイト以下の構造体、または dcc64 での 8 バイト以下の構造体は
アドレス渡ししないので、API 宣言するときは注意。

843 :デフォルトの名無しさん:2011/11/18(金) 16:01:30.81
いちいち構造体のサイズ確認するのだるいし間違えそうなうなので、TGUID以外はポインタ型
でいくことにします。
ありがとう。

844 :デフォルトの名無しさん:2011/11/18(金) 16:35:57.91
>>842
そんなのはいちいち気にしなくても呼び出し規約を揃えればコンパイラが勝手にやってくれますけど
逆に気にしなくちゃいけない場面って何?具体的に挙げてもらえるかな

845 :デフォルトの名無しさん:2011/11/18(金) 16:39:32.96
>>840
普通にやる。ちゃんとマニュアルに引数の渡し方とか書いてある
20年も前に良い仕様作ったよな、未だに現役
インラインアセンブラもあったし
fastcallとかもcに逆に使われるようになったし

4バイト以下でも構造体ならconstかvarすれば無条件にポインタ
singleとかdoubleとかは値渡しされちゃうんだけど、構造体に包めば参照渡しができる。

846 :デフォルトの名無しさん:2011/11/18(金) 17:39:48.72
質問者ですが、つまり、どういう事なんでしょうか?
>>845
普通にやるって、ポインタ型宣言して普通にやる?ってことですよね?
4バイト以下の構造体の場合、stdcallでconst付けた場合、ポインタ渡しされてませんでした。

847 :デフォルトの名無しさん:2011/11/18(金) 18:13:55.82
constがなんで「ごまかしてる」ことになるんだ?
そんな素人同然の奴がどうやって「ポインタ渡しされてませんでした」という確認をした?

848 :デフォルトの名無しさん:2011/11/18(金) 18:40:58.50
constって別にポインタで渡されるって意味ではないですよね?本来。
>>847
生成されるアセンブラで確認にしました。


849 :デフォルトの名無しさん:2011/11/18(金) 18:43:03.94
別にconstの意味が定数だけってわけじゃないだろ
仕様次第

850 :デフォルトの名無しさん:2011/11/18(金) 20:24:12.60
仕様次第なのはそんな事は最初から分かってて、その仕様がはっきりしなさそうだから
ごまかしと言っただけ。ttp://www.hu.freepascal.org/lists/fpc-devel/2011-March/023904.html
まぁ、>>842とかにもあるようにconstでごまかすと別のだるい事に気をつけなきゃ
いけなさそうなので、先に言ったようにおとなしくポインタ型使います。

851 :デフォルトの名無しさん:2011/11/18(金) 21:06:43.21
猿でもわかる仮想リストビュー使い方の解説お願い。

852 :デフォルトの名無しさん:2011/11/18(金) 21:10:43.18
>838-850
varでいいじゃん。元の宣言がconst *じゃないんだから。varで参照=アドレスが渡されるってのも仕様なんだし。

853 :デフォルトの名無しさん:2011/11/18(金) 21:19:10.62
>>851
OwnData := Trueして
Items.Count := で項目数ぶっこんで
OnDataでカラムヘッダ分だけItem.Caption、Item.SubItems.Addしていくだけ

854 :デフォルトの名無しさん:2011/11/18(金) 22:59:08.04
>>852
const *はconst MyRecord *pMyRecordとすべてのin-onlyパラメータに付いてます。
適当に書いちゃいました。すみません。FreePascalのconstrefはたぶんconst *用でしょうかね。
勉強になりました。

855 :デフォルトの名無しさん:2011/11/19(土) 14:05:42.33
>>853
ありがとう!

856 :デフォルトの名無しさん:2011/11/19(土) 16:22:41.34
いえいえ

857 :デフォルトの名無しさん:2011/11/19(土) 17:03:06.32
ここのクリップボードの変更検出のコードを動かして
動作中にデバッガでプログラムを強制中断したら
再度実行しても初期化に失敗するようになってしまった…
こうなったらもうログオフか再起動しないと回復しないの?
http://www2.big.or.jp/~osamu/Delphi/tips.cgi?index=0209.txt

858 :デフォルトの名無しさん:2011/11/19(土) 17:04:54.21
>>848
確認したらそんなことになってなかったけど?
って釣りか…

859 :デフォルトの名無しさん:2011/11/19(土) 17:25:49.18
学校の宿題の彼はその後どうなったんだろう…

860 :デフォルトの名無しさん:2011/11/19(土) 19:43:23.66
pascalの宿題スレでやれよ
って思って見てたけどあのスレ今ないよな

861 :デフォルトの名無しさん:2011/11/19(土) 19:47:33.32
今どき宿題にPascal出す先生を尊敬する。
そしてその先生に当った生徒乙w

862 :デフォルトの名無しさん:2011/11/19(土) 19:59:07.60
Pascalは型が厳格で教育には最適とかさいてかないとか

863 :デフォルトの名無しさん:2011/11/19(土) 20:31:27.33
前にDelphi+DBEで作ったソフトがWindows7で動きません、何か対策ありますか?


864 :デフォルトの名無しさん:2011/11/19(土) 20:53:20.97
>>863
BDEで作ってみてはどうだろう?

865 :デフォルトの名無しさん:2011/11/19(土) 20:58:11.86
Delphi+BDEだった


866 :デフォルトの名無しさん:2011/11/19(土) 21:06:24.40
BDEやめればいいじゃない

エラーメッセージも何も書かずに意味のある答はもらえないだろ

867 :デフォルトの名無しさん:2011/11/19(土) 21:25:19.01
俺は動いてるよ
UAC止めてるけど

868 :デフォルトの名無しさん:2011/11/19(土) 21:26:11.30
俺もWin7でBDEアプリ動いてるよ。

869 :デフォルトの名無しさん:2011/11/20(日) 07:29:13.07
Lazarusだと DBase が使える TDBF とか TParadoxDataSet とかが標準でついてるよ

870 :デフォルトの名無しさん:2011/11/20(日) 11:05:44.21
新規で作る話じゃなくて、既存のプロジェクトが
動かないって問題を話してるんじゃないの?

Lazarus持ってきてもしょうがないべ?

871 :デフォルトの名無しさん:2011/11/20(日) 12:11:02.82
別にしょうがなくないです、ありがとう。

872 :デフォルトの名無しさん:2011/11/20(日) 15:46:18.19
ヘルプってまじめに作ってる?


873 :デフォルトの名無しさん:2011/11/20(日) 16:53:33.78
カネ次第

874 :デフォルトの名無しさん:2011/11/21(月) 23:44:30.38
アプリのヘルプ呼び出しってこんなめんどい実装しないといけないの?

http://fishers.homeunix.net/pc/delphi/htmlhelp.html

875 :デフォルトの名無しさん:2011/11/22(火) 22:34:21.04
>>859
すこし進展してます!検索を行う関数の作成とEditに入力された文字を検索ボタンで扱う方法を調べながら勉強してます

876 :デフォルトの名無しさん:2011/12/01(木) 08:42:27.63
http://thinkit.co.jp/free/article/0709/12/1/
ここ見ながらデータベースソフトの練習しようと思うんだけど、
データベースを使ったソフトの配布って、exeと他に何を
配布すればいいの?
インストーラー使わないと駄目とかある?

877 :デフォルトの名無しさん:2011/12/01(木) 11:14:11.70
AccessとかOracleが入ってない環境でもデータベースを動かすってことでしょ
面倒臭そう

878 :デフォルトの名無しさん:2011/12/01(木) 11:24:14.70
めんどくさいの?
家のPCで作って職場のPCに入れようと思ったんだけど、コピーでいけるとか
そんなんじゃないんだ。

879 :デフォルトの名無しさん:2011/12/01(木) 12:33:31.96
>>878
通常DBを使うというのは、簡単にいうとDBサーバという別のソフトと通信するということ
自分で作ったexeの他に、対象のPC(もしくは専用サーバ)にDBがインストールされていて、それが起動していないといけない

ただ、Firebird embedded serverみたいな組み込み向けが用意されてるDBは
exeと関連dllをコピーすれば使えるよ
他にもsqliteというのは組み込み専用のDBで、dllもひとつしかいらない

880 :デフォルトの名無しさん:2011/12/01(木) 12:51:09.29
>>876
SQLiteなら簡単だよ。
http://tensei.cocolog-nifty.com/weblog/2010/02/lazarussqlite31.html
が参考になるよ。

881 :デフォルトの名無しさん:2011/12/01(木) 13:09:54.07
>>880
あざぁーす
読んできます。
多分というか絶対わからなくて、また質問すると思いますが
よろしくお願いします。

882 :デフォルトの名無しさん:2011/12/01(木) 13:44:42.09
本当に右も左もわからんのならclientdataset使ってファイルベースで組んで読み書き編集やってみるのが良いんじゃない?
後々役にも立つだろうし

883 :デフォルトの名無しさん:2011/12/01(木) 15:06:34.98
>>876
英語だけど TDbf というコンポを使うと DLLとか不要みたい。
ttp://wiki.lazarus.freepascal.org/Lazarus_Tdbf_Tutorial

884 :デフォルトの名無しさん:2011/12/01(木) 15:29:54.34
>>883
それdBase形式のファイルを直接読み書きできるだけで
SQL使えないんじゃなかったっけ

885 :デフォルトの名無しさん:2011/12/01(木) 15:35:39.85
そろそろリンク先をちゃんと読んで質問に答えてあげようぜ

886 :デフォルトの名無しさん:2011/12/01(木) 15:40:10.36
>>876
EXEのみでSQL必要ならこれとか
ttp://wiki.lazarus.freepascal.org/ZMSQL

887 :デフォルトの名無しさん:2011/12/01(木) 15:51:02.85
>>886
自分でよく分かってないのに適当にググったのを勧めてやるなよ
それDelphi非対応だぞ・・・

888 :デフォルトの名無しさん:2011/12/01(木) 16:30:41.33
別にDelphiこだわらいない

889 :デフォルトの名無しさん:2011/12/01(木) 16:59:29.21
日本語でおk

890 :デフォルトの名無しさん:2011/12/01(木) 17:22:23.28
いないいないばぁ

891 :デフォルトの名無しさん:2011/12/01(木) 18:46:39.67
 ̄ ̄ ̄ ̄ ̄ ̄ ̄l/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
     ∧_∧
    ( ´・ω・`)     ∧_∧
    /     \   (    )何言ってんだこいつ
.__| |    .| |_ /      ヽ
||\  ̄ ̄ ̄ ̄   / .|   | |
||\..∧_∧    (⌒\|__./ ./
||.  (    )     ~\_____ノ|   ∧_∧
  /   ヽ 空気読めよ   \|   (    )
  |     ヽ           \/     ヽ. オマエ馬鹿だろ
  |    |ヽ、二⌒)        / .|   | |
  .|    ヽ \∧_∧    (⌒\|__./ /





892 :876:2011/12/04(日) 18:12:10.45
結局、ここを見て勉強しようとしているのですが、

http://support.embarcadero.com/article/36489

TTableのActiveをTrueにしようとすると

「テーブルが存在しません
ファイルまたはディレクトリが存在しません
ファイル:C:\Program Files\Common Files\CodeGear Shared\Data\Customer.DB」

と出てしまうのですが、Customer.DBを作るにはどうすればいいのでしょうか?
バージョンはXE2です。

893 :デフォルトの名無しさん:2011/12/04(日) 19:41:32.68
C:\Program Files\Common Files\CodeGear Shared\Data
または 64bit 環境なら
C:\Program Files (x86)\Common Files\CodeGear Shared\Data
を確認して。Customer.DB 以前にディレクトリそのものがない場合は、BDE の再インストール

登録済みユーザーなら
ttp://cc.embarcadero.com/Item/28537
からダウンロード

894 :デフォルトの名無しさん:2011/12/04(日) 20:20:33.35
delphiのフォーム並べて、デザインマップを描きたいんですけどどうやったらいいですか?
wordに貼り付ける予定です

895 :デフォルトの名無しさん:2011/12/04(日) 23:47:33.02
 ̄ ̄ ̄ ̄ ̄ ̄ ̄l/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
     ∧_∧
    ( ´・ω・`)     ∧_∧
    /     \   (    )何言ってんだこいつ
.__| |    .| |_ /      ヽ
||\  ̄ ̄ ̄ ̄   / .|   | |
||\..∧_∧    (⌒\|__./ ./
||.  (    )     ~\_____ノ|   ∧_∧
  /   ヽ 空気読めよ   \|   (    )
  |     ヽ           \/     ヽ. オマエ馬鹿だろ
  |    |ヽ、二⌒)        / .|   | |
  .|    ヽ \∧_∧    (⌒\|__./ /

896 :デフォルトの名無しさん:2011/12/05(月) 00:31:13.20
>>892,893
>C:\Program Files\Common Files\CodeGear Shared\Data
XE2は買ってないから分からないけど、"CodeGear Shared"なの?


897 :876:2011/12/05(月) 11:12:55.34
>>893,896
ありがとうございます。
今デレクトリーを見ていたら、「Borland Shared」というデレクトリーが
あって、その下のDATAデレクトリーに「Customer.db」等のファイルがありました。
多分、このパスを設定というか認識させれば良いような気がするのですが、
設定方法を教えて下さい。
大昔にDelphi7を入れたことがあるPCで、何年も使ってませんがDel7での方法でもかまいません。
(7自体はインストールのままで、使用できる状態です。)

よろしくお願いします。

898 :デフォルトの名無しさん:2011/12/05(月) 11:37:57.01
>>897
Delphi7なら InstallShield が入ってる筈 無ければCDROMからインストールだね


899 :デフォルトの名無しさん:2011/12/05(月) 13:44:15.76
>>897
インストールされてるのに見てるディレクトリが違ってるのなら
BDE Administratorでエリアスパスを確認。

BDE Administratorがコントロールパネルやスタートメニューに
ないのならBDEがインストールされてない。

900 :デフォルトの名無しさん:2011/12/05(月) 15:45:13.54
DatabaseName は Alias 名だけで無く、パス名も許されるので、
"DBDEMOS" の代わりに見つけた ...\Borland Shared\Data のフルパス名を DatabaseName 
に指定すれば先に進めると思うぞ

901 :876:2011/12/07(水) 09:15:10.06
>>898-900
ありがとうございます。
>900氏の事をやったら先に進めました。
不思議なのは、その後新規プロジェクトでTTableを
配置すると、オブジェクトインスペクタのTableNameに
DATAフォルダーにあるファイルの一覧が現れるように
なりました。

でも、治ったのならおkと言うことでありがとうございました。

902 :デフォルトの名無しさん:2011/12/07(水) 11:56:11.53
Asphyre Sphinx 2 でたよ
http://www.afterwarp.net/products/asphyresphinx2

903 :デフォルトの名無しさん:2011/12/08(木) 08:13:25.58
Lazarus 0.9.31 だとこれでいける

procedure TForm1.FormCreate(Sender: TObject);
var
MyRegion: TRegion;
begin
MyRegion := TRegion.Create;
try
MyRegion.AddRectangle(0, 0, 100, 100);
Self.SetShape(MyRegion);
finally
MyRegion.Free;
end;
end;

904 :デフォルトの名無しさん:2011/12/08(木) 10:14:00.14
 ̄ ̄ ̄ ̄ ̄ ̄ ̄l/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
     ∧_∧
    ( ´・ω・`)     ∧_∧
    /     \   (    )何言ってんだこいつ
.__| |    .| |_ /      ヽ
||\  ̄ ̄ ̄ ̄   / .|   | |
||\..∧_∧    (⌒\|__./ ./
||.  (    )     ~\_____ノ|   ∧_∧
  /   ヽ 空気読めよ   \|   (    )
  |     ヽ           \/     ヽ. オマエ馬鹿だろ
  |    |ヽ、二⌒)        / .|   | |
  .|    ヽ \∧_∧    (⌒\|__./ /

208 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)