1 :
デフォルトの名無しさん :
2010/07/19(月) 11:31:07
前スレ落ちたな
5 :
長くてごめんなさい :2010/07/22(木) 14:28:20
BSMTP.dllを使っている人がいたら教えてください。 いくつかのサイトを参考に、以下のコードで、メールを受信と中身取り出しには成功しました。 var Ret: integer; ST1, ST2: TPBSMTPStatus; WKSTR: array[0..80]of Char; i, j: integer; strML: string; begin New(ST1); Ret:=BPOP3(PChar(Edit3.Text), PChar(Edit0.Text), PChar(Edit2.Text), PChar('SAVEALLD'), PChar('Files1'), ST1, WKSTR); if Ret<1 then begin BFreeArray(ST1); Showmessage(WKSTR); exit; end; New(ST2); for i:=0 to ST1.Counter - 1 do begin Ret:=BMIME('GET', PChar(ST1.Status[i]), PChar('Files2'), ST2, WKSTR); if Ret>=1 then begin strML:=''; for j:=0 to ST2.Counter-1 do begin strML:=strML + ST2.Status[j] + Chr(13) + Chr(10); end; {ここでstrML文字列から、「送った人」、「件名」をどうにか} end; end; BFreeArray(ST1); BFreeArray(ST2); end; 取り出したメールの中身から、まずは「送った人」と「件名」だけStringGridのようなものに表示させたいと考えているのですが、 そのためには'From: 'とか'Subject: 'あたりを取っ掛かりに、文字列を操作する苦しいコードを書かなきゃならないのでしょうか。 それとも何か一発で出来るようなうまい方法があるのでしょうか。
6 :
長くてごめんなさい :2010/07/22(木) 19:03:28
何か質問の仕方がよくなかったですね。 もしかしたらこれはBMSTP.dllのことは関係なかったのかもしれません。 取り出されたメールの中身ってのはたぶん、あれです。 OutlookExpressなんかで(というかこれしかつかったことないんですが)、メール右クリックで 出てくるプロパティのうち「ソース」ってやつ。 あの記号の羅列の中から、'件名'と'送り主'だけを引っ張り出す手っ取り早い方法があったら 知りたいです(ダメならあきらめて文字列相手にカッコ悪いコードいっぱい書きます)。
正規表現使えば素敵やん
「苦しいコード」とか「カッコ悪いコード」とかがどういうモノを指してるのか よく分からないけど、要するに「面倒くさい」ってことなら いますぐプログラミングなんてやめた方がいい プログラミングとは総じて面倒くさいモノだから(キリッ)
面倒くさがるのはプログラマに向いた性格とされてますけど
>>5 TIdMessageを使うのはどう?
TIdMessage.LoadFromStream()で読み込んで、
SubjectプロパティやSenderプロパティを参照してみる。
11 :
5です :2010/07/23(金) 17:41:35
いろいろありがとうございます。 とりあえずは七転八倒状態で長々と文字列操作のコードを書き、 望む動作は得られましたけど、完成を急がなきゃならないわけでもないので 「正規表現」と「TIdMessage」について調べてみます。 (vbsをちょっとだけかじったことがあり、正規表現って言葉には見覚えが あるような気が)
長らく D6 で時が止まっていたものですが、文字コードが厳しくなってきているようなので、久々にアップデート考えています。 お布施を怠ったせいで、Del2010 のアップデート対象から外されてしまいましたが、通常版なんざとても購入できません。 対象外になったといわれてるだけで、実は購入すれば問題なく使用できたりするんでしょうか。 ダメなら Del2009 の購入を考えています。
たぶん登録できない とりあえずまだ買えるDelphi 2007オヌヌメ
>>13 2009ではなく2007をオヌヌメする理由を教えてくだされ
ひょっとして2009はバギー?
15 :
13 :2010/07/26(月) 20:08:51
D7以下からの移行を考えるならまずD2007(最後のANSI版)に移行してUnicode以外の問題を 全て解決し、それから必要に応じて2010(あるいは2011)に、という2段階で進むのが現実的、という話。 Delphi 2009/2010はEmbarcaderoも認めてる通り、今までのバージョンアップと違ってbreaking changeなので。
あ、あと2007から2010は優待が効くので。2007は最後のチャンスかもしれん。 個人的にはあと5年とはいわないけど2-3年は2007を併売して欲しいが。
>>15 Unicode以外の問題って何?
D7から直接2010に移行したけど文字コード以外の問題って特になかったけど…
(DB周りの)コンポのバージョンや種類のこと言ってるなら、
2007挟むと逆に余計な手間が増えるだけで意味ないだろ
問題があるかどうかは人やプロジェクトによって違うでしょ。そこは自分の判断で。
ん〜、じゃあ2010買っても良いわけか まぁもっとも、2007は最後のANSI版というポイントもあるよね?
Unicode化を急ぐのか?(それもどの程度か)で変わってくる部分もあるので。たとえば後2月待てるなら 2011も視野に入ってくるし、待てないなら2010だし、年単位で考えればいいなら2007だし。 ANSIに全く未練がないなら2007は考えなくてもいいけど…。
結局、よ〜わからんっ!!!!orz w
2011はどう考えてもバギーだから考えなくていいよ Unicode化した2009もバグだらけで2010でやっと使い物になったし、 2011が出てもパッチが出るまではヘタしたら既存コードのコンパイルすら通らない可能性がある 2011ではコンパイラを一から書き直してるらしいから
23 :
12 :2010/07/27(火) 11:04:04
いろんな意見ありがとうございます。 とりあえず個人的な用途がほとんどなんで、買うなら 2009 にしたいと思ったんですが、 バグだらけですか。困りましたねえ。 とりあえず次のアップデート権を買うぐらいの気持ちの方がいいのかな。 どうせ日本語しか使わないだろうから、入出力で変換カマして D6 使い続けるのも手かと 思ったんですが、そんな時代に沿わない手間かけるのもいやだし。
個人用途なら全然D6でいいと思う
2009でUnicode化したが別に困ってないな 信用する前に具体例を聞いてみることだ
2009で未修正のバグが2010では100件単位で直っておりますが 2009ではもう修正する予定はないそうですが
よく考えたら、アップデート版二つで10万近く行くわけだから、 わざわざ不具合の多い 2009 を経由するぐらいなら その分を次にまわした方がいいのか。 もうしばらく D6 でがんばるか。
旧版のサポートが切れる前に出荷した分については まだアップデート対象じゃなかったっけ>D6 在庫あればの話だが
D6ってことは2009まではアップグレード可能だから、新規に2010/2011を買うのと、D6→2007→2010/2011と アップグレードするのと、D6→2009→2010/2011とアップグレードするのは金額的に大差ない、ってことだな。 この中から選べっていわれたらD6→2007→2010/2011だよな、普通。
ちょっと誰か教えてください。 D2010でコンポーネントを作っています。 例えばTStaticTextを継承してTMyStaticTextを作ります。 Captionに何も入れない状態で作成したいのでCreateにCapition=''を入れていますが、 ポトリするとCaptionにTMyStaticText1が入ってしまいます。 実行するとCaptionは''になるのですけどね。 何処に書けば、最初からCaptionが''のままポトリできるのでしょうか?
ソースも晒さずに質問とな?
>30 SetNameをoverrideする。詳しい動作はTControl.SetNameを見るべし。
>>32 さん
ありがとうございました。無事所望の動きが出来ました。
TWinControlまでは遡って見てたんですが、
TControlまで行ってませんでした。
ありがとうです。
34 :
デフォルトの名無しさん :2010/07/29(木) 19:49:13
TreeViewとPageControlを連動させたいのですがどのようにすればいいでしょうか? 例としては [TreeView] 親1━子1 ┃ ┗子2 親2━子3 . ┗子4 [PageControl] TabSheet1 TabSheet2 TabSheet3 TabSheet4 このようなTreeViewとPageControlがあった場合に 子1をクリック→TabSheet1表示 子2をクリック→TabSheet2表示 子3をクリック→TabSheet3表示 子4をクリック→TabSheet4表示 このように連動させたいのです。
クリックしたら TabSheet を操作すればいいんじゃないの?
TreeViewの子に0〜3まで順にindexが振られてたらと思って TreeView.Selected.Indexを試したのですが 子1→0 子2→1 子3→0 子4→1 となっていて選択された子を知る手段がわかりませんでした。
JVCLにそんなコンポーネントがあったような希ガス それぞれのノードのDataプロパティに対応するTabSheetを覚えさせておくといいのでは?
>>37 TreeViewの「選択時のインデックス」のところにTabSheetのindexに対応するもの入れて
TreeView.Selected.SelectedIndexとすることで目的が達成されました!
皆さんありがとうございました。
>>39 無駄な改行入ってると必死に見えるからやめた方がいいよ
41 :
デフォルトの名無しさん :2010/07/30(金) 16:47:12
ちょっと助けてくれ。 大学の講義でプログラミングしているのだが、まったくわからん。 ガンマ線計測によって得られたスペクトルデータを読もとり、データをテキストファイルに書き込んだり、グラフに表示することを各自プログラミングしてみよう。 以下、ヒント Var Chn:array of LongWord; Real_Time,Live_Time:LongWord; Second,Channels:Word; DateTime:array[1..12] of Char; FileName:String; procedure ReadFile; Var InFile:File; Dummy:array[1..6] of Char; Result:Integer; i:Word; lw:LongWord; 次に続く。
42 :
デフォルトの名無しさん :2010/07/30(金) 16:48:19
begin AssignFile(InFile,FileName); FileMode:=fmOpenRead; Reset(InFile,1); BlockRead(InFile,Dummy,6,Result); BlockRead(Infile,Second,2,Result); BlockRead(Infile,Real_Time,4,Result); BlockRead(Infile,Live_Time,4,Result); BlockRead(Infile,DateTime,12,Result); BlockRead(InFile,Dummy,2,Result); BlockRead(InFile,Channels,2,Result); Setlength(Chn,Channels); For i:=0 to Channels-1 do begin BlockRead(InFile,lw,4,Result); Chn[i]:=lw; end; CloseFile(InFile); end; ファイルを読み込むときによくやる方法は、"TOpenDialog" コンポーネントを使い、Button コンポーネントをクリックしたときのイベントハンドラなどで、OpenDialog1.Executeを呼び出す。 グラフを書く前に、データをテキストファイルに書き出す練習をしてみよう。テキストファイルの型は、Fileではなく、TextFileを使いう。 データを書き込むファイルを指定する場合には、"TSaveDialog"コンポーネントを使う。SaveDialog1.Executeを呼び出す。書き込む前に、Rewriteを使ってファイルを開く。書き込むときには、Writeln(OutFile,Ch[i]);などのようにする。 プログラムの動きを点検するときは、次の通り F4キーを押すと、押されたプログラムの部分まで実行されたら、実行がストップする。F8キーで、次の行、F7キーを押すと、行内でよびだされている手続き・関数内に行って、ストップする(手続き、関数が無い場合には、F8キーと同じ)。 誰か無知な我にご加護を。
43 :
デフォルトの名無しさん :2010/07/30(金) 17:01:45
Delphiインストールしてないや 具体的に何がわからないの?
44 :
43 :2010/07/30(金) 17:04:06
ごめん、別のスレと間違えてたw
45 :
デフォルトの名無しさん :2010/07/30(金) 17:07:22
うぬb
>>41-42 自分で書いたのが3行だけで、あとはコピペのみってのがスゴイな。
何をしてほしいのかも書いてないし。
どんな環境で前提条件等詳しく書かないと誰も手をつけられないんじゃね?
とりあえず、
>誰か無知な我にご加護を。
神よ、このさまよえる子羊にお導きあれ。
未だにDelphiを教材として使ってる大学があるというのが驚き 変な意味じゃなくてな
Pascalは教育用だったんだっけか
変数や関数の名づけ方が気持ち悪い・・・
Delphiもせっかく無償版のおかげで盛り上がってたのに どうして旧に舵をかえたの?
リアルタイムとライブタイムの違いが分からんなw
53 :
デフォルトの名無しさん :2010/08/02(月) 16:22:37
みな、迷惑かけてスマン。
>>46 ありがとう助かる。
>>47 それすらわからんのだ。教員に聞こうも、理解ができない・・・。それは、自分の理解のなさのせいだが・・・
>>48 少人数の講義でやっているから・・・。もはや、これが講義なのかもちょっとわからん。
>>50 自分に言われても出題がそうなっていたので、どうにもできない。すまない。
>>49 >>51-52 自分には理解できない言葉だ、すまない。返答ができない。
>>46 の紹介してくれたスレにそのままコピペするが、許してくれ。
CIDの文字コードをUTF16に変換する方法を教えてください。ペコリ
その日本語はおかしい。CIDがすなわち文字コード。
あざっす。もう少し教えてください。ペコリ
Delphi2010での質問です。 TCustomLabelを継承してTHogeLabelを作ります。 constructor THogeLabel.Create(AOwner: TObject); begin inherited; AutoSize := false; end; としてデフォルトでは AutoSize が利かないように設定します。 で、それをポトリとFormに落として、HogeLabel1を作ります。 オブジェクトインスペクタにて AutoSize を true に設定します。 Captionを変えると、当然ながら自動でサイズが変わります。 ここまではOKです。 そのまま実行させて、そのHogeLabel1のCaptionを動的に変更させると それに合わせてサイズが変わってくれません??? THogeLabel.Createに入れた、AutoSize := false; の文をコメントアウトすると ちゃんと動作して、サイズは動的に変わります。 なぜ、こういう動作になるのでしょうか?
property AutoSizeがdefault Trueだから値をTrueにするとdfmに情報が保存されない。 THogeLabel = class(TCustomLabel) published property AutoSize default False; end; としてTrueにしたときにdfmに保存されるようにするか、 property AutoSize nodefault; で値を必ず保存するようにする。
58さん、ありがとうございます。 なるほど、default指令でしたか。 dfmにAutoSizeの値が保存されないから、 CreateでAutoSizeにFalseを設定した後、dfmをLoadしても Falseのままになってしまうと言うことですね。 希望通りの動きになりました。 どもでした。
どなたか経験がおありなら教えてください。 ToolBar上にTLabelを複数個おきます。 プログラムを実行して、タイマーなどで、そのラベルのキャプションを変更します。 すると、ラベルの位置が変わってしまいます。 Label1,Label2,Label3 と並んでいたのに Label1,Label3,Label2 と並びが変わってしまうのです。 (実際にはTLabelから派生したTMyLabelですがポジションがらみの部分はいじっていません) 何か見るところありますか?
>>60 です。
今まで
Label1.Alignment = taLeftJustify
Label2.Alignment = taRightJustify
Label3.Alignment = taLeftJustify
になっていて、
全てのLabelはAutoSize = true
でした。
(AutoSizeがTrueなのでALignmentの設定は意味が無いんですが・・・)
で、全てのLabelのAlignmentをtaLeftJustifyにした所、
順番が入れ替わる現象はなくなりました。
とりあえずOKなんですが、なんで入れ替わってしまうのかの特定は出来ませんでした。
お騒がせしました。
>61 意味がないと言うけど、Alignmentを右や中央にしていると AutoSizeでサイズが変わった時に、ラベルのLeftも変更される。 ToolBarは内部のコントロールを自動的に並べ直すけど その前にLeftが変わっちゃっているせいで順番が狂うってことだ。
>>62 さん ありがとう。
なるほど、そういう事でしたか。納得しました。
TCustomControlのPaintメソッドでCanvasのマッピングモードを変更し終わったら元に戻しているのですが、 DoubleBufferがonの時、表示がおかしくなります。ソースを追ったのですが、最新の環境では MemBitmap := CreateCompatibleBitmap(DC, PS.rcPaint.Right - PS.rcPaint.Left, PS.rcPaint.Bottom - PS.rcPaint.Top); と、クリッピング領域の部分のサイズしか取ってないのが原因っぽいです。 古い環境ではクライアント領域分確保されているので問題はなかったのですが。 助けて下さい。
古い環境のTWinContorolのWMPaintメソッド見ると MemBitmap := CreateCompatibleBitmap(DC, ClientRect.Right, ClientRect.Bottom); となってますね。嫌になってきました。
逆に今までは問題が表面しなかっただけだと思え
もしかして表面化って言いたかったんですか? つまらないんで帰って下さい。 分かる人いませんか?なるべく早めに回答お願いします。
古い環境では問題なくて最新の環境の方がバグ?ってるんで、delphi窓から投げ捨ててきます。
犯罪予告キター!
通報しました
Paintメソッドで描画ってところがいかにもJava厨っぽい
表面しな
もしかして表面化って言いたかったんですか? つまらないんで帰って下さい。
Delphiでウイルスって作れるんですか?
嘘です
すみません、教えてください。 Delphi2010で、Genericを使いたいのですが、 例えば THoge = class(TComponent) public procedure Proc; end; があるとして、 hoges: TList<THoge>; を宣言 hoge = TList<THoge>.Create; とすると i := hoge.Add( THoge.Create ); として、コンパイルすると、 'TList<THoge>'は'Proc'という名前のメンバを含んでいません というエラーが出ます。 が、ちゃんと実行も出来、hoge[i] にもアクセスできます。 何がいけないのでしょうか? ポインターでも結構ですのでご教示ください。
IDEのエラーインサイトがうまく動いてないだけじゃないの?
エラーインサイト切れ あれはバグだらけのゴミ
XEにRegExp含まれてるってほんと?
IDEになら遙か昔から含まれてるよ^^
いまだに6 Personalなんだけど 正規表現使うならどのライブラリがいいんだろう TRegExpr使ってるんだけど 本家アクセスできなくなってるし・・
一番使うの楽なのがVBScriptのRegExpじゃね?ヘッダーとかDLLいらねぇし。 配布するときいちいちMPLだのライセンス条項つけなくてもいいし。 やっぱ、Microsoftのライブラリはバグすくねぇから安心して使えるぜ。
翔泳社のサイトみてもロクな新機能ねぇな。ぶっちゃけフォーマッターとかモデラーの 改良とかどうでもいい。もうちょっとプログラマよりの機能を追加してほしいぜ。 .NETに比べて貧弱すぎるクラスライブラリをどうにかしてくれ。2010の時もタッチだの ジェスチャだのビジュアル面の機能ばっかフォーカスしてるしなぁ。
# VCL, RTL, STLのアップデート 漠然としすぎてわからん。 # Delphi RTLの一般式 なんだよ。これ。 # TStrings、Date/Time 機能のエンハンス Nickが前にブログでDate/Timeのテストケース がどうのこうの言ってたが、これだったのか?つか、そもそも浮動小数使う日付型やめろよ。 いつまでひきずらなきゃいけんだよ。つか、下記のBig Integerもしくは64ビット整数使った、 .NETみたいな日付型導入されたとか?? # 複雑な科学計算のためのBig Integer のサポート これはうれしい。でも、.NET 4は更にBig Numberが追加されてるし・・
くだすれでやるのはやめてください。 暴れないでください
>>89 ごめん、間違ってた。BigIntegerだけだね。BigIntegerの後の次のリリースで小数サポートした
BigNumberかBigDecimalが追加されたと夢見ていた。Big Integerが4.0でその後なかったね。
気持ちだけつっぱしりすぎてた。
BigDecimalは要望多いし実装してくれると嬉しいんだけどね。.NETもDelphiも。 でも最近のVCLは.NETの後追いだから、非互換恐れて先に実装してくれることはなさそうだけど
92 :
デフォルトの名無しさん :2010/08/16(月) 19:51:53
質問です。 TMemo で左右方向にスクロールさせたいのですが、次のどちらかの方法を教えてください。 1. 左端、つまり行頭が見える位置までスクロール。 2. その行の行末を TMemo の右端に揃えるようにスクロール。 Width の狭い TMemo にファイルのパスを各行一つずつ表示させています。 任意の行をクリックするとその行全体を選択するようにしています。 そのときにファイル名がうまく見えるように左右にスクロールさせ位置を調節したいのです。 1. の方法ができれば、スクロールさせたあとで SelStart と SelLength を指定すれば良いと思います。 2. ができれば任意の時点で望み通りの動作ができると思います。 よろしくお願いします。 当方 Delpohi 5 Pro, Windows 7 Home Premium です。
ありがとうございます。 試してみます。
Delphi開発はFreeでのバイオレーションとオブジェクトメモリリークとの戦いですね C#のガベージコレクションは天国なんでしょうか? 最近はinterfaceで開放の省略をしていますが それでも原因探索作業が大変です www
全角アルファベットを使う人は総じてバカだと聞きました。
>>95 C#は楽ですよ w
でもDelphiはそういう苦労があるからスキルが上がると思って... w
99 :
95 :2010/08/19(木) 13:42:08
Delphiはメモリリーク知らせてくれるから好き
>>95 >>97 最近はこういうあからさまな自演が流行ってるの?
C#使いまで頭悪く見えるからやめた方がいいと思うよ
実際頭は悪い
103 :
デフォルトの名無しさん :2010/08/20(金) 13:24:04
Comboboxをドロップダウンしたまま、スレッドでitems.addし続けると、 DropDownCountを超えても追加されてドロップダウンリストが長くなって しまい画面外に出てしまいます。 ドロップダウンしたままitems.addした後に何をすればこれを制御することが できますか? AdjustDropDownそれっぽかったんですが、呼び出すとうまくいきませんでした。
少なくとも別スレッドからitems.addで追加してるコードはメインスレッドと同期してるんだよね?
そんな使い方は想定されていないので無理
今Delphi2010買っても2011があと一ヶ月ちょいで出ちゃうよね? svn対応に期待してるんだが待った方がいい?
>>107 2011(XE)って、マルチプラットフォームや今後の拡張(64bit化)を見据えて、コンパイラ周りを見直してたかと。
なので、フィールドテストを抜けたとはいえ、リリース直後は安定性が気になるので、個人的には2010を買って、さらにその次のリリースに期待してみてはいかがかと。
XE買えば、7,2007,2009,010とか旧製品も使えるんじゃなかったけ? >2011(XE)って、マルチプラットフォームや今後の拡張(64bit化)を見据えて、コンパイラ周りを見直してたかと 結局間に合わなかったんだから、コンパイラとか旧製品の延長のものじゃね? まぁ、実際は知らんけど。
質問じゃん もしかして雑談と質問の区別も付かないほどバカなの?
D3+IB4.2と言う環境です TTableのFindkeyについて質問です CODE:integer ID:integer Data:integer というテーブルT1があってBDEのTTableでアクセスしています CODE+IDでインデックスIDX1を貼ってあり T1.Indexname=IDX1となっています CODE及びIDはNOT NULLでIDには1以上の値が入ります、からなず1からとは限りません。 このテーブルでインデックス順で特定のCODEの先頭レコードに移動したいときに T1.Findkey([CODE]) で良いのでしょうか 現状では一見動いているようですが Helpを見るとキーフィールドを省略したときには省略されたところはヌルが入るとなっており CODE+NULLで検索されてNot Foundになりそうなのですが。
114 :
デフォルトの名無しさん :2010/09/05(日) 17:36:47
質問です。 QuickReportのGroupHeaderのExpressionで改ページの制御をするのは分かるのですが 「Detailを○件出力したら改ページする」というやり方がわかりません。 ブレーク条件は「番号」、それに加えて「○件出力したら改ページ」させたいのです。 グループヘッダを複数作ってみたり、変数を用意して○件目で値を変えてそれを条件にできないか……と 試行錯誤してみたりしましたがうまく動きませんでした。 どなたか良い方法を御存じでしたら教えてください。お願いします。
今いちばん手っ取り早いVCLのソースの入手法を教えてください
購入
確かにそれは手っ取り早いなw もっと手っ取り早くするならパッケージ版じゃなくてダウンロード版ってところか
TEditかLabelの文字を点滅表示させたいのですが どうすれば良いでしょうか ぐぐったらタイマーで制御する方法は見つかったのですがもっと簡単な方法は無いでしょうか
TFlushLabel = class(TLabel) private FTimer: TTimer; procedure TimerOn(Sender: TObject); public property Active: Boolean read GetActive write SetActive; end; とかクラス作れば? だめ?あ、そうでしたか・・・
自分がまばたきすれば点滅するお
タイマーが難しいと感じてる時点で結構ヤバイ
どっかにそんなコンポありそうだな。
だれか教えてください。 Canvasの一部に図形を描く。 図形をずらして行きたいので、その図形を上書きして元に戻して ずらして描画するって事をやってるんだけど、 もとの位置だけ覚えておいて CanvasのPropertyか何かを設定すると、簡単に行かないですかね? 例えば 図形を描く時に元のCanvasの色とマージした色で描いて、 消すときは同じ所に描くとまたマージされて元の色に戻るみたいな・・・ なんか、そんなpropertyなかったでしたっけ?
ありがとうございます。 CopyModeってCavnasに直接PieとかRectangleで描画する際も生きるのでしょうか? CopyModeにいろいろ値を設定しても、変化なしで・・・ Drawとかだと変化あるのですけど。
>123 xorで描画とか でもいまどきは普通に描画するほうがいいと思う。DWMもあるし。
>>118 「簡単」と言うなら間違いなくタイマーが一番簡単だと思う
>>126 さん、ありがと。
Desktop Window Managerっすか。
なんか、浦島太郎な人なので、追いついていかないっす。
とりあえず、今はバックグランドから再描画しちゃってますが、
重くなりすぎて弊害が出るようなら、描画部分を考えようかと思ってます。
えっと。 Delphi2010ですが、 TGroupBoxのCaptionの文字色の変更って出来ないですかね?
自己解決? マニフェストがらみなんですね。 TGroupBoxから派生させて、Paintをoverrideして解決しました。 ほんとに解決?っテ感じだけど。
IndyのCookieManagerで保存されてるクッキーを見るにはどのようにしたらよいのでしょうか? Indyのバージョンは10.5.8.0です。 よろしくお願いします。
そんなのググればいくらでもあるんじゃね
Dephi6です 重なりあったPanelやボタンを「コントロール > 全面に移動」 をプログラムで書く方法があれば教えてもらえませんか? 今は procedure TForm1.Button1Click(Sender: TObject); begin Panel1.Visible:=True; Panel2.Visible:=False; Panel3.Visible:=False; end; procedure TForm1.Button2Click(Sender: TObject); begin Panel1.Visible:=False; Panel2.Visible:=True; Panel3.Visible:=False; end; procedure TForm1.Button3Click(Sender: TObject); begin Panel1.Visible:=False; Panel2.Visible:=False; Panel3.Visible:=True; end; と非常に無駄なことをやって増えすぎで収拾がつきにくくなってきました 必要な物だけ最全面にできれば簡素化できるのでお願いします。
135 :
134 :2010/09/15(水) 17:39:09
誤字です X:> 全面に移動」 / 必要な物だけ最全面にできれば ○:> 前面に移動」 / 必要な物だけ最前面にできれば
BringToFront/SendToBack
Tabキーで背面のボタンに移動してクリックできるプログラムのできあがりですね それぞれのボタンにTag振っておいて、イベント共有させて procedure TForm1.ButtonClick(Sender: TObject); var n; begin n := (Sender as TControl).Tag; Panel1.Visible := n = 1; Panel2.Visible := n = 2; Panel3.Visible := n = 3; end; とかすればすっきりするよ。 というか、PageControl使って切り替える方が楽じゃね (Style=tsButtonにしとけば、タブ見えないように隠すこともできるし)
138 :
134 :2010/09/16(木) 01:40:36
>>136-137 すばやい返答でおそれいります。
BringToFront が TApplication.BringToFront のところだけリファレンスを見ていて
「う〜んアプリそのものじゃないんだけどなぁ」
TControl.BringToFron を見落としていました。
>>137 タブページも使用している中にも存在していて、というかすっきりしすぎて
書式 Panel1.Visible := n = 1; の n = 1 の部分が理解できなかったりw
あれこれ試し書きして
procedure TForm1.Button1Click(Sender: TObject);
begin
Panel1.BringToFront;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Panel2.BringToFront;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
Panel3.BringToFront;
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
Panel4.BringToFront;
end;
以下略
で落ち着けそうです。 ありがとうございました。
大して変わんねーw
136と137を合わせればスッキリするんじゃね
久しぶりにdelphiのコードみたがなんつーか汚いコードだな 10年以上前のフレームワークだからこんなものかもしれないがそれにしても酷い
>>141 Delphiのコードはどちらかと言えば綺麗だと思うけど?
C++、C#、javaなんかに比べればなw
主観の問題だから何が綺麗で何が汚いかは人それぞれ。 だけど門外漢が見て美しいと思えるコードがあるとすれば、それは LISP なのかも知れない。
俺はフレームワークの話をしてるのになんで言語の話が出るのやら 会話の土俵にもあがれんとはほんと馬鹿なんだな
>久しぶりにdelphiのコードみたがなんつーか汚いコードだな
>>144 Delphiはフレームワークこそ美しい
老害の戯言に一々耳を傾けるなよ
初心者スレで何場違いなことを・・・
Dephi2010をWin7上にて使用しています。 F9でプロジェクトを実行した際には、ウィンドウはWin7のいわゆる「カッコイイウィンドウスタイル」で表示されるのですが、なぜかIDE上のデザイン時には、Win9x時代のような田舎臭いデザインでフォームが表示されます。 IDE開発の際にも統一してウィンドウをカッコ良く表示したいのですが、どうしたら良いでしょうか?
if (i>0) and (i<10) then なんて記述はもっとスマートにならない?(0<i<10)とか
if not ((i<=0) or (i>=10)) then
if InRange(i, 1, 9) then
if i in [1..9] then
スマートに書きたいのであって速度を求めるとは言ってませんが 勝手に勘違いしないでくれますか?
>>155 は完全に勘違いした知ったかだね
コンパイル後、
>>152 は条件分岐が2つ入るのに対して、
>>154 は最適化されて1回の分岐で済む
命令数はどちらも同じだから、つまり分岐が少ない
>>154 が速度的にも上
嘘だと思ったら自分でCPU窓覗いて確かめてみればいい
// if not ((i<=0) or (i>=10)) then test esi,esi jle +$1b cmp esi,$0a jnl +$16 // if i in [1..9] then mov eax,esi dec eax sub eax,$09 jnb +$16 ほんとだ。これは意外だな・・・。
151 が最適じゃないのかw
>>150 >なぜかIDE上のデザイン時には、Win9x時代のような田舎臭いデザインでフォームが表示されます。
田舎に住んでいるか、田舎者が起動すると田舎臭いデザインになるのかもね
>>161 はそう入力すると、得意げに田舎くさい書き込むボタンを押した。
悔しかったのか?
スレッドオブジェクト内のfor文で TStringListでA.txtをLoadFromFileして、処理してファイルA-1.txtとしてSaveToFile TStringListでB.txtをLoadFromFileして、処理してファイルB-1.txtとしてSaveToFile TStringListでC.txtをLoadFromFileして、処理してファイルC-1.txtとしてSaveToFile TStringListでD.txtを・・・ といった具合のことをしたいんだけど、2つ目のファイルのSaveToFileで例外が起こる その例外の内容が「ファイルを他のプロセスが使用してるから保存できない」といった内容 もちろんファイルの名前は違うし、そもそもTStringListを使いまわしてるからこういう例外は起きないと思うんだけど何かありますかね?
書き忘れた 例外は発生するけど一応処理されたファイルが生成される けど例外が出るから次のファイルの読み込みまでいけない
まずコードを出せ 話はそれからだ
ごめんなさい解決しました というのもちょっとコードいじったらデバッグ中だと例外が起きるんですが、生成されたファイルを実行するとエラー無く(スルーされてる?)実行され、ちゃんと複数のファイルも処理して吐き出されました しかしデバッグモードで実行するとその箇所で例外っぽいのが発生してフリーズするのはなぜなんでしょうかね・・・ とりあえず目的の動きはしたので失礼しました
タイミングによって起きるバグだろ たぶん解決じゃない
>その箇所で例外っぽいのが発生して その「っぽい」のを教えてくれないと話が進まん。 スクリーンショットくらいはとれるでしょ?
170 :
デフォルトの名無しさん :2010/09/18(土) 23:17:38
Delphi6 Personal + Indy10でネットワークアプリを作成しています Indy10のTIdTCPClientとTIdTCPServerで テキストやバイナリを相互にやりとりするプログラムを作成しているのですが・・ Clientのほうからバイナリデータを送信するとき、TThreadでスレッドを作成し、 そのスレッド内でTIdIOHandlerSocket.WriteをつかってTMemoryStreamのデータを送信しているんですが、 送信すると、どうも10回中2,3回は何も送信できずに切断されます ですが、TIdIOHandlerSocket.Writeの直後にSynchronizeで何らかの処理をいれると 一度も失敗しなくなります これってなんなんでしょう・・
171 :
170 :2010/09/19(日) 02:29:17
大変お騒がせしました おそらくですが解決しました どうやらTIdIOHandlerSocket.Writeのあとで TIdIOHandlerSocket.Closeしていたのが原因のようです これは送信処理をしたあと相手が受信しきる前に 無理矢理中断してたことになっちゃうんでしょうか・・? ともかく170で書いていたような症状はでなくなったので よかったです・・
172 :
デフォルトの名無しさん :2010/09/19(日) 05:21:35
ImageList の画像の一部分を取り出して Draw って出来ませんか? 例えば ImageList1 に入ってるビットマップのサイズが 100*100 の大きさで 左上 (10,10) から右下 (80,80) だけを Image とかに転送したいんですが・・・ 自分で切り取って作らんといかんのかなぁ・・・
173 :
デフォルトの名無しさん :2010/09/19(日) 06:37:54
>>172 TImageList.GetBitmapでTBitmapとして取り出せるみたいなので、
そこからTBitmap.Canvas.CopyRectとかでどうでしょう
TImageList * 1 TImage * 1 TButton * 1 をTForm1に配置 TImageListには既に1つイメージを読み込んでる状態で procedure TForm1.Button1Click(Sender: TObject); var Bmp: TBitmap; R: TRect; begin Bmp := TBitmap.Create; ImageList1.GetBitmap(0, Bmp); R.TopLeft := Point(10, 10); R.BottomRight := Point(80, 80); Image1.Canvas.CopyRect(Rect(0, 0, Image1.Width, Image1.Height), Bmp.Canvas, R); end;
Bmp.Free忘れてました・・ まあこんな感じでOKですかね?
忘れないためにもCreateしたらtryするという癖をつけたまえ
タロットカードの表示について for i := Low(tarotdata) to High(tarotdata) do begin j := i +Random(Length(tarotdata) -i +Low(tarotdata)); tmp0 := tarotdata[j][0]; tarotdata[j][0] := tarotdata[i][0]; tarotdata[i][0] := tmp1; tmp1 := tarotdata[j][1]; tarotdata[j][1] := tarotdata[i][1]; tarotdata[i][1] := tmp1; end; で、22枚のカードをランダムにtarotdataに格納 (tarotdata[i][0]は、正位置、tarotdata[i][1]は、逆位置) その後、以下のようにkにランダムに0か1を代入することによって、 カードを表示させたかったのですが、 tarotdata for a := 0 to 21 do begin k := random(1); shuffle_data_name[a]:= tarotdata[a][k].name; shuffle_data_image[a]:= tarotdata[a][k].image; end; これを実行すると全部逆位置になります。 たぶん、k := random(1);のところでで、最初kが1となったまま ずっとループしているせいだと思うのですが、 22枚それぞれを正位置、逆位置ランダムに表示させるには、どうすればいいでしょうか。
tmp0はいつ使うの?
>>177 たとえば、
k := Ord(Odd(Random(1023)));
としてみるってのはどう?
180 :
177 :2010/09/19(日) 13:59:33
>>178-179 できました。
前半の間違い
tmp0 := tarotdata[j][0];
tarotdata[j][0] := tarotdata[i][0];
誤tarotdata[i][0] := tmp1;
を
tmp0 := tarotdata[j][0];
tarotdata[j][0] := tarotdata[i][0];
正tarotdata[i][0] := tmp0;
に修正して、
k := Ord(Odd(Random(1023)));
をつかったら、うまくいきました。
ありがとうございました。
そもそもRandomが返す範囲を理解してないのが問題だと思うが ヘルプ嫁
田舎臭いC言語を捨ててDELPHI信者になったら都会者になれますた
>>177 どうせタロットカードを真似るなら、もっと真似ればいいんだよ
最初に順番に並べてデータを作っておき、シャッフルする
そのふたつを一挙にやろうとするからバグる
カードが22枚で向きが2つあるなら、1〜22、−1〜−22とすればtarotdataは一次元配列で
済むんじゃないか 二次元配列を使うことが相当無駄に思える
二次元配列を無駄というところがおっさん臭いですね
28のおっさんでつ
ほんとにおっさんだったのかw
おっさんじゃないのにDelphi使ってる方がどうかしてる
は?おっさんは黙ってろよ
おっさん同士仲良くしようぜ
二十歳以下でDELPHI使ってるやつはきもい
おっさんの妬みきめえwww
今ひとつよくわからない部分があるので、質問させて下さい。 protectedというキーワードがありますが、これを使うと超便利!!というケースってどんなものがあるんでしょうか? 継承先しか見えない、という説明こそ覚えましたが、具体的にそれができると何が便利なのか、利用の活路が見い出せません。 外に見せたくないならprivateでいいし、見せたいならpublicで良いような気がしましたもので。
publicだと他のクラスからも見えてしまうぞ
クラス継承というものを理解汁
>>195 デザインパターンのTemplate Methodが理解出来ると、protectedの効用が分かるかもよ
手許にある塚越先生の御本によりますと、 別ユニットで宣言した下位型から、上位型のフィールドを参照するときに…
親類の間の秘密があってもいいじゃないか。
プロテクトがかかってウイルスに強くなります。
202 :
195 :2010/09/22(水) 22:16:30
何か機能があって、Ver1, Ver2とクラスを作るとき、Ver2はVer1と機能自体はおなじで、 基本処理はVer1を使い回すような場合なんかに有効ってことなんですかね。 なんとなくわかりました。ありがとうでした。
Delphiの機能を学ぶにはVCLのソースを眺めるのが手っ取り早いよ
var a: Pointer; begin a := AllocMem( 1024 ); ( PByte( a ) + 1 )^ := 1; // ← こういう演算はできるくせに ( PCardinal( a ) + 1 )^ := 1; // ← これができないのはなぜでしょう? ShowMessage( IntToStr( PUInt64( a )^ ) ); 言語上の制約なんでしょうか?
206 :
デフォルトの名無しさん :2010/09/25(土) 21:51:22
バージョンアップだけはしてたんですが、仕事ではDel7ずっと使ってました。 2010インストールしてみてあれこれさわってる最中なんですが、 そろそろユニコードに移行しないとマズいんでしょうか?
次々世代OSでANSI系APIが消えるのでそれまでに移行してないと死にます
208 :
206 :2010/09/25(土) 23:35:33
そうですか、 幸い自分は産業機械屋なので、組み込み用XPでまだしばらくの間は凌げるので ちょっとは時間的猶予があるのかな。 まぁ開発機はいつまでもXPというわけにもいきませんが… >ANSI系APIが消える パソコン以外の機器とのシリアル通信がメインなんですが、アスキーコードに 関する処理がばっさり消えてしまうとかなり困ったことになりそうな気配がします。
207の妄想だから気にするな
210 :
206 :2010/09/25(土) 23:48:18
>>209 あら、そうなのか、
自分の開発内容だとASCII/SJIS以外の文字コード扱いたくないから
ユニコード非対応の方が良さそうだな。
新しい奴でもコンパイルオプションとかでANSI/ユニコード切替できたら良いのに…
Windowsのみで完結するアプリの場合、ユニコードに移行するメリットとか
移行しなきゃいけない要因ってどんな感じなんでしょうか?
>>210 Vista以降ではUTF-16前提のAPIがいくつかあります
>>210 > Unicode では マルチバイト ANSI に比べて利用できる文字の数が増えており、
> Shift-JIS では表現できなかった’©’ や ‘®’ 、外字にするしかなかった
> 文字等も表示する事ができます。このように、旧来の Delphi でマルチバイト ANSI を
> 扱ってきた方にも、アプリケーションをUnicode 化するメリットはちゃんとあります。
http://edn.embarcadero.com/jp/print/38783 お前が言ってることは10年以上前から散々議論されてきたこと
組み込み屋とはいえ今更そんな質問をすること自体理解できない
メリットもデメリットもググればいくらでも出てくる
214 :
206 :2010/09/26(日) 00:38:05
>>213 私含め、産業機械屋が時代遅れなのは重々承知なんですが
>ASCII/SJIS以外の文字コード扱いたくないから
って書いてあるの読めませんか?
216 :
206 :2010/09/26(日) 00:42:21
>>213 ああゴメンなさい、自分で
>Windowsのみで完結するアプリの場合
って書いてたわ
217 :
デフォルトの名無しさん :2010/09/26(日) 00:44:50
>>213 文字数増やしたいが為にわざわざ大掛かりなリプレースするの?
>ユニコードに移行するメリットとか >移行しなきゃいけない要因ってどんな感じなんでしょうか? 聞いてて答えたら逆切れwwwwww
219 :
デフォルトの名無しさん :2010/09/26(日) 11:06:07
質問です Delphi6 PersonalにSpTBXLibを導入しているのですが、 SpTBXLibにTListViewのようなコントロールがないようなのですが.. なにか代替であったりするんでしょうか?
220 :
デフォルトの名無しさん :2010/09/26(日) 13:24:59
6で作っていたソフトを2007に移行しているんですが、 EditのMaxLengthの扱いが違うようなので、 「全角文字の文字数=半角文字の文字数の半分」で動作させたいのですが、 これは可能でしょうか?
221 :
220 :2010/09/26(日) 14:05:07
自己解決しました、 テーマを外したらOKでした。
>>214-216 この自演コンボ酷すぎる
組み込みは時代遅れどころか自分で言ったことも忘れて煽る馬鹿なんだなw
「自演」ではないだろw どうでもいいけど
はいはいそうだね^^
225 :
219 :2010/09/27(月) 13:55:51
>>219 で質問した者ですが、
結局カラムヘッダーにグラデーションを描写して
それっぽく見えるようにはなったので
他に方法が見つかるまではこれで凌ぐことにします
ありがとうございました
フォームにListBox1、ListBox2を置いて、それぞれにファイル(複数)がドロップされたらそれぞれのリストボックスにファイル名を登録する、というのをしたいのですが、どうにもわかりません。 特定のコンポーネントがドラッグ&ドロップを受けるようにするサンプルはあったのですが、複数になるとハンドルなどの設定の仕方がわからないのです。
>>226 procedure TForm1.WMDropFiles(var msg: TWMDropFiles);
var
pos: TPoint;
ctrl: TControl;
begin
DragQueryPoint(Msg.Drop, pos);
ctrl := FindDragTarget(ClientToScreen(pos), False);
DragFinish(msg.Drop);
if ctrl = ListBox1 then
begin
//lb1
end
else if ctrl = ListBox2 then
begin
//bl2
end;
end;
const MAX_A = 10; Symbol_ABC : array[0..MAX_A -1] of Byte = ( 1, 2, 3, ... ); はできますよね。一方で、 const MAX_B : array[0..10] of Byte = ( 10, 20, 30, ... ); Symbol_ABC : array[0..MAX_B[2]] of Byte = ( 1, 2, 3, ... ); こういうことがしたいのですが、このままだとコンパイルが通りません。何か手段はあるでしょうか?
型付き定数は内部的には変数と同様の扱いをされますのでそのコードではできません
>228 const MAX_B_2 = 30; MAX_B : array[0..10] of Byte = ( 10, 20, MAX_B_2, ... ); Symbol_ABC : array[0..MAX_B_2] of Byte = ( 1, 2, 3, ... ); でどうよ。
>>227 ありがとうございます!
特定のコンポーネントが受けるコードは結構な行数があったのに、こっちの方が全然スマートなコードですねw
>>231 これだとフォーム全体でドロップを受け付けてしまって受けたくない部分でもマウスカーソルがドロップできるものになってしまうのが欠点ですが作る方としては楽できますよ^^
233 :
デフォルトの名無しさん :2010/09/29(水) 11:48:24
UACの実行レベルの設定に関する質問です。 UACを規定レベル設定して、DELPHI6で作成したEXEをアドミニストレータ権限を 必要とする設定にして、実行する際に権限昇格ウィンドウを表示するように しようとしています。 省略しますがリソースに <requestedExecutionLevel level="requireAdministrator" uiAccess="false"> </requestedExecutionLevel> としても、requireAdministrator、asInvokerと切り替えたりしても、正常に 動作しません。 Visualstudio 2010では、マニフェストファイルのUAC実行レベルの設定で 簡単に変更できて、リビリドすれば、問題なく動作します。 同様のことをDELPHI 6で設定したいのですが、どうもうまくいきません。 試しにVisutal Studio 2010で作成したリソースをリンクしたら一度は うまくいったのですが、二度目からまったくうまくいきません。 また、XN Resource Editorで、Visual Studio 2010で作成したEXEのリソースの requestedExecutionLevel levelを直接書き換えても同様に、レベルを うまく変更できるわけではないので、何かやらなければならないことが あるのだと思うのですが、どうしたらよいのでしょうか?
msdn見て下さい
235 :
sage :2010/09/30(木) 13:51:07
>>233 自己解決しました。
やらなければならないことは単純でした。
microsoft windows sdkにある、mt.exe(マニフェストツール)を使用して、
app.exe.manifestファイルに対して、hashupdateするだけです。
mt -manifest app.exe.manifest -hashupdate:app.exe.manifest
これだけでした。
236 :
sage :2010/09/30(木) 16:35:33
>>235 ごめんなさい、これだけだと・・一度はうまくいったのですが・・
もう一度asInvokerに戻すことができませんでした。
最終的にはdelphiでリンクするのをやめて、
mt -manifest app.exe.manifest -outputresource:app.exe
でリンクするようにしなければ駄目でした。
訂正しておきます。
sage
Delphi2005ぐらいから、ランタイムテーマが有効な場合、 TListView のスクロールバーを操作するたびに、リストビューの項目全部が 無意味に再描画されてしまいます。 VCLソースをみたところ、WM_SCROLL が発行された場合に わざわざ再描画されているようなのですが、なぜこんなことをしているのか ご存知の方いますか? VCLソースをいじったり、カスタムコンポーネントを作ったりして WM_SCROLL のときの再描画処理をつぶしてみましたが、XP でも Win7 でも 特に問題なさそうに見えます。
問題があるからそうなってんの。
delphi6 personal を現在ダウンロードできる場所ありますか?
ない
今まで動作していたコードがうまく動かなくなったのです スレッドのsynchronizeでフォームのラベルを書き換えようとしても変わらない ちゃんとForm1.CreateでTStringList.CreateしてるのにForm1.DestroyでFreeすると「無効なポインタ操作」と例外が出る デバッガじゃなくて生成されたexeでも同じ現象 そこで調べるためにForm1.Createにshowmessageを1つ表示するようにしました するとメッセージが2回表示されたのです これってForm1.Createイベントが2回起こってるということになるじゃないですか 何かのバグなんですかね?
>>239 問題なさそうに見えるけど、どう問題があるの? って聞いてるんです。
でも後からここが超初心者スレであることに気づいたので
ここで聞くのはやめることにしました。本当にありがとうございました。
>>242 Form1を何かの拍子で二つ作ってるとしか思えない
そのShowMessageにブレークポイントかけてみたらどう?
>>244 ありがとうございます
Project1を見たらApplication.CreateForm(TForm1, Form1);がなぜか2つありました
片方消したら無事解決しました
DELPHIが変な動きをしたときは、コンパイラの最適化設定をオフにすることだ 最適化のせいでバグったなんてよくあること
>>246 ライセンスキーは昔取得したのがあります。
今度、PCを変えて開発環境も新しいPCにする予定なんです
昔DLしたdelphi6のセットアップファイルが無くなってしまってて、、、
問題ないのならアップデータとかも含めてうpしてもいいんだが 九州大学でも再配布してたしいいんかな
>>249 うpして頂けると、とても助かります!が、
どうなんでしょう・・・
フォームのdestroy時にもしスレッドが残っている、処理している、などの状況だったらスレッドを破棄する という処理をしようとしているのですが変数が必要とのエラーが出てコンパイルできません procedure TForm1.FormDestroy(Sender: TObject); begin if Assigned(TMyThread) then TMyThread.Free; end; このコードじゃ駄目なんでしょうか
TMyThreadとはなんぞや? クラス名ならダメに決まってる。
>>251 もしそのコードでTMyThreadのインスタンスがあれば全部解放することを期待してるなら、
クラスの入門本から勉強をやり直すべき
254 :
251 :2010/10/02(土) 21:28:53
ごめんなさい MyThreadにTMyThreadクラス入れてたのにTMyThreadで操作しようとしてました 初歩的なミスでした すいません
255 :
250 :2010/10/02(土) 21:41:26 BE:278944-PLT(12000)
自己解決させました。 先ほどdelphi6入りCD-ROM付きの本をamazonで注文しました。 どうもお騒がせしました。
TEditのHeightはAutoSize=Falseで変えられるのですが TComboBoxはHeightを変更できません。 変える方法はありますか?
StyleをcsOwnerDrawFixed等にしてItemHeightを変える
258 :
デフォルトの名無しさん :2010/10/12(火) 14:31:43
コンポーネントを作ってみようと思ってがんばってます 例えば、グリッドのclassの中にセルのclassがあるような感じで グリッドに相当する部分のプロパティをセルに相当するclassから参照したいのですが classなんでownerも使えそうにないですし こういった時はどうすりゃいいのでしょうか?
セルクラスのインスタンスは特定のグリッドクラスのインスタンスに含まれるので、 その関係を双方に持たせればいいと思う。セルクラスのコンストラクタでOwnerを 渡して、それをセルのプライベートに保持させる。グリッドはセルを所有するので それをTObjectListか何かで管理する。
260 :
デフォルトの名無しさん :2010/10/12(火) 15:17:23
良くわからんが 双方で同じプロパティを作って渡せばいいって事ですかね がんばつてみる
いあいあ、セルクラスの生成はグリッドクラス内でするでしょ?だからその時に Self(=グリッドのインスタンス)を渡して、セルのプライベートメンバに覚えさせとくわけ。 で生成したセルは何らかの方法(例えばTObjectList)で覚えておくんだから、 グリッドからセルを参照するのに問題はない。グリッドからセルを参照するときには コンストラクタで渡されて覚えておいたグリッドの参照を使えばいい。
× グリッドからセルを参照するときにはコンストラクタで... ○ セルからグリッドを参照するときにはコンストラクタで...
263 :
258 :2010/10/12(火) 19:19:40
なんか失敗したんで戻って来たら追加情報が書かれてた なるほど 生成される時に、つまりコンストラクタで インスタンスを所得して覚えとけば 元まで辿り着けるよってことですか もうすこしがんばつてみる
264 :
258 :2010/10/12(火) 19:20:26
×所得 ○取得
csvファイルのデータを読み込んで配列に格納するには どうすればいいでしょうか。 たとえば csvファイルは 山田太郎,北海道 鈴木次郎,青森県 佐藤花子,岩手県 のデータそれぞれを data[3][2]に入れたいのです。
TStringList に読み込んで一行ずつコンマでバラして配列に代入。 コンマでバラす関数は自作かな。
TStringListを2つ用意するだけだと思うが。2段目はDelimiterを','にすればいい。
for i:= 0 to SL.Count -1 do begin CL.CommaText:= SL[i]; data[i][0]:= CL[0]; data[i][1]:= CL[1]; end;
そもそもバージョンいくつだよ
バージョンを聞く根拠を教えれ
途中でDelimiterとかDelimitedTextとか追加されているからだろ?D6とかにはない。
馬鹿は言いすぎだ。ただ見当はずれの回答が返ってきてもしょうがないわな。
275 :
デフォルトの名無しさん :2010/10/14(木) 15:12:20
SplitStringなんてのが出来たのかよ 面倒なことに自作してた関数と同じだわ… 俺の自作は 文字列:=SplitString(文字列,区切り文字); こんな感じなんだけど 中身はCOPY使って切り出してるだけなんで純正の方が効率いいのかな
>>274 そりゃすまんかった
だが答える方としてもまずバージョンは?と聞くか、あるいはバージョン別の回答をわざわざ書くしかない
そんな手間をかけるお人好しはこのスレにそう多くはいないだろうから、結果的に自分の首を締めているのには変わらないだろ?
>>275 DEKO氏が言うにはXMLDoc.pasに以前から入ってるものと同等らしいから、
それの内容見てどっちが効率いいか判断すればいいんじゃね
277 :
268 :2010/10/14(木) 20:50:31
レスありがとうございます。 バージョンはフリーの Turbo delphi2006を使っています。 よろしくお願いします。
とりあえず、 266-268 を試してみます。
CSVばらすのは自分で書くかコード拾ってくる 単純にデリミタでばらしても駄目
CommaText最強伝説
>>281 各要素をクォートしてなくて、スペース文字がくると、そこで分割される。
そして、Excelのcsv保存はクォートしてくれない。
その結果はご想像におまかせ。
>>282 はTStrings.DelimitedTextのことね
表示しているフォームのすべてのコントロールに対して OnShowを再呼出させるにはどうしたらいい?
Sender.Components[]を再帰的に列挙して行って OnShowを持ってそうなクラス(ってFormだけだったような…)ならそのクラスにキャストして呼ぶ。 RTTI使う奴はよく知らん。
Turbo Delphiのソースコードを検索してみましたが フォーム以外のコントロールでOnShowイベントがあるのは TTabSheet(ページコントロールのそれぞれのページ)だけですね。
ありがとう。じゃあこんな感じか。野暮ったいけど。 procedure Traverse(c: TComponent); var i: Integer; begin if c is TForm then TForm(c).OnShow(nil) else if c is TTabSheet then TTabSheet(c).OnShow(nil); for i := 0 to c.ComponentCount-1 do Traverse(c.Components[i]); end;
>>282 そのための
>>273 > 2006以降ならStrictDelimiterプロパティが使える
じゃないの?
290 :
デフォルトの名無しさん :2010/10/17(日) 06:39:56
Delphi習得の仕方 すみません教えてください。 昔からPascalに憧れていてこのたびDelphi2010購入しました。 習得の仕方なんですが、入門書の通り入力してその過程で覚えていくしかないのでしょうか? もっと効率のいい方法があったら教えていただけないでしょうか。 入門書は、 Turbo Delphiで始めるWindowsプログラミング Delphi2005プログラミングテクニック があります。すみませんよろしくお願いいたします。
オブジェクト指向に慣れていれば問題ない
Delphi以外は何ができんの?
293 :
デフォルトの名無しさん :2010/10/17(日) 15:30:40
>>292 何もできないです。初めてのコンパイラです。
まずはボタンをクリックしたらメッセージが出るのを作ろう。 次はファイルの読み書きだ。 テキスト編集と画像表示を。 ここから先は必要に応じて。 クリップボードを操作したり文字列を操作したり。 D&Dに対応したり ScanLine で画像を編集したり。
一から説明して下さい
>>294 ,296
ありがとうございます。
レスを参考に勉強を進めたいと思います。
あとageてすみませんでした。
そんな本を読まないと何も作れないほど頭の出来が悪かったんだね 大変だったね
くだらね
くだらね(キリッ
だっておばんばん
303 :
デフォルトの名無しさん :2010/10/22(金) 21:13:44
ぱんぱん
290さん pascalに憧れてってすごいよね。 僕なんかアホだからpascalなんどけど
>>304 本当は98のTurboPascalほしかったけど、
5万くらいしたから買えなくて
今に至っています。
Turbo Delphiの本見てますが結構難しいです。
ぽんと新しい関数出されて、
それをリファレンスマニュアル見ている状況です。
先は長いです。
僕は「Delphi 2005プログラミングテクニック」を参考書にしてる 僕ぐらいにはちょうど良い
DeHLってよさそうじゃね?
D7です 文字列を印刷したときの長さをmm単位で知るにはどうすればいいですか? フォントはMS ゴシックでサイズは9ですが変わる可能性もあります 文字列の長さによって印刷位置を微調節したいのです 印刷はPrinter.canvas
すみません途中で送ってしまいました 印刷はTPrinter.Canvasに書いています
1ポイント=1/72インチと定義されてて1インチ=25.4mmだから、そこから計算すれば出る。 Sizeが9なら9/72*25.4=3.175mmだ。 (1ポイントが何ピクセルかは解像度によって変わるけど 同じサイズのフォントなら物理的にも同じサイズになるよう変換して出力される) 位置をピクセル単位で指定したいとかだったら GetDeviceCaps(Printer.Handle, LOGPIXELSX)で 変換係数を取得して自分で計算する必要があるけどな。
ってよく考えたら知りたいのは高さじゃなくて長さだな 1. Printer.Canvas.Font にフォントを割り当てる 2. Printer.Canvas.TextWidth("文字列") でピクセル単位の幅を調べる 3. それをGetDeviceCaps(LOGPIXELSX)の値で割ればインチ単位になるから、あとはmmに直すだけ
WS_EX_TOOLWINDOWを指定してもタスクバーにボタンが表示されてしまうのはなぜ?
おばかさんだから。
違います。
偉いです。
で結局誰もわからんってこと?
今delphiでSTGゲーム作ってるんだが 自機の作成、キーボード操作まではできたんだ。 だが、弾の発射が、Timerで座標の変化をしているせいか 画面上にひとつしか存在できない。 弾を連続して出すにはどんな方法が必要なんでしょうか? 初心者なので、馬鹿らしい質問かもしれませんが、回答お願いします
マルチ死ね
球の配列を20個ぐらい作ればええやん
素敵やん
左右に往復するプログレスバーって簡単にできますかね? できればソースきぼんぬ
インクリメント値をMaxまでいったら-1 Minまでいったら+1にすれば良いのではないかしら
PBS_MARQUEEじゃないの
Mozillaとかのインストーラーでそういうのあったよね。
jpegを90°、180°、270° それぞれ 回転させて表示させる方法を教えてください。
>>330 ScanLine を使う。
x, y 両方の座標を逆にすれば 180°回転。
x と y を入れ換えれば 90°や270°になる。
bitmapにすれば楽勝だろと思ったけどやっぱ劣化してるんだな
ググれば即効で出てくるのに
335 :
330 :2010/11/13(土) 16:13:49
ありがとうございました。 できました。
MobileMeterみたいにACPI温度を取得するにはどうしたらいいんだろう なんかドライバでACPIにアクセスしないといけないらしいけど Microsoft WMI Scripting を使ってWMI経由でやってみたけどうまくいかない ACPI用のドライバってどうすればいいの
CallNtPowerInformation
WinRing0は公開終了してるが
delphi2007のランタイムテーマを有効にしたときに、 チェックボックスの文字色や背景色が無効になるのですが、 これを可能にするカスタムコンポーネント知りませんか?
無償で使えた turbo delphi をインストールしたけど、あくてぃべーしょんができなくて起動できません。 ・serial key ・authorization key ・認証ファイル (reg636.txt) が必要らしいのですが、だれかupしていただけませんか。
342 :
デフォルトの名無しさん :2010/11/19(金) 12:35:40
質問があります 日本語環境delphiにて英語ソフトを作りたいんですが、例外だけがどうしても 英語OSで日本語で出ようとして文字化けします(日本語環境入ってたら日本語で出る) ResourceString絡み調べてもwebで情報漁っても一向に解決策が見つからない 方法知ってる人いますか? [プロジェクト|オプション...|リソース コンパイラ]でデフォルト言語 = -l409 としても意味ありませんでした。
日本語で作ってPASSOLOで翻訳して出荷したら。 俺そうやってるぜ
>>342 どうしたいのか全然伝わらないんだけど。
日本語を文字化けせずに表示したいの?それとも英語で表示したいの?
最終的にどうしたいのかも分からないのに方法をどうやって示せと。
例外でないものを作る。
>342 Delphiのバージョンは?2010以前ならDelphiを英語版でインストールすべし。 混在環境を作りたいなら英語版からimports/lib/sourceを持ってきて 日本語環境のものと切り替えて使うようにする。
それなら文字化けしたのは問題じゃない 何故文字化けの件を書いた?
ANSIのせいで文字化するのか Unicodeだけど相手のPCでフォントが対応していないのか
>>341 reg736.txtじゃなかったかい?
それでぐぐれば支那とかのサイトにウpされている。
そのテキストファイルはメール文で、beginとendに
囲まれたところがアクチに該当していたはず。
それをどこかのdirに入れよ。
ツール→ライセンスマネージャ→仕様許諾コード
→インポートでそのtxtファイルを山椒せよ。
変数とかの上にマウスカーソルあててもポップアップが超速点滅したりして まともに見れないことが多いのは仕様ですか?
352 :
265 :2010/11/21(日) 15:27:15
268を使って、data[3][2]の配列で読み込ませることができました。 で今度は、 配列の大きさを、最初は指定しないで、 たとえば、CSVのデータが 山田太郎 鈴木次郎 佐藤花子 でも 山田太郎,北海道,札幌市 鈴木次郎,青森県,青森市 佐藤花子,岩手県,盛岡市 でも、 読み込み時に、自動的に配列が作成され読み込めるように するには、どうすればいいでしょうか。 や、 for i:= 0 to SL.Count -1 do begin CL.CommaText:= SL[i]; data[i][0]:= CL[0]; data[i][1]:= CL[1]; end;
たとえば、 CSVファイルの最初の一行を項目名と認識する。 最初の行の項目数に合わせて以後の処理を行う。 途中で変化すると出来ない、 仕様を決めるのはあなた。 CSVファイルは 方言があるから注意、 カンマを含むときはどうするか?CRを含むときは? 厳密に処理するときは 考えないといけない。
動的な多次元配列は二次元目以降の長さをバラバラにできるので(いわゆるジャグ配列)、 最初に行数を読み取って一次元目の配列長を設定し、 あとは1行を分解する毎にそれぞれの二次元目の配列長を設定すればいい 最初の行に合わせる必要はない
delphiのプロジェクトファイルに関連付いている bdsLauncher.exeって何をしてくれているんですか? 複数バージョンのdelphiを使い分けるときとかに役に立つのでしょうか。
つい先日xeのトライアル版をインストールしました writelnとshowmessageの違いが分かりません プログラミング初心者です 助けて下さい
ここは超初心者スレだ。 初心者のお前さんはもうこのスレなんかに頼らなくてもやっていけるはずだ。 自分を信じて頑張れ! と、冗談はさておき、前者はファイルに書き出し後者はダイアログを出すという違いがあるよ。 実際に試してみればすぐ解決することも多々あるよ。
>前者はファイルに書き出し 60点かな。
前者は標準出力または指定したテキストファイルに書き出し行末に改行コードを挿入する。 でいいかい?
>テキストファイルに書き出し 惜しいね。
xeって何だ?
クロスプラットフォームってことだよ 言わせんな恥ずかしい//
Delphi2011 = DelphiXE ただの名称変更
bds.exeがDDEをサポートしているか調べる方法無いですか? bdslauncherじゃなくて。
Delphiくせぇだとできるかも
お知恵を拝借 バイナリで見えるファイルを 00 01 02 03 04 05 06 07〜 x1 x2 y1 y2 x3 x4 y3 y4〜 y1 y2 x1 x2 y3 y4 x3 x4〜 という2個づつ連続して入れ替えたいです どう書けばいいでしょうか Delphi 5 が自分の行く研究室に入ってて書いてコンパイルの方法はわかります。 友人のグループ課題で実験のとき計測器を逆につないでデータとっていたそうで いま必死になってバイナリエディタでちまちま殺気だってやってるようです データ名は 1.dat 2.dat と数字で連続しています百数個あるとか レポート提出間に合わない〜手伝ってと泣かれてるのでおねがいします
相談に乗ってたら間に合わなそうだから作ったぞ。
■コンパイル
1. フォームを適当な大きさにして、ボタンも何も配置しない。
2. これをすべてコピー、エディタに上書きで貼り付け。
http://pastebin.com/cu8jviaN 3. イベントの設定が1つだけ必要。オブジェクトインスペクタの「イベント」タブを開き、OnCreateのところにFormCreateを入力する。
■使い方
書き換えたいファイル(複数可)をドラッグしフォームにドロップする。
ファイルのあったフォルダに新しく「NewFiles」というサブフォルダが作られ、その中に書き換えたファイルが格納される。
元ファイルは壊さないようにしてあるけど、念のため必ずバックアップしとけよ。
>>367 フォームダブルクリックでいいんじゃ・・・
おい、改悪になってんぞw 2バイト毎に書き込みとかファイルIO多すぎて遅いだろww 1ファイルのサイズが分からないから全部メモリに置くのも確かに得策ではないけど、 せめて0x1000バイト単位でバッファリングするとか色々あるだろ…
そういうのってOSが勝手にやってくれるんじゃねーの?
うおぉすごい 返事が遅れましてすみませんありがとうございます。
2ちゃんにはファイアーウォールで帰宅まで書き込めませんでした
友人とそのグループどうやら徹夜してたみたい。
昼前に
>>367 さんのレスみて
この話をメールしたら即答で飛びついてきました。
Delphi 5 入りのパソコンはウィルス対策で外からのメディア付け禁止、インターネット回線ダメ
つくったプログラムは研究室備えのメディア買ったら持ち出しOK
な条件だったようで、
インターネット繋がるところさがして携帯にソースコピーして
小さい画面見ながらちまちまw入力しましたよ
帰宅して預かったデータの1つで確認できました!
>>369 さんも
>>372 さんもありがとうございます。
ソースプリントアウトして置かしてもらえるように頼めと言っておきます。
電話の向こうで泣いてました
ほんとうにありがとう
374 :
367 :2010/12/02(木) 02:19:09
>>373 そりゃ良かった。
「並び替えの順番が違いました」とか言い出す可能性を考え単純な構成にしたけど、
そんな事情ならソースをもっと短くなるよう工夫したほうが良かったかな。
…しまった。誤ってフォルダをドロップした場合の対策を入れ忘れてた。反省。
ちゃんとするなら42行目のbeginの次行に、if not FileExists(FileName) then Exit; を挿入せよ。
>>368-369 だいぶスッキリしたねー。
でもやはり小刻みにReadやWriteを連続させるのは気になってね。実際に比べてみたことないけど。
ダブルクリック指示しないのは間違いの発生を減らすためだよ。
>>372 やたら高度に発展してて、思わず吹いたよ。ここでアセンブラが出てくるとは(笑)
美しいけど、目的を知ってないと一見しただけでは理解できないなあ。
375 :
367 :2010/12/02(木) 02:29:36
>>373 うへ。すまん、指示間違ってた。if not FileExists(PathFile) then Exit; な。
自分のプログラムも読めない俺が居た。
すごい上から目線でふいた
ROL EAX,16 ってEAXレジスタの値を16ビット動かしてるわけか なるほど便利な命令があるんだなぁ アセンブラでやらないなら、and $FF00 とかでマスクしながら上位・下位を交換すればよさそう
>>374 単純な構成というなら
>>372 が一番単純な構成じゃないか?全然高度でも何でもないし。
お前さん自身が言うように理解させることではなく、ともかく作ってしまうのが目的であれば、
アセンブラ使おうが何だろうが問題ないし、並び替え方法が違う可能性に対しても
その部分だけ関数として括りだしてる
>>372 の方がよっぽど柔軟にできてると思うな。
>>377 n := n and $FFFF0000 shr 16 or n and $FFFF shl 16;
ってところか。これだと5命令なんだよな。ROLだけで済むのを知るとこれでも長く感じてしまう。
379 :
367 :2010/12/02(木) 12:20:17
>>378 高度ってのは学生さんのこと心配してるんじゃなくて、
一見した瞬間には理解できなかった俺自身の感想だよ。
俺も
>>372 のようなシンプルかつ高速な手法を発想できればいいが、、、ぜんぜん無理だ。
こうやって何人かが色んな視点で書くきっかけを作った367が一番偉いよ
今更な質問なんだけど、DelphiXE の案内でDlphi7をダウンロードして 使えるみたいな事が書いてあるんだけど、既にD7使ってる場合は、 その環境がそのまま使えるのかな?
以前のバージョンは持っていなければライセンスを付与する、という形式。D7を既に持っていれば そのまま。D7のライセンスが2本にはならない。
edit1,edit2,edit3,edit4,edit5と editの後に数字というTeditコンポーネントが フォームの中にあるのですが、 それぞれに 配列dataに格納されている文字列を表示させるとき edit1.Text :=data[1]; edit2.Text :=data[2]; edit3.Text :=data[3]; edit4.Text :=data[4]; edit5.Text :=data[5]; としているものを、もっと省略して記述する方法はありますか。
なくはないけど五つくらいなら余計な小細工はしない方がいい。
Formのprivateに FEdit: array [1..5] of TEdit; を追加して、FormのOnCreateイベントで FEdit[1] := edit1; FEdit[2] := edit2; FEdit[3] := edit3; FEdit[4] := edit4; FEdit[5] := edit5; としておいて、 var i: Integer; begin for i := 1 to 5 do begin FEdit[i] := data[i]; end; ってな感じ。
たった5回の代入をどうやってそれ以上省力化できるの? 無理っしょ ループでまわすこと自体が無駄になってしまう
388 :
384 :2010/12/06(月) 23:05:19
お返事ありがとうございます。 もっと件数が多い場合、教えていただいたループを使ってみようと思います
その命名規則なら フォームかパネルの Controls を全部なめて、
エディットコントロールであることと名前を確認して、キャストして処理、でいいかな? 個人的には、10 や 20 程度ならそのままつらつらと書いた方がいいし、 それ以上ならデザインから見直した方がいい(グリッド使うとか)と思う。
タグ打っておいてFindComponentで回せばいいとかそう言う話じゃないのか?
Delphi2.0の頃、配列コンポーネントにお世話になったの思い出すわ。
393 :
384 :2010/12/07(火) 19:56:46
FindComponentを使ってみたら、 自分が意図したとおりにできました。 ありがとうございました。
Dle7使いなんだけど、dlphixeにそろそろした方が良い? C#にしたほうが良いとか、バージョンアップなら新規でC#買うより 安いからDelにしとけとか、好きにしろボケとか
好きにしろボケ
396 :
367 :2010/12/07(火) 23:58:07
>>394 最近はDelphi使いを騙るギャグが流行してるのか
まじめに聞いてるんだ。 こんな事聞いても好きにしろボケって事なんだけど、 win7用のソフトとかに手を出さなければならなくなってきたんで どうしようかなと。 あんまり予算もないんだけど、かといって、安いバージョン買って 標準で出来ることが少なくて、四苦八苦するのも嫌なんで Pro版辺りを考えています。
XEはProが一番安いのでは?
えっ! そうですか proって聞いて中間くらいの奴とかってに思い込んでたorz
まーもうそろそろD7はないよな。細川さんみたいに頑張ってる人もいるけど。 とりあえずXEいっとけ。ちゃんと登録すれば2007も使えるし。ただしDBX・Datasnapを ネットワーク上で使うならEntが必要なので気をつけて(ProはDBXをネットワーク上で 使用することをライセンス上禁止している)。
でも今更95対応は何の売りにもならねーだろうなとは思った 特にスクリーンセーバーなんて配布する際に95対応なんて書いたら余計なトラブル抱え込みそうだし
まだ 5 Pro です。
>>397 何に使うのか書いた方が少しでもまともに答えてもらえるんじゃないかね。
まあ理屈の上では、足りないところは自前で補えばアップデートの必要はないだろうけど、
業務とかで使ってるならそろそろアップデートした方がいいだろうね。
一応 D6 Pro で SQL Server 2008 Exp につなぐプログラムも書けたけど。
C# が視野にあるなら、そっちの方が将来性はありそうな気がする。
404 :
デフォルトの名無しさん :2010/12/08(水) 14:27:08
TMemoなどに「envair?nm?nt」という文字をコピペすると 「envair?nm?nt」と使えない文字が?になってしまうのですが これを文字化けせずに表示させるには、どうしたらいいのでしょうか? 開発環境は、XP、D7です。
405 :
404 :2010/12/08(水) 14:31:44
書き込んだら文字化けしてしまった。。 ?はaの上に点がある文字とかです。
Unicode に対応したバージョンじゃないと無理だろ
D7じゃ、Unicodeに対応してないから文字化けしてんじゃ。 それ以外は、システムロケールをその文字化けする文字を含むロケールに 設定して無理やり動かすぐらいしかわからん。
408 :
404 :2010/12/08(水) 16:49:55
>>406 >>407 ありがとうございます。
Unicode に対応したバージョンの購入を検討したいと思います。
TNTっていう手もあるけど、まぁ普通にXEに行っとけ。
410 :
394 :2010/12/08(水) 23:33:54
皆さん、レスありがとう。 背中を押してもらって踏ん切りついた。 XEを買います。
2009,10とか持ってるならともかくD7ならXE買っても全然OKだと思う。
D5 の私はどうすれば……。
>>412 どうすれば・・・って、XE買えばD7も使えるんだから一番お得じゃね。
むかしDelphiでデバイスドライバー書いた事例どっかであったと思いますが いまはデキナイデスカ
できないことはないのかもしれないけど、あえてそんな苦労する必要はないと思う。
ShiftJISなプログラムは2007?
2007までですね。2009以降は原則UTF-16になります。
そうでもない
Del2007最強
2007とかのフォームデザインのときのガイドバーって CTRL押したときだけ機能させるってことできないかな。 クリックしただけで位置ずれちゃう
先生質問です D6使ってます
http://hogehoge.tk/tool/number.html この10進数、16進数相互変換サイトのように、相互変換をしたいのですが
IntToHex( -30, 2) では4byte(32bit) = StrToInt('$'+'FFFFFFE2')
符号あり2byte(16bit) -30 = FFE2 どういうふうに変換式を書くのでしょうか?
IntToHex(Word(-30), 4);
>>422 -30 -> FFE2 できました!
FFE2 -> -30 は
str:String;
str := FFE2;
if IntToStr('$'+ str) > 32767 then str := str - 65536;
でいいのカナ
IntToStr(Smallint(StrToInt('$FFE2')));
ミス Smallint(StrToInt('$FFE2'));
Delphi2010で質問です。 delphi2010のライブラリ言語の切替はBDSSetLang.exeというツールで行います。 これを使うと、作成したアプリケーションがリンクしている ライブラリが出力するエラーメッセージ(ランタイムエラー等)が 他の言語に切り替わります。 しかし、この設定がコマンドラインコンパイラ(DCC32.EXE)で コンパイルしたアプリケーションには反映されないようです。 これを何とかする方法はあるのでしょうか?
Delphi6で質問です Memoなどのコンポーネントで作ったアプリに中国語を入力すると一部の文字が?になってしまいます Delphi6で中国語を使うにはどうすればよいでしょうか? 例 入力「你好」 出力「?好」
TNT Unicode Controlsぐらいしか手がなさそう
表示だけなら数字文字参照でブラウザコントロール使えばいいんだけどね。
表示だけにTrident使うとか・・・
charset変えれば済む話やん・・・
OSが64bitだと動かないアプリケーションを作れますか?
OSが64bitかを判断して終了すればいいんじゃね
>433 GetNativeSystemInfo これで判定。
437 :
433 :2010/12/22(水) 14:44:03
>>436 無事できました。ありがとうございました。
438 :
デフォルトの名無しさん :2010/12/22(水) 20:37:11
2007に移行中なんですが、条件によりTEditのキャレット位置がおかしくなる現象を見つけました。 対策とった方が居たら方法教えてください、お願いします。
その条件とやらを書かないでどうアドバイスできると思う? 出直して来い
開発環境を移行する人は初心者じゃないし
441 :
384 :2010/12/25(土) 20:00:37
edit1〜edit5に 繰り返しとFindComponentを使って、下記のように for i:= 0 to 6 do TEdit(FindComponent('Edit' + IntToStr(i+1))).Text := data_name[i]; で、値を入力するのはうまくいったのですが、 同じようにTimageにも image1〜image5に適用させようとしましたがうまくいきません。 元のコード Jpegs[0]:=TJpegImage.Create; Bmp:=TBitmap.Create; Jpegs[0].LoadFromFile(data_image[0]) ; Bmp.Assign(Jpegs[0]); Image1.AutoSize := true; Image1.Picture.Assign(Bmp); Jpegs[0].Free; Bmp.Free; 単純に Image1が出てくる部分を直せばいいだけかと思い、 Timage(FindComponent('Image' + IntToStr(i+1))).AutoSize := true; Timage(FindComponent('Image' + IntToStr(i+1))).Picture.Assign(Bmp); としましたが、失敗しました。 どこを直せばいいでしょうか
どんな風に失敗したのか教えてくれたっていいじゃない
443 :
384 :2010/12/25(土) 20:41:24
for i:= 0 to 6 do Jpegs[i]:=TJpegImage.Create; Bmp:=TBitmap.Create; Jpegs[i].LoadFromFile(data_image[i]) ; Bmp.Assign(Jpegs[i]); Timage(FindComponent('Image' + IntToStr(i+1))).AutoSize := true; Timage(FindComponent('Image' + IntToStr(i+1))).Picture.Assign(Bmp); Jpegs[i].Free; Bmp.Free; で、 プロジェクトdata.exeは例外クラスEAccessviolation (メッセージ'モジュール'data.exe'のアドレス0046d599でアドレス00000000に対する読み込み違反が起きました。') を検出しました。 というメッセージが出ます。 あと、Windows7でTurbo delphiをつかっています。
よく分からんけどfor文以下の繰り返したい命令が複数文あるんならbegin〜endで囲まないといけないのでは?
>image1〜image5 >for i:= 0 to 6 do あはは。
>384 >386
447 :
384 :2010/12/26(日) 06:53:28
直りました。 ありがとうございました。
存在しないImage0を処理しようとするからか エラートラップすればメモリアクセス違反は抑えられるけどね おれならFindComponentが成功したかどうかのチェックを入れておく
違った i+1だから Image1〜Image7になるわけか
450 :
デフォルトの名無しさん :2010/12/31(金) 11:18:22
全ユニットで参照できるグローバル変数って、 どうやって(どこに)定義すればよいでしょうか? program Project1; ファイル内に const RAINEN = 2011;// ←グローバルにしたい変数 などと定義してみましたが、 ユニットファイルでは読み取ってくれませんでした。
>>450 グローバル変数を定義したユニットを作り、全ユニットで USE する
節子、それ変数やない、定数や。
453 :
450 :2010/12/31(金) 12:08:06
>>451 ありがとうございます。
デバッグモードかどうかを切り替えたかっただけなのですが、
やはりユニットが必要なのですね。
>>452 失礼しました。定数でした。
>>453 そういうのはプロジェクトオプションの条件定義でやる
例えばそこにDEBUGと書いたら、
{$IFDEF DEBUG}
// ここのコードが実行される
{$ENDIF}
質問です TWebBrowserコンポーネントでブラウザを作ろうと思うのですが、パスワードなどのオートコンプリート機能の実装はどのようにすればよいのでしょうか? よろしくお願いいたします。
どの段階で躓いてるの?それとも一から全部教えろってこと?
>どの段階で躓いてるの? オートコンプリートの段階じゃね?w
うわ糞つまんね…
つまんねとかじゃなくて実際それしかないじゃない
ああ、マルチか…
TWebBrowserじゃ出来ないはず
そうでもない
オートコンプリートされるようにすればよいです
教えていただけそうにないので、別の方法を模索しようと思います。 ご迷惑をおかけしました、失礼いたします。
訳:マルチしてる別のところで教えてもらったのでどうでもいいです
>>466 マルチはしていません。
別のところで回答が出ているのなら、そこを教えてもらえないでしょうか?
テキストデータから <input type="password">とか<input type="text"> のタグを見つけて value 属性を付けてやればいいんじゃないの?
普通にブラウザ使えばいいやん
答えられないなら書くな、無駄にスレが進むじゃないか ま、俺も答えられないけどな
複数のスレッドからアクセスされるセッター、ゲッターメソッドを持たないプロパティは つまり、property Foo: Integer read FFoo write FFoo は、クリティカルセクションで同期とらなくてもいいですよね?? クラスのフィールドは4バイト境界に配置?
delphi7pro使用してます メニューバーを非表示にしたいのですがメニューに設定したショートカットは生かしておきたいです menuプロパティにnilを入れるとショートカットも使えなくなってしまいます 何かいい方法はありませんでしょうか
>472 だめでしょ。クリティカルセクションかInterlockで。 アライメントはプロジェクトオプションか$Aで指定(構造体、クラスとも)。
全部セッターとゲッターメソッドを定義して、クリティカルセクションか、2010以降なら Monitorクラスで保護しておいた方がいいのは分かってましたが、VCLの TThreadクラス自体の実装で、FTerminatedやらFFreeOnTerminateやらFOnTerminateやら 全く保護されてないので、やらなくていいのかなーと思ってました。
Del5使ってるんだけど、XE入れたら浦島すぎたw
>>479 私も D5 なのだけど、良いのか悪いのかkwsk
D6 から XE にしたけど、IDE の見た目以外は大して変わってない印象だけどな。 内部的には文字コードが大きく違うんだけど、見えないトップウィンドウの手法は変わってないのね。 出来上がった EXE を Win2K SP2 で動かしてみたらエラーになったよ。さすがに SP2 は古すぎか。
Windows 2000 SP4だったはず
>見えないトップウィンドウの手法 Vista以降で不具合出るんでかなり前に廃止されましたが
どんな不具合?
その程度も自分で調べられないからDelphi使いなのですね 残念です
エンバカスレにもやたらDelphi使いって括りが大好きな人が居るんですが何なんでしょうか?
それはDelpherだからさ
Delphistの俺には関係ないようだな。
>>486 エンバカスレのキモイ話題を持ち込まないで下さい
迷惑です
だからどんな不具合なのさ。
あんたあのこのなんなのさ
熊本出身の俺様を馬鹿にしてんのか?
>>492 バカになんてしてないよ
熊本で生まれたって同じ人間だもの
494 :
473 :2011/01/08(土) 05:23:02
ありがとうございます
>>474 ポップアップメニューは使用しているのでムリでした
>>475 Onkeydownは矢印キーの入力が巧く取れないのでムリでした
>>476 アクションリストにアクションとショートカットを設定しメニューのアクションプロパティでそれを参照するようにしました
>>494 >矢印キー
VK_UP VK_LEFT VK_RIGHT VK_DOWN
分かってるよばか
497 :
473 :2011/01/09(日) 00:29:52
>>495 それはやってみたんですけど、以前やったときどうも巧く動かなかったんです
分かってたよばか
デジカメをUSBでPCにつないで、カメラ内の画像ファイルをPCにコピーまたは移動する ソフトをDelphiで作りたいのですが、どうやってデジカメ内のファイルパスを取得すればいいのでしょうか? Delphiでは不可能なのでしょうか?
できます
デバイスドライバだと難しそう
スキャナとカメラウィザードで転送できるような機器なら何とかなるんじゃね
windows7 64bitで開発してる人いませんか? 今度新しくdelphi勉強しようと思ってるんですが、言語はjavascript(笑)とhtml(笑)とCぐらいしか経験ないので・・・
趣味でならやってます
>>505 なんで先の見えない Delphi を選ぶ?
趣味を先が見える見えないで選ぶんですか? 堅実な人生で楽しそうですね
私女だけど、10年前ならともかく今の時代でJavaScriptに「(笑)」なんて付けちゃう人はちょっと頭おかしいと思う
>>507 色々面白そうだからです
単ならイメージで
いや、遊びならかまわないと思うよ。 後々役に立つこととか少しでも考えてるならどうかと思ってね。 ただ、遊びなら遊びで、人に聞く前にまず自分でやってみろよと言いたい。
言語なんてどれも大差ない、何か一つ覚えてしまえばあとの言語は直感で使える
ゴミが上から目線でDelphiの行く末を語るスレ
まぁ、Delphiもニッチに生きていくでしょ。 土木現場に入ってるソフトとか見ると、何気にDelphi使ってる所も散見される。 まぁ、そこの中で完結してて、その会社が全て面倒見るからなんだろうけどね。
ゴミがゴミらしく他人の目線を気にしながらDelphiの行く末を語るスレ
>お前2ch初めてか?力抜けよ
wwwww
ネタが通じない予想外な反応だからってムキになるなよ
>>509 =518
517=519
釣りのつもりだったのに必死な
>>518 を笑うスレになりました
>>509 も
>>518 も有名なコピペ(の改変)だと思ったけど違ったようだな
それに気付かなかった人が必死に言い訳してるのが笑えるけど
そして次に来るのは「有名と言われてもお前みたいに2chにずっと張り付いてるわけじゃないんでwww」という言い訳だな
そこまでがコピペに気付かなかった系の定番のやり取り
>>517 や
>>519 のような反応もよくあるパターンだし、そんなに顔真っ赤にするほど気にしなくていいと思うよ
仮にも超初心者用スレなんだし、知らなくても恥ずかしくない
procedure TForm1.ButtonClick(Sender: TObject); begin showmessage('本当馬鹿しかいねーな'); end; end.
私男だけど、「私女だけど」にマジレスしてる人は電車男以降で初めて見た
>>517 それマジで言ったん?ソースあんならすぐ出せ
マジなら2ちゃんねら総力を上げて潰すが
TByteArray = array[0..32767] of Byte; PByteArray = ^TByteArray; となっているものは TByteArray = array[0..0] of Byte; PByteArray = ^TByteArray; としても使えるとどこかで見たのですが、どういうことですか? 1つしかない配列を使う意味って何でしょうか?
文法的には動的配列がなかったころの名残というか盲腸なんだろうけど、TByteArrayは 範囲チェックが働かない限りどちらもTByteの配列を表すという意味で違いがなく、 その配列を示すポインタであるPByteArrayがいずれにせよ指し示すのはByteデータの配列 (の先頭アドレス)、ということ。 昔は動的配列がなかったんで確保したメモリ領域の先頭アドレスをPByteArray型の変数に 入れて、PA^[index]とかいう形でアクセスしてたんだけど、いまなら動的配列一発でOKだな。
画面の文字を認識するのって難しいですか?
画面に正確に描画された文字でフォントが分かってるならいける。 手書き文字とか曲がってるとかだと難しい。
そうでもない
問題は周波数フィルタで取り除けないノイズ 言い換えれば人間が見ても紛らわしいもの
そんなもの判別する意味がないな CAPTCHA読み取ろうとしてるんなら別だが
┐(´〜`;)┌ヤレヤレ
┐(´〜`;)┌ヤレヤレ ┐(´〜`;)┌ヤレヤレ ┐(´〜`;)┌ヤレヤレ ┐(´〜`;)┌ヤレヤレ ┐(´〜`;)┌ヤレヤレ ┐(´〜`;)┌ヤレヤレ ┐(´〜`;)┌ヤレヤレ ┐(´〜`;)┌ヤレヤレ ┐(´〜`;)┌ヤレヤレ ┐(´〜`;)┌ヤレヤレ
DelphiEXだかXEにしたら、秀丸みたいな折りたためるアウトラインエディタって簡単に作れる?
作れない
ありがと コンポーネントであるのかと期待した アレって、ごりごりソースを書いてるんですかね。 それとも、.netとかC#とかで実現しやすくなってるとかでしょうか? どちらにしても自分には出来そうにないのは分かりました。
すごく馬鹿っぽい書き込みですね^^
くだすれだから気にすんな
542 :
デフォルトの名無しさん :2011/02/01(火) 14:18:57
>>1 他のスレッドでは書き込めない超低レベル、もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです
他のスレッドでは書き込めない超低レベル、もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです
他のスレッドでは書き込めない超低レベル、もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです
Starter安いがけち臭い事いいすぎだなぁこれならPro買うわ 本気でユーザー層拡大狙いたいなら業務使用制限ははずしてくれないと それでなくてもIDEの機能まで削ってるんだし 一昔前ならこれでおkだったろうけど今時じゃないな
ああ、俺レベルならこれでもいいわ。 ずっとTurbo(2005)使ってたけど、この値段なら最新の機能とやら試してみてもいいと思った。 ただ、リファクタリングまで削ってるのはどうかと。
del6personalでがんばってますがこれは買いですか?
>544 これで稼ぐならその利益で上位エディションを買ってね、ってことだからな。Pro買えるならStarterは およびじゃないよね。でもアカデミックライセンスよりはましだと思うなぁ。 >546 人それぞれだけど、Windows 7のこと考えればいまさら6じゃないんじゃない?という意味で買い。
アカデミックライセンスって機能制限あるのかな?
>>546 値段と機能を考慮したら?
削除された機能等は某所に一覧されてるし
基本的にあそこのアカデミックライセンスって 意味がよく分からんからな 正直な話
Win7 の D5Pro で頑張っている私が颯爽と登場!(・∀・)
アカデミックは教育目的のみ、作ったプログラムは商用、非商用を問わず配布できない、なので。
>>544 > Starter安いがけち臭い事いいすぎだなぁこれならPro買うわ
C# Express がいいんじゃない?
>>551 俺も機能面だけなら Del6 pro で十分だと思ってたけど、
Unicode 関連を考えて、キャンペーンに便乗して XE 買ったよ。
でも本職ハード&ファーム屋……。
>>553 うん、Unicode だけが残念。
VS2005 も持っているのでイザというときはそっちで対処するつもり。
でも Delphi の爆速コンパイルは手放せない。
FormのOnCreateで WindowsState:=wsMinimized; ってやると、タスクバーにも表示されないんですけど?
>>555 手元の環境で新規プロジェクトを作って
何も載せていないフォームで同じ事を試してみましたが
タスクバーに表示されました。
Turbo Delphi ExplorerおよびDelphi 5 Proで
OSはWindows XP SP3 です。
>>556 ほんまや、Delphi7+XPならちゃんと表示されるな。
Delphi2009+XPだと何も表示されない。
Application.MainFormOnTaskBarの影響だろ Delphi 2006とそれ以前か、Delphi 2007とそれ以降かで結果が異なる
見えないトップウインドウ絡みかね
Vistaへの対応で
2010+7では表示された MainFormOnTaskBarはTrueやFalseといった固定値を入れずに、 Vista以降かどうか判定して入れる値変えた方がよさそうやね
Delphi Starter Edition + TeeChart Pro v2010 VCL without source code で動作しますでしょうか。 Starter Editionって1年間の期間限定のライセンスになるのですか?
ソースコードなしならバイナリが入っていると思うので問題ないと思う。 ライセンスには期限はない(はず)。
564 :
562 :2011/02/09(水) 07:59:14
>>563 ありがとうございます。
ライセンスだけがまだ気になりますが、お金の算段がついたら電話で聞いてみようと思います。
OSのテーマが有効な状態でグループボックスを配置したら、OSのテーマに従ったデザインで描画されると思いますが、その色を取得することはできるでしょうか? 具体的には、グループボックスのフチ枠線の色を2つ取得したいのです。 TGroupBoxのPaint部を見たところ、テーマが有効な所では clBtnHighlightと、clBtnShadowの2色を使って描いていることは確認しました。 テーマが有効な状態でのこの2色に相当する色を取得したいのです。 よろしくお願いします。
566 :
565 :2011/02/15(火) 19:37:58
連投すみません。 >テーマが有効な所ではclBtnHighlightと、clBtnShadowの2色を使って描いていることは確認しました ここは、テーマが無効な場合には、の間違いです(_ _)
テーマを使ってると場所によって色が違うことがある(ボタンやスクロールバーが分かりやすい)から、決まった色は取得できない 色を取得して何をしたいの?
568 :
565 :2011/02/15(火) 20:50:07
>>567 さん、レスありがとうございます。
具体的には、グループボックスの枠のスタイルで、ホームページで言うところのHRタグ的な水平線を描画したいのです。
2色を取得し、描画しようと思っていたのですが、何か別のアプローチなどありますかね。
570 :
569 :2011/02/15(火) 21:35:30
グループボックスの枠を横長に描写するとか
572 :
565 :2011/02/16(水) 08:41:38
>>569 さん
レスありがとうございます。
おっしゃる通り、確かに資料が少ないですよね。しかし貴重な情報ありがとうございます。調査してみようと思います。
>>571 さん
レスありがとうございます。わたしも、それは考えまして、何もなければ最終兵器にしようと考えていました(笑)。
GetThemeColorとかGetThemeSysColorでググれ
574 :
デフォルトの名無しさん :2011/02/16(水) 19:34:19
Windows7のx64と2010の組み合わせで、TThreadを使うときだけデバッガが固まって IDEごと応答不能になるのですけど、何か対策ありますか? ビルドした実行ファイルは正常に動作します。
2007/2009ではそういう問題が報告されていたけど、2010で直ったはずだけどな。 アップデートとかhotfixは全部あてた?
>>574 俺が過去スレで質問した時
(XP+Turbo=2005環境、かならず固まるわけでないが、ブレークポイントで割り込む時とかは結構な確率で固まる)、
「コンパネの地域と言語-言語-テキストサービスと入力言語-詳細設定-システムの構成」にある
詳細なテキストサービスをオフにするにチェックを入れる、という方法を教えてもらった。
この問題の場合は、IMEとデバッガの干渉とのことだった。
その後、デバッグする機会があまりなかったので、実際にその方法で解決するのか確証はないが、
参考までに。
もし、TThreadのコードをデバッグするたび必ず固まるというのなら、
2010で導入されたというデバッガのスレッド制御に関するそちら側の環境依存的な問題かも。
質問です。超初心者というか4年ぶりぐらいにいじってます。 delphi6を使っています。 TLabelのCaptionにunicode文字を表示させたいのですが、方法はありますでしょうか? ググって「Delphi 6 ローテクTips」というページのTLabelを使ってみたのですが、オブジェクトインスペクタで入力しようとすると「・」になります。 使いたい文字は「1/2」です。 よろしくお願いします。
これはひどい
Turbo Delphiでフレームを数段階継承して使っているのですが 子クラスのフレームで幅と高さやTabStopなどを変更してファイルに保存しても 次に読み込むと親クラスのサイズに戻ってしまいます。 これってうちだけなのでしょうか。 また良い解決法はないものでしょうか。 関係なさそうですがOSはXPSP3です(念のため)
直接そういう経験は無いけど 中間ファイルが残っていると、妙な動作するときってあるよね。 だから俺はバッチで毎回中間ファイル消してるよ。 このクセ付いてからあんまり起きない del /S *.tds del /S *.dsk del /S *.dsm del /S *.dcu
>582 フレーム表示状態で[ALT]+[F12]としてdfmの内容を確認。
htmlパーサに何か良いものありませんか? TXMLDocumentはDTDが禁止とかいわれます
IEのMSHTMLじゃだめなの?
>>587 駄目というわけではないのですが、既に保存されているhtmlをいじりたいのですが
変更するとネットにアクセスしにいったりする挙動がどうも。
純粋にパーサとして使えれる方法があればいいのですが・・・。
確認してないけどWebBrowser経由じゃなく、直接IHTMLDocument生成してもネットにアクセスしにいく?
確認しようず
MSDNにやり方かいてあるね。初心者には大変そうだけど。まぁ、 はやい話が画像や動画のダウンロード無効にしろと
>>588 XHTMLなら、omnixmlが、使いやすかったよ。
はい馬鹿発生
Delphi2010のリファクタリングって安定してないんでしょうか。 ずっと使ってると動作が重くなってきて、それでも使い続けると固まったり、あらぬ場所が書き変わったりします。 定期的に再起動しろってことなんでしょうかね?
使わないでください
質問です delphi4で、メールを送るプログラムをつくりたいのですが TNMSMTPをつかって、どうやって組めますでしょうか(´・ω・`)
NMはもうやめて…ってDelphi4じゃぁIndyは使えないんだっけ?
スパムソフトでも作る気かね・・・
delphi 2007 か 2009 あたりで、 コードを部分的に別ユニットにしてインクルードする機能ってなかったかな?
{$I 'filename.inc'} では?
$Iか。試してみる。さんきゅ
デスクトップにddpファイルが知らないうちに5個ぐらいできてました ddpでググったらDelphiが関係してるっぽいのでこのスレに来ました Delphiがなんなのかよく知りませんし、その存在も今日初めて知りました デスクトップのddpファイルは消しても大丈夫でしょうか?
Delphiを使っていたとしても普通デスクトップにはできない。 たぶんDelphiとは無関係なファイルではないかと。
606 :
603 :2011/03/04(金) 15:23:44.09
そうですか なんで急にできたんだろう ほっときます
すいません 利用者皆無かもしれませんがvcl for webについての質問です 作成したdllをWebで外部公開したいのですが、検索エンジンのクローラーなどに拾ってもらえるMETAタグとかの指定はできないしょうか?
<METATAG>クローラーちゃん拾ってね</METATAG>
素直にmetaタグなんか読んじゃうクローラーなんて今時存在するのっと
HTMLのタグはどこに書き込むんでしょうか? servercontrolのどこかのプロパティとかですか?
>>606 デスクトップに要らんファイルがあるなら、ただちに消して
しまうのが吉だろう?
Object Pascalの学習を検討してるんで、もしよろしければ、 C++よりも役に立つ利点の紹介をきぼん。
別にない。 ただC++がCのいろんなダークサイドを延々引きずっている上に標準がこれまた延々と決まらず、 必要な拡張も独自にやらなきゃいけないのに比べれば、Pascalのダークサイドはあまりないし ベンダ独自言語なのですっきりはしてる。まとめると言語的には大差ない。DelphiとC++Builderの 比較ということならVCLはObjectPascalで書かれてる、ってのはアドバンテージ。DelphiとVC++(MFC)の 比較ならVCLとMFCのRAD度の差が大きい。
>>612 基本的に
>>613 に同意
機能的に大差ない
好みの問題と、VCLの問題
敷いて言えば、pascalやjavaは単語を略さない文化が有るっぽいので、英語の勉強にもなる事くらいかな
そんなのは使い手次第だろ
標準のC++やVCなら、Delphiの方がオブジェクト指向は強力。 インタフェースやメタクラスとか、まっ逆にC++が汚すぎるのかもしれないけど。 例外も構造化例外で強力で、あとはDelphiの名前の意味のとおりオラクルはじめとしてDBとの相性が良いとこと。 あと地味だけど俺が好きなのはinitializationやfinalizationが書けること。
D言語でいいんじゃね?
delphiも色々拡張した結果、きわものになってる部分もあるけどな。
インラインアセンブラが手軽に書けて試せるのが 勉強には一番いい点だったかも ・・・・勉強だけで結局使わないけどね asm
SSE使うのには便利だったな。 まあVCとかだとasmに下りなくてもいいみたいだが。
すみません。今Turbo Explorer使っていて、XE starterを買おうかと思うのですが、 1台のPCに並存できますでしょうか?
y
教えてください。 一つのプロジェクトにファイルが増えるが嫌なので、 一つの hoge.pas の中に hoge1form hoge2.form hoge3form を同居させることはできるのでしょうか? hoge.pas と hoge.dfm の関係が有るから無理なんでしょうか?
むり そもそもファイルが増えるのが嫌って時点で間違ってる
無理ですか。やはりな。 ファイルが増えるのが嫌なのは間違いだろうがなんだろうが関係ないけどね。
>>623 できます。2つ目以降のフォームはIDEの支援が受けられなくなりますが。
>>624 さんはdfmの仕組みがよく分かっていないようですね。
あら、出来るのですか! ちなみに、2つ目以降のフォームはどう作成するのでしょうか。 さわりだけでも教えてくだされば・・・ IDEの支援が受けられないと言うことは、一つ一つ宣言して CreateしてParentを指定して・・・って事ではないですよね。 よろしくお願いします。 ps すごい揺れでした。@江戸川あたり。
unit Unit1; TForm1 = class(TForm) ... TForm2 = class(TForm) ... var Form1: TForm1; Form2: TForm2; implementation {$R *.dfm} {$R Unit2.dfm} program Program1; uses ... Application.CreateForm(TForm1, Form1); Application.CreateForm(TForm2, Form2);
ありがとうございます。 挑戦してみます。 ps また、揺れ出した。
Delphi2009+WinXPです。 Jpeg画像を表示するプログラムを作っていますが、 プログラムのショートカットにJPGファイルをD&Dして起動した場合に プログラムがアクティブにならず、D&Dする前にアクティブだったウィンドウが そのままアクティブになってしまい困っています。 開いているウィンドウが無い場合、普通に起動する場合などは問題ありません。 OnShowでSetActiveWindowなどを試しましたがうまくいきません。どうすれば良いでしょうか?
SETWINDOWTOP
ジェネリックスをちょっと本格的に使ってみたら内部エラーでコンパイルできず、 ちょっとマニアックなWin32APIを使おうとしたらヘッダが定義されておらず、自分で定義するはめになります。 本当にDelphiは生産性がいいんでしょうか?
開発環境すら整えられない人が何を言うんだか
ちょっとお聞きしたのですが、下のコードでButton1やButton1Click()が配置されている場所って 何部って言ったらいいのでしょうか。 また、この位置に追記するのとprivate部に追記することには動作に違いがあるのでしょうか。 TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private Number: Integer; public Text: String; end;
JEDIのwindowsヘッダとか使うのだるいんだよね。
Button1とかはpublished部になるね。Buttonとかは設計時に変更したプロパティなどを 実行時に復元するためにpublishedである必要あるけど、自分で追加したフィールドに 関しては外部に公開しないメンバはprivateやprotectedで。
>>636 なるほど。
published部は設計時に値をセットしておきたいって時に使うという認識でokですか?
単純にpublished部にpropertyとか追加しても イブジェクトインスペクタが増えるというわけでもなさそうですね。 奥が深い...
オブジェクトインスペクタですねorz
まぁ、初心者ならそんな感じでとりあえずいいけど。published部に自分でフィールド 追加してもオブジェクトインスペクタで設定できんし、通常、自分で追加する メンバを公開するならpublicでする。
主にコンポーネントが使うから当面は気にしなくていいと思う。 published部に宣言したメンバはRTTI(Run Time Type Information)が追加されて、 実行時に型情報問い合わせられる(リフレクション)ようになったりと、まぁ、色々 応用できるけど。
最後に1つ。後でpublished部に追加しようと思ったとき、 publishedって書いた下に追記するのがいいのか、 Button1: TButton; の下に追記してもいいのか、 どちらがいいでしょうか。
そこ(published)はIDEが使うとことだから触らないと考えておくべき。
んなこたーない
そう思える人はOKなので。触ってもいいの?とか聞いてる間はやめとけ、ってこと。
そうでもない
もし使うならどっちに書けばいい?という質問に、
初心者は使うなって返答は頭悪すぎるよなw
>>643 自分で書くならpublishedの下な
初心者さんはどうぞIDE任せで。中級者以上は自分でごりごり書く
650 :
646 :2011/03/20(日) 15:37:20.67
そゆこと
えっ
初心者さんはどうぞIDE任せで。中級者以上は自分でごりごり書く(笑) そゆこと(笑) IDE使ってるのに自分でごりごり書く(笑)なんて言っちゃう馬鹿はいつまで経っても自称中級者 IDEの機能を使ってできる限りごりごり書く(笑)手間を減らしてこそやっと中級者以上と言える 手になじんだエディタで書いた方が速いからなんて宣うオッサンいるけど、 実はIDEを使いこなせない言い訳でしか無いから、生産性低いんだよな マジで絶滅して欲しい
なんでそんなに悔しそうなの?w
フツウにそこら辺に書けばいい事なのに、 なに熱くなってるの? publicでもPublishedでも適当に書けばいいじゃん。 で、問題が出たら考えろよ。 いちいち、どっちに書けばいいでしょうか? って、馬鹿じゃね? IDEだって、お前より頭いいから、適当に書いてくれるよ。
関数の中身消したら関数丸ごとなくなったでござる
)、._人_人__,.イ.、._人_人_人 <´ IDEじゃ、IDEの仕業じゃ! > ⌒ v'⌒ヽr -、_ ,r v'⌒ヽr ' ⌒ // // ///:: < _,ノ`' 、ヽ、_ ノ ;;;ヽ // ///// /:::: (y○')`ヽ) ( ´(y○') ;;| / // //,|::: ( ( / ヽ) )+ ;| / / // |::: + ) )|~ ̄ ̄~.|( ( ;;;|// //// /// :|:: ( (||||! i: |||! !| |) ) ;;;|// /// ////|:::: + U | |||| !! !!||| :U ;;; ;;;| /// ////|::::: | |!!||l ll|| !! !!| | ;;;;;;| //// // / ヽ::::: | ! || | ||!!| ;;;;;;/// // // // ゝ:::::::: : | `ー----−' |__////
以上IDEが使いこなせない爺さん達の言い訳でした
>>655 そう言う親切?設計です
コンパイルしない限りは消えないし、一行でも中身が書いてれば、コンパイルしても消えないお
>>643 publishedはIDEも使ってるpublicって考えておけば良いので、お好みで良いと思います
関数もメソッドも勝手には消えない 消えるのはイベントハンドラとして自動生成されたものだけ その違いが分かってない時点で使いこなせてない
最近のは知らないけど古いDelphiだとメソッドとメソッドの間に コメントを書くと消されない。
// だけ書いてよく放置してたな
あるある
あとで実装するのを忘れないようにaとだけ書いてわざとコンパイルエラーになるようにしたり
あるある
ないある
ないない
XEの通信コンポーネントの仕様変更いい加減にしろ!
えっ
あっ
XE StarterにはInternetコントロールが含まれないようなのですが、どうにかして利用する方法は ないでしょうか?TWebBrowserさえ使えれば良いのですが。
TStringGridで、ファイル一覧を表示させ1カラム目にアイコンをだそうと思ってるんですが、 アイコン自体は『SHGetFileInfo』で取ってくる予定で、 グリッドへのアイコン描画をどうしようか悩んでるんですが。 OnDrawCellで描画タイミングごとにセルにアイコンを表示していくしかないですかね?
その通り。 だがどうしてもTStringGridを使わざるを得ない理由があるならともかく 無いならTListView使った方が良いと言ってみる
676 :
674 :2011/03/26(土) 12:28:40.30
>>675 参考にしているソースコードでもTListViewだったので、
なんでTStringGridを使おうと思ったか思い出しながらTListViewを検討してみます。
ありがとうございました。
簡単にできることを複雑にやろうとする人っているね・・・
次の日に良く考えてみるとなんで複雑にやったのかわからないとか割とよくある
で、こうすれば簡単じゃんと修正したら動かなくなる
あるあるw
あるある;;
>>673 Starterでできるか不明だけど、コンポーネントのインポートでActiveXコントロールから
Microsoft Internet Controlをインポートすればいい。
683 :
673 :2011/03/27(日) 23:33:09.32
以前Delphi7を使用していて今回Delphi XEを使い始めたのですが、 プロジェクト新規作成にて『SDIアプリケーション』『MDIアプリケーション』『VCLフォームアプリケーション』選べますよね? VCLフォームアプリケーションというのは初めて見るんですが、 ”一般的”には『SDI&MDI』と『VCL』どっちを選んで作っていくのがオススメといいますか、いいと思いますか? Delphiの良さを生かせるのはどれなんでしょうか、 作るソフトウェア内容によって選択していくものなのでしょうか。
その違いが分からないレベルならVCLフォームアプリケーションでいいと思います。
686 :
684 :2011/03/28(月) 18:54:19.13
>>685 すいません、分かりません。。
『VCLアプリケーション』はVCLを使ってるのはそのままの意味で分かるんですが、
『SDIアプリケーション』と『MDIアプリケーション』は何を使ってるのかよく分かりません。
どれ選んでもVCL使ってんじゃね?
Delphi2010/Windows7環境です ファイラーを自作しています。 GetDriveType APIで、ドライブの種類を取得でき、これに対しLANネットワークのパス、例えば、 '\\Temps\MyDir\' を渡すと、DRIVE_REMOTE(4)が返って来るのですが、 '\\Temps\'を渡すと、DRIVE_NO_ROOT_DIR(1)が返ってきます。 これはなぜなのでしょう、何か使い方を間違えているでしょうか? よろしければご教授下さい。(_ _)
689 :
646 :2011/03/28(月) 20:49:55.72
>686 MDIは昔懐かしいMDIスタイルのアプリケーション。作ってみればわかるけど、アプリケーション全体を 包み込むメインフォームの中にMDI子ウィンドウが表示されるってやつ。非推奨。 SDIはリポジトリにあるSDIアプリケーションの雛形がコピーされる。VCLはバニラ味。 >688 \\TEMPS\MYDIR\ は共有フォルダだけど、 \\TEMP\ はマシン名だから。
690 :
686 :2011/03/28(月) 20:59:34.10
>>687 そうであればモヤモヤが取れましたありがとうございます。
>>689 なるほど、ご丁寧にありがとうございます。
Delphiで活発なコミュニティって余り無いので、
このスレの存在が非常に助かっています。
エンバカのコミュニティもあるにはありますが・・・
他にもあるよ
TurboからXEに環境を変えて自作プログラムを少しだけ修正してコンパイルし直したら、 バイナリのサイズが1MB弱から2MB弱と倍くらいに大きくなってしまいました。 一概には言えないと思いますが、一般論としてこの程度は大きくなるものでしょうか。
新しいRTTIの影響です。普通ですね。
アフォな質問かもしれないけど、関数の集合としてclassを使うことはできないかな? 似たような目的の関数を1つのclassにまとめておいて使う方法みたいな。 しかもcreateしないで使いたい。
TSukoshiha = class public class procedure Gugure; static; class function Kasu: Integer; static; end;
696 :
688 :2011/03/29(火) 16:45:46.60
>>689 さん
レスありがとうございます。なるほど、そういうことだったのですね。これに関連しまして、
現在のパスがC:\の状態で、".."が指定された時は、コンピュータ、または"\\test\"の状態では
マイネットワークの階層を表示するなどの処理を考え中なのですが、イマイチ良いアイデアが
浮かびません。
どうもコンピュータとかマイネットワークってのは特殊?なもののようですね。
::{F02C1A0D-BE21-4350-88B0-7367FC96EF3C.} とかなんか、そんなIDを指定すれば希望の階層を開けました。
ということはPathIsRootを呼んで、ルートの時の指定が".."だったら所定のフォルダを開く、みたいなことに
なるんですかね。
どうも基本的に勉強が必要のようです、ありがとうございました。
>>695 静的なクラスメソッドっていうのか。知らなかった。
698 :
692 :2011/03/29(火) 18:00:02.39
>>693 ありがとうございます。しかし、しょぼいプログラムが2MBなんて申し訳ないような気がします。
いまどき、1MBも2MBも大差ないかもしれませんが。
そんなのコンパイルオプション次第
>694 C++だとネームスペースってことになるけど、Delphiではunit=namespaceの扱いなので、 かわりにclass procedure/class functionかな。virtual/overrideも効くし、それなりに 面白いことができる。staticは不要。
継承とかオーバーライドできるんだからひとつにまとめる必要ないよねぇ
>>700 関数をまとめるだけならstaticを付けないと呼び出しのコストが嵩む
TGlobalというデータモジュールに雑多なprocedureを置く俺は頭悪い?
普通にunitでいいじゃん
うん
クラスメソッドにstatic付けたら、振舞い的にはそれはもうメソッドではなくて、どちらかと言うと、そのクラスが所有者する関数って扱いになるんだね。知らなかった。
うん
Selfが無いってこと
ちょっと語弊があるけど、だいたいのイメージ的にはこんな感じ * どっか型/関数をいっぱい管理してる場所 - class procedure a; // [1] Thoge = class; public class procedure a static; procedure b; end; x := Thoge.Create(); y := Thoge.Create(); x.a; ← [1]を呼び出す y.a; ← [1]を呼び出す x.b; ← xのbを呼び出す y.b; ← yのbを呼び出す
//シリアルコンポーネントの仕様変更すんなks
はあ?
ひい!
Del6Perです var ws:WideString; s:String として ws:='Delphi'; s:='a'; ws[1]:=s; とするとエラーになります、どのようにすればよろしいでしょうか;;
ws[1]:=WideChar(s[1]); とか ws[1] := PWideChar(s)^; sに二文字以上入る可能性があるなら、文字列処理ルーチンを使用したほうがいい。
>>720 だとマルチバイトで動かない
ws[1] := WideString(s)[1];
配列が定義されてないのにいきなり[1]て
>>722 初心者の方ですか?それは配列じゃなくて文字列ですよ。
半年ROMってましょうね^^
おおおっ、みんなありがとー
>>721 さんのやり方で出来ました!
ほんんと感謝!
標準のVCLじゃないけどVirtualTreeView(VirtualStringView)に登録した全ての ノードをなめるにはどうすりゃいいんでしょう? 標準のTreeViewだったらItemsをforのループでまわしてました。 Vistaにしたら同じプログラムなのにTreeViewへのノードの登録があまりにも 遅くなってしまったのでVirtualTreeViiewを使った物に作り替えているのですが 上記質問の部分で行き詰まってしまいました。 よろしくお願いします。
GetFirstとGetNext あるいはIterateSubtree
System.TCustomAttribute で、具体的に属性を指定してどうこうってありますが、これは具体的に何に役に立つんでしょうか? 理解力がないのかもしれないのですが、ヘルプを見ても抽象的すぎて意味がわかりません。
730 :
デフォルトの名無しさん :2011/04/06(水) 18:43:40.33
誰か、WebBrowserコンポーネント使って、本格的にタブブラウザ作ってる人いない?
いるよ
732 :
デフォルトの名無しさん :2011/04/06(水) 20:16:50.68
返事ありがとう。 ところで、TWebBrowserのポップアップブロックのアルゴリズムって、 何か採用してますか? 例えば、JavaScriptのWindow.Openで開くものを開かないようにする、とか、 手動でクリックしたもの以外は開かないようにする、とか。 今、いろいろ検索しているんですが、なかなかうまく見つからないんです。
メニュー非表示 サイズ指定
とあるクラスの中でプロパティを宣言。 property ABC: Integer read FABC write SetABC; このとき、SetABCをprivateに置くわけだけど、同クラスで入力中、Ctrl+Spaceで単語入力支援機能を使った時、ABCだけ表示して欲しいんだけど、SetABCまで表示されてしまう。 これを隠す何かしらの方法って何かあるのかなぁ?
アホの子出ました
手を目の前に持ってくるとね、いろいろなものが隠れちゃうよ!
delphiでパッケージを使うときにjavaでいうところのimportみたいな方法って無いかな
private メソッドを呼べる場合と呼べない場合が、Ctrl+Space を 押した場所に依存し、定義中のクラスや、LHS のインスタンスの クラスを特定しておいて、表示か非表示かを切り替えるってことに なるので、結構面倒な割りに、メリットが少なそうだな。
739 :
デフォルトの名無しさん :2011/04/07(木) 22:40:05.27
>>733 ご回答どうもありがとうございます。
思わぬ条件でしたが、調べてみると、割と定番なアルゴリズムのようですね。実現は「初心者」向け
とはいかず、多少骨が折れそうですが…
もう少し難易度等を調べてみて、ここで相談するのが適当か、他の掲示板等で相談するのが適当か
あたりをつけて、妥当と思われるスレで相談してみたいと思います。
begin var a := TMyObject.Create; end; みたいに書けないの?
書けない いまのところは
もし>740のように書けたらどういったメリットがあるの?
Dephi以外の言語に触れたことない?
Prism使おうぜ!
>>743 それはコンパイル速度がC並みになるのと引き替えにできるほどのメリットなの?
変数宣言は上の方に固めてするっていうコーディング規約でも今ではよくあるし、 せっかくそれが言語仕様として存在してるDelphiの仕様をわざわざ変える必要は無い 途中で宣言したい場合もIDEの補助があるから苦にならないし
>>740 書けない
コンパイラに優しくて、関数で使われてる変数の把握がしやすいと言う長所でもあり
必要になったらその場で宣言。が出来ない。ちょっとしか使わなくても、全ての変数が、関数の終了まで開放されないと言う短所でもある
メモリ豊富な昨今、脅威のコンパイル速度を犠牲にする程、今の変数宣言が手間か?変数の寿命にこだわるか?と言われると疑問だが
>関数の終了まで開放されない それは最適化の問題であって宣言位置の問題とは基本的に無関係
64bit超楽しみだわ
StarterにCtrl+Shift+C相当の機能を持たせるプラグイン等はないのかな。 他の制限は十分許容範囲だけどこれだけはあまりにも辛すぎる…
StarterにCtrl+Shift+C相当の機能を持たせるプラグインを自分で作る Starterで
Open Tools API というIDEを弄る機能を使えば不可能ではなさそうだが、 一般的なレベルのユーザーには敷居が高そう。
と思ったら、StarterじゃOpen Tools APIがそもそも使えないらしい、スマソ。
やっぱ使えるらしい、大混乱。
Delphi XEの購入を検討してるものなんですが、Delphi XEにはDirectXコンポーネントが標準でついていると聞きます。 これを使えば、ウィンドウ/フルスクリーン切り替えアプリなんかも簡単に作れるものなんでしょうか?
そんな情報聞いたことないんだけどソースは?
DirectX9までのユニットはあるけど ほんとにあるだけって感じだな… 標準のものだけではお手軽開発は期待できないっぽい lib\win32\release > dir direct* /b Direct2D.dcu Direct3D.dcu Direct3D8.dcu Direct3D9.dcu DirectDraw.dcu DirectInput.dcu DirectMusic.dcu DirectPlay8.dcu DirectShow9.dcu DirectSound.dcu
760 :
757 :2011/04/09(土) 17:55:36.90
簡単ではないんですね? ありがとうございます。
DirectXなんて今までのDelphiだって使えてたじゃないか
XE買おうと思ってるんだけどPro版買えば多層型のCSデータベース組めます?
Entが必要。
サーバーはOracle、クライアントはSQLite&DOAで組んだよ。Proだけど。
ADOで十分なのでProでOK
2層ならそれでOKだけどね。
XE Pro を購入しようと思っています。 学生なので アカデミック版を考えているのですが、あと1年で卒業です。 卒業後も、使用できるのでしょうか? 又、その他制限事項が有るのでしょうか? エンバカデロのサイトで調べましたが 詳しい記述を見つけられませんでした。 私にとってはとっても高価なモノなので、しっかり調べて決めたいと思います。 ご存じの方、アドバイスを頂けたら、幸いです。
>>769 色々疑問が解けました。
CS系をマスターしたいので、XE Pro 購入を検討します。
ありがとうございました。
Starterは糞 あんなストレスフルな環境にしがみつくくらいなら C# Express使うのを強く推奨する
C#は設計思想がちょっと合いませんでした
作った人は同じなのに?
作った人が同じなら同じものができるとでも? それならDelphiやってもC#やっても何も変わらないはずですが。
昨日、delphi7からdelphiXE(starter)にバージョンアップしたんだけど、IDEの違いにビックリ。 まだチョコッと触った程度だけど、Formを表示して、それを見ながらコード書けないの?
ある方法を使えば可能(高解像度モニタが無いと実用的ではない) だが、見ながら書く必要性がよく分からない
>>777 言われてみればそうだね。
eclipseでjavaやってるときは当然formなんてないし平気だし…
単に漠然とした違和感かな。
>>778 ありがとうございます。
さっそく試してみます。
初心者です。すみません。 「フォームが移動した」っていうのは、どのイベントで感知すればいいんですか?
最近delphiに興味を持った人間です。 2009からUnicodeがデフォルトになったようですが、2009以前(6とか7)で開発されたものを2010で使えるように修正するのはどうすればいいよでしょうか? HPなどあればぜひ教えていただけると嬉しいです。 また、今現在6をダウンロードできないようなのですが、(ベクターで出来ると聞いたのですが…)今はどこでDLすればいいのでしょうか? 質問ばかりになってしまいましたがよろしくお願いします。
>783 すなおにXE Starter買っとけ。
String型変数でもUnicode?
2009以降ならString = UnicodeString
delphi 6 personal と turbo delphi ならキーと一緒に俺の横で寝てるよ 使ってないけどな! 無料版の無い言語なんかもう誰にも使われないだろ このくらいのクオリティの環境とかもう珍しくない
そうですね
スレタイがくたばれDelphiに見えた
もうくたばってるけどね
だな
まだだ、まだ終わらんよ
そう言って消えていくわけね。
Delphiのエディタくそすぎ。ジェネリックス使ってると 頻繁にアクセスバイオレーション出まくる。
ジュネリックスに頼るド素人w
ジュネリックス(笑) ジェネリクスという正しい名前すら覚えてない人がド素人(笑)
>>796 Generics をどう発音したらジュネリックスになるの?ド素人さん^^
Adobe を「アドベ」って言う人もいるしなぁ
アドベって2ch語かと思ってた
ギフとかワーニングとか言ってんだろ? ガタガタ言うなよ
ジュネリックスとかどうみてもアホだね。
おまいらの脳が頻繁にアクセスバイオレーション出てるよ
ジュネリックスw
Junerics
愛読誌の紹介か。
ぷろせでゅあ
プリキュアみたい・・・ハァハァ
幼稚園でお花作ったの
参考までに聞いてみる なんと読む? >Generics
ジュネリックスに決まってんだろクソハゲ
げねりしす
げんえりしーしゃーぷ
ゲン・エリックス
ガンダム
ジェネシス
ネグリジェ
ゲルググ
げりぐそ
全くの初心者です。 参考書を探しているのですが、XEはおろか2010ですら見つかりません。 初心者向けなものとリファレンスになりそうなものをご紹介ください。 よろしくお願いいたします。
Marco CantuのDELPHI 2009 HANDBOOKでいいんじゃないの?
>>821 Amazonで見てきました。
もう中古本しかないんですね・・・
技術書なんか中古で十分だろwww
初心者なんだけど、「Delphiコンポーネント設計&開発完全解説」って買った方がいいですか? PDF版で出ているのを知って買うべきか悩んでます。
先の無い言語を初心者には勧められねえ 買わない方が良い
複数開発系知ってるの普通だから、やるだけやってみたら? それのみってなら奨めない。
初心者がなぜ今からdelphiなのか 物凄く茨の道だと思うが
将来性でなく将来がないから 他の言語の方が資料がある分楽でdelphiと同じような事が出来るから 今からだと有料版しかないから
初心者の皆さんへ。 2chはしつこいアンチが1匹生息していますので ご注意ください。
何でも良いんじゃない? MSなんて10年前の開発ツール一切使えなくなってたりするし
一時はどうなることかと思ったけど ユニコード化したし、64ビット化も今年するのだろうし 将来不安を煽るような時期は終わったよ。 一番安いのなら1万円台で買えるのだし、文句はないです。 カントゥさんのdephi6プログラミングバイブルのPDF版は あると良いかも。
del6 personalだけど今からプログラミング始める初心者なんだけどTSonEditとTEditor、買うならどっちがいいの? unicode対応はいらないです。
VisualSution 一択。
>>835 使ってみたんだけどもっさりしてるんでだめだわ。他にある?
今からdelphi6per始める初心者って違法ダウンロードでもやってんの?
ちなみにどの辺りの法律に触れるの?
適当に言ってすみませんでした でももう配布してないんでしょ?
古い雑誌の付録についてたりするかも
初心者がそんな古い雑誌手に入れると思う?
僕の場合はSyle作者さんが兄弟の知り合いの他人だったのでCDもらう機会があったんです。
他人って何だよw
俺は拾いました 誰かが落としたようです
無断でうpしたって誰も気にしないよな 布教活動なんだから
delphi6 perのインストールキーはもう貰えないんでしょ?
キーもテキストで上げれば良いじゃないか 無くても問題ないし
インストール番号、インストールキーはCDに付いているだろ。 使用許諾コードは別に入力しなくても使える訳だし。
マジレスすると三原さん著の基礎からわかるDelphi6っていう本についてました。
本買わないといけないの?
amazonにも中古しかないですしもう入手は難しいのでは・・ del6 personalが手に入るなら本の値段くらいは出す価値あるかと。本が付いてきますし。 ただ、バグフィックスのパッチが入手出来ないのでそれが怖いですね・・。
新しいのは買わないの?
今更delphi6に1万4千円も出すなら xeの一番安いのが買えるじゃん。
※ この本の定価は2800円です
100円でごろごろあるものを14000円で出品してる人がいるのか
この手の本はさすがにブックオフでも100円では売っていない。
フォームが出るだけのプログラムで15MByteのlazarusの本か ストリップコマンドして1.5M
862 :
デフォルトの名無しさん :2011/05/21(土) 07:55:01.50
>>860 売り上げが悲惨な結果に終わりそうな気がする本だね
863 :
デフォルトの名無しさん :2011/05/21(土) 09:20:07.38
>> delphi6 perのインストールキーはもう貰えないんでしょ? Delphi2ならあるから、upしましようか?
いただきマウス
ありがとウサギ
866 :
デフォルトの名無しさん :2011/05/21(土) 12:38:35.65
DLできました
Delphiと無関係すぎワロタ
超関係ありまんがな
DEKO さん、ちまよったね。
872 :
デフォルトの名無しさん :2011/05/21(土) 20:52:21.61
>大学などでも いまどき Pascal は使わないよ Delphi 以前だと、例外無い。テンプレート/ジェネリクスがない。RTTI 相当も無い。 数値計算系の定義が甘い。多倍長整数がライブラリに無い。 アルゴリズム研究とかのコンピューターサイエンスに使うには非力すぎ。 実務を考えた場合には C# か Java および C++
あと、著者のコメント。 >私はシステム開発の会社を20年以上経営していますが、業務でPascalを使うことはまったく無く、やはりC++やJava、PHP、Perl、Rubyの仕事がメインとなっています。 >いつの間にかTurbo Pascalの本も処分してしまいました。
Delphi言語とPascalは似て異なる
アマチュア無線用の 30m の鉄塔を別宅に所有できる程度の黄金持ちのシャチョウさんの道楽出版ですな。 カットシステムも良い金づるを見つけて良かったなぁ
>>875 PascalとDelphiは、紅三四郎とプラレス三四郎ぐらい似ているよ。
まあ、pascalのコードは全部動くなw delphi言語で拡張された部分が重要 昔は「はじめてのdelphi」とか、2千円以下の入門書もあったけど、今は入門書自体が入手し辛いからな。。。 互換性は有るから古いのでも入手しとけ はじめてのdelphiに書かれたコードも現役で動くぞw
追記 はじめてのdelphiは、delphi1.0だか2.0の時代の本だ 自分がはじめてまともにdelphi触ったのはdelphi6が出はじめた頃だったが、そんな時代でも入門には役立った
880 :
デフォルトの名無しさん :2011/05/28(土) 20:25:58.50
違ぇよ!
882 :
デフォルトの名無しさん :2011/05/29(日) 00:05:26.01
むかしの入門書とか何冊かある 中にはDel6時代のやつとかもあるよ 本じたいはだめだがCDとかならあげてもいい カネかかんなくてめんどくさくなければ
うp
884 :
デフォルトの名無しさん :2011/05/29(日) 00:19:21.53
はじDelってWin3.1じゃなかったっけ? Dekphi3の頃に買ったけどWin3.1見たことなかったからちょっと戸惑った。
>>885 そうそうw
写真のWinが全部3.1の窓なのよ
コード動くのか?とビビりながら書いてたな
だからこそなのか、動いた時の感動もひとしおだった
塚越さん、わかりやすいんだけど誤植が多すぎた
それは著者の問題じゃないだろ…
にんじゃ
もんじゃ
塚地さんの鼻の穴?
にんじゃ
にんじゃ
ここも忍法帳確認スレに成り果てたか
にんじゃ
伊賀でござる
897 :
ninja! :2011/06/01(水) 14:37:17.53
佐賀でござる
もんじゃ
>>900 ありがとうございます!
足りないコンポは、機能すら分からず難解でした。
これで前進できます〜。
>どちらにしてもDel6ぐらいの古いバージョンじゃないと大変だよ
入手が難しいので、なんとかXE Starterで頑張ってみます。
丸々再構築したいという訳ではなくて、ああいうアプリはどんな実装や構造で
出来てるのか勉強したいので。
(まだ良く読んでませんが、スレッドも関係してますよね)
それにしても、日本のDelphiのコンポサイトって全滅みたいですね。
何故なんでしょう?
>何故なんでしょう? 理由はいろいろ考えられるけど、商売として成り立たなかった。というのが直接の原因。 個人の趣味の範囲でのライブラリでしか無かったから、継続したメンテナンスを期待することはできない。 金銭だけで無く、余暇時間やモチベーションとかも関係するしね 理由はいろいろあるだろうけど、 Delphi では仕事にならない。 と 仕事で使っているところは自分の技術を外に出さない の二点かな。 「自分の技術(カスタムコンポとか)を外に出さない」ってのは、Delphi コンポーネントでは 食っていけない。ということの裏返しなので、最初の理由と大差はないけどね。 Delphi に限らず、コンポーネント単体で稼いでいる企業は C#/VB も含めても、日本には数社くらいしか いないんじゃ無いかな?
全滅っていうか元々総合的なのはDelphian1つしかなかったじゃん 個人でやってるところはそれなりに残ってるだろ
おまいの髪の毛ぐらいに
減っていない。ってことくらい提示できないかな? > 906 D6/7 の頃書かれた文章で、もう5年くらい更新すらされていない物を持ち出さないようよろしく
あいにくフサフサでこまってます
普通の人はフサフサで困るなんていう発想はまず出てこないから、 それだけフサフサに憧れがあるんだろうね がんばれ
30代までは髪の毛が多くて困った 今はM状態だが
多くて困るのはホントに多すぎる人しかわかんないよね。 整わないし伸びると横に広がるしトリートメントしてリンスでコーティングして・・・めんどい。
多いなら美容院で梳いてもらえばいいだけなのに 自分がそういう方法を知らなくても、普通は美容師さんの方から提案してくるし、 そういう体験をしたことがない本物のハゲだから回りくどい言い訳しか出てこないんだね がんばれ
ホントに多い人のこと知らないな…髪質も有るけどさ 美容師にすくことを勧められるが、長さがそろわず暴れてめちゃくちゃになる 唯一効果あったのはツーブロックだけ
禿げすぎてがんばれしか言えなくなったのかな? ご愁傷様
winXP,Turbo Delphiです
ttp://mrxray.on.coocan.jp/Delphi/plSamples/250_SystemKeyHook.htm ここのサンプルをダウンロードしました。
その中のNo.3(dll無しのキーフック)のプロジェクトファイルを開いてちょっといじくろうと思ったのですが、
何もいじっていなくても2つエラーが出てきました。
片方は未宣言の識別子:ULONG_PTRだったので調べてULONGにすることで解決できました。
しかしもう片方の未宣言の識別子:WH_KEYBOARD_LLというエラーが解決できませんでした。
調べてもよくわかりませんでした。
具体的にどうすれば解決できるのでしょうか?
よろしくお願いします
const WH_KEYBOARD_LL = 13; とconst定義を追加する。
Windows APIについて 実行中のプロセス名をフルパスで取得したいんですが GetModuleFileNameExだと、 64ビットのプロセスをフルパスで取得できないんです。 QueryFullProcessImageNameだとOKなんですが Vista以降でないと使えないAPI関数ですよね。 何かいいヒントはないでしょうか? ちなみに開発環境はWindows 7 64bit、 実行環境はWindows XP〜7(32or64bit)を想定しています。
>>919 無事動きました!ありがとうございます!
923 :
918 :2011/06/12(日) 23:05:31.42
すいません! もう一つ問題が出てきました コンパイラが通るようになったあとLowLevelKeyProc関数をいじって打たれた文字を記録するようにしました。 場所はLowLevelKeyProc関数内のResultに1を代入するところです。 しかし、どういうわけかやってみると1回しか押してないのに複数回記録されてることがあります。 「unko」と打ったのに「unkoko」と記録されていたりします。 原因はわからないのですがもしかしたらと思ってkeyupの時しか記録しないようにしようと考えました しかし、どうkeyupかどうかを判別すればよいのかわからないのです どうすればよいのでしょうか? よろしくお願いします
924 :
918 :2011/06/12(日) 23:31:26.87
すいません if Code = HC_ACTION then begin のところを if Code = wm_keyup then begin にしたら一応keyupで取れたみたいです しかし、記録の方は依然として「unko」が「uunnkkoo」となってしまいます なぜなんでしょうか?
>>917 ハゲでもズラでもないのでそちらには行けません
どっちでもいいからさっさと消えろハゲ ていうかここまで必死に否定したら逆効果だと思わないか普通… ハゲてる人の心情は分かんないわ…
ハゲ言うやつがハゲじゃ!!!
ハゲは喧嘩も子供並み
チン毛がハゲてきました。
>>924 > しかし、記録の方は依然として「unko」が「uunnkkoo」となってしまいます
> なぜなんでしょうか?
つコーラック
おまいのズラも取れたしな
ズラとか…下品な言葉だな ファッションなんだからウィッグと言ってくれ
>>934 分かったズラ
これからはウィッグと言うズラよ
ヅラだろ
お前ら山梨県民馬鹿にしてんのか?
ハゲハゲいうな。みっともない。 毛が無くたって立派な人もいくらでもいる。
ハゲなのに?
デビューしました 2005の本と全然違っていて、悩んでます。(T . T)
あと、XEで作ったプロジェクトが2010でエラーになります。 Exeはあるのに、無いという。。。
>>940 どう違うの?
と言うか、pascalの文法覚えりゃ、ヘルプで十分理解出来ると思うんだが
最新版でParadoxテーブル扱えますか?
扱えるが、お勧めしない。実動作環境のことも考えたほうがいい。
旧来通りの使い方 ネットワーク環境でRW(といっても書き込むのは特定PCのみで他は参照のみ) 厳密な排他制御が必要なのはRDBMSのテーブルを使う。 Win7の64bitだとBDEインストール出来ないから
BDEインストールは出来る
メニコアcpuだと、BDE接続が異常に遅くなるので要注意。アプリ直せるのなら、win api叩いて、シングルコア使用にすれば、大丈夫だって、でこっちが言ってた。 ダメなら、biosでとめるんだったかな。
サポート切れから何年経つと思ってるんだ…
Pulsar ですら BDE をインストールするぞ。 >メニコアcpuだと、BDE接続が異常に遅くなるので要注意。、でこっちが言ってた。 それは誤解だ...
950 :
デフォルトの名無しさん :2011/06/18(土) 07:50:26.48
浦島太郎です、教えてください。 今、XP+D3.1を使って自分専用の小物プログラムを使っています、数値や文字列を入力しロードセブ、プリントアウトするだけの単純な物です。 通信とかデータベースは使いません(使えません)。 これで出来たEXEを64Bitの7のなどで使った場合何か不具合が起きるのでしょうか? 金が無いのでCORE I7もW7(64)も2010も買えません、よろしくお願いします。
Visual Studio Express / C# を無料で入手し、C# で書き換えなさい。
>>950 D3.1で問題が起きそうだな
D9とかには出来ないのん?
どっちにしろ、自分の環境で動けば良い気がするが
そんな古い環境だと、C#で作り直しても重くて使い物にならないだろうし
って、delphiスレやん。。。 delphiXE買って作り直しては?
>金が無いのでCORE I7もW7(64)も2010も買えません っていってるだろ。ボケが。
d3なら流石に最近の無料環境をおすすめするよ
GUIがいらないならC言語でもいいだろ いくらでも無料のあるし
>>954 安いエディション買う金も無いのか。。。
>950 Starter SKUは15000円くらいですよっと。 現状きちんと動いているプログラムだとすると、x64上での動作は問題ない。ただしVista/7のUACとの 関係から、Program Filesの下にあるファイルを読み書きしているとそのファイルは別のところにリダイレクト される。リダイレクト先は一定なのでプログラムからは正常に動作しているように見えるけど、 エクスプローラで見るとそこにはファイルがない、ということに。 ひょっとしたらDEPに引っかかるかもしれんが、その場合は互換モードの指定でいいはず。
959 :
浦島太郎 :2011/06/18(土) 18:50:00.47
早速の回答をいただきましてありがとうございます、自分がDelphiが好きな理由は コンパイルが早い、実行速度も結構早い ・・・一行書いてはF9 EXE単独で動作するので取り扱いが楽 以前は安く売っていたので自分でも買えた、の3点です。 そのうち、core-i7のPC+Win7のマシンを買い、次にstarter SKUを手に入れようと思っています。 しかし、そんな環境は若葉マークがF1マシンに乗るような物でどうにも手に余りそうな予感がしています
961 :
デフォルトの名無しさん :2011/06/18(土) 20:17:44.69
Starterは \18,000円だよね
コンパイルは早いけど最適化が甘く、処理に無駄があるって印象
そこまで最適化が必要なアプリってなんだ? シューティングゲームか?w
Starterは2種類ある。
>961 建前はそうだけど、無償製品からであってもアップグレードの対象になるわけで。
966 :
デフォルトの名無しさん :2011/06/18(土) 22:22:56.19
無償製品は どこにあるの?
C#のExpressでもEclipseでもどうぞ
> Delphi StarterおよびC++Builder Starterのアップグレード価格はだれが利用できるのですか? > アップグレード価格は、Delphi、C++Builder、Turbo Delphi、Turbo C++、あるいは他の有償または無償の任意のIDEやソフトウェア開発ツールを持っているユーザーが対象です。 > > アップグレード価格で購入した場合、旧バージョンや他の製品のインストール確認などが必要ですか? > いいえ。Starterのアップグレード価格をご利用いただいたお客様は、他のツールをすでにご利用いただいていたという前提で、特にチェックは行いません。
969 :
デフォルトの名無しさん :2011/06/18(土) 23:49:24.14
Delphiいいと思うよ 簡単でそこそこの自分用アプリを作るには最適 Javaは大げさ C#は今後どうなるかわからない Delphihは20年くらいあんま変わらず。。。だっけ?
DelphiスレでC#を薦める池沼
DelphiスレでLazarusを薦める池沼
972 :
デフォルトの名無しさん :2011/06/19(日) 10:04:22.75
池沼って何ですか? 水に関係することなのかなぁ?
>池沼って何ですか? キミのこと。
\ 丶 i. | / ./ / \ ヽ i. .| / / / \ ヽ / わ た し で す \ _,, ---一 ー- ,,,_ 、 _,,,, _,, -.'" ` 、 -‐ ー ミ三ミ三ミ三ミミ ヽ_, -==三ミ彡三ミミ ,,=-== ==、 iミ=-、_ _,,ンミミ三ミ三ミミ] -彡-一 ー-、 r一 ーミ、|ミミ三ミ=-' -- __ _, -==彡ミ彡ミミミ| ン| ,=て)> (|ー| ,て)>、 ||三ミ彡==-' _ ,彡彡三ミ三ミミレ'~ .|. ' | ヽ ` |ミ三彡三=- = 二 (_彡三ミ彡ミミミ' ヽ、 ノ \__ノiミ彡ミ三=ー ー-=二三ンーミミミ `ー /(_r-、r-_) .|彡ミ三=-、 )(_ミ彡ミ| i' ヽヽミ | : : : __ : :__: :i .|彡ミ三=-、 -- と彡ミ彡ミヽヽ<ヽミミ |: ン=-ニ-ヽ、 .|彡ミ三==- 彡ミ彡ミミヽ ) ` 、 .' <=ェェェェェン | |彡ン=-= -- -‐ -==彡三ミ `ーヽ : : : : : :i: : `ー--一'' : : ノミ三=='' '' てノこミ彡三ミ`i : : : : : :ヽ: : : . .:, :/ミ三=-、 '' 三ミ=三三ミ|ヾ、: : : : :ヽ: : : : : : : : :_ノ:./三=-' -=='' ̄ . : ̄ ̄ ̄ 彡 ` / / ヽ \ / 丶 \ / / / | i, 丶 \ / / / | i, 丶 \
池メンのことだよ
iniファイルには [data1] aaa=1 bbb=2 という感じに書きますが、aaaの部分に「=」の文字を使いたいときはどう書けばいいんでしょうか? また、[aaa]と書きたいときも困ってしまいます。ぐぐったら行頭に;を付けるとコメントになる、くらいしか分かりませんでした。 よろしくお願いします。
978 :
976 :2011/06/21(火) 00:30:09.41
>>977 ここに載ってるのはキーでなく値のほうの書き方ですね。でも知らなかったので参考になりました。d。
D6 で使うSendMessageで質問です。 TForm1 = class(TForm) Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Edit4: TEdit; フォームにエディタが並んだ受け側ソフトにテキストを送る場合、 〜〜〜 var WHandle,EHandle: HWND; i: integer; str: string; begin str:='123456'; WHandle := FindWindow('TForm1', nil); EHandle := FindWindowEx(WHandle,0, 'TEdit',nil); if EHandle <> 0 then begin for i := 1 to Length(str) do begin SendMessage(EHandle, WM_CHAR, Word(str[i]), 0); end; end; 〜〜〜 'TEdit'だけでは最後のTEditにだけ入ります。 個別に送り込むにはどういう書き方をするのでしょうか?
Editが自分のものならFindWindowする必要ない
>>980 今作っている物は送信/受け取りは自分の個別物ですが、
仕様をOPEN して他人(他製作言語)も使う予定です。
983 :
979 :2011/06/21(火) 11:45:00.39
>>982 そうですね、Delphiの「ウインドウハンドルの取得」方法になるのですよね。
Winspector は作者のサイトまでたどり着けませんでした.....
「フォーカスのあるコントロールのハンドルを取得」では個別に飛びますが、
Delphi のWinSight を見ていても、受けアプリ側を再起動させると
Child に来る Edit1 〜 Edit4 の値(フォーカスの来る Edit 項目)
をOSが新しく割り当てるので変ってしまうのですよね。
組もうとしているのはグラフ用の値入力の為の送信部分です。
各要素を(他人作も扱えるように)ホストプログラムから秒〜数十ミリ秒単位で送り、
送信完了後トリガーさせてやるという部分でして。
ボタンは Caption を指定すれば複数並べても振り分けられるのです。
TEdit:1項目にまとめて送る>グラフソフト側で各要素に分解>グラフ描画
では、数値要素に FloatToStr が複数来る為、文字数制限と時間ロスが発生しないものか?と
グラフ(受けソフト)側は
シリアル処理(TEdit)より パラレル処理(Edit1 〜 Edit4 ※うまくいけばもっと増える)
で行う方が要素抜けにも即応できるので。
もうすこし足掻いて、解決策が見つからなければ TEdit 1項目に詰め込むようにします。
984 :
979 :2011/06/21(火) 12:16:13.30
985 :
979 :2011/06/21(火) 14:11:03.32
うまくいきました、結果報告 -------------------- 受信側: procedure TForm1.FormCreate(Sender: TObject); begin SetWindowLong(Edit1.Handle,GWL_ID,$00000001); // コントロールIDの動的割り当て SetWindowLong(Edit2.Handle,GWL_ID,$00000002); SetWindowLong(Edit3.Handle,GWL_ID,$00000003); SetWindowLong(Edit4.Handle,GWL_ID,$00000004); end; -------------------- 送信側: var WHandle,EHandle: HWND; i: integer; str: string; begin str:='123456'; WHandle := FindWindow('TForm1', nil); EHandle := GetDlgItem(WHandle,$00000001); // 'Edit1' // Windows.SetFocus(EHandle); if EHandle <> 0 then begin for i := 1 to Length(str) do begin SendMessage(EHandle, WM_CHAR, Word(str[i]), 0); end; end; 〜〜〜
フックについて質問させてください。 ファイルを移動した際に、移動元と移動先を記録しておくプログラムを 作りたいと考えております。デモにあったコピーフックを用いて フォルダの移動に関しては作成できたのですが、ファイルの移動は 検出することができないようです。 ファイルの移動をフックすることはできないのでしょうか。 わかる方いましたら、よろしくお願いいたします。
できるけど Delphi の話では無いので、どこか適当なところで尋ねるか MSDN ライブラリで API を探しなさい