2 :
◆XcB18Bks.Y :2008/06/24(火) 16:25:01
前すれの
>>995 さん〜
さんくすです。
Formatというのがあったんですね。
printfとは書式が違うみたいですが、とりあえず無事に文字列に変換できました。
1乙ー
5 :
デフォルトの名無しさん :2008/06/24(火) 21:32:28
病んでるなぁ
Delユーザっておかしいのが多いよね
8 :
デフォルトの名無しさん :2008/06/24(火) 23:23:22
質問です 当方デルファイ7を使用しているのですが やはり、WIN Vistaでは 動かないのでしょうか .NETじゃないから ダメですかねぇ 実際 Vistaに、のせたら 「ザワールド!!」 ・・・と言うかんじでした
あてずっぽだけど、互換モードで起動してみたら?
10 :
デフォルトの名無しさん :2008/06/25(水) 00:33:50
あるんすか?
11 :
デフォルトの名無しさん :2008/06/25(水) 00:36:54
やってみうます
ショートカットを右クリック→プロパティね。
13 :
デフォルトの名無しさん :2008/06/25(水) 08:24:15
Delユーザっておかしいのが多いよね
VB や VC++ を選ばない時点で
賢い
>>8 Delphi7 Vistaで検索してみると
いくつか対応すれば基本的にはうごくっぽい。
18 :
8 :2008/06/25(水) 19:31:47
BDE使ってるせいか? ピクリとも動きませんでした・・・ プロパティからXp Sp2とか選んで チャレンジしたんですけどねえ ググッテきます
BDEならUAC
BDEか… 使ってないせいか、ガンガン動いてます。
23 :
デフォルトの名無しさん :2008/06/25(水) 22:39:31
24 :
デフォルトの名無しさん :2008/06/26(木) 00:12:31
推奨NGEx:馬鹿|バカ
それじゃあエンバカデロの話題もNGになってしまうのでは?
フサー delphiworld消えたんで祝祭日カレンダーコンポーネント 2000をどっかにうpしておくれ
そういうの作者に無断で配布してよいのだろうか?
以下のコードがありまして、Button1をクリックするとStringGridのセルが 両方とも00になります。なんででしょう? procedure TForm1.Button1Click(Sender: TObject); var H : Byte; S : string; begin H := $FF; SetLength(S,2); BinToHex(@H, PChar(S),1); StringGrid1.Cells[1,1] := S; H := $00; BinToHex(@H, PChar(S),1); StringGrid1.Cells[1,2] := S; end;
BinToHexの方を晒してくれないと
Stringの参照カウンタが悪さしてるのか変なことになるな。 StringGrid1.Cells[1,1] := Format('%02X', [$FF]); するか固定バッファで var buf: array[0..2] of Char; BinToHex(@H, @buf, 1); buf[2] = #0; StringGrid1.Cells[1,1] := buf; にした方がよさげ
こうなのか? procedure BinToHex(Buffer, Text: PChar; BufSize: Integer); assembler; @Hでコンパイルエラーが出そうですけど。
環境書き忘れてた。BinToHexはDelphi7のClassesに実装されてる手続きです。 ちなみに2回目のBinToHexの前でSetLengthしたら正常な値になりました。 なんか変だけど、こんなもんなのかな。
IntToHexを使用しない理由は?StringではなくPCharを操作する関数は意味がわかるまで 使わないほうがいいと思うけど。
BinToHex(@H, @S[1],1);
>35 や、だからそういう質問が出る間はPChar系の関数はやめとけって意味だ。 UniqueStringかなんかで文字列実体の参照カウントが1になるようにしとけ。
>>35 間違ってるというか、コンパイラは BinToHexで Sが変更されたのが判らないので
Cells への代入の後複製を作らないで、そのまま実体を次のBinToHexに渡してしまう
>長い文字列型の変数はポインタであるので,2 つ以上の変数が追加のメモリを
>使用することなく同じ値を参照することができます。
という特性の為、
StringGrid1.Cells[1,1] と StringGrid1.Cells[1,2] が結果として同じポインタを指してしまう。
>添字付けを使って文字列の中にある 1 文字の値を変更するときは,
>文字列値の参照カウンタが 1 より大きい場合にのみ,
>文字列値のコピーが作成されます。これは書き込み時コピーと呼ばれます。
39 :
デフォルトの名無しさん :2008/06/29(日) 09:55:35
ああ、そういうことか。 Cellsもstring型だから、同じsを指すわけね。
しかしDelphi布教といっても開発部門売却って... しかも新Verは初心者には高い値段だし... もう初心者お断りのプロ用のツールしかし企業には相手されていない そんな言語に成り下がってしまった感じがするよ 思うに販売戦略を間違った方向にいっちゃったんだね Del使いとしては悲しすぎる
スレ違い。をっちゃスレへどうぞ。
5Pro を使い続けている俺は勝ち組。
ちょっとまった新Verおいくら? 怖くて調べれないYo
Proは68000で据え置きじゃ?
ただで配っちゃえばいいのに
それだと儲からないということを6で学んだのだろう。
D8で儲かることを学んだのかよ? Turbo Explorer の意味は何?
必死だな
何でこのおっさんたちはスレタイが読めないの?
ガキばっかりだな
最初はPro高いかもしれんけど、バージョンアップは3万くらいだよな。 3万って、この業界じゃ日給程度かそれ以下だし、そこまで騒ぐほど高いもんでもないがなあ。
desktop databaseを使ってhoge.dbを作ったのですが、これに関連付けするために tableのプロパティでtablenameにhoge.dbと入力してdbgridに表示させることはできました。 hoge.dbはc\programfiles\commonfiles\borlandshared\dataに置いておかないとダメなようで tablenameのところにたとえば./hoge.dbと相対パスを書いてみてもだめでした。 配布をする際にexeファイルと同じ場所にdbがあっても読み込めるようにするにはどうしたらいいのでしょうか
enter押しても改行できなかったり、space押しても文字が消えてしまうのはどうにかなりませんか。
>>54 exeファイルのディレクトリを指定してみたら?
>>55 意味が分からん
自己解決しました sry
誰だよお前w
Insertですね
>>56 プロジェクト→オプション→ディレクトリ/条件
ですかね;見てるんですがそれっぽいのがない希ガス
>>60 いやそうじゃなくてExtractFilePathにApplicationのExeNameを指定してそんでhoge.dbの先っちょにくっつける
質問したいんですけど ShellListView を使うとフロッピードライブが必ずガガガって鳴るんで ShellCtrls.pas の中の どの部分を変更すると鳴らなくなるか解かりますか?
63 :
62 :2008/07/02(水) 10:27:52
すいません ShellTreeView の方でした
FDDの電源抜きっぱなしだから知らなかった
>>64 そうですか、やっぱり難そうなのであきらめます
ありがとうございました
外部アプリを操作したいんですが ShellExecute(Handle, 'OPEN', 'C:\Program Files\EmEditor\EmEditor.exe', nil, nil, SW_NORMAL); Sleep(1000); hndl :=FindWindow(nil,'無題 - EmEditor'); Edit4.SelectAll; Edit4.CopyToClipboard; Sleep(500); SendMessage(hndl, WM_PASTE , 0, 0); Sleep(500); SendMessage(hndl, WM_KEYDOWN, 32, 0); Sleep(100); SendMessage(hndl, WM_KEYUP, 32, 0); Sleep(500); SendMessage(hndl, WM_PASTE , 0, 0); WM_PASTE はできるのにWM_KEYDOWNができません
つ keybd_event
>>68 ありがとうございます
出来たのはいいのですが
>>67 ではいけないのでしょうか?
71 :
デフォルトの名無しさん :2008/07/03(木) 17:44:08
出来ない理由を知りたいと思うのはいいことだと思うが
俺もそう思う
じゃあ俺も
オレもそう思うが、ただ、じゃ何でSendMessageで出来ないか 少しは調べりよ 投稿の時間的に みたいなことじゃね? 言い方は幼いが
出来ない理由がわからないから聞きに来たんじゃね?
調べるためにここに来てるんだろうしな
あくまでも、EmEditor側の処理方法による。
何にしてもlParamの値くらいちゃんとしたの設定しろと 本題には関係ないと思うけどな、ボク調べる気ありません感まるだしだ
ここは超初心者用だお 自分で何やっているのかさえ分からずに質問している人もいるレベル
煽り、文句レスの方が訳わかんね。 答えれないならスルーして黙ってろと。
ageて暴言だけ吐くだけ奴くらいパターン検出してスルーしてくれよ
CPUのクロック数を出来るだけ正確に計測するにはどうすればいいのでしょうか? Jane Styleのバグレポートは毎回同じ数値を出しますが、起動時に測った数値を表示しているだけでしょうか?
84 :
83 :2008/07/04(金) 17:49:03
すみません、自己解決しました
いいけど 現象、原因、影響、対策、要因、作りこんだ理由、防げなかった理由、 再発防止策、などなど晒してくれるとウレシイ
おとこわりだ!
男割り・・・?ウホッ
>>83 自己解決したら、あとの人のためにももしかしたら協力して調べてくれた人のためにも、
解決法を書いていきましょうや
CPUネタはスレちがいです
__ _____ r―‐┐┌――┐ _ 厂| __厂|__ / ∠___, |______ | /_/7 / 7 厂| | く\ || | | |__ __| l ___ | | | _/ 〈_ L/ [_| ヽ」┌─┘└─┐ | | _ |__ __| | |___| | ____| | | 口 口 | /Z_冂_ 〈\.└─┐┌┐│ | ヽ__/ | /┌┐ _ \ l ___ | | | | 口 口 l〈_,r┐┌┘ \/__| L_」 |_ \__/ ヽ、二__ノ ヽ/ | |___| | | | ̄ ̄ ̄ ̄ |┌ー┐|┌ ┘└┐ |__ ___| 厂| _厂|__ l ___ | | | || ||└ ┐┌┘ / 〉 / \ | | └┐┌─┘ | |___| | | ヽ____/| || || | | / / //\ \__ | |_,ノ| | | l二二l l______| ヽ_____ノ |.」 [__| |_.」 く_/ く_/ \_ノ ヽ__/ ∠_/ l二二l
Delphi使いは馬鹿って本当なんですか?
92 :
91 :2008/07/05(土) 08:20:05
すみません、自己解決しました
93 :
デフォルトの名無しさん :2008/07/05(土) 08:59:20
まさに思うツボwww
変な奴が別板から湧いてるな。
変な奴が別板から湧いてるな。
delphinoIDEのタブ順序の設定みたいに選択した部分をクリックやドラッグで上下に移動するのは どうやって作ればいいですか。
delphi6のエディタの行番号はどうすればでてきますか?
100 :
デフォルトの名無しさん :2008/07/07(月) 23:04:31
>>98 なんだ、その頼み方は?
お前はまともな礼儀も習わなかったのか?
バカヤロ。
102 :
98 :2008/07/08(火) 19:55:58
>>101 ありがとうございます。
有るリストの中身の順番を手動で任意に設定したかったのです。
DBからリストを読み込んでGRID形式で表示して表示順のインデックスフィールドの
値を任意に変えるのをあのタブ順の変更のような形でやりたかったので。
103 :
デフォルトの名無しさん :2008/07/09(水) 00:41:21
どうしたんだ?ん? また職場で嫌なことがあったのか?
推奨NGEx:クソ野郎|馬鹿|バカ|どうしたんだ?
お兄ちゃんたち、宿題もってきたよ。 私のために解いてね。 配列を使ったプログラムで、Editに入れた数字をButton1を押すごとにMemo1に追加していって ある程度追加したところでButton2を押すとその数字に応じた長さが棒グラフのようにPaintBoxに表示される プログラムを作りなさい。 お願い!
TXPToolBarMenuってどこにあるんでしょうか・・・ ググったらbagelという専ブラのコントロールのようだと分かったんですが、 そのソースを見てもさっぱり分かりません・・・ ComCtrlsXP.pasというユニットが見つからないのでそれにあるのかな? こいつもググっても出てこないんですがこれはどこにあるんでしょう・・・
111 :
98 :2008/07/09(水) 21:11:42
D7でQuickReportで帳票を作っています プレビュー画面で印刷ボタンを押すとすぐに印刷が始まってしまいますが、印刷先を変えたり、 一部ページだけ印刷したいときに、うっかり全部印刷してしまうのが悲しいので、印刷ボタンを 押したら、印刷設定のダイアログを出して変更出来るようにしたいのですが、どうすればいいでしょうか。
112 :
デフォルトの名無しさん :2008/07/09(水) 21:15:21
適当に作ったら巧くいかんかった上に配列使ってなかった。 配列定義してみたが使ってないことに気付かなかった。 明日も早いし良い感じで酩酊してきたんでもう寝る。 酒入ると何がしたいのかサッパリになるねぇ。 type TMySharp = class FColor : TColor; Fx1,Fx2,Fy1,Fy2 : Integer; constructor Create(memo:TMemo;line:integer); procedure Draw(TargetCanvas:TCanvas); end;
113 :
デフォルトの名無しさん :2008/07/09(水) 21:16:55
constructor TMySharp.Create(memo: TMemo; line: integer); var dc : THandle; tm : TTextMetric; begin dc := GetDC(memo.Handle); try GetTextMetrics(dc, tm); Fx1 := memo.Left+memo.Width+1; Fx2 := Fx1+StrToInt(memo.Lines[line])*2; if line = 0 then begin Fy1 := Memo.Top; Fy2 := Memo.Top+10; end else begin Fy1 := Memo.Top+(tm.tmHeight*line)-(line*6); Fy2 := Fy1+10; end; FColor := $99FF66; finally ReleaseDC(memo.Handle,dc); end; end;
114 :
デフォルトの名無しさん :2008/07/09(水) 21:18:14
procedure TMySharp.Draw(TargetCanvas: TCanvas); begin TargetCanvas.Brush.Color := FColor; TargetCanvas.RectAngle(Fx1,Fy1,Fx2,Fy2); end; procedure TForm1.Button1Click(Sender: TObject); var i : integer; begin if TryStrToint(Edit1.Text, i) then Memo1.Lines.Add(Edit1.Text); Edit1.Clear; end;
115 :
デフォルトの名無しさん :2008/07/09(水) 21:19:19
procedure TForm1.Button2Click(Sender: TObject); var MySharp : TMySharp; i,j,k : Integer; ArryInt : Array of Integer; begin try j := Memo1.Perform(EM_GETFIRSTVISIBLELINE,0,0); SetLength(ArryInt, Memo1.Lines.Count-j); k := Memo1.Lines.Count-j; for i := j to j+k-1 do ArryInt[i] := StrToInt(Memo1.Lines[j+i]); for i := j to j+k-1 do begin MySharp := TMySharp.Create(Memo1,i); MySharp.Draw(Canvas); end; Finally freeandnil(MySharp); end; end;
117 :
116 :2008/07/09(水) 21:58:30
メモから配列に入れるルーチンと、 配列からグラフを描画するルーチンを分けるといいかも。
119 :
116 :2008/07/09(水) 23:15:44
var n : integer; a : array[1..20] of integer; // 長さ 20 の配列の宣言 Edit1.Clear; Edit1.SetFocus; end; procedure TForm1.Button2Click(Sender: TObject); // データの入力 // begin Memo1.Lines.Add(Edit1.Text); n := n + 1; // n を 1 ふやし, a[n] := StrToInt(Edit1.Text); // Edit1 に入力された整数を // 配列 a[n] にしまう Edit1.Clear; Edit1.SetFocus; end; procedure TForm1.Button3Click(Sender: TObject); // 棒グラフの作成 // var i : integer; begin with PaintBox1.Canvas do begin ?? ?? 問 2: 以下の作業を,i = 1 から n まで, ?? n 回繰り返す ( for 文 または repeat 文,while 文を用いる) ?? ?? 作業: ?? i の値に応じて x 方向に位置をずらしながら, ?? a[i] に対応する高さの細長い長方形を描く ?? end; Edit1.SetFocus; end; end. こんな感じなのですが・・・
120 :
116 :2008/07/09(水) 23:16:14
問い2の部分がわからない;
>>119 上がよくわからんが 配列a はグローバル変数かクラスのフィールドだよな?
だとして、
問2:
for i := 1 to n do
DrawRectangle(i, a[i]);
こんな感じかな?DrawRectangle の中身は適当にかけばいいと思う。
はいつぎの質問
procedure TForm1.Button1Click(Sender:TObject) begin Memo1.Add(Edit1.Text); end; procedure TForm1.Button2Click(Sender: TObject); var I,Y:Integer; R:TRect; begin PaintBox1.Canvas.Brush.Color := clRed; R := Rect(0,0,0,4); for I:=0 to Memo1.Lines.Count-1 do begin R.Right := StrToInt(Memo1.Lines[I]) * 5; PaintBox1.Canvas.FillRect(R); OffsetRect(R,0,4); end; end;
tifファイルを開くにはどうしたらいいでしょうか。
こじ開ける
127 :
112 :2008/07/10(木) 20:26:38
出題した方スマン。 全然見当違いの解答やった。 おまけにメモスクロールするとエラー出るし。
TurboDelphi Interbase7.5 WindowsXP Nod32ファイアウォール付 Interbase自動起動に失敗します。 起動時にシステムトレイに入りかかるんだが、消えてしまう。 interbase7.5 managerの設定では、自動起動、「InterBaseをWindowsサービスとして起動する」 のチェックははずしてある。 でもなんで「InterBaseをWindowsサービスとして起動する」とするとサーバーにログインできないんかね。 なぜかIBCosoleではInterBaseがWindowsサービスでも接続できるんだが、 ほかでは、BDEはだめだし、設計時にも接続できないんだよね。
130 :
109 :2008/07/12(土) 02:28:37
>>129 ありがとうございます
しかしTheme Managerのすべてのプロパティをオンにしてもメニューがボタンぽくなってしまいます
自分で描画しようと思うのですが、TMenuItemがポップアップされているか確認するにはどうすればいいんでしょうか?
TurboDelphiとMicrosoftのVisualStudio(VB or C#)は共存できますでしょうか? 両方入れたいのですが、大丈夫かどうかご教示ください。
問題なし。 かち合うのはインストール時の標準のデバッガの上書きをし合うくらいだろう。
delphi 2007って安定してますか?
どういう意味で?IDEは普通に動くけど、終了時にたまにコケる程度。
>>134 2006が一番安定してるって聞いたことがあるので2007はどの程度なのかと思い質問させていただきました。
参考になりました
そういう意味では2007オススメ。2006より問題が少ない。
>>136 体験版あるみたいなので使ってみようと思います。
ありがとうございました。
もしこの先Vista以降の環境で使う予定があるなら2007にしとくのが無難かな。 ガリレオ以前のIDEはVistaだと挙動がかなりやばい。
質問です デルファイ7です すっごく前から気になっていたんですが デルファイのプロパティのキャプション(NAME?) をコピーして、エクセルに貼り付けしようとすると object なんたらかんたら size なんたらかんたらって でるんですけど、これ何とかならないですか たとえば LblHoge をコピーして張り付けると LblHogeだけの コピーが欲しいのに上記のように長ーい呪文みたいのが付いてくるんです 回避する方法ありますか知っていたら教えてください
コピー元が間違ってる。オブジェクトインスペクタのCaptionの値のところでコピーしないと駄目。 今のやり方で何がコピーされてるのかはメモ帳にでも貼り付けてみりゃわかるだろ。
141 :
デフォルトの名無しさん :2008/07/12(土) 22:06:09
ではNameをコピーするにはどうすればいいんでしょうか 仕様書を作る時 captionもnameも(captionは日本語でnameは英語) 必要なんです^^; いちいち編集するんです・・よね? ちなみに いま7環境ないんで試せないんで デルファイのターボで試したら どちらも(caption ,name)も普通にコピーできた!
143 :
140 :2008/07/12(土) 23:48:05
>141 > 今のやり方で何がコピーされてるのかはメモ帳にでも貼り付けてみりゃわかるだろ。
144 :
109 :2008/07/13(日) 00:12:40
>>142 ありがとうございます
TMenuBarでテストしたのでそれはないです
SpTBXLibも使ってみたんですが、なんだか変だったり、常時XPスタイルっぽかったりして使いづらいです
自分で描画するのはメニューを出してる時に青くならないのに目をつぶれば行けるんですが
完璧主義っぽいところがあるので許せないんですよね・・・
>>144 たぶんプロパティの設定を間違ってるか、何か勘違いしているかどちらかだろう
好きにすれば?
>>138 Delphi6製のGUIアプリとか、Vistaだとラベルが真っ白になったりするよな
アレ何なんだろう
manifestリソースだけで無理矢理視覚スタイル適用してるため。 TGroupBoxなど、VCLは非標準的方法で描画しているコントロールが結構あるんで そういうところ対策していないと表示がおかしな事になる。
もういっそのこと開き直るしかない
152 :
109 :2008/07/13(日) 17:16:46
>>150 そこにキャッシュされてたんですか・・・
ありがとうございました!
gifをTGIFImageで読んで、TBitmapにCanvas.Drawで描画したいんですが、なぜか描画されないようです TImageだと描画できるのに何ででしょうか? OnCreateの中だと無理なんでしょうか
空っぽのビットマップだからとか? いずれにせよエスパーが必要な質問はやめれ。
TBitmapに描画したあと、OnPaintでFormのCanvasに描画しないとダメだよ。
156 :
131 :2008/07/15(火) 23:06:03
>>132 遅レスですが、ありがとうございます。
両方入れてみましたが、とりあえず問題ありません。
157 :
デフォルトの名無しさん :2008/07/16(水) 00:48:29
158 :
153 :2008/07/16(水) 11:16:22
こんな感じなんですけど・・・ この例のようにファイルが1つだけならいいんですが、 今やりたいのは2つ以上あるファイルを起動時に読み込みたいんです procedure TForm1.FormCreate(Sender: TObject); var Gif: TGIFImage; Bmp: TBitmap; begin Gif := TGIFImage.Create; Bmp := TBitmap.Create; try Gif.LoadFromFile('Gifファイル.gif'); Bmp.Canvas.Draw(0,0,Gif); Bmp.SaveToFile('Bmpファイル.bmp'); finally Gif.Free; Bmp.Free; end; end;
>>158 Gif.LoadFromFile('Gifファイル.gif');
Bmp.Width := Gif.Width; //追加
Bmp.Height := Gif.Height; //追加
Bmp.Canvas.Draw(0,0,Gif);
試してないけど、こうすればできるかも。
161 :
153 :2008/07/16(水) 14:52:41
>>159 ,160
そうだったんですか、ありがとうございました
ListView のカラムをクリックで ListView1.AlphaSort と Compare:=CompareText(Item1.SubItems[(Colum-1)],Item2.SubItems[(Colum-1)]); を 使ってソートしてるんです。 でも、半角や全角ひら漢字はちゃんと並ぶんですけど 全角英数カナが変な並びになってしまうんです。 SortType は色々ためして見ましたけど結果は同じでした。 もし解決方が有ればお願いします。
つAnsiCompareText
164 :
162 :2008/07/16(水) 23:06:54
>>163 出来ましたw
そんな便利なのがあったんですね、本当にありがとうございました。
165 :
デフォルトの名無しさん :2008/07/17(木) 13:01:05
推奨NGEx:クソ野郎|馬鹿|バカ|どうしたんだ?|あほう
デレツンじゃなくヘルメンです
169 :
デフォルトの名無しさん :2008/07/17(木) 22:50:47
ツンデレQA大人気
labelって半角文字はワードラップしてくれないんですか? してくれる方法があれば教えて下さい。
WordWrap=Trueにすれば普通にできるはずだが 聞き方からするとワードラップじゃなくて、単語の途中で改行させたいのか?
172 :
170 :2008/07/19(土) 02:37:49
単語の途中というかaaaaaaa aaaaaaaaaaaaaaaaaaaaa 見たいな感じにしたいんです やり方は、WordWrap=Trueにして、メモのChangeのイベントで label1.Caption:=memo1.Text; でMemo1に入力すると 全角は上手く端っこで改行するんですけど 半角がそのまま、aaaaaaaと言う風に、まっすぐ通り過ぎて行くんです。 ちなみにメモの方はちゃんと半角でも上手く改行してくれるんです。
つまりそういうことでしょ。英語は単語間の空白で改行する(=ワードラップ)のがお約束、 ずっと空白が現れなければ改行できないから横にはみ出る。 どうしても空白のないところで改行したかったら自分で#13#10入れるしかない。 入れる場所を探すにはGetTextExtentExPoint使えば一発だけど わからなかったらTextWidthで1文字ずつ増やしながら幅を測って探す。 幅を測る時にはCanvasにフォントを設定しとくのを忘れずに。
TMemoで色変えたりEnabled := Falseとかで代用できないか
175 :
170 :2008/07/19(土) 05:00:17
>>173 そうでしたか、なんか勘違いしてたみたいです。
試しにやってみたら空白で改行出来ました。
教えて貰った通りに、色々挑戦してみようと思います。
夜分眠いのにも関わらず、どうもありがとうございました。
またいつかお世話になりますw
176 :
170 :2008/07/19(土) 05:14:39
>>174 それも良いですね、じゃあlabelで無理そうだったらTMemoで代用してみます。
どうもありがとうございました。
TMessageの宣言でcase分が使われていますがこれはどうなっているんでしょうか ヘルプ読んでみたけどさっぱり・・・
178 :
デフォルトの名無しさん :2008/07/19(土) 11:36:29
同じアプリ間の TreeView1.Items.Assign(TreeView2.Items); にあたることを、違うアプリのツリービュー同士で行いたいのですが どうやったらできるのでしょうか? コピー元のアプリも自作のものなので、何か必要な 情報があれば取れると思いますが 素人考えでポインタを違うアプリで参照とかやってみたんですがだめなんすね・・
>>177 共用体のPasacal特有の宣言方法。同じ記憶領域を違った方法でアクセスするため。
>>178 「共有メモリ Delphi」でググッってみる。
>>179 ,180
なるほど、ちょっと分かりました
でもcase Integer of・・・ってどうやって分岐出来てるんですか?
ここが一番分からない・・・
182 :
178 :2008/07/19(土) 12:55:00
>>180 ありがとうございます!
早速調べてみます。
>>181 分岐するんじゃなくて、構造体の中のメモリの領域をどちらの方式のフィールドでも
アクセスできるようにするただの宣言形式だと、了解すべし。
>>183 ああ、なるほど
TMessage.wParamに代入するのとTMessage.wParamHiにHIWORD、TMessage.wParamLoにLOWORDを代入するのとを
同じにするためなんですね
確かに便利かも
ありがとうございました
クイックレポートのサマリーってDBテキストをおけば自動計算してくれるんですか? 今現在Forループで計算してるんですけどよく考えたらサマリーって名前が付いてるのに 自動で計算してくれないなんておかしいような気がして・・・
失礼しました ^^; 質問です クイックレポートのサマリーってDBテキストをおけば自動計算してくれるんですか? 今現在Forループで計算してるんですけどよく考えたらサマリーって名前が付いてるのに 自動で計算してくれないなんておかしいような気がして・・・ 実際DBテキスト置いても出来ないんですよね やり方がまずいのか・・・・
187 :
デフォルトの名無しさん :2008/07/19(土) 20:05:37
なるほど
188 :
デフォルトの名無しさん :2008/07/20(日) 00:38:18
ターボデルファイ(無料版)にクイックレポート追加できるのでしょうか コンポーネント追加は有料版と聞いたので諦めていたのですが どうなんでしょうか?
買え
【統一教会】文鮮明の乗ったヘリが韓国の山中に不時着
http://namidame.2ch.net/test/read.cgi/news/1216460913/ ,==============、
| .__ /:::::::::| ロH ヨ メッコール
|(一和) /:::__:::::|  ̄」 己
| . ̄ ̄ /:::::| |:::::|
| /:::::::L二l| メッコールは大麦エキスと世界三大名水のひとつチョヂュン鉱泉水から
| /::/二丶:::| 生まれ、ビタミンが豊富に含まれたまったく新しいタイプの健康飲料水です。
| /::::| l___l |:::| ┌────────────────────┐
| /::::::ヽ─:::::::| |・品 名 :炭酸飲料 |
| /:::/.二l:::::::./| |・原 材 料 :糖類(砂糖,果糖ぶどう糖液糖).. . |
| /:::::l l_:::::::/ | | .大麦エキス,酸味料,香料,ビタミンC |
| ./_:::::_ヽ─': / /| | ナイアシン,ビタミンB2,ビタミンB1 |
| /| ヽ/ .|,__::::/ コ | |・内 容 量 :250ml |
| /:|_lヽ/l_(二/ .ッ | |・製造年月日:缶底に記載 |
|/:::::::::::::::: ̄/ .メ | |・原 産 国 名:大韓民国 |
|::::::::::::::::::::::/ | |・輸 入 者 :株式会社ハッピーワールド . |
|::::::::::::::::::::/ | └────────────────────┘
ヽ============〃 ※なお、日本版の缶には、「あき岳はりサイクルへ(空き缶はリサイクルへ)」という誤植がある。
191 :
デフォルトの名無しさん :2008/07/20(日) 03:45:02
気になって起きたらまともなレスがねええええええええ
192 :
デフォルトの名無しさん :2008/07/20(日) 21:39:23
何時間放置するつもりだ・・・・
3連休だぜ、ゆっくり休めよ。
194 :
デフォルトの名無しさん :2008/07/21(月) 14:07:06
デスクトップのアイコンも何もないところがダブルクリックされた というメッセージをとらえるにはどうやったらいいのでしょうか? TApplicationEventsのOnMessageでWM_LBUTTONDBLCLKをとらえてはみたんですが、 アプリ上でしかとらえなくって・・
>>194 windows様に「お願えでございますだおらのアプリ以外のメッセージも全部通知してくだせえ」と嘆願しる
>>195 田舎侍ゆえ
そのお願いの作法を是非にお教えくざされたも
CodeGearっていつのまにか、エンバカデロって会社に買収されてたんだな。 しかし、会社名にバカってつけちゃだめだろ、バカは。
MSとかオラクルとかSUNに売られたりして
201 :
194 :2008/07/22(火) 01:48:44
>>197 レス遅くなりましたがありがとうございます。
>>194 デスクトップはごく普通のリストビューコントロールで、当然ウィンドウハンドルとかも持っている。
グローバルフックとかでメッセージ横取りすれば検出できると思うよ
203 :
デフォルトの名無しさん :2008/07/23(水) 02:57:18
どううまくいかないのか詳しく。
207 :
デフォルトの名無しさん :2008/07/24(木) 01:31:42
function GetMyDocFolderPath: string; var PIDL: PItemIDList; PATH: array[0..MAX_PATH-1] of Char; begin SHGetSpecialFolderLocation(Application.Handle, CSIDL_BITBUCKET, PIDL); SHGetPathFromIDList(PIDL, PATH); Result:=PATH; end; ごみ箱のパスが取得できません。
>>209 d
それではなくて
C:\RECYCLER\S-1-5-21-1234567890-123456789-123456789-1234\
というようなログインユーザーに対してのパスが知りたいんです。
FindFirstで取得できるんですが他のユーザーのまで拾っちゃうんです。
無料で印刷する環境そろえるには何がお勧めですか クイックレポート有料らしいので 皆さんの1押し教えて蔵際
TPrinter
Delphi 2007とか最近のやつのユーザならQRはただで使えるが? とはいえTPrinterだな。
215 :
デフォルトの名無しさん :2008/07/25(金) 01:05:56
>>214 ターボデルファイなのでQRは駄目では・・・
>>211 d。 できました。
いい勉強になります。
>215 後出しイクナイ。TPrinterで。
みなみけの見すぎ。
219 :
デフォルトの名無しさん :2008/07/25(金) 22:48:34
ポップアップメニューについて質問です。 複数のボタンに、1つのポップアップメニューを設定しています。 この中のどれかのボタンを右クリックしてポップアップメニューが立ち上がった時、 ポップアップメニュー内のイベントハンドラで 「どのボタンから呼び出されたか」を知りたいのですが、どうすればいいでしょうか? // このように設定しています。 button[0].popupMenu := popupMenu1; button[1].popupMenu := popupMenu1; button[2].popupMenu := popupMenu1; procedure TForm1.PopupMenu1Popup(Sender: TObject); begin // ここで「呼び出し元のボタン」を知りたい end; よろしくお願いします。
221 :
219 :2008/07/25(金) 23:04:24
Sender.Nameだとエラーになってしまいます。 (メッセージは「TObjectはNameという名前のメンバを含んでいません」です) ShowMessage(Sender.ClassName)で見てみると、TPopupMenuと表示されます。
あ- SenderはTComponentにキャストしといてね
223 :
219 :2008/07/25(金) 23:17:56
>>222 型キャストしましたが、同じくTPopupMenuのようです。。
case TButton(Sender) of Button1: ShowMessage('Button1'); Button2: ShowMessage('Button2'); Button3: ShowMessage('Button3'); Button4: ShowMessage('Button4'); end;
試したらSenderはPopupMenuになってるね PopupMenu1->PopupComponent使うといい
void __fastcall TForm1::PopupMenu1Popup(TObject *Sender) { ShowMessage(PopupMenu1->PopupComponent); }
227 :
219 :2008/07/25(金) 23:38:53
>>225-226 できました!
Senderと思いきや、popupComponentだったんですね。ありがとうございます!
なんというBCB いや今はECB?
CCBぢゃないか? これはこれで懐かしい匂いがするが
いやBBQだろ
NEC IBM CCB TKC ISB CSK CIA KKK PKO NTT JCB JTB DDI PCI PIC 略字じゃわからねーんだよ
Borland C++ Builder? CodeGear C++ Builder? Embarcadero C++ Builder?
JaneのAAListの読み込みサンプルってどこかにないでしょうか Lovelyのソース読んでみたけどリスト形式だけなのとカテゴリ分けに未対応なのとで参考になりませんでした
TWebBrowser内でEnterキーが効きません どなたか解決法ご存知の方いませんでしょうか IDEはTurbo Delphiです
ざっと見たけど、それらしいのがないね。
>>237 そのソースを実装しても全く効果がありませんでした・・・
何か足りないのでしょうか
vistaでDelphi使いたいんだけど何入れればいいのん? 3.1って使える?
入れればいいのん?って聞かれればDelphi2007 D5も動いてるけどね 3.1は入れたことがない
2006はそのままではインストールできなかった。
242 :
デフォルトの名無しさん :2008/07/29(火) 23:52:38
ただ線を引くだけ、というクラスを作りたいんだけど、どこから継承すればいいの? Tshapeじゃもったいないし。
243 :
238 :2008/07/29(火) 23:56:51
>>237 うわぁ・・・Form1.KeyPreviewの中・・すごくFalseだったナリ・・・
>242 TShapeでいいのでは?それかTGraphicControlからTShapeを参考に必要な部分だけ 実装するか。
>>243 せめて移したコードのトレースしてれば、すぐにわかるだろそんなことw
>>242 TGraphicControlでいいと思います。
基本的にPaintメソッドに線を引くコードを書くだけですから
とりあえず動くものはぐに出来てしまうと思いますよ。
248 :
デフォルトの名無しさん :2008/07/30(水) 21:14:16
Delphiというか、標準PASCALで readln(a); assign(f, a); というふうにやっているんですが、 自分の家のコンパイラだと通るんですが、 他のコンパイラでもこの描き方でおkですか? aはchar型のpacked arrayです
Indy9とIndy10入れるとしたらどっちがいいですか? オプソのもの時々参考にしたり弄ったりする時があるけどIndy9ばっかなのでIndy9かな・・・
Delphiのバージョンにもよるけど、基本Indy10で、問題があることがわかってる機能を使うならIndy9、じゃないのかな。
251 :
242 :2008/07/30(水) 23:44:34
解答さんくすです
>>244 >>必要な部分だけ実装
そんな高等技術まだないっす。
>>247 >>TGraphicControlでいいと
すっげー百済ねぇ質問だけど、あまり上位のオブジェクトを使うと、必要のない無駄な機能まで継承してしまって非効率って事はないの?
実際必要なのはプロパティでは始点・終点の座標と、任意に付与した線の名前と、線の色と太さくらい持ってれば十分なんだけど。
あとメソッドでは線を引く、線を消す、線を隠す、ShowHint、イベントハンドラはOnMouseMoveとOnClickくらいかな。
>
>>244 > >>必要な部分だけ実装
> そんな高等技術まだないっす。
じゃ素直にTShapeから派生しとけ。
>>250 うーん、悩むとこですね
周りで使われてるのはIndy9ばっかなのでIndy10使うことになったら入れなおしでいいか・・・
>>251 VCLのソース読んでみな。TShape コントロールは TGraphicControl に
毛が生えたものでしかないことが分かるから。
255 :
デフォルトの名無しさん :2008/07/31(木) 10:06:38
久々に Windows アプリ書くんで、どうせなら新しめの Delphi 使おうと 『Codegear て何?』とか、『なんでBorland ドメインじゃないん?』と思いつつ TurboDelphi 落とした。 『そんな API 呼ぶなよ』とか警告出るけど、Delphi3.1 で書いたコードも通って一安心なんだけど、 なんで IDE のウインドウサイズ記憶しないの? 起動するたんびに WUXGA 画面いっぱいに広がって困りますわorz オプションとか見たけどそれらしき項目を見つけられず・・・自動保存の設定じゃないし。 今浦島なおじさんに教えてたもれ!
上の方にレイアウトの呼び出し、保存のボタンがある。 何通りでも好きなだけ記憶させると言いい。
ウィンドウを好きなように配置して メニューの右上の方にDefaultLayoutみたいなドロップダウンリストがあるから その右隣のボタンをクリックして保存
>>256 >>257 これは便利。
Classic Undocked で昔の別ウインドウ形式になるんだね。
そこら辺にマウスカーソル当てればわかることに即答ありがとう!
delphi7でwindows mobileのソフト作成ってできますか?
無理
叶姉妹
>>239 2007推奨。
旧バージョンは、VCLがVista環境下でいろいろと不都合がでてしまう。
VCL小細工しているせいかね。悲しいかな。
>>262 代表的な不都合をお願いします。
時期開発環境の参考にします。
ぐぐれよw
UNICODE非対応の今はどれでも同じ Vistaで使いたいなら自分で工夫、妥協するしかない
UAC有効だと確認ダイアログが出まくってまともに使えない。 Aero有効にしているとスクロールバーが半分隠れて使いにくくなる。
結論としてはVista使ってる奴が悪い、になるんだろうな
Vistaが糞なんだろ
Vistaがクソとか平気でいう奴は、自分の置かれている立場(言語)がわかっているのかなあ?
死んだとか言われてるけど初心者の俺には何が死んだのかよく分からないし普通に使えるので別にどうということはない
271 :
デフォルトの名無しさん :2008/08/03(日) 12:02:01
recordを前方宣言出来るのでしょうか。 出来るのであれば、どうか方法を教えて頂けませんでしょうか。 出来ないのであれば、私を汚らしい言葉で責め立てて頂けませんでしょうか。
できないっぽいね。何をしたいのか具体的に書いてごらん?
273 :
sage :2008/08/03(日) 13:46:14
ふ〜む、難しいねぇ。つかOpenにしたまま放置かい。
都度hppを書き換える方法で行きます。
var d, i: Integer; begin d := Windows.GetLogicalDrives(); for i := 0 to 32 do if ((1 shl i) and d) <> 0 then Str.Add(Chr(i + Ord('A'))+':\'); end; とやるのと var d: Integer; c: Char; begin d := Windows.GetLogicalDrives(); for c := 'A' to 'Z' do if ((1 shl (Ord(c) - 1)) and d) <> 0 then Str.Add(c + ':\'); end; とやるのとじゃどっちが賢いんでしょうか
TWebBrowserのHttpヘッダを見たいんですが何かいい方法ありませんでしょうか
>276 下かな?でも上はそもそもバグっとる。for i := 0 to 25 doにしないと。 >277 つ WireShark
>>276 0 to 32 で 33個になるんだけど。
下の Ord(c) - 1 も、Ord(c) - Ord('A')じゃないの?
私は上の方が自然だと思います。
iが26以降になったときに何かやったほうがいいのかもしれません。
こんなのはどうだ。 d と c を分離するのはかえって解りづらいかな。 for c := 'A' to 'Z' do begin if (d and 1) = 1 then Str.Add(c + ':\'); d := d shr 1; end;
281 :
276 :2008/08/05(火) 02:30:36
こんなにレスありがとうございます
>>278 適当にググって適当にやったのがいけなかったかw
確かに25の間違いです
>>279 ご指摘の通りです
これからは見直しは1時間だな・・・
>>280 うーん、なんかすっきりしないですね
280に一票
with BitArray(GetLogicalDrives) do with Each do while Loop do Str.Add(Char_Add('A', It.Value) + ':\'); 欠点はうちの環境でしか動かないことだがw
284 :
277 :2008/08/05(火) 09:22:39
>>278 ああいや、外部からではなくDelphi内でモニタできないものかなあと思いまして、
Headerプロパティのようなものが見当たらず、代替するにも見当がつかなかったので聞いてみたのですが、
もしやindy経由で手の込んだことしないといけないんでしょうか…
286 :
デフォルトの名無しさん :2008/08/05(火) 22:34:59
nkf32.dllやjconvertなりで文字コード自動検出してエンコードするソフトを作っているんですが、ほぼ英字のテキストだとたまに自動検出に失敗します。 失敗するのはいいんですが、失敗して文字化けした文字を検出するにはどうすればいいんでしょうか? EmEditorの自動検出でもよく失敗するのですが、そういうとき開くと「指定したエンコードで変換できない文字が含まれています。編集を続行して保存するとファイルの中身が破壊されます。 」と出るので検出は出来ると思うんですが、どうやったらいいのか見当もつきません・・・
全文スキャンするしかないんじゃない? 文字コード検出のってファイル先頭部分しか見てないんじゃないかな
(c)文字は変換できないんじゃないの?
289 :
286 :2008/08/06(水) 00:30:02
自動検出で全文してみたんですけど無理みたい(失敗)です。。 EmEditorで検出失敗してもエラーが出ないときがあるので難しいのかもしれません。 けど、失敗エンコードのままの文をFireBird2.1DBのテーブルにインサートしてその文をクエリで検索するとエラーが今のとこ確実に出ます・・・ 2.0ではエラーはでずクエリできるので、2.0を使うしかないみたいです、自分の今の力では。。 (c)って著作権のマークのやつでしょうか
自前変換ならエンコする時に全文字見る訳で その時に検出するだけでしょ WideCharToMultiByteとかならlpUsedDefaultCharで検出できるかと
>>285 うーん、headタグの取得については記述がありますが、
httpヘッダに関しては書いてないみたいです
TWebResponseとかあるのにTWebBrowserでは使えないんてくやしいっ
大人しくTcpServer経由しますか…
292 :
286 :2008/08/06(水) 11:54:16
>>290 なるほど、エンコ時にやればいいのか
ありがとうございます!
というかぁ、完璧な自動って不可能だからぁ。 文字コードが重なっていて、自動判断できない領域があるしぃ。
その文書作った人がそうだといったらどう見ても違う文字コードでもその文字コードになっちゃうだろうしなあ
指定のビットが0か1かを判定する関数またはクラスの作成をよろしくお願いします。 入力するデータはビット番号とデータなのですが、元のデータのサイズが決まっていなくて、 32ビットデータ4個(ビット0-127)だったり2個(ビット0-63)だったと可変です。
そこまで速度にこだわってないので、関数でいいのかな。 function TestBit(BitNum: Integer; Data: array ): Integer; Data引数が可変引数だったりするとうれしいです。以上よろしくお願いします。
ああ、32ビットと固定長でないかもしれません。16ビットや8ビットの場合もあるかもです。
ここは丸投げスレではありません お引き取りください
>>298 今日は暑いですが、よろしくお願いします。
>>299 本当に暑いですね
クーラーつけなきゃやってらんないです
お引き取りください
>>300 そんな寂しい事を言って私を涼しくしなくてもいいので、TestBitの中身の方をお願いします。
解決しました。 function TestBit(Stream: TStream; BitNum: Integer): Integer; var B: Byte; OldPosition: Int64; begin OldPosition := Stream.Position; try if (BitNum < 0) or (BitNum > Stream.Size*8) then raise Exception.Create('error'); Stream.Position := BitNum div 8; Stream.ReadBuffer(B, SizeOf(B)); Result := (B shr (BitNum mod 8)) and 1; finally Stream.Position := OldPosition; end; end; でいくことにしました。アドバイスありがとうございました。
>>302 どういたしまして、お役に立てて光栄です。
304 :
デフォルトの名無しさん :2008/08/09(土) 02:42:51
ゼロサプレスって言うんだっけ。桁数指定して、桁数に満たない場合は頭に0を埋めてくれるヤツ。 formatでできるかと思ったらできないんだね? どうすればいいのか教えて? まさか自作関数?
マニュアルのformat関数のところにちゃんと書いてあるよ
306 :
デフォルトの名無しさん :2008/08/09(土) 09:13:41
え? 実数の場合は%8.3fとかでいいんだけど(あと通過型も) 整数の方法がわからないよ %05dとかにすると、スペースになってしまう。
delphi format %05d でぐぐってみw
どーでもいいがゼロサプレスの逆だろ ちなみに指定桁数を0で埋めるって何ていうんでしょう?
310 :
デフォルトの名無しさん :2008/08/09(土) 11:12:28
ゼロパディングなんだ。 パケットとかではパディングってよく使うけど、桁合わせの時には聞いたことがないような。
ListView がスクロールされた事を知らせるイベントってないですか? あるいは、enable が true でスクロールバーをスライド出来なくする方法ありますか?
スクロールしないならLabel並べておけ
313 :
デフォルトの名無しさん :2008/08/09(土) 19:01:47
ListViewはウィンドウコントロールだから、 普通に WM_VSCROLL で出来ないか? WndProc書き換えちゃえ。
314 :
311 :2008/08/09(土) 19:14:03
>>312 ListView をクリックすると、そのセル上に同じ大きさで memo を表示して
あたかも編集出来る様にしたんですけど、スクロールすると ListView だけ動いて
memo は置いてけぼりになるんです、だから編集中はスクロール出来ない様にするか
スクロールしたら、なんとか memo が付いて行く様にしたいと思ったんです。
>>313 やったこと無いですけど、何とか出来るか試してみたいと思います、有難うございましたw
>>314 Memo使うの?
Editでならやったことあるけど、今はStringGrid使ってるよ
316 :
311 :2008/08/09(土) 20:50:14
>>315 なんか memo が使いやすかったのでw
>Editでならやったことあるけど
その時スクロールとか困らなかったですか?
>>316 入力後Enterキーを押したらEditが消えるようにした気がする
すぐにStringGridに変えたからよく覚えてない
318 :
311 :2008/08/09(土) 23:04:01
>>317 そうですか、じゃあ自分もそうしようかなと思います、有難うございましたw
つーか、項目選択したらエディットコントロールを上掛け、 スクロールかEnter感知したらエディット消してListViewに反映でいいんじゃないの? StringGridはドロップダウンリストとか使えないからなぁ‥‥
320 :
311 :2008/08/10(日) 11:46:16
>>319 そうしたいんです、でもスクロールを感知できなくて困ってるんです
Enter感知は出来るけどw
322 :
デフォルトの名無しさん :2008/08/10(日) 12:19:11
なんか、最近Delphiのパンフが送られてこない気がするのですが、 次期バージョンの日本語版発売っていつごろになるんでしょうか? 今、BDS2006使いなのだけどもVistaにきちんと対応したい。 2007って今買い時かなのかな・・・? 次期バージョンはどうせ、VCLのUNICODE対応でバグ満載になるだろうし 安いうちに買っておけばよかたとちょっと後悔している
>>321 既出なのかもしれないけど、よいTipsですね。
324 :
311 :2008/08/10(日) 12:21:07
>>321 やっぱりその方法しかないですかw
なんとか頑張ってやってみます、有難うございました。
325 :
デフォルトの名無しさん :2008/08/10(日) 12:23:02
そんな低レベルなところでがんばっても .NETに移ったら全部ゴミになっちゃうからやめておいた方がいいよ。 今のうちにC#を学んでいつでも移行できるように準備しておいた方が後々特。
>>324 WindowProc差し替えの方が簡単かも。
327 :
311 :2008/08/10(日) 13:01:27
>>325 .NET も良さそうですね、便利そうで羨ましいですw
>>326 その方が簡単ですか、その方法も調べて見たいと思いますw
どうしても解からなかったら邪道だけどタイマーで監視します。
みなさん有難う御座いましたw
328 :
311 :2008/08/10(日) 15:13:17
なんとか WindowProc の WM_VSCROLL で出来ました 有難う御座いましたw
memo1.lines.loadfromfile(****.txt); でメモラインに追加してから memo1.lines.loadfromfile(***2.txt); のテキストを↓に追加したいのですが、上書きされて***2.txtのデータしか残りません・・・・ 上書きせずに追加するにはどうすればいいのでしょうか?
add?
>>329 編集中のテキストにファイルから別のテキストを追加読み込みしたいということですね。
別に文字列リストを用意してそれに読み込んでからMemo1.Linesに追加。
procedure TForm1.Action_AddFromFileExecute(Sender: TObject);
var
Strings: TStringList;
begin
Strings := TStringList.Create;
try
if OpenDialog1.Execute then
begin
// 文字列リストにファイルを読み込む.
Strings.LoadFromFile(OpenDialog1.FileName);
// Memo1のテキストにこの内容を追加.
Memo1.Lines.AddStrings(Strings);
end;
finally
Strings.Free;
end;
end;
ClientDataSetに大量のデータ突っ込んだ後、EmptyDataSetでクリアしても、 タスクマネージャのメモリ使用量が変わらないんだけど、これは?? データ突っ込んで、タスクマネージャで100MB近くなったんだけど、ずっとそのまま・・
TurboDelphiを先日落とした身です。 例えば procedure TForm1.Button2Click(Sender: TObject); var hoge: string; begin end; でF9実行しようとすると、その変数は使われてないと警告が出てデバッグが実行できません。 警告を残したままデバッグの実行はできないものなのでしょうか。
{$WARN SYMBOL_DEPRECATED OFF} みたいなのを頭に書いとけば消せる。 具体的な指定はヘルプにあるはず。 その警告は残しておいた方がいいとは思うが。
335 :
デフォルトの名無しさん :2008/08/11(月) 19:24:36
Delphiでのアプリケーション間通信のよい方法があったら教えてください。 環境は双方ともDelphi製で、片方VCL GUIアプリ、片方Win32アプリです。 実際にはマップエディタで設定したマップを、別アプリのゲーム側で リアルタイムに読み込んでプレビュー処理をしたいのです。 そこで、マップエディタで現在編集中のマップをファイルで保存しておいて、 そのファイル名(もしくはマップのIDなり)をゲーム側に伝えたいのです。
ファイル名程度ならWM_COPYDATAで十分じゃ?
ファイル名程度なら、WM_COPYDATAで十分じゃ?
338 :
デフォルトの名無しさん :2008/08/11(月) 19:40:24
Delphiでのアプリケーション間通信のよい方法があったら教えてください。 環境は双方ともDelphi製で、片方VCL GUIアプリ、片方Win32アプリです。 実際にはマップエディタで設定したマップを、別アプリのゲーム側で リアルタイムに読み込んでプレビュー処理をしたいのです。 そこで、マップエディタで現在編集中のマップをファイルで保存しておいて、 そのファイル名(もしくはマップのIDなり)をゲーム側に伝えたいのです。
SendMessage(WM_COPYDATA でマップデータを送るのはどうか。 使ったこと無いけど、SendMessageTimeout の方がいいのかもしれない。 受け取り側でデータをコピーするから、マップデータが巨大だと 時間がかかる。
普通に考えればメモリマップドファイルだろうね。
341 :
デフォルトの名無しさん :2008/08/11(月) 22:11:12
警告ならできるだろ >333 原因は別にある
変更のあるたびに全部送るんじゃなくて、変更のあったところのみ送れば 速くなりそうですね。
>>334 >>342 新規でプロジェクト作成してみたら警告が出るようなコードでもデバッグが実行できました。
どうもお騒がせしましたorz
>>331 遅くなりましたが、ありがとうございます!
おかげでできました〜
TMenuItemからTMenuItemに全てのプロパティをコピーするにはどうすればいいんでしょうか Assignでは「TMenuItem から TMenuItem に代入することはできません.」と例外が発生しました
347 :
346 :2008/08/13(水) 20:30:24
348 :
346 :2008/08/13(水) 20:57:39
と思ったけど完全にはコピー出来ないようです 何とかコピー出来ないものでしょうか
TStream.WriteComponent/ReadComponentしてみたら。 それかメニュー構造を再帰的にコピーしていくコード書くか。
350 :
346 :2008/08/13(水) 22:33:53
>>349 > TStream.WriteComponent/ReadComponentしてみたら。
例外が発生し、動きませんでした
> それかメニュー構造を再帰的にコピーしていくコード書くか。
適当に書いたら普通に出来てしまいましたw
ありがとうございました
以前からこのスレを拝見しておりました いきなりの質問ですみませんがお答えいただけたら幸いです var str: array of array of String i : Integer; List: TList; begin SetLength(str,10); for i:=0 to 9 do begin SetLength(str[i],10) end; //str[0,0]からstr[9,9]まで領域を作る List:= TList.create; としたとき、 TListにstring型の1時配列を格納したいと思い、 List.add(str[Idx]) としたのですが、その後ListからItemsプロパティによって中身にアクセスできないんです・・・どうしたらよろしいのでしょうか?
>>351 usesにTypesを追加します。
TStringDynArray(List[x])[y] で str[x, y] にアクセスできます。
>>352 お答えありがとうごさいました!とても助かりました。
354 :
322 :2008/08/15(金) 20:04:40
直販でUGすれば31500円だろ。 直販のUGってもう終了したんかな。
電話してお姉さんに丁寧に説明してもらいなさい。
おねいさんに手取り足取り教えてもらいたい。
おねいさんに手コキ足コキしてもらいたい。
359 :
322 :2008/08/16(土) 06:40:01
>>355 もう直販やってない希ガスCodeGearのページいってもたらいまわしにされる
360 :
322 :2008/08/16(土) 07:06:51
製品の購入のページってこれですよねえ。
http://www.codegear.com/jp/shop > バージョンアップ版を購入の方
> 以下のCodeGear製品については、バージョンアップ版も、新規購入と同様に、ソフトウェア流通代理店各社、SEshopのCodeGear専門ショップなどのオンラインショップサイトよりお求めいただけます。
>
> CodeGear RAD Studio 2007
> Delphi 2007 for Win32 R2
> C++Builder 2007 R2
> JBuilder 2007
> 上記製品のバージョンアップ版の詳細については、こちらをご覧ください。その他の製品については、下記までお問い合わせください。
直販やってない?
たらいまわしは、商品詳細とかんちがいしてましたw
問い合わせてみるか・・・
それともTiburon待ったほうがいいのかなあ
Unicode が必須じゃなければ2007にしとけ。 BDS2006持ってて2007買うのはどうかと思うがな。 お金持ちならだめもとでTiburonを。
こういう業界じゃ、バージョンアップの3万なんて日給分程度だろ? お金持ちって・・。
IT土方をなめるなよ。 ピンハネされまくって、ひ孫受けの土方に渡る金は、元金の1/3以下
Delphiできる人少ないから、手が足りない。 バイトで内職してくれる人おらん?
思いっきり丸投げしといて 「内規で2割引かないといけないんですよてへへー」が 2つ3つ挟まるとか平気であるしなw
3割引かれてテヘヘーだけど、1社しか挟まってないからまだ楽だ。
他所でやれ
スキルが高まれば高まるほど逃げ出す、それが日本のIT業界。
スキルの低い底辺クズがいる、それがIT業界。
>>338-339 へぇ、メッセージで投げられるんだ
普通はアプリの通信ってパイプ使うけど
マップデータ自体を送るんじゃなくてファイル名って言ったよね たった数文字送るなら
パイプ通信のほうがいいんじゃないの
372 :
デフォルトの名無しさん :2008/08/16(土) 13:40:50
Form1からForm2へドラッグ&ドロップするにはどうすればいいんでしょうか?
373 :
322 :2008/08/16(土) 15:41:26
>>369 電話してみます。
みなさんありがとう。
>>372 OnDragOverイベントでAccept設定して出来ないか?
>>371 受け取る方はパイプのデータが更新されたことをどうやって知るの?
数文字程度でもWM_COPYDATAの方が簡単かもしれない。
自前のTMyFormの機能としてWM_COPYDATAをラップして 識別用のDWORD一つとデータ本体を送受信できるようにしておくといろいろ便利。
現在Delphi2007を使用しています。 デバッグ機能について教えていただきたいのですが Visual Studioでいうところの「次のステートメントの設定」は Delphiに存在しないのでしょうか。 無いととても不便な気がするのですが どうしても見つかりません。
ない。なくても別にそれほど不便じゃないし。 QCに登録したら次の次で採用されるかも。
>>379 即レスありがとうございます。探し回っていたのですが
これ以上探さずにすみます。それにしても残念。
>>372 VCL標準のD&D機構では出来ないから、
MouseCaptureして自分でやる。
382 :
372 :2008/08/17(日) 10:49:16
>>374 >>381 レスありがとうございます。
MouseCaptureググッって、午後からいろいろ試してみようと思います。
TFormのDnD、VCLでできないんならOLEDnDのほうがスマートじゃ? プロセス間でも平気だし、テキストや画像なら未知のアプリケーション間でも出来るし
フォーム上にカラーパレットのようなものを配置(カラーグリッドでいいのかな) お絵描きコントロールを配置(たぶんペイントボックス) ペイントボックスに、既存のbmpファイルを読み込む(←ここがすでにわからない) カラーパレットをクリック で、色を選択 ペイントボックスに読み込まれた絵のどこか適当な場所をクリック その「クリックした個所と同じ色が」選択した色に塗りつぶされる (MSペイントの塗りつぶしみたいな感じ。あれは別な色で囲まれちゃってる部分は無視されるけど、 そこもぶち破って塗りつぶしてくれるならなおよろし。あれと同じでも充分) 顰蹙非難罵詈雑言何もかも覚悟でおねがい 以上を実現するコードください まるごとください おねがいします
どっかでペイントソフト作るチュートリアル無かったか。 丸投げするなら金額も一緒に書いとけよ。
大人しくTPaintBox使わずにTImage使えば?
, ,:‘. 。 + ,.. ’‘ + ,.. . ..; ', ,:‘ . .; : ’ ' ,:‘. あ あ ,:‘. + .. ' ,:‘. . ...:: ’‘ ’‘ .; こ ん な に お 断 り し た い 。 . 。 気 持 ち に な っ た の は ,:‘. 。 '+。 初 め て で す .. ' ,:‘. :: . .. .. ' ,:‘. ハ,,ハ ( ゚ω゚ )
/\___/\ / / ヽ ::: \ | (●), 、(●)、 | | ,,ノ(、_, )ヽ、,, | | ,;‐=‐ヽ .:::::| \ `ニニ´ .:::/ NO THANK YOU /`ー‐--‐‐―´´\ .n:n nn nf||| | | |^!n f|.| | ∩ ∩|..| |.| |: :: ! } {! ::: :| ヽ ,イ ヽ :イ
お断りします ハ,,ハ ハ,,ハ ハ,,ハ ハ,,ハ ( ゚ω゚ )゚ω゚ )゚ω゚ )゚ω゚ ) お断りします / \ \ \ \ お断りします ((⊂ ) ノ\つノ\つノ\つノ\つ)) お断りします (_⌒ヽ ⌒ヽ ⌒ヽ ⌒ヽ お断りします ヽ ヘ } ヘ } ヘ } ヘ } ε≡Ξ ノノ `Jノ `J ノ `J ノ `J
再度おねがいにきました あきらめないで待ってます
____ やなこったwwwwwwwww .ni 7 /⌒ ⌒\ l^l | | l ,/) / ( ゚ ) (。 )\ .n ', U ! レ' / / ::::::⌒(__人__)⌒:::::\ l^l.| | /) / 〈 | ヘ / | | U レ'//) ヽっ ` ⌒´ / ノ / /´ ̄ ̄ ノ \rニ | `ヽ l
そんなことよりポインタ演算の話しようぜ。
もうちょっと待て。ベータブログに出てきてNDAから外れたらな。
>390 WindowsのPaint使えばいいんじゃね?
お絵かきソフトのサンプルをCDから探して。
その1 Image1.Picture.LoadFromFile('hoge.bmp'); 以降よろしく。
canvas.FloodFill(なんたらかんたら)
DEMOSとかというフォルダからサンプルらしきものを発見しました
imageでも絵かけるんですね
>>396 >>397 ありがとうございます
ちょっと自力でがんばってみます
399 :
398 :2008/08/19(火) 19:05:38
おかげさまでどうにか以下までは成功しました procedure TForm1.Image1Click(Sender: TObject); var MouseP:TPoint; MouseX:integer; MouseY:integer; GetColor:integer; begin GetCursorPos(MouseP); MouseP:=Image1.ScreenToClient(MouseP); MouseX:=MouseP.X; MouseY:=MouseP.Y; GetColor:=Image1.Canvas.Pixels[MouseX,MouseY]; Image1.Canvas.Brush.Color:=塗りつぶしたい色; Image1.Canvas.FloodFill(MouseX,MouseY,GetColor,fsSurface); end; 元のbmpファイルがけっこう小っちゃいので、Imageをめいっぱい大きくとったうえストレッチ表示にしたら クリック位置を補正しなきゃならなくなってしまいました MouseX:= Trunc(Image1.Picture.Bitmap.Width*MouseP.X/Image1.Width) とか、とりあえずやってみたらできたけど、何かこのあたりはまだ考える余地がありそうです あとちょっとだけがんばります
始めたばかりで頑張っていた頃を思い出させるいいレス。 頑張れ!
WideStringでのインデックスをAnsiStringでのインデックスに直すにはどうすればいいんでしょうか? 例えば 関数('あああ',3) = 5 みたいな感じです
>>401 こんな感じかな
function WideIndexToAnsiIndex(const ws: widestring; index: Integer): Integer;
begin
if (Index < 1) or (Index > Length(ws)) then
Result := 0
else
Result := Length(AnsiString(Copy(ws, 1, index - 1))) + 1
end;
>>402 うお、こんな簡単に出来ちゃうんですね
ありがとうございました
>>401 なぜユニコードだったりそれをMCBSに変換しなければならないかにもよるけど、
ByteToCharIndexやCharToByteIndexでもっと幸せになれるかもしれない。
Button1を押したら Memo1の書いてる文章を 全て選択 コピー 切り取り 貼り付け するにはどうやればいいでしょうか?
>>405 Memo1.SelectAll;
Clipboard.AsText:=Memo1.SelText;
Memo1.SelText:='';
Memo1.SelText:=Clipboard.AsText;
マジありがとうございます。 超助かります! Memo1.SelectAll; をしたら、ちゃんと全部選択できるてるみたいですが 選択範囲の色が変わりません。 普通のメモ張だったら 全て選択とかCTRL+Aで選択範囲が青くなりますよね? 青くするのはどうやるんですか?
>>407 Memo1.SelectAll;
Memo1.SetFocus;
あー。できました。 ありがとうございましたー。
SpeedButtonかToolButton使え
ファイルネームの最後だけ、たとえば c:\AAA\BBB\CCC\asdf.html というファイルなら OpenDialogやFileListBoxのFileNameは c:\AAA\BBB\CCC\asdf.htmlになってしまうので Edit1.Text:=FileNameみたいにすると長くなっちゃうんだけど c:\からCCCまでいらなくてasdf.htmlだけ取得するにはどうしたらいいんですか?
ExtractFileName
このくらい考えられないか? FileName := 'c:\AAA\BBB\CCC\asdf.html'; while pos('\',FileName) > 0 do FileName := copy(FileName,pos('\',FileName)+1); edit1.Text := FileName;
>>413 Pos2回もやってるのって無駄じゃね?
それに「ソ」とかのことも考えたほうがいいぜ
まあLastDelimiter使った方が楽だがww
415 :
デフォルトの名無しさん :2008/08/21(木) 14:53:29
役に立たないスレだな
412で答え出てるじゃん。
Delphiはchar型って変数じゃないんですか?
変数です。整数ではありませんが。
checklistbox1 にあるすべての項目にチェックを入れるボタンと チェックをはずすボタンはどうやればいいんですか? Seleckallやclearを押してもチェックがはずれたりしなくて困ってます。 ボタンクリック begin CheckListBox1.SelectAll; end; ってやってもなんも変わらないんですけど、どうすりゃいいですか?
Button2をクリックしたら、Button1クリックと同じ処理をしたいときはどうやるの? procedure TForm1.Button2click(sender:Tobject); begin Button1click(sender) end; とかやってもエラーがでてコンパイルできません。
>>421 それで間違ってないだろ。つかエラーメッセージくらい読めよ。
button1.onclick(sender);
Button2のイベントハンドラをButton1Clickに設定する
interfaceの宣言の下に書くGUIDはCtrl+Shift+Gで出る奴でいいんですか?
>>421 エラーメッセージはなんですか?
未定義の識別子 Button1click
と出たなら Button1click という名前のメソッドがないということです。
(このメソッドがあるはずだ!ということなら似たような違う名前になっていないか調べてください)
俺俺っていうコードを変換したいんだけど (俺のコードは89 B4です) 89 B4 89 B4をchrを使って chr(89)+chr(B4)+chr(89)+chr(B4)ってやっても エエって出てきちゃいます。(半角のエはB4) どうやったら89 B4を「俺」になおせますか? chr(46127)てやっても出来ませんでした。 数値を日本語に変えるやりかたを教えてください!
ShowMessage(chr($89)+chr($B4)) で普通に俺って出るぞ
なぁんだ、$をつければよかったんだ。 どうもありがとう
Chr(B4)でコンパイル通るのかww
ListviewのFullDragをtrueにしてドラッグで入れ替えても 見かけ上は入れ替わるんですけど、中身のデータはその場所と一致してないんですけど ちゃんと一致させる方法ありますか?
432 :
431 :2008/08/22(金) 22:35:26
すいませんカラムの並び替えです・・・
StringReplaceのWideString版ってありますか?
>>433 AnsiStringReplaceのことか?
Memo1.Linesのそれぞれの行の文字数(全角文字は二文字と数える)を取得するにはどうすればいいですか? ------- 最初 12345 あほ apple ------- ならメモ1の最初の行文字数=4 二行目=5 三行目=4 四行目=5 といった感じです!
length
そんなコマンドがあったのか!ありがとうございます
440 :
431 :2008/08/23(土) 19:21:21
>>431 の問題ってデフォですか、それともウチだけの不具合ですか
それだけでも教えてください
>>435 それでも十分いけるんだけどいちいちWideString→Stringで置換→WideStringってやってるとなんか無駄っぽいので
WideStringのまま出来ないかなって思っただけです
TurboDelphiにWideStrUtilsってのがあったのでその中にある、
WideStringReplaceを使ってみたけどなんか不具合があるっぽくて正常に置換されなくて使えなかったんです
でもTntの関数使ったら出来ました
ありがとうございました
>>440 カラムのドラッグによる位置変更で
データそのものの位置が変わっちゃったらえらい事になるでしょうよ
ListView_GetColumnOrderArray
ListView_SetColumnOrderArray
辺りで幸せになれるかもね
TTrayIconを使用しているのですが、 TrayIconが表示されている状態でWindowsをシャットダウンすると、 「シェル通知アイコンが削除できません」 というエラーメッセージダイアログが発されて、正常にシャットダウンしません。 ダイアログを閉じるなりすれば、シャットダウンは進行するのですが。 アプリケーションでメッセージを補足して、WM_QUERYENDSESSIONを 受けたときに、TrayIconの表示をFalseにすれば何とかなるかと思ったのですが、 WM_QUERYENDSESSIONを受け取る以前に上記のエラーメッセージが 発されてしまっているようです。 対策をテストするにも、毎回Windowsをログアウトするなりしなければならないので、 非常に非効率的な事態に陥っています。 これらの問題をすでに解決済みの先哲がいらっしゃいましょうや。 なにとぞ愚人に叡智を授けて下されれば、この443、幸いに存じます。
どうも、443っす。 結局のところ、自己解決したっす。 原因は、WM_QUERYENDSESSIONを補足しきれてなかったことみたいっす。 WM_QUERYENDSESSIONをちゃんと補足したときにTrayIconを非表示にするだけで何とかなったっす。 つまり、アプローチは間違って無かったっす。 汗顔のイタリーっす。板汚し、失礼したっす。 それじゃ、天上の調べをオリーブの枝に接ぐ作業に戻るっす。 チャオっす。
446 :
431 :2008/08/24(日) 06:30:05
Excelで管理していたToDoのメモを使いやすくしたいと思い、 愛用のDelphiでDB化できないかと思っています。 可搬性を考え、Delphiの通常のアプリ同様インストールなしでDBを使いたいのですが、 なにかよいエンジンは何かないでしょうか? 手持ちの最新版は Delphi2006です。
EmbeddedFirebirdとか インタフェースはInterbaseそのままだからIBXとかも普通に使える。ただしDLLなので、動作時のカレントディレクトリに注意。
プロパティを絶対に変更しないって前提なら TTodoItem = class published にいろいろデータ溜め込んでTStream.WriteComponent, ReadComonentすればいいんだけど リスク高すぎなんだよな。 ここら辺もうちょっと柔軟にXMLに対して読み書きしてくれるライブラリはないものか。
453 :
322 :2008/08/26(火) 16:38:56
>>369 遅レスですいません。
エンバカデロ日本に電話してみました。
直販はやってないとのことで、個人の場合は量販店やネットなどで買ってほしいとのことでした。
通販の値段はこちらを参考にすることにします。
ボーランド/Borland Borland Delphi 2007 for Win32 Professional R2 アップグレード版 価格比較 [coneco.net]
http://www.coneco.net/PriceList/1070922054/order/MONEY/ 42000円前後でしょうか。
アップグレード割引期間内にアップグレードしておけばよかったと後悔してます。
2006の時は期間を延長したりしてくれてたのに・・・
>>447 ToDo リスト程度なら、TcrientDataSet でも十分実用になると思います。
つかDBいらねぇだろ。
日本のPCゲーム業界みたいなことになってるな
アカデミック無いのかな
5年前にやっとけよといいたいがようやく標準でまともなUNICODEアプリが作れるようになったか。 新版では、IDE、コンパイラ、フレームワーク、ランタイムがすべてUnicodeに対応し、 ANSIデータとUnicodeのシームレスな利用をサポートした。 また、新しいVCL(Visual Component Library)コンポーネントを搭載。 Office 2007から採用されたリボンをはじめとする、 新しいWindowsのルック&フィールに対応している。 さらに、RADテクノロジーを用いた多層データベースアプリケーションアーキテクチャ 「DataSnap」により、コンポーネントベースのデータベースアプリケーション開発を行えるとのこと。 これらに加えてDelphiでは、ジェネリックスや無名メソッドなど、 Delphiが持つ言語機能を強化し、開発効率の向上を実現。 一方のC++Buildeでは、新しい言語標準「C++0x」などもサポートしたとしている。
オッチャスレ池
どんどん高くなっていくなぁ
>>459 これは欲しい。
次のバージョンアップが待ち遠しいぜ。
オッチャスレみていない俺のために張っておく 新規購入価格 Delphi 2009 Professional ¥98,000 (税込:¥102,900) Delphi 2009 Enterprise ¥240,000 (税込:¥252,000) Delphi 2009 Architect ¥420,000 (税込:¥441,000) C++Builder 2009 Professional ¥98,000 (税込:¥102,900) C++Builder 2009 Enterprise ¥240,000 (税込:¥252,000) C++Builder 2009 Architect ¥420,000 (税込:¥441,000) Delphi 2009 & C++Builder 2009 Bundle Professional ¥128,000 (税込:¥134,400) Delphi 2009 & C++Builder 2009 Bundle Enterprise ¥280,000 (税込:¥294,000) Delphi 2009 & C++Builder 2009 Bundle Architect ¥480,000 (税込:¥504,000) バージョンアップ価格 Delphi 2009 Professional ¥46,000 (税込:¥48,300) Delphi 2009 Enterprise ¥160,000 (税込:¥168,000) Delphi 2009 Architect ¥280,000 (税込:¥294,000) C++Builder 2009 Professional ¥46,000 (税込:¥48,300) C++Builder 2009 Enterprise ¥160,000 (税込:¥168,000) C++Builder 2009 Architect ¥280,000 (税込:¥294,000) Delphi 2009 & C++Builder 2009 Bundle Professional ¥60,000 (税込:¥63,000) Delphi 2009 & C++Builder 2009 Bundle Enterprise ¥180,000 (税込:¥189,000) Delphi 2009 & C++Builder 2009 Bundle Architect ¥320,000 (税込:¥336,000)
高すぎる
Vistaがこけたおかげで、Delphi7が今でも現役だぜぇ。
割れ厨急増ですねわかります
>>466 うんうん
助かるよねぇ
ってか2006買ったが7使ってる
>>466 というか製品としても現役じゃないか、Del7とCBuilder6
2007の拡張に慣れたらもう戻れない。
以前買った「Delphi DB&Webプログラミング」を読んでいるのですが DB初心者にすごくわかりやすくてよい本ですね。 ところで、Delphi7時代の本のせいか、いくつか用語かツールが変わっています。 例えば、SQLエクスプローラー相当はBDS2006時代では何にあたるんでしょうか?
BDS2006はもう誰も使ってないんじゃないかな・・
いや、俺使いまくってるけどw
起動させるためのexeを作る
最初のexe起動。 次のexeをパラメータ付きで起動。 すでに起動済みならパラメータを最初のexeへ渡して自分は終了する。 タイミングによっては難しいかな。 最初のexeを終了させる方がいいかも。 いろいろ試して。
>>476 >>477 やっぱりそうゆうやり方しか無いんですかね。
やってみます。有難うございました。
>>475 自分でExe側をコーディングしているのなら、起動パラメータを弄るのではなく、
多重起動した場合、前のを落として
起動パラメータによって変更されるパラメータを変更するだけではないのかな?
480 :
475 :2008/08/28(木) 12:49:11
>>479 すいません。
前のを落とす方法がわかりません。
mutexで排他制御をして すでに起動していたらWM_COPYDATAでパラメータを丸投げして 新しい方が自爆して すでに起動している方がパラメータを受け取ってリスタートする。 あるいは WM_COPYDATAで死ねというコマンドを送って古い方を終了させて 新しい方がそのままパラメータを処理する。 前者の方が初期化を省ける分軽くなる可能性はある。 後者の方が実装が楽になる可能性がある。
482 :
475 :2008/08/28(木) 14:26:22
いい機会だからWM勉強してみます。 みなさん有難うございましたm(_ _)m
483 :
デフォルトの名無しさん :2008/08/28(木) 14:50:53
TWebBrowserにhtmlでフォームを表示してるんですが フォームのtextarea内で改行出来ません ie・fxでは正常に改行できます
UIWebBrowserとか使っとけ
>>475 DDEを使って、既に起動している方に終了命令を送るかな
後から起動した方が、パラメータを既に起動している方に送って、
すぐに終了ってのはよくあるけど
486 :
485 :2008/08/28(木) 16:59:49
>>475 DDEを使うとこんな感じ
※同じプログラム内に送受信を書きます
【メッセージ受信】
1. Systemパレットから DdeServerConv をフォームに置く
2. DdeServerConv の Name プロパティを "AAA" とかにする ← 後でトピック名に使われる
3. DdeServerConv の OnExecuteMacro イベントに受け取ったときの記述をする 例) Caption := Msg.Text;
【メッセージ送信】
1. uses 節に DDEMan 等(Formsも?)を追加
2. DdeClientConv を使って送信項目を書く↓
// アプリケーションが HogeHoge.exe で、トピック名が AAA の場合
SendStr = 'Tojiro-Goma'; ←送信するメッセージ
with TDdeClientConv.Create(Application) do begin
if SetLink('HogeHoge', 'AAA') then begin
ExecuteMacro(PChar(SendStr), False);
CloseLink;
end;
Free;
end;
487 :
475 :2008/08/28(木) 17:02:44
>>485 今回は
>>481 さんの前者の方で無事成功しました。
DDEは別のところで使えそうなので参考にさせていただきます。
有難うございました。
文字列'ABCD'があって、その文字列に1文字置きに'#'を挿入したいのですがどのようにすればいいでしょうか? こんな感じです。 A#B#C#D よろしくお願いします。
insert
Insertとforループでどうにかできました ありがとうございました
二重ループの中で中側をブレークしてそのまま外をコンティニューするにはどうしたらいいで初夏? 取り敢えずフラグ立ててみたのですがこれしかないでしょうか? for i:=0 to Files.Count-1 do begin while .. do begin case xx of mrOk :zzz; mrIgnore:begin Flag:=True; Break; end; else exit; end; xxxx end; if Flag then Continue; zzzzzz; end; mrIgnoreの時はxxxxもzzzzzzを処理せずfor i:=ループを続けたい
速度は遅いかもしれんけど中のループはbreakではなくcontinueで全部終わらせば 外のループへ出れる
goto使え
bsNoneに設定したフォームで Form1.WindowState := wsmaximized を実行するとタスクバーの領域を浸食してしまうんだがお手軽に システムメニューの最大化を実装する方法ってあります?
497 :
496 :2008/08/29(金) 21:40:44
Result := TComponent(Original.ClassType).Create(Owner); でいける気がしました。 ちょっと試してみます。
498 :
496 :2008/08/29(金) 21:51:58
>>497 は勘違いでした。orz
とりあえずいけた気がします。
function CloneComponent(Owner, Original: TComponent; ClassType: TComponentClass): TComponent;
var
Stream: TMemoryStream;
begin
Result := ClassType.Create(Owner);
if Original is TWinControl then
(Result as TWinControl).Parent := (Original as TWinControl).Parent;
Stream := TMemoryStream.Create;
try
Stream.WriteComponent(Original);
Original.Free;
Stream.Position := 0;
Stream.ReadComponent(Result);
finally
Stream.Free;
end;
end;
使い方:
Panel1 := CloneComponent(Self, Panel1, TPanelEx) as TPanel;
問題点は、PanelならPanelの上におかれたものが全部開放されちゃうことです・・・
なんとかならないかなあ・・・
再帰
Win98上での開発・デバッグ環境を用意しろとしか
短い文字列型でやってみるとか。 ShortStringね。 送信側のEdit1.Textが空のときも問題ないのかな。 PCharでキャストすると、コード領域にある#0のアドレス返すから、 その辺でおかしくなるのかも。 良く分かりません。
>>498 TReaderのメソッドの中に、
コンポーネントの構成を再帰的に追っかけて読み込んでくれるメソッドがあった希ガス
このメソッド使うと、イベントも含めたコンポーネントのクローンを作成することも可能。
507 :
496 :2008/08/31(日) 19:49:11
508 :
デフォルトの名無しさん :2008/09/01(月) 11:01:26
DLLについて質問です。 ----------------------------------- PCOPRS1CONTROL_RET Open(int port_no) port_no 使用するCOMポート番号(0 - 255) 出力 PCOPRS1CONTROL_RET_OK = 0 成功 PCOPRS1CONTROL_RET_ERR = 1 失敗 ----------------------------------- DLL内の上のような関数をテストしようと以下のようなコードを書いて実行すると関数はちゃんと走っているようなんですが矢印のところで毎回'privileged instruction at 0x0012f6d6'とエラーがでてしまいます。 これはDLLの呼び出し方が悪いのでしょうか?それとも他に原因があるのでしょうか? ---------------------------------- function Open(port_no: Integer): Integer; stdcall; external 'hogehoge.dll'; procedure TForm1.Button1Click(Sender: TObject); var i: Integer; begin i := Open(0); ShowMessage(IntToStr(i)); end; //← ----------------------------------
509 :
デフォルトの名無しさん :2008/09/01(月) 11:49:53
>>500 メッセージと一緒にデータも送ってるのか?
サンプルはCDSがローカル変数になってるのが良くないと思われるが
別のやりかたとしては、wmuser,wmapp,resisterwindowmessage()、ファイルマッピングオブジェクト、ミューテックスあたり
>>500 CDS.lpData:=PChar(Edit1.Text); がダメじゃないの?
S := Edit1.Text;
CDS.lpData := PChar(S);
でどうだ。
>>508 呼び出し規約が合ってないかもね。
Cならデフォルトはcdecl。
511 :
508 :2008/09/01(月) 20:51:26
>>510 function Open(port_no: Integer): Integer; cdecl; external 'hogehoge.dll';
ズバリその通りで上記のようにしたらエラーが出なくなりました。
ありがとうございます!
すいません、listviewのコラムの順番を変えたいんですけど ListView_SetColumnOrderArray(ListView1.Handle,3,pi); これって、3番目を1番目に移動するには pi に何を指定すれば良いんですか あと、これは全6個のうち3番目を1番目に移動するという事ですか SendMessage(ListView1.Handle,LVM_SETCOLUMNORDERARRAY,6,3) なんか、具体的な使い方が解からないので、お願いします
>>512 少しはググろうぜ
ListView_SetColumnOrderArrayはLVM_SETCOLUMNORDERARRAYのマクロだからどちらも同じと受け取っておk
piにはarray of Integerへのポインタを指定するっぽい
三つのカラムのうち一番右のカラムを一番左に持ってくるときは
pi: array[0..2] of Integer
pi[0] := 2;
pi[1] := 0;
pi[2] := 1;
でいいと思う
んで第二引数のとこには並べ替えるカラムの個数を指定するんだと思う
だからListView_SetColumnOrderArray(ListView1.Handle, Length(pi), @pi);でいいような悪寒
以上ググった結果から適当に推測した結果でした
514 :
512 :2008/09/02(火) 18:02:04
>>513 うまく出来ました
しかし、コラムの内容は位置番号と一致してるけど
それ以下の内容は位置番号と一致しないです
やっぱり一致させるのは無理なのかな
でも、使い方が解かったんで助かりました、ありがとうございますw
515 :
デフォルトの名無しさん :2008/09/03(水) 13:41:01
SpTBXLibを使っている方は、おられませんでしょうか?
Silverpoint Development
http://club.telepolis.com/silverpointdev/sptbxlib/index.htm SpTBXLibは標準で便利なドッカブルパネルがあるのですが、
いくつものドッカブルパネルを上に載せて設計時にGUIデザインすると、
画面が狭くなるためフレームを使って分離できないかと考えています。
しかし、TSpTBXMultiDock に載せた TSpTBXDockablePanel 上に
他の出作ったTFrameから継承したフレームを載せると、
載せたフレームが真っ黒になってしまいます orz
いままでSpTBXLib以外でのフレームでこのようなことはなかった気がします。
何か解決方法はないものでしょうか?
SpTBXLib 2.2です。OSは、Vista SP1、XP SP3で確認しました。
516 :
515 :2008/09/03(水) 14:23:56
どうやら、TSpTBXDockablePanel以外にも TSpTBXPanel 上にFrameを載せた場合にも起こるです。 上に載せたフレームの ParentColor := True でも無効な様子で、 Color := clNone から、Color := clBtnFaceにしたところ、通常のように表示されました。 しかし、残念ながらフレーム上では SpTBXLib の Theme設定が効きません。 他の部分がTheme対応なので不恰好になってしまいます。 VCLのソースを覗いてみてわかったのですが、 TXPManifest を載せて ParentBackground を有効にさせると、 設計時はダメですが、実行時は一応、SpTBXLibのThemeが効いてくれます。 しかし、画面リサイズ時などで画面のフレームの描画が崩れることが多々あります。 バグっぽい仕様な気がしてきました。(もしくはFrameに対応してない) ので公式サイトのリンク先のニュースグループで聞いてくることにします。 もし何かわかりましたら、こちらでも報告いたします。
AVGがDelphi7で生成したexeをウィルス扱いしやがったぜというお話
http://www.delphipages.com/threads/thread.cfm?ID=199695&G=199691&SAR=TRUE I have the new AVG 8 with Delphi 7 Pro
With AVG fully updated.
Create a new Delphi Project and add nothing and
no controls and try and run. AVG throws a false positive
Downloader.Banload.ZKA
And the exe cannot be created.
Add one piece of code or one simple component and
no problem and no warnings.
Avast!もDelphiで生成したwin32コンソールアプリをたまに誤認するよ
これIndyとどう違うの?
It is yet another internet component.
日本語でおk
523 :
519 :2008/09/03(水) 18:40:06
なんだか色々と弄ってたらどうにか使えるようになりました! お騒がせしました
.cbkってファイルがいつのまにかできていたのですが・・・? これは一体どのようなファイル? なのでしょう HogeFrameUnit.dfm.cbk というような ファイルでした 環境:BDS2006
525 :
デフォルトの名無しさん :2008/09/03(水) 20:05:26
質問させてください<(_ _)> Delphiのボタンの色を変える方法ってありますでしょうか?? Bitボタンの文字の色を変えることはできるんですが ボタン表面自体の色を変えたいです。 imageなどで画像貼り付けも試してみましたが ボタン全体に被さってしまい、立体感がなくなってしまいます。 どなたかいい方法ご存知の方おられましたらぜひご教授ください。
>>526 ボタンにピッタリサイズのimageを作ればいいんじゃないかな
528 :
526 :2008/09/03(水) 20:45:28
>>527 全体に合わせてしまうと立体感がなくなってしまうし
表面だけに会わせると、周りの色との違いがでてしまいます。
立体感含むボタンそのものの画像を作るしかないんでしょうか?
それだと大きさによって変わるからたいへんですね^^;
>>528 WM_ERASEBKGNDを捕まえて適当に塗る
530 :
デフォルトの名無しさん :2008/09/03(水) 21:29:20
>>528 ちょっと大きいPanelに乗せれば立体的に
531 :
526 :2008/09/03(水) 21:41:50
>>529 、530
それは実行時にボタンを押したときに
ちゃんと凹みますか??
やってみればいいじゃない
533 :
デフォルトの名無しさん :2008/09/03(水) 22:11:47
その手の小細工を効かせたアプリは 大抵センスがよろしくないものになってしまうという
535 :
526 :2008/09/03(水) 22:17:04
>>533 おお!
これはいけそうですね!!
どうもありがとうございます♪
536 :
デフォルトの名無しさん :2008/09/04(木) 13:51:28
ここで質問する内容ではなさそうなので躊躇したのですが、他で該当するような 活発なスレが見付からないのでお許しください。 Delphi2009が発表されるので購入を考えているのですが、非常に高いですね・・・。 バージョンアップ版をと思ったのですが、私が以前に購入したのが10年くらい前の 初期バージョンの時代で、その後は会社購入版を使用していたため、私個人の IDを紛失してしまっています。 会社では業務の都合上Delphiの必要性がなくなったので今後のバージョンアップは 見込めない状態です。 そこで質問ですが、Delphiのバージョンアップ版を使用するにあたって過去製品で個人が 登録したIDが必要になると思うのですが、その必要性はどれくらいありますか? というのも、Microsoftのバージョンアップ版ではインストール時に過去の製品での ID等を聞かれないものですから、Delphiも大丈夫かと思いましたので質問させていただきました。 変な質問で申し訳ありませんが、私個人の出費としてはあまりにも大きな差があるもの ですから質問させていただきました。もしお分かりなられる方がいらっしゃいましたなら よろしくお願いいたします。
某時代はそもそもユーザー登録してないとバージョンアップ版買えなかったから誰も知らないと思うぞ おそらくアクティベーション時に登録するCDNのアカウントで判断するんだろうけど。
会社に電話して事情を説明して購入可能か聞くしかない。 正規ユーザーの条件はIDを持っていることであり バージョンアップ版は正規ユーザーであることが条件である。 ゆえにバージョンアップは不可能。とか適当なレスはつけられるが 実際に購入可能かどうかとは何の関係もないしな。
会社で購入したことを根拠に個人でバージョンアップはどう見ても変でしょ。
>>539 初期バージョンの頃に個人で買ったって書いてあるじゃん!
それを証明できないから問題なんでしょ。 これが通るなら、新規バージョンの購入者はいなくなる。
542 :
デフォルトの名無しさん :2008/09/04(木) 19:30:42
てか、Delphi2009の販促の封筒かはがきがこないんですけど、 皆さんのところには着ましたか? プレスリリースだけで後は店で買ってねってことなのかな・・・
仕事でつかえないなら、趣味としてつかうの? Turbo Explorer でいいんじゃないの。
544 :
デフォルトの名無しさん :2008/09/04(木) 19:40:57
仕事で使う人がこんなとこで質問するの?
ActionListはどこにおくのがよいものでしょうか? FrameなどでコードやUIを分離してデザインする場合にユニットがそれぞれ分散しますよね? それぞれ、DataModuleにActionListおいておいて、 それぞれFrameなどから、 中央集権的にアクセスする感じでよいのかなあ? それと Frame を使った場合やFormがたくさんある場合に、 ほかのFormを含むユニットの依存関係ってどう処理したものなんでしょうか? ほかのFormやFrameをそのまま依存(つまり、uses)させてしまうと、分離している意味が少ない気がします。 DataModuleを介すれば、依存ユニットをusesする必要はあまりないですが、 解決になってない気もします。
>>545 自分もいろいろ試行錯誤したけど
メインフォームに置くのが最適と判断した。
各フレームに対するアクションをそのフレームに委譲していくと
アプリにとって本質的な状態の管理やらの制御のコードがフォームに残る。
データモジュールだとそのメインフォームに対する処理も冗長になるからちょっと面倒で無駄な感じ。
フォームユニットをスカスカにしても得るものがないしね。
デルピィ
_________
∧,,∧∩ /
ミ,,゚Д゚彡 < 日本がんがれ!
ミつ旦.ミ \
@ミ ミ  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
∪''∪
やあ、元気っすか?
さて、いきなり、質問っす。
コマンドラインの出力をクリップボードにとりこむような
exeを作りたいんだよ。
dir > clip.exe
みたいな実行ができるexeをつくりたいっす。
誰かおしえてくださいな。
BlueLeaf1336-PROBLEMS-2004_0013
http://www.geocities.jp/fjtkt/problems/2004_0013.html これを使うといいのかな?
それやるとclip.exeが死亡するんだが… dir|clipだよね? まあ標準入力をTStringListに放り込んでいって 最後にClipBoard.Text = Strlist.Textでいけると思う。
ゴミは消しとけよ>Delフサ
∧,,∧ どもー ミ,,゚ 3 ゚彡 ミ つ旦)~~ 〜と,,,~),,~) んーーー、こんなの書いてみて動きましたが 標準入力は、どうやって受け取るんでしょう? program ToClip; {$APPTYPE CONSOLE} uses SysUtils, Classes, Clipbrd, GrabConsole in 'GrabConsole.pas'; var SL: TStringList; begin SL := TStringList.Create; try PipeConsole('ipconfig', SL, nil); Clipboard.AsText := SL.Text; finally SL.Free; end; end.
APIのGetStdHandleで得てReadFileで読む RTLのRead関数はCのstdinなんかに比べて貧弱だから使わない方が良い
Delphi2009のバージョンアップは、今までより1〜2万高そう。
dir > clip.exe ワロタ
program cbin; uses Windows, Classes, SysUtils, Clipbrd; {$R *.res} var s, line: String; n: Integer; begin line := ''; n := 0; while not Eof(Input) do begin Readln(s); if n = 0 then line := line + s else if n = 1 then line := line + sLineBreak + s + sLineBreak else line := line + s + sLineBreak; Inc(n); end; Clipboard.AsText := line; end.
program cbout; uses Windows, Classes, SysUtils, Clipbrd; {$R *.res} begin Write(Clipboard.AsText); end. これで dir | cbin # クリップボードに取り込み cbout # クリップボードを出力 cbout | sort | cbin # クリップボードをソート な感じで使える
このへんのはC++Builderのほうが楽だと思うよー #include<vcl.h> #pragma link "rtl.lib" #pragma link "vcl.lib" だけしとけば何も考えずにVCL使えるし
パイプで繋ぐのはシェルの役目であって プログラム自体はただの標準入出力するだけのコンソールアプリだろ。 言語選ぶようなもんでもない。
∧,,∧ ♪ ミ,,゚∀゚彡 ♪ ミつ[|lllll]). @ミ ミ ♪ ∪''∪ すっげー、 ありがとう。 でも、cbinだと、こういうエラーが出るんだ。なんでかな? --------------------------- デバッガ例外が発生 --------------------------- プロジェクト ClipboardIn.exe が EInOutError クラスの例外を生成しました。 'I/O エラー (6)' プロセスは停止しています。再開するにはステップ実行または実行を選択してください。 --------------------------- OK ヘルプ(H) ---------------------------
{$apptype console}が抜けてるんじゃね
>>561 CreateProcess, CreatePipeのサンプルがMLにあったはず。
中村氏だか戸田氏のコード。
それをサブスレッドで動かしてやれば標準出力を一行ごとに取れるだろう。
標準入力も受け付けるようなコンポーネントもあったな
T*Dos*だかなんだか。かなり大昔の話だけど。
delphi component pipeあたりで探してれば見つかるんじゃねーの。知らんけど。
にしてもコマンドラインもパイプもネットワークもまるで興味なさそうだったのに
猫も進化するもんだなw
フサギコは犬だよ
Ω ΩΩ ナ、ナンダッテー!!
わ・・・わん・・・・・・・
∧.,,∧
>>562 さん
ミ.,,゚Д゚彡
ミ つ目(ミ . 相変わらずですね。
〜ミ,,O,,,,,,つ まあ、いいけど。
Autch.netさんところや、
[プロセスコミュニケートコンポーネント(適当w)]さんのところで
かかれているような応用すれば
> こんどは、ping -t 192.168.0.1 というずっと続く
> コマンドを、Memo1コントロールあたりに
> DOSプロンプトと同じ風に、1行つづ、出力したかったりするんですが
こういうのできるのかなあ。
んーー、ちょっとコーディングの感覚を取り戻す必要があるなあ。
TMemIniFileのUNICODE対応版(WideString)はどこかにありませんでしょうか?
INIファイル自体MS非推奨だからPrivate〜W系APIはない。 ついでに言えばUNICODE≠WideStringな。 MemInifileのソース抜いて頭にtype String = WideString;入れて再コンパイルしたら。
TMemIniFileはAPI非依存だから、改造すればいけそうだね
>>566 ワイド文字列の値を保存するだけなら
UTF8Encode関数でUTF-8に変換すればよいと思います
ワイド文字列のファイル名だと大変そうですね。
>>545 アクションリストは基本的にメインフォームに置いています。
データモジュールはユーザーインターフェース(U/I。表示や編集)と無関係な
内部情報や内部処理を置く場所に徹するべきだと思います。
フォームを複数使うプログラムでは
サブフォームやフレームがメインフォームを参照しないようにしています。
570 :
545 :2008/09/07(日) 15:56:17
>>569 UIに関するものはメインフォームに置く、ということですが、その場合
サブフォームやフレームがメインフォームを参照しないようにできるんでしょうか?
Frame側でFileExecuteなんてpublicメソッドを用意して メインフォーム側のFileExecuteイベントハンドラから呼び出せば依存関係がなくなる。 publicをpublishedにしてSender.Name + 'Execute'を検索すれば少し楽になる。
572 :
545 :2008/09/07(日) 20:04:55
いやそうでなく、フレーム側からメインフォームを参照するって話なのですが・・・ 動的にメソッド呼ぶのはなんか違くないですか?
573 :
571 :2008/09/07(日) 20:31:26
(その逆はともかく)どうしてもフレーム、サブフォーム側からフォームを参照したくなければしなくてすむという話をしたつもりだったんだが。 動的かどうかはあまり本質的ではないと思うが。
Delphi2007にUpdate3を当てると、System.pasが見つかりませんという DCCエラーが出るのですがどうすればいいんでしょうか? 他のUpdateも必要なのかと思い、 December2007 UpdateとApril08 Hotfixも当ててみましたが改善されません。 誰かご存知でしたら、教えてください
System.pasが見つからないは大抵コンパイラ起動する引数が多かったりするだけ ライブラリパスとか減らせば直ると思うよ こっちはd6per(笑)だから参考になるか分からんけども
>>570 ・内部情報と内部処理は全てデータモジュールに置く
・内部処理クラスや汎用関数は別のユニットに書く
とやるようにしたらメインフォームを参照することはなくなりました。
ただ、メインフォームにデータの保持とUIが一体化しているコンポを置く場合は
難しいかもしれません。
578 :
574 :2008/09/08(月) 22:19:48
>575 アドバイスありがとうございます。 手動でライブラリパスを変更して、Delphiを再起動するとうまくいきました >577 あ、問題はたぶんそれです でも、それ今はアップデートリストに出てこなくなってるようです。 一応手動ではありますが、解決しました ありがとうございました
Delphi最新版の予約語一覧をネットから見られるとこないですかね。
イメージ上でMouseDownしたときの処理A 同じくDlClickしたときの処理B 処理B実行後に時折Aが発動するんですが回避方法あります? Bの端末にReleaseCapture入れてみたがダメだった。
マウス操作ミスじゃないのか? ダブルクリック後一定時間以内ならMouseDownを無視してはどうでしょう?
マウスがチャタリング起こしてたりしない?
出勤前、帰宅後で自作自演、ご苦労さん
>>580 処理Aで↓
if not (ssDouble in Shift) then
>>581 >>582 >>585 どもです。
操作ミスではないようです。チャタリング?は調べてみたところ大丈夫みたい。
>>585 で問題なく動作しました。ありがとうございます。
ssDubleについてはこれから調べてみます。
587 :
デフォルトの名無しさん :2008/09/12(金) 19:13:43
少し相談にのっていただけないでしょうか?
TFrameをつくり、
フレームを使ってみる - DelWiki
http://delwiki.info/?%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%81%BF%E3%82%8B こちらの方法で動的生成しているのですが、
実行時に以下のようなエラーが出てしまいます。
.dfmを見ると、ClientHeightが確かにあるのですが、削除しても
フレームを表示すると、ClientHeightが再生成されてしまいます。
(ClientHeightを一時的に削除しても、同様に PixelsPerInch、OldCreateOrderプロパティでも同じようにエラーがでます)
どのような対処したらよいものでしょうか?
---------------------------
mogemage
---------------------------
PropertyToolFrame.ClientHeight の読み込み中のエラー : プロパティ ClientHeight は存在しません.
---------------------------
OK
---------------------------
環境を書き忘れていました。 BDS2006 OS: Vista SP1 です。
590 :
587 :2008/09/12(金) 20:08:04
>>587 です。
実は、Frameにこちらの TSpTBXFrame を、
Web interface to jrsoftware.org newsgroups - Re: Does SpTBXLib support TFrame ?
http://news.jrsoftware.org/read/article.php?id=15119&group=jrsoftware.toolbar2000.thirdparty#15119 使っておりまして、どうも TSpTBXFrame にしたときに
ClientHeight が published property にないのになぜか.dfmに保存されてしまうタイミングがあるようです。
(Forms.pasの property ClientHeight write SetClientHeight stored IsClientSizeStored が原因あるんでしょうか?)
そこでアドホックですが、
・「エディタで表示」(Alt + F12)でいったんIDE内でテキストで表示する
・エディタでエラーになる該当部分を消す。(ClientHeightなど)
・「フォームとして表示」(Alt + F12)で再表示する
・フレームのサイズを変更してみる
・コンパイル、実行
で修正OKでした。
結果的にエスパー必要としてスイマセン……
その後、「エディタで表示」で再度いじろうと思ったら、
---------------------------
情報
---------------------------
モジュール '(パス)hoge.pas' は継承またはリンクされたモジュールで使われています。.閉じること はできません。
---------------------------
OK
---------------------------
とかでで「エディタで表示」できなくなりました orz
これはどうしたもんでしょうか?
591 :
587 :2008/09/12(金) 20:31:37
> モジュール '(パス)hoge.pas' は継承またはリンクされたモジュールで使われています。.閉じること はできません。 の件は、どうやら フレーム名とフレームの型が .dfm と.pasで異なっていた(入力ミス?) のための影響でした。整合性をたもちましたら、解消されました。
592 :
587 :2008/09/12(金) 20:41:59
もう日記にでも買いたら。そんな一般性のない自問自答はしらんがな
>>592 おそらくIDEのバグ
回避方法はもう忘れた
発生のタイミングはフレーム上のコンポを弄って保存した時。なのであまり弄るなw
TMainmenuのソース眺めてたらコンストラクタがなかったんだけど こいつを弄りたいときはドコ見れば良いんでしょ? 複数のペインがあるソフトでToolBarとかじゃなく個々にメインメニューを 置けないもんかとふと思ってね。縦置きとか下段置きとかやれんもんかと。
継承して弄りたいなら TMyMainMenu = class(TMainMenu) public constructor Create(AOwner: TComponent); override; でいいんじゃないの。TMainMenuになければその親〜TComponentのコンストラクタがそのまま使われる。
メニューそのものはウィンドウズのメニューだよ。ウィンドウズのメニュー そのものの振るまいをかえることはできない。
ToolBarのMenuBar := Trueにする方法がなかったけ?
599 :
デフォルトの名無しさん :2008/09/14(日) 02:42:51
フォーム画面での「パネル」コンポーネントについて質問です。 すでにフォーム上に置いてあるコンポーネントを、 新たに配置したパネルの上に乗せたいのですが、 どうすればいいでしょうか? 画面左上の「構造」ウィンドウでドラッグしても、 駐車禁止マークみたいなものが出て、ドラッグできません。 (出来る時もあったように思うのですが・・・・)
カット&ペースト
601 :
599 :2008/09/14(日) 03:08:38
できました!ありがとうございます。
602 :
デフォルトの名無しさん :2008/09/14(日) 07:46:48
コンポーネントからParentのFormのイベントに対して反応することや、メソッドをフックするようなことは可能でしょうか? 具体的には、あるコンポーネントをFormに置くと、 CreateParamsを上書きして設定を書き換える、といったようなことです。 普通は、TMyForm.CreateParamsを定義して、 コンポーネントで定義したUpdateCreateParamsみたいなのを呼ぶものと思います。 ただ、もっと簡単にコンポーネントを利用できるようにならないかと思った次第です。
継承のメカニズムに外部から干渉できるとすると大問題。 コンポーネントはポトペタができるクラスに過ぎない。 過大視するのは危険。 イベント横取りやメッセージフックは簡単にできる。あらかじめ外部から 干渉可能なメカニズムはコンポーネント化が有効かもね
604 :
602 :2008/09/14(日) 18:50:09
>>603 サンクス。
>>602 には書いていなかったのですが一部やりたかった、
ウインドウメッセージの横取りは MakeObjectInstance でいけました。
調べたらサブクラス化といってDelphiでは定番の方法みたいですね。
CreateParamsはさすがにprotectedだし、というか普通のメソッドの横取りは無理だよなあ・・・
CreateParams時に、コンポーネントから呼び出してとドキュメントに書くしかないか。
どっかでアセンブラ使ってフックするような方法をみたんだけどあれはどこだったかなあ?
単なるWin32API呼び出しのフックだったかもしれない・・・。
605 :
602 :2008/09/14(日) 18:53:18
Delphi8あたりから導入された class helper ですが、 2つのhelperが同時に使えないのが痛いと感じています。 これって、改善の要望みたいなのってどこかに出ていないのでしょうか?
すいません質問なのですが、Delphiには、任意の単語を登録して自動的にハイライトしてくれる機能を持ったテキストコントロールクラスがあると聞きました。 それってTRichEditというやつでしょうか?? 教えて頂けると幸いです。
>606 そういう積極的な使い方は非推奨だから…QCに出しても相手にされないと思う。 つかInterfaceとか使うべきなんじゃね? >607 少なくともTRichEditではない。TRichEditはWindowsのWordPad相当のrtfエディタ。 TEditorとかSynEditとかかなぁ?
RichEditも指定した単語をハイライトしたりというのは出来るけど 全部自分でコード書いてやらないといけないんだよな。
DelphiIDEに使われてる16x16のツールバーのビットマップってどっかにないですか? C:\Program Files\Common Files\Borland Shared\Images のは数が少なかったり古臭かったりで微妙なんで
611 :
607 :2008/09/15(月) 23:39:52
ありがとうございます。 >>TEditorとかSynEditとかかなぁ? ああ、調べてみるとどうやらTEditorのことだったようです。ありがとうございました。 >> RichEditも指定した単語をハイライトしたりというのは出来るけど 全部自分でコード書いてやらないといけないんだよな。 そなんですよね!なのでTEditorのようなのがあるといいんのですが、DelphiじゃなくてC++(MinGW)で使いたいんですよね。 TEditorみたいののC++版みたいのがあればいいんですが・・ってDelphiスレで聞くことではないですね。。
C++BuilderならTEditorとか使えるがな
613 :
607 :2008/09/15(月) 23:43:50
BCB(CCB?ECB?)だとDelphiのコードがコンパイルできる なので他のコンパイラじゃ無理ぽ
615 :
607 :2008/09/15(月) 23:46:25
>>614 ああ、そうなのですか・・知りませんでした。ありがとうございますm(_ _)m
C++Builderは、コンパイラがC++クラスとDelphiクラス両方のクラス扱えるようになってたりと、結構特殊な環境。
617 :
デフォルトの名無しさん :2008/09/16(火) 14:56:54
質問です。 htmlの<form>〜</form>のデータを Indyのpostで送信するプログラムを作成したいのですが <input タグの name="hoge" value="hogehoge" 等のデータを解釈して読み込み、post用にURLエンコードする必要がありますが <input name="hoge value="hogehoge"> この name="文字列" 形式の、"文字列"部分を効率良く取得する方法がいまいちわかりません。 泥縄式に文字列を操作して書けばなんとかなりそうではあるのですが スパっと取得できるワザはないでしょうか。 xxxx="xxxxx"形式を一発で取得する方法とか よろしくおねがいします。
>>617 TWebBrowserからIHTMLDocument2取ってきてDOMで操作するのは?
619 :
587 :2008/09/16(火) 16:37:51
TFrameの継承クラスが、デザインして保存後にTFormに化ける問題ですが、
TTnTFrameのソース見て、原因がわかってきました。
設計時のコンポーネントとして、Delphiに登録しないといけないようです。
登録していないと
>>587 のようにTFormとして認識され、おかしなことになります。
TTnTFrameはインスコ時にちゃんとDelphiに登録しているので大丈夫のようでした。
TTnTFrameの設計時インスコ用ライブラリのソースを真似て解決できそうです。
>>618 他の処理もIndyなので、postするときだけIEコンポだと
ログインしている状態とかが引き継がれないので、
それは無理っぽいです。
<form>〜</form>を解釈してpostデータにしてくれるコンポがあれば一番いいのですが。
それか、name="hoge" value="hogehoge"を簡単に取得できる文字操作はないでしょうか。
xhtmlならXMLパーサでなんとかできないっけ?
普通はPosかwhileで探すんじゃね?
Posとかだと変態チックなhtml投げられると詰まね?
MBCSにも対応してないしな
お前らなんで例にマジレスしてんの?
Tmemoから右クリックでメニューを出したいんですが TPopupMenuとTPopupActionBarの違いがよくわかりません
計氏のMP3Playerコンポを使っていますが VolumeプロパティがVistaで機能しません 中の人はMMSystem.WaveOutSetVolumeとかしてるようですが
作者に言え
>>620 Indyで取得したソースを書き込んでパーサ機能だけ利用すればいいじゃん、ってことじゃないの?
ま、実際はWebBrowser使わずに直接パーサだけ利用できるんだけど
おすすめも何もTWebBrowserが使ってるパーサが取替え可能とでも?
>>620 2chのCookie程度で効率とか考えなくても
スクリプト言語だとスクレイピング用のパーサーなんて一杯あるのにねえ マイナー言語だとこの辺が面倒なんだよなあ・・・
パーサーもろくにかけないのにプログラマー気取りか
んでDelphi2009の体験版使ったやついないの?
いくつかブログがヒットするな
MLで中村先生が少しだけレビューしてくれてるじゃないか
DBすっぱり削っていいからソースつき&基本機能の制限なしのTurbo出してくれよ〜
637 以降はオッチャネタだね。あっちへどうぞ。
Delphi2009ってドトネトインスコ必須?
>>636 そういうあおりでは釣れないよ〜
ただでさえDelphiは車輪の再発明ばかりで、うんざりしてるんだから
愚痴ぐらい言ってもよかろう
拾ってきたソースで楽ばっかしようとばっかで 己の才能のないことをDelphiのせいにするなよ
そんなこと言う奴はVCL使うの禁止だなw まあパーサぐらい正規表現使ってぱっぱとやるべきだろうけど。
648 :
デフォルトの名無しさん :2008/09/18(木) 13:33:36
Delphiで改行はさせないけど、ボックスいっぱいになったら 次の行に表示させるようにしたいんだけど 普通のEditだとそもそも一行しか表示できないっぽいから RichEdit使ってみたんだけど、今度はMaxLengthに問題がでた。 EditではMaxLengthはバイト数なのにRichだと文字数になるらしい どうすりゃいいんだろう;
>>648 TMemoを使えばいいと思うよ。
ScrollBarsプロパティを ssNone か ssVertical にすれば勝手に折り返して表示してくれる
できました!! ありがとうございます!
Delphi2006だけど、TADOTable.Refresh を実行すると、激しくメモリリークしないか?
652 :
デフォルトの名無しさん :2008/09/18(木) 19:09:39
UNICODE文字列をANSI文字列方に変換したいから WideCharToString関数を使ってみたがString型だったため 使えませんでした。 他にStringをANSI文字列方に変換する方法ってありませんかね?
653 :
デフォルトの名無しさん :2008/09/18(木) 19:11:32
>>>652 ちなみにDelphi5です。
StringはUnicode格納できないぜ?
655 :
デフォルトの名無しさん :2008/09/18(木) 19:31:47
>>654 そうなんすか;
ありがとうございます
じゃぁ問題は他のとこか…;
どんなことをしたら文字化け(だよな?)したんだ?
657 :
デフォルトの名無しさん :2008/09/18(木) 19:49:04
文字化けっていうかBDEからADOに変えたら DBに入力した文字数ではいらないんすよ; 必ず何文字かなくなる上に、消える文字数に規則性がみつからないんです;
658 :
デフォルトの名無しさん :2008/09/18(木) 20:39:33
>>657 全く同じ症状です。
どうすればよいのでしょうか。
情報お願いします。
659 :
デフォルトの名無しさん :2008/09/18(木) 21:32:27
Parameters.ParamByName('W_NAME').SIZE:= 40; サイズ指定したら直りましたよ!
660 :
デフォルトの名無しさん :2008/09/19(金) 06:19:21
2009どこに売ってるの? 昨日秋葉回ったけど無かった
>>651 ReportsMemoryReaks := True
だったかで確認した?
バージョンアップも店で買うようになったんだな。 ハガキが来ないからどうなったことだと思った。
664 :
デフォルトの名無しさん :2008/09/19(金) 11:39:56
UnicodeStringにCRLFを挿入するときって#13#10でOK?
Asciiと同じで#0が必要
>Asciiと同じで#0が必要 ハツミミです。
ネコミミでつ。
文字コードの判定は何が良いでしょうか? UTF-8なども判定したいのでjconvertは使えません
好きな方法でどうぞ。ちなみに完全に正しく判別する方法はありません。 詳しくは文字コードスレあたりで。
rubyのkconvみたいに適当でいいから判定してよライブラリがほしいのだろうと思う
性格出るよねこういうときって
たくさんの文字を調べれば遅くなるし 少しの文字しか調べないと甘くなるしな
674 :
◆XcB18Bks.Y :2008/09/21(日) 11:57:09
>>652 var
s: string;
ws: widestring;
begin
ws := 'くだすれ';
s := ws;
end;
…こういうことではなくて?
675 :
669 :2008/09/21(日) 21:41:47
皆さんありがとうございます nkf32.dllを使おうと思ったのですがWideStringを渡す方法が分からなかったので使えませんでした とりあえず自動判定は諦めるとして、文字コードの変換だけは実装しておきたいのですが、 WideStringのまま変換する例が無いのですが、何か良い方法はないでしょうか?
エクスプローラのツリービューはフォルダをマウスダウン→アップで選択すると リストビューにファイルが表示されますが、DelphiのTreeViewとListViewで同様の処理をする場合 どのイベントで記述すれば良いのでしょうか?TreeViewのOnChangeイベントだと マウスダウンの段階でイベントが発生します。OnClickイベントならダウン→アップで イベントが派生するので都合が良いのですが、OnClickはノード選択処理に使うのは不便です。 何か良い方法はありませんか?
>>663 おいらもびっくりしたよ。いつも来ているバージョンアップ版の案内がこないからさー。
SEShop.comで買って大丈夫なんだよね?
678 :
676 :2008/09/22(月) 16:14:42
自己解決しました><
Delphiで作られたランチャで、オープンソースのものってありまふか? 参考にしたいんですが。
ランチャってただ起動処理を外部アプリに飛ばすだけなんじゃね? あとはUIの秀逸さだけが勝負かと。
どうやら久しぶりに会社でDELPHIにかかわることになりそうなんだけど 操作が全然覚えていない・・・ 3.0の頃の書籍とか全部処分しちゃってるし 最近のお勧めってなんですか?
はい
ない
ああ、世界中で1000部やっと、ってやつね。
688 :
デフォルトの名無しさん :2008/09/24(水) 20:39:01
くだらない質問失礼 TFormのonShowってのはFormのVisible弄らない限り起動時にのみ呼び出されるの?
Delphiの本スレってどこ?実質ここ? 別に超初心者じゃないんだけど。
>>688 メインフォームならYES。メインフォーム以外ならケースバイケース。
「Visibleいじらない限り」というのがShowやShowModalも含むのなら
それ以外で呼び出されるってことはないんじゃないかな。
質問スレはここだけみたいな気がする。
昔はあったよね。本スレっぽい(雑談だったっけ?)スレが。
寺子屋もあるぜよ
Delphi2から使ってるんで、超初心者でも初心者でもないんだが 2009どうよ、とかそういう話題はどこですればいいんかなー。
2chのDelphiスレは終わってるからMLでおk
>>690 質問スレここしかない。
超初心者じゃない俺も質問しているからOK
699 :
デフォルトの名無しさん :2008/09/25(木) 16:04:17
TMemoの改行を不可にしたいからこういう処理書いてみたが、 BackSpace使うと即行Tmemo内の文字の最後尾に移動してしまうんですが。 Tmemo.Text := StringReplace(Tmemo.Text,#13#10,'',[rfReplaceAll]); Tmemo.SelStart := Length(Tmemo.Text); 本来はどう書くのが正解?
>>699 普通にonKeyPressで#13殺したらいいんじゃね?
WantRetuensをFalseにするだけじゃダメなの?
702 :
デフォルトの名無しさん :2008/09/25(木) 16:37:18
703 :
688 :2008/09/25(木) 22:05:42
ありがとうございます
指定した位置から、指定したバイト分の文字列を抜き出す関数ってありますか?
Copyのまんまやん
Toolbar2000よりTurboDelphi2009はまだかー
CodeGearは出す気はあるらしいけどね 学習用として出すらしいから機能は減るけど
作ったソフトを配布できないとか意味不明な事はやめて欲しいのう
(経済)笑い
他人に上げるソフトなんて1部だけだし俺はそれでも構わんけどね
>>705 Copyの引数ってバイト数じゃなくて文字数じゃないの?
Copyはバイト数だよ。逆に文字数にしたかったらWideStringにキャスト Copy('へべれけ', 2, 2) ==> '??' Copy(WideString('へべれけ'), 2, 2) ==> 'べれ'
)経済(笑い
Turbo Explorerのことは、あきらめな。おそらくDelphi/C++Builderではなく、 Object Pascal/C++学習用環境、ということに…。
Delphi 6 で仮想リストビュー使ってます。 チェックボックスも表示したいのですが、OnData イベントで StateIndex にセットしないと表示しないようなので、 どうせならマウスカーソルのポイントの有無で色を分けようと、イメージリストに4種類の絵を用意しました。 インデックスは 0: チェックなし、1: チェックなしポイントあり、2: チェックあり、3: チェックありポイントありです。 リストアイテムの上でカーソルを動かすと OnData イベントが発生するようなので、WM_MOSEMOVE を処理して カーソルの位置からポイントしているアイテムを割り出して、OnData イベントでセットしわけようとしました。 WM_MOSEMOVE メッセージは Application.OnMessage イベントハンドラで処理しています。 コードの抜粋です。 【Application.OnMessage イベントハンドラ】 procedure TForm1.AppMessage(var Mesg: TMsg; var Handled: Boolean); var Point: TPoint; idr: TRect; begin if Mesg.message = WM_MOUSEMOVE then if Mesg.hwnd = ListView1.Handle then begin if ListView1.Items.Count > 0 then begin idr := ListView1.Items[0].DisplayRect(drBounds); if FListView1ItemHeght <> (idr.Bottom - idr.Top) then FListView1ItemHeght := (idr.Bottom - idr.Top); end; Point := ListView1.ScreenToClient(Mouse.CursorPos); FListView1MouseX := Point.X; FListView1MouseY := Point.Y; FListView1ItemIndex := (FListView1MouseY - ListView1.Top) div FListView1ItemHeght - 1; end; end;
720 :
719 :2008/09/27(土) 13:15:17
(つづき)
【OnData イベント】
procedure TForm1.ListView1Data(Sender: TObject; Item: TListItem);
var
ColumnWidth: Integer;
begin
ColumnWidth := ListView1.StringWidth(Format('Item%d', [Item.Index]));
Item.Caption := Format('Item%d', [Item.Index]);
if (FListView1ItemIndex = Item.Index) and (FListView1MouseX < 16) then
Item.StateIndex := 1
else
Item.StateIndex := 0;
if ListView1.Columns[0].Width < ColumnWidth + 30 then
ListView1.Columns[0].Width := ColumnWidth + 30;
end;
しかしこれだとマウスカーソルをチェックボックスにポイントしても変化しません。
ポイントアイテムの特定がめちゃくちゃなのはわかってますが、ズレてても変化ぐらいはしてもいいと思うのですが…。
アイテムの特定に無理やりな計算をしているのは、GetItemAt メソッドの使用が原因かどうか切り分けたかった
からです。
ttp://mackerel205.ddo.jp/data/program/test/VirtualListViewCheckBox.zip 一応ここにプロジェクト一式置いておきますんで、興味があったら見てみてください。
そんなもん使わないでぶあーちゃるつりーびゅぅーを使おうぜ!
TListViewにファイル一覧を表示して、ドラッグ&ドロップで並び順を変更できるようにしています。 これにさらにOLE Drag and Dropの機能を追加して、ファイルを他のアプリケーションへドロップできるようにしようとしています。 この場合、どうすればOLE Drag and Dropと並び順の変更機能を共存させられるでしょうか? 並び順の変更もOLE Dropを受けて行うしかないのでしょうか。
723 :
722 :2008/09/28(日) 21:33:39
やっぱりOLE Dropの処理と統合するしかなさそうですね。 素直にそう実装することにします…。
自作のアプリのUIはMainMenu+Coolbar+ToolbarなXPのExplorer風からまったく進歩してないな・・・ ActionManagerとかって最新の環境だと普通に使われるくらい安定してるの?
質問です。 TStringGridを使ってます。 例えば、Rowを削除したいのですが、簡単なメソッドがありません。 そこで、OnSelectCell内でRowの内容をずらして行って、最後に RowCountを-1使用と試みても、 OnSelectCell内でCellsの内容をいじると再帰で呼ばれて、オーバフローに なってしまいます。 簡単にRowを削除する方法ありますか?
>>727 DelRow:=StringGRid1.Row;
for N=0 to StringGrid1.ColCount-1 do
StringGrid1.Cols[N].Delete(DelRow);
StrinGgrid1.RowCount:=StringGrid1.RowCount;
>>728 さん
ありがとうございます。
頂いたコードを試したりしたのですが、
”グリッドの行を追加/削除することは出来ません”
というエラーが出てしまうんです。
簡単にTValueListEditorのように空のRowを削除できないものでしょうか・・・
あ、すみません。環境はD6+XP SP3です。
よろしくお願いします。
>>729 ごめん、なんか勘違いしてるわ。今は↓こんなんしか思いつかん。
for N:=StringGRid1.Row to StringGrid1.RowCount-2 do
StringGrid1.Rows[N].Text:=StringGrid1.Rows[N+1].Text;
StrinGgrid1.RowCount:=StringGrid1.RowCount-1;
TPageControlにHintを設定したときにTabSheetの部分でヒントが表示されないようにするにはどうすればいいんでしょうか
734 :
デフォルトの名無しさん :2008/10/06(月) 14:09:18
TMemo枠から文字列がはみ出てしまうので調整したいのですがどうしたらいいんですかね
735 :
デフォルトの名無しさん :2008/10/06(月) 15:14:29
>>734 質問間違えました
TQRLabelを一定の文字数に達したら折り返す方法ってありませんかね?
OnDraw何とかイベントで描画処理書いたらどうでしょうかね?
737 :
デフォルトの名無しさん :2008/10/07(火) 09:05:45
>>736 それってどうやるんですか;?
印刷するときに切れちゃうんで折り返したいんですが・・・;
TQRLabelのことを知らないんではずしてるかもしれないが Caption := 'aaa' + sLineBreak + 'bbb'; で折り返されるかもしれない。 無理なら凹みを取っ払ったMemoにでも表示してラベルに見せかけるしかない。
739 :
デフォルトの名無しさん :2008/10/07(火) 10:57:53
>>738 Caption := 'aaa' + sLineBreak + 'bbb';
のほうはちょっと無理そうだったので凹みなくしたMemo使ってみたんですが
TQRLabel.Caption := TEdit.TMemo.Text;
のところで引っかかりました。(※ちなみにこれは印刷するデータを格納してるとこです
これを
TMemo.Text := TEdit.TMemo.Text;
に変えてみましたが、印刷の際入力した文字が入っていないのです;;
delphi 2009 で unisynedit のパッケージ コンパイルできた方いませんか???
最新版ならコンパイル出来るんじゃね? D2009のための対応がちらほら見受けられるぞ
ExtractIconExの第3,4引数にnilを渡したいのにvarと宣言されていて渡せないんですがこれって回避方法ありますか? 自分で宣言書いたほうが早いかな・・・
自分で同等の宣言を書いたほうが早いと思う。
ありがとうございます
PChar(nil)^ みたいなので無理やりいけたような。
746 :
740 :2008/10/08(水) 09:04:24
>>741 そうなんだけど
最新のでも、宣言に問題があるんだか、コンパイラオプションに問題があるんだか
うまくいかないので、もうちょっといじってみます
747 :
デフォルトの名無しさん :2008/10/08(水) 18:52:50
ToBlindCarbonCopy って一行にひとつのメアドしか入れられないってヘルプにあったけど、 本当に入れられるメアドひとつだけ?
やってみればいいじゃない
749 :
デフォルトの名無しさん :2008/10/08(水) 19:48:42
>>748 やってみてるけどまずそのために必要なコンポーネントが見つからんのよ
TNMSMTPってやつ
750 :
デフォルトの名無しさん :2008/10/08(水) 20:03:09
>>749 > TNMSMTP
NetMasterって奴?
随分古いのを使っているんだなー。
FastNet(NM...)は先がないんでIndyかICSをお勧めします。
まあ今時FastNetをいじってるのは 保守かなんかで、Delphi 5時代の古いコードを直さなきゃならない 可愛そうな人なんだろうけど。
754 :
デフォルトの名無しさん :2008/10/09(木) 09:27:02
>>753 正解。
保守でまんまDelphi5いじってる。
送信の
NMSMTP1.PostMessage.ToBlindCarbonCopy:=(w_AddList);
の前で w_AddList に複数アドレス入れてみてるけど、
w_AddList.Add('ad');
w_AddList.Add('ad');
w_AddList.Add('ad');
w_AddList.Add('ad');
でAccess violation のクラス例外出るわ。
・・・やる気半減
>>754 NMSMTP1.PostMessage.ToBlindCarbonCopy.Add('addr1');
NMSMTP1.PostMessage.ToBlindCarbonCopy.Add('addr2');
NMSMTP1.PostMessage.ToBlindCarbonCopy.Add('addr3');
のほうがいいんじゃね?もしくは
NMSMTP1.PostMessage.ToBlindCarbonCopy.Assign(w_AddList);
とか。
オブジェクトの代入はソース確認できないと怖くてできないな。
FastNetはバグが多いから メーカーが見捨てた代物だからな。
757 :
デフォルトの名無しさん :2008/10/09(木) 13:42:03
>>755 ありがとうございます!
そこの部分では出なくなりました
で、結果的にこういう風になった。
// 件名
w_Subject := ('くだすれ');
//元のデータ
//w_AddList.Add('Address1');
//w_AddList.Add('Address2');
//新しいデータ
NMSMTP1.PostMessage.ToBlindCarbonCopy.Add('Address1');
NMSMTP1.PostMessage.ToBlindCarbonCopy.Add('Address2');
// 送信
NMSMTP1.PostMessage.FromAddress := 'USER_Address'; //メール送信者
NMSMTP1.PostMessage.Subject := w_Subject; //件名
NMSMTP1.PostMessage.ToBlindCarbonCopy:=(w_AddList); //メール受信者
NMSMTP1.PostMessage.Body.Add('本文〜'); //メール本文
NMSMTP1.SendMail;
当たり前だけどメール受信者んところでまた引っかかります;
教えてもらった"新しいデータ"部分をそこに入れると今度は
”Exceptionクラスの例外生成'Not Connected'プロセスは停止しています。”
ってなるのです。
>>757 そりゃNot ConnectedってんだからConnectしないといかんのだろ。
というかそこでつまづいてるってことは既存のメール送信機能の修正
ではなくメール送信機能自体の追加なのか?それならNMSMTPなんか
じゃなくIndyなりICSなり使ったほうがいいんじゃね?
どうしてもNMSMTPを使いたいならヘルプのPostMessageプロパティ
の例をよく読んで全体の流れを把握するといいかも。それと日本語
の事情は考慮しないので文字化け対策が必要かもだ。
そんなことわかってるってんならスマン。
759 :
デフォルトの名無しさん :2008/10/09(木) 17:18:52
>>758 ありがとうございます
基本として既存の修正をしているのですが、
その作りがだいぶ怪しいので既存のソースを基にしてチョンプロを
つくっているのです。
詳しく教えていただいてありがとうございます;
自分初心者なんで凄く助かります!
760 :
デフォルトの名無しさん :2008/10/09(木) 18:21:35
学校でTurbo Delphiを使い始めたんですが・・・。 if文ができません。おしえてもらえますか? 整数nが正の数、負の数、0を判断するプログラムなんですが begin write('nは?'); readln(n); if 0<n then writeln('正の数') else if 0>n then writeln('負の数') else if n=0 then; writeln('0である'); readln; end. 正の数を打つと正の数、0であるが出力されます。 どこがちがいますか?
if n=0 then の後にセミコロンがある。 これが何を意味するかは自分で考えてみ。
then; writeln('0である'); ↑
「if n=0 then;」まるごといらね
>760 冗長と思ってもbegin...endでブロックにするとよいと思う。もちろん>761でFAだけど。
>>764 授業で教えてないことをすると怒られることもあるんだぜ
そんな教授のいうことなんて聞かなくていい
近頃はdelphiなんか習うのか 俺のときはCOBOL
>>765 あー、俺 Z80 アセンブラの授業で習ってない命令とか使ったら怒られた。
DelphiってよりPascal習ってる感じだな
>>768 日本の学校教育は、課程主義(能力主義)じゃないからね。ペースを守らない子は×。
教員の立場からは、高能力者の放置 & 能力弱者への手厚い福祉で成り立っている。
飲み込みが早くて自ら進んで学習する子は差別され、牛歩と太極拳を強いられるのだ。
うぜぇ
プログラミングは適正があれば独学でどんどん進めるからなあ。 なければ悲惨。 まあ業界のプログラマーの大半は適正ないけど、無理やり規格品にして派遣するのが実情。
773 :
デフォルトの名無しさん :2008/10/10(金) 15:17:19
EInvalidOperationクラスの例外で 'コントロール''は親ウィンドウを持っていません' ってのは何が原因??;;
そのコンポーネントの親がまだ決まってないときに描画させようとすると出るな。 描画の前に if( Parent = nil )then exit; とか入れてみるとどうなります?
775 :
デフォルトの名無しさん :2008/10/10(金) 15:55:38
>>774 もう既に動いていたプログラムの別箇所を改修しただけだけど出るものなのですか?;
すみません。超若葉マークです自分;
解決して欲しいならソースをどっかにあげろ
リストビューで最初の項目にフォーカスが来るようにしたいのですが来てくれません。 どうしたらよいでしょうか。 (レポート形式で仮想リストビュー,MultiSelect = Falseです) ListView1.Items.Count := なんとかList.Count; ListView1.UpdateItems(0, pred(なんとかList.Count)); if なんとかList.Count >= 1 then ListView1.ItemIndex := 0; //@ @を実行すると先頭の項目が選ばれた状態になりますが フォーカスは最初の項目に来てくれません。 トレースしたところでは@の実行後にListView1.ItemIndexを読むと0が返ってきていますし その後の待機中でも0のままでした。
if なんとかList.Count >= 1 then begin ListView1.ItemIndex := 0; //@ ListView1.ItemFocused := ListView1.Items[0]; end; では駄目でごんすか?
ちょっと邪道臭いけど自分はこれでしのいでるよ。 Sender.Perform(WM_KEYDOWN, VK_HOME, 0);
>>778-779 ありがとうございます。どちらもうまくいきました。
>>778 はSelectedと組み合わせて望み通りになりました。
>>779 は緊急回避のために覚えておいて損はなさそうですね。
ListVoew1.Selected := ListView1.Items[0]; じゃね?
782 :
デフォルトの名無しさん :2008/10/10(金) 17:38:03
>>761 ありがとうございます。セミコロンは文を終わらせる
みたいな感じですよね?セミコロンを取ると次は0を打った
とき負の数、0であるがでてしまいました。。。
783 :
デフォルトの名無しさん :
2008/10/10(金) 18:19:55 >>774 違う場所で読み込みエラーが出ます
自分的に最早これどこでどうなっているのか分からなくなっているんで
もう誰かに投げます。