1 :
デフォルトの名無しさん :
2011/06/27(月) 00:17:35.67
あ、立ってた >1乙
質問です:ファイル選択ダイアログ何かが他のウィンドウの下になったりした場合、回避策はありますか? ウィンドウハンドルとか取れるんだろうか?
つ [d]
>>6 順番に試してみます。
普通に開発する分には隠れないのですが、TFormのCreateParamをオーバーライドして属性弄ってるので。。。
低速PCでクリック連打やるとわりとどんなソフトでも起こり得るんじゃないの? タスクマネージャ→実行タスク→手前に表示でダイアログが一番上に来るからこれをコードにして 間に噛ませば回避できそうだけど。
delphimm.dllとborlndmm.dllって何ですか?
メモリマネージャ
11 :
6 :2011/07/01(金) 18:42:47.82
デルファイに付いてる TeeChart (Standart 4)で聞きたいのですが、 Y 軸のスケールをソース上で指定するにはどう書くのでしょう? スケールの 最大/最小値の自動調整 : Boolean 最大値 自動調整 : Boolean 最小値 自動調整 : Boolean 最大値、最小値 Chart1. 識者の方おねがいします
14 :
デフォルトの名無しさん :2011/07/05(火) 11:32:37.54
TScrollBox上に乗せたコントロールが範囲外か判定したいです。 Control.Left > ScrollBox.Width で判定しようとすると、スクロールが有る場合、上手くいきません。 どういう判定式になるのでしょうか?
15 :
デフォルトの名無しさん :2011/07/05(火) 16:39:49.59
ふと気がつくと、実行ファイルのサイズが18Mになってたんですが、普通ですか?
>>15 リソースでクソでかい画像など入れてんじゅあねーの
>>14 Control.Left > ScrollBox.ClientWidth
18 :
14 :2011/07/06(水) 12:16:34.20
つ [d]
>>17 TScrollBoxで、スクロールバーが表示か非表示か判定難しいですね。
ScrollのVert/HorzにVisibleで問い合わせてもtureのみorz
じゃあTScrollBoxを派生させて自分でコントロール作れ
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;
仕事でDelphiやることになったわ 糞言語さんよろしく
skypeの設定ウィンドウで使われている、TOptionsPanelって、カスタムコンポーネントですか? TListBoxとか使って同じようなの作ろうとしたが、あの動きは難しい
24 :
18 :2011/07/07(木) 08:45:50.00
orzを感謝に使うやつ初めて見た
C#で言うところのHttpWebRequestのような、 Http接続関係のライブラリって、Delphi 2010やXEで標準装備されますか? 昔と同じくIndyでやるしかないですかね?
Del7からIndyが標準装備でわ?
Del7時代と違って、今ならサードパーティ製でなく標準で ネット系ライブラリが用意されてるかもと思ったんですか、 やっぱりないんですね。 調べてみたらXEでIP*Works!も付けたみたいですが、 これSSLさえ対応してないし(別売)。。微妙
Indyってサードパーティじゃなくてオプソでは? メモリマネージャーもオプソのもの取り込んだし。 ソースとして取り込んで、製品に組み込むときにソース制御(確認だけとしても)してるわけだから、 標準と言えるんでわ?
>>29 そうですね。
ただ、Del7のときにIndyのバグで散々な目にあったので、
Indyはあまり信用してないんですよね。
Indyが微妙だからIP*Worksも取り入れたような気もしますし・・
indy以外でありますか?
は? Indy自体オープンソースだから、バグは自分で直して使うんだよ。
>31 商用ならいくつか
ドイツもこいつも役立たねぇ奴らゔぁあじやのぉ
35 :
デフォルトの名無しさん :2011/07/08(金) 23:30:07.78
UnicodeString s = L"\t"; C++Builderでこう書くようなのって、Delphiだとどうするのでしょうか? Unicodeのエスケープ文字をソース内で指定したいのです
38 :
デフォルトの名無しさん :2011/07/11(月) 00:20:37.26
最近知ってちょっとショック受けてるんですが(プロじゃないってことで何卒ごかんべん) ユーザーって、なんかダブルクリックの癖がついてるんですね。 職場でつかってる自作のソフトのことなんですが、ボタンダブルクリックに対するプロシージャは何一つ書いてません。 ダブルクリックされた場合に、シングルクリックの命令が2回実行されてしまうなんて可能性はありますか? もしそうだとしたら、すべてのボタンに対して、ダブルクリックにexitとか書く必要が出てきたりしますか?
>>38 > ダブルクリックされた場合に、シングルクリックの命令が2回実行されてしまうなんて可能性はありますか?
あるでしょうなぁ。ってぇか試してみればいいじゃない、自分で。OnDblClickがないコントロールは
OnClick-OnClickとイベントが発生するでしょう(ObDblClickがあればOnClick-OnDblClickになる)。
> もしそうだとしたら、すべてのボタンに対して、ダブルクリックにexitとか書く必要が出てきたりしますか?
さぁ。あなたのプログラムの作り次第でしょう。必要なら必要だろうし、不要なら不要。OnClickの
処理をしている間はコントロールやフォームのEnabledをFalseにするだけでも十分かもしれないし。
シングルクリックとダブルクリックを判定するしきい値の設定= コントロールパネルのマウス|ボタン|ダブルクリックの速度の 設定が「速く」になっているとか。
41 :
sage :2011/07/11(月) 02:19:27.92
>>39 ,40
ありがとうございます。
>>試してみればいいじゃない
まったくそのとおりでした。
procedure AllBtnDblClick(Sender: TObject);
begin
exit{何も書かなくても一緒か};
end;
な感じの、虚しすぎる関数つくって全てのボタンのOnDblClickにあてがう
みたいなやり方しか思いつきませんが、取りあえず根性で修正します
ごめんなさい sage書く場所間違えた
?そんなのいらないじゃん。
44 :
41 :2011/07/11(月) 17:18:52.78
>>43 無根性でやりとげられる何か楽な方法があるんでしょうか。
ヒントだけでもいただければ幸い
>>38 を見る限り、何の問題も起きてないと読み取れるんだけど
ダブルクリックされるとどんな問題が発生したのか書いてないし、
そもそも当該のコントロールがなんなのかも明らかにしてないね
こゆこと? 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クリックされたら確かに二つずつ増えてくね
Delphiで作ったプログラムはC#やVBみたいに何かランタイムをインストールしてもらう必要はありますか?
普通は不要
ボタンのOnClickに「ボタン自身のEnableをFalseにする」でダメなの? 処理が終わったらEnableをTrueにすればいいし 基本的にボタンはそうやってるけど 何か勘違いしてたらスルーしておくれ
>>41 >49 の例
procedure TForm1.Button1Click(Sender: TObject);
begin
Button1.Enabled := False;
// 処理中
Button1.Enabled := True;
end;
わざわざ Button1DblClick(Sender: TObject); を書く意味が分らない。
俺ならTrueにする前にApplication.ProcessMessagesを挟んじゃうね。
いらんだろ。.NETならともかく。
まぁ、例外はちゃんと処理しないと二度と押せなくなるがw
なんのためのtry...finallyだよ
55 :
デフォルトの名無しさん :2011/07/13(水) 05:36:31.44
delphi6を使っています。 FindDragTargetでAllowDisabledをTrueにしているのですが、 Enabled=FalseやVisible=Falseの状態のボタンを見つけられません。 何が間違っているのでしょうか? よろしくお願いします。
ちゃんとスクリーン座標に変換している? 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
記述はこうなっています。
引き続きよろしくお願いします。
Enabled=Falseのボタンだとうまくいかないみたいだね TWinControl.ControlAtPosを使えば?
target_component := FindDragTarget(pntXY, True); これだと確かにダメだね(うちのD6Per) target_component := ControlAtPos(ScreenToClient(pntXY), True, True); これならEnabled=FalseでもOk バグかね? そもそもDisableなコントロールにドロップすることなんか無いから気付かないよなあ
TList.Add(Nil)とTList.Count:=TList.Count+1は同じこと?
何に着目しているかにもよるねぇ データの数なら同じだけど、処理速度はAddの方が速い ちなみにAddを1000回繰り返すのとTList.Count:=TList.Count+1000では 後者の方が速くなる
62 :
デフォルトの名無しさん :2011/07/14(木) 06:36:16.98
63 :
デフォルトの名無しさん :2011/07/14(木) 07:04:03.27
連続ですいません。 1.ボタンをクリックすると、メッセージ表示用ラベルのcaptionを変更。 2.その後、画面のどこでもいいからクリックすると続きを表示。 3.表示するメッセージがなくなったらイベントを終了。 というonclickイベントを作ろうとしたのですが、 ラベルの変更がイベント終了まで適用されないようで困っています。 イベントの途中でcaptionの変更を適用する方法はないのでしょうか?
>>63 Boolean の変数を作っておいて
procedure TForm1.ボタンクリックで
変数:= not 変数;
if 変数 then ボタン.caption:= '変更' else ボタン.caption:= 'もと';
procedure TForm1.全体クリック
if 変数 then 続き
分けちゃだめなの?
>>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でもいいんですね。
どうもありがとう。
DelphiのライブラリにC++のstd::mapみたいなクラスは存在してますか? キーは文字列、値はTObject派生型です
TStringsのStings[]とObjects[]で似たようなことはできるが。
Application.ProcessMessagesでいいだろ
bmp及びjpegファイルをTimage1に読み込むにはどうすればいいでしょうか。 ファイルをOpenDialog1で 一種類の拡張子(bmp)で読み込むことはできるのですが、 jpegのファイルを読み込むのがうまくいきません。 どちらでも読み込めるようにしたいのです。
uses Jpeg;
TForm1以外のクラスから、TForm1内のTImageやTLabelを操作しようとすると "メソッド識別子が必要です"と言われてコンパイルできません。 TForm1.ImageList1.Draw といった形で指定しているのですが、何がいけないのでしょうか?
Form1.ImageList1.Draw が正しい。 T付きじゃインスタンスではなく型に対して 操作しようとしてるからエラーになる。
事実上ヌルポインタ操作だものな
>>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でも読み込みできるようにするにはどうすればいいでしょうか。
Image1.Picture.LoadFromFile(OpenDialog1.FileName);
例えば画像処理に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
81 :
71 :2011/07/17(日) 19:16:11.29
>>79 こちらの方法でもできました。ありがとうございました。
クラス内にコンポーネントを作成する方法を教えてください。 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を作成してもラベルが画面に表示されません。
試してないけどTestLabel.Parentを設定してみて
すいません、実はtwincontrolが何だかわかっていません。 parentに設定するtwincontrolはどうやったら調べられるでしょうか?
Form1でいいんじゃね
>>84 Parentには、張付け先の変数名を指定する。
フォームに直張りするなら、TestLabel.Parent:=Form1;
TPanelとか、TGroupBoxならその変数名。
Createに渡している変数(今回の例で言えば、Form1)は、自動でそのTLabelを後片づけしてくれる人。通常は、張付け先のルート(大抵はTFormか)を指定する。
諸事情により、後片づけを自分でやるときは、Createの引数にnilを渡す。ただし画面に表示するオブジェクトを自分で後片づけすることは、まずないと思う。
たぶんコンストラクタじゃなくてActiveになったときに処理すべきか コンストラクタだとFormとの作成順がおかしくなるんじゃないの
>>83-87 みなさんありがとうございます。Form1を指定でうまくいきました。
しかし今度は、TestClass.FreeをしてもForm1に表示したラベルが消えなくなってしまいました。
TestClassのデストラクタでTestLabelも解放してるのですが、画面に残ったままです。
どうか消し方をお教えください。
>>87 Formが作成され終わった後にしか作成されないクラスなので、
その点は多分大丈夫じゃないかと思います。
>>88 LabelのParentにnilは指定して見たかい?
これは設計からして間違ってるだろ・・・
間違ってるけど、本人がやりたいんならほっとけ、という気も 普通はFrameとか使うだろうが
>>88 「FTest := TestClass.Create;
の後にFTestを解放せずに
FTest := TestClass.Create;
を実行してしまって
TestClass型の実体を間違えて二つ作ってしまったので
一つを解放してもう一つが残っている」
に一票。
オブジェクト指向を根本的に勘違いしていると思われ
94 :
デフォルトの名無しさん :2011/07/19(火) 15:24:21.68
DLLでフォームを扱うときって、Application.Handleだけ渡すのと ApplicationとScreenを変数ごと渡す方法があるらしいけど どっちが正解?
Packageにする
>>93 でもオブジェクト指向設計とか
オブジェクト指向プログラミングってむずかしいですね。
C++でも一緒でしょうけれど
漠然とオブジェクト指向言語に触れても
全くオブジェクト指向プログラミングは出来ませんし、
オブジェクト指向プログラミングの書籍って難解なのが多くて…
もっと簡単になればいいのにって今でも思います。
どこが難解なんだ...
くだらないんだけど、 PString、@String、PChar(String)は同じ?
型が違うんじゃまいか?
PStringの^はStringだけど PCharの^はCharですなぁ
^は変数(の後)につけるときは逆参照だけど型(の前)につけるとポインタ型になるからその言い方は紛らわしい
PStringはStringへのポインタで、中身はString型変数のアドレス。 @StringはStringの参照で、評価値はString型変数のアドレス。 PChar(String)はStringに対する変換で、評価値は空文字列に対してはnil、中身があれば @(String[1])、つまり先頭文字のアドレス。
ごめん、頭わるくて。 String変数のアドレスと、先頭文字のアドレスってのは違うの?
String型変数は実際はポインタで、Stringの記憶領域を指している。 ここの部分の構造はC文字列と互換性があるのでPCharでキャストすると Cのchar *またはwchar_t *として使える。
ほんとすまないんだけど、String型をShortStringに変えたとき PChar(String)だった部分は、@ShortStringでいい?
ShortStringとか使うのはなぜ?いまさらありえないっしょ。 とはいえ、@Str[1]でいいんじゃまいか。
いやね、array[0..n] of Stringとか使うと なんか知らんけどmemcheckがリークしてるって出るのよ。
array [0..9] of Char; じゃなく?
文字列の配列っす。 けどなんで?
文字列の配列なんて普通はリークしないから。
あとFastMM4つかうといいよ。
インスタンスをfreeした後、そのインスタンスがnilでない場合、という条件をつけた処理が実行されてしまいます。 freeを行う=nilになる、というわけではないのですか?
それじゃあ聞くけどFreeAndNilって何のために存在するの?
ならない。 FreeAndNilでも使ってみてはどうだろう。
>>113 くだすれなのに
なんでわざわざ嫌みな書き方するの?
114みたいに書けないん?
なぜFreeAndNilを作らなければならない仕様にしたのか、がわからん。
C言語のfree、C++のdelete、COMのQueryInterfaceのReleaseとかもnil相当にはならないよ?
「nilで埋める = メモリを0という数値で埋める(代入する)」 よって、処理速度の観点から見れば、nilで埋めない方が、代入処理がない分だけ高速に動作します。 けど、近年のポインタをどうこうするような、難解なプログラムを開発する時、安全の観点から言えばnilで埋める方が安全ですよね。 まだプロセッサの性能が低い & プログラムが単純だった時代から存在している言語だから、必然的に前者の実装になって、今に至っているのではないでしょうか。
nilで埋めるって書き方にものすごい違和感を感じる
クラスのメソッドから変数に代入なんて出来ないだろ だからこそFreeAndNilなんてのがあるわけで
del7ってwindows7でも使える?
FreeAndNilのコード見てみたけど、nilの後にFreeしてるね。 そういうのありなんだ。
確実にnilにするためにそうなってる
>>121 逆にこの互換性バリバリを売りにしてる歴代Windowsでなぜ今回使えなくなると思った
>>122 「ありなんだ」ってどういうこっちゃね
別の変数に入れただけじゃん
>>124 使用に際して、何か不具合は起きないか?ってききたかったんじゃない
インストールでコケるソフトも多いが。
便乗でスマソ xp32bitから7の64bitに変えたいんだけどDEL7 おK?
デバッガ動かないんじゃなかったっけ?非公式パッチ出ていたっけ?
XP mode推奨。
TMainMenuでメニューを作って、アクセラレータを付けています。 Windows7で実行しても常時表示されたままになってしまい、 普通は消えていてALTキー押すと表示されるような動作になりません。 何が悪いのでしょうか?
>>112 ヌルで確かめるんじゃなくて、Assign(hoge) でインスタンスを確かめれば?
意味は一緒だ
Assignedはnilと比較できないものに使うんだよ 例えば引数のない関数とかな ポインタの有効性を調べる関数なんて使ってるとこ見たことない
ちょっと語弊があると思う。以前Allen Bauerか誰かのBlogにあったと思うけど、
Assignedには実際には2つの使い方があって、単なるポインタに対しては
<> nilだけれども、クラスのメソッドポインタの場合はメソッドポインタの部分だけを
取り出して<> nilしてる、みたいな。もちろんそのポインタが指している領域が
有効かどうかなんて判別をすることができないのは
>>132 の指摘のとおり。
>例えば引数のない関数とかな 関数を Assigned で調べてどうする。って突っ込みが入らんな。 引数を持たない(ポインタを返す)関数を示すポインタ。のことだな。 古きなつかしき TurboPascal の時代、まだ Assigned なんかなかった時代では if @Func = nil then で、引数を持たない(ポインタを返す)関数へのポインタが nil かどうか判断できる ここはくだすれなので、説明しておくと if Func = nil then は引数を持たないポインタを返す関数の返した値が nil かどうかを判定するコード。 関数ポインタ Func そのもののアドレスをとるには @@Func となる。
と、今まではされてきたんだけど、実は
>>134 も実際の挙動とは違う。
正確に言うと、8バイトあるメソッドポインタのうち、3バイト目と4バイト目が0かどうかチェックする、が正しい。
一応この挙動にはちゃんとした理由があるんだけど、何故こういう風になってるか分かる人はさすがにもういないかな…?
RTTI依存か?
beta7.5 で試したら x64 でも 2バイトしかチェックしていないけど、これでいいのか?
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;
なんや
今のdelphiってウインドウのID調べる奴とか付いてるの?
ないみたい
皆さんはゼスチャーを使うソフトって作ってる?
ジェスチャーなら
うお、はずかしい
加藤チャー
下記のコードを書きました。 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イベントが無効になるようにするにはどうしたらいいでしょうか?
ちゃんと動くけど?
151 :
149 :2011/08/03(水) 10:34:45.81
ありがとうございます。 そうですか、select イベント起きませんか。 もう少し調べてみます。
152 :
149 :2011/08/03(水) 12:13:08.69
コンボボックスのイベントの発生タイミングを調べていたんですが、 オートコンプリートを有効にしておいて、エディット部分に入力をした時に オートコンプリートに合うデータが有った場合に入力補完される訳ですが、 このタイミングでクリックイベントも発生します。 これっておかしいと思うのですが、クリックしてないのにクリックイベントが起きるのを 抑える方法って有りますでしょうか? 環境はDel7+XPsp3です。 よろしくお願いします。
オートコンプリート切れ いや割と真面目に
ソース見てみたがオートコンプリートが発動してアイテムが変更されるとClickメソッドと Selectメソッドが呼び出される。まぁオートコンプリートは該当アイテムがあったらそれを 選択する動作をエミュレートするのでおかしい動作ではない罠。
遅くなりましたが、
>>153 、154さん、ありがとうございました。
取りあえず、キープレスイベントが起きたかどうかをフラグで
確認して、クリックイベントを実行orスルーさせるようにしました。
関数などの末尾にstaticがあるやつとないやつは何が違うんでしょうか…。 class procedure iyan; static; class procedure iyan; ↑メソッドですが、この2つに違いはありますか?
暗黙の引数 Self があるかないか。
上はクラスに所属してる関数、 下はクラスメソッド
ImageListに横幅300くらいの大きい画像を登録しようとするとdelphiが落ちてしまいます。 小さなサイズに分割するしかないのでしょうか? また、これはマシンスペックに依存する現象でしょうか?
pcodeさんは生きてますか?
バージョンも書かずに質問とな? その画像壊れてんじゃない?一回ペイントブラシかなにかで開いて保存しなおしてみたら?
超ヘボPCで巨大画像扱おうとしたとか
他の箇所のメモリ破壊が、ImageListの所で発現したとか
ご回答ありがとうございます。 やはり、PC依存なのでしょうか。 バージョンは6personalです。 元がpngの画像を変換ソフトでbmpにして使うのがまずいのかと思い、 簡単なbmpを作成して新規のFormにImageListだけ置いて試してみたところ、 やはり登録はできるのですが起動しようとすると固まってしまいます。 (登録しようとすると落ちると書きましたが、登録後起動時に落ちるの誤りです) 最新ではないものの超ヘボということはないと思うのですが、一般的な症状ではないようですね。 分割すれば対処できない問題ではないので、その方法で進めようと思います。
6Proで試してみたけど起動時じゃなくてリンク時にこけてるね PNGに変換しなきゃいけないけどPngComponentsのPngImageListなら 1280x1024ぐらいはいけた
XP、Delphi6Pro、BDE(TDatabase、TTable、TDBGrid)、MSAccess グリッドに直接入力 数値フィールド(小数点あり)に入力するとき ・桁数オーバーのとき ・数値として正しくない「-1.2.3-」とか入力されたとき 例外エラーが出る どう対処すればいいか教えてくだされ (例外を拾える場所?入力制限?)
例外で出て入力制限されてんだから何か問題でも? それが嫌?でどう対処したいのかかかねぇと答えようがねぇ。
168 :
166 :2011/08/07(日) 20:11:26.05
すまん 赤×のエラーがイヤなんで 「数値を入力してください」とかメッセージ出したい
170 :
169 :2011/08/07(日) 20:29:51.93
>>169 tryで拾えるイベントが見あたらないんだ
>>170 なんでもかんでもエラーが起きたら処理で良いんでないか
tryの範囲を狭くしとけば、おかしなエラーは拾わないでしょ
172 :
166 :2011/08/07(日) 21:35:08.36
>>171 すまない書き方が悪かった 名前欄も間違った
「どこにtry〜exceptを書けば例外を拾えるかわからない」
「-1.2.3-」って入力してエンターでEDatabaseErrorになるわけだが
具体的にどの瞬間に例外が発生するのかわからない
IDEも現在どこにステップがあるのか教えてくれん
>>166 > XP、Delphi6Pro、BDE(TDatabase、TTable、TDBGrid)、MSAccess
> グリッドに直接入力
す、すまん
データベースやTDBGridが絡んだのは、よく分からん。
良く読んでなかったよ。
ただ、どこに書いて良いか分からないならエラー処理用のプロシージャーを書いて
ApplicationEventsかApplicationのOnExceptionに登録すれば良いんじゃいかな
ググったらこんなんあった
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では取れなかった 他のやり方もあれば是非。
D6のTListViewでグループ化の機能を使うのは難しいのでしょうか?
自分で実装するのが無理だというのであれば、はい
需要無いってわけじゃなさそうだし海外にでも落ちてるんじゃないの
>>175 とりあえず例外が起きている場所と原因の特定が必要だと思う。コンパイラオプションのデバッグ版DCUを使うに
チェックオンして、例外発生でブレークしたところで呼び出し履歴を遡って原因箇所(例外を投げる関数を
呼び出しているところ)とその理由(エラー側に分岐する原因となる変数とその内容)を確認、という手順で。
>>180 Windowsは2000までしか使ったことがないの?
いや、試してないんで。Windows XP以降ではうまくいかんの?
>>175 TField.OnValidateイベントはもう試した?
>>166 TFieldのOnValidateとか、TDataSetのOnEditErrorとかは使えないの?
入力エラー時のメッセージを変えたいだけならConstraintErrorMessageでできそうだけど
185 :
デフォルトの名無しさん :2011/08/09(火) 15:51:37.30
呼び出し元を終了させる関数を作る方法を教えてください。 functionA 内で functionB を呼び出し、functionB の中で条件判定をして場合によっては Exit を返し functionA を終了させるというようなことをやりたいのです。 関数ポインタで検索してみましたが参考になりそうなことは見付かりませんでした。 よろしくお願いします。
例外処理で一気にAbortするか function functionB(var exitcode: integer): xxx; としてexitcodeにこの変数の値読んで抜けてくれというコードをfunctionAに記述する まあ後者が無難
187 :
185 :2011/08/09(火) 16:03:58.85
>>186 では functionA 側で Exit を呼び出すのが無難ということですね。
関数一つ記述してコードをすっきりさせたかったのですが後者でやることにします。
速レスありがとうございました。
>>185 Anonymous Methodsで検索した?
189 :
185 :2011/08/09(火) 16:48:35.20
>>188 ごめんなさい、Delphi 5 です……。
>>188 それでならやる方法があるとでも言いたいようだけど無理でしょ
191 :
185 :2011/08/09(火) 23:53:22.52
結局無理なんですか。 配列に関数ポインタ入れて判定関数の戻り値を添字にすればいいかなとも思ったんですが結局よくわかりませんでした。 もう if 判定関数 then exit; と書くことにします。 色々ありがとうございました。
例外でやればいいじゃないの。 procedure functionA begin try functionB; except end;
↑誤投稿 procedure functionA; begin try functionB; functionB2; functionB3; functionB4; except on EUserBreak do …;//←ほかの例外と区別するため自分で作った例外クラス使った方が良いよ end; end; procedure functionB; begin raise EUserBreak.Create('中止しますた'); end;
独自に作らなくてもそういう時のためにAbortっていう手続きとEAbort例外が昔から組み込まれてるんだけどね ま 知らないんだろうけどね
んぅ?区別するために独自の例外を発生させているのでは?
EAbortはAbortを呼ばない限り発生しないので区別する必要がありませんよ ご存じでした?
Abortも含めて区別するためでしょう。
うぜーからお前らは質問した人にだけ、聞かれたことだけを答えとけばいいよ
まるでXRayみたいな物言いだな
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 にする方法はありませんか?
プロパティはreadだけ公開して、プライベートではFfooをそのまま使う
205 :
203 :2011/08/11(木) 22:27:57.43
ああ……やはりそれですね。わかりました。ありがとうございます。
そもそも「プロパティの read と write のスコープを別々」にできる言語ってあるの?
208 :
203 :2011/08/11(木) 23:13:44.70
ないんですか? Delphi 以外ではプロパティを使ったことがないのでわかりませんが。
C#のあれはサブクラスで非公開にしたプロパティにアクセスすると、 エラーにならずにスーパークラスのプロパティにアクセスしてしまうという 設計上のミスとしか考えられない酷い仕様があるからな…
プロジェクトを開くと、突然 「クラス〜が見つかりません。エラーを無視して続けますか?」と出るようになりました。 見つかりませんと言われているクラスは自作のTframeクラスで、Unit1のusesで宣言しています。 何がいけないのでしょうか?
>>211 Tframe の置場所にパスが通っていないのでは?
今作っているプロジェクトと同じフォルダに入れれば解決するかと。
IDEにインストールしないといけないんじゃなかった?
>>212 すべて同じフォルダに入っています。
ただ、プロジェクトを作成している途中で参考用に
他のフォルダに入っている別のプロジェクトのpasを開いて閉じたりはしていました。
その辺りで何かプログラムの方で混乱が起きたのでしょうか?
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 できました。
フルパスだと他のPCで利用できないのでは……と思っていたのですが、
自分の位置を取得してフルパスにすればいいのだと気づきました。
ありがとうございます。
218 :
166 :2011/08/14(日) 13:49:33.41
>>183 >>184 遅くてすまない
OnValidateは数値の桁数オーバーなら拾えそうだが
文字を貼り付けたりするとやっぱりイベント発生前にエラー出るんだな
OnEditErrorは発生しない
ConstraintErrorMessageを設定しといても変わらなかった 謎
スパイ系のツールってなに使ってる?
MS謹製
それってフリーで落とせるのけ? ていうか、昔のdelに付いてた奴って7とかでも通用すんの?
Delphi2010を使用しています class destructor Destroy; をprivate節に置くと、コンパイル時に警告「一度も呼ばれることのないメソッド」が発生するのですが、これはなぜなんでしょうか。 class constructor/destructorはコードから呼ぶものではなくて、initialization/finalization的な呼ばれかたをするものだという感じのことがヘルプに書いているのに…。 constructorのほうは、このような警告が表示されません。
デストラクタ ってclassメソッドに出来たっけ? もし出来たとしてどんな意味があるんだろ? インスタンスオブジェクトに対して廃棄したいからデストラクタを作るんじゃないとしたら、どういう時に呼ぶの? どっちにしても、誰かが明示的に呼ばないとそのコードは呼ばれないのだから 一度も呼んでないならそのメッセージが出て当然だと思うが 普通は Free メソッドの中で呼ぶから destructor Destroy; override; となる筈
コード自体はちゃんと呼び出されてるなら 単にコンパイラの警告のバグなんじゃね 関係ないけど case a of 0: x:=0; else x:=0; end; でxは初期化されませんと怒られたことがあったな
何をしたいのか判らないけど、作法としては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;
>>226 × クラスconstructorは、該当クラスのpasが参照された時点で呼ばれる そもそもコントラクタは本質的にクラスメソッドと同じでクラス参照で呼び出してるでしょ? ×クラスdestructorは、該当クラスのpasがどこからも参照されなくなった時点で呼ばれる そのpas ファイルのコンストラクタ・デストラクタ相当は initialization 初期化部 finalization 終了処理部 で行うのが普通 で、どこからも参照されなくなった時ではなくて、実行ファイル開始時と終了時なわけだけど
どっかのバージョンで追加された クラス コンストラクタ クラスデストラクタの機能だね
>クラス コンストラクタの呼び出しは、そのクラスが定義されているユニットの initialization セクションに、コンパイラが自動的に挿入します。 通
>クラス デストラクタには、目的が終了処理であるという点以外は、クラス コンストラクタと同じ
だから、
>>226 さんの理解で正しいけど Delphiを主に使ってる人は下位互換を気にしてあまり使わないかも。
他言語からの移植を楽にする機能ってところでしょ
class constructor/destructorを知らない奴はせめてググれよ 俺はこれに対応したDelphiを持ってないんで詳しい挙動は知らんけどね ちなみに俺はinitialization/finalizationよりこれを使ったほうが見やすい、それだけだと理解してる でもクラスが使われてないときにはこいつらは呼ばれない、とかあるかもね
いくら超初心者用スレとはいえ、質問に答える側の知識も超初心者だと質問者が可哀想だなw
>>226 試してみたけど単純なクラスでも同じ症状が出たから、ほぼバグと見て間違いないと思うよ
一度も呼ばれないprotectedなメソッドが、プロジェクト内のどこでも使われていなくてもヒント出ないように、
可視性がprivateになっているものは明示的な参照が無い限り一律でヒント出すようになってるんだろうね
出るメッセージも警告じゃなくてヒントだよね?ヒントなら問題がなければ気にしなくていいはず
あと呼び出しのタイミングの理解は間違ってる
まずプログラム内のどこかでクラスが使われていなければ、
いくらusesしていてもクラスコンストラクタもデストラクタも呼ばれない
使われてる場合、クラスコンストラクタは参照されている位置に関係なくプログラムの初期化時に呼ばれる
この時の呼び出しの順番はusesの記述順に依存する
クラスデストラクタも同様だけど、タイミングはプログラム終了時で、呼び出し順はクラスコンストラクタとは逆になる
オーバーライドもわからない人はオブジェクト指向を1から勉強し直せ
>>231 class constructor の存在を知らずに間の抜けた回答をし続けた方ですか?
デストラクタは必ずしもプログラム終了時に処理されるものじゃないよ むしろ、そうさせないためにオーバーライドして使う 質問者が言ってるのは、意図したタイミングでデストラクタが呼ばれないってことだろ? わざわざ特殊なやり方をして、処理されず困ってるなんて意味わからん 基本に戻れ基本に
>>225 も結構アホなこと言ってるよな
「TObject継承なら」とか「完全自作クラス」とか。
DelphiはどうやってもTObject継承のクラスしか作れないんだが。
>>233 TNoob = class abstract
public
class constructor Create;
class destructor Destroy;
end experimental;
こういう書き方がちゃんとコンパイルできるバージョンで試してから発言して下さいね、時代遅れさん
237 :
222 :2011/08/17(水) 22:32:58.34
すみません、なんか色々とひっかき回してしまったみたいで…。 たとえば、あるクラスでしか外部DLLの関数を使わないとした場合、通常のコンストラクタ/デストラクタに書くと、その度に関数ロード/開放するのって微妙かなぁ?と思いました。 かといってグローバル要素を使うのもためらわれまして。 で、色々調べてみたら、classコンストラクタ/デストラクタっていうのがあるってのを知ったもので、じゃあここに書けばいいじゃない、って感じで使おうとしたんです。 ヘルプを読んだら、明示的に呼ばなくても自動的に呼ばれる、みたいなことが書いてあるし、いいじゃんって思って使ったんですが…。 そしたらprivateでなんかメッセージが出たから、何か解釈間違っていたかなあ?と思って質問した次第です。 すみませんでした。
238 :
222 :2011/08/17(水) 22:47:28.53
レス、全部読ませて頂きました。
実際呼ばれるのにヒント出るのはヘンだと思ったんですが、とりあえず、
>>230 さんのおっしゃるように
Delphi側の不具合、ということで一件落着しようと思います。
みなさん、どうもありがとうございました!
クラスコンストラクタとクラスデストラクタはそもそも明示的に呼べないけどね
>>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のクラスデストラクタだけで
ヒント(警告?)が出るのが気になるのでお願いします。
>>240 はい、出ます。
class destructor Destroyの位置だけが問題のようなので。
そうですか、有難う御座います。 embarcaderoのサンプルソースですらヒントが出るんですね。 ちょっと驚きです。
docwikiは平気で間違ったこと書いてるのでしょうがないかと。 最近だとTStopwatchクラスの挙動が実際の処理と全く違うことが書いてあると某所で話題になりましたし。
警告メッセージが出るのが嫌だって話? それ以外はまったく問題なし? アホすぎる・・・・・
>>236 なんか特定のコードを見つけたら置き換えてしまうようだけど?
>>244 元の質問は出るのが嫌とかじゃなくて、出るはずのない場所で警告される理由を聞いてるだけですよ
日本語が読めない在日さんですか?意思の疎通もできない人は早く国に帰って下さいね
DQN の日本人よりは生まれも育ちも日本の在日のほうが優秀だぞ
捏造技術だけは世界的に見ても優秀ですね
質問と関係ないですが、一応初心者スレなので補足してみます。(個人的な解釈です)
クラスコンストラクタ/クラスデストラクタの主要な用途は
クラスフィールドの作成(フィールドがオブジェクトの場合)・初期化と破棄などを行います。
通常はinitialization/finalizationでも代用できますが
(privateで宣言されたフィールドでも操作できるのは、私はDelphiの欠点だと思っていますが)
新しいバージョンのDelphiでは、よりオブジェクト指向に準拠したstrict privateが使用可能になりました。
これでクラスフィールドを定義した場合initialization/finalizationでは操作出来ません。
クラスコンストラクタ/クラスデストラクタのみが唯一操作出来ます。
>>225 ,227さんなど、バージョンの古いDelphi(7以前)を使用している人?は、クラスメソッドに対しては知識があって
クラスフィールドやstrict privateなどに対してをあまり認識がないので混乱しているのではないですかね?
それは少し違いますね 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を代用することでオブジェクト指向に
弊害が出ることの方が問題だと思っています。
もちろんサイズも重要です、実際の現場ではオブジェクト指向よりも実物が大事にされますから。
相変わらず簡単な質問が簡単に終わらないスレだねw
>>252 class constructor/class destructorは仮想にできないので、
継承した場合はあなたのいうinitialization/finalizationと同じ問題が発生するけど?
クラスフィールドはグローバル変数の構文糖に過ぎないから、
継承したってプログラム中に存在するのはたったひとつだけどその点理解してる?
privateフィールドが読める=オブジェクト指向的ではない、
というあなたの考えも教科書的に言えば正解だけど、実は大きな勘違いをしてるよね
そもそも同一ユニット内でクラス間のprivateフィールドが読めるのはDelphiの設計に由来してる
DelphiはC/C++のような二重インクルード問題が無くなった代わりに、循環参照問題が発生した
だからこれを回避するためにはあらゆるクラスを同じユニットに詰め込む必要があった
さらにDelphiのユニットはinterfaceとimplementationという二つのブロックに分かれることで、
クラスのprivateやpublicによるアクセス制御とは別のカプセル化が可能になってる
だからクラス間でprivateフィールドを参照できても、ユニットを外から見た分には十分隠蔽できてるわけ
つまりオブジェクト指向的にも問題ない
教科書通りのオブジェクト指向はこういった二重のカプセル化を考慮してないので
そういう典型的なオブジェクト指向しか知らないと、あなたのような勘違いが生まれるんじゃないかな
プライベートが触れるのはDelphiでは普通だと思うよ。 設計者が意図してそうしたんだし、VCL内でも触れるのが前提のコードが腐るほどある。 多くの名著と呼ばれる本でも通常のテクニックとして使われてる。 自分の信念が何だろうと本来Delphiはそういう作法なんだよ。
つうか激しくどうでもいい。元質問の答は出てるんだし、ぼくのかんがえたさいきょうのおはなしは他でやってくれんかね。
Delphi XE のプログレスバー TProgressBar の Smooth を True にしても 「滑らかなバー」にならないんですが、仕様なんでしょうか? BarColor も BackgroundColor も変えられないんです。
Windowsの見てくれをクラシックにしないと反映されないみたいだ もう死に機能っぽい
259 :
257 :2011/08/19(金) 10:40:58.60
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 さんみたいな初心者の方には分かりにくい議論だと思うので別の機会で。
一体何をどう頑張りたがっているのかさっぱりわからん
日本人のふりをした中国人が書いているとしか思えない
どうでもいいですよ
認めたか。 三国人は国にカエレ!
>267 なにしにきたの?
 ̄ ̄ ̄ ̄ ̄ ̄ ̄l/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ∧_∧ ( ´・ω・`) ∧_∧ / \ ( )何言ってんだこいつ .__| | .| |_ / ヽ ||\  ̄ ̄ ̄ ̄ / .| | | ||\..∧_∧ (⌒\|__./ ./ ||. ( ) ~\_____ノ| ∧_∧ / ヽ 空気読めよ \| ( ) | ヽ \/ ヽ. オマエ馬鹿だろ | |ヽ、二⌒) / .| | | .| ヽ \∧_∧ (⌒\|__./ /
TTimerで、あるタイミングでTimer1.Enabled := Falseにするのですが、 Falseにする前にWM_TIMERメッセージが既にポストされてると、OnTimerイベントが 発生しちゃうでしょうか?
Enableじゃなくて、OnTimer := nilすることにしました。
250はいったい何を伝えたいのか分からない 仮想メソッドは継承先で振るまいが変わるので初心者には難しいとか言ってるオッサンと同レベル
クラス変数を継承先が好き勝手書き換えるという設計がそもそも糞だけど、 それをクラスコンストラクタでやっちゃう場合、継承クラスが定義されたユニットをusesに書く順によって 呼ばれるクラスコンストラクタの順番が変わるので、initializationで初期化するよりよっぽどカオスになる 250はそのことを理解してない馬鹿
大事なことなので2回書きました たった4分で2回も書きました
>>270 最近そういうの追いかけるの嫌だから、1ワードのフラグたててセマファで管理してる
いちいち
if flag then exit
flag:=True;
try
・・・・
finally flag:=false end;
みたいに書くの面倒だけどさ
TImer イベントの冒頭で Timer1.Enabled をチェックしたら?
それか、 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はそのことを理解してない馬鹿
これは間違いです。継承先のクラスが継承元のクラスより先に実行されることはありません。
継承順にクラスコンストラクタは実行されます。これはオブジェクト指向の基本なので
初級レベルでいいのでオブジェクト指向の勉強された方がいいと思いますよ。
サブクラスが複数あってそれぞれ別のユニットになってたらどうなるの? もしかして全く考慮してなかったの?馬鹿なの?
自分の頭の悪い説を正当化しようとしたあまり 継承は何段階でも何個でもできるということに頭がまわらず、 基底クラスとその派生クラスが1つのみという特殊なケースしか考えてなかったんだろ 初心者が陥りやすいミスだけど、ここ超初心者スレだからしょうがない
281 :
250 :2011/08/23(火) 21:57:08.55
>>279 >サブクラスが複数あってそれぞれ別のユニットになってたらどうなるの?
別のユニットでも同じですね、使われないクラスは実装されないだけですから。
>>280 >継承は何段階でも何個でもできるということに頭がまわらず、
>基底クラスとその派生クラスが1つのみという特殊なケースしか考えてなかったんだろ
クラスの階層が深くなっても問題はないですね、クラスコンストラクタが継承順に実行されるだけですから。
sage
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>など、 クラスがどこで宣言され、使用されてようが、問題ないでしょうか?
つか、ジェネリックインターフェース型IFoo<T> = interfaceも閉じた生成型にGUID 付かないからインターフェースからインターフェースの問い合わせ as,is演算子でできねぇな。しねよ。クソdelphi。
何でもかんでもクラスにする人ってオブジェクト指向をまったく理解してなさそうw
すみません。スレ違いかもしれないのですが 教えてください。 今まで、無償の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 を使っています。
サポートに問い合わせればいいんじゃね?つか今更BDS2006? あとWin7 x64ならXPモードをVMware Playerで動かしてそこに入れるほうがよいかと。
289 :
286 :2011/08/28(日) 08:32:05.67
アドバイスありがとうございます。 試してみます。
今度の新しいやつ買う価値有り?
まだわからん
Delphi7 XP環境でしつもんです テキスト状態の日本時間から時差を±した世界各国の日時を出すために 何ヶ月後の日時を出す IncMonth() ような感じで VB の DateAdd にかわるものありますか? 外部コンポーネントでもいいので 時間に±して日をまたげば日を±して、月の境なら月の最大日ごとにまた月を±して、年は〜 で書かないとダメなの?
>>292 TDateTimeに変換してIncHour
uses DateUtils; ---------------- var LocalDateTime :TDate; Uyear〜〜〜 begin 〜〜〜〜 LocalDateTime := EncodeDateTime(Uyear,Umonth,Uday,Utime,Uminute,0,0); LocalDateTime := IncHour(LocalDateTime, Utc); いけましたありがとう!!!
IncHourだとインドやベネズエラの30分誤差に対応できないな
IncSecondで一秒ずつインクリメントしろ低能
0.5/HoursPerDay を加減算した方が誤差蓄積が無いかもな IncHour の2番目の引数浮動小数点渡しにしたのを自作すればいいだけかもしれん
これだけヒント出してやってるのにいい加減気づけよ
うるせーはげ
でもどうして IncHour とか、いったん掛け算してから後で割算するんだろ (A*24 + 1 )/24 と A+1/24 って浮動小数点で計算しても精度違ってくるの? 精度同じだとしたら何かメリットあるのかな
del7でキャプチャーソフトを作ったんだけど質問御願いします。 bitmapで保存するのは速て綺麗、でもサイズがでかい。 del標準のjpegに変換するとサイズは小さいが画像がイマイチ汚い。 保存速度も速くて画像も綺麗なjpegファイルを作るVCLって無いですか? ゴリゴリ一から作る知識もスキルもないです。
CompressionQuality設定すればいいんじゃないの pngのが良さ気な気もするけど
305 :
302 :2011/09/04(日) 14:01:45.17
今、CompressionQualityを設定してテストしてみたのですが、 100に設定した時の画質とCompressionQuality無しの時が同じ 感じでした。 そこでpngを使いたいのですが、TpngimageってDel7には無いのでしょうか? ググったら標準で付いてるっぽい説明が有ったのですが、 自分のにはないみたいなのです。
PngComponentsかGDIPlus
307 :
302 :2011/09/04(日) 14:32:32.57
どちらもないけど。。。 どこからかダウンロードするって事? 俺のDel7がおかしいのか?
何でググらないの?
Delphiプログラミングは外部のライブラリに頼りまくることになるから 何かの機能が欲しくなったら delphi (unit or component) jpeg delphi (unit or component) png とかで検索
ググってたけど標準で備えてあるような感じで書いてある サイトが目立ったから、俺のにはないのかと思ってしまったんだよ。 GDI+で解決しそうです。 ありがと
Delphi 5 Pro を使っています。 システムロケールを知る方法を教えてください。 フォームの日本語をロケールによって他の言語で表示できるようにしたいのです。 よろしくお願いします。
リソースDLLウィザードじゃだめなん?
313 :
311 :2011/09/05(月) 19:18:33.95
あ、すみません、解決しました。 GetUserDefaultLCID() でできました。
それじゃシステムロケールじゃなくてユーザーロケールじゃん
Shake it up Baby
316 :
311 :2011/09/05(月) 22:00:23.44
ああ、GetSystemDefaultLCID() でした。失礼しました。
DelでDDE通信する解説サイトって無い?
delphiXEのProでエクセルって操作できますか? del7にはofficeのVCLがあるのに、自分のXEには見あたらない。
>>317 昔、株関連のサイトですごく判りやすい解説を読んだ。お陰で
楽天証券経由で株を自動売買するソフトを作ることができた。
322 :
320 :2011/09/08(木) 20:27:03.08
>>321 DelでDDE通信ってことは、株の自動売買以外にないだろうと思うが?(常考)
それが、以前に勤めてた会社で昔に作ったソフトが DDEでなんかやってるらしくって、仕事もらったんだけど 自分じゃやったことがなくてね。 やってだめなら、それから断ってもいいよって言われたから。 ちなみに楽天でRSSていうのがDDEなのは知ってる。 でも、ぐぐったけどでてきたかなぁ。
ビットマップをdel6でjpegで100で変換した時と photshopでレベル10で保存した時で、delの方が 劣化が酷いんだけど何で? ファイルサイズはほぼ同じ。
コードが違うから 規格が一緒なら変換結果が常に同じになるというわけじゃない 高品質なのが欲しかったら標準にこだわらずさっさと他のライブラリ探せと
一緒だよ
勘違い
自分の常識と世間の常識が必ずしも一致しないということでは?
>>331 まったく意味が判りませんが、別にマジキチでも結構です
お気遣いありがとう、ではではw
うわあ…
>DelでDDE通信ってことは、株の自動売買以外にないだろうと思うが?(常考) そうですね。証券業界ではエクセルでデータを扱う場合には 昔はよくDDEが使われていましたね(まだ残ってはいますが) でも現在ではarrowheadの稼動とかもありRTDが使われていますね。 (arrowhead稼動の前からもDDEの欠点からRTDに移行していましたが、arrowhead稼動でより顕著になりました)
337 :
325 :2011/09/12(月) 00:09:26.11
delのjpegユニット探したら有った。 サンプリングっつうもんが固定で低い?から画像が劣化するらしい。 で、サンプリング上げてやってみたら綺麗なんだけど、時間がかかる。 かかると言っても2,3秒なんだけど。 画像の変換ソフトとかだと、瞬間的? (一般的な感覚で)
del7です。 自作アプリの2台のPCに入れて、一方通行で良いので文章を送って、 受け取って表示みたいな事がしたいのですが、Indyを使わないと 出来ないですか?
Indyが嫌ならその下のWinSockを使えばいいよ。 結局やること同じだけど。 TCP/IPがなんだかわかってれば サンプルも少なくないしそんなに面倒でもないよ。
超手抜きでやりたいならLANの公開フォルダにテキスト突っ込んで それを監視して読み取る
>>339 ありがとうございます。
TCP/IPはよく分かってないんですが、
2つのうち自分が取っつきやすそうな方でやってみます。
>>341 del7のサンプルフォルダに、indyのソケット通信のコードあるから、見てみるといいよ
IndyってOS XやiOSでも動く?
一方にWebサーバ立てて、ブラウザで見ればいいんじゃないの? DELPHIいらないだろ
>>342 ありがとうございます。
見てみます。
>>344 受け取ったら表示とは書きましたが、最終的には外部ソフトに投げるのが
目的です。
そこに突っ込まれるとは思わなかった。w
ServerSocketとClientSocketコンポーネント使え。 インストールCDに入ってるはず。
windows限定なら、メールスロットが簡単だと思うけどな 送る側は '\\相手のパソコン名\mailslot\スロット名' というファイル名で TStrings.SaveToFile するだけ 受信する側は CreateMailslot して 定期的にGetMailslotInfoでポーリングして THandleStream でハンドル開いて TTStrings.LoadFromStream
一方でTHandleStream使うなら、両方ともTHandleStream+TStringStreamの方がよくね?
>>338 アララットシナプスのデモにそういうのあるよ。そのまま使えば?
351 :
338 :2011/09/15(木) 10:47:06.03
おいてけぼりくってます。 (゚Д゚≡゚Д゚)エッナニナニ?
352 :
338 :2011/09/15(木) 11:24:59.90
皆さん、レスありがとうございます。 ちょっと状況が変わりまして、受け取るソフトはDelphiで作るのですが、 送り元のソフトがdelphiで自作ではなくて、Excelから送れないか調べる 必要が出てきました。 ちょっと、エクセルの方へ行ってきます。
net send / msgコマンドでおk
元のソースに影響がないようにプロジェクトのフォルダーをコピーして、 修正しようと思ったのですが元のソースも同じように修正されてしまいます。 一応、「~」が付いているファイルとリソースファイルは削除したのですが、 他に削除するファイルって有りますか? Delphi7を使っています。
絶対パスで元ソースを参照してることがないように コピー先のファイル群に対して"元パス"文字列を検索して ヒットしたファイルを削除するなり変更する
すんません、プログラムの考え方とかアルゴリズムとか どこで聞いたらいいですか?
>>356 Delphiのこと?それならここで。
それともプログラミングまったくの未経験者なの?
358 :
356 :2011/09/16(金) 23:44:22.39
趣味でdelphiを使ってプログラムをしています。 プログラムはスタンドアローンのソフトで簡単なものなら って感じです。 今回株関係のソフトを作りたいのですが、グラフ(チャート) を分析するので考え方とかが質問したいのです。
360 :
356 :2011/09/17(土) 00:40:05.34
ありがとうございます そっち行きます。
上昇トレンドかどうか聞いてるのか、そりゃスレちがいって言われるだろ 株価データがあるのなら、極大点 極小点 (付近より高い、低い点)を出して 今回の極小点が前の極小より大きく、かつ極大点が前の極大より大きい状態が続いているのが上昇トレンド グラフからデータを取り出すのは色別でもしてくれていないと面倒だね
プロジェクトを開いただけでdelphiを終了すると 0xなんたらかんたらの命令が0xなんちゃらのメモリーを参照しました〜 って、出るんだけど何で? 何時も同じプロジェクトで出る
・プロジェクトが壊れてる ・PCが壊れてる ・ユーザが壊れてる
インストール済みカスタムコンポーネントがバグってると 結構簡単にIDEが不安定になる
DCUファイルにデバッグ情報を入れるってどういう事ですか? 入れてどう活用するのでしょうか?
DCUファイルだけでステップ実行とか出来るんじゃないの? 違ってたらゴメン。
DCUファイルだけで実行なんて出来るんですか? ググったけど、それらしい情報が出てこないんで 教えて下さい。
>>368 あと
*.local
*.identcache
*.cbk
があったらこれらも
>>367 通常はVCL/RTLの関数はステップイン(F7)で中に入っていけないけど、
プロジェクトオプションのコンパイラでデバッグ版DCUを使うをONにすると
これらの関数の中にステップインすることができるようになる。これは
VCL/RTLのDCUにデバッグ情報をつけたものが別途存在していて、
これをリンクすることで可能になる。DCUにデバッグ情報をつける、
というのはこのような(後者のような)DCUを作成するということ。
ありがとうございます。 VCL/RTLの中に今まで普通に入っていたので そんなもんかと思ってました。 スッキリしました。
今月中にダウンロード版買えばDVDももらえるらしいけど、 DVD版を買えば良いんじゃないの?
値段がいくらに上がるかご存じ?
DVD版はキャンペーン無しなんだ。
「2011年9月20日」と「2011年9月21日」の文字列で どちらが最新の日付か判断しようとすると 1.TstringListに入れてソートして、Indexの大きい方 2.年、月、日の文字を消して、<とかで比較 が、思い浮かんだんですけど、もっとスマートな 方法ってありますか?
スマートも何も単純な文字列比較じゃ'2011/9/10'>'2011/10/1'なんてことになりかねないから 正規表現等で3つの数値を抽出して上から比較するかTDateTimeに変換するかしかない。
VarToDateTime使えば漢字が使われてても正しくTDateTimeに変換されるんじゃなかったっけ
>>375 「するしかない」って言い方はどうかと思うが
「するしかない」とは書かれてないね 揚げ足取ろうとしたのに自分が揚げ足取られるのもどうかと思うよ
379 :
374 :2011/09/24(土) 08:34:32.26
皆さん、ありがとうございます。 VarToDateTime、便利です。
するめいかしかない
すいかしかない
キー入力を拾う処理を作っています。 Form1.KeyPreview := True; とし OnKeyDown と OnKeyPress で Key を調べていますが ASCII 表と異なる結果が出ます。 Delete は OnKeyPress では検出できず OnKeyDown では 127(0x7F) ではなく 46(0x2E) と出ます。 @ は OnKeyPress ではちゃんと 64(0x40) と出ますが OnKeyDown では 192 になります。 印刷可能文字以外も ASCII の通りに検出したいのですが良い方法はありませんか? ちなみに環境は Win7, Del5 で富士通のノートパソコンです。
>>382 俺は使い方をよく知らんのだけど、Ascとかord は?
Windows.pasをVK_で検索するといいよ
winsightというかAPIの質問になってしまうかもしれないのですが、 見た目、ボタンが並んでいるパネルなのにwinsightで見ても、 ボタン1つ1つのハンドルはでていなくて、パネルのハンドルしか 並んでいない場合、delphiから任意のボタンにクリックメッセージを 投げたい時はどうすればいいのでしょうか?
そのパネルにWM_MBUTTONDOWN で 座標を変更しながら送って反応を見てみたら?
>>388 レス、ありがとうございます。
教えてもらった事はまだ試していないのですが、
ボタンが並んでるパネルがスライド式で、隠れている場合の
対処方法はあるのでしょうか?
試してから言えよ
はい、では、明日質問します。
あれ?
>>388 は 真ん中のボタンだ。 左ボタンはWM_LBUTTONDOWN ね
wh := FindWindow でもしてそのパネルを捕まえたら
パネル上のボタンの位置だけずらしたx,yで
PostMessage(wh, WM_LBUTTONDOWN, x, y);
Sleep(100);
PostMessage(wh, WM_LBUTTONUP, x, y);
パネルにボタンの絵を描いてボタンが複数あるように見せるとか
グリッドの入力で1つのEDITを移動させて使うとか
昔は窓ハンドルを抑えるために工夫したみたいね。
>>387 そのボタンはリソースを持たないボタンではないですか?
(TSpeedButtonとかTGraphicControlより継承されたコンポーネントとかでは?)
試してないのではっきりとは言えませんが、多分winsightにも出なかったようね気がします。
>並んでいない場合、delphiから任意のボタンにクリックメッセージを
>投げたい時はどうすればいいのでしょうか?
一般的なWin32アプリの作りとして、SpeedButtonはメニューにも
同等の機能があるのでそちらを呼んでみては?
一般的なWin32アプリの作りとして、キーボードのみ(マウスなし)でも
操作出来るように作るので、フォーカスがないSpeedButtonは代替の機能があるはずです。
間抜けな話なんですが、本職のプログラマーではなく 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])がなぜ許されるのかが分からないのです。 間抜けな話ですが、教えて下さい。
ポインタの勉強しなおせ
CheckListBox1.Items.Objects[]にAllocMemしたTHogeHogeのアドレスを入れてあるんじゃねーの?
.Items.Objects[0] は TObject 型を返すのだけど オブジェクト形というのは中身は常にポインタ。使うときに参照される。 だからレコードのポインタと同じサイズなんで無理やり使っても物理的には問題ない もっと酷い人になると Items.Object[]に無理に整数型を入れて使う人もいる。
別に酷くはない 基本的にTagとかObjects[]とかDataとかはそうやって使うもんだし
400 :
394 :2011/09/28(水) 19:16:25.94
みなさん、ありがとうございます。 ポインタをググって調べたのですが、 PHogeHoge(CheckListBox1.Items.Objects[0]).DataList.Add(s); は、ポインタの位置をCheckListBox1.Items.Objects[0]によって指定しているという 解釈でよろしいでしょうか?
ポインタの位置って何よ
>>400 いいけど言葉を正確に使うならポインタそのものが何かの位置を示すものだから「ポインタの位置」というのはおかしい。
>>400 「ポインタ」は入れ物。入っているのは「アドレス」。Objects[]にはアドレスが格納されていて、
そのアドレスが指す先がTHogeHogeレコード型になっている。
ぐぐってわかるぐらいならプログラマなんていらないよ
405 :
394 :2011/09/28(水) 21:19:32.92
皆さん、ありがとうございます。
Objects[0]が示すアドレスにあるTHogeHogeのDataListに
「s」を追加しているって事ですね?
どこからこんな書き方探してきたんだろう。
ポインタを使う時はDelphiでは一般的なんですか?
>>404 そんなくだらない事言っていたらダメだよ。
良い事も悪い事も全部自分に返ってくるんだから。
>>402 ,403
何か言っている事がおかしいような気がする。
>>405 × ポインタを使う時はDelphiでは一般的なんですか?
○ ポインタを使う時に今回のような書き方って、Delphiでは一般的なんでしょうか?
Delphi使いによる優しい日本語講座
ググってコピペったソースを理解できずに困ったでござるの巻、か
楽天証券のRSSを使いたいんだがTDdeClientConvに銘柄コードと市場、 TDDEClientItemに取得したい項目を書けばいいの? TDdeClientConvにt「7203.」 TDDEClientItemに「現在値」 TDDEClientItemを増やして、TDdeClientConvに 結びつければ複数項目同時に取得できるってことでおk?
DELのXEでツールバーに Secondsとか出てるのって何?
AQTime
Del7で今までデスクトップで使っていたのを ノートでもそのまま環境を移して使う方法を 教えて下さい。 カスタムコンポーネントはCustom.dpkと言うのを作って 登録するようにしています。 ライブラリパスは、今のをコピペすれば簡単に通せると思うのですが、 コンポーネントの再登録を簡単にするにはどうすればいいでしょうか?
自分の書き込みの中に答えがあるではないか
>>415 多分、Custom.dpkをインストールすればいいじゃんと言うことだと思うのですが、
[エラー] 自動構築されないパッケージ 'custom' が常に構築対象となるパッケージ 'dclusr' を要求しています
と出てしまって出来ないのです。
小出しよくない
>>416 requiredからdclusrを外す
Del7で 今フォーム数が1500個くらいのシステムを整理しています 現状1フォルダになっているので、機能単位にフォルダ分けして コンパイルを通る作業をしていますが、 例えば商品マスタ参照みたいな汎用画面が、修正機能付与等で 実質100画面くらい内包外包しているとします 他のプロジェクトで商品マスタ画面を参照したいだけなのに usesすると他の100画面もプロジェクトマネージャに パス解決登録せざるを得ないのをさける方法はありますでしょうか (プロジェクトの検索パス指定以外の方法をお聞かせください 問題画面が1つだけではないので検索パスが指定しきれません) (implementationのusesでパス指定できれば解決なんだけどだめみたい) Del3以来になります。よろしくお願いします
UnitAを別のプロジェクトに取り込むとUnitAがusesしてるUnitA1,UnitA2,UnitA3...が 全部必要になるとかそういう話?そりゃ作りを変えなきゃだめだろうねぇ。
>>420 ありがとうございます
問題画面をDLL化するくらいしかないですかね?
XEとかだとプロジェクトグループusesみたいなの
あるんですかね
パッケージにしたら?
>>422 おお、パッケージってありましたね
外包画面もあるので単純にはいかない気もしますが試してみます
ありがとうございます
ListviewをvsReport形式でデータをプログラムから 入力して表示することは出来たのですが、 例えば、2行目の左から3,4,5番目の文字列を プログラム上から変更するにはどうすればいいですか? TItemに列指定があると思ったのですが、ヘルプ見てもよく分からなかったです。
SubStrings
>>424 ちなみに、Listviewは件数が多くなると極端に遅くなるので
最初から仮想リストビューで作ったほうがいいですよ。
procedure TForm1.ListView1Data(Sender: TObject; Item: TListItem);
begin
Item.Caption:='1カラム目';
Item.SubItems.Add('2カラム目');
end;
>>422 ありがとうございました
パッケージでほぼ理想の形で管理できそうです
楽天証券のRSSというツールがあって DDEが使えれば自作が出来るというので 作っています。 マルチスレッドを使ってDDE通信させようと テストしていたのですが、スレッドのCreateの 中で、DDECliantCnvとCliantItemを動的に作成 すると通信するのですが、同じプログラムをExecute の中で実行すると通信しません。 楽天RSSのスレでは、DDEはUIの中でやるものと 教えてもらって、そうするつもりではいるのですが、 CreateとExecuteで何故違うのでしょう。
読んで字のごとく 生成、実行
>>430 > 読んで字のごとく
> 生成、実行
早速のレス、ありがとうございます。
何故と言う言葉の意味分かりますか?
>>431 喧嘩売ると答えてもらえると思ったんですか?
何やってんだか…
喧嘩売ったのはそっち 軽くからかったつもりが、ちょっときつめに 言われたら、あわわわってw
DDEのコンポーネントは使いまわすとうまく動かなくて都度生成破棄が正解だった気が
>>435 ありがとうございます。
その都度、生成破棄しているのですがCreateでは何回でも接続できるのです。
RSSというツールは接続数に300という上限があるのですが、
生成破棄しているので、3000以上の株銘柄分接続は出来ます。
同じプログラムをExecuteで実行すると、一つも接続できないので質問しました。
>>429 CreateとExecuteの違いは、Createではまだマルチスレッドになっていないと思いますが。
たしかDelphiのDDEは非同期だったような気がしますが?
その場合でもスレッドは必要ですか?
>>437 そういうことですか。
ありがとうございます。
DDEの接続時に時間が掛かるので、
スレッドを五つくらいに分けられたらなと
考えました。
一度接続してしまえば、ホットリンクとかしなくても
そこそこ反応は良いので、そんなに気にすることもないのですが、
見た目の問題というか、ちょっと気になって何日もグダグダやってました。
だっさw
だっさw
何度もご苦労w
ウンコチンチーン
人口少ないんだからけんかすんなよ ほとんどの人は社会人なんだから 聞く方は下手下手でいこうね
どっちもどっち。 仕掛けた方のレスが幼稚だけどね それに反応するなって話だわ
でーでーいーー
今、質問しても良い?
いいよ
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みたいなので 管理した場合の捨て方ってどうすればいい?
TObjectListでコンストラクタのパラメータにTrueを指定。こいつに作ったクラスのインスタンスを保持させる。
TObjectList もしくは、IInterfaceを実装してるなら、TInterfaceList あと、バージョンぐらい書こうぜ、な。
初心者で練習用ならfreeしなくてOK。.NET使おうぜ
XE2ってiosソフトをXE単体では作れないのね。 興奮して損した
454 :
453 :2011/10/07(金) 09:21:23.48
XE2で本田さんのiniファイルやレジストリを 扱うコンポーネントみたいなのってありますか?
>>451 > TObjectList
> もしくは、IInterfaceを実装してるなら、TInterfaceList
>
> あと、バージョンぐらい書こうぜ、な。
>
すんません
>>455 謝れって言ってるんじゃなくて書けって言ってるのが分からない?
バージョンによって対応方法が違うでしょ?新しい方が機能も豊富なわけだし
すみません。もういいです。 > 456
Delphi(デルファイ)について、他のスレッドでは書き込めない超低レベル、 もしくは質問者自身何が何だか分からない質問を 勇気を持って書き込むスレッドです。 Delphi使いが優しくコメントを返しますが お礼はDelphiの布教と初心者の救済をお願いします。
すみません。もういいです。 > 458
460 :
447 :2011/10/08(土) 00:35:57.28
仕事ならともかく、趣味でやる人で XEとか買う人いるんかね。
462 :
447 :2011/10/08(土) 03:03:02.04
もう結構です。 >461
463 :
447 :2011/10/08(土) 03:08:29.16
もう結構です。 >462
Delphi 使い=糞
バージョンD7 ソフトAからソフトBを起動させる時に、状況に応じて1とか2とか数字を 送って、ソフトBで受け取るというとこをしたいしたいのだけどどうすればいいてすか?
起動オプション? "softB -1"みたいに
467 :
447 :2011/10/08(土) 09:56:03.36
A が c:\ にファイルを書いて B がずっと監視する。ってのが確実
>>461 TurboPascalやってた人やDelphi6辺りで知った人が趣味で買ってる例は結構あるみたいだね
TurboPascalを見ても分かるように時代が古いから、使用者の年齢層も高くて比較的楽に買える人も多いし
知り合いには60過ぎで趣味でDelphi使ってる人がいるよ
60過ぎが個人で何のプログラムを作るんだい? 使っている。と思っているだけだろう? 年寄りはためた金使い切ってとっとと死んでください。 俺たちの未来はお前たちのものではない。
>>466-467 dです。
ファイルを書くのが単純で確実そうですね。
起動オプションはググってきます。
無いだろうなw
会社のサーバーからデータを取ってきて表示するツールを作りました。 今回、データの種類別にツールを単独で作って、表示だけをする アプリで各ツールからデータを取ってきてオペレーターの希望するデータを 表示するというものにしました。 そのこと自体は何とか出来たのですが、データを取ってくるツールは FormにIndyがあるだけです。 起動するとタスクバーにずらずらと起動させたアプリが並んで、 なんかみっともない感じがするので、データだけを取ってくるアプリは オペレーターから見られないように起動させることは可能でしょうか? 起動、終了は表示するアプリが親になってやっています。 環境、Delphi7pro、windowsXpsp3です。
可能ですね
どうすれば?
フォームがいらないってことでしょ? コンソールアプリにすればいいじゃん 一番スマートなのはDLLかな
SHowInTaskBar:= False
>>476 コンソールアプリにしただけだとIndy動かないよ
ホームに貼る代わりに自分でCreateすればいいだけじゃねーの?
もしそれを指してるならIndyが動かないじゃなくてIndyが使えないと書いてるだろうね
Delphi 7 での時間の計算に関して教えて下さい。 8時から17時までが何時間かという計算は、 ヘルプを見て分かったのですが、この答えから さらに、1時間を引くのにはどうすればいいのでしょうか。 今は8時から9時までの1時間を計算しておいて、引くように していますが、もっと単純なやり方を教えて下さい。
これでどうですか? procedure TForm1.Button1Click(Sender: TObject); begin ShowMessage(FormatDateTime('HH:MM:SS', VarToDateTime('17:00:00') - VarToDateTime('08:00:00') - VarToDateTime('01:00:00'))); end;
>>482 おお!ありがとうございます。
普通の数字での計算みたいに考えて良いんですね。
DateTimeの正体はdouble
>>481 DateUtilsにその辺の操作関数が全部入ってるよ
確か、DateTimeの中身がdoubleで1.0が1日分だったような気がするから DateTime(17時) - DateTime(8時) - 1 / 24 ってやればよかった気がする
中身弄らずにIncHour使え
488 :
481 :2011/10/12(水) 00:52:01.39
皆さんありがとうございます。 日時を扱うのは初めてで、ヘルプは見るのですが どう記述すればいいかが分からなくて、 何となくおっくうになってしまいます。w また、よろしく御願いします。
「リストのインデックスを超えています」ってエラーがでるんだけど、 エラー箇所の特定が出来ずにはまっています。 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をしているので書きました。 イミフな文章すいません。
>>489 ステップ実行で特定出来ないんですか?
例外が発生したアドレスは分かりますよね?
そのアドレスから調べたらどうですか?
[表示]→[デバッグ]→[モジュール]
エラーメッセージにアドレスが無い場合は、ExceptAddrを
ApplicationEventsExceptionで表示するとか。
あと、画面作成中に例外が拾えないのなら
プロジェクトファイル(dpr)やどのかのinitializationで発生しているとかはないですかね?
デバッグ起動すれば一発だろ
try〜exceptはデバッグのための機能ではないと思うんだ
Delphi(デルファイ)について、他のスレッドでは書き込めない超低レベル、 もしくは質問者自身何が何だか分からない質問を 勇気を持って書き込むスレッドです。 Delphi使いが優しくコメントを返しますが お礼はDelphiの布教と初心者の救済をお願いします。
>>489 ソースうpしろよ。慣れた人のソース読むだけでバグ発見能力ははんぱじゃないから
>>495 そんなもん貼る暇があったらお前が教えてやれよw
そこは質問者本人が貼った可能性も頭に入れておかないと
>>489 起動時なのか、なにかボタンなりを押した時なのか、その辺もっと詳細な情報をだして。
初心者が一番陥りやすいのが要らない行を Delete する時に for i:=0 to Count-1 do でしてしまうことだと思う そこは downto で最下段から あ、もしかして超初心者ならこの可能性もあり for i:=0 to Count do
文字列sが改行コード(や#0..#19すべて)を含む文字列の場合に MyStrings.Add(s) ss := MyStrings[n] したして問題ない事って保証されてますか? MyStrings2.Text := MyStrings.Text したりするとリストの要素が変わってしまうんでしょうけどそれ以外で。
明文化された記述はないけれど、 DOS 時代なら保証されていたと思うが、 ほとんどすべての Windows API が(C 系の RTL を使っているため) 0 を文字列終端として 扱うため、Delphi RTL としては「保証」はされなくなったはず。
>>502 保証はないけど、実装からみて問題ない。Delphiの長い文字列はNUL終端文字列ではないから。
Textプロパティは文字列の内容を解釈するんで当然駄目だけど、Strings[]は内容を見ない。
保証はない。以上。
>>489 コンパイルオプションで「最適化」をオフにするのと、実行時エラーやデバッグオプション
を全部オンにしてから、プロジェクトを再構築する
最適化がかかったままだとデバッガがまともに動かない
えっ
コンパイルオプションはデフォルトが基本って中村師匠が言ってた
Delphi(デルファイ)について、他のスレッドでは書き込めない超低レベル、 もしくは質問者自身何が何だか分からない質問を 勇気を持って書き込むスレッドです。 Delphi使いが優しくコメントを返しますが お礼はDelphiの布教と初心者の救済をお願いします。
7からeX2に変えたんだけど、64bitアプリ作るならいいけど、 作らないなら必要なかったな。 買う価値と言ったらゼスチャーくらいか
独り言はチラシの裏へ
eX2 ゼスチャー
SimpleRoundToについて教えて下さい。 a:double; a:=SimpleRoundTo(0.5,2); だと、「0」が入って s:string; s:=FloattoStr(SimpleRoundTo(0.5,2)); だと、「1」が入るんですが、これってstringを返すんですか?
普通に'0'が入るが
すみません、間違えました。 a:=SimpleRoundTo(0.5,0); です。 この場合って切り上げられて「1」になると思ったんですが、 違いますか?
ありがとうございます。 SetRoundMode 関数を使って明示的に 使うんですね。
つうか Trunc(x+0.5)とかやろ普通
そうなんですか、ありがとうございます。
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関数も上野を見てやってみたんですが、 別に小数部分が変わるようでもないみたいですし、 よろしくお願いします。
Frac関数使って出来ました。 お騒がせしました。
> Truncを使ったら、1が0とか50が49とかになるので おかしいだろそれ 何か壮大に勘違いしてる可能性が高い
525 :
521 :2011/10/16(日) 18:21:18.34
上のスレ見てSetRoundMode 関数を いじってみたりしたんですが関係ないですか?
>Truncを使ったら、1が0とか50が49とかになるので 無駄なレスしてないでソースを上から下まで全部コピペして書けよ
命令される覚えはないんですが
じゃあがんばって思い通りに動くようDelphiに命令してね
>Truncを使ったら、1が0とか50が49とかになるので コンパイラのせいにしてるから怒られてるんだよw
作ったアプリをバージョンアップさせる場合のソースファイルの 管理ってどうやってますか? 改造する時にフォルダーごとコピーして、元のフォルダーの 名前を変更して元フォルダー内のソースファイルに変更が されないようにしているのですが、正規の方法みたいなものが あるのでしょうか?
すみません、バージョン書いてなかった。 Delphi7Proですが、管理システムがあるのですか? プロジェクトメニューのオプション画面ですか?
Subversionとかgitとか外部のアプリを使う
個人ならTortoiseSVNが楽かも あとはそれと併用してpdumpfs 前者は明示的にver1.0.1と言ったタグを付けて あとから好きなバージョンを取り出したり差分を表示したりするもので 後者は毎日問答無用でスナップショットを取っていき 日付単位で元に戻したりできる
>>530 >改造する時にフォルダーごとコピー
一人なら、それで良いと思いますよ、
バージョン管理のツールはバージョン管理に
コストをかけない為にあるものなので
変にツールを導入してコストが掛かるのなら
普通にコピーがいいです。
複数人で行う時以外は、バージョン管理は深く考えない方がいいですよ。
ありがとう。 TortoiseSVNをググって見ます。
>>536 技術者なら知ってて当然の事だし
一人で使っても超便利なのでおすすめです
なんだ、また自作自演か。
そうなんですか、ありがとうございます。
名前かメール欄にキーワード入れるとIDが出るとかならんのかね
自演って何のこと?ここ最近で変な書き込みなんて見てないんだが
>>536 フォルダコピーが文化として定着しているのなら、各フォルダに管理情報を置くSubversionよりもルートに一つだけ置く
gitのほうがいいかもしれない。
Linux環境でレポジトリを共有する場合は、文字コードの問題があるけど、windows単体なら、多分問題ないのかな。
bazaar使いの俺にはよく分からんとです。
ブラウザで表示してキャッシュを漁るほうがてっとり早い
>>544 その程度のIQで株に手を出さないほうがいいと思う
自動株取引を研究して儲かりそうだったら、株始めようと思ったけど
なかなかうまくいかなかった
>>542 Subversion 1.7.0からルートに一つになったらしい
Delphi XEでコードとフォームを同時に表示するのって出来ますか? Classic Undockはそうならない上に コンポーネントパレットが使いにくい以前のものに戻ってしまいました。
>>547 おお!マジですか。
DVCSはなかなか薦めにくいけど、Subversionは枯れてるから、またトライしてもらうかな?
>>546 ヤフーからは時系列データを落としてデータ作ってるんだけど、
分割調整後の終値しかないからイマイチなんだ。
始値とかも計算させれば良いんだけど、細かい誤差が
出てしまうから。
JavScript ダウンロードでググってもあんまりヒットしないし。
自動売買は駄目だよ。
何でそんなことやりたいか分からない。
証券会社だって自動じゃないよ。
アルゴで売買タイミングや仕掛けを通知するだけ。
それくらい分からなきゃ、時間の無駄だよ。
そりゃ「JavScript」じゃ引っかからないだろうな
やっぱIQ低いな、おれ
>>550 その程度のIQで株に手を出さないほうがいいと思う
>>553 そんなに必死になるな。
オリンパス良いぞ
>>554 その程度のIQでオリンパスに手を出さないほうがいいと思う
馬鹿だなぁ、昨日売って大引けで買い戻し。 儲かったけど、怖すぎw
それと目的のものは出来た。 分かったら簡単だった。w
その程度のIQで株に手を出さないほうがいいと思う
だんだん、広がってるじゃねーかwww
その程度のIQで株に手を出さないほうがいいと思う
idが無いだけで人はこうなるのか
その程度のIQでIDに手を出さないほうがいいと思う
エクレアの話しようず
その程度のIQでエクレアに手を出さないほうがいいと思う
新しいDelphiでiOSソフトの作り方おしえて。 最初にゆっとくけどIQ高いよ
>>565 ゆっとくけど
ゆっとくけど
ゆっとくけど
ゆっとく
ゆっとく
ゆっとく
ゆう
ゆう
ゆう
>>557 URLが変わらないこととJavascriptは無関係であるのに気付いたか。
良かったな。
>>565 Lua iOS で検索してみるとよいよ
>>566 ゆうちゃんはパソコンの大先生だからIQ高いに決まってんだろボケ
あるメニューを選択したとき コンボボックスComboBox1.ItemIndex + 1 が選択されているときと 同じ動作をさせるには どうすればいいですか。
できました。ありがとうございます。
やっぱりズボンだったのか
新しいのをキャンペーン中に買ったんだけど、 DVDって勝手に送られてくるの?
ありがと、今手続きした。
お礼よりブツよこせ
わかった 尻洗って待ってろ
delphi xeで無効になっているブロックをコメント表示にすることってできませんか? {$define XXX} {$ifdef XXX} 普通に表示 {$else} コメント表示 {$endif} てな感じで‥define消したら表示が切り替わるような
何がしたいのか分からない
$IFDEFとかで無効になる側をIDEでコメント扱いにして表示してほしいってこってしょ? できません。
Del7かEX2でエクセルのセルみたいに一升毎に色を塗れる VCLってありますか? ストリンググリッドが出来るかなと思ったのですが 駄目みたいで。
>>583 TStringGrid、余裕で出来ます。
これが出来るようになれば君のプログラミングの幅が広がるでしょう。
>>583 TStringGridのOnDrawCellで自前で描画するか、TMSあたりのGridコンポーネントを買えばできます。
VirtualTreeViewがオヌヌメ
587 :
583 :2011/10/28(金) 11:34:10.40
ありがとう。 ヘルプをよく読み返してみたらできそうでした。 スレ汚しスマソ
セルの色なんか塗れて当然だろ
でた、当然厨wとえらそうに言ってなんだが、 VirtualTreeViewてどうやるの?
答えはひとつだ。「DELPHIにできないことはない」 すべてが可能。
C言語ではOSが作れて、Delphiじゃ作れないのは何で?
x86コードが吐けるんだから、Delphiでも頑張れば作れるよ 実際SysInitやSystemをOS作成用に差し替えてCUIレベルのOS作った人は海外にいたんじゃなかったかな
じゃ、ドライバは普通に作れるのね。 ありがまんこ
EX2ってDemoのプログラムってないの?
その前にEX2ってなんですか?
XE2だっけ どうでも良いから教えろ
Demo はない
Sample はある
ラベルとかに表示する文字の太さだけを変えるにはどうすればいい?
Label1.Font.Style := Label1.Font.Style + [fsBold];
すみません、質問間違えました。 BoldのOn、Offじゃなくて徐々に太くしていくみたいな 感じで出来ないかと言うことです。 ボタンを押す度に少しずつ太くなるイメージです。
CreateFont API辺りを使って自分でFont作ってFont.Handleに代入
603 :
デフォルトの名無しさん :2011/10/31(月) 10:53:58.85
XE&Win7に対応したShellListViewの機能強化版ってないですか 良いコンポーネントなのにサンプル扱いで放置されてるのが悲しい…
>>602 それじゃうまくいかないと思う。パスとか使う必要があるのでは?
実際にやったわけじゃないのに推測で否定する馬鹿がDelphi使いには多いですね
gdiplusか?
>>604 ラベルでパスとか使ってやるにはどうしたらいいですか?
四の五の言わずに動くソース書いてください
Delphi(デルファイ)について、他のスレッドでは書き込めない超低レベル、 もしくは質問者自身何が何だか分からない質問を 勇気を持って書き込むスレッドです。 Delphi使いが優しくコメントを返しますが お礼はDelphiの布教と初心者の救済をお願いします。
DELを真に愛する人はDELをお勧めしない てなことはないかな?
DELを使いこんだんだ人はクソな部分がいっぱい見えて、DELをお勧めしないが正解
>>608 まーGDI+でもできるかもしれないけどなぁ。Path使って字を書くのは中村御大の本を買えば書いてある。
あーサンプルは御大のページにあったな。無能なのでサンプル書けなくてごめんな。自分でガンバレ!
DELって略す人は年配が多いよね
それが何か?
おっさんは黙ってろってことだよ言わせんな恥ずかしい
だが断る
うわあ・・・
誰か詳しくDelphi教えてくれる人募集中! 通信はスカイプで 僕のスカイプ名はblueskyokinawajp2010で表示名は神族です。
最近のDelphiってpngが標準で使えるって聞いたんだけど、 pngってサンプリングだっけ?jpegjみたいにいくつかあるの? あるとしたら、Delphiで選んでビットマップから変換とか出来る?
まずはDelphi pngでググろうねぼうや
仕事の逃避で久しぶりに来てみたが、 相変わらず見事なスレだな。 Delphiにもまだ新参者がいるって分かり安心したよ。
ついにmod_MTのDL回数が100回突破しました!いやぁ〜うれしいすね d(・∀・)b
今日作ったmod_MTのさらにバージョンアップをうpしますw
使い方説明めんどいのでINIファイル見ればわかると思います。
*'``・* 。
| `*。
,。∩ *
ttp://www.megaupload.com/?d=K65II6R4 + (´・ω・`) *。+゚
`*。 ヽ、 つ *゚*
`・+。*・' ゚⊃ +゚
☆ ∪~ 。*゚
`・+。*・ ゚
>>622 って今頃スレに書き間違えたw(本当はマビチートスレに書き込むはずなんだけどw)
でlpひ7で使えるpngユニットない?
BitmapをPngに変換した時に黒が透明になってしまうのは何故?
アルファ はい、次の方どうぞ
Delphu 7 Pro で質問です。 超久しぶりに Delphi 使ったら、状況感知ヘルプが全然うごきません。 以前は F1 キー押下で該当プロパティやメソッドのヘルプが出たはずですが C:Delphi7helpd7.hlp ファイルが見つかりません。このファイルを自分で探しますか? と出るだけです。ヘルプファイルのパスから「 \ 区切り」が消えてる点が気になります。 これってどうやったら直るでしょう? ちなみに修正パッチはすべて適用済みです。
631 :
デフォルトの名無しさん :2011/11/02(水) 23:18:17.15
書式指定で数値を16進数の0埋め16桁で出力するにはどうすればいいんでしょうか? {0:X16}では機能しないみたいですが
Formatと形式文字列の項嫁
これでiPhoneアプリ作ろうとしても、結局Mac がいるんだよね?
はい
教えてください TIconにアイコンをロードして、アイコンを少しだけ加工したくて TBitmapにアイコンのビットマップを Canvas.StretchDraw()することによりコピーして、加工するまでは出来たのですが TBitmapからアイコンへ加工済みのビットマップを戻す方法がわかりません。 TIconにはCanvasはないみたいですし どうすれば良いでしょうか。
ImageListにビットマップを突っ込んでGetIcon またはAPIで頑張る
638 :
635 :2011/11/04(金) 09:38:27.97
自作アプリがアクティブの時に、キーボードが押されたのを関知する目的で ApplicationコンポーネントのOnMessageでKeyPressのメッセージを捕まえています。 処理後にそのメッセージを元に戻す(返す?)にはどうしたらしいですか
640 :
639 :2011/11/04(金) 10:07:41.37
Msg.wParamが「.」かどうかを判断するにはどうしたらいいでしょうか? if Msg.wParam=PChar('.') then とやっても、互換性がないとエラーになってしまいます。 VK_***であるのかと思い調べましたがわかりませんでした。 よろしくお願いします。
640はVK_DECIMALでした。 スレ汚してごめんなさい
フックしたのをまたポストすりゃいいんじゃね
引数のHandledを操作しなければ勝手に返すと思うけど
delphiのプロジェクトファイルをxcodeのプロジェクトファイルに変換できれば良いのに。
Delphi VCL→(Midaかなんか)→Delphi FireMonkey→XCODEじゃだめなん?
DelphiのDVD来た? 修正を含めるとか言ってたからまだかな?
もうそれ終わってますが
DVDはUpdate 1が出た直後にきたな まぁ既にUpdate 2/Help Update 1が出てしまったのであまり意味がないが
俺のところ、まだ来てない
今の時点で来てないやつはもう来ることはないよ
マジで? まぁ、いいか
Pagecontrolに複数のページを設定して、それぞれに Memoを乗せています。 アクティブになっているページのMemoにアクセスするには どうしたらいいですか
XE2ってバージョン管理できるのね。
svn辺りと協調動作出来るの?
svn自体をよく知らないけど、delphi自体で差分管理する感じみたいよ。 ヘルプにsubversionって単語使ってるから、なんか関係あるかもね。
VersionInsightでぐぐれ
>>658 XEで出来るんだから良いじゃん
生理か
おっさん…
Delphi 7 で作った自作プログラム、自分で使う分には何ひとつ不自由なく Windows 7 SP1 64bit で 動きますが、とりあえず「Win7 対応してます!」と言い張るためには、最低限どんなことしとくべきですか?
面の皮を厚くしておく
「対応してます」じゃなくて「動作確認してあります」でいいんじゃ?
>>661 プロジェクトのオプションでバージョン番号と会社名入れとけ
Del5なんだけど、listviewやstringgridの列や行の幅の 変更を知る方法ってある?
やり方調べるのが面倒だから俺ならtimerでチェックする
listview column resize messageで検索すればそれっぽいメッセージを受けてるコードが見つかるな
スレッドを作ってそっちで監視するってのは?
>>668 なんでもかんでもスレッドっていう発想www
vclってスレッドセーフじゃないし
一部な
delphiと直接関係ないんだけど、アプリに設定するアイコンが 何故か小さく表示されるんだけど、サイズって32*32で良いんだよね?
ちがうよ。全然ちがうよ。
ありがとう。 ググって見たけど、アイコン作るツールとかで 16*16、32*32、64*64とかを一つのアイコンとして 保存すればいい?
誰かDelphiでマクロの作り方知りたいのでサンプルソース教えてくれませんか? @起動 Aボタン押してマクロ開始 Bマクロでテキスト開く Cマクロで自動で入力する内容は「Hello Word!!」 D入力し終わったら自動で閉じる って感じでソース教えて下さい。
>>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;
Staem www あちゃーこれは恥ずかしい誤記 一度じゃなくて全部間違えとるなw
よく見るとわざとのような?ここまで徹底していればこれはこれであり鴨?
prodecureをわざわざ書き換える必要ないだろwww
ww
684 :
678 :2011/11/07(月) 22:34:34.87
釣れました^^
ノ : : : : : : : : : : : : : : : : : : : : : : : : : :_;/. : : : : : : : : : : : : :/
│: /,>: : : : : : : : : : : : : : : : .<⌒ヽ : : : : : : : : : : : : : : :〈
'; :l/厂\: : : : : : / ̄⌒〉ノ.ハ;〉 ∨: : : : : : : : : : : : : :|
|::l′ `⌒¨¨´ / |l: : : : : : : : : : : : :ノ
|::| リ: : : : : : : : : : : : :〉
|::|l _ノ: : : : : : : : : : : : :/
Y \: : : : : : : : : : : : :|
仆:,.、 __,.. ヽ : : : : : : : : : : ;'
厂二≧;.、 ,.::≦,ニ二,._ '; : : : : : : : : :〈
l 人__じリン:. .::´:;∠. じリ゙フ′ ∨: : \: : : :「〉
>>678 そんなソースで大丈夫か?
:. .:: : :  ̄ l: : :厂`ヽ人l
:. .::: : : l:.:/ 仄リ
.::;′ |/ /リ
.::::l _,.イ/
; ::人_ ,--ノ 厂 W
l .; |′
', .:ニ、_ _,.. . :〃 |___
',: : : .  ̄¨¨ ̄ . : / ∨'⌒ヽ\
'; : : ⌒ . : :/ ∨///ハ
八: : . : ,: :'′ __///////',
このやりとりを30,40のおっさんが無表情で打ち込んでるのかと思うと薄ら寒くなってくるな
687 :
678 :2011/11/07(月) 23:40:19.53
まだ10代だよ^^
俺は17歳
私は26のばばあ
>>688 17歳なら逮捕されても実名出ないからいいね
誰かマクロのサンプルソース教えてくれよw
>>678 はわざと全部並び替えてるのでわかりづれーよ
マクロは自分が記録したのを自動で記録したの同じように繰り返して動かす
ちょい俺BOTを作りたいので(パケ送受信利用して)俺初心者ですからソースぐらい見ればなんとかわかる
教えようか?
ちょい俺BOTって何?
>>696 教えてほしい!特に知りたいのはBooleanを使って繰り返していの使いたい
たとえば2つのボタンある開始と終了
最初はEnabledがFalseでもしコンパイルしたEXEを起動して勝手に始まらないようにで
開始押したらEnabledがTrueになって開始して繰り返し状態でHello World!を入力
終了押したらEnabledがFlaseになって繰り返しがとまって入力するのを止まる
みたいなサンプルソースがほしいのでどうかお願いします!
こいつ日本人じゃないな
IQ低そうだから教えがいが無いな。コスパが悪い
俺IQ70
馬鹿には無理
馬鹿ではなく無知識です
あきらめたらそこで終わりだ!
消えろ低能
不思議に消えない俺
ここまで自作自演
pngの画像って同じXPでも表示されるPCとされないPCって何が違うの? サービスパック? フォトショが入ってるとその関係で表示されるとかある?
何言ってるのかちょっと分かんないです
>>710 InternetExplorer のバージョン?
ちがいます。
714 :
710 :2011/11/09(水) 09:48:10.54
キャプチャーアプリを作ったんだけど、画像をpngで保存してImageコンポに 表示させるんだけど、自分のPCでは正常に動作するんだけど、 友人のPCだと表示できない。 透明になってるのかな。 Delphi7でpngを扱えるVCLをダウンロードして使ってます。 XEで作った方がいい?
はい。
まずbmpで保存してみろよwww
>>714 だけど使いすぎ
小学校3年生からやり直しましょう
>>710 >同じXPでも
そのXP実は違うんだよ。知らないのか?
720 :
710 :2011/11/09(水) 12:41:27.10
うほ、ほんとだ で、答えまだチンチン
>>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で作り直してみます。
人的エラーだろ
まぁ、XEの標準ライブラリ使ってみるよ。
だとすると、 先ずTBitmapで全て組んで保存の直前だけPNGにするのがオススメです。 その方がメモリ効率も速度も良いです。 つまり、保存の際にPNGを作成して、BitmapからPNGに書きこむ。 読み込みの際は、PNGを開いたらすぐにBitmapにコピー 一応念のため、Bitmapのpixcelformatは24bitか32bit指定してあげる。 大抵のコンポーネントは24bit,32bit Bitmapをメインターゲットとしてる為。 実のところ32bit Bitmapがサイズこそ大きくなりますが、描画や変換関連は最速だったりします。
>>725 ありがとうございます。
表示の際のpngからのbitmap・・・思いつかなかった。
目から鱗です。
相手のPCの画面をぜーんぶストリーミングで流し込めよ
誰かWhileていうループを使ってカウントダウンするサンプルソース下さい 1秒で−1になってこんなふうに たとえば10だとしたら 10 9 8 7 6 5 4 3 2 1 0 ってかんじで最後に0で止まるようにしたいのでどうかよろしくおねがいします
俺知りたいのはPascalではなくDelphiです
>>733 >教育用(?)プログラムPascalの宿題をやって頂くスレ
>
>■丸投げOK
>■全く分かってない阿呆も放置しないで優しく対応
>■他言語はよそ逝け( ゚Д゚)ゴルァ
>■DelphiもTurbo PascalもFreePascalも完全対応
>>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;
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;
{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.
>>735 ごめん言い忘れたけど俺知りたいのはユニットではなくライブラリの知りたい プラグイン用のDLLとして
739 :
デフォルトの名無しさん :2011/11/09(水) 21:35:59.44
pixelformatがdeviceになってるせいとか
以後、放置でおながいします
真性か… マジレスして損した。 頭の中まで見れるわけないっしょ、 しかも単語の意味も自分定義っぽいな、それじゃ誰も分からんよ。
質問の仕方が下手だし、その後のフォローが最悪だな。 折角、答えられそうな人が出てきたのにもったいない。 そういう時は、まず丁寧語で感謝のあいさつ。 そのあと、重ねて質問したいのですが、これと同じ事をDLL上で実現するにはどうしたら良いのでしょうか? って聞くのがベスト、 ちなみに質問の後出し、重ねて質問は技術MLではNGだから、その辺も謝罪しつつ聞くとなおよし。 初心者なんだからせめてマナーくらい学んどかないと、答えられる人が居ても逃げちゃうよ。
どれだけ丁寧でも、自分で手を動かさず「お前ら俺の言うとおりのソースよこせ」と言ってる奴は論外。
>>738 前も言ったけどIQの低さ的に実現できる気がしない
ちょい俺BOT作りたいんだろ? ウイルス作りたいの?
explorer.exeにdll組み込んでキーロガーとかいたずらソフト作ったことあるけど
説明しても理解できなそう
タイマーコントロールで、イベントごとにインターバルを-1000(1秒引く)すりゃいい whileとかsleepとかアホなやり方だ
>>745 Delphiのライブラリってタイマーコントロールできるの?
本物でした
しょうがないにゃあ…
今だ、円馬鹿出ろもiPhoneを超えるスマートフォン出すんだ!! 開発環境はDelphi for xxx その名もDelphone!!!
>>750 DelphoneよりdPhoneでいいんじゃね?w
ショートカットキーでctrl+1って設定した時に、テンキーの1じゃ反応しないんだけど何で?
bakaPhone
>>751 せっかくPhまで合ってんだから、Delphoneが良いかなとw
>>754 それじゃもしDelphiの事知らない人がDelPhoneみたら絶対こう思うぞw携帯削除ww
Del=Delete=削除
Phone=携帯
>>755 (iPhoneを)Del=削除
と、好意的に解釈(ry
しょうがないにゃあ…
>>752 キーボード内部でのIDが違う的な話でしょ。
>>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に走った薄情物です。
俺、.netが簡単って感覚がよくわからんのだけど、簡単あれ? よく知らないんだけど、メモリ開放しなくても問題なかったりとか、なんか勝手に動かれて気持ち悪くない? ポインタを使いにくいし。 ってスレ違いの内容かもしれないな、ごめん
C#って一番実用的な言語な気がする
765 :
デフォルトの名無しさん :2011/11/12(土) 00:37:45.82
メモリに関しては慣れればこんなもんかなってとこ。 .netが便利と感じたのはUDPやTCPを使うのにwinshockいらないとか、客のPCの環境を考えずに作れるところ。 個人的にはDelphi好きだったけど、やっつけ仕事には向かないかな。
もう、.NETのクラスライブラリが豊富だったり、タスクとか非同期とか マルチスレッドが便利すぎて、Delphiはネイティブアプリ作れるぐらいしか 利点なし。後はデメリットだらけ。
腕がないだけやん。 簡単→誰でもできる→プログラマイラネ→君失業
インラインアセンブリとか使うのが楽しいからDelphiが楽しい 一方できちんと設計して綺麗に書くのも楽しいからC#もたのしい
>>765 >客のPCの環境を考えずに作れる
その点はまだDelphiの方がマシだろ
未だに.netが入ってない化石PCはそこら中に転がってるぞ
特に平均年齢が高い会社はそんなんばっかりで、9xやNTすら現役だから.netが逆に動かない
だからDelphi7は今もよく使う
Delphi7が出た頃は、今頃は組込端末とかでKylixが大活躍の筈だったんだが・・・・俺もそう夢想してたし。 それじゃメーカも商売にならないから現実はipodとAndroidだもんな。
そういうのは別のスレでやって下さい
>>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 を見れ
えっ
774 :
超初心者 :2011/11/13(日) 01:51:56.12
delphiで簡単な情報の管理システムを作っています。 初めてのpascal,delphiで苦戦しています。。。 簡単なコードでのプログラミングでないと自作したことを説明もできないくらいのレベルです。。 今回、レコード型の配列で個人データ(名前、生年月日、登録番号、住所、電話番号)を5人分、入れておきたいのですがエラーばかりでてしまい、全くできてません。 簡単なものでもサンプルでもなんでもありがたいのでご教授ください。 後のFormで検索したりして引き出せるようにする予定です。。
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;
リストビューで表示したほうが簡単 配列なんか不要
>>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
ほんとに初歩的ですみません。
このプログラムをほかのユニットで使いたいと考えてます。
Delphiじゃなくね?FPCスレ行け
781 :
超初心者 :2011/11/13(日) 19:12:50.37
>>780 Lazarusなんですけど、delphiとほとんど変わらないと聞いたので。。。
ところどころ;がぬけてる エラーメッセージにもそう書いてあるだろ
783 :
超初心者 :2011/11/13(日) 19:30:47.11
エラーのヘルプがないみたいで、似たようなものを探したりしているのですが、よければ抜けている個所などおしえていただけませんか?
おとなしくvisualbasicでもやればよくね
Delphiの前に英語というか翻訳サイトの使い方を覚えてください
786 :
超初心者 :2011/11/13(日) 19:49:53.69
<<784 指定ソフトでの課題なのです
787 :
超初心者 :2011/11/13(日) 19:52:21.76
<<785 構文がまちがってるとはわかってたんで、似たものをさがしてたんですが。 救済してください。。
>>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;
参考にしてみたんですけど、この部分の説明いただいてもいいですか?
指定ソフトがlazarusとかありえねえよ どんな嘘だよ
>>790 こんな時期に新人研修ってこともないだろうし、課題って事は学校か何かだろ?
なんでわざわざ金払って教えてもらってるところで聞かずにここで聞くんだ?
794 :
超初心者 :2011/11/13(日) 22:35:43.44
>>792 本当です。だからさらに苦戦してます
>>793 学校です。学校のほうに話すと長くなってしまう諸事情があり、教えてくれる先生もいらっしゃるんですが、ヒント程度でかなり苦戦しています
なので友人に勧められ詳しい方に救済を求めました
とりあえずマルチして聞く事じゃない
なんで友人に聞かないの?
line = array [1..50] of Char; これがよくわからない なんでキャラを50個なんだろう 変な仕様だ・・・
>>797 標準Pascalにはstring型がないから、文字列を格納するにはCharの配列を
用意する必要があった。
オブジェクトパスカルなら=じゃなくて:=じゃないかと思ったけど俺の勘違いか
>>790 普通はファイルに保存するだろ?
ソース内に定数で情報持つなら扶養。ただそれだけ。
>>799 そんなのも分からない素人は引っ込んでて下さい
>>772 そんなことしなくてもdfmをテキスト表示してShortcutの値を16481にすればOK。
テンキー側の0-9をショートカットにしたいときは+48の値を設定すればいい。
>>802 短い文字列はTurbo Pascalで実装された型で標準Pascalにはない
805 :
超初心者 :2011/11/14(月) 13:09:52.38
>>796 同じ課題をやっている友人は数名で皆初めてで悩んでいて、先輩方も知人の方もプログラミングをかじったくらいのひとしかいなくてpascalはしらないそうです。。
すいません低レベルなのはわかってますが必死で
>>804 え、Pascal文字列ってTurbo Pascalからなの?
>>805 だから学校で聞けよ
自分で学費払っててそういう手段を利用しないのであれば単なる馬鹿だし、
親に払ってもらっててそれなら今すぐやめるべき
>>805 Lazarusスレの方にサンプルソース上げたよ。
レベル的にはこのスレだけど、話題的にはLazarusスレだよね。
どっちのスレでやるんだい?
俺は普段Lazarusスレしか覗いてないんだが。
809 :
超初心者 :2011/11/14(月) 15:14:38.40
>>808 参考にさせていただきます
じぶんで考えて、他力本願にならない程度にまたLazarusスレで質問させていただきます
>>806 >え、Pascal文字列ってTurbo Pascalからなの?
そうそう。文字列型がなかったら、Turbo Pascal や delphi に
手を出さなかった。
Pascal文字列、Turbo Pascalが最初だったのかは覚えてないなー。 仕様にはないけど実装にはある型って印象。初期のPascal実装から あるんじゃないの? OSXより前のMacのAPIはPascal文字列渡しがデフォルトだったくらい だから、Think Pascalには当然あるよね。 逆にPascal文字列のないPascal処理系ってどんなのがあるんだ? Sun Pascalくらいじゃね?
>>811 UCSDが先っぽいよ>Pascal文字列
Turbo Pascal以前からあったよ
>>804 が嘘言ってるだけだね
814 :
798 :2011/11/14(月) 21:45:24.07
>>811 「標準Pascalは配列でないと文字列が表現できない」というのが
論点であって、処理系ごとの実装の話は焦点がぼやけるよ。
そうしないと投稿者のソースがなぜ文字配列なのかという疑問の
答えにならないから。
string使えよwww。本質的じゃないところにこだわる 言語仕様覚えるよりも、アルゴリズムを覚えるほうが大事。 アルゴリズムさえ自分で考える能力があれば、言語仕様なんかぐぐりながら書ける
CategoryPanelGroupでWindows7のリソースモニタのようなUIが作りたいです。
http://s1.gazo.cc/up/s1_5813.jpg 各カテゴリのパネルのリサイズ
右部分のようにカテゴリを垂直に表示し、全て折りたたまれたらCategoryPanelGroup自体が縮むようにしたい
この2つを可能にするやり方があったら教えて下さい。
1カテゴリ毎にCategoryPanelGroup+Splitter作ってイベントハンドラで頑張るしかないですかね。
>>814 そもそも標準Pascalじゃないし
何勘違いして熱くなっちゃってんの?
,,-―--、 |:::::::::::::;;;ノ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ |::::::::::( 」 < 「標準Pascalは配列でないと文字列が表現できない」というのが論点であって・・・ ノノノ ヽ_l \______________ ,,-┴―┴- 、 ∩_ /,|┌-[]─┐| \ ( ノ / ヽ| | バ | '、/\ / / / `./| | カ | |\ / \ ヽ| lゝ | | \__/ \ |  ̄ ̄ ̄ | ⊂|______| |l_l i l_l | | ┬ |
819 :
デフォルトの名無しさん :2011/11/15(火) 12:02:03.22
バカで〜〜〜す
>>817 へえ、質問者の使ってるPascal教科書ってLazarus用の教科書なのかw
頭の悪奴だなあ
C++コンパイラ使ってCを勉強している人がクラスやテンプレートを使わないのは
コンパイラに実装されてないからじゃないんだよ、分かる?
以降、バカは放置で
>>820 勘違いで引っ込みが付かなくなったのは分かるけど、
それ以上続けると惨めなだけだよ^^;
っていうかさ、
line = array [1..50] of Char;
みたいなコードってStringがあるかないかにかかわらず固定長データ扱う時は今でも普通に使うだろ
だからこのコード見て「変な仕様だ」と言う
>>797 も頭悪いし、
それに対して「標準Pascalにはstring型がないから」としか返せない
>>798 も見識が狭い
>>824 超初心者用スレなのであえて補足すると、現代Delphi(2009〜)なら
固定長データは
line = array [1..50] of AnsiChar;
じゃないとダメね。Charはユニコード文字なので固定長にならない。
>>825 固定長の意味分かってるか?
バージョン間互換がないだけの話でChar自体は可変長でも何でもないぞ
揚げ足とるやつ多すぎだな。議論をするときは、相手の意図を汲み取る努力をお互いにしないと
IQが低いだけならまだしも協力もしないっていう
>>826 >>825 の言いたいことが分からない人が居ると思ったのかよwww
829 :
827 :2011/11/15(火) 15:15:26.41
不毛すぎる…
誰がハゲやねんっ!
まぁド素人が固定長なんて扱うのは百年早いってこった
分かったか?ド素人 > 798
×Charはユニコード文字なので固定長にならない ○Charはユニコード文字になったので固定長データ内に組み込む際は注意する必要がある 固定長にならないなんていう頭悪い書き方するから突っこまれるんだ 最初からこう書いておけば良かった
835 :
デフォルトの名無しさん :2011/11/17(木) 10:44:00.51
Delphi XE2のトライアルをやっていますが、 エディタ画面でUnit1とUnit2のウインドウを同時に表示することできますか?
View | New Edit Window で、別ウィンドウが開くから、メインのエディタのタブをドラッグ 同一ファイルの複数表示も可能
837 :
デフォルトの名無しさん :2011/11/17(木) 11:19:15.03
>>836 ありがとございます。
"別の編集ウインドウを開く"で分離できました!
stdcallのwin32の関数のヘッダを移植してるのですが、レコード型へのアドレスが入力パラメータの 時、constを指定すると、勝手に参照渡し?になってアドレスが渡されるようですが、 いちいちレコード型へのポインタ型を宣言する手間が省けるのですが、これ仕様?で どんどん利用してよい? function A(A: PMyRecord)の代わりに function A(const A: TMyRecord)
内容が変更される場合はconstじゃなくてvarね。overloadで両方定義しておくのも いいかも(const/varだとNULLが渡しにくいので)。
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付けてごまかしてる のがあるので、使ってもいいのでしょうかね?
例えば、ShlObj.pasに宣言されているIShellFolder.BindToObjectの第3引数のriidとか なんですが、これはTGUIDのポインタなんですが、 const付けて、 function BindToObject(pidl: PItemIDList; pbcReserved: Pointer; const riid: TIID; out ppvOut): HResult; stdcall; ごまかしてるので。
4 バイト以下の構造体、または dcc64 での 8 バイト以下の構造体は アドレス渡ししないので、API 宣言するときは注意。
いちいち構造体のサイズ確認するのだるいし間違えそうなうなので、TGUID以外はポインタ型 でいくことにします。 ありがとう。
>>842 そんなのはいちいち気にしなくても呼び出し規約を揃えればコンパイラが勝手にやってくれますけど
逆に気にしなくちゃいけない場面って何?具体的に挙げてもらえるかな
>>840 普通にやる。ちゃんとマニュアルに引数の渡し方とか書いてある
20年も前に良い仕様作ったよな、未だに現役
インラインアセンブラもあったし
fastcallとかもcに逆に使われるようになったし
4バイト以下でも構造体ならconstかvarすれば無条件にポインタ
singleとかdoubleとかは値渡しされちゃうんだけど、構造体に包めば参照渡しができる。
質問者ですが、つまり、どういう事なんでしょうか?
>>845 普通にやるって、ポインタ型宣言して普通にやる?ってことですよね?
4バイト以下の構造体の場合、stdcallでconst付けた場合、ポインタ渡しされてませんでした。
constがなんで「ごまかしてる」ことになるんだ? そんな素人同然の奴がどうやって「ポインタ渡しされてませんでした」という確認をした?
constって別にポインタで渡されるって意味ではないですよね?本来。
>>847 生成されるアセンブラで確認にしました。
別にconstの意味が定数だけってわけじゃないだろ 仕様次第
猿でもわかる仮想リストビュー使い方の解説お願い。
>838-850 varでいいじゃん。元の宣言がconst *じゃないんだから。varで参照=アドレスが渡されるってのも仕様なんだし。
>>851 OwnData := Trueして
Items.Count := で項目数ぶっこんで
OnDataでカラムヘッダ分だけItem.Caption、Item.SubItems.Addしていくだけ
>>852 const *はconst MyRecord *pMyRecordとすべてのin-onlyパラメータに付いてます。
適当に書いちゃいました。すみません。FreePascalのconstrefはたぶんconst *用でしょうかね。
勉強になりました。
856 :
デフォルトの名無しさん :2011/11/19(土) 16:22:41.34
いえいえ
>>848 確認したらそんなことになってなかったけど?
って釣りか…
学校の宿題の彼はその後どうなったんだろう…
pascalの宿題スレでやれよ って思って見てたけどあのスレ今ないよな
今どき宿題にPascal出す先生を尊敬する。 そしてその先生に当った生徒乙w
Pascalは型が厳格で教育には最適とかさいてかないとか
863 :
デフォルトの名無しさん :2011/11/19(土) 20:31:27.33
前にDelphi+DBEで作ったソフトがWindows7で動きません、何か対策ありますか?
865 :
デフォルトの名無しさん :2011/11/19(土) 20:58:11.86
Delphi+BDEだった
BDEやめればいいじゃない エラーメッセージも何も書かずに意味のある答はもらえないだろ
俺は動いてるよ UAC止めてるけど
俺もWin7でBDEアプリ動いてるよ。
Lazarusだと DBase が使える TDBF とか TParadoxDataSet とかが標準でついてるよ
新規で作る話じゃなくて、既存のプロジェクトが 動かないって問題を話してるんじゃないの? Lazarus持ってきてもしょうがないべ?
別にしょうがなくないです、ありがとう。
ヘルプってまじめに作ってる?
カネ次第
875 :
デフォルトの名無しさん :2011/11/22(火) 22:34:21.04
>>859 すこし進展してます!検索を行う関数の作成とEditに入力された文字を検索ボタンで扱う方法を調べながら勉強してます
AccessとかOracleが入ってない環境でもデータベースを動かすってことでしょ 面倒臭そう
めんどくさいの? 家のPCで作って職場のPCに入れようと思ったんだけど、コピーでいけるとか そんなんじゃないんだ。
>>878 通常DBを使うというのは、簡単にいうとDBサーバという別のソフトと通信するということ
自分で作ったexeの他に、対象のPC(もしくは専用サーバ)にDBがインストールされていて、それが起動していないといけない
ただ、Firebird embedded serverみたいな組み込み向けが用意されてるDBは
exeと関連dllをコピーすれば使えるよ
他にもsqliteというのは組み込み専用のDBで、dllもひとつしかいらない
>>880 あざぁーす
読んできます。
多分というか絶対わからなくて、また質問すると思いますが
よろしくお願いします。
本当に右も左もわからんのならclientdataset使ってファイルベースで組んで読み書き編集やってみるのが良いんじゃない? 後々役にも立つだろうし
>>883 それdBase形式のファイルを直接読み書きできるだけで
SQL使えないんじゃなかったっけ
そろそろリンク先をちゃんと読んで質問に答えてあげようぜ
>>886 自分でよく分かってないのに適当にググったのを勧めてやるなよ
それDelphi非対応だぞ・・・
別にDelphiこだわらいない
日本語でおk
いないいないばぁ
 ̄ ̄ ̄ ̄ ̄ ̄ ̄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です。
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に貼り付ける予定です
 ̄ ̄ ̄ ̄ ̄ ̄ ̄l/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ∧_∧ ( ´・ω・`) ∧_∧ / \ ( )何言ってんだこいつ .__| | .| |_ / ヽ ||\  ̄ ̄ ̄ ̄ / .| | | ||\..∧_∧ (⌒\|__./ ./ ||. ( ) ~\_____ノ| ∧_∧ / ヽ 空気読めよ \| ( ) | ヽ \/ ヽ. オマエ馬鹿だろ | |ヽ、二⌒) / .| | | .| ヽ \∧_∧ (⌒\|__./ /
>>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自体はインストールのままで、使用できる状態です。)
よろしくお願いします。
>>897 Delphi7なら InstallShield が入ってる筈 無ければCDROMからインストールだね
>>897 インストールされてるのに見てるディレクトリが違ってるのなら
BDE Administratorでエリアスパスを確認。
BDE Administratorがコントロールパネルやスタートメニューに
ないのならBDEがインストールされてない。
DatabaseName は Alias 名だけで無く、パス名も許されるので、 "DBDEMOS" の代わりに見つけた ...\Borland Shared\Data のフルパス名を DatabaseName に指定すれば先に進めると思うぞ
901 :
876 :2011/12/07(水) 09:15:10.06
>>898-900 ありがとうございます。
>900氏の事をやったら先に進めました。
不思議なのは、その後新規プロジェクトでTTableを
配置すると、オブジェクトインスペクタのTableNameに
DATAフォルダーにあるファイルの一覧が現れるように
なりました。
でも、治ったのならおkと言うことでありがとうございました。
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;
 ̄ ̄ ̄ ̄ ̄ ̄ ̄l/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ∧_∧ ( ´・ω・`) ∧_∧ / \ ( )何言ってんだこいつ .__| | .| |_ / ヽ ||\  ̄ ̄ ̄ ̄ / .| | | ||\..∧_∧ (⌒\|__./ ./ ||. ( ) ~\_____ノ| ∧_∧ / ヽ 空気読めよ \| ( ) | ヽ \/ ヽ. オマエ馬鹿だろ | |ヽ、二⌒) / .| | | .| ヽ \∧_∧ (⌒\|__./ /
質問です。 Googleからソースをhttpgetして、そこからURLに関する部分だけを抜き出してTmemoに入れたいのですが、どうすれば良いんでしょうか。 お願いします。
文字列までは入手出来ているなら、HTMLパーサーでURLを抜き出すわけだが Getするのが判らないの? URL を抜き出すのが判らないの?
907 :
デフォルトの名無しさん :2011/12/15(木) 14:10:53.43
urlっぽいのを抜き出すならhtmlパースしなくても正規表現でいい
>>906 >>907 ありがとうございます。
memo1.Text:=idhttp1.Get('
http://www.google.co.jp ');
でgetすることはできています。
ここからURLのみを抜き出してまたTmemoに入れるところで苦戦しています。
正規表現で調べて^https?://.+/(.+/)*$とTRegExが鍵というのはわかりましたが、これをどうすればいいのかでつまっています。
URLは必ずしも絶対パスでは入ってないからその正規表現では無理かも
>>908 クエリパラメータ(?以降)も拾えなくない?
>>909 >>910 ありがとうございます。たしかにこの正規表現じゃ拾えませんね……。
「ある文字列(なんでもいい)を抜き出してまたTmemoに入れる」←かなり初歩的な質問で申し訳ないのですが、この部分のプログラムだけでも教えてもらえないでしょうか。
正規表現部分はややこしいだけなのでひとまず自分で考えて、それでもしわからなければまた質問します。
コードで書いて足りるところを正規表現無理に使おうとするのはバカだけ。
913 :
デフォルトの名無しさん :2011/12/15(木) 18:35:43.13
フサさんちーっす
>>911 URLはaタグのhref属性の値を正規表現で抜いてくれば、いいんじゃなかろうか?
もしくは、googleなら、validなxhtmlだろうから、TXmlDocumentでパースして、aタグの所抜いてくるとか。
>googleなら、validなxhtmlだろうから どこのルー大柴だよwww
>>912 がHTMLパーサを書いてくれるそうだから待とうよ
純粋に質問してる人をバカ呼ばわりするくらいだし、
href部分を抜き出す正規表現を書くよりその方がきっと早いってことだよ
>日本語がどこまで検証されているのか、というところは、訳からはちょっと分かりませんが. なんだよね。 使って地獄を見ればよし
>>918 否定ばかりして何の解決策も示さない馬鹿だということでよろしいか?
>>918 使ってるけど何の問題もないよ。WideString対応だから当たり前だけど。
データだけならよかったんだけど日本語のノードとかがメタメタに... 使えませんでした
検索結果を使いたいとかだと難しいよね。 で、URLエンコードのデコード法が判らないって質問なの? 単なる報告?
>>921 そんなHTMLあるわけないだろ。うそいくない
どうもすみません、初心者です… delphi6を使っていますが、Panel1に同一階層の他のアプリを貼る方法をご存知でしたら、ご教授してくれませんか?
>同一階層の他のアプリ もうちょっと詳しく
>>926 どちらも「デスクトップ」に置いています。
SetParentで出来るけどメッセージ処理とかいろいろややこしかったはず
>メッセージ処理 そうですか… ベテランの方でも難しい事だったんですね。
>>930 ありがとうございます。
学生の身分で、しかもメッセージとか理解できません。
時間をかけてその域までたどりつこうと思います(^^
何をしたいのかをきちんと説明すればもう少し詳しい回答がつくと思うんだけど。
簡単にやりたかったらTimerで監視してウィンドウをパネルと同じ位置、サイズに合わせるという しょぼいやり方もあるにはあるね。
たとえば、terapadなどを、自アプリの中に表示したいです。
>>934 聞いてるのは「何を」じゃなくて「何故」の方だと思うよ
>「何故」の方だと思うよ 動機の説明がいるのか?w
理由によっては、
>>933 のように単にアプリにメッセージを送ってパネルのサイズ、パネル位置に持ってくるだけでいいし
何か別の事をしようとしてるのなら、出来ない理由を言ってあげられるし
動機というよりは意図だな。
940 :
931 :2011/12/19(月) 13:29:00.89
いや、動機とか意図とかまるでないんです。 ただ単に「できたら面白いかなぁ」ってくらいのものです。 まだ実用的なものを作れるレベルじゃありません。 ベテランの方でも難しいことだってことだけわかりました。
なるほど。 PCの場合は仮想記憶で、アプリ同士は独立してるから、別アプリのの制御はその位置とかユーザーインターフェース経由以上は難しいんだよ。
難しいといえば難しいけど、技術的にはもう確立されていて、実用例も多々あるよ
例えば最近のブラウザはほとんどそういった機構を備えてる
Chromeはタブひとつひとつが単独のプロセスとして独立しているし、
FirefoxはFlashなどのプラグインが別のプロセスとして動いているから、
この辺りのソースを読んでみると仕組みがよく分かると思う
>>941 は難しいと書いてるけど、他プロセスにスレッドを生成して任意の処理を走らせたり、
他プロセスのメモリの読み書きを可能にするAPIは存在するし、今はそれを簡単に行うライブラリもあるからね
ただ埋め込むプロセスが自分の作成したものじゃない場合は、
全てに対して問題が起きないように実装することは事実上不可能に近いかな
もちろん物によっては何の問題もないだろうけど、
本来そういった運用を想定されていないわけだから、
いくら汎用的に作ったところで致命的なエラーが出る可能性は常にある
実際のところ、任意のプロセスをタブ化するソフトなんかはすでにあるけど、
やっぱりエラーが起きたり動作が不安定になってしまうプロセスは必ず存在してる
やるなら、上述のブラウザのようにお互い想定済みのプロセス同士で行った方が良いね
943 :
デフォルトの名無しさん :2011/12/20(火) 01:01:56.52
他のアプリを埋め込むのと自分の別プロセスを埋め込むのとは訳が違いすぎるわな
自作ソフト同士で同一LAN内でテキストのやりとりしたいんだけど、 コンポーネント何使ったらいい?
Win32API
>>944 普通に TStrings 系で、SaveToFile でネットワークファイルが一番簡単
パイプを作ってそこに .SaveToFile ('\\.\pipe\pipename') とかでも出来るけど、面倒でしょ?
948 :
デフォルトの名無しさん :2011/12/21(水) 10:07:45.73
ビットマップファイルの解像度を調べたいんですが、ファイルストリームで先頭から ・BITMAPFILEHEADER ・BITMAPINFOHEADER 二つの構造体に読み込んでみたんですが、 ・biXPelsPerMeter ・biYPelsPerMeter の二つのメンバが0になります、ほかのメンバの値はあるんですが。 ソースはこれだけなんですが、どうやったら解像度を取得できますでしょうか? procedure GetDPI(FileName: String; var Vert,Horz: Longint); var Stream: TFileStream; Header: BITMAPFILEHEADER; Info: BITMAPINFOHEADER; begin Stream := TFileStream.Create(FileName,fmOpenRead); try Stream.Read(Header,SizeOf(Header)); Stream.Read(Info,SizeOf(Info)); Vert := Info.biYPelsPerMeter; Horz := Info.biXPelsPerMeter; finally Stream.Free; end; end;
950 :
948 :2011/12/21(水) 11:00:56.73
ファイルによって値が合ったり無かったりするようでした。 ペントブラシしで作ったビットマップはメンバの値が0でしたが、 違うアプリで作った画像では値が取得できました。 値が0の物でも、Windowsでファイルのプロパティを見ると、96DPIと 出るんですが、0のときは96DPIとみなして良いんでしょうか? それとも別の求め方があるんでしょうか?
情報が無いんだからどうしようもない。 アプリ上はピクセルサイズだけで十分な事が多いからね
952 :
948 :2011/12/21(水) 19:07:31.81
印刷するので印刷サイズを計算したかったんですが、無い場合はデフォルトの 96DPIで処理することにします。
96ってのはデフォルトの画面解像度であって、ビットマップのデフォルトとは関係ない。 なぜならビットマップは印刷向けではなく画面に表示することが主目的だから。
イベントに無名関数入れるのはどうやったらいいですか?
クロージャって奴か時代に取り残されてるwww。無くてもほとんどのコードが書けちゃうもんな
初心者です。RubyでおすすめのIDEがあったら教えて下さい。
>957 Lazarus
>>954 無理
メソッドポインタとは互換性が無い
961 :
955 :2011/12/23(金) 02:21:38.68
function test2: TFunc1;
var
a: TFunc1;
begin
a := function (n: Integer): Integer
begin
Result := a(n);
end;
Result := a;
end;
この関数何度も実行するとメモリリークしていくwww
Delphiのクロージャは完璧じゃないな
調べたら意外と有名な問題なんだな
http://nanto.asablo.jp/blog/2005/12/04/165848
えぇ。有名な問題で、効率の良い解決方法はいまだ不明です。
>>954 メソッド内で無名メソッド呼び出す単なるメソッドならメソッドポインタに代入出来るわけだから
MakeObjectInstanceみたいに、そういうコードを動的に作成すれしかない
>>961 違うだろ。完璧だからこそ起きる問題
これがリークしないのであれば、勝手に参照カウンタ減らされてることの方が問題
>>963 無名メソッドの呼び出しは暗黙のコードが大量にあるから、
動的に作るのは現実的に考えて結構難しいけど
966 :
デフォルトの名無しさん :2011/12/24(土) 01:33:35.23
>>961 なにこれ気持悪〜 nがvarで定義されてない
なるほど、終了条件がないからスタック食いつぶして死ぬなw
元々バグのあるコード書いてメモリリークって…
それならいくらでもメモリリークするコード書けるわ
>>961 はアホだなw
969 :
デフォルトの名無しさん :2011/12/25(日) 06:57:35.99
nをvarで定義するともっと面白いかもな。
>>968 意図せずメモリリークしちゃいそうってことだよ。なるべく俺らの負担を減らしたいだろ?
スタック食いつぶすかは本質じゃないし。もっと分かりづらくて多くの場合正常に動作するコードでメモリリークする可能性があるのが問題
普通ならスタック上に確保するだけでいいローカル変数を 無名メソッドを使ったらヒープに確保するしかないわけで、それをメモリーリークだというのはどうだろか 何か画期的解決策があるの?
確保はされるだろ。解放されないだけでw
>>969 お前がやってるのは、
procedure Foo;
begin
TStringList.Create;
end;
この関数を何度も呼び出し続けるとメモリリークすると言ってるのと本質的には大して変わらない
>>969 >>961 はtest2で得られたTFunc1をコールするとスタックオーバーフローで死ぬんだが
問題を提起したいなら正常に動作するコードで示せよ
設計の時点で問題のあるコードでメモリリークだと騒いだところで滑稽でしかない
>>970 意味分かってないなwwwローカル変数じゃなくて、無名メソッドがメモリリークする
>>972 ちょっと違う。無名メソッドの実装を知らない人からすればメモリリークしないはずのものがメモリリークするのが問題
無名メソッドを実装する人が悪いんだけど、GCのある言語ならもう少し気楽に設計できる
>>973 ちょっと考えてみる
小数点以下の桁数を任意の桁数にする命令ってある? 無い場合は値を100倍してTruncとかRandとか使えばいい?
formatで揃えちゃえば?
トリッキなコード書いて俺は頭がいいと思っている
>>975 RoundToが近いけど、こいつはBanker's Roundなので注意が必要。
>>975 もし丸めのことではなく保持する桁数自体を変えたいということなら、
それはあまりに無知なので浮動小数点数の仕組みについてちゃんと勉強した方がいい
単純に丸めがしたいならSimpleRoundToかRoundのヘルプ参照
こんなんトリッキーでもなんでもないだろうが
BCDでやれ
>>980 桁数変更じゃなくて、切り上げ、切り捨て、四捨五入について知りたかったです。
format関数、ググってできました。
BCDですか。
調べてみます。
ありがとうございました。
984 :
978 :
2011/12/26(月) 10:45:49.35 SimpleRoundToが正解のような希ガス。Math.pasの実装を確認してみたら?