モナーの *やさしい* Delphi質問スレ Ver.9
∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
( ´∀`)<. Delモナーがどんな厨房疑問でもやさしく答えます。
( ) .| Delモナーは時に私であり、時には別の人。
| | | | 他のスレに書き込んで罵倒される前に、まずここで質問しよう。
(__)_) \_________________________
前スレ モナーの *やさしい* Delphi質問スレ Ver.8
http://pc3.2ch.net/test/read.cgi/tech/1027873869/
2 :
デフォルトの名無しさん :02/10/04 03:21
あれぇ?? いいのかなぁ・・・ 2ゲットォォォ! by Delphi 超初心者(^^;ゞ
4 :
デフォルトの名無しさん :02/10/04 03:22
ガックリ(゚_ 。)
6 :
デフォルトの名無しさん :02/10/04 03:23
結局統合しなかったんだ
7 :
デフォルトの名無しさん :02/10/04 03:25
Del使いの人に質問なのだけど、相談室とフサギコとモナーはどうやって使い分けているの?
>>7 俺は
モナー 初心者向け、罵倒なし
相談室 中級以上向け、罵倒あり
フサギコ Delphiとその周囲の「談話」 罵倒・荒らし多数
という使い分けをしてる
>>相談室 中級以上向け これは信じられない
俺はモナーが罵倒なしってのが信じられん
以前はそういう定義だったんだけど、今は崩れてしまった。
>>11 元質問者にはやさしくするけど、煽る香具師には容赦しない。
個人の定義だから他人はどうかしらないけど。
13 :
デフォルトの名無しさん :02/10/04 21:10
Delphi Tech復活求む!!
厨房は相談室に来る前に、 モナーに聞けってことだな
15 :
デフォルトの名無しさん :02/10/04 21:52
>>13 テクニカルな話題なんて誰もできない罠。
ここもMLもネット上で自分で何か作ろうって気のある奴は誰もいない罠。
フサギコ.NETスレを、Delphiの高度 or トリッキーな話題にすれば? そんな感じになりかけてるし。
sage
運営話を続けていると 質問者が質問しづらいかも 談話室に移動するのがよいのでは?
質問です。 Form をダブルクリックしたとき OnClick イベントハンドラが呼ばれないよう にしたいのですが、どうしたらいいんでしょうか?
>>19 1、イベントハンドラの先頭でスグに抜けるようにする
2、OnClick=nilにする
バリアント配列のサイズを変更する手続きVarArrayRedimについての質問. 多次元配列の場合は最後の次元の上限しか変えられないのでしょうか?
>>20 ありがとう。
でも、それだとシングルクリックのときに、こんどは OnClick イベントで
処理ができない
OnClick内で現在の時刻取得してTimer1.Enabled := Trueする OnTimerイベントハンドラで取得した時刻が変わってなければ シングルクリック、変わってればダブルクリック。 だけでは不正確なんだけどね。
>>23 よく理解できません。すみません。
Timer1.Interval := 100;
だとして、OnTimer イベントハンドラでは必ず
時刻 > 取得時刻+100ms
になるんでは?
未来は予測できん、ということかな
>>19 ダブルクリックした時は、OnClickの処理をすっ飛ばしたいという事ですか?
OnClickでGetDoubleClickTime API 時間だけタイマーでも仕掛けて、ダブルクリック時間経過後に
ダブルクリックされていなければクリックの処理をする…というのがひとつの方法。
何れにしろ、シングルクリックの時点では、ユーザーが続けてクリックするかどうかわからないので、
判断を遅らせる必要があると思います。
>> 未来は予測できん、ということかな そうですね。ダブルクリックの途中で呼ばれたのか、それとも本当の シングルクリックで呼ばれたのか、OnClick イベントハンドラのなかで 判断できない ということですか。 そうなると、23 さんの提案のように、タイマをつかって、ちょっと 処理のタイミングがずれるけど、OnDblClick で旗立てて、OnTimer でそれをみて、旗がたってたら OnDblClick でしたい処理、 旗がたってなかったら OnClick の処理、という判断する、 のが現実的かなぁ
>>26 > …というのがひとつの方法。
あとは、どのような方法が?
OnClickの中で一定時間止めて その間にダブルクリックされたらOnClickを抜ける。
31 :
デフォルトの名無しさん :02/10/06 16:26
TreeViewのノードラベル変更中のキー操作をフックするにはどうすればよいですか?
たとえば、ラベル変更中に、上下矢印キーが押されたら選択ノードを変更したり、 「Alt + D」が押されたらノードを削除したりするにはどうすればよいですか?
TEditorやTRichEditでキャレットが点滅しているときにLines.Addを使うと最終行までスクロールしてしまい、Lines.Text:=Lines.Text+#13#10とやるとスクロールはしないのですがあまりに遅すぎます。 スクロールさせずに一行追加させるのに何か良い方法はありませんか?
(V)∧,,∧(V) ヽミ・ω・ノ フォッフォッフォッ . .ミ,,,,,,, ミ ノ ゝ 画面の描画を止めて、スクロール位置を覚えさせて Lines.ADDして スクロール位置を戻して、画面の描画を再開 ってのが、いいのでは?
>>Delフサギコさん なんとなくできました。 ありがとうござ!
38 :
デフォルトの名無しさん :02/10/06 19:36
TClientSocketを使って、サーバと通信をしたいのですが、 ボタンのClickイベントの中で 1 TClientSocketをOpenする 2 10秒間以内にサーバから返事が返ってきたらコマンドを送信する 3 返事が帰ってこなかったらあきらめる と書いてみたのですが、Clickイベントの中ではTClientSocket.Activeがずっとfalseのままです。 パケットキャプチャで見るとサーバからの返事はすぐ帰ってきているのですが、 Clickイベントを抜けたあとにTClientSocketのConnectイベントが起こります。 なぜでしょうか?どのようにして解決できるでしょうか?
40 :
デフォルトの名無しさん :02/10/06 20:39
おまいら、DUnitとか使ったりしてますか。
なにそれ?
42 :
デフォルトの名無しさん :02/10/06 22:18
>>23 >>26 >>27 できた! ありがとう。普通のクリックの時は、ちょっと処理の遅れが目立つ。しょうがないですね。
procedure TForm1.FormCreate(Sender: TObject);
begin
Timer1.Enabled := false;
Timer1.Interval := GetDoubleClickTime;
end;
procedure TForm1.FormClick(Sender: TObject);
begin
Timer1.Enabled := true;
ClickFlag := 1;
end;
procedure TForm1.FormDblClick(Sender: TObject);
begin
ClickFlag := 2;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Timer1.Enabled := false;
case ClickFlag of
1:ShowMessage('Single Click');
2:ShowMessage('Double Click');
end;
ClickFlag := 0;
end;
>>30 ありがとう、できました。
public
{ Public 宣言 }
IsDblClick:Boolean;
DTime:DWORD;
end;
---
procedure TForm1.FormCreate(Sender: TObject);
begin
DTime := GetDoubleClickTime;
end;
procedure TForm1.FormClick(Sender: TObject);
var
initTime:DWORD;
begin
initTime := GetTickCount;
while GetTickCount < (initTime+DTime) do
Application.ProcessMessages;
if IsDblClick then begin
ShowMessage('Double Click');
IsDblClick := false;
end else
ShowMessage('Single Click');
end;
procedure TForm1.FormDblClick(Sender: TObject);
begin
IsDblClick := true;
end;
コンポーネントパレット[Servers]の"TExcelApplication"や"TExcelWorkbook"のリファレンスってどこかにないですか? Webでも書籍でもかまわないので、知りたいのですが。
つまりWindows XPでRubyのテストがしやすくなる?
>>38 スレッドで処理するか,ClientType を ctNonBlocking にするか
TClientSocket は簡単に結果が見えるので好きだったんですけど,
D7 では obsolete になったそうで.
49 :
デフォルトの名無しさん :02/10/07 14:42
DBLookupComboBox で、ドロップダウンリストが 1行しか表示されないトラブルで困っています。 データの行数、DropDownRowsともに問題ないはずなんですが・・・ 同じようなトラブルに遭遇した方、対処法があれば教えてください。 もしFAQだったらすみません。
50 :
デフォルトの名無しさん :02/10/07 16:14
CliantDataSet+DBGridで データ新規登録時、 他の登録データと区別をつけるために 色を変更したいのですがうまくいきません。 Delphi広場で編集時の色の変え方は 達人の方々に教えて頂いたのですが 新規登録時の場合は二週間ほど待ちましたが お答えいただけませんでしたので こちらに投稿した次第です 貴重なお時間を割くことになりますが どうぞよろしくお願いいたします。
>>46 ExcelのVBAHelpもしくはExcelxx.pasのソースを読む
基本的にExcelのVBAがわからなければ何もできません
VBAから出直しましょう
基本的に各オブジェクトのメソッド、プロパテさえわかったら 別にVBAなんてわからなくってもいいんでわ?
_______________ ∧.,,∧ /認めたくない事実の一つだとは ミ.,,゚Д゚彡< 思うですが、多分VBAかVBで ミ つ目(ミ . \作った方がかなり楽。 〜ミ,,O,,,,,,つ  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ヤッタコトアルカラ
>>21 やぱり変えられないようなので上限値を先に調べて設定しました.
>>54 一次元配列が拡張できるのなら、多次元配列を一次元配列に置き直して
格納すればよいのでは。拡張時に要素を移動する必要が生じますが、自
由度とのトレードオフでどうするか考えれば何とかなると思います。
もっと自由度が必要なら、TListや自前のポインタを使うかして処理すれば
良いし。
>>55 例えば二次元配列 の行列の最大をXMAX,YMAXとして
x,yを (XMAX+1)*y+x で求めるようにした時に、YMAXを増やす時には簡単でも
XMAXを増やす時はサイズを変更してからコピーが必要になる
>>39 Windowsのメッセージについてよくわかってないので、
適切なコードを書けずうまくいきませんでした。
しくしく。ごめんなさい。
>>48 スレッドを使い、うまくいきました。ありがとうございます。
今回はテーブルコンポなどのLookupメソッド風に TQueryでの『問い合わせ』の結果を戻り値として格納するためのものを作っていたので バリアントにこだわっていました. (最初に書けば良かったです…過去と同じ失敗(鬱)すいません) 今思えば Variant の代わりに array of array of Variant; でも良かったと思います. SetLengthで自由に長さを変えられますし type T2DVarDynaArray = array of array of Variant; と定義すれば戻り値にもできます.
59 :
デフォルトの名無しさん :02/10/09 16:05
サンプルのソースを実行したんですけど日本語を入力すると文字化けしてしまいます こういう時はどこに何を書いたらいいんでしょうか?
>>56 フォームのフォントは何になっていますか?
61 :
デフォルトの名無しさん :02/10/09 16:41
TTreeViewでノード上にマウスカーソルを乗せたとき ノードごとに違うヒントを表示させるにはどうしたらよいのでしょうか?
Win32 の 「pagecontrol」 を使いたいんですが、 いくつかタブを作ったのはいいけど、それらのタブを入れ替える方法が わかりません。 例えば、 TabSheet1 TabSheet2 ・・・ というのを、 TabSheet2 TabSheet1 ・・・ のように入れ替えたいんです。 ご存知の方、教えてください
63 :
デフォルトの名無しさん :02/10/09 16:56
Indyのsmtpのサンプルソースか日本語ヘルプはありませんか?
ミ,,゚Д゚ミつ Indyのメールクライアントサンプルなかったっけ?
オブジェクトツリーで並び替えられました。
66 :
デフォルトの名無しさん :02/10/09 18:40
スマソ Indyって今どこでDLできますか? リンク死んでるような・・・
ExtractIconでEXEのアイコンを抽出してみたんですが、 Imageで見る分には問題ないのに保存してみると色化けしてしまっていて困ってます。 うまく色化けせずにアイコンを保存する方法ありませんか?
70 :
デフォルトの名無しさん :02/10/09 21:02
Indy 日本語ヘルプキタ━━━━━━(゚∀゚)━━━━━━!!!!!
>>56 フォローありがとうございます。説明するのが面倒くさかったのと、
配列を拡張しようかと思う人なら想像付くかと思って、説明を省いて
しまいました。
72 :
デフォルトの名無しさん :02/10/10 00:23
すいません チャットソフトを作ってみたんですけども ウィンドウの大きさが実行時変更できません これってどのプロパティなんでしょうか?
73 :
デフォルトの名無しさん :02/10/10 00:51
アカデミック版を買いたいのですが身分証の提示を要求されますか? 東京近郊で身分証を要求されない店ってどこかないでしょうか?
中古屋
?ンニャ __________
∧,,∧ /
ミ ゚Д゚ミ <
>>72 FormのWidth/Heightじゃないの?
(ミ ミつ) \
〜ミ ミ  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
∪ ∪
>72 Form の BorderStyle は bsSizeable になってる?
77 :
デフォルトの名無しさん :02/10/10 17:46
質問!現在、フォームのプリントを行っているのですが、 コンボボックスの選択されている項目が どうしてもプリントされません。 どうすればいいのでしょうか? Form1.print のコードだけでは無理なのでしょうか?
違います!
> Form1.print のコードだけでは無理なのでしょうか このコード、これ以上工夫しようがないので無理。 自前でキャプチャして印刷する。
厨房質問です。 random(3)として 返り血の0〜2は、整数ですか? あと何回もrandom()を使うと エラー起きるんですが、そんなもんですか?
ヘルプ嫁 んなこたない
>>82 ヘルプ読んだんですが、
randomが載っていないんですが・・・。
漏れのだけ?
/⌒\ γ彡・ω)ミ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ |ミ,, ゚Д゚彡 < D6のHELPです | つ_|| ̄ ̄ ̄ | \_____________ 〜ミ,,, ,,|\||Letsノ-ト| '\||.======.| ちゃんとHELPにあるよ  ̄ ̄ ̄ > ユニットSystem > function Random [ ( Range: Integer) ]; > 説明 > Random 関数は,0 <= X < Range の範囲にある乱数を返します。 > Range を指定しないと,結果は 0 <= X < 1 の範囲にある実数型の乱数になります。 こんなのもあるよ。 > ユニットMath > function RandomRange(const AFrom, ATo: Integer): Integer; > 説明RandomRange 関数は,AFrom から ATo までの範囲で無作為に整数を返します。 > RandomRange は,負の範囲(AFrom が ATo より大きい)を処理できます。
>あと何回もrandom()を使うと >エラー起きるんですが、そんなもんですか? プログラマのせいか、肌鮮度のせい
>>85 どうも。漏れのヘルプには載っていませんでした・・・
ついでにエラーの内容も書いて
/⌒\ γ彡・ω)ミ どうせDQNなオレの戯言 |ミ,,゚Д゚ミ なんだけど、 |(ノ |つ hiroはともかく将来、文字数を求めたくなって イイワケイイワケ 検索してあのスレがヒットしても2度手間だろうなと....
>>90 そんなのたどれるだろうと思ってみたら
VCLリファレンス>ルーチン一覧(カテゴリ別)>MBCSユーティリティ>ByteToCharLen
まず「MBCS」がわからないかも、というのが俺の結論。
ミ゚Д゚*,,彡 >文字数を求めたくなって 文字数を求めたくなった人がいたとして の間違いでつたゴルァ...
VB.NET使えばOK、というのが俺の結論。
Unicodeでも1Word=1文字が成り立たなかった場合があったようななかったような… なんとかペア
そうそう、サロゲートペア。
.NETでもchar = 16bit+サロゲートペアなので、結局要素数≠文字数なんだなあ。
(StringInfoみたいなのは用意されているけど)
>>96 現Delphiでも、object型とproperty...[...]...; default;で(+演算子を除き)、又はカスタムバリアント型で
できるよーな気もするが、それ自身のオーバーヘッドを無視するとしても、
計算オーダーをひとつ増やすだけにしかならないと思う。
98 :
デフォルトの名無しさん :02/10/10 22:51
サロゲートなんて無視無視。誰も困らないから。
∧ ∧ ミ ゚Д゚彡 Delphi.NETではObject型は 〜ミ,,,,uuミ なくなるんだっけ? なぜ、復刻しなかったのかなあ・・・ この際、UTF64とかUTF128作って世界のアリアラな文字を 少し筒追加していって いれることってできないのかしら....
>>81 >>85 と
>>92 を参考にヘルプを調べてみたら見つかりまつたよ
VCLリファレンス>ルーチン一覧(ユニット別)>System>Random関数
>>100 ちょっとまて
関数名がわかってるならキーワードに入れれば一発なんだけど。
>>92 は「こんなことがしたいけど、いい関数ないかな」と思いながら
探す方法だよ。
キーワードというか最悪、テキスト検索でも出てくるし。
>>92 MBCSを概念で説明してもちんぷんかんぷんでしょうしね.
日本語文字列が使えるのが当たり前な世代には
ASCIIコードの誕生から順に説明したほうがいいように思います.
>>102 Win9x系だと残念ながらテキスト検索出てこないです.
(昔,FDELPHIにWin9x系でテキスト検索する裏技がありましたけど)
>MBCSを概念で説明してもちんぷんかんぷん DelフサとかDelフサとかDelフサとか・・・。
105 :
デフォルトの名無しさん :02/10/11 17:08
Borland Delphi 6 Personalで保存したものは それまでのDelphi5などでも実行できますか?
>>105 ソースは Variantの問題を切り分ける必要がある事、
DFMの修正が必要だと思います
そのままは無理って事ですね・・・。 ありがとうございます。
108 :
デフォルトの名無しさん :02/10/11 17:45
質問です!現在Form1とForm2を作っています。で、Form2からボタンを押したときに Form1へ戻るのですが、ショートカットキーを指定して、ショートカットで戻ると フォーカスがタスクバーのところへ逝ってしまいます。 Form1.edBkkubun.SetFocus; として戻しています。わかる方教えて!!
>>104 私だってプログラミングを始めたのが早くなかったら
やっぱりちんぷんかんぷんだったと思います.
読んでも、独り言戸でけで、質問が見つからない。
>>108 質問するなら、もうちょっと詳しく書いたほうが。
Form2からForm1に戻るとき、Form2は消すのか?
Form1とForm2の親子関係は?モードレス?モーダル?
ショートカットのやり方と、割り当てた関数の内容は?
113 :
デフォルトの名無しさん :02/10/12 01:42
winのメモ帳などにキャレットを残したまま 操作できるソフトを作りたいのですがどのようにすれば よいのでしょうか? 例えばwinに付いているスクリーン キーボードなどは スクリーン キーボードを操作してもキャレットが残ったままになっていて あのような感じです。 また、例えばButton1を押すとキャレットに「あ」と出力させるにはどうすれば出来ますか?
114 :
デフォルトの名無しさん :02/10/12 04:49
-― ̄ ̄ ` ―-- _ , ´ ......... . . , ~  ̄" ー _ _/...........::::::::::::::::: : : :/ ,r:::::::::::.:::::::::.:: :::.........` 、 , ´ : ::::::::::::::::::::::::::::::::::::/ /:::::::::::::: : ,ヘ ::::::::::::::::::::::: : ヽ ,/:::;;;;;;;| : ::::::::::::::::::::::::::::::/ /::::::::::::::::::: ● ::::::::::::::::: : : :,/ と,-‐ ´ ̄: ::::::::::::::::::::::::::::::/ /:::::::::::r(:::::::::`'::::::::::::::::::::::く (´__ : : :;;:::::::::::::::::::::::::::/ /:::::::::::`(::::::::: ,ヘ:::::::::::::::::::::: ヽ  ̄ ̄`ヾ_::::::::::::::::::::::し ::::::::::::::::::::::: : ●::::::::::::::::::::::: : : :_> ,_ \:::::::::::::::::::::::::::::::::::::::::::::: `' __:::::::::-‐ ´ (__  ̄~" __ , --‐一~ ̄ ̄ ̄ もう、だめぽ。。。
||
∧||∧
( ⌒ ヽ
>>114 ∪ ノ
∩∪∩
(・∀・| | クヨクヨスンナ
| |
⊂⊂____ノ
彡
________
>>113 アプリひとつまるごと作り方教えろや、って言ってるような
>>113 メッセージを使う。
自分の作ったウィンドウやコントロールののWM_SETFOCUSを拾ってSetFocus(wParam)を実行。
文字を送るには、WM_CHARやWM_IME_CHARを送る。
>>117 >文字を送るには、WM_CHARやWM_IME_CHARを送る。
WM_KEYDOWNとWM_KEYUPじゃダメ?
WM_KEYDOWNじゃうまくいかなかったと思うが。 IMEの状態とか、キーのシフト状態の影響を受けてしまうし。 Edit1へ文字を送る例。 SendMessage(Edit1.Handle,WM_CHAR,Integer(#$41),Integer(0)); SendMessage(Edit1.Handle,WM_IME_CHAR,Integer(#$82a0),Integer(0));
120 :
デフォルトの名無しさん :02/10/13 22:16
プログラミングやってみたい!よしロハだ!Delphiだ! 早速Personalを落としてきてインストール、書籍買う金もないので 付属のチュートリアル&ヘルプでマターリ行こうと思い 「テキストエディタ作ってみるべさ」と学習を開始したのでありますが 先生! チュートリアルで使えと書いてあるコーポネント、「ActionManager」が 見つかりませぬ! ”コンポーネントパレットの[Additional]ページにある”とか書いてありますが、 全然ありません! 漏れのDelphi修行、まだ始まったばかりですが、もう玉砕でありますか!?
ActionManagerはperにはついてないよ。まずは過去ログの検索から。
>>121 ありがとうございました。
チュートリアルをなぞるくらいはパーソナルでも出来るだろうと
思っていたので・・・、おちついて過去ログを読んでいきたいと思いマッスル。
>>123 ありがとうございます。
一つ前のスレがDAT落ちしてたため、過去ログ検索もままならない状態だったので
非常に助かります。
がいしゅつだゴラァと言いたくても言わないところがやさしいな( ´∀`)
126 :
デフォルトの名無しさん :02/10/14 12:11
英語がよく分からないので、Indyの使用条件を教えて下さい。
129 :
デフォルトの名無しさん :02/10/14 13:38
「Delphi」はフリーソフトなんですか?通販HPを検索しても出てこないです。 C++はマイクロソフト Visual Studio .NET Enterprise Archtect MSDN Deluxe Edition みたいのが あるし・・・「Delphi」はそういう物は無いのですか?
>>129 お前が見つけた通販HPでVisual Studio .NET Enterprise Archtect MSDN Deluxe Edition があって
Delphiがないところ教えれ。
132 :
デフォルトの名無しさん :02/10/14 13:58
>>130 直接商品までリンクを貼ってくれてありがとう、ありましたね・・・
いまDelphi6のPro版叩き売りしてるところある?
ヤフオク
むしろスレタイにすべき 【ActionManagerは】モナーの*やさしい* Delphi質問スレ Ver.10【perにない】
138 :
デフォルトの名無しさん :02/10/15 22:34
変数の値を監視したいのですが'監視できません'としか出てきません。 どうすればよいのでしょうか?
・最適化で変数が消されている ・with文の中
>>138 showmessage 使っちゃうのが一番簡単だと思ってみたり
解決しました。ありがとうございました。
>・最適化で変数が消されている
これでした
さらに使い方を根本的に勘違いしてるとこもありまして混乱していたようです
>>140 まさにそのとおり
memo内でShift+Enterを押したら、<br>を挿入して、改行したいんですが、 どうしたらいいんですか?
143 :
デフォルトの名無しさん :02/10/16 09:32
OnKeyDown イベントかなあ。
>>142 簡単に
procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char);
begin
if (key=#13)
and( GetKeyState(VK_SHIFT)<0) then
with Sender as TMemo do SelText:='<BR>';
end;
こういうふうにやればどうでしょ?
もしかしたら、選択時の動作はこっちが好みかもしれないけど
with Sender as TMemo do begin
SelLength:=0;
SelText:='<BR>';
end;
Delphiのお薦め推薦図書はなんていう本ですか?
>>142 キーカスタマイズも考慮するならAction使うとか。
Delphiで透明レイヤーって作れますか?
透明レイヤーとはどんなものか、定義してください。
149 :
デフォルトの名無しさん :02/10/16 15:46
無償のやつアクションマネージャついてないんですかね?
無償のやつにはアクションマネージャは付きません。
アクションマネージャがないと何か困るんですかね?
アクションマネージャがなくて困る事はありません。 アクションマネージャがある事を前提にしている書籍等を見た初心者がとまどうだけです。
数値を任意の桁で右に寄せるにはどうしたらいいですか? str(AAA:n,String_Data); ではできないような、複数の数字の場合で、例えば __1__2_23 (1, 2 23 を3桁右寄せで出力した場合) としたいのです
156 :
デフォルトの名無しさん :02/10/16 17:23
.NETのDelphiって出たんだろ? やっぱりコンパイル速度はC#やVB.NETに比べて速いのか?
158 :
デフォルトの名無しさん :02/10/16 17:55
はじめまして。 Delphiについて教えて下さい。 DelphiとVC++の実行速度はやはり、Cの方が早いのですか? Delphiで造るのに苦手なものってなんですか? 逆にDelphiで得意なものとは? 教えて下さると幸いです よろしくお願いします
159 :
デフォルトの名無しさん :02/10/16 17:58
>>157 出たのがプレビュー版かどうかは知らんが出たんだろ。
コンパイル速度はC#やVB.NETに比べてどうなのよ?
>>158 実行速度はC++と同等。
苦手なものはC/C++言語のソースと合わせるには、BCB買わなきゃならんことかな。
得意なものは、コンポーネント作成、ActiveXの利用、高速RDBアクセスかな。
>>160 ActiveXも作れるが、クラスライブラリを派生したコンポーネント作成の方が簡単で高機能ってことね。
クラスライブラリ内にOS依存部分を持ってて、
Delphi7にバンドルされてるKylixでLinuxアプリをコンパイル出来る。
後、ランタイム不要。
>>160 何度も出てるが爆速コンパイルも得意。
>>158 逆に聞きたいけど、その情報を得てどうしたいの?
Delphiでゲームのセーブデータを編集するようなアプリケーション作れますか?
165 :
デフォルトの名無しさん :02/10/16 19:52
インタプリタの激遅C#より遅いってのが玉に瑕
167 :
bloom :02/10/16 19:53
Memo.Lines.Add(・・・); でメモに文字を書き込むとき、色を変えることとかできますか? Memo.Lines.Add(String1 + String2); で String1 だけ赤にしたいとか青にしたいとかです
>>168 オーナードローでできたと思うがrichedit?だったかそれ使うのが本当ではないかと。
170 :
デフォルトの名無しさん :02/10/16 20:01
Memoでできたかなあ。
>>168 そういう機能はRichEditの領分でしょ
みんなDelphiでどんなアプリケーション作ってるの?
174 :
デフォルトの名無しさん :02/10/16 20:50
>>173 Delphi->VB.NETソースコンバータ
Delphiってこれから将来は明るいですか?
中国なんかがLinuxしてるし、 それはM$排除が目的だから.NET敬遠されるだろうし、 KylixがバンドルされるDelphiは明るいんでわ。
>>168 です。
レスありがとうございます。確かに RichEdit でフォントとか変えられますね。
( RichEdit.Font.* 以下に色のプロパティなどありました。)
でも、全体での変更で同じフォント、色に統一されてしまうようで
別の方法を考えたいと思います。
Delのエディタみたいに特定の文字だけボールドさせるとか、色を変えるとかしたいんですが・・・
>> 特定の文字だけボールドさせるとか、色を変えるとかしたいんですが・・・ RichEdit でできるでしょ。別な方法って、どっかからコンポーネントを もってくるの? まぁ、それでもいいけどさ。
>>179 Del ヘルプにこうあるのですが、
Delphiプログラマーズガイド > テキストコントロール > コンポーネントライブラリの使い方
> 編集ボックスに入れたテキストの外観を変えるには,Font プロパティに値を
> 割り当てます。フォントは,書体,サイズ,色,属性を指定できます。指定し
> たフォント属性は,編集ボックス内のテキスト全体に影響します。個別の文字
> ごとにフォント属性を変えることはできません。
よかったらRichEditでのその方法を教えていただけませんか?
よろしくお願いします。
>>180 ヘルプの例より
procedure TForm1.Button2Click(Sender: TObject);
begin
RichEdit1.DefAttributes.Color := clBlue;
RichEdit1.DefAttributes.Style := [fsBold, fsItalic];
end;
>>181 すまん、こっちのほうだった。
procedure TForm1.Button1Click(Sender: TObject);
begin
with RichEdit1.SelAttributes do
begin
Color := clRed;
Height := Height + 5;
end;
RichEdit1.Lines.Add('This line of text will be red.');
end;
>>181-182 これです! これがしたかったんです。
本当に助かりました。
わざわざ教えてくれて、どうもありがとうございました。
調べりゃ解るだろ、と思ったらRichEditのヘルプは見にくいなぁ
追加したコンポーネントのアンインストールってどうやったらいいのでしょうか?
>>185 インストールした.bpl開いてリストから消したい.pasと.dcr(あれば)削除してコンパイルだと思ったがよく分からない。
189 :
:デフォルトの名無しさん :02/10/17 10:38
どなたかお助け下さい。 パソコンの動作がおかしくなったのでOSを上書きインストールしたら DELPHI4.0で作ったプログラムを開くと 「クラス TTABLE が有りません ーーー」というメッセージで出て プログラムを正常に開けません。 DELPHIのシステムを1度削除してインストールしなおしても同じです。 でもこのエラーが出たDELPHIのプログラムを人から借りてきたパソコンに DELPHI4.0をインストールすると同じプログラムなのにこの場合はちゃんと エラーメッセージがでないで開け、正常に動作します。 インターネットでいろいろ検索したのですがこんなエラーの例はないのですが どなたかお助け下さい。 なお自分のパソコンも人から借りてきたパソコンも機器の構成 OSもほぼ同じです。 (時分が同じ時期に自作した) OSは WINDOWS98SEです。
「OSを上書きインストール」が原因だろ? ハードディスク丸ごとフォーマット。 システム全部再インストール。 あぁだこうだ考えるより早いよ 。
Delphiの本ってマジででかい本屋いかないと見つからなくねぇ?
>>189 D4を起動して コンポーネント -> パッケージのインストール で
設計時パッケージをみて下さい。
□Borland Database Components にチェックは入っていますか?
同じ事をプロジェクトオプションで確認してみましょう
>>192 189の文面どおりだと、それでは根本的な解決にならないような気がします。
190が正解ではないでしょうか、
というかHDD交換。
Delphiでファイルを開くときにバイナリエディタで開いたように 表示するにはどうしたらいいですか?
>>191 Delphiはハウツー本文化じゃなくて、VCLやインターネットに散在してるソースを読む文化。
>>195 ・素直にバイナリエディタで開く
・ダンプツールで一旦バイナリエディタのような形式のテキストに落とす
・Boralndに要望を出す
・OpenToolsAPIでできるかはしらない
あ、ごめん。Delphiの環境のことかと思った て、マルチポストかよ
みなさんアドバイス有難うございました。
>>192 さんの書かれたことを実行してみました。
□Borland Database Components にチェックが入っていました。
このチェックをはずすとエラーは出なくなりました。
しかしなんかTTABLEのコンポーネントのアイコンが出なくなってしまいました。
まあ、これでもプログラムは修正できるんですが。
本当はここにチェックが入るのが正しいのでしょうか、でもチェック付けると
>>189 のようなエラーが表示されてしまいます。
正規ユーザーなら CD にインストールイメージが入っているので Delphiを終了して,dcp, bpl を入れ換えて再起動とか…… パッチがあたってないけどね. あとチェックディスクをかけてみる事をお薦めします.
素直に再インストールした方が安心確実高利回りかも
どうしてもOS消去からやりたくない場合はスキャンディスクをかけてから 一旦D4をもう一度アンインストール その後、フォルダも全て手動で完全に消す DelphiのCDROMから \system と \system32のフォルダの内容を見て、 そこにあるファイルを全部消すか、それを上書きで書き換えておいておく それからレジストリの HKEY_CURRENT_USER\Software\Borland\Delphi\ 以下を全て消す。(次にインストールした後で設定を保存しておくといい) 他に、アプリのフォルダから DFM PAS DPR 以外、ほかの不要ファイルを全部消す それからD4のインストールすれば普通は大丈夫でしょう。
>>201 正規のユーザです。
早速やってみます。
しかしdelphiはちゃんと買ったけど、発売元のサポートて何もないも
同然ですね。
確か以前、delphiに同梱されていたinstallsheildに不具合が
あったのでボーランドに問い合わせたら、
インストールするまでしか教えられませんなんていわれた。
delphi使おうとするひとでインストールに手間取る人なんて
いないでしょう。
でも結局やっぱりボーランドのミスだった。
こんなサポートでは何万も出して正規に買う人いなくなる。
は? バックアップとっておけばよろしいかと思うんですけど…… よくやったのは,今の Delphi のフォルダ名を変更して 新しくインストールして,ライブラリやらを少しずつ復元
みなさん有難うございました。
解決しました。
>>200 さんの指示どおり、作成したプログラムの不要ファイルを
消したら、エラーが出なくなり、TTABLEも使えるようになりました。
プロジェクトを再構築すると中間ファイルも再構築されると思って
プロジェクトを再構築してもだめでしたがdcuなどのファイルを
すべて消したらokとなりました。
でもなんでこんなことになるのでしょう。
やはり2ちゃんの方のアドバイスは絶大です。
本当にみなさん有難うございました。
>>元本は保証してもらえますか? ご飯食べた後,ぼーっと歯磨いてるときに気づいた マジレスしちゃった……恥ずかし
>>205 どういう不具合かわからないけど、InstallShieldの不具合ならボーランドに
問い合わせるのは筋違いではないかな?
D5のISXのReadMe情報を見てもボーランドに問い合わせろとは一言も
書いてないし。
あとサポートはタダという思い込みはしてないかな?
211 :
デフォルトの名無しさん :02/10/17 20:42
>>210 いえいえ、InstallShieldはDelphi用ということでボーランドも関係しています。
というのは、データベースを使う場合IDEコンポーネントの配布が必須と
なるため、DELPHIには必ず、配布のためのInstallShieldが付属しており
DELPHI用にカスタマイズされています。
このためボーランドも関係しています。
このときの不具合はデータベースのエリアスの設定ができなかったと
覚えています。
自分は仕事に使おうとしていたため、この致命的な不具合でプログラムの
配布が非常に困難になりました。
その後だいぶたって、ボーランドもこの不具合に気づきホームページで修正パッチを
載せていました。
しかし、自分がボーランドに問い合わせたときにきちんと障害の内容を
聞いてもらえればすぐに対応できたはず。
もちろん開発言語なので細かなサポートまでただでなんておもっていませんが
使うときすぐに問題になる不具合まで受け付けないという態度が
納得できませんでした。
( ゚v^ ) オイチイ
213 :
デフォルトの名無しさん :02/10/17 21:03
このときのボーランドの態度は、例えばソフトを買ってそのソフトに 不具合があっても一切、サポート契約しないと対応しないとのことでした。 しかしこれはおかしい。 普通ソフトを買うと少なくとも数ヶ月くらいはサポートをどの会社でも している。 それがインストールまででそのごは一切知らないとのことであった。 これでは不具合が満載のソフトを販売しても有料でないと 話しさえ聞かないということでした。 こんなバカな話しはないと思った。 これではバグがあってもそのままになったり、気づくのがものすごく 遅れてしまいます。
無理に使ってくれなくてもかまわないんだけど?
Delphi製のアプリは重い
プログラム作った経験があるなら
>>189 のような調子で不具合報告されても困ってしまうとは思わないのか?
普通に、再現出来る状況を見極めて、再現方法を含めた報告として連絡すれば次のバージョンで採用はしてくれるよ。
それに、プログラミングツールなんだから、余程致命的でない限り、回避策くらいあるだろう。
>>213 サポートはどこもそんなもんでしょ
仕事らお金と時間のトレードオフを考えて決めればいいだけ
障害の報告はどこでも受付だけはしてる
Windowsのソフトなんだから不具合なんか有ると思ってそれを回避しながら使わなきゃ
いつからサポート代も製品代に含まれるようになったのか
なんかすごいテクニックを知りたい。
>222 for i := X to Y do begin ・・・ end; ↓ i := X; while i <= Y do begin ・・・ Inc(i); end; ∧,,∧ 制御変数 i を触りたくなったら ミ,,゚Д゚彡 この変換を覚えておくとよいよ。 (ミ ミつ ミ ミ ∪ ∪ for i := X downto Y do begin ・・・ end; ↓ i := X; while Y <= i do begin ・・・ Inc(i); end;
for i := X downto Y do begin ・・・ end; ↓ i := X; while Y <= i do begin ・・・ Inc(i); end; これは変
( ) ( ) ( ) ∧=∧ せんせい ミ,,゚Д゚彡∩ < こぴぺみすた。 | ̄U ̄ ̄ ̄.| i := X; while Y <= i do begin ・・・ Dec(i); end;
>>226 それで、for ループでは「触れない i になぜ触れる」ことになるの?
∧,,∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ミ,,゚Д゚彡 < 説明めんどいから明日一日考えといて ,;゙ ミ \_____________ @ ミ ナンカ アオリッポイシ ゛゛゛゛
「for 文の後では i の値が保証されないから while を使う」という話は 別にテクニックではない。
>>221 具体的にどのようにTFileStreamを使えば良いのかがわからないです。
>>213 粘着すまん
>普通ソフトを買うと少なくとも数ヶ月くらいはサポートをどの会社でも
>している。
それはあなたの常識では?
>これでは不具合が満載のソフトを販売しても有料でないと
>話しさえ聞かないということでした。
良い悪いは別にして、そういう契約はよくあります。
製品のバグかユーザの勘違いかは調べてないとわからない。
もし、それがユーザの勘違いだった場合、その費用は誰が負担
するのでしょう? だからサポート契約で前払いしろとなるわけです。
つーか、仕事でやってるならそれくらいわかるだろ?
>>230 テキストの場合はどうやって保存してるの?
TFileStreamのどこがわからないのか具体的に書いて。
Delphi Language用のindentツールはありませんか?
>>160 >>161 >>162 C++にするか、Delphiにするか 迷っている学生です。
過去の経験は、BASICのみです。
プログラミングがしたいと思っていたら、叔父が じゃあ、どちらか
選んだら教えてくれ。買ってあげるからと。ただし、VBだけはやめとけと。
そういうことなんです。ちなみに叔父はDelphi4をさわっているようですが
俺に合わせても何も教えないと言われまして。ただ、C++もDelphiもどっちも
どっちだ。どちらかに決めたらふらふらするな。どっちか使えるようになったら
もうひとつを後から勉強してもそれなりに使えるようになると。
今は、どちらも只のがある。本当はそれを試させればいいが、ふらふらしそう
だからまず、どちらかに決めろ。人に聞くのもいいだろうと言われました。
実行速度はC++と同じなんですね。どうもありがとうございます。
C/C++言語のソースと合わせるというのは、Cで書かれたライブラリとかDLL?を
使うときにBCB(C言語ですね?)を使う事でDelphiでも使えるという事ですね
コンポーネント作成、ActiveXの利用、高速RDBアクセスについては、検索して
読みましたが??です。そういう機能があるということだけは分かりました。
LinuxアプリもDelphi7で出来るんですね。ランタイム不要ということはC++では
必要なのでしょうか。クラスライブラリという物が早くて使いやすいのですね
爆速コンパイルも検索してみましたが数人の方が、便利だと書いてます。
それくらい早いのですね
とりあえず、意味が分からない事ばかりで、コメントもオウム返しするしか 出来ません。 ただ単にプログラミングがしたいという漠然とした動機ですが、もっと調べて どちらにするか決めたいのですが、何を基準としたらいいのか…… どうもありがとうございます。どちらも何がしかを作るのには 差はないということが分かったのはうれしかったです
ぢゃ、叔父さんに聞けよ。 インターネットの掲示板で聞くより、脇にいる人とあーでもない、こーでもない。と 試行錯誤するほうが、確実に理解は早いぞ。 それと、無意味にあげるな。
申し訳ありませんでした
同考えても叔父さんに聞いたほうがはやいね。
>>232 書き込み方がよくわからないのれす。
書き込むときは、WriteBuffer()を使うの?
var
b: Byte;
i: Integer;
fs:TStream;
begin
fs:=TFileStream.Create('file',fmCreate);
for i := 0 to Socket.ReceiveLength - 1 do begin
Socket.ReceiveBuf(b, 1);
fs.WriteBuffer(b,sizeof(b));
end;
end;
こんな感じで書いてみたんですが、ファイルのサイズは0KBでした。
>>234 とっつきやすさは VC++<<BCB<Delphi
情報量は VC++>>Delphi>BCB
DelphiとBCBに使われているVCLというライブラリはDelphiで
書かれているからDelphiの方が親和性が高いし、
詰まった時にVCLのソースを読もうとするとDelphiの知識が必須。
ネット等の情報はVC++やVBがメインだから、それを理解できる方が有利。
俺はDelphiがメインだが、Delphiをやれとは言わない。
自分で選択してくれ。
>>239 1文字づつループを回すのはパイプか何かの処理の為?
そうでないなら
var buf:string;
var siz:Integer;
//略
size:=Socket.ReceiveLength;
setLength(buf,siz );
Socket.ReceiveBuf(PChar(buf)^ , siz);
fs.WriteBuffer(PChar(buf)^ , siz);
として、ブレークポイントかけて buf と siz を確認してみたら?
∧,,∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
ミ,, ゚Д゚彡 < いいおじさん持ったね。
〃つ_つ/  ̄ ̄ ̄/\_____________
〜ミ,,, ,,|\ ./ レ ッ シ /
'\/.======./
 ̄ ̄ ̄
こういうBBSやMLで情報検索しる技術(というより人付き合い)も
おじさんは学んでもらいたいと表るんじゃないのかな。
C/C++は....職業で使う必要性が無い限り、覚えなくてもいいかも。
俺は多分もう一生覚えないなー。ゲーム作るには必須かも。
旬なのはC#かと思うけど,,,,,
Delphiが.NETで旬を迎えるのは来年くらいだと思うのでそれを見据えてからでも。
で、安定して得るものがあるのは、Javaなんかどうでしょかとか。
"○○みたいのを作りたい"っていう具体的な目標があると、
プログラムの学習も苦痛じゃなくて楽しくなるのではないかしら。
"言語を覚えたい"って考えだと、中小度が高くて、すこし挫折しやすいよ。
で、作りたいものがはっきりしてくれば、言語の得意分野があって
どれから学習すべきかの道筋が見えてきやすいかな。
>>208 >>239 とりあえず、FileStreamの使い方、見といてくださいな。
もっといいサンプルはMLログとかにあるかもしれませんが。
Delphi:WideStringとUnicodeでファイルアクセス
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1034090664 Inseder.NET DelphiプログラミングTips?? ファイル入出力の基礎
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1001489683&res=7&fi=no
当人がC++かDelphiか迷っているところに、C#だのJavaだの釣り下げると ますます迷うと思うけどなあ。旬かどうかも勉強にはあまり関係ないだろうし。 何が作れるかは、C/C++もDelphiも充分なパワーを持っているので、 特に気にする必要は無いし、ランタイムも共に不要ですよ。 BASIC経験があるなら、構文的に近いのはPascalかなー。 かくいう自分も、DOSでBASIC→Cに挫折→Delphi2.0〜なクチ。 で、Pascalでポインタなどの低レベル操作を覚えてからC/C++に戻ってみると、すごくよく理解できた。 ただし、今のDelphiは、ポインタなどを使わなくてもいい方向に進化してきているので、 そういうのに慣れてしまうと後々キツいかも。 Delphiやるなら、最初はTListなどの便利品を使わずに、自力でリンクリスト作るぐらいの気概で やった方が身になるかな?(BASIC経験があるならそれほど苦でも無いと思う) 叔父さんがVBを選択肢から外したのも、そういうアルゴリズムをちゃんと覚えて欲しいと 思っているのだと考えられるし。 逆に、C/C++を選ぶと、その辺の低レベル操作が必須知識になるので、勉強にはいいかも。 でも、徐々に…ではなく、いきなり、になるので、多少とっつきにくいかな? (BASICでVARPTRやPEEK、POKEを使いこなしていれば楽勝でしょうけど) …お節介で余計な長文だったかも知れませんね。ゴメン。
BASIC経験のレベルにもよるよな(w 直接I/Oや、機械語サブルーチン、BIOSコールなんかを使いまくる強者で、 最近の言語が様変わりしていてイマイチ把握できないってだけの話なら、 それは俺達が偉そうに何か言っていい相手では無い…
245 :
デフォルトの名無しさん :02/10/18 13:36
みなさんバージョン情報の数字って どのように設定してますか?
∧,,∧ そんな子なら、あんなカキコには
ミ,,゚Д゚彡 ならないかと。
>>244 (ミ ミ)
>>234 C++スレとDelphiスレに転がってるコード眺めてみて、自分が分かりやすそうなほうを選ぶといい。
勉強用の情報はC++のほうが多いだろう。Delphiの情報を探すのは書籍でもネットでもやや困難。
でも、どっちを選んでも、本を一冊買って一年ほどまじめに自習すれば身に付くから。
あとはやる気が持続するかどうかだね。
個人的にはBASICの次にC言語をやるのがいいと思うけど、
まあここはDelphiスレなのでDelphiをお勧めしておく。
俺は両方使えるけど、Delphi覚えてからはあんまりCやC++を使いたくなくなった。
あと、BASICからの移行だと、C言語のコンパイルの遅さがいやになるかも。
まだボタンをクリックしたら「こんにちは」と出る程度の プログラムしか作れません。
頑張ってね
15分なら上出来。
>>241 stringって、255バイト以上扱えましたっけ?
9バイトのテキストは上手く出来ましたが、
100KB位のexeファイルだと、3KBまでしか保存されませんでした。
__________ ,,,,,,,,,,,,,,,∧,,∧ / 〜′,,,,,,,,,,ミ,,゚Д゚彡< あつかえまつ。 UU"""" U ⊃ \  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
>>240 >情報量は VC++>>Delphi>BCB
BCB(VC++ + Delphi) > VC++ >> Delphi
>>253 VC++の情報のうちMFCやATLの情報は少なくないからBCBでは使えない情報も多いぞ。
いいとこVC++>BCB>Delphi
あと、1ヶ月もすればC++(というかC)のWinAPIについての情報も使えるから
結局情報量はVC++>Delphi>BCBに落ち着くと思われ。
>>251 受信バイトがゼロになるまで何度もループしてみたら?
Delphiをやさしくわかりやすく解説してくれているサイトないですか?
258 :
デフォルトの名無しさん :02/10/19 11:50
先生! index := LastPos('hoge', 'hogehoge'); みたいな感じで最後に出てくる検索語のインデックスを 求めたいのですが関数が見つかりません。 どうすればいいですか?
>>258 作って下さい。 2つの戦略があります
1、最初から検索して、最後に見つかった位置を返す
2、最後から検索する
>>258 一般的に言うなら、AnsiStrPosを繰り返し実行すればOKですけど、
状況によっては(それが文字列を解析する処理の一部で、それまでの情報を利用できるなら)
もっと楽できる場合もあります。
何がしたい?
(前に同じような事で…だったので即答は控えてみる)
最近デルファイ始めたんですが、 なんとなくJAVAに似ているような気が・・・ 開発環境自体はVBみたいですね。
まじっすか。作らなきゃないんすか。 絶対見落としてるだけで用意されてると思ったのにー。 だるだる
>>262 まあ、だるだるではありますが、やろうとしている内容によっては
文字列の解析アルゴリズムを勉強するチャンスですよ。
Pascalはそういう基本的なアルゴリズムで手を抜けないようになってる(w
260でも書いたけど、具体的に何がやりたいかで
楽な方法がある場合もあるし。
例えば、一文字だけならLastDelimiterなんてのも。
>> Pascalはそういう基本的なアルゴリズムで手を抜けないようになってる(w Pascal とは関係なく、たんに Delphi の関数の数が貧弱なだけだと思う
>>263 あ、どうもです。
やりたいのは、<HOGE>hage</HOGE>のhageを取り出したかったのです。
だるいけど適当に関数書こうと思います。ありがとうございました。
ネイテブコンパイラなんだから、用意された関数使うのも、自分で作った関数も 同じ効率 なんだよ そももそも、最後の位置を調べるような関数を使うというのは最初から筋が悪いんだし たとえば、こんなコードだと sとsubstrが長いと重い処理になる 1、最初から検索して、最後に見つかった位置を返す index:=0; len:=length(substr); for i:=1 to Length(s)-len do if copy(s,i,len)=substr then index:=i; if index <=0 then 文字は見つからない
最長一致させたかったんすよ。 <HOGE><HOGE>hage</HOGE></HOGE> の時に<HOGE>hage</HOGE>が取れるように。 書き方悪くてすんません。
それなら、先頭から状態遷移しつつスキャンしてってもいいかな。 I := 1; while I <= Length(S) do begin if S[I] in LeadBytes then Inc(I) else if S[I] = '<' then begin Tag := True; if InText then TextEnd := I; InText := False end else if Tag and S[I] = '>' then Tag := False else if not Tag and S[I] <> #32 then begin TextStart := I; InText := True end; Inc(I) end; Result := Copy(S, TextStart, TextEnd - TextStart) 今適当に書いたコードなので穴だらけです。大体のイメージだけ。
>>268 じゃあ
"<HOGE><HOGE>hage</HOGE></HOGE> <HOGE>hoge</HOGE>"
だと
1、 <HOGE>hage</HOGE></HOGE> <HOGE>hog が欲しいの?
2、<HOGE>hage</HOGE> と >hoge が欲しいの?
2なら、
>>267 の方式で再帰処理にした方がスマートだよ
うわ、勘違いだ…。 外側タグだけ外したかったのですね。 269は忘れて下さい。 イレギュラーな文字列が渡されない事が明らかであれば、 単純に先頭の < 〜 > と末尾の < 〜 > を省くだけでもいいと思いますけど、 あらゆるケースを考えるならば、トップダウン構文解析した方がいいかも。
SAX!
こんなものはライブラリで用意しなくてよろしい どうせ使わないから この点はボーランドは正しい
正直みなさまお手数かけました。 ありがとうです。
>>275 え? 解決したの? 入れ子になってない場合もそれでいいの?
"<HOGE><HOGE>hage</HOGE></HOGE> <HOGE>hoge</HOGE>"
が
"<HOGE>hage</HOGE></HOGE> <HOGE>hoge"
になるのはあきらかに変だと思うんだが?
>>274 正直そのコードはもう持ち出して来ないで…。
誰かがうっかり使うかもしれないし、その都度計算オーダーの説明するのも面倒…。
_____________ ∧,,∧ /正直、質問者の質問意図を蟲して ミ,,゚Д゚彡 < 別海を無理やい教えるのも ,;゙ ミ \ やめてホスィから お相子ってことで。 @ミ,,,UUミ  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
なんだかなあ 文字列処理の件になると頑なだね ホント・・・・なんともはや・・・・ でも、考えてみると、ちゃんとしたスタイルの処理の入門書って最近みあたらないし しょうがないか
いまだにコンプレックス引きずってんのか? 自分の技量の無さを某に八つ当たりならVB厨並だぞ。
そもそもDelで文字列処理する時点で筋が悪いといえるだろう。 いまどき正規表現クラスのないような処理系は糞。
__________ ,,,,,,,,,,,,,,,∧,,∧ / 〜′,,,,,,,,,,ミ,,゚Д゚彡< 文字列逆方向検索を UU"""" U ⊃ \ 書いて示しただけだよ。  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ それを、「そのコード持ち出してくるな」 って言う方がどうかしてるよ。 高速化したけりゃご勝手にドウゾだってば。
もういいんだよ。 君は文字列の話に出張ってこなくて結構。
今回のケースだって、きちんと解析すれば、文字列を一回スキャンするだけで良いし、
>>267 等はそういうコードでしょ?
質問者だって、おぼろげに、最後の位置を検索するのが必要だろーなーと思ってただけだろうし、
検索して位置を特定する手法だとスキャン回数が検索回数分増えてしまうわけだし、
もっとスマートな解があれば教えてあげてもいいんじゃない?
…で、
>>274 のコードは、普通に検索を繰り返すよりも、さらにオーダーを悪くする、と…。
こんな説明じゃ納得できない?
>…で、
>>274 のコードは、普通に検索を繰り返すよりも、さらにオーダーを悪くする、と…。
_________
∧,,∧ /
ミ*゚Д゚彡< 速いコードを見せてホスィ
ミつ つ \
〜ミ ,, ミ.  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
∪ ∪ 爆速ならかなりうれしい
>速いコードを見せてホスィ
今回のケースなら、検索などせずに、頭から
>>267 のように切っていくだけ。
文字列の部分を切り出すのが目的なら、あんな感じで解析すれば1回のスキャンで済む。
(…ってのは何度も言われて聞き飽きてると思いますが、ホントの話ですので)
単純に検索目的なら、真面目にやるなら
途中まで一致した場合の情報を使ってスキップしていくアルゴリズム(名前忘れた)使えばいいし、
手抜きでCharNext/CharPrevで移動しながらCompareStringを連発しても、
Shift-JISのTrailを飛ばせる分
>>274 よりはほんの少し速いと思う。
∧,,∧ /そいえば、なんとかってアロゴリズムが ミ*゚Д゚彡< MLに投げられていた気が。あれとは違うか... ミつ つ \ DelphiIDEの逆検索(ShiftF3でキカヌのが玉に傷 な実装ってどなってるんでしょうね。 不思議なトコです。
>>287 その見せて欲しいのは
1、後ろから一致する検索
2、<HOGE>hage</HOGE> スタイルを正しくSplitするコード
のどっち? 1だと意味がない 2だと仕様をもう少しはっきりしないと書きようがない
例えば <BR>のような閉じてないタグがあるのか つまり一般のHTMLなのか
それともXMLのように必ずタグは閉じてるのかとか
それと、木構造で再帰的に処理する必要があるから、さすがに少し考えないと出来ないよ
>>289 Delフサギコ
このコードも8までの命か…
って上のリンク先でコメントしてるけど
どういういみ?
∧,,∧ /いや、Delphi.NETになってStringがUnico
ミ,,゚Д゚彡 < になったら、また違ってくるかと。
ミつ つ \.NETのCLR(か?)のstringを使うのかな?
>>290 1、後ろから
です。
関係ないけど、
2、って、<HOGE >とか< / HOGE>
とか、スペースが入るのを考慮すると、
いろいろ大変っすよね。どこまでOKにするのか...IEとか
挙動しらべませんといけなくて鬱にnull
うつにぬる
294 :
デフォルトの名無しさん :02/10/19 17:54
295 :
デフォルトの名無しさん :02/10/19 19:28
personal版でもソースのバージョン管理機能は使えますか?
使えません
オブジェクトツリーは便利です
ソースのバージョン管理機能なんて付いてるの!?
Entになんちゃってソース管理機能がついてるよ
>>295 できます。
cvsを使います。Pro版で使ってます
レス、ありがとうございます。 遊びで使おうと思っているんで、personal版でcvsを使うことにしました。
303 :
デフォルトの名無しさん :02/10/20 08:04
すいませんが質問です。
memo1のloadfromfileでホームページのソースを
表示させたいのですが、
Memo1.Lines.LoadFromFile('
http://xxxxxx.html ');
では表示できないのですが、どのようにすれば良いのですか?
>>303 ホームページのソースをダウンロードしてから
Memoに読み込みましょう
>>303 IndyのIdHTTP使うと楽。
procedure TForm1.Button1Click(Sender: TObject);
begin
IdHTTP1.Get('
http://www.borland.co.jp ', mem);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
mem := TMemoryStream.Create;
end;
procedure TForm1.IdHTTP1WorkEnd(Sender: TObject; AWorkMode: TWorkMode);
begin
Memo1.Lines.Text := PChar(mem.Memory);
end;
D6以上ならHTTPダウンロードは標準アクションにあるってさ
いろいろレスありがとうございます。 すごく勉強になります。 >306 personalでもですか?
308 :
デフォルトの名無しさん :02/10/20 15:25
コンパイラをダウンロードしたいんですけど
標準Actionなんて使ったこともなかったですが
∧,,∧ このようにすると、ダウソができるようえす
ミ,,゚Д゚彡 でもIndyもいと。オモフ
ミ つ旦)~~
〜と,,,~),,~)
>>306-307 内部でいったいどういった処理をしてるのだろう?
GetProcAddress APIを使っているようにも思えるですが...
object DownLoadURL1: TDownLoadURL
Category = 'インターネット'
Caption = 'URL からダウンロード(&D)'
Hint = 'URL からダウンロード'
URL = '
http://www.borland.co.jp/index.html '
Filename = 'ダウソ.html'
end
procedure TForm1.Button4Click(Sender: TObject);
begin
DownLoadURL1.ExecuteTarget(nil);
Memo1.Lines.LoadFromFile( ExtractFilePath(Application.ExeName) + 'ダウソ.html' );
end;
>>251 Delphi 2.0から文字列変数の仕様が変更されて
単にstringとだけ宣言すると約2Gバイトまで扱えるようになっています.
>>261 登場順序がVB→Delphi→Javaで,
Delphiの開発環境はVBを参考に作られたのでおっしゃるとおりです.
JavaはDelphiがもとになっているようですね.
>>263 でもBASICのINSTRみたいに
文字列の途中から検索する関数がないのはどうかと思います.
これひとつあるだけで特に入門者はかなり助かるかと.
(D6以降はあるのかな?)
>>310 >JavaはDelphiがもとになっているようですね.
で、そのおもしろ情報はどこで仕入れた?
>310 C でいうところの strstr だよな、InStr って。 Pos 関数、AnsiPos 関数が昔からあるぞ。 せめてヘルプくらいは読め。
>>313 いや、途中からの検索。
途中からの検索が必要とされる場面というのは、大抵の場合、
きちんと解析したほうが効率よくて堅実なコードになる事が多いのだけれど、
やっぱ無いと入門者には不便、という話でしょ。
…でも、有れば有ったで、きちんと処理する事をしなくなるので、難しいところ。
>>313 同意。CopyとPosがあればstrok相当の関数は作れる。
正直、ライブラリに頼らないと何もできない奴って恥ずかしいと思う。
_____________
/
| 藁ってやるな。
\_ ____________
|/
∧,,∧
ミ,,゚Д゚ミy━~~
U ミ
〜ミ ミ 人にHELP嫁とかライブラリ頼ら
∪''∪ など言う前に・・・
>>315 Copyで文字列を逐次生成する分の無駄を考えたほうがいい。
ライブラリを作るつもりでCopyを使うと、それこそ怒られる。
>>314 そだね。
軽めエヂタつくっても、上下方向検索コードかくの面倒かな。
どこかの翻訳記事でJava開発者の
だれそれさんのインタビューで
VCLなどを参考にしたって話があったのだけど
見つからないですなー。
誰か知りませんか?
この近所だった気が激しくするんですが、、、
C# - 自然な前進
ゴミ箱行きの Visual J++ の代わりに、Microsoft が投入する C# とは?
http://www-6.ibm.com/jp/developerworks/java/001215/j_jw-csharp.html
>>311 すいません,あまりにもよく似ているので何となくそう思っただけです.
何となくそう思ったなら明確にそう書くべきでした.
>>315 BASIC/VBから移行したときは速攻でInStr関数を作ったですよCopyとPosで.
でも8ビット時代の経験者(一応)としては
検索のためにCopyなんてオーバーヘッドを考えたら気持ち悪いので
StrPosだったかを使った版も作ってみたのですがうまくいかなくて,
(これは単にバグを見つけられなかっただけで恥ずかしい限り)
結局,そのプロジェクトでは扱う文字列が最大で数百バイトだったので
そのままにしましたけど.
>>314 こんなの作ってみたけれど、叩いてみてくれないか
function FindStr(s,str:string;InitPos:integer):integer;
var
p,pinit,pStr:PChar;
Len:integer;
begin
Len := Length(str);
pinit := PChar(s);
p := pinit;
inc(p,InitPos);
pStr := PChar(Str);
result := -1;
while p^<>#0 do
if AnsiStrLComp(p,pStr,Len) = 0 then begin
result := p-pinit;
break;
end else inc(p);
end;
続き function RevFindStr(s,str:string;InitPos:integer):integer; var p,pinit,pStr:PChar; Len:integer; begin Len := Length(str); pinit := PChar(s); p := pinit; inc(p,InitPos); pStr := PChar(Str); result := -1; while p<>pinit do if AnsiStrLComp(p,pStr,Len) = 0 then begin result := p-pinit; break; end else dec(p); end;
321 :
デフォルトの名無しさん :02/10/21 06:16
D7では、PosEx があります。
>>319-320 んじゃ遠慮無く。
・AnsiStrLCompを使っているということはDBCSを考慮していると思われるが、
それなら単にpをInc/DecするだけではなくLeadBytesの判定もした方がいい。
(CharNext/CharPrev APIが手っ取り早い)
・PChar系の関数は性質上#0以降を無視するので、
こんな場合は直接CompareString APIを呼んだ方がいいと思う。
その他、 ・string引数にはconstを付けないと参照カウント増減処理が入る。 ・resultへの代入は関数を抜ける直前にすると、eaxだけの処理で済む。 ・他の文字列関数に合わせるなら、インデックスは1から。 …ってことで、勝手に直してみた。 function FindStr(const s, str: string; InitPos: integer): integer; var p, pinit, pStr: PChar; Count, SubLen: integer; begin SubLen := Length(str); Count := Length(s) - (SubLen + InitPos) + 2; pinit := PChar(s); p := pinit + InitPos - 1; pStr := PChar(Str); while Count > 0 do begin if CompareString(LOCALE_USER_DEFAULT, 0, p, SubLen, pStr, SubLen) = 2 then begin result := p - pinit + 1; Exit; end; p := CharNext(p); Dec(Count); end; result := -1; end;
悪い。訂正。 ×Dec(Count); ○CharNext前のpを覚えておいて、変化量を引く。 if p in LeadBytes then begin Inc(p); Dec(Count); end; Inc(p); Dec(Count); の方が手っ取り早いかも。
更に訂正。無駄に残数数えるよりこの方が手っ取り早い。寝ぼけてるな自分。 function FindStr(const s, str: string; InitPos: integer): integer; var p, pinit, pEnd, pStr: PChar; Len: integer; begin pinit := PChar(s); p := pinit + InitPos - 1; pEnd := pinit + Length(s); pStr := PChar(Str); Len := Length(str); while p < pEnd do begin if CompareString(LOCALE_USER_DEFAULT, 0, p, Len, pStr, Len) = 2 then begin result := p - pinit + 1; Exit; end; p := CharNext(p); end; result := -1; end;
×pEnd := pinit + Length(s); ○pEnd := pinit + Length(s) - Length(str) + 1
>314 だからさ、InStr 相当関数じゃないだろ、それ(w バリアント型 (内部処理形式 Long の Variant) の値を返します。 ある文字列 (string1) の中から指定した文字列 (string2) を検索し、 最初に見つかった文字位置 (先頭からその位置までの文字数) を返す文字列処理関数です。 ってのが VB の InStr 関数だぞ? 既に使わなくなってひさしいが、 昔の MS-BASIC の InStr 関数も同じだ。 これに対応するのは Delphi では Pos であろが。 んで、最初に戻ると >258 か。VB でいうところの InStrRev ね。 これに対するアプローチとしては、ポインタをうまく使えば文字列コピ ーする必要ないでしょ。 SBCS 限定なら、ReverseString 関数を組み合わせると一度で済む ような気もする(w >315 D6 以降なら ExtractStrings 関数を引くと幸せになれる。 それ以前でも TStrings.DelimitedText と TStrings.Delimiter 使えば(w
uses SysUtils; function PosRev(const keyword, source:string): Integer; var s_rev: string; k_rev: string; p: Integer; begin s_rev := ReverseString(source); k_rev := ReverseString(keyword); p := Pos(k_rev, s_rev); if p<>0 then result := Length(source)-(p+Length(keyword)-1)+1 else result := 0; end; ま、できることはできるが、こんなトリッキーなこと、仕事じゃやらん罠(w
>328 しまった。 uses StrUtils; じゃねーかw 謹んで訂正。
age
332 :
デフォルトの名無しさん :02/10/24 01:34
コンソールでGetTickCountを使いたいんですけど、 uses節にどのヘッダーを加えれば使えますか?
uses Windows, Classes, SysUtils;は基本。最初から淹れとけ。
335 :
デフォルトの名無しさん :02/10/24 01:39
>>333 ありがとうございます。
Delphiのヘルプでは、GetTickCountとか調べても出てこないですけど、
そういうのはどこで調べれば良いですか?
336 :
デフォルトの名無しさん :02/10/24 01:43
>>334 ふむふむ…勉強になります。
ありがとうございます。
他にもAPI関数がどこに属しているのか知りたい物が少々あるので、
>>335 もよろしくです。m(_ _)m
338 :
デフォルトの名無しさん :02/10/24 02:26
>>337 その中のどの辺りですか?
そもそもMSのサイトにDelphiの情報があるんですか???
>>338 そこまで手取り足取り教えてもらわなきゃわからないのなら、
Delphi使うのはやめた方がいいと思うけど。
とりあえず、ツールバーのカスタマイズでWin32 APIを追加してみてはどうか。
340 :
デフォルトの名無しさん :02/10/24 02:58
>>338 君はWindowsのアプリを作っているってことを忘れている。
GetTickCount自体OSの機能を指しているわけで、Delphiは
それを(VBのようにブサイクではなく)自然に使えるように
しているから、Delphiの機能のように思っているだけです。
だから「MSのサイトにDelphiの情報が」ではなくって
「MSのサイトに(Delphiでも使う)OSの情報がある」わけです。
所詮DelphiもMSには逆らえないのだよ。
D7Proを買えってこった
343 :
デフォルトの名無しさん :02/10/24 03:10
ちゅーか、OSベンダーに逆らうあふぉなデベロッパはいない。 しかしOSベンダーがあるチームにだけコソーリ秘密情報を教えて いたら、イヤンなOSだなとは思う。
>>339 そうですね。
今、CとかJavaを教えてくれる専門に行こうかどうか検討中です。^^;
でも、Delphiが一番好きだから、専門行っても独学で少しずつ勉強しようと思っていますが。
で、アドバイス戴いたツールバーのカスタマイズの件ですが、
メインメニューの「表示→ツールバー→カスタマイズ」の所ですよね?
全部覗いたのですが、Win32 APIは見当たりませんでした。^^;
自分、personalなんですけど、それにもついてるんですか?
>>340 すいません、僕の書き方が悪くて誤解を招いてしまったかもしれません。
GetTickCountがVCLの関数ではなく、API関数という事は知っています。
>Delphiのヘルプでは、GetTickCountとか調べても出てこないですけど、
>そういうのはどこで調べれば良いですか?
これは、APIの説明ではなく、あるAPI関数を使うにはどのパッケージをuses節に
加えれば良いのかが知りたかったんです。
>>344 Win32 APIじゃなくてWindows APIだった。
カスタマイズダイアログ>コマンドタブ>分類「ヘルプ」で出てこないか?
俺もDel6Perなんだが。これで見つからんかったら知らん。
>>345 さっきそれを追加してみて、クリックしてみたんですけど、
ファイルがなかったっぽいっす…。^^;;;
> それを(VBのようにブサイクではなく)自然に使えるように なんでDel厨っていちいちVBをライバル視してるんだろうね(藁
普通にインストールすれば入ってるはずなんだが・・・。 どっかにBorlad Sharedってフォルダがあればその中のMSHelpって フォルダのなかにWIN32.HLPが入ってるはず。 なければインストールされてないので、その時は落としたアーカイブの中の install\Common\Borland Shared\MSHelpをどっかにコピー。
>>347 明らかにDelphiの方が優れてるのに、
仕事も人口も少ないからじゃない?
自分もDelphiはもっと世に出るべきツールだと思うし。
"win32.hlp"でハードディスクの中検索してみ
WIN32.HLPなんか見ても > これは、APIの説明ではなく、あるAPI関数を使うにはどのパッケージをuses節に > 加えれば良いのかが知りたかったんです。 の答えなんかわからないけどね(w
>>349 なるほどVBにコンプレックスがあるのか。
>>349 じゃあ.NETが失敗するように祈らなきゃいけないな。
でないともうDelphiの活躍する場はなくなるよ。
>>350 ありましたー!
さっきはBorlandフォルダだけで探したので見つからなかったっぽいです。^^;
ホントありがとうございました。m(_ _)m
でも、英語なんですね。^^;
ソフトに頼らないとです。w
もともと大して活躍してないから、これからも好きなやつが使う。 Delphiの影におびえて生活するVB使いを見るのも楽しいしなァ。 ていうか、どうして比較対象になるのかわからねーが。
ほんとよくわかんないねぇ。 なんでわざわざ「VBのように〜」とか言って比べるんだろうねぇ。 Del厨は。
ただのAPIの英語のヘルプ見て喜んでるよ(w
>>351 でも、これも役に立ちますよ。^^;
>>352 自分はコンプレックスっつーか、残念なだけだよ。
Delphiが一番好きだけど、他の言語も好きだし。
ちゅーかさ、君、俗に言うVB厨って奴?
何でわざわざDelスレ来てるの?
>>353 んー、でも.NETの変更点見たら、結構Delに近くなってんじゃん?w
まぁ、レベルアップしたんだし、.NETの登場は喜ばしいことだと思ってるけどね。
プログラミング界全体のこととして。
>>357 あ、
>>339 さんとは別人でしたか…。^^;
お二方、ありがとうございました。m(_ _)m
>>359 なんか勘違いしてるね。コンプレックスがあるのは事あるごとにVBと比較したがる
>>340 のような奴だ。
362 :
デフォルトの名無しさん :02/10/24 04:14
おれも書き込みがDel厨になるらしいが、一応仕事では 御指名があればVBなければDelphiでやってます。VBは ライバル視しているというより、なんでVBでやらなきゃ いけないんだという恨みが こもってます。 変数宣言のときのDimだけで脱力せずに仕事するやつって あるいみアフォですよ。
363 :
デフォルトの名無しさん :02/10/24 04:17
変数宣言のときのDimだけで脱力するやつの方がよっぽどアフォ。
あの Dim ってどういう意味なの?
Del x VB でこんなに盛り上がるのはなぜなんですかぁ・・・。 Delphi使った上でVBにわざわざ喧嘩吹っかける奴なんていないって。 優れてる、劣っている以前にやることが違うんだから。 とりあえず両方起動してみて御本に書いてあるサンプルプログラム打ち込んで VBのほうが簡単だぞゴルァ! ・・・という展開ならわからんでもないが。
>>361 まぁ、VBと比較するのは当然のことなんじゃないかな?
BorlandってDelphiをVBのポジションに近づけたいんじゃないの?
だからサイトでもVBからの移行云々書いてるし。
VBユーザの為のDel本も出てるしさ。
ちうか、VB vs Delphiスレに移動した方がいいよね?
ここは質問スレだし。
Dimは確かにウザいけど、.NETになってから、 まとめて書けるようになったんじゃなかったっけ?
ボタンを押したらMemo1の中身を変えたいのですが、どうしたらいいでしょうか? 下のように一行ずつだと面倒なので、まとめてやりたいのですが…。 実際は20行くらいのテキストが20個くらいです。 begin Form1.Memo1.Lines.Add('させしすせそさそ') ; Form1.Memo1.Lines.Add('') ; //空白行 Form1.Memo1.Lines.Add('???') ;
複数行のまとめ書き換え? Memo.Lines が TStringList だから、LoadFromFile / LoadFromStream とか もっと気楽にやるなら、visible = False の Memo2 コントロールを隠し配置して Memo1.Lines := Memo2.Lines;
>>368 中身を変える?
Addは一番最後の行に追加する時に使う物だよ。
とりあえず、そういった処理はwithを使って、
with Form1.Memo1.Lines do
begin
Add('');
Add('');
Add('');
…
end;
とやれば、比較的簡単にできる。
>>369 別にMemo2を配置しなくても、TStringList型の変数用意して、
Assign使った方がいいんじゃない?
>>370 元質問者の意図にもよるが、TStringList を直に使ったら、それの初期化で
また悩むと思うが。
Memo1.Lines.Text := strHoge;
TStrings.AddStrings
昨夜モデム回線で頑張って60MB落しますた。 今日からdelphi勉強しまふ。
>>344 たいていのWindows API はWindowsユニットで宣言されていて,
このユニットはフォームを新規に作るとすでにuses節に含まれるとので何もしなくてOKです.
これに含まれていなくてどのユニットで宣言されているかわからないときは
統合環境からDelphiのあるフォルダに対してファイル検索するのが早いと思います.
>>364 Dimension の略でもともと配列変数を宣言する命令だったのです.
BASICには以前は配列でない変数を宣言する命令はなかった.
ここでは同じ型の変数を複数宣言するときに
Dim Mona As Integer, Giko As Integer, C As Integer
と長ったらしくなってしまうのでこれだけでもうイヤという話か
あるいはメソッドなどを書くときに書く最初の1行がDimなので
最初の単語であるDimを打つだけで鬱,ということを言いたかったのかも.
>>376 ファイル検索ですネ。
早速試してみて、これなら簡単に探せそうです。
ありがとうございました。
動的に作成したVCLのイベントを拾う 方法をご教授下さい。 現在、サーブレットを起動する TNMHTTPを使用したバッチ形式 のAPを作成しています。 以下の様に書いています。 program ***; ・・・ uses; ・・・ var ・・・ http :TNMHTTP; ・・・ //接続成功のイベント procedure httpConnect(Sender: TObject); begin ログファイル書込関数; end; begin ・・・ http := TNMHTTP.Create(Application); ・・・ http.Post(サーブレットURL); ・・・ end.
すみません。 それで、現在はイベントを 拾うことができません。
>>378 type THoge = Class(TObject);
procedure Connect(Sender: TObject);
end;
THoge.Connect(Sender: TObject); begin httpConnect(Sender);end;
obj := THoge.Create;
http := TNMHTTP.Create(Application);
http . OnConnect := obj.Connect
>>380 ありがとうございます。
出来ました。
クラスを作り、そのプロシージャと
関連づけたいイベントを結びつければ
いいわけですね。
勉強になりました。
ある手続きを実行中に、フォームの描画をしたいんですが、 for文の中でエディットボックスの書き換えを行っても 繰り返しが終わるまでフォームの変更は行われないようです。 エディットボックスを書きかえるためには、どのようにすれば いいですか?
Application.ProcessMessages;
>>384 できました。
どうもありがとうございました
フサギコ様&
>>381 様リンクをば貼っていただきましてありがとうございます。
ありがたく読ませていただきます。
皆さんレスありがとうございます。
とりあえず
>>369 さんのVisibleを使ったやり方でやってみます。
一週間前くらいに始めたばかりなので、難しいのはよく解らないんです…。
どうもでした。
>>387 ありがとうはいらないから、自分が何をしたいのか。この場合は
何を「面倒」と感じたのかをしっかり表現/文章化してくれ。
>>388 勉強用に作ろうと思ったソフトですが、
Formにボタンが20個ほど置いてあって、
それをクリックしたら新しいウインドウが開いて、
ボタンごとにウインドウの内容(Memo)が変わるようにしたかったんです。
面倒と感じたのは、一行ごとにLines.Addで書かないといけない事です。
なんというか、Lines.Addじゃなくて、他の方法で複数行をまとめて書けないかな、と思ったんです。
で、複数行をまとめて書けることはわかったのですかね?
>>390 結局、テキストを編集するソフトを使って
行頭に Form1.Memo1.Lines.Add('
行末に ') ;
を追加して、
Form1.Memo1.Lines.Clear;
Form1.Memo1.Lines.Add('****') ;
if Form1.Visible = False then
Form1.Visible := True;
にしました。
>>391 (((( ;゚Д゚)))ガクガクブルブル
改行したいんかな? Form1.Memo1.Lines.Add('(-_-)'+sLineBreak+'(∩∩)');
394 :
デフォルトの名無しさん :02/10/26 07:31
FTPのソフトは、Delphiを買うと サンプルについてるからそれ使えば、便利だぞ。 無理に VBを使う必要なしっ!
395 :
デフォルトの名無しさん :02/10/26 09:30
この業界入って、何の資格も取らずに40歳までいっちゃうとリストラ対象になるってホントですか?
>>395 資格とっても同じですよ。 単なるプログラマのまま40歳どころか30歳も難しいでしょ
中の上以下だと、不況だから今就職出来るのは派遣屋しかないでしょうしね
DBCtrlGrid上でEnter押したときに Tabをシミュレートしたいんだけど いまくいきません・・・ form上でkeyprevew = tureで case Key of VK_Return: begin Perform(WM_NEXTDLGCTL, 0, 0); Key := 0; end; end; じゃ、だめっぽい。 だれかご教授してくだされー
>>398 よく読まないでレスだけど、
キーボードは押したら離すものでは?
ture・・・?
>400 trueですね(^^ゞ 実はこの記述、某所で見たソースなんです それを、そのまま使っていたのですが DBCtrlGridで問題が発生した次第です ほかに同じ動作をする方法があれば、どうかお願いいたします
Operaのような(反応の早い)ブラウザを作りたいんですが、 何かいい方法はないでしょうか?
ワラエナイ
質問です。 履歴で消してしまった。インターネットのサイトはどうやってみることが出来ますか?
履歴で消してもそのサイトが消滅するわけじゃないから安心すれ。
いやどうやって行ったか忘れてしまって もう一度行きたいんですけど消しちまいました・・・・。 一度消したらみれませんかね? インターネットのお気に入りのよこの履歴からしか消してないんだけど・・・。
プログラム的にやりたいってことだよね・・・ どうやるんだろ。
キャッシュを片っ端から調べろ
>>407 どんなサイトだったか書け
俺が全力を持って探し出してやろう。
>>410 MACのCMに出てるキクチモモコのアイコラサイトです
>>412 ありがと。やさしいね。 でも・・・でも・・・・ボクのキクチモモコじゃなかっんです。
>>407 履歴のフォルダをファイル復活ツールにかけてみればぁ?
416 :
デフォルトの名無しさん :02/10/27 15:18
最近Delphiを始めました。バージョンは5です。 エディタがとっても使いにくいです。 秀丸で言う「フリーカーソルモード」っていうのになっていますが、 変えられないのでしょうか?
>>416 あなたは3つの道があります
1、好きなエディタを使って同じファイルを編集しなさい。IDEにフォーカスを戻す前に常に保存するクセをつければ大丈夫です。
2、フリーカーソル無効化 をキーワードにgoogle検索しなさい
3、我慢して使いなさい。毎日使えば3日で慣れます
>>416 プログラマがあんなもん使っちゃいけません。
って言うか秀丸にそんなもん付いてたのね・・・。
420 :
デフォルトの名無しさん :02/10/27 16:36
E:\Program Files\Borland\Delphi6にインストールしたら、ヘルプの キーワードが全く表示されません。ヘルプでキーワード検索するには どうすればいいのでしょうか?
OSを替える
422 :
デフォルトの名無しさん :02/10/27 17:10
すみませんが、アクションゲームによる当たり判定について教えてもらいたいのですが・・・ マ○オ風のゲームがつくりたいんですが・・・ 当たり判定について教えていただけませんか??
>>422 画像Aと画像Bが重なった場合当たった.
実装方法はそりゃあもう星の数ほどあると思われ.
>>422 でも、音語るならサンプリング定理くらい知ってるべきだと思われ。
425 :
デフォルトの名無しさん :02/10/27 17:18
判定に関するhome pageなど参考になる資料があれば教えていただけませんか??
>>425 遊びのレシピという本にBCBとDelphiのサンプル付きで載ってた。
まぁ、あれ以外にもやり方はやたらとあると思われ。
428 :
デフォルトの名無しさん :02/10/27 17:30
キャラが移動したとき、その次のマスが通れるかどうか・・・ ジャンプしたときに、キャラより下のマスが地面ではないか・・・ もし↑の場合キャラの行く次の1マスを判断する方法。 できるだけ、キャラはマップの1マスが32*32だった場合、それに対して 32ドットずつ進むのではなく、4ドット(32ドット以下ならいくつでも)ずつ 移動できればと考えています。
430 :
デフォルトの名無しさん :02/10/27 17:35
すみませんでした。。。 「遊びのレシピ」という本をかって読んでみます。 申し訳ありませんでした。。。
>>430 立ち読みして役に立つと思ったら買いなされ。
取りあえず、セオリーを聞き出す前に自分なりに考えてみるのも勉強になると思われ。
少なくとも、どんなAPIセットを使って、キャラクターの形と位置がどんな構造で管理されて〜
ってところまで行かないと当たり判定の話なんて具体的には出来ないと思われ。
そういえば昔のゲーム機であったハードウェア当たり判定ってDirectXとかでもあるのかしらん?
Del7でコンパイルした、あるプログラムを起動すると異常終了してしまいます。 Del6でコンパイルしたプログラムは正常だったので、原因を調査してみると、 ComboBoxが原因のようなのですが、デフォルトが項目値が空白の項目なので落ちているようです。 回避策とかパッチはあるのでしょうか? これはボゥランドの不具合だと思うのですが、皆さん知ってました?
433 :
デフォルトの名無しさん :02/10/27 17:43
>>432 >これはボゥランドの不具合だと思うのですが、皆さん知ってました?
御願いだから先にバグフィックスしてください。お前のミスです。
434 :
デフォルトの名無しさん :02/10/27 17:47
>>433 D相談室その7で同様の書き込みを見て
私も試してみましたが、マジでD7のバグみたいですよ。
435 :
デフォルトの名無しさん :02/10/27 17:49
436 :
デフォルトの名無しさん :02/10/27 17:49
知りません・・・ 自分なりに書いてみたソースなんですが・・・ label1=キャラクター onkey[5]=スペースキー(Boolean型) junp=ジャンプしたときの判定用(Boolean型) yy,xx=ラベルを動かす移動数(Integer型) map=マップ[array(0..9,0..9)of integer=(0,0,0,0,0,0,0,0,0,0),×10] (マップサイズは、320*320 1マス32*32) if onkey[5] and jump then begin dec(yy,2); if yy>-16 then begin yy:=-16; jump:=false end; end; if (jump=false) and (map[label1.top div 32+1,label1.left div 32]=1) then begin yy:=0; label1.top:=(label1.top div 32)*32; onkey[5]:=false; jump:=true end else if (jump=false)then inc(yy,2); label1.top:=label1.top+yy;
<<436無視してください。
> 御願いだから先にバグフィックスしてください。お前のミスです。 社員必死だな (藁
ごめんなさい
>>439 =441
ん?
オマエの潔さは気に入ったが、
しかし流れからしてオマエが謝る必要はないと思うが?
自作自演?? カッコイイ!!
何処から何処までが自作自演かを考察してみるスレはここですか?
いくらなんでも名前消さないなんて無いよなあ…
>>447 確かに笑えるが、
コメントの間隔からして、442=443が自作自演だろ、
439を使ったダブルアクションな高度なテクニックだと判断する。
本日の自作自演大賞決定!
449 :
デフォルトの名無しさん :02/10/28 01:16
誰かDelphi.NETの使い方教えて!
Delphi.NETはBorlandの敵です。
451 :
デフォルトの名無しさん :02/10/28 01:21
Delphi.NETはDelphi8まで様子見です。
Delphi8が出たとたん.NETが死亡します。
なんかD7プレ版が入ってたので試してみようかと 思ったのですが、今のところ必要なしいD8まで待ちます。
上矢印を押したときに Shift+Tabを押したことにするには どうするの?
タブ順で前後のコントロールは、FindNextControlで探せるので、それとSetFocus。 勿論、自分自身にWM_KEYDOWNでTABを送る方法もありますが、 メッセージはフックされる可能性もありますし、 コントロールがメッセージで内部フラグを切り替えていたりするとややこしい事になってしまうので、 FindNextControlの方が確実でしょう。
ハァ?
>>454 フォームのKeyPreviewイベントをTrueにして
フォームのKeyDownに以下のコードを記述する
//【↑】でフォーカス戻る
if (Key = VK_UP) then
begin
SelectNext(ActiveControl as TWinControl, False, True); // 戻る
Key := 0;
end;
//【↓】でフォーカス移動
if (Key = VK_DOWN) then
begin
SelectNext(ActiveControl as TWinControl, True, True); // 進む
Key := 0;
end;
ハァ? ハァ?
459 :
デフォルトの名無しさん :02/10/28 14:40
デルパイあげ
460 :
デフォルトの名無しさん :02/10/28 15:38
デルポイだゴラァ
デリパイだゴラァ
>454です 457さんの方法でうまくいきました! ありがとうございます!! しかし、DBCtrlGrid上ではうまく動作しないのはどうしてでしょう? DataSetを直接いじるのかな? うーん。。。
Delphi7 Update #1(英語) 当てたら挙動不振になった、もーだめぽ
464 :
デフォルトの名無しさん :02/10/28 20:04
>>463 落ち着け、Update#1って MS-SQL Updateのこと?
>>462 =454
Grid内を移動させたいのか、Gridを抜ける為に使いたいのかによって
動きを変えるコードが必要になるでしょ。
ListBoxやComboBoxでも配慮が必要かもしれない。
又、Panel等の通常[Tab]ではフォーカスがセットされないコントロール
へも移動できてしまうので、その辺りも要注意(回避策はある)
466 :
デフォルトの名無しさん :02/10/29 09:08
commatextみたな感じで、TAB区切りtextを扱えるのって 何かないの?
>>466 タブをカンマに置換して。カンマは適当にエスケープ
>>466 QuoteCharへ引用符を指定し
Delimiterへ区切り記号を設定して
DelimitedTextを使う
>>468 D6にはそんなのがあるのですね.
でもタブ区切りテキストを作るのは
連結は単純に各文字列をタブをはさんでつなぐだけですし
分離にしても1バイトずつ調べてタブを境にコピーするだけなので(※)
プログラミング初心者でもがんばれば十分解ける問題だと思います.
(って,今時のビギナーさんには
このレベルでもサンプル書いちゃった方がいいのかな?)
(※タブコードは少なくとも日本語文字列では
2バイト文字の2バイト目になることはありません)
>462さんの言われることを参考にしながら いろいろやってみると、思った通りの動作が出来ました ありがとうございます。 ところでDBアプリを作るとき、 入力画面などはDataControlなどを使われてますか? それとも普通のEditなどで、コードをごりごり書いてます?
>>470 特殊な入力が必要なら、自分でコンポ作ってゆくと後が楽だよ
473 :
デフォルトの名無しさん :02/10/29 15:23
パネルのVisibleがFalseになった時のみにイベントを起こしたいのですが、 下記のようにすると、それ以外の時にもイベントが起こってしまいます。 それでも目的の動作は果たせるのですが、 出来ればVisibleがFalseになった時のみイベントを起こしたいです。 どなたか教えてくだちい。 unit PanelEx; interface uses Windows, Messages, SysUtils, Classes, Controls, ExtCtrls; type TPanelEx = class(TPanel) protected FOnHide: TNotifyEvent; procedure WndProc(var Message: TMessage); override; published property OnHide: TNotifyEvent read FOnHide write FOnHide; end; implementation procedure TPanelEx.WndProc(var Message: TMessage); begin inherited WndProc(Message); if (not Visible) and (Assigned(FOnHide)) then FOnHide(Self); end; end.
Visible変更時、VCL特有のメッセージが送られてきます。 procedure CMVisibleChanged(var Message: TMessage); message CM_VISIBLECHANGED; … procedure TPanelEx.CMVisibleChanged(var Message: TMessage); begin inherited; if not Visible then 目的の動作 end; で、いいかと。 この手のメッセージは他にもあって、Controls.pasにいっぱい書いてあります。
>>473 Visibleの変更前なら
procedure VisibleChanging; override;
あとなら
procedure CMVisibleChanged(var Message: TMessage); message CM_VISIBLECHANGED;
後はご自分で
この業界入って、何の資格も取らずに40歳までいっちゃうとリストラ対象になるってホントですか?
>>478 スレ違いどころか板違いだし、コピペだし・・・マ板へ逝ってね
480 :
デフォルトの名無しさん :02/10/30 14:47
Delphi5で保存したものをDelphi6でみようと開こうとすると 「行が長すぎます」というエラーが表示されます。 Delphi5では普通に見れます。Delphi6では見れないのでしょうか?
ええと、保存したものはEXEかな。 名前.exeってやつです。この答えでいいんでしょうか・・・。
かなとローマ字の変換ライブラリはありませんか? 相互変換ができれば表記は問いません。 よろしくお願いします。
無意味にあげるな。sage ろ。 そんで、IDE のエディタで .exe を開いて何をしたい?
>484 どんなプログラムだったか6のほうでみたいだけなんですが 見ることができない状態なので。 sageにします。
DBCtrlGridの上にDBEditとかを乗っけて、 フォーカスのあるコントロールに色を付けてるのですが なーぜか、2行以上DBCtrlGridのパネルがあると 最小化とかアプリの切り替えとかで再描画させると 全てのパネルで色が変わったままになるのだが 何か方法はない?
>>485 exeファイルをエディタで開いたところで、どんなプログラムかわかるわけないだろ
どんなプログラムか見たいならソースファイルを見ろ
わかりました。えらいまぬけな間違いをしていたようです。。。 サンクスです。
>488 それは失礼、ゴメンナサイ。
.exe を Delphi5 で開いたときに、480 は一体何を見たんだろう...
SysUtilsをusesしないとtry...except, try...finally構文は使えないんですか?
495 :
デフォルトの名無しさん :02/10/31 23:26
WSAGetLastErrorのエラー文字列の取得方法を教えてください。 自力で変換するしかないですか?
実はindyつかってて、例外でsocket error #xxxxxx なんてそっけないメッセージが
帰ってきたもんで調べてたんですよ。
>>496 まじかよ・゚・(ノД`)・゚・。
>>497 VisualStudioもってるならエラー検索がツールフォルダに入ってるよ。
>>495 あれま。
D7/Indy 9 なら TIdStackWindows に WSTranslateSocketErrorMsg 関数が
定義されているけど?
ほとんどのエラーは(英語だけど)可読文字列として表示されるはずなんだけど。
エラーコード 11001でした。 WSAHOST_NOT_FOUND…… ちょっとまて、ソース見たけど、HOST NOT FOUNDみたいな起こりうるエラーが WSTranslateSocketErrorMsgで変換されてない…。
// Authoritative Answer: Host not found WSAHOST_NOT_FOUND = WSABASEERR+1001; HOST_NOT_FOUND = WSAHOST_NOT_FOUND; みたいに宣言されていて RSStackHOST_NOT_FOUND = 'Host not found.'; エラー文字列も定義されているのに一度も使ってないみたい。 今回初めてIndy使ってみたけれど、もしかしてかなり不完全なライブラリだったりします?
ごめん。 念のため確認したら新しいバージョンが出てたので見てみたら、定義されてるわ。
で、それはそれとして、 Indyマニュアルインストールだと、Fulld6.batを実行しても Exception EAccessViolation in module Computil.exe at 0000C9FB. Access violation at address 0001C9FB in module 'Computil.exe'. Read of address 0 0000000. Error! と出て終了するのは何故ですか?
D6 で Indy9 を使おうとしているのかな? まずは自分の環境の説明からお願いね。
>>503 >何故ですか?
ってあなた, 誰に聞いているの?
Indy 開発元に尋ねてみたら?
ただ、D6/Indy9 の組み合わせで使っている人はあなただけではないと思うので
問題はあなたのほうにあると思う。
暇があったら、D6/Indy9 の組み合わせを試してみるよ。
...ところで何故「マニュアルインストール」?
Ha Ha Ha!! Computil.dpr デバッグしてわかったんだが、レジストリを旧環境から移したときに、 HKEY_LOCAL_MACHINE\SOFTWARE\Borland\Delphi\6.0 の値が前の環境のものだったよ(ドライブ名が違ってた) で、Computil内の > SetLength(ShortPath, GetShortPathName(PChar(LongPath), PChar(ShortPath), MaxPathLen) ); > If (ShortPath[1] = #0) or (Length(ShortPath) = Length(LongPath)) then begin って部分で、パスが実在しないから、Length(ShortPath) = 0になって、ShortPath[1]でエラー発生。 そこまで厳密なエラーチェックしてないのね。 底なしの馬鹿だね俺は。もう救いようがない。 俺見たいのがDelphiユーザーにいること自体が恥ずかしいよ。 氏ね、俺。 Zap Zap Zap...
> HKEY_LOCAL_MACHINE\SOFTWARE\Borland\Delphi\6.0 HKEY_LOCAL_MACHINE\SOFTWARE\Borland\Delphi\6.0\RootDir の間違いだった。
>>507 レジストリをリストアした?なんて無謀な・・・。
不正ユーザーか何かかな?
いや、前の環境引き継ぐのをミスっただけだ。 騒がせてスマン。
511 :
デフォルトの名無しさん :02/11/01 09:58
プロジェクトがメモリリークしてるみたいなんで、調べたら、 IndyのIdComponent.pasで意図的に開放していない箇所を見つけたんだけど、 これってどうにかならないもんかね。 >initialization > GStackCriticalSection := TCriticalSection.Create; >finalization > // Dont Free. If shutdown is from another Init section, it can cause GPF when stack > // tries to access it. App will kill it off anyways, so just let it leak > // FreeAndNil(GStackCriticalSection); finalization の呼ばれる順番って不定だっけ?制御できないかな。
そういう部分って無視するのが通例だけど。 アプリケーション終了時にのみ開放されないだけで別に害は無いし それを安全に開放するようにするためには、結構コストがかかる。 コストだけかかって自己満足で終わる部所。ってことだ。
大量の割り算をするのに、 double型で a/b ってやるのと integerで a div b ってやるのって速度的にはどっちが早いの? それとも関係ない?
>>513 使用されてるCPUによるけど 32bitなら整数の方が少しだけ速い事が多いかも。
使う目的は何?
>>514 おおむね Pentium 以降は、割掛け算は FPU の方が早い。
ただし、データ長が長くなるためロード/ストアコストがかかる場合が
ある。
けど、FPU つかった方がはやいよ。
レスサンクスです。 使う目的は秘密ですが、500KbくらいのCSVファイルを 読み込ませて割り算したら、異様に遅かったので・・・・。MMXPen166 超ド初心者なんでdoubleをintegerに変えるくらいしか思いつかなかったのです。 FPUとは何でしょうか?
>>516 それは単純にCSVを処理する方法が悪かったのじゃないかと思う。
tab区切りのデータを z:=AnsiPos(#$9,str); Data[i].a:=strtofloat(Copy(str,1,z-1)); Delete(str,1,z); z:=AnsiPos(#$9,str); Data[i].b:=strtofloat(Copy(str,1,z-1)); Delete(str,1,z); z:=AnsiPos(#$9,str); Data[i].c:=strtofloat(Copy(str,1,z-1)); Delete(str,1,z); z:=AnsiPos(#$9,str); Data[i].d:=strtofloat(Copy(str,1,z-1)); Delete(str,1,z); z:=AnsiPos(#$9,str); ・・・・・・続く こんな感じで読んでいって それを計算させているのですが おかしなところがあればご指摘を・・・・。 ちょっと上のほうでcommatext関連のことが 出てますが、オレのスキルでは理解し難いので、 この方法だとなんとか理解できるのでこうやってます。 やっぱりスマートなやり方じゃないんですかねー?
・・・
・・・・・・
>>518 Deleteしない方法を考えてみなよ。
データの前後のタブ位置を覚えといて(以下略
以前、DelのソースをHTML化できるフリーソフトを見たことあるのですが、 今どうしても欲しくて探しています。似たようなソフトはいくつかあるんですが、 私が欲しいのは、Del だけじゃなく、VCやVBのソースもHTML化できたような気がします。 予約語は強調(ボールド)、イタリック、色をつけるなど、便利な機能がありました。 どうか知っている方は教えてください。
>>525 これです。どうもありがとうございました
デスクトップ上に見えているウィンドウと、 タスクバーに表示されているウィンドウのハンドルを 取得するにはどうすればいいでしょうか? EnumWindowsで列挙してIsVisibleで調べても、見えないのに出てきてしまう ハンドルがあるんです・・・。
↑名前打ち間違えたスマソ
>デスクトップ上に見えているウィンドウと、 >タスクバーに表示されているウィンドウのハンドル なに言いたいの? タスクバーに聞くと答えてくれるよ
530 :
デフォルトの名無しさん :02/11/02 21:47
新しいユニットを作り、その中に書いた関数を使うためuses に新しいユニット名を書いて、逆に新しいユニットから フォーム内のコンポーネントを使いたいので、ファイルメニューの'ユニットを使う'を使用したいのですが灰色で押せ ないため、uses に元からあるユニット名を直接書いてますが、何故でしょうか?
[ヘルプ(H)|Delphiヘルプ(D)] 「ユニットの循環参照」
532 :
デフォルトの名無しさん :02/11/02 22:14
なるほど implementationに記述させてれば別に構わないみたいですね。今まで通り手打ちでやってきます
ユニットをusesする時は"層"を意識しないとね。
OnDataFindの使い方が分からない。
>>529 わかりにくい日本語ですいません。
つまり、ユーザーがモニタを見て、(タスクバーの項目を含め)目に映る
ウィンドウのハンドルのみを取得したいのです。
EnumWindowsだと不可視ウィンドウも列挙され、IsVisibleで調べても、
一部見えてないウィンドウまで引っかかってしまうので…。
537 :
デフォルトの名無しさん :02/11/03 23:42
Indy使った方がいいじゃないの? NM****って将来なくなる気がする。
539 :
デフォルトの名無しさん :02/11/04 10:37
すれ立てるまでも…スレで回答が無かったので質問させてください。 St := TFileStream.Create (OpenDialog.FileName, fmOpenRead); って書いたら、 [エラー]SDIMAIN.PAS(82): 未定義の識別子 : 'fmOpenRead' とコンパイラに怒られるのですが、何故でしょうか? 環境はDelphi6personalです。
use SysUtils; で解決しました。豆腐に頭ぶつけて逝ってきます。
>>539 出るはずのない未定義の識別子が出たら、Delphi6のソースディレクトリを
grepかけると手っ取り早い。
すまんDelphi *6* は余計だったな。
>>541 その作戦はpersonalでは不可能では?
TImageとTPaintboxってどう使い分けるの? どっちも同じ気がして・・・・・。
>>544 自動的に再描画してくれるか否かの違い。
後。ダブルバッファリングしてくれるか否か。
>>543 んじゃ、ヘルプを単語検索かけるってのは?
windows9xだから検索できないってのはなしね(DLLいれろ
>>451 Borland\Delphi6\Doc\に各ユニットの
インターフェース部分が抜き出してあるよ。
Personalに限らずインターフェースに対してGrepかけるなら
Source\*.pasよりDoc\*.intの方が楽なことが多かったりする。
すんまそん 厨房ですが Delphi5とそれより新しいバージョンの互換性ってどうよなんだしょ そんなに違わないと勝手に思っているのですが ちなみに自分はDelphi5しか知りません
549 :
デフォルトの名無しさん :02/11/05 16:48
>>548 Delphiは4以降大きな変化は無し。
マイナーチェンジ程度の違いしかない。
4以降のソースはほとんどそのまま通る。
最近変わった部分はVCXとかWindowsアプリ作る上ではどうでもいいことばかりだから
普通のアプリ作るぶんには5のつもりで使っても大丈夫。
550 :
549続き :02/11/05 16:53
あ、たぶん次は大きな変化があると思うから 7を買おうとか思ってるんなら8まで1年待ったほうがいいと思う。
552 :
デフォルトの名無しさん :02/11/05 17:51
がいしゅつかもしれませんが、 Delphiで作られたソフトをWindowsXPのスタイルで表示させたいんですけどできますか?
554 :
デフォルトの名無しさん :02/11/05 18:43
質問です。 TStringsクラス等のAddメソッドですが、 これは戻り値があるのに(functionなのに)、何故手続きみたいに使えるのですか? 自分の知識では、functionは値として扱われるから、 ListBox1.Items.Add('hoge'); という様に使うのは無理だと思うんですけど…。 それとファイルの新規作成ってどうやるんですか? ヘルプ見て、「FileOpen('', fmCreate);」ってやってみたけど、無理でした。
>>554 関数の戻り値は無視しても構わないような文法なってるだけ。
>それとファイルの新規作成ってどうやるんですか?
直接の答えじゃないけどTStringList.SaveToFileかTFileStream調べてみたら。
>>555 ホントだ…違うfunctionでもできるんですネ。
新規作成はTFileStreamでやりました。
ありがとうございます。
>>549 ありあとやんした
感謝します(^-^)/
Del2〜4のアップデートって、もう手に入らないの?
>>552 Delphi7に付いてくるxp対応ってフリーのやつだから
ダウンロードすれば出来るはず。
ただしマニフェストを付けるのは手動かな。(たぶん)
>>534 インクリなんちゃら検索で使うやつ。
普通に使えば使えるよ。
564 :
デフォルトの名無しさん :02/11/06 12:49
565 :
デフォルトの名無しさん :02/11/06 17:24
すいません。 Application.Terminate; でアプリケーションを閉じると、WIN98等でWINDOWSのタスクバーに夢印のタスクボタンが 残ってしまうのですが(押すと消える) これを回避する方法ないでしょうか? ご教授お願いします
Application.Terminate;を使わない 以上
567 :
デフォルトの名無しさん :02/11/06 19:43
>>566 なるほどthx......
この方法を試さずに他の方法を試す
YES
NO
568 :
デフォルトの名無しさん :02/11/06 20:04
delphiでポインタ使うときキャレットっていうんですか?あの上に向いた矢印 みたいなやつ。あれがキーボードに無いのですが、どうすればいいんでしょう?
569 :
デフォルトの名無しさん :02/11/06 20:06
ありました。すいません
>>565 そりは、Delphi に限らず、ウィンドウのフラグを作成時と異なる物にして終了すると
発生します。タスクバーのバグ。VC でも再現可能。
メインフォームの Form の Style を変更してない?
その場合は起動時/タスクバーに表示されたときの状態に戻してから
アプリケーションを終了するとよし。
571 :
デフォルトの名無しさん :02/11/06 20:13
>>568 ワラタ
考えてみれば^なんて人によってはまったく使わないキーだなあ。
572 :
デフォルトの名無しさん :02/11/06 20:14
>570 おお! 有難う早速試してみます
573 :
デフォルトの名無しさん :02/11/06 20:24
ギョフ
574 :
デフォルトの名無しさん :02/11/06 20:29
>>570 追加情報
WindowStyleではなく
FormのHIDE状態からVIEW状態へ変更したウインドがありました。
解決の糸口になりましたありがd
>>574 問題が解決したなら結構。
Borland 製品を今後もよろしく!
>>565 Win98のバグ
ソースのアドレスは…忘れたスマン。MSのサイトにあったはず
あのーRichEditでURLやメールアドレスをクリッカブルにする方法教えてください。 何度も出ている話題かとおもいますが。。。。。
RichEdit v2.0 のインスタンスが必要なので、TRichEdit では不可能。 RichEdit20 がインストールされている環境(IE が入っていればまず問題ない) でだけ動けばよいのなら、RichEdit98 ってコンポーネントをどこかから見つけてくれば いいよ。
>>578 標準コンポでやろうと思ってたんですけど、
やっぱRichEdit98を使うしかないですか。。。。
>>579 あのー、試してみようと思ったんですけど、
これってNiftyの会員じゃないと見れないようですね。。。無念
Jpegをリストか何かでアプリケーションに取り込む方法ないですかー? アニメーションをさせたいのですが・・・
> 581 クシコヽ(´ー`)ノdd できますた!
584 :
デフォルトの名無しさん :02/11/08 19:14
TMemo.SelTextがうまく動作しませんどうしたらよいでしょうか? 普通に実行する分には大丈夫なのですが 実行ファイル名.manifest でXPスタイルを適用すると 長い文字を選択した場合完全に文字列の選択が行われないんです。 -------------------------------------------------------------------------- procedure TForm1.Button1Click(Sender: TObject); begin // Memo1の選択内容をMemo2にコピー Memo2.Text := Memo1.SelText; end;
>>584 VBでも同じ現象になりました。
もしかして漏れだけ?
うっ583じゃない584だ・・・
587 :
デフォルトの名無しさん :02/11/08 20:41
Form基準のクリックされた座標を得たいんですが、 GetCursorPos以外の方法を昔見た気がするので教えてください。 #記憶ではasとか使っいたような気がします。
OnMouseDown イベントではダメなの?
589 :
デフォルトの名無しさん :02/11/08 22:33
>>589 なかなか良いソフトだね。
ところでここは質問スレなんだけど日本語読めないのかな。
593 :
デフォルトの名無しさん :02/11/09 19:14
DLLに文字列を返す関数を作成し、VBAから使いたいのですがエラーになってしまいます。 function test:PChar; var s:string; begin s:='test'; test:=@s[1]; end; ------------------ (vba) Declare Function test Lib "aaa.dll" () As String s=test これを実行すると 「オートメーションエラーです。リモートプロセス用の・・」というエラーが出ます。 何が悪いのでしょうか?
test:=@s[1];ではない。
>>594 でも、delphiで作ったプログラムから呼び出すとちゃんと機能するんですよ。
ローカル変数へのポインタ返しちゃ駄目
PChar(s); でうまくいきました。 ありがとうございました。 でも前のコードでも、delphiで作ったプログラムからは呼び出せたのが疑問です。
本当にうまくいったのかと(略
599 :
デフォルトの名無しさん :02/11/10 02:29
Delphi7 でTCoolBarを使っているのですが、どうしても解決出来ない問題が出てきました。 WindowsXPでXPスタイル表示している場合のみ再現します。 フォームに TXPManifest と TCoolBar を置きます。 CoolBar にはツールバーを2つ格納し、CoolBand を2つにします。 ドラッグして Band を1行に並べます。 コンパイルして実行します。 フォームを横方向にリサイズします。 そうすると左側のCoolBandが少しずつ小さくなっていきます。 解決方法が分かる方がいましたらどうかよろしくお願いします。
横方向ってどっちだよ・・・
D7で、XPのときだけStatusBar.SimpleTextが表示されなくなりますた。 TXPManifestは貼ってありまつ。回避策、ないでつか? # Update で直るのかなぁ。。。
602 :
名無しさん :02/11/10 11:49
IPアドレスを用いて他のパソコンの中に保存されているファイルを取得するプログラムを作りたいのですがどうしたらよいですか?教えてください。
>>600 両方。フォームの幅を短くしたり長くしたり。
フォームを動かすたびに、CoolBarのBandサイズが変わってしまう。
>>602 サーバ用プログラム(ファイルが保存されているマシン用)と
クライアント用プログラム(ファイルを取得するマシン用)を用意する必要があると思う。
FTPとか調べて見てはどうでしょうか?
605 :
デフォルトの名無しさん :02/11/10 12:40
if variable = const then statement1 else statement2; case variable of const: statement1; else statement2; end; どちらのほうが速いでしょうか?
分岐が二つならcaseなんていらない
世の中には if を使わない人もいます.
608 :
デフォルトの名無しさん :02/11/10 19:56
TMonthCalendarを使ってカレンダーを作りたいんですが、 休日を赤で表示したいと思っています。 予定を入れた日はGetMonthInfoイベントでBoldDaysメソッドを呼んで 太字にできたのですが、休日を赤いフォントに変更ってできるのでしょうか?
609 :
デフォルトの名無しさん :02/11/10 22:19
TImageを左クリックする毎に 1.bmp->2.bmp->3.bmp->1.bmp の順番で 右クリックする毎に 1.bmp->3.bmp->2.bmp->1.bmp の順番で イメージが切り替わるようにするにはどしたらいいですか? イメージはTImageListに格納されています。
>>609 onclick発生しなかったっけ?
後は自分で頭使うところだ。
onmousedownとonmouseupでないと左右ボタン判別できなくない? とか、言ってみる。
サンクス! ちょっと試してみます
もうすこし、教えてください。 procedure TForm1.Image1Click(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin case Button of mbleft: begin ImageList1.GetBitmap(1,Image1.Picture.Bitmap); Image1.Repaint; end; mbright: begin ImageList1.GetBitmap(2,Image1.Picture.Bitmap); Image1.Repaint; end; end; end; で、一応クリックに応じてイメージの切り替えが出来たんですけど 切り替えたイメージのImageListでのIndex値はどうすれば取得できますか?
ごめんソース見づらくなってしまった procedure TForm1.Image1Click(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin case Button of mbleft: begin ImageList1.GetBitmap(1,Image1.Picture.Bitmap); Image1.Repaint; end; mbright: begin ImageList1.GetBitmap(2,Image1.Picture.Bitmap); Image1.Repaint; end; end; end;
Index値を記録すればいいだろ。 Index: Integer;をどっかに宣言して Index:=1; ImageList1.GetBitmap(Index, Image1.Picture.Bitmap);
すまん、ありがとう。
617 :
デフォルトの名無しさん :02/11/11 16:29
こんにちは。 タスクスケジューラを制御しようと考えています。 それで、ITaskSchedulerなどの定義が必要なのですが、 Delphi6Proには定義ファイルがありませんでした。 また、タイプライブラリで取り込むことも出来ませんでした。 そこで、Delphi7ではITaskSchedulerなどが定義されているのか、 お持ちの方はソースを検索していただけませんか?
618 :
デフォルトの名無しさん :02/11/11 16:33
厨質問でスマソ WinSockなどのコンポーネントを使った通信関係の解説をしているWEBサイト教えて。 HELPには何もかかれてないよ。せめて簡単なサンプルがあれば自己解析するのだけど。
621 :
デフォルトの名無しさん :02/11/11 19:44
>>619 おお、ありがとうございます。
Cヘッダからコンバートする手間が省けました。
>>618 日本のサイトになかったと思ったら本家にあったのですね。
参考になります。
622 :
デフォルトの名無しさん :02/11/11 21:36
実行中にフレームに貼り付けたコントロールのプロパティの変化や変数の変化を リアルタイムで、VBのようにまとめて知る方法はありませんか?
>>622 VBはどんな風にして知ることが出来るんだ?
624 :
デフォルトの名無しさん :02/11/11 22:16
>>623 VBのローカルウインドウのようなもので一括して知りたいのですが...
626 :
デフォルトの名無しさん :02/11/11 23:06
>>625 おお、スクリーンショット見た感じではこんな感じが欲しかったです
英語さっぱりなので使い方がさっぱりなので早速調べてきます
すばやいレス有難うございます
[実行(R)|インスペクト(I)...] は?
628 :
デフォルトの名無しさん :02/11/12 15:34
Delphi6のSource\Rtl\Winにあるソースなのですが、 Cヘッダからコンバートしたものには全部 「{$EXTERNALSYM XXXXX}」のようなコンパイラ指令(?)が定数などに くっついているのですが、これはどう言う意味なのでしょうか? Cヘッダからコンバートする場合は必ず付けなくてはならないのですか?
629 :
デフォルトの名無しさん :02/11/12 15:50
if 条件 then begin 処理1 end else 処理2 上記のような文で、処理1を通らない条件の時、 処理1を変更して実行すると例外が出てプログラムが止まります。 なぜ通っていない処理1を変更しただけなのに止まりますか? 下記にまとめてみますた。 処理1を変更前、処理1を通る条件 正常に動く 処理1を変更後、処理1を通る条件 正常に動く 処理1を変更前、処理2を通る条件 正常に動く 処理1を変更後、処理2を通る条件 例外が出て止まる コンパイル時に警告等は出ていません。 Delphi6を使っています。
ヘルプコピペ >EXTERNALSYM 指令は,指定した Delphi シンボルが C++ 用に生成されたヘッダーファイルに現れないようにします。 >オーバーロードされたルーチンが指定された場合,ルーチンのすべてのバージョンがヘッダーファイルから取り除かれます。 つまり、BCBでDelphi用のコンポーネントを使うような時に、BCB側で定義済 の定義が一緒に出ないようにする為ののもので、Delphiだけを使ってるぶん には関係ないという事です
>>629 コンパイラのバグじゃないの?
必ずそうなる最小限のコードを作ってみて。
ここに書けば日本の某2ch担当の人が米に連絡してくれるでしょう
633 :
デフォルトの名無しさん :02/11/12 16:32
処理1を変更ってなに?
>>631 最小限のコードにサンプルプログラムが噛んでるから
たぶん、そっちに問題があるんだと思います。
>>632 最適化ってなんですか?
普通にF9で実行してるだけなんで最適化してないと思います。
>>633 処理1の内容を変更した後と変更する前で、実行後にエラーが
出るかどうかが変わるって事なんですが、意味不明ですか?
もう、諦めました。
変更前の状態でも使えるので、そっちでいきます。
お騒がせしました。
635 :
デフォルトの名無しさん :02/11/12 17:07
ステータスバーにボタン乗せるのってどうやったらできますか?
>最適化ってなんですか? [プロジェクト]-[オプション]-[コンパイラ]-[コード生成]-[最適化] >もう、諦めました。 早すぎ。
637 :
デフォルトの名無しさん :02/11/12 18:54
>>630 なるほど。ヘルプに載っていたとはうかつでした…
解説ありがとうございます。
>>635 ボタンのParentをステータスバーにする
位置はプログラムで調整
イメージングを使う以外でモノクロTifをグレースケール表示させる方法、またはコンポーネント 知らないでしょうか?XPになってからイメージングが無くなって困ったことになりました
>>638 おお、ありがとう。
直接フォームをテキストで開いて、
ステータスバーに対してボタンが入れ子状態にすると簡単にできたよ
642 :
デフォルトの名無しさん :02/11/13 22:31
643 :
デフォルトの名無しさん :02/11/14 09:54
>極端な話、プロパティエディタ上で追加・削除が全く出来ないと >いいのですが、そのようなことは出来るのでしょうか? ColnEdit.pas の ShowCollectionEditorClass の最後の引数を [ccMove] だけにして カラムエディタを開けばいいんとちゃうか?
644 :
Del厨改めDel :02/11/14 10:51
横レス、スマソ。
50枚程度のJPGを順番に表示させるスクリン・セーバーを
作りたいのですが取っ掛かりを教えて下さい。
下記スレで教えていただいたのですがテキストを点滅表示させると
いうものでした。
重ねて質問したところ帰るように言われてしまいました。
>1を読み、先にここに来るのだったと反省しています。
よろしくお願いします。
ミ,,゚Д゚彡DelフサギコのフサフサDelphi談話室G
http://pc3.2ch.net/test/read.cgi/tech/1035549044/
>>644 JPEG を画面に表示させる方法は判りましたか?
アプリとして、フォームに表示させてみて、次はディスクトップに表示してみて
それが出来ればリンク先の内容を読んで解決する筈です
>645 ありがとう。 これから、考えてみます。 Delphi7を買ったばかりで済みません。
ListBoxで左クリックしたときと同じように右クリックしたときも選択できるようにするには どしたらよろしいいでしょうか? procedure TForm1.ListBox1MouseDown(Sender: TObject; Button; TMouseButton; Shift; TShiftState; X, Y: integer;); begin if Button = mbRight then // ここになんてかけばいいの? end;
648 :
デフォルトの名無しさん :02/11/14 15:19
TEditを右クリックすると、デフォルトのポップアップメニューが表示されますが、 表示しないようにするには、どうしたらいいでしょうか。 とりあえずは、空のTPouupMenuをTEdit.PouupMenuに割り当ててるんですが、 もっとスマートなやり方があれば教えてください。
>648 Pouup→Popup
>> 空のTPouupMenuをTEdit.PouupMenuに割り当ててるんですが じゅうぶんスマートだと思う
>>647 左クリックを完全にシミュレートするなら、MouseMove と MouseDown も
必要です。
procedure TForm1.ListBox1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
Itm:integer;
begin
if Button = mbRight then begin
Itm := ListBox1.ItemAtPos(Point(X,Y),true);
if Itm = -1 then exit;
ListBox1.ItemIndex := Itm;
end;
end;
procedure TForm1.ListBox1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if Button = mbRight then begin
ListBox1MouseDown(Sender,Button,Shift,X,Y);
if Assigned(ListBox1.OnClick) then ListBox1.OnClick(Sender);
end;
end;
procedure TForm1.ListBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if ssRight in Shift then
ListBox1MouseDown(Sender,mbRight,Shift,X,Y);
end;
TToolbarに実行時に動的にツールボタンを作成して乗せていくと目に見えて遅いようなのですが、これを速くするにはどうすればいいですか?
>> 目に見えて遅いようなのですが、 再現しません
>>651 ありがとう。望んでいた通りの動きになりました!
かなり感動してます。
>>651 ありがとう。望んでいた通りの動きになりました!
かなり感動してます。
時間が逆転している!! 654 <-> 655
>653 目が悪いのでは?
>>657 ちゃんと手間暇かけて検証したのにそんな言い方はないだろ。
いくら 2ch だからって。まったく。
あなたは、性格が悪いのでは? 早いパソコン買ったら?
自分で勝手に検証したんだろ?この程度で怒るなら、2ch に近づかないほうが良いかと。
|,,∧
>>657 |∀゚彡 藁た
|⊂ミ
| ミ
|''U
>>658 >657 は多分 >652 と別人でネタだと思いますが
調べてくれた方にとってはキツいですねぇ.
ツールバーはボタンに文字(Caption)を表示させて使うことが多いのですが
配置やサイズがおかしくなって戻らないことがしばしばあるので
(ちなみにD5)
未だにパネルにスピードボタンを貼り付けています.
おしえてください。 Form1とForm2があり、以下のようなコードでForm1からForm2を立ち上げるています。 begin with TForm1.Create(self) do begin Caption := '新規'; Show; end; end; しかしながら、Form2でOpenDialogを実行するとForm1までShowModal状態になってしまいます。 要は、よくあるSDI型エディタで新規作成をすると新しいフォームが独立して立ち上がって、かつ Form1を閉じると、立ち上がっているForm2がすべて閉じられるようなことがしたいのです。 根本的にコードが間違っていましたらすみません。
664 :
デフォルトの名無しさん :02/11/16 11:26
IDEのファイル検索で、"function"を除いた"func"を検索するにはどうすれば出来ますか? (条件:not 大/小文字の区別 and not ワード検索)
>>663 それの良い副作用として、タスクバーの右クリック時に出るメニューが
Applicateionウィンドウのそれじゃなくて、フォームのメニューになるため、
Delphiアプリっぽくなくなる。
最近のギコナビでは実装済み。
Delphi7のメニューで ファイル(F)の(F)が有りません パッケージ裏のスクリーンショットを見ると ちゃんと有るんですが インストール失敗でしょうか?
>>666 うちのも無いからしんぱいするな。
ALTキーを押してカーソルを動かしたらでるとか
何かの拍子に表示されたような気がするから試してみて
それよりCDケースは割れてなかった?
>>667 Alt + F 1回押せば出てくるけど
起動時は必ず非表示で気持ち悪いです。
CDケースは大丈夫でしたよ。
>>664 正規検索を ON にして
func[^t][^i][^o][^n]
てのは?
670 :
デフォルトの名無しさん :02/11/16 21:03
SDI スタイルは,作り込んで行くと色々と大変な事を経験します.
"functions" "aFunction" "funcT"とかは検索できませんでした( ̄□ ̄;)!!
[警告] unit1.pas(227): for ループ 脱出後の ループ制御変数 'A' の値は不定です こういうの良く出るんだけど、このあとにもう'A'を使わない場合 ほっといてもいいの?
>>675 それはループ終わった後に再びAを参照してる時にでるんじゃないっけ?
よく出る・・・ものでは無いと思うぞ(w
出るソースキボンヌ
>>674 function に一致せず func に一致するのだから、要求された仕様通りだと思うが。
functions には一致させたいの?
もう一度要求仕様を定義し直してくれ。
>>675 >このあとにもう'A'を使わない場合
そりゃAを使ってるから警告が出るんだよ。
for A := 0 to 10 do
;
writeln('A=',A); <-ここで警告
この警告が出た場合バグる可能性大
>>677 funcを検索すると、予約語のfunctionがたくさんマッチします。
この予約語のfunctionを検索結果から除外したいということです。
AnsiContainsText(identifier, 'func') and not (identifier = 'function')
> writeln('A=',A); <-ここで警告 顔文字に見えた・・・
>>679 どうでもいいがfuncなんて識別子を多用する奴は筋が悪い。
>>681 話としてはfuncでも他のやつでも何でもいいので、記号化・抽象化・一般化して考えていただければ・・・
>>679 「function」を「imoyoukangatabetakattana-」に全置換してから「func」で検索するのぢゃ。
レスありがとうございます。 勉強中の身なんで、おかしなソースかもしれないけどこんな感じです。 for c:=0 to datacount div 60 -1 do begin for i:=f+2 to f+59 do begin with data[i] do begin if l>Lo then l:=Lo; if h<Hi then h:=Hi; end; end; if high(data[datacount-1].od)=-1 then setlength(data[i-1].od,2) else setlength(data[i-1].od,high(data[i-1].od)+3); data[i-1].od[high(data[i-1].od)-1]:=h; data[i-1].od[high(data[i-1].od)]:=l; h:=0; l:=9999999; inc(f,60); end; これで、 [警告] unit1.pas(227): for ループ 脱出後の ループ制御変数 'i' の値は不定です と出ます。 とりあえず問題なく動いているのですが なんとなく気になります。が、なにがおかしいのかわからず・・・。 アドバイスあったらよろしくです。
>if high(data[datacount-1].od)=-1 then setlength(data[i-1].od,2) ここで思いっきりiを参照してるじゃん。 iが不定ってことはiにはランダムな値(実際には違うけど)が はいっていると理解しとけばいいよ。
>686さん レスありがとうございます。 いまいち納得できないのですけど、例えば for i:=0 to 10 do showmessage(inttostr(i)); showmessage(inttostr(i)); こんな感じの場合、2個目のshowmessageで 「[警告] unit1.pas(227): for ループ 脱出後の ループ制御変数 'i' の値は不定です」が 出るわけですけど、実際これで動かしてみると2個目のshowmessageの'i'には 常に(何百回も試したわけではないので常にとは言い切れないが)11が入ってるんですけど、 そうでない値が入る可能性もあるということですか?
>>687 そういうこと。なんでそうなるかというと、たとえば
for i:=0 to 1 do showmessage('hoge');
のようなプログラムを書いたときに、コンパイル時に最適化されて実行ファイルでは
showmessage('hoge');
showmessage('hoge');
となる可能性がある。結果は変わらないが、for文の後で i の値が1になるとは限らない。
不定ってのはこういうこと。
for i := 0 to 10 do が最適化で for i := 10 downto 0 do に置き換えられるケースがあったような。
うむ。CPUにとってはi=10 を比べるよりもi=0を比べる方が楽なのだ。
>688-690の皆様 勉強になりました。ありがとうございました。
CPUウインドウをよく見るのだ
見てもアセンブラはよく分からんのだ
694 :
デフォルトの名無しさん :02/11/18 19:57
ListViewである一定の条件でマッチした行のフォントスタイルをボールドするには どういった方法をとればいいのでしょうか? サンプルコードでも頂ければ光栄です。
オーナードロー
696 :
デフォルトの名無しさん :02/11/18 21:03
サンプルコードよこせって
tWebBrowserで質問です。 メモリ内部のHTMLイメージから出力する前に WebBrowser1.Navigate('about:blank'); WebBrowser1.Document as IPersistStreamInit).Load(TStreamAdapter.Create(ms); こういう方法が2thで紹介されていたので、早速実験しました。 ドキュメントの表示もうまくいったのですが、グラフィックのリンクがおかしくなって 表示できません。例えば <imgsrc='A.jpg'> は about:.A.jpg になってしまいます。 これを回避するにはどうすればよいのでしょうか?
>>697 pasdoc の GUI を作ってるの? メモリイメージでいきなり表示出来れば最高だね
サンプルがなけりゃ何もできないようなやつはプログラムやめろ
ま、ま、そんなにDel房を攻めるな(w
>>700 わかった。
「サンプルがなけりゃ何もできないようなやつにはマイクロソフト製品をお薦めします」
に訂正する。
>>698 メモリイメージで表示はできたんですけどね。
リンク先が調整できない。
HTML内の SRC= と書いた時のディフォルトのURLがHTML内のどこかに存在してるのかな。
だとすれば、出力する前にメモリ上のHTMLに書き足せばいいだけなんだけど^^;
about:file///e:\data\ 表示できないグラフィックをプロパティで見たらこんなURLに
なってるし...
>>704 なるほど、
これ頭にくっつけて出力すればたぶんOKですね。 THX
706 :
デフォルトの名無しさん :02/11/19 10:42
英語のアプリを、どうしても作らなければならなくなってしまい、 excite翻訳を使いながらなんとか途中まではできたのですが わからないので教えてください。 「ファイル」→「File」 みたいな感じで、「日付を指定」はなんと訳せばいいのでしょうか?
>>706 Date じゃだめナノ?
マニュアルにのっけるのか、ソフトに埋め込んでるのかわからないけど。
メニューバーなんだけど、 「date」だとちょっとまずいっす。 はぁ〜・・・。頭悪いとつらい・・・・ T oT)
何故「ちょっとまずいっす。」なのかの理由がわからないと、 話が続かないというオチになりますが。
710 :
デフォルトの名無しさん :02/11/19 16:30
こんにちは。 TListに項目を追加する前にGetMemしたポインタを解放する際、 今まではFreeMemしていたのですが、ヘルプを見るとCapacityプロパティを 減らしてもメモリを解放できることが書いてありました(TList.Deleteの注意書き)。 ソースを見るとCapacityはReallocMemしてましたが、FreeMemするときと どう違うのでしょうか? 結果として同じように使っていたメモリが解放されるのでしょうか?
>>710 Capacityが増やされたときFreeMemではまずいだろ。
だからReallocMem。
そいうことを聞きたいんじゃない?
Personal で ini の出力できますか? それに代替する手段でもいいんですけど……
>>712 Personalは使ってないからわからないけど、IniFilesユニットのTIniFileってないかな?
714 :
デフォルトの名無しさん :02/11/19 18:37
>>711 あー、そういう考えもありますね。
でもメモリ解放の相違が何か知りたくて。どっちでやっても同じく解放されるのか否か。
>>715 あるよ。
ソースの適当なところにTIniFileって打ち込んで、そこにカーソル合わせてF1押してみ。
あったです。F1 にはこういう使い方も…… あと、できれば例文1つくらい紹介お願いします。
>>714 ヘルプでReallocMemを探せば、その疑問は解決すると思う。
>>717 例えばWriteIntegerメソッドの例を見るとか。
720 :
デフォルトの名無しさん :02/11/19 19:11
<IniFileのテンプレート> procedure TForm1.Button1Click(Sender: TObject); var Ini: TIniFile; begin Ini := TIniFile.Create(ChangeFileExt(ParamStr(0), '.ini')); with Ini do begin try {ここにIniの読み書きを記述} //WriteInteger('Window', 'Width', Width); finally Free; end; end; end;
なんとかなりそうです。ありがとうござました
722 :
デフォルトの名無しさん :02/11/19 19:12
ずれたので修正 procedure TForm1.Button1Click(Sender: TObject); var Ini: TIniFile; begin Ini := TIniFile.Create(ChangeFileExt(ParamStr(0), '.ini')); with Ini do begin try {ここにIniの読み書きを記述} //Width := ReadInteger('Window', 'Width', Width); //WriteInteger('Window', 'Width', Width); finally Free; end; end; end;
ブラウザ作ってるんですけど、javaやスクリプトの有効無効、プロクシのONOFF 等の設定はどこをどのように弄ればいいんでしょうか。 レジストリを直接弄ってみたのですが、アプリケーションを再起動しないと有効に ならないのでどうしたものかと・・・
euromind にひさびさにアクセスしてみたら…… 消滅?
>>724 >javaやスクリプトの有効無効
TEmbeddedWBやTUIWebBrowserを使う。またはソースを参考にする。
>プロクシのONOFF
URLMkSetSessionOption
TListView の subitems の内容を書き換えるにはどうしたらいいんですか? いったん削除して追加する以外の方法はありますか?
>>729 ListView1.Items[i]:.SubItems[j] := 'hoge';
とかじゃなくて?
>>730 ありがとうございます、しかしそれだとエラーになります…。
あきらめて TStringGrid に変更しました。
>>731 もう諦めるのかよ・・・エラーの内容を教えてくれないかな。
あ、すみません、あれから随分手を加えて完全にTListViewの痕跡は消してしまったので 具体的なエラーの内容が確認できなくなってしまいました。 ヘルプを見ると、TListView.Itemsは "仮想モードで動作している場合は読み出し専用" とのことなので、 用語がいまいち分からないのですが、「仮想モード = デバッグ時のモード」と仮定すると、 単純にデバッグ時に書き込めないだけなのかもしれません。
>>733 仮想モードというのは仮想リストビュー(バーチャルリストビュー)のこと。
TListView.OwnerData が True だと仮想リストビュー。
この場合、リストビュー以外でデータを(あなたが)管理しているはずなので、
そのデータを書き換えれば変更できたはず。
>>726 有難うございました。
UIWebBrowserコンポーネントのインストールに四苦八苦しましたが、何とかなりそうです。
どーでもでした。
>>734 なるほど、勘違いでしたか。訂正ありがとうございます。
うーん、じゃあきっと書き換えの部分以外のどこかでアホなコード書いてたんですね…。
737 :
デフォルトの名無しさん :02/11/22 14:34
1Mぐらいのcsvファイルを読み込むのに 何秒くらいかかる?
738 :
デフォルトの名無しさん :02/11/22 15:42
sendkey32.pasを使って別のアプリに入力内容を送るのを作ってるんですが 送り先のアプリがエンターキーとテンキー側のエンターキーで動作が違う 作りになってるんです。 で、この区別って仮想キーコードではできないんですか?
program fudoudyouduu(output); const n = 100; h = 1/n; var sum : real; count : integer; begin count := 0; sum := 0.0; while count < n do begin sum := sum + h; count := count + 1; end; writeln('sum = ', sum) end. 上のプログラムを利用して、 nを1から10000の値で変化させた時の 計算で求まる和をそれぞれSnとしたとき Snと1との差|1−Sn| を表示するプログラムを作りたいのですがどのようにしたらよろしいでしょうか。 浮動小数点の問題です。
740 :
デフォルトの名無しさん :02/11/22 16:50
質問です。 TGraphicのインスタンスの中のデータに対して、TCanvasで定義されてる各種 画像操作をしたいんですけど、どうすればいいのですか? よろしくお願いします
>738 もしかしてその動作させてるマシンのキーボード、Enter と「実行」キーじゃないか? であれば仮想キーコード違うけど。 ちょっと試したけど、同じコードが帰るのが普通だし、ShiftState も違わんし。
742 :
デフォルトの名無しさん :02/11/22 18:57
>>741 対象マシンは富士通のFMVです。
普通のパソコンです。
元々のプログラムはオフコンで動いてたのをそのまま移植した物なのでキー操作がオフコン仕様なんです(^^;
ソフトは取引先からの貸与なんですが、同じ伝票を2度打ちしないといけない仕様なんで、
楽をするために打ち込みプログラムだけ作ってます。
で、フルキー側のEnterで伝票登録、テンキー側のエンターで次行に移動とゆう頭の痛い作りなんで
普通にVK_RETURNを送ってしまうと伝票登録になってしまうんです。
毎日数百枚打ち込むんでこれが出来れば作業が半分になるんですが。
743 :
デフォルトの名無しさん :02/11/22 19:01
キーボードがオフコン仕様になってるわけじゃないのか……? まさかキーボードドライバがオフコン仕様とか(爆) ためしに、その対象マシンで、どんなキーコード出しているか調べてみればいいんでは。 それだけなら五分もあれば作れるだろうし(w #Form.OnKeyDown で Key を Label かどっかに出力させるプログラムを書いて、動かしてみれ
そのマシン上で、実際にフルキーの Enter とテンキーの Enter で、どんなキーコード送っているか 調べてみるとか。 #実はキーボードドライバがオフコン仕様です、とかいう罠だったりして……
745 :
デフォルトの名無しさん :02/11/22 19:05
ここで聞いてもいいかわからないのですが、やさしいモナーがいるすれなので聞きます。 GridBagLayoutの使い方がよくわからないのですが、何かいいサンプルはないでしょうか? よろしくお願いします。
GridBagLayout って Java.awt だよね? ここは Delphi質問スレ。 適当な Java スレに逝ってくれ。
キーボードとテンキーのEnterは確か GetKeyState で判別できたはづ 検索したら、VK_SEPARATORてーのがあったが、これじゃない? 恐らくSetKeyboardState あたりで指定できると思われ
おかしいな、投稿したはずなのに…どっかに誤爆したかな。
>>744 両方とも#13でした。
>>747 VK_SEPARATORを送っても何も起こりませんでした。
SetKeybordStateは明日試してみます。
過去スレのどこかで、C++のSTLみたいなのをDelphiで試みているライブラリへのリンクが あったと思うんだけど、どこだか忘れてしまったので貼ってくだされ。
var p:Pointer; GetMem(p,size); で確保したpのメモリ領域に対して、 BlockRead(var F: File; var Buf; Count: Integer); を使ってファイルからデータを読み込みたいのですが、どうしたらいいんでしょう? BlockRead()の2つ目の引数に、変数ではなくアドレスを渡す方法が知りたいのです。
p^ かByte(p^)とか つかTFileStream使え
delphi ver6 無償版のライセンスキー取得ページがエラーになって,入れません。
753 :
デフォルトの名無しさん :02/11/23 20:02
755 :
(・∀・)ピョルァ :02/11/23 21:48
delphi6を昨日から始めた超初心者です。 windowsに付属しているメモ帳みたいなものを 作っているんですけど以下のプログラムを教えてください。 いろんなサイトをまわったりヘルプを読んでみたりしましたが 警告文もなしですぐに上書きされてしまうなど 不完全なプログラムばっかりだったので。。 ・ファイルを開く ・新規作成 ・名前を付けて保存 ・上書き保存 ・印刷 ・ワードについているような文字数のカウント よろしくお願いします。
・Memo.Lines.LoadFromFile(FileName) ・Memo.Clear() ・Memo.Lines.SaveToFile(FileName) ・Memo.Lines.SaveToFile(FileName) ・Printer ・Length(WideString(Memo.Lines.Text)) 警告はMemo.Modifiedを参照してダイアログ出せばいい。
>>755 >・ファイルを開く
Memo1.Lines.LoadFromFile('Damepo.txt');
みたいな感じでガンバレ。
>・新規作成
ファイルを開かずにいきなり書き始めれば新規作成と同じだろー
>・名前を付けて保存
TSaveDialog辺りでヘルプを見れ。
あとは
Memo1.Lines.SaveToFile(SaveDialog1.FileName);
見たいな感じで。
・上書き保存
FileExists ってゆー便利な関数があるから、それで古いファイルの有無を
確認しる。
>・印刷
俺も詳しく知らないからパス
>・ワードについているような文字数のカウント
Length(Memo1.Lines.Text);
ただし改行が二文字にカウントされる諸刃の剣
>>751 pはPointer型だから、p^はエラー出ないか?
PChar(p)^ とか、 PByte(p)^ にしる!
759 :
(・∀・)ピョルァ :02/11/23 22:03
>>756 >>757 ありがとうございます。
やってみます。(む、難しい(´・ω・`)ショボーン
>>759 調べながらやってみ。
本当にわからんとこをピンポイントで質問しないと効率悪いよ。
761 :
(・∀・)ピョルァ :02/11/23 22:21
>>758 p^は何にも代入互換がないだけで有りだよ。
>Length(Memo1.Lines.Text); >ただし改行が二文字にカウントされる諸刃の剣 Memo1.Lines.Countでなんとでも調整できるべ
764 :
(・∀・)ピョルァ :02/11/23 22:32
メインメニューの中の編集(&E)というところに 文字数カウントという項目を作りそこをダブルクリックして 以下のプログラムをbeginとend;の間に書いてF9してみたのですが ・未定義の識別子 :'sTrDate' ・未定義の識別子 :'Label1' ・互換性の無い型です ・未定義の識別子 : 'Label2' ・互換性の無い型です と言うふうにDelphiに怒られてしまいます。 良かったら教えてください。よろしくお願いします。 strData := 'Delphiデルファイ'; { バイト数 } Label1.Caption := IntToStr( Length(strData) ); { 文字数 } Label2.Caption := IntToStr( ByteToCharLen(strData, Length(strData)) ); わかりにくかったら(・Α・)ゴメンナサイ
>>764 ・変数は宣言しよう
(strDateとstrDataは別の変数)
・ラベルをフォームに貼り付けよう
いじょ
766 :
(・∀・)ピョルァ :02/11/23 22:45
Var strData; Label1; Label2; procedure TForm1.N8Click(Sender: TObject); begin strData := 'Delphiデルファイ'; { バイト数 } Label1.Caption := IntToStr( Length(strData) ); { 文字数 } Label2.Caption := IntToStr( ByteToCharLen(strData, Length(strData)) ); end; end. と書いたのですが、できません、何が原因なのでしょうか? (´・ω・`)ショボーン
767 :
(・∀・)ピョルァ :02/11/23 22:49
すいません Varの Label1 Label2 というのは無視してください。
>>766 >Var
>strData;
>Label1;
>Label2;
ここんとこが間違い
ラベルをフォームへ2つ貼り付ける
(Label1、Label2という名前が勝手につく)
変数宣言には型の指定が必要
var
strData: String;
var strDATA :string; ではないかと
>>766 Label1とかは、varで宣言するんじゃなくて、フォーム(実行したときのメインの
ウィンドウの事ね)に貼り付けるんだよ。そうすると勝手に宣言される。
上の方に出てる、コンポーネントパレットの[A]と出てる奴を押して、フォームの
適当な所をクリックすると、Label1ってのが作られる。二個目はLabel2になる。
strDataはちゃんと文字列型として宣言するべし。
var
strData: String;
とね。
あとグロバル変数使うな。
771 :
(・∀・)ピョルァ :02/11/23 22:57
>>786 >>789 >>790 ありがとうございます。
言われた通りにやってみたら
エラーなくできました。
でも文字数のカウント押しても
何も出なくて虚しいです。どうしてでしょうか・・。(´・ω・`)ショボーン
>>773 そうなっちゃいますね。
すいません(藁
ちゃんと Label1 と Label2 はフォームに張り付けてある?
正直、↓から始めた方が良いと思われ・・・ program Project1; {$APPTYPE CONSOLE} uses SysUtils; begin Writeln('Hello, World!'); end.
正直Delphiで↑は無駄だと・・・ せめてLabel1.Captionから・・・
>>775 はい。貼りつけたんですよ。
だから
Label1・Label2
の未定義エラーは出なくなりました。
>>776 一応、今日の朝やりました。
へぼですいません…(´・ω・`)ショボーン
誰か即席で初心者向け解説サイト作ってくれ
>>779 作ろうと思いつつ、既に2年の月日が・・・
>>778 >一応、今日の朝やりました。
>へぼですいません…(´・ω・`)ショボーン
まじ?
普通の人は ShowMessage('Hello') から始めるんだが、 Writeln('Hello') から始めるとは・・・
君、見込みあるよ、頑張って立派なDEL厨になってくれ。
782 :
デフォルトの名無しさん :02/11/23 23:20
自分も初心者向けサイトきぼんぬ 神は現れるか?? 期待age
>>781 あっそうなんですか。ありがとうございます。
どこかのサイトを参考にしてやったんです。
確かにShowMessageが一番簡単ですよね。
>>783 フサギコって、こういうテンプレをあらかじめ用意して待機してるのか・・・流石だ。
Delphiユーザって変態が多いから サイト見てもよく分からないんだよな。
目次だけ作るから誰か中身きぼんぬw 〜独習Delphi〜 第一章Delphiの基礎 ・Delphiの歴史 ・オブジェクト指向とは ・最初の簡単なプログラム ・プログラムの要素 第二章データ型 第三章 というか独習C#のパクリで。
789 :
デフォルトの名無しさん :02/11/23 23:37
漏れもきぼんぬ、きぼんぬ。藁 788の目次 ・最初の簡単なプログラムのなかで テキストエディタ ペイント(windowsに入ってるような簡単なのでもOK ぐらいは(゚Д゚)ホスィ
790 :
デフォルトの名無しさん :02/11/23 23:38
神が現れること 期待age
Del厨って他人まかせでちゅね
792 :
(・∀・)ピ;ヨルァ :02/11/23 23:48
何度もすいません。 これで合ってますでしょうか? 文字数カウントのプログラム procedure TForm1.N8Click(Sender: TObject); Var strData: String; begin strData := 'Delphiデルファイ'; { バイト数 } Label1.Caption := IntToStr( Length(strData) ); { 文字数 } Label2.Caption := IntToStr( ByteToCharLen(strData, Length(strData)) ); end;
本くらい買えよなぁ
>>783 のサイトの作成者も、入門者に分かりやすく説明するために
努力してるんだよ。ちゃんと読めば、それなりに分かるはず。
それでもダメなら、才能がないことを悟って、別の道へ行くべし
___ ._______ | || / ∧ ∧ 。 O ○ がんばってね __ミ゚Д゚,,彡_ \ |__⊂ ノノつ__||  ̄ ̄ ̄ ̄ ̄ ̄ ̄ .ミ ノノミ .∪∪| | || |__|| / ヽ\ | ̄ ̄ ̄|  ̄| /..†ΨΨ† ヽ \ 紹介したサイトをしっぽりみて勉強して そいで、わからなかったら 質問してみると、きっといろんな人が 助けてくれるよ。
初心者向けサイトを作ろうかと思った人は多いと思うのだが、 更新をシステム化しないと面倒でやめちゃうんだよね。
じゃ、まず自動更新ソフトを作ってください。
800ゲト
801 :
デフォルトの名無しさん :02/11/24 00:54
画像キャプが面倒くさい訳で
803 :
デフォルトの名無しさん :02/11/24 01:02
独力でやるのはちょいときついやね。>初心者向けサイト Wiki のように他の人の力を借りてページを更新できる 仕組みを作ったほうがいいのかもしれない。
んじゃDel専用のTiki立ててくれよ。 前にもあったけどYukiWiki使いづらいし 他の言語も混ざってていまいち機能してなかったよ。
>>802 そのために、クリップボード監視して、新しいイメージが挿入されたら指定ディレクトリに
連番でPNGで保存していくソフト作ったところでページ作成断念>俺
WinShotがお勧め
>>749 それ出したの多分俺だ。
ただ、ドキュメント見ただけで使ってないし、更新止まってるみたいだからなんともいえない。
ぜひ評価して感想よろしく。
DECAL
http://www4.kcn.ne.jp/~corocoro/action/action.html で、検索で今度はこんなの見つけた
DCLX is a free library that provides ArrayList, LinkedList, Vector, HashMap, HashSet, ArraySet, Queue and Stack structures to Delphi/Kylix. It also provides algorithms like in STL (Apply, Found, CountObject, Copy, Generate, Fill, Reverse, Sort...).
http://sourceforge.net/projects/dclx
810 :
デフォルトの名無しさん :02/11/24 02:58
お前らスミマセン教えて下さい。 IdHTTP1.Get(Edit1.Text); したいときEdit1.TextのURLが存在しないとき、エラーダイアログが出ます。 これを非表示もしくはEdit1.TextのURLが存在するかチェックしてエラーを誰 もいない環境でスルーしたいのですが、誰か知ってる方お願いします
>>810 try
IdHTTP.Get(edit1.text);
exception
//IdHTTP. ResponseCode;
end;
>>812 ぜひ立ててください。ちょっとはお手伝いできるかもです>Delphiサイト
PukiWikiというのは知りませんでしたが画像を展開して表示できて
Delphiのコードが簡単に書ける(変に解釈されない)ものがいいですね。
xreaの垢ホスィ...
帰ってきました。 早速かっこいいバグ報告ページができてますね。すげぇ。 画像Upload掲示板が要りそうなので別に設置します。 一応PukiWikiだけでもアップロードはできるんですけど、あまり使い勝手が良くないので。 今考えているのは ・初心者向けの一通りの解説 ・VCL使用サンプル(magic of delphiみたいなの。) ・IndyやTRegExprのヘルプの日本語訳(これ、やろうと思ってたんでぼちぼち自分でも追加します。) ・お勉強ページ、批評ページ、Delphiで作られたアプリへのリンク などなど。欲張りすぎるとアレですが。このうちいくつかはどうせ自分でも作ろうと思ってたんで (思ってただけで全然進んでいないんですがw) 皆がちょこちょこ書いてくださればなかなかのものができるんではないかと。
あれはバグではない、と思うんだけど。 コモンダイアログの仕様じゃないの? ってコメントはどうつけたらいいのかな?
単にそのページ逝って編集押して書き加えればOK
コメントのつけ方をどうするか。って話。 今のままだと、バグレポートだけでひとつのページでしょ? 使い勝手悪くない?
なんでリンクのページの左側が細くなってるんだろう・・・
>>821 googleリンクの所為だろうけどかっこわるいね。
ブラウザ大きくすると大丈夫ではあるけど 文字列にリンク先埋め込めないの?
[[リンク先名:URL]]で埋め込めます。 Google検索はURL自体は重要じゃないだろうから埋め込んじゃいました。
825 :
デフォルトの名無しさん :02/11/24 18:49
ageとく
このスレのFAQページ作ていい?
Delphi関係ならなんでも大歓迎。
会社から書き込みたいんだけど、IP とかってどういう扱い? 微妙な会社組織からの書き込みになるので、サーバー管理者以外には 書き込み者の IP アドレスが表示されなければいいな。っと。 ざっと見た限りでは大丈夫そうですが。
カウンターなどでIPを区別に用いることはあっても 表示することはありませんのでご安心ください。 さて、TRegExprの勝手に日本語訳を作ってみるかな。
何人くらいが修正に参加しているんだろう。 お疲れ。私は寝ます。また明日。
831 :
デフォルトの名無しさん :02/11/24 23:19
>>811 試しにコンパイル…
ウマクイッター!!!
恥ずかしくもありがとうございました。
ホントスミマセンでした。
戸田っちはちゃんと手伝ってくれるんだろうか?>wiki
吐駄ちゃんに教えたの? ダイアルアップだから編集できないんじゃ?
834 :
デフォルトの名無しさん :02/11/24 23:38
ライセンスキー取得できないのは俺だけか?
836 :
デフォルトの名無しさん :02/11/24 23:52
月曜9時過ぎになれば復旧しているよ。きっと
839 :
デフォルトの名無しさん :02/11/25 01:22
キャプ画やソースのうpってanonymousなFTP使える無料webサーバみたいのじゃ駄目なん?
かまいませんが、外部からのリンクが禁じられていたり 画像置き場にするのはダメだったりとかでなかなか難しいんですよね。 ftpが一番楽ではあるんですが。
ブビ厨に荒らされたりしないんだね。
良い具合に育っていってるみたいだね。よきかな。 >PukiWiki
参加したいけど使い方が良く分からないよ・・・ 勝手に編集していいの? でもそれだと荒らされないの? 荒らす意思がなくても、主義主張の対立で結果的に荒れちゃうってことは? 余計な心配なんでしょうか???
>>843 Wikiは荒らしたりはしないという性善説に依って成り立っています。
荒らしを恐れるよりも多人数でページを作り上げていく
メリットの方が重要であるのだと思います。
万一に備えて定期的にバックアップは取っている、筈。
だからどうぞ勝手に編集してしまってください。
# さしあたって、あなたの質問と私の解答を書いてみるとか。
私見ですが、Wikiは主義主張をぶつけあう議論の場には
向いていないように思います。そういうのはここでやりません?
>>844 なるほど・・・
2chのような性悪説の世界で、そのような性善説を前提とした企画が生まれたことに
ちょっと感動してみたりして・・・
すてきですね ∧,,∧ ミ,,゚Д゚ミζ ミ つ旦 〜と,,,~),,~)
いつのまにか「Wikiって何」というページが出来てますな 作ってくれた人ありがと。すてきです
>>845 2ch って、性善説の人のかたまりだと思うよ。
性善説の人が正しいことを行うとは限らない。というだけ。
>>847 私を含めて少なくとも3人が修正/変更しているのね。
TShiftState が WikiName としては ShiftState となってしまって、先頭の T が落ちてしまいます。 連続する大文字は WikiName とは見なさないのですね? どうにかならないかな?
>>848 で、性悪説で世の中を見ているのが吐駄や中村。
>>852 フサギコスレかWikiスレに移動しない?
そろそろスレ違いの気配が。
それもそうですね。 以降基本的にWikiの話題はWikiの雑談かミ,,゚Д゚彡談話室で。 スレ汚しすみません。
雑談使えばいいじゃん。
WebBrowser で質問です。 こんなことできるのでしょうか? このブラウザ内に読み込まれたHTMLに書かれているjavascriptですが、 1 プログラム側から呼び出すことはできるのか? 2 HTML内で宣言されたファンクションにコールバック設定をして、HTMLのトリガを受け取ることができるのか? 3 変数の読み出しはできるのか? 1.2は無理でもせめて3ができると嬉しいのですが....
tiffからjpg tiffからpng 上記の変換をするソフトを作成したいのですが、 フリーのDLL等ありますでしょうか? また、無いとしたらソフト内で処理するとして、 参考になるようなサイト等教えていただきたいのですが。 よろしくお願いします。
susieとか
メモ帳に検索機能をつけたいんですけど どういう風に書くか教えてください(゚Д゚) よろしくお願いします。 できれば Varに〜書いて… begin〜end;にこう書いてと詳しくお願いします。 超・初心者なので(;´∀`)
googleで検索してソースひっぱてきてもエラーばっかり出ちゃいまして。。 (´・ω・`)ショボーン
863 :
デフォルトの名無しさん :02/11/26 22:28
漏れも、メモ帳作ってますYO
864 :
デフォルトの名無しさん :02/11/26 22:29
メモ帳って日付と時刻ってのがあって それを押すとエディタの部分(白いとこ)に 時刻が出るよな?あれをDelphiでやるには どうしたらいいんでつか。
865 :
デフォルトの名無しさん :02/11/26 22:35
メモ帳作成って以外と難しいのかな。(・∀・)スンスン
おまえらどうしようもないちんちんだな。
>>858 1と2は分かりません。単なるDocumentのクリックイベントとかでもプログラムで
取得するのは非常に面倒です。。
3は、なんかのタグに変数を入れれば読み出せないかな?
やってないからわからんけど。
868 :
デフォルトの名無しさん :02/11/26 23:11
コンポーネント化についての説明があるHP教えて!検索しても見つけられないYO
869 :
デフォルトの名無しさん :02/11/26 23:15
GridBagLayoutの使い方が難しくてわかりません。 簡単なサンプルを作ってもらえないでしょうか?
870 :
デフォルトの名無しさん :02/11/26 23:21
>>866 あわれだから乗ってあげるよ!
ってことで
オマエモナー(;´∀`)
>>861 var
Index: Integer;
begin
//メモのテキストのKotobaの位置をIndexに入れる
Index:=AnsiPos(Kotoba, Memo1.Lines.GetText);
//メモの|の位置をIndexにあわせる
Memo1.SelStart:=Index;
//Kotobaの長さの分だけ選択する
Memo1.SelLength:=Length(Kotoba);
end;
875 :
デフォルトの名無しさん :02/11/27 11:02
フォームの高さだけを最大にしようと思い Form1.Top := 0; Form1.Left := Screen.Height; としたのですが、これではタスクバーまで隠れてしまいます。 Screen.Heightからタスクバーの高さを引くにはどうやったらいいのでしょうか?
>>875 タスクバーは下だけじゃなく 上や左右にも配置出来るよ
>>876 あっそうか、、全く考えてませんでした。。いろいろコード書く前に
教えてもらえて助かりました。
>>877 GetSystemMetricsを使えばいいのかな?調べてみます。
ありがとうございます。
アルゴリズムってなんですか?
>>872 ありがとうございます。
早速やってみたのですが
未定義の識別子 result
Delphiに怒られてしまいました。
どうしたものか。
誰か教えてください。
>>883 遅くなりました。
下記が例のソースです。
ちなみに文字の検索。
var
Index: Integer;
begin
//メモのテキストのKotobaの位置をIndexに入れる
Index:=AnsiPos(Kotoba, Memo1.Lines.GetText);
//メモの|の位置をIndexにあわせる
Memo1.SelStart:=Index;
//Kotobaの長さの分だけ選択する
Memo1.SelLength:=Length(Kotoba);
end;
すいませんまちまがえました。 未定義の識別子と言われたのは kotobaでした。 Memo1.SelLength:=Length(Kotoba); は互換性の無い型だそうです。(´・ω・`) (・∀・)ドウシヨウ。
>>884 Kotobaってのばvar節で文字列型の変数で宣言しておかないと。
あるいは手続きの引数にするか。
procedure weojt(Kotoba: String);
var
Index: Integer;
begin
//メモのテキストのKotoba以下略
>>互換性の無い型だそうです 意味わかんねえのか?・・・まさかな。
>>886 ありがとう。
>>887 はい、意味はわかります。藁
ただ、それにどうやって対処しようかと。
アオルノ(・∀・)イクナイ!
いや、アオルつもりはなかったんだが(w 意味わかってたら、自分であれこれ対処方法考えるのが普通じゃないかと思ったのよ(あおってないよ(w)
>未定義の識別子と言われたのは >kotobaでした。 まず、ネットを切って。コンパイラが "kotoba" という変数かなにかなんて知らないよ。 って言っているんだから、そこから直さなきゃ。 ほんとに kotoba は存在するの?綴り間違っていない?
892 :
デフォルトの名無しさん :02/11/29 09:49
メモ帳を作っているのですがメニューの編集の”右端で折り返す”が機能しません。 どうすればいいのでしょうか? procedure TForm1.mnuWordWrapClick(Sender: TObject); begin if mnuWordWrap.Checked then begin mnuWordWrap.Checked:=False; Memo1.WordWrap:=False; end else begin mnuWordWrap.Checked:=True; Memo1.WordWrap:=True; end; end;
894 :
デフォルトの名無しさん :02/11/29 13:32
最近delphi始めたんですけど、ポインタを使う利点ってなんですか。
それでも動くと思うんだが。 procedure TForm1.mnuWordWrapClick(Sender: TObject); begin mnuWordWrap.Checked:=not(mnuWordWrap.Checked); Memo1.WordWrap:=mnuWordWrap.Checked; if Memo1.WordWrap then Memo1.ScrollBars:=ssVertical else Memo1.ScrollBars:=ssBoth; ShowMessage('Memo1.WordWrapは'+BoolToStr(Memo1.WordWrap, true)); end; うちでは動いた。
レス先書き忘れた。895は892へのレスね。
>>894 WindowsのAPIを呼び出すときに必要になることが多いけど
それ以外はDelphiの言語仕様がポインタを隠蔽しているから
始めたばかりの人は気にしなくてもいいよん
898 :
デフォルトの名無しさん :02/11/29 13:45
下のような関数を作ってOSの種類を取得することは出来た(?)のですが Servis Packの種類を取得するにはどうやったらいいのでしょうか? dwBuildNumberが何か関係してるのでしょうか? var OSver : TOSVERSIONINFO; begin OSver.dwOSVersionInfoSize := SizeOf(OSver); GetVersionEx(OSver); case OSver.dwPlatformId of VER_PLATFORM_WIN32s: Result := 'Windows 3.1'; //VER_PLATFORM_WIN32s Win32s on Windows 3.1. VER_PLATFORM_WIN32_WINDOWS: //VER_PLATFORM_WIN32_WINDOWS Windows 95, Windows 98, or Windows Me. begin case OSver.dwMinorVersion of 0{95}: Result := 'Windows 95'; 10{98}: Result := 'Windows 98'; 90{Me}: Result := 'Windows Me'; end; end;
899 :
デフォルトの名無しさん :02/11/29 13:45
続き VER_PLATFORM_WIN32_NT://VER_PLATFORM_WIN32_NT Windows NT 3.51, Windows NT 4.0, Windows 2000, Windows XP, or Windows .NET Server. begin case OSver.dwMajorVersion of 3{3.51}: Result := 'Windows NT 3.51'; 4{4.0}: Result := 'Windows NT 4.0'; 5{2000, XP, .NET Server}: begin case OSver.dwMinorVersion of 0{2000}: Result := 'Windows 2000'; 1{XP or .NET Server}: Result := 'Windows XP'; end; end; end; end; else Result := 'Windows??'; end;
900 :
デフォルトの名無しさん :02/11/29 13:46
>>892 mnuWordWrap.Checked := not mnuWordWrap.Checkd;
Memo1.WordWrap := mnuWordWrap.Checked;
Memo1.Invalidate;
横スクロールバーだしてるとワードラップが働かないような。
>>898 SysUtils の
Win32MajorVersion
Win32MinorVersion
Win32BuildNumber
Win32CSDVersion
使うのはだめか?
>>902 ありがとっす。
ML検索したら上に書いたようなのが出てたので
898-899のような感じで関数書いたのですが
902に書いてあるのでも調べてみます。
>>902 ああ、こういう簡単な方法があったんすね。。
こっちでML検索した方がありそうだ。
ML 検索なんて止めた方がいいよ。
理由なき批判は煽りにすらならない
Delphi6 personalで作成したプログラムを配布したいのですが、 exe にはどの程度個人情報が含まれているのでしょうか?
>>907 何一つ残らず漏れる。住所も電話番号も。
ご回答ありがとうございます。 一度小さなプログラムを他の人にあげたことがあるんですが、 その後、生理の日を当てられてびっくりしたことがあって どうしてなのか不思議に思っていたんですが、バレていたんですね。 これからはコンパイル前には脇の処理を忘れないようにしたいと思います。
しまった、俺が見事に釣られた
Σ(´д`;)
>>907 マジレスすると。
通常は個人を特定するようなものは残らない。
あえてあると言うとすると、RTTIによる列挙型名とかクラス名とかか。
命名規則の癖がわかってイヤン、とか。
あとは、インターフェスに埋め込んだGUIDとか?気にしすぎかこれは。
マジレスさんきゅです。 あらかじめバイナリエディタで一通り見ていたので、 名前がそのまま含まれることについては分かっていました。 安心するために確認で質問してみたのですが、 もし907の質問の答えとして、有名な方法が存在するなら かならず鼻息荒く嬉しそうに教えてくださる方がおられると予想できるので 908の回答で私にとっては必要十分なんですよ〜。 とぼけた回答が返ってきた時点で正解は推測できます。
ImageにDXF形式の図(AutoCAD?)を読込みたいのですが、どうしたらいいでしょうか?
915 :
デフォルトの名無しさん :02/11/30 22:44
DelphiアプリからDLLを動的に呼びたいんですが、 アプリの起動時にロードして、終了時にアンロードしたいと思ってます。 fromのOnCreateイベントでロードして、 OnCloseイベントで開放したかったんですが、 アプリ終了時にOnCloseイベントが起きなかったんです。 アプリが起動する時と終了する時のイベントを教えてください。
>>915 OnDestroy。
ちなみにApplication.TerminateではなくApplication.MainForm.Closeでメインフォームを閉じて終了させればOnCloseは起きる。
917 :
デフォルトの名無しさん :02/12/01 00:48
918 :
デフォルトの名無しさん :02/12/01 01:30
ImageListに 2つイメージを入れました。で、 1つのTBitBtnに、ボタンを押したタイミングで2つの画像を交互に表示させたいのですが、 ImageList.GetBitmap(0, BitBtn.Glyph); って書くと、一回目はちゃんと画像が表示されるのに、2回目以降は画像が変わりません。 BitBtn.Repaint; ってやってもダメでした。どうやったら画像を入れ替えられるのでしょうか。 おしえて先生。
919 :
デフォルトの名無しさん :02/12/01 01:59
このスレの存在を知らなかったage
var BM:TBitmap; begin BM := TBitmap.Create; try ImageList1.GetBitmap(0, BM); BitBtn1.Glyph.Assign(BM); finally BM.Free; end; end;
>>920 先生
うぎゃー、動いたです!
ありがとうございますた!
922 :
デフォルトの名無しさん :02/12/01 15:49
hFile: THandle; strWriteBuf: String; intWriteLen: Integer; intWrite: Integer; と宣言して、 hFile、strWriteBuf、intWriteLenに値をセットして、 WriteFile(hFile, PChar(strWriteBuf)^, intWriteLen, intWrite, nil); と呼び出したんですが、 「変数実パラメータと変数仮パラメータとは同一の型でなければなりません」 とエラーが出てしまいます。 WriteFileの3番目のパラメータをポインタで渡さないといけないのでしょうか? 書き方を教えてください。
924 :
名無しさん :02/12/01 15:56
すみません。質問させていただきます。 サーバーを使わずに他パソコン:Aに繋いで、Aから 何かファイルを取得することはできるのでしょうか? 教えてください。
>>924 Aかもう一方がサーバになれれば可能。
っていうか根本的に何かを理解してないみたいだから基礎からやり直せ。
926 :
名無しさん :02/12/01 16:05
>>925 どのようなプログラムを組んだらよいのですか?
具体的でなくてもありがたいです。
何したいか知らんので一般系 C/S [クライアント]-----伝送路------[サーバ] P2P [サーバント]-----伝送路------[サーバント]
928 :
名無しさん :02/12/01 16:25
例えば、a:「c:\マイドキュメント¥test.exe」を自分のパソコンに ダウンロードするというプログラムです。 ソースが知りたいのですが・・・。お願いします。
ftp,wget使え。つか「サーバ」を使わずに落とすなんて不可能。
C/S(クライアント/サーバー)
931 :
デフォルトの名無しさん :02/12/01 17:55
Delphiってイベントハンドラ複数登録できんの?
>>932 うーん。残念。
VB6はできるのに とか煽ってみるテスト。
>>933 使う局面あるか?と。
なんなら複数のハンドラを保持しておけるクラス作ってそれらを順次実行するメソッドを
イベントハンドラとして登録するとか。
>>934 な〜んも考えてないでぽちぽち落としたコンポーネントを継承することなく
既存のコードの修正を最小限にして外部のコードで動作をカスタマイズしたいとき。
> なんなら複数のハンドラを保持しておけるクラス作ってそれらを順次実行するメソッドを
> イベントハンドラとして登録するとか。
まっそういう仕組みを作ればいいんだけど、な〜んも考えてないでぽちぽち
落としたコンポーネントにはこの方法は使えんのよね。
937 :
名無しさん :02/12/01 18:38
自宅サーバーは月々お金がかかるのですか?
↓次の質問をどうぞ↓
誰か
http://kakinotane.s7.xrea.com/の もぐらたたきゲームを作った人はいまつか?
もしいたらもぐら叩きを作ってみよう その3内の
図形の重なりのプログラム。
var
x1, y1, x2, y2: Integer;
begin
if (x1 < x2+10) and (x1+10 > x2) and
(y1 < y2+10) and (y1+10 > y2) then
begin
// 図形が重なっていれば、ここに記述したプログラムが実行されます。
end
else
// 図形が重なっていなければ、ここのプログラムが実行されます。
end;
をどこに書くか教えて( ゚Д゚)ホスィ
よろしく。
> if (x1 < x2+10) and (x1+10 > x2) and なんか分かりにくい記述だな・・・ if Abs(x1-x2)<10 じゃイカンの?
>>928 よくわからんが、他のパソコン:Aってのは自分で持ってる
パソコンなんじゃないの?
もしそうならネットワークドライブの割り当てでAのPCのC:を
取得先:BのF:とかに割り当てる。
後はCopyFile関数を使えばいいよ
>>881 アルゴリズム algorithm
一般に,問題を解くための処方.特に,コンピュータ向きの解法.算法と訳す.
(後略)
――奥村晴彦著『C言語による最新アルゴリズム事典』より
私はこの本を読むまでちゃんと説明できなかった….
> 一般に,問題を解くための処方.特に,コンピュータ向きの解法.算法と訳す. これはアルゴリズムについて何かを説明している、というより、たんに言い換えて いるだけでは? 処方とか解法とかって、なによ?
>>943 じゃ、処方・解法を処理手順に読み替えて。
アルゴリズムをプログラミング言語で具体的に記述したものが
プログラムだよ。
>>944 に従うと
アルゴリズム = 問題を解くためのコンピュータ向きの処理手順
うーむ、なにか分かった?
946 :
デフォルトの名無しさん :02/12/02 02:57
質問です。
WebBrowserコンポーネントでPOSTしようと思うんですが、
var
Flag ,TFN ,PD :OleVariant;
begin
PD := 'a=うふふ&b=あはは';
WebBrowser.navigate('
http://hoge/ ',Flag,TFN,PD);
end;
これだと上手くいきません。
PDが具体的にどういった形式にすればいいかヘルプにも書かれてないんで悩んでます。
パシっとデータがPOSTされるようにどなたか教えてください。おながいします。
>>946 MLの[Delphi:55344]を参照しる!
>>947 エクスクラメーション付けるようなことか?
他人が質問して他人が答えてるんだろ?
お前はその人がやった功績をなぜ胸を張ってえらそうに語るんだ?
951 :
デフォルトの名無しさん :02/12/02 09:19
DreamMemoってどうよ?
treeviewに既にnodeがある時に、 動的にnodeのルート(一番上)にnodeを追加したいのです。 Addだと一番下に追加されちゃいます。 教えて先生
ありがとうございます。
早速[Delphi:55077] Re: バイト配列について
あたりを参考にやってみたんですが、
type
ByteArray = array of Byte;
var
Flag ,TFN ,PD :OleVariant;
OleBArray : OleVariant;
pb : ^ByteArray;
Count : Integer;
btWork : Byte;
begin
PD := 'a=うふふ&b=あはは';
OleBArray :=VarArrayCreate([0,Length(PD) - 1],varByte);
pb:=VarArrayLock(OleBArray);
Count := 0;
//
//↓ここでつまづいた
while ByteFile.Read(btWork, 1) = 1 do begin
pb^[Count] := btWork;
Inc(Count);
end;
VarArrayUnlock(OleBArray);
WebBrowser.navigate('
http://hoge/ ',Flag,TFN,pb);
end;
う〜ん、具体的に文字列から一バイト取り出せばいいんですよね?
情報が点在しまくってて五里霧中です・・・
ミ,,゚Д゚ミつ
>>954 TTreeViewのItemsのItemの中から
levelが0のTTreeNodeを見つけて
それに対して
TTreeViewのItems.Add(TreeNode, '文字')
でやるんじゃないでしょうか。
>>956 デキタ━━━(゚∀゚)━━━!!!
∧_∧ / ̄ ̄ ̄ ̄ ̄
( ´∀`)< フサギコタンありがとモナ♥
( ) \_____
| | |
(__)_)
Delphiちょっと触ってみてるんだけどさ、なんでDelphiって type TForm1 = class(TForm) private { Private 宣言 } public { Public 宣言 } end; ↑ここ(最後のend;の前)にスペースが入ってるの? typeの終わり、分かりづらくねぇ? 全体的にどこからどこまでが何する範囲ってのも分かりづらいけど。
>typeの終わり、分かりづらくねぇ? あの end; は type 節の終わりではなく、TForm1 宣言の終わりを示してるんで、 インデントはあれでよいと思います。
ちなみに type の終わりは end ではなく 別のtype/const/var/function/procedure とかです
あのー、関数とか手続きとかは、処理が終われば呼び出されたところへ戻り ますよね? イベントハンドラはどこから呼ばれてどこに戻るんですか。 たとえば、フォームのうえでマウスを動かすとOnMouseMoveとかが呼ばれますけど。
Windowsメッセージを受け取る ↓ VCLがイベントごとに振り分ける ↓ 登録されたハンドラ(OnMouseMoveとか)を呼ぶ ↓ VCLの残りの処理 ↓ メッセージループに戻る Pro版以上ならデバッグ版dcuを有効にしてトレースすれば一目瞭然
895,900,901 ありがとうございました、解決しました。
>>962 ありがとうございます!
>メッセージループに戻る
とは、このメッセージループから、VCLのコードを通して呼ばれていると。
最初の
>VCLがイベントごとに振り分ける
windowsメッセージからどうしてVCLのForm1あてのメッセージだと分かるんでしょうか
>>965 その本にはVCLのことも載ってるんですか?
>>955 スマートなやり方は知らないど、こんな感じで動きますた。
var
Contents: string;
BA: array of Byte;
i: integer;
Len: integer;
a, b: string;
Flag, TFN, PD: OleVariant;
begin
a := HTTPEncode('あはは');
b := HTTPEncode('うふふ');
Contents := 'A=' +a +'&B=' +b;
Len := Length(Contents);
SetLength(BA, Len);
for i := 0 to Len-1 do
begin
BA[i] := Byte(Contents[i+1]);
end;
PD := BA;
WebBrowser1.Navigate('
http://hoge/hoge.cgi ', Flag, TFN, PD);
end;
>>966 CでWindowsアプリを書くための本だから全く載ってない。が、
>windowsメッセージからどうしてVCLのForm1あてのメッセージだと分かるんでしょうか
は理解できるようになると思う。
>>968 ありがとうございました。紹介された本やWEBページなどで基本を勉強してみます。
とっかかりを教えてくれて、とてもうれしいです。
>>967 ありがd!
さっそく試しますた。
しかしHTTPEncodeが未定義のエラーでコンパイルが通りませんでした。ギャフン
パーソナル版ではHTTPapp無いのね…
今からIndyで書き直してみることにします(´・ω・`)
972 :
デフォルトの名無しさん :02/12/02 20:25
Internal Application Error 内部アプリケーションエラー Unable to complete network request to host "***.***.***.***". Error writing data to the connection. 既存の接続はリモート ホストに強制的に切断されました。 でアカウントとれないんですけど。
973 :
デフォルトの名無しさん :02/12/02 22:43
次スレ(屮゚Д゚)屮 カモーン
974 :
デフォルトの名無しさん :02/12/02 22:51
>>977 つぅか16進文字列変換だからスクラッチしても大した手間じゃないわけで。
>>978 その大した手間じゃない事が出来ない奴が増えてるんだよな
数年前に自前で四則演算出来ない奴が増えたなと思ってたけど、今は16進変換みたいな
簡単なレベルでつまづいてるみたい。
字刷れ・・・
>>979 生産性の向上は商業的には大切な要素だけど教育的には駄目駄目だな。と。
愚痴はフサスレで>ジジィ連中
んで、君はなぜ仕切りたがるのかな?
こっちは終わりだから駄文で埋めよう。 フサギコ Gが二つできちゃったけど、あれもそれぞれ次スレができていくんだろうなぁ。 マ板のフサギコBがまだ生き残っているし、どうなっちゃうか。楽しいけどね。 スレタイに Delphi.NET を入れてしまう。という手もあるかな? できれば DelWiki 専用スレが欲しいが、当分は間借りということになるのでしょう。
ケツの青い若造に煽られても、誰も動じないよ。ケケ
988
989
990
991
992
993
994
995
x
996
999!
ばーか
2get
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。