2 :
デフォルトの名無しさん :02/04/08 05:35
3 :
デフォルトの名無しさん :02/04/08 05:59
前スレの979が気になる・・・
オブジェクトインターフェースの事は過去ログを見るべし。 Delphi-MLも。
って、そういう事じゃない?
ぼくの肛門もDelphiで作られています。
>5 そういう事だと思われ
9 :
デフォルトの名無しさん :02/04/08 12:42
@@@@ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ (゜д゜@ < あらやだ。新スレおつかれさま。 ┳⊂ ) \__________ [[[[|凵ノ⊃ ◎U□◎ =3 キコキコキコ
I番げっとー!!!!  ̄ ̄ ̄ ̄ ̄ ̄ ̄|/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ \ ∧,,∧ ミ゚Д゚,,∩ ⊂;゙ ,ミ ←  ̄  ̄ ミ゙゙_ ミ〜 ト  ̄  ̄  ̄ ∪゙ヽ ミ オ / ∪ \ / : オ / || . ォ \ / | : ォ \ / . | . ォ
11 :
デフォルトの名無しさん :02/04/08 23:26
,,- ,, ∧∧ミ,, ,;; ( ゚ー゚)ノ)" アゲ / ,,- ,,| `ミ ; `''''"
Delphiスレをひとつにまとめろボケ!!
Delphiスレをひとつにまとめなさって!!よくって!?
Ð ë ĺ þ ĥ ïスレをひとつにまつめるざぁマス。
まつめる て・・・ Ð ë á t h ってきます。
,,- ,, ミ,, ,;; ( ゚ー゚)ノ)" ハゲ / ,,- ,,| `ミ ; `''''"
18 :
デフォルトの名無しさん :02/04/09 01:17
でぅふぉぁいぃ
19 :
デフォルトの名無しさん :02/04/09 09:18
フォームが表示された直後に発生するイベントって何でしょう?OnActivete? 表示された直後にフォームのボタンを押したいけどOnshowやOnCreateじゃ駄目だった。
>>19 フォームが表示されるのが OnPaintなんだから、そこでフラグをたてて
次に呼ばれたイベントで処理したらいいんじゃない?
21 :
デフォルトの名無しさん :02/04/09 12:09
ageで質問させていただきます。 DelphiPersonal6.0にて、Winアプリに取り組んでいます。 他のコマンドライン対応アプリを動かしたい場合、どうすればよいのでしょう?
ShellExecute
俺は CreateProcessが好きだな 手間はかかるけど With STARTUPINFO Do Begin cb := SizeOf(STARTUPINFO); {構造体のサイス゛をセット} lpReserved := nil; {以外は初期化} lpDesktop := nil; lpTitle := nil; dwFlags := 0; cbReserved2 := 0; lpReserved2 := nil; dwysize := 0; end; CreateProcess(Nil, {実行するフ゜ロク゛ラム名(通常は次のハ゜ラメータを使用)} PCHAR(exename+' '+comstr), {実行フ゜ロク゛ラムのコマント゛ライン} Nil, {プロセスのセキュリティ属性} Nil, {スレッドのセキュリティ属性} False, {呼び出し側プロセスからのハンドルの継承} 0, {プロセスの作成を制御する追加フラグ} Nil, {環境ブロックを指すポインタ} PChar(GetCurrentDir) , {新しいプロセスのカレントパス} STARTUPINFO, {ウィンドウの登録内容} PROCESSINFO); {プロセスとその第1スレッドに関する情報}
CloseHandleを忘れずに
今日初めてDelphi落としたんだけど、 誰が1から学べるサイト教えてくらさい。 他の言語はVBとかは多少いじれますが、 全然大したことないので、 本当に1から学べるサイトがいいです。 ヤフで検索したけど、あんまりわかりやすいところがなくて… ヨロシコです。
28 :
回し者じゃないのヨ 本当アルヨ :02/04/10 00:00
>>26 「デルファイの魔法」ってとこが、オレは一番分かりやすかったな。
つーか、標準コンポーネント周りだけど。
後は…。みんな似たりよったりかなぁ?検索で「初心者」って入れてみれば?
オレ的には標準コンポーネントいじりから入って覚えていったけど。
つーか、「魔法」って何だ?
>>28 まほう【魔法】
人間わざとは思えない,不思議なことを行う術。魔術。妖術。
(´-`)。o ○ (正直、
>>29 のレスはどうだろう?)
>>27 そこは既にヤフ経由で見ましたけど、よくわかりませんでした。
>>28 今度ぐぐる検索でもして、わかりやすかったら参考にさせてもらいます。
>>31 おっ!これは(・∀・)イイ!
またわからないことあったら、来るので、初心者ですがよろしくね。
33 :
デフォルトの名無しさん :02/04/10 23:21
(´-`)。o ○ (あそこでも分からないって…(絶句)。それと「初心者」て 言葉は恥だし、質問する時も免罪符にすると叩かれるの分かってるのかなぁ…)
>>34 33じゃないけど、
俺も「初心者」って言葉は好きになれない。
いちいち強調する必要は無いよ。
質問の内容見ればわかるし、表記したことで無礼講が許されるわけでもないし。
そういう俺もつい最近ゆっくり始め出したんだけど、似たような境遇だと余計気になるもんです。
オールドスタイルのBASICから約10年ぶりなもので、浦島太郎状態。
GOSUB〜RETURNがねぇ。行番号もねぇ。使いづらいなぁ
お互いがんばりましょう。
>36 おう、何か分かりやすいかも。 更新、よろしくおながいします。
>>35 そういうものなんだ…
ここは詳しい人ばかりだから、謙譲の意を込めての「初心者」だったんだけどね。
それでは、次からこのハンドルやめます。
>>36 ブラウザは結構作りたかったものの一つなので、試しにやってみようかな。
どうもありがとう。
>>36 ブラウザできたー!
感動します。
ありがとうございました。m(_ _)m
反響あって嬉しいです。 更新頑張るです。
これはPersonal版なんですか? ActiveXコントロール使えばPersonar版でもブラウザつくれるんか〜 なんかブラウザの仕組みがチョト見えたようでウレシヨ。
>>41 Personal版です。
そう言ってもらえるとうれしいです。
次は例外処理をして、もう少し機能を追加します。
if IntA mod IntB = 0 then begin 処理; end; というプログラムをすると、一行目に「この型には指定した演算子は使えません」 と出るのですが、どこが問題なのでしょうか?(泣)
演算子の優先順位 は 比較が低いからそれでいいと思うけど カッコがあった方が見やすいな エラーな原因は判らないけど IntA IntB の型が違うんじゃないの? 宣言を見せて
45 :
デフォルトの名無しさん :02/04/11 23:00
本日発見! DelphiのIDEって 拡張子が .C なら ちゃんとCの色分けしてくれるんだ
要するに
>>33 の言いたいことは「初心者」と書けば何でも許されると言う
考え方が良くないと言うだけであって
自分も匿名掲示板なのにわざわざ誰だか解るように名前入れるのは
(その必要があるわけでないのならば)なんだかなぁと思いますね。
あのぉ〜・・・フォームにボタン置いた後どうすればいいんですか?
ベテランSEなら自分で何とかできないとリストラ対象ですね
>>36 早速、ブラウザ作ってみました。
こんな簡単にできちゃうんだと、ちょっとびっくり。
実際に動作する物ができると楽しい〜。
51 :
デフォルトの名無しさん :02/04/12 00:02
あーゆー「delphiで作ってる時の画面キャプ」ってのは、 ボーランドさんに文句言われないのかな?
>>51 まさか言われないでしょ。宣伝してくれてるわけだし。
文句つけられたら2chでスレ立てれば良いわけだし。
被害額が算定できないと訴えられないし。
と無責任に発言。
次は「javascriptを無視出来る方法」とかその他いろいろof/offする方法とか 安易に聞いたりしないだろうな?
on/offだ。
of/offはないだろうな。
しまったー!
あーゆー「はじめの一歩」ってのは、 講談社さんに文句言われないのかな?
だるまさんがころんだ を作った人が出てくれば訴えられるかも。
>>44 どこが違うかわからなかったので、最初から作り直したらちょっとの修正でできたよぉ
すいません。
>>47 >要するに
>>33 の言いたいことは「初心者」と書けば何でも許されると言う
>考え方が良くないと言うだけであって
それはわかったって。
>自分も匿名掲示板なのにわざわざ誰だか解るように名前入れるのは
>(その必要があるわけでないのならば)なんだかなぁと思いますね。
漏れはきっちり話がしたいスレには時々捨てハンドル使うけど。
あとで検索でその周辺のレス見たりできるし、そのために必要と言えば必要。
ブラクラ等を事前に検出して無効化したいのですが、 表示前にテキストをいじれますか?
(´-`)。o ○ (だから「○○出来ますか」ってのやめれって。某スレ逝って 頭冷やしる!)
自分でレンダリングするの?
じゃ、表示前にテキストをいじる方法を教えて下さい。 でいいの?
(´-`)。o ○ (別に叩くワケじゃないけど、「アレコレやってみて これで合ってる?」って方向すら行かないワケ?検索してみたけどとか)
Indy の get で出来そうだなー と思う。
出来るんならやり方を調べようと思った場合はどうするの?
VBやれ。
>>63 ブラウズする前にダウンロードして
自分の思い通りになるよう編集後
ローカルに保存してその保存した
ファイルをブラウズするとか・・・
個人的なガイドラインとしては、教えてに対して
それなりのやり方までは書いて良いと思う。
その後は自分でなんとかする、ということで・・・
教えてに対していきなりソース貼るやつは嫌い
(あくまで個人的にね)
IndyとIEコンポーネントを組み合わせて使えるの? Indyのみで表示するのは大変じゃない?
つーか「どうすんの?」=「ソースキボンヌ」だと思う。
>68 キャッシュをとっているから、そういうやり方でも問題ないと思うけど、 思うけど!
>36,50 ありがとう! >51 >あーゆー「delphiで作ってる時の画面キャプ」ってのは、 >ボーランドさんに文句言われないのかな? なんだか、ちょっと不安になってきた… 開設三日目にして、早くも閉鎖の予感…
別に著作権が絡むような「絵」じゃないでしょ。 たとえ、そうだとしても 著作権で認められている 引用の範囲 TVゲームじゃないんだからさ
>>73 そうだよね!大丈夫だよね!
そう言ってもらって、ちょっと安心です。
Delphiは芸術であり、映画なので起動画面のコピーは違法なのです。 Delphiは美しい、美しいんですよ。
76 :
デフォルトの名無しさん :02/04/12 11:00
関数内関数の事で教えて下さい 帰り値が動的配列な関数で 要素に追加する AddDataという関数内手続きを書きました function func : TIntArray; procedure AddData(dt:Integer); var n:Integer; begin n:=Length(Result); SetLength(Result,n+1); Result[n]:=dt; end; ・・・ 略 ・・・ これはエラーにならず期待した動作をします。 さらに、AddData内部で使用していた追加データの位置 n を返すように function AddData(dt:Integer):Integer; と変更しようとして困ってしまいました。 Resultは 今度は自分の帰り値を指してしまいます。 といって pascal形式の関数名を使うと関数呼び出しになってしまいます。 これはどう解決すればいい?
>>76 function AddData(var func_result: TIntArray; dt:Integer): Integer;
とでもして受け渡したら?
スマートじゃないといっても、親のresultを直接触るほうが気持ち悪いよ。
>>77 さん レスありがとうございます
そうですね。他に方法ないなら関数内関数やめて そういう仕様で
外に出した方がスッキリしますね
>>76 いっそのことクラスにしちゃうとかはどうでしょう.
type
TIntList = class(TPersistent)
private
FInnerArray: array of integer;
function GetCount: integer;
procedure SetCount(Value: integer);
function GetNumber(index: integer): integer;
procedure SetNumber(index: integer; Value: integer);
public
procedure Assign(Source: TPersistent); override;
procedure Clear;
function Add(Value: integer): integer;
property Number[index: integer]: integer read GetNumber write SetNumber; default;
property Count: integer read GetCount write SetCount;
end;
(中略)
function TIntList.Add(Value: integer): integer;
begin
Count := Count + 1;
result := High(FInnerArray);
Number[result] := Value;
end;
procedure TIntList.Assign(Source: TPersistent);
begin
if Source is TIntList then
FInnerArray := (Source as TIntList).FInnerArray
else
inherited;
end;
procedure TIntList.Clear;
begin
Count := 0;
end;
function TIntList.GetCount: integer;
begin
result := Length(FInnerArray);
end;
function TIntList.GetNumber(index: integer): integer;
begin
result := FInnerArray[index];
end;
procedure TIntList.SetCount(Value: integer);
begin
SetLength(FInnerArray, Value);
end;
procedure TIntList.SetNumber(index, Value: integer);
begin
FInnerArray[index] := Value;
end;
上の例では動的配列を隠してますけど
配列の形で使いたい場合は
FInnerArray を IntArray とでも改名して public に移すといいと思います.
>>35 慣れるまで大変だと思いますが大丈夫です.
少なくとも私の知る範囲では
行番号のない言語への移行で
行番号が無いという理由で挫折した方というのは
聞いたことがありません.
>>79 名無しヘタぐらま さんレスありがとうございます
そうですね。クラスにするのも方法だと思います。
一度作ってインクルードファイルにしてやればIntegerだけでなく汎用に使える
テンプレートもどきクラスになるかもとか思ったりもしました。
でも
>>75 の関数内関数のコードだとResultの型を書かなくてもいいので
コピペで使う時は便利なんですよね。
82 :
デフォルトの名無しさん :02/04/13 11:33
楽しいなあ クラス使うとこんなふうに書けるんだ with TSaveDialog.Create(self) do try InitialDir:=GetCurrentDir; Filter :='BIN|*.bin'; DefaultExt:='BIN'; if execute then with TFileStream.Create(FileName,fmCreate) do try Write(bin[0],Sizeof(bin[0])*Length(bin)); finally Free;End; finally free;end;
どの辺が楽しいのだろう・・・・・。
84 :
デフォルトの名無しさん :02/04/13 21:21
これ コピペして ちょっと修正するだけでいい所
>>83
>>82 変数を宣言せずにインスタンスを作成してすぐに破棄するってやつでしょ
Pascalの流儀ではないね・・・あんまりいい習慣じゃないかも
86 :
デフォルトの名無しさん :02/04/14 12:35
>>82 毎回毎回設定がウインドウの設定が保存されないダイアログの出来上がりですか。
∧,,∧ / ̄ ̄ ̄ ̄ ̄ ミ,,゚Д゚彡< 名古屋出張で味噌煮込みウドソ食った ./つ=|||| \_____ 〜ミ \_/ WithのCreateは逆に使いにくいと思うんだけどな。
88 :
デフォルトの名無しさん :02/04/15 08:38
>>86 保存したければそのプロパティへの代入を追加すればいいだけでは?
>>87 デバックとかは不便だけど、パターン化してコピペする時は便利
>保存したければそのプロパティへの代入を追加すればいいだけでは? なら関数使えば?
90 :
デフォルトの名無しさん :02/04/15 11:21
>>89 確かにローカル関数にして そこでローカル変数確保してもいいけど
コピペを前方にしなくちゃいけないでしょ?
入れたい場所にペーストして修正するだけでいいから気に入ってるんだけど?
あっそ。
92 :
デフォルトの名無しさん :02/04/15 17:57
Google Web APIサービスをDelphiで使ってみた人っていない? XMLベースの技術ならなんとかなるんじゃないかと思うんだけど。
93 :
デフォルトの名無しさん :02/04/15 17:59
アプリケーションの多重起動を防止するにはどうしたらいいのですか?
>>92 でも、JAVA か C#でサンプルがあるから、ちょっと触る程度なら そっちでやるんじゃない?
>>97 そこを敢えてやるのがDel厨の使命ではないか。
Google Web APIサービス、オレもナニゲに気になってた。
for文について教えてください。 Inta, Intb := 0; for I := 1 to 10 do Intb := Inta + 1; ↑を実行すると僕の予想では0に1を加えるというのを10回やるということで、Intbの値は10と予想しました。 しかし、実際実行してみたら、Intbの値は2でした。 僕の考え方はどこが間違えていたのでしょうか?(泣
102ですが、それをやりたいなら、 for I := 1 to 10 do Inta = Inta + 1 でなければなりませんね… 冷静にならないといけませんね、漏れは・・・ 申し訳っ!
Delphiスレにマサルさんヲタ(orファソ?)が居る模様
>>98 漏れも気になってるのでおながいします。
105 :
デフォルトの名無しさん :02/04/17 00:35
ありゃ? TmenuItem のショートカットに 数字のみって入れられないんですか? 解決策あったら教えてください。 ボタン3つをそれぞれ 1 2 3 で押したいんですができなそうなので TmenuItemに関連づけて、そっちのショートカットに「1」 とかわりあててみたんですが・・・
あまり 言葉わからないんだ 言葉教えて?もっと 近くに来て… くっ くっ 臭い 息があたる ぐらいになぁぁぁ
107 :
デフォルトの名無しさん :02/04/17 00:42
>>105 数字入れれたし、ショートカットも効いてるよ。
誤爆スマソ
こちらへ 来いよ・・・ 今 来いよ・・・ すぐ来いよぉぉぉぉ!
誤爆スマソ
夜って 不安だよな 暗くって さみしくってな
ρ(´-`ρ) ★Ruby★ (σ´ー`)σ
ここは大冒険スレですか?
>>107 ありがとうございました。もう一度確かめました。
数字はOKでしたがテンキーだと効かなかったです。
やっぱりテンキーとキーボードの最上段の数字は違う物なんでしょうか。
どうやら漏れが撃退したようだ。 経験値3取得・・・。
116 :
デフォルトの名無しさん :02/04/17 01:07
117 :
デフォルトの名無しさん :02/04/17 01:08
あ、でも同じキーとして扱いたいのか。 それはわかんないや。
あ、でもMenuItem増やせばいいか。
>>116 ・・・Tips見るの忘れてた・・・みなさんありがとう、ごめんなさいでした。
121 :
デフォルトの名無しさん :02/04/17 02:08
根本的な質問してもよろしいでしょうか・・・ Delphi5 の Professional をインストールしたんですが、 Standard タブ上に Framse しか無いんですが・・・ どうしたら増やせるんでしょうか? なんか普通はコマンドボタンとかあるようなんですが・・・
なんかワラタ
いや、笑わないで・・・真剣なんです。 今、Delphi起動してハラハラドキドキしながら待ってるんですけど・・・ こんなアフォをどうかお助けを・・・
バチがあたったんだよ。
な、何のバチなんですか・・・
126 :
デフォルトの名無しさん :02/04/17 02:46
再インストールしてみれば?
Delphi6のPersonalでも16個載ってるのにね。
がんばれ!Frameだけでいいアプリ作れよっ
>>126 できました!ありがとうございました!
最初の再インストールはエラーメッセージが大量に出て失敗しましたが
二回目の成功していっぱいコントロールが出てきました!
これから Delphi 頑張ります!
おぼろげながら、字のような物が見えます…。 最初が… 「V」…。Vという字に見えます…。 次は… ええと… C? いいえ… B…Bかしら……… 「B」ね! Bに見えます。 「VB」…。 これは何の意味があるのゴルバチョフ!
作ろうとしてるアプリではないウィンドウで範囲指定して、 作ったアプリでButtonをクリックすると あるString型の変数の値が最初に範囲指定した部分になるようにしたいのですが、 どうすればよいでしょうか?
>>131 霊界と通信中ですか? 人間には解読出来ません
例えば、Wordで作った文章のある部分を範囲指定してから、Buttonをクリックすると、 あるString型の変数の値がWordで範囲指定した文字になる というものです。 これで解読できるでしょうか?
解読出来ました。 それがメモ帳やEditBoxコントロールを使ったものであれば Windowsハンドルをなんとか取得してメッセージを投げれば 制御可能と思いますが、Wordのようなアプリの文章だと難 しいと思います。 ただ、範囲指定した範囲と置換するなら、そのアプリが挿入 モードになっているなら、キーボードから文字が入力された 事にすれば大抵は最に送った文字と置換された後、次に 送った文字が挿入されてゆきます。 VBでいえばSendKey相当の処理ですね
難しいですか・・・ IEやらWordやらの補助的ソフトを作りろうとしてたのですが・・・ どうもありがとう そのような事って、Delphiじゃない言語だったらできたりするんですか?
対象を明確にすれば難しくはないです。 一般的にすれば難しくなるだけです
>>135
ありがとうございます。 それと基本的なことで申し訳無いのですが、 ListBoxコンポーネントで何番目が選択されているかによって処理を変えたいのですが、 どうしたら良いでしょうか? Integer変数にListBox1.ItemIndexを代入して何番目の項目が選択されてるか取得するというのは学習済みです。 で、if 変数 = 1 then という風に書いたら無理だったのですが・・・。
if Listbox1.itemindex= 1 then begin end; // で直接やっちゃえ > if 変数 = 1 then これでも出来ると思うのだけれど ちなみに0オリジンだから 最初の項目は listbox1.itemindex=0 ね 2番目が1
ありがとうございます。 何故か一番上のリストを選択した時に処理が行われないと思ったら、一番上は0になるのですね。 それと、この様な処理はcase文の方が楽でしたね、と今頃気づきました(泣
>>135 Delphiでできなければ、他の言語でもあなたには出来ないと思いますよ。
135の処理ってクリップボード使えばワードにCtrl+Vを送るだけで出来ないですかね?
143 :
デフォルトの名無しさん :02/04/17 12:53
>>142 ワードが相手ならそれでいいんじゃないの?
>>100 var
s : GoogleSearchPort;
r : GoogleSearchResult;
begin
memo1.Lines.Clear;
s := HTTPRIO1 as GoogleSearchPort;
r := s.doGoogleSearch('xxxxxxxxx', WideString(Edit1.Text), 0, 10, False, '', False, '', 'utf8', 'utf8');
memo1.lines.Append('検索結果 = ' + IntToStr(r.estimatedTotalResultsCount) + ' 件');
これだけで検索できる
でも1日1000件までらしい
145 :
Delフサギコ ◆zE1iiRdQ :02/04/17 21:02
,,,,,,,,,,,,,∧,,∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
〜′,,,,,,,ミ,,゚Д゚彡<
>>116 >>114 UU""" U U \_______________
procedure TForm1.Button3Click(Sender: TObject);
begin
TenKeyAction1.ShortCut := VK_NUMPAD1;
TenKeyAction2.ShortCut := VK_NUMPAD2;
NormalKeyAction1.ShortCut := Word('1');
NormalKeyAction2.ShortCut := Word('2');
end;
VK_ADD = 107;//=$6Bなんですね
>>100 もしかしてすごいことやってらっさる?
Editを2つ作り、Buttonを押すとEditに基づいて処理をする様なコードを書いたのですが、 実行してみると、Editに何も入力しないままButtonを押すと、 「ソースファイルがみつかりません」というエラーが出ます。 このエラーはどうやって回避すれば良いのですか? ちなみに、 if (Edit1.Text = '') or (Edit2.Text = '') then ShowMessage('値が入力されていません') else (処理) と入力を促すメッセージを表示させようとしましたが、 同様のエラーが出ました。
>>145 全然すごくないです
ウイザードが勝手に定義Unit作ってくれるんで
後はフォームに数行書けばOK
難点はWebServiceがMSのDLLに強く依存しているので
ほかのPCでは動かないこともおおいです
>>147 ありがとうございます。
今落としてます。
その前の行は
IntBunshi[1] := StrToInt(Edit1.Text);
IntBunbo[1] := StrToInt(Edit2.Text);
となっております。
おっとっと。
UpdatePack1の説明を見ると、
「製品版 Delphi 6(無償ダウンロードサービスで提供される Delphi 6 Personal を含む)をお使いの方は、Update Pack 2 をご利用ください。 」
とあるのですが、1の方で良いのですか?
漏れのは無償ダウンロードサービスで提供されるDelphi 6 Personalにあたるんですが…
http://www.borland.co.jp/delphi/del6up.html
>>149 直接の原因は StrToInt( '' ) が例外を出す事にあります
Valを使って数字かどうか事前に判定するべきでしょう。
>>150 指示通りにすればいいと思いますが?
>>146 try
IntBunshi[1] := StrToInt(Edit1.Text);
IntBunbo[1] := StrToInt(Edit2.Text);
(処理)
except
on E:Exception do ShowMessage(E.Message);
end;
としませう。
>>146 に書かれた何も入力されてないエラーも含め、全て例外が面倒をみてくれます。
>>152 ただしその場合は、例外は出るので デバックRUNすると一旦停止してしまう
154 :
デフォルトの名無しさん :02/04/18 23:38
ミ゚ω゚彡
155 :
デフォルトの名無しさん :02/04/19 04:45
>>150 その問題を修正するには Update1 で十分。ということ。
Update2 を当てればより多くの問題が修正される。
なお Update2 は Update1 を含んでいるので、両方落とす必要はない。
回線が太ければ両方落としてもよいけどね。
フサギコさんはVBに移ったのですね。
例外が出るのが嫌なら val を使って var dmy1,dmy2:Integer; ・・・ val(Edit1.Text,IntBunshi[1],dmy1); val(Edit2.Text,IntBunshi[2],dmy2); if(dmy1<>0) or (dmy2<>0) then ShowMessage(E.Message); と書く事も出来るよ。 ただし 動作は少し違う。 Edit1でエラーでも Edit2の数字が代入されてしまう
>>158 何故かE.MessageのEが未定義の識別子として怒られてしまうのですが。(苦笑
多分打ち間違えてないはず…???
Val() ってどうやって使うんですか?
>>151 によれば数字かどうか判定するらしいですが、ヘルプを見てもサパーリわからなかったので。。。
>>159 ああ ゴメン
val(Edit1.Text,IntBunshi[1],dmy1);
val(Edit2.Text,IntBunshi[2],dmy2);
if(dmy1<>0) or (dmy2<>0) then ShowMessage('値が入力されていません') ;
val は数字なら 数字にして代入してくれて
数字でないなら 何文字目が数字でないと思ったかを3番目の引数で返してくれる
で3番目の引数が0かどうか見れば数字だったかどうかがわかるという事
>>159 前者
Exception(ExceptObject).Message
>>36 さんのページを見てブラウザを作ってみようと
思うのですが、コンポーネントパネルのところに
Win32とか無いんです(激泣
無償版を落としたんですけどどうしてなんでしょう?
Standardはあるのですが、中にはFrameだけです。
それ以外のコンポーネントっていうのがありません。
おわかりになる方どうか教えてくださいです。
あ、HKEY_USERS\Software\Borland\Delphi\6.0 の内容を控えておいた方がいいよ と書いて何の事か判らなければ、無視してね
>>163 再インストールしたら出てきました(あぅぅ
indyというのをインストールした際におかしく
なってしまったのかもしれないです。
今度は慎重にやってみます。
ありがとうございました。
>>164 すみません。
見る前にアンインストールしちゃってました。
今更遅いですよね?
お二方、厨な質問にお答え頂けてありがとうございました。
逝ってよし!と言われずに教えてもらえてよかったです。
166 :
デフォルトの名無しさん :02/04/19 12:11
>>160 キタ━━(´D`)━( ´D)━( ´)━( )━(´ )━(D` )━(´D`)━━!!!!!
その方法でできました。
感謝感謝!
Val の用法もよくわかりました。
でも、
Edit1.Text := Bunshi[1];
Edit2.Text := Bunbo[1];
if (Edit1.Text1 = '') or (Edit2.Text = '') then
ShowMessage('');
の場合にエラーが出るのが理解できていないのですが、
↑はどうして悪いのですか?
例外と言われてますが、何の例外なんですか?
>>167 ですが、さきほど作ったものを、一つの実行ファイルとしてまとめてみようと思っています。
本によればInstallShield Express Borland Limited Japanese Editionという物を使うみたいなんですが、
それが見当たりません。
それは元々Delphiに付属しているものなのでしょうか?
付属しているとしたら、どこにあるんでしょうか?
>>168 ええと どう考えてもその段階でそれが必要になるとは思えないのですが
どれとどれをまとめようと思ったのですか?
>>169 別に必要じゃないんだけど、試してみようと思って。
.pasとか.dfmとかあるでしょ?
それを一つにまとめられるんですよね???
171 :
パソナラー :02/04/19 23:37
(´-`)。o ○ (パソナルにインストシールドは無いよーん、と言ってみるか…)
激しく勘違いしてるね
>>170 .pas も .dfm もコンパイル前のソースであって・・・・・えい なんて説明すればいいんだ
>>170 もうすでにどこかに*.exeが出来てるはず。それを配布するだけ。
ただし、初心者は*.exeがどこにできるかわからんという罠。
175 :
デフォルトの名無しさん :02/04/20 00:26
>>171-175 どうもありがとう!
実行ファイル、見つかりました。
自動で作成されてるとは…
知らない間にそのアイコン見てました。(苦笑
>>175 おっ!
サイトがパワーアップしてる!
タブブラウザかぁ…( ̄ー+ ̄)
>>175 6proだとMicrosoft Internet Controlsが既にインストールされてるっぽいのでその旨書いて置いてくれると・・・
インストールできねー と悩んでしまったら internetタブに既に在った。
あと SampleIconフォルダ って何処にあるのでしょうか。検索掛けても見つからなかった・・・
>>177 ネタだろ。ネタだと言ってくれ。
Lesson6をもう一度、目を皿にして見直せ。
おー今初めて見たけど、
>>175 氏のサイト良いね。
180 :
デフォルトの名無しさん :02/04/20 02:08
おいおい、
>>175 のページ理解りやすいですよ!
マジでマジで。
表彰したくなっちゃいましたよ。
んじゃ。
と思ったら在りました<sampleIcon。 更新される前のキャッシュを見ていました・・・
175氏、とっつきやすくてよかったよ〜。
>>175 いいっすねえ。次はゲーム作り編とかやってほしいな。
おっ、好感触♥
俺自身素人なので、ひょっとしたら嘘教えているかもしれないという罠…
>>177 6proうらやますぃ…
じゃなくて、わかりました。書き足しておきます。
>>185 全然知らなかった…
もしジオでソフト公開したらどうなるんだろうか…
教えてくれてありがとです。
移転、検討します。
>>186 あっ、俺もゲーム編見てみたい。
でも俺はブラウザしか作ったことないので、まだ無理です…
use ComObj; objExcel := CreateOleObject('Excel.Application'); with objExcel do begin with objExcel do beginで レコード、オブジェクトまたはクラスのいずれかが必要です と怒られてしまうんですが、こういう使い方はダメ?
自分で変数を用意すれ。
でもDelはゲーム制作は効率悪いかもねえ
どこらへんが効率悪いんですか?
さぁ?
DirectX絡み?
VB絡み?
処理速度絡み?
>175氏 自分はDelじゃなくてBCBなんだけど、参考になったよ。 これからも更新頑張ってほしい。 サーバスペースだけど、自分鯖持ちだから用意できるっす。 で、連絡しようと思ったら連絡先が書いてない罠・・。
>>196 そういえば、メールアドレスとか書いてなかったっけ。
トップページに書いておきます。
ホントに貸してもらえるのなら、とても有り難いです。
でも、もし、「あれ?♥とか書いちゃって、こいつ女?」とか下心が有るのなら、アレです。
がっかりさせてごめんなさい。ちゃんとブランブランとした感じのが付いてます。
ついでに男食の趣味も無いです。ゴメンナサイ。
しかもヒッキーです。
それでもよければ、おながいします。
と、真面目にお願いしてレスが返ってこなかったら悲しいから、
違う角度から攻めてみたとか言ってみるテスト。
198 :
デフォルトの名無しさん :02/04/22 23:51
(*゚ー゚)b ぐっ!
( -_-)=○)'Д') グ゙ッ!
>197 >下心が有るのなら、アレです。 そんなんじゃないから大丈夫っすよーw ついでに、男色の趣味ももちろんありません。 メールアドレス見つけ次第メールしますね。
201 :
Delフサギコ ◆zE1iiRdQ :02/04/24 09:36
,,,,,,,,,,,,,,,,∧,,∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 〜′,,,,,,,,,,ミ,,゚Д゚彡 < しつもんっす。 UU"""" U U \_______________ FileExists('A:\')とか'A:'と入ると > --------------------------- > Sendtoinformation: SendToInformation.exe - ディスクがありません > --------------------------- > ドライブにディスクがありません。 ディスクをドライブ A: に挿入してください。 > --------------------------- > キャンセル 再実行(T) 続行(C) > --------------------------- このような表示がされて迷惑なんで、、表示させたくないのですが 何か方法ありますか? DirectoryExistsもダメだったです。 ディスクが入ってなかったらFileExistsにはFalseを返してホスイ 環境依存でしょうか?
SetErrorMode(SEM_NOOPENFILEERRORBOX); かな。
>>202 が嫌なら
GetVolumeInformation の帰り値で判定するとか
204 :
Delフサギコ ◆zE1iiRdQ :02/04/24 10:02
ネームプレース
あら、おかげで俺もやりたい事のやり方がわかった。
ドライブ一覧の取得をしたかったんだけど、
GetLogicalDriveStrings
で出来るっぽい事がわかった。
>>201-204 サンクスコ!
c++とdelphiの型や構文の対応表が載っているようなページがどこかにあったと思うのですが、 URLを忘れてしまいました。誰か知ってる方がいたら教えて欲しいのですが。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=999486538 追加しときました。
∫
∧,,∧ ∬ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
ミ,,゚Д゚ノ,っ━~ < パクリぺーじは元ファイルに直リン。
_と~,,, ~,,,ノ_. ∀ \_________
.ミ,,,/~), .| ┷┳━
 ̄ ̄ ̄ .し'J ̄ ̄|... ┃
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ .┻ 堂々とパクるのはいかがなものかと。
それにしても、
>>201 の現象が起きるマシンと
起きないマシンがあって...同じ、Delphi6コンパイルのWin2kProだが。。。
∧,,∧ /
ミ,,゚Д゚彡 < どういう環境依存なんだろ?
ミつ つ゛ \
@ミ ミ
∪''∪ ま。いっか。
んで、ERRORMODEは
SEM_FAILCRITICALERRORS = 1;
SEM_NOOPENFILEERRORBOX = $8000;
どっちがええんや?
クラスの構成要素に、フィールド・メソッド・プロパティと3つあるそうですが、 フィールドは何となくわかりました。 メソッドとプロパティってどういうもので、例えばどういう風に使うんですか?
>>211 >例えばどういう風に使うんですか?
つ、使ったことないの?
使ったことないっす。(汗 最近「Borland Delphi 6 オフィシャルコースウェア応用編」っていう、 アスキーから出てる本を読み始めたんですけど、最初にその内容が出てきて挫折。(泣
最初に基本的な事を理解しようとするより、 まず何か作ってみる方がいい気がする。 色々調べながら必要な知識を吸収していくうちに、 基本的な事も少しずつ分かってくるし、そういうやり方の方が遣る気を持続出来る。
少し前迄は CDROMにDelphi1が入っていた。 このDelphi1にはコーチというのが付いていて、 操作しながら覚えるというような形式のものだった。 今ついていたとしても NT系では動かないから 2000とか XPでは動かないだろうけど こういうのをまた作ればいいのになあ・・・ それかオンラインソフト的に2千円程度で
そ〜いうモンなんですかねぇ? でも知識がないので、作りたい物が作れないっす!(泣きぃ 今は時計が作りたいんですがね。 関数とかわからないんで、無理みたいです。(プ Delphiの予約語の辞典みたいなのが欲しいところです。 そんなもんは存在してるんですかね? 書店には無かったんですが。
|o∈
| ・・・・
|ハヽo∈
|D`) …コソーリ…
|ノハヽo∈
| ´D`)<
>>218 しゃん、ありがとうれす
| サッ
|彡
時計を作ってみたのですが、以下の機能を拡張したいのでアドバイスください。 一、 フォームを透明化にしても、ラベルの文字が透明化されない方法 一、 実行時にフォームを常に一番前に表示させる方法 よろしくお願いします。
またしてもイタイやしが現れたな
>>211 はなによりもまずDelphiについてるヘルプをよく読むことだな
フォームの透明化〜はどうやって透明化してるかによる
フォームを一番手前はフォームのプロパティにある
イタイやしですまそ。 Delphiのヘルプは難しいからなぁ。 読めるようになったら読みますぅ。 フォームの透明化はフォームプロパティのAlphaBlendとAlphaBlendValueでやっておりまする。 一番手前…あったあった♪ それと話戻るけど、メソッドはわかったじぇ! よく使う処理とかをまとめておいて、値を受け渡したりできるっていうのだよね? VBでいう、凡用プロシージャみたいな。
もう来なくて良いよ。
はい・・・
>>222 メソッドは クラスに対して指示するのに使います。
クラスメソッドと間違えないようにね・・・・なんて混乱させてみる。
なんか、
>>222 見てると、VBにはメソッドも、プロパティもないみたいに見えるんだけど・・・。
>>225 とりあえず、メソッドはオブジェクト内部で定義された関数・手続きらしいね。
理解できないけど。(プ
>>226 Valを説明してくれてる
>>160 の様に日本語の説明と具体的な使い方が知りたかったのれす。
>>227 う〜ん、ごめんなさい。
VBだと、Form1.Line x1, x2 y1, y1 みたいなのはメソッドって言いますよね?
プロパティはプロパティウィンドウに表示されてるヤツがそうだけど、他にもあるんですよね?(泣
も っ と わ か り や す い 本 買 っ て き ま す 。 。 。
さっぱり分からないのに「応用編」を買うのが間違い。
>一、 フォームを透明化にしても、ラベルの文字が透明化されない方法 ラベルの文字を一度ビットマップに書き出して、 それをスキャンしてリージョンを生成するのが一番手っ取り早い。 小細工みたいな方法だと、所詮実行結果も怪しい(「遊ぶDelphi2.0J」みたいに)
うーん ためしにやるには便利だろうけど AlphaBlendとAlphaBlendValue では遅いし環境依存だし 自前で処理する方法考えた方がいいんじゃない?
>>228 だ か ら 、 メソッドも、プロパティも ヘ ル プ に書いてあるって言ってんだろうが!!!
>>228 VBわかるみたいだから、とりあえず、VBユーザーの為のDelphi入門、みたいな本が
あったと思うから、そういうの見たほうがいいのでは?
持ってないから内容に関してはなんともいえないけど。
>>228 プロパティもメソッドもVBのとほとんど同じです.
<PRE>
procedure TForm1.Button1Click(Sender: TObject);
begin
// 実行時にプロパティを読む,書く例
Edit1.Text := '「' + Edit1.Text + '」 ナンテシラネーヨ! ウワァァァァン!!';
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
// Clear メソッド
Edit1.Clear;
end;
</PRE>
VBでもこれとそっくり同じことができる(はず).
>>234 あれ? PRE タグって埋められないのか(^^;恥ずかしい(///).
2ちゃんでのタグの使い方ってどこに行けばあるのでしょうか….
>一、 フォームを透明化にしても、ラベルの文字が透明化されない方法
結構複雑なんですね。(^^;)
>>232 読んでくれ :=
>>222 .Lines[3];
ヘルプも読めんやつが読んでくれとかぬかすな市ね
238 :
デフォルトの名無しさん :02/04/27 23:27
要するにVB馬鹿か。
239 :
デフォルトの名無しさん :02/04/28 00:04
あ、238>>さん馬鹿は、いけません
240 :
デフォルトの名無しさん :02/04/28 00:06
要するにVB馬鹿か。
241 :
デフォルトの名無しさん :02/04/28 00:15
あ、240>>さん馬鹿は、いけません
242 :
デフォルトの名無しさん :02/04/28 00:17
要するにVB馬鹿か。
243 :
デフォルトの名無しさん :02/04/28 00:24
要するにVB馬鹿か。
244 :
デフォルトの名無しさん :02/04/28 00:28
あ、1-1000>>さん馬鹿は、いけません
ヨォウスルゥルーニー、ヴィビィブァカァカ。
要するにVBマヌケか
一応、ネタスレじゃないのでマジレスしときます。 Cマガジンの2001年7,8月号にVBからDelphiへの移行(移植)の記事があります。 参考になると思うのでバックナンバーを取り寄せてみてはいかがでしょう。
今までDelphi Personalを使ってたが、Delphi Enterpriseを買った。 やっとインストールが終わり起動してみる。 やたらと時間が掛かる。まぁ、他にもいろいろアプリ動かしてるから当たり前か。 そして翌日、パソコンを起動して、一番始めに起動してみる。 おっせぇぇぇぇぇぇぇ〜〜〜〜〜!!! どうやら我が家のCPUがヘナチョコなだけだったらしい。 でもせっかく買ったものだし、起動さえすれば困ることはないのでいろいろ頑張ってみることにする。 これだけだ、特に意味は無い。
えんたぁぷらいず・・・・・ (((( ;゜Д゜)))))ガクガクブルブル
Enterprise買う金でパソコン買え
起動時にデフォルトで読み込むコンポーネントの数減らせば起動早くなりませんか?
253 :
デフォルトの名無しさん :02/04/28 23:17
>>248 VBにしたらいいんじゃないか?買い直せYO!
>>248 余ったDelphi6 Enterpriseはわたしが引き取ります。処分手数料無料はいりません。
255 :
デフォルトの名無しさん :02/04/28 23:40
オレは254が払う金に10円足して買うぜ!
|o∈ | ・・・・・・・ | |___ | |ハヽo∈ |D` ) コソーリ・・・・・・ ⊂ノ |___ |ハヽo∈ |´D`) 0x100げっと! | ノ |___ | | サッ |彡 | |___
バキッ | ∋oノハヽo∈ | ̄. (,, )D`;) | ̄ .⊂ ⊂ ) | ̄ (⌒__(⌒ノ |___ そんなことするののたんにはお仕置きだよ ∧_∧ ( ・∀・) ( ) ゆるしてくらさい | | | ∋oノハヽo∈ できごころだったのれす (_____)__) ⊂(;´D`;⊂⌒ヽつ
(´-`)。o ○ (どうせAA貼るなら自作の面白いの貼れよな。)
(´-`)。o ○ (オレは
>>256-257 みたいに自信満々に「面白いだろ」って
書いてるワケじゃないからな。259=256=257だろ?)
(´-`)。o ○ (ということにしたいのですね?
>>260 )
Personal使ってた人がいきなりEnterpriseって、一体どういう目的で??
>256 × 0x100 ○ $100 Delphiスレなのでこう書くべきなのれす. >258 個人的には良かったと思うのですが…. 16進表記位じゃネタにもならないでしょうか?
USS.エンタープライズ!
つまり258=265ということかな。
D6でタブの間隔を変えるってどうやるの?
>>268 IDEのエディタの事? ならエディタ内でマウス右ボタン押して プロパティでそれらしいものが出ると思う
memoのカーソルの位置にある文字列を挿入する方法を教えてくれ。 教えて君申し訳っ!
>>271 Memo1.SelLength := 0;
Memo1.SelText := 'てきすと';
つかヘルプくらい嫁
275 :
デフォルトの名無しさん :02/05/01 00:27
277 :
デフォルトの名無しさん :02/05/01 00:33
ImageList.FileLoad(rtBitmap, 'imglist.bmp', clFuchsia); D6で上記のようにTImageList.FileLoadを使って実行時にビットマップをまとめて 読み込むと色が化けてしまう(強制的に減色されてしまう)のですが、 実行時に化けないようにまとめて読み込むにはどうすればよいのでしょうか? 設計時にイメージリストエディタからまとめて追加した場合は化けないのですが。
>>278 FileLoadは GetResource を lrFromFille だけを付けて呼び出したものです。
そして、TImageListは comctl32.dll のImageListのラッパーなので
ImageList_LoadImage APIが呼ばれます
が LR_CREATEDIBSECTION が付いていません。 つまりDDBで作られています
これを回避したいなら 自前で ImageList_LoadImageを呼び出して
ひとつづつ マスクとイメージをBitmapに取り出して Addするという事になるでしょう
282 :
>>281 :02/05/01 23:11
? ? ? (゚д゚) ?
Memo1.SetFocus; と ActiveControl := Memo1; 入れ替えて実行してみると、結果はぱっと見、同じみたいでしたが、 何か違いはあるんですか?
VCLを読むと SetFocus -> GetParentForm.FocusControl -> SetActiveControl と結局同じ事のようです。
追加までご親切にありがとうです。
ケータイメモリエディタを作ろうと画策してるんですが、
いまいちシリアルポートの扱いがうまくできないんです(;´Д`)
API直叩きしてたので、使い方間違ってるのかと思いまして、
それならコンポ使おうと思ったのですよ。
それで探して色々試したのですが、パリティとかの設定が楽に
出来て、出来れば国産、使い方が分かりやすくて、
ツールの性質上できればスレッド同期で扱える、
そんなシリアルポートコンポ探してるのですが見つからないのです。
どなたかご存じありませんでしょうか。
あちこち探して試してみましたが、大抵はコメントや解説が
英語だったりするので…
国産でも見つけたことは見つけました。
ttp://www.geocities.co.jp/SiliconValley-PaloAlto/7428/ です。が、設定や扱いが非常に分かりづらい罠…
結局、色んな意味で、API直叩きが一番楽だと思うけどなあ どこが巧くいかなかったの?
>>287 レスサンクスコ。
> 結局、色んな意味で、API直叩きが一番楽だと思うけどなあ
(;´Д`)
今の今までいろんなコンポ入れては試して消して、を繰り返してた…
鬱だ…
>どこが巧くいかなかったの?
通信で端末からの帰り値を読みとる部分です。
まず手始めに電話番号の取得を試みています。
1.ポート開いてパリティ等設定
2.最初にポート開いたファイルハンドルで1Byte書き込んで、
3.フラッシュして、
4.リターンが帰ってくるかタイムアウトまでファイル読み込みをループ
なのですが、3までは少なくともAPIの帰り値、
Portmonによるログ共にうまくいっています。
その後データを受け取るのがうまくいかないのです。
購入した市販ソフトの動きをPortmonでみる限り、
自作アプリは全く同じ動きをしています。
読み込みの部分が成功するか失敗するか以外。
色々なコンポを試してみましたが、
1.設定に失敗する
2.読み込み時(API直叩きと同じ)
のどちらかで躓きます。
端末やケーブル、ポートなどの問題は、
市販ソフトの動作が問題ないので問題ないと考えます。
一体何が問題なのでしょうか…
Delphiで作ったモジュール内で発生した例外を 他の言語で作ったモジュールが catch した場合、 例外オブジェクトはいつ破棄されるのでしょうか?
>>288 他の制御線DSR/RTS等の動きはどうでしょう? これを設定していますか?
ポートの開き方の例:
strPcopy(charbuf , 'COM1');
SetLastError(0);
h :=CreateFile(charbuf,GENERIC_READ+GENERIC_WRITE, 0,nil,OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL, 0);
//------ この間に hについてテストする ---------
COMMTIMOUT.ReadIntervalTimeout:=MAXDWORD;
COMMTIMOUT.ReadTotalTimeoutMultiplier:=0;
COMMTIMOUT.ReadTotalTimeoutConstant:=0;
COMMTIMOUT.WriteTotalTimeoutMultiplier:=10;
COMMTIMOUT.WriteTotalTimeoutConstant:=10;
SetCommTimeouts( h ,COMMTIMOUT);
StrPcopy(charbuf, Format('baud=%d parity=N data=8 stop=1',[speed])); //パリティ等は要確認
if( BuildCommDCB(charbuf,dcb)) then
begin
dcb.Flags:=dcb.Flags and (not $FFFF);
dcb.Flags:=dcb.Flags or ( $0101);
SetCommState(h,dcb);
EscapeCommFunction(h,SETDTR );
EscapeCommFunction(h,SETRTS );
で、リードタイムアウトはコマンドの種類によって設定する方が楽だから
procedure Txx.SetReadTimeOut(msec: integer);
begin
COMMTIMOUT.ReadIntervalTimeout:=50;
COMMTIMOUT.ReadTotalTimeoutMultiplier:=0;
COMMTIMOUT.ReadTotalTimeoutConstant:=msec;
SetCommTimeouts( h ,COMMTIMOUT);
end;
//○読込み
function Txx.ComRead(var c: Char): boolean;
var GetSize:DWORD;
var charbuf:array [0..15] of char;
begin
Result:=False;
if ReadFile( h ,charbuf,1,GetSize , nil ) then
if GetSize>=1 then
begin
c := charbuf[0];
Result:=True ;
end;
end;
procedure TxxROMWT.ComSend(dt: char);
var PutSize:DWORD;
var charbuf:array [0..15] of char;
begin
{$ifdef CONSOLE }
write(format('%2x ',[ord(dt)]));
{$endif}
Charbuf[0]:=dt;
PutSize=0; WriteFile( h,charbuf,1,PutSize,nil);
if PutSize<>1 then abort; //失敗したらアボート
end;
291 :
デフォルトの名無しさん :02/05/05 20:17
Delphiで現在のボリュームを取得したいのですが、色々あがいたのですが出来ません。 良い方法がありましたら教えてください。おながいしまうま。
なんのボリューム?
ボリュームといわれるとauxGetVolume かなあ でもこれならすぐ判るよなあ
295 :
デフォルトの名無しさん :02/05/05 21:28
>>292-294 皆さんレスどうも。
現在のボリューム設定値を知りたいのです。
auxGetVolumeはメディアプレーヤーの出力レベルですよね。
あるソフトでボリュームをいじった後、元のボリューム設定値に戻したいのですが、
現在のボリューム設定値を知る方法が分からないもので。
たぶん、簡単にできると思うのですけど、検索して見つからないもので。
どうかおながいしまうま。
296 :
デフォルトの名無しさん :02/05/05 21:29
すみません。肝心な事に答えていないでした。 タスクバーの音量のボリュームです。
なんでドライブのボリュームラベルっていうボケが出ないんだ!
タスクバーの音量のボリューム?? ボリュームコントロールはMixer系APIを調べれ 検索しても出てくる
でけへん〜 どうも他のボリュームを取ってる臭い。誰か助けてくらはい。おながいしまんこ。 Procedure TMainForm.FormCreate(Sender: TObject); var rslt,i,j : integer; arys : array [0..128] of TMIXERCONTROLDETAILSUNSIGNED; MixerHndl : HMIXER; MixerLineCtrl : TMIXERLINECONTROLS; MixerCtrl : TMIXERCONTROL; MixerLine : TMixerLine; MixerDetail : TMIXERCONTROLDETAILS; begin rslt:=MixerOpen(@MixerHndl,0,0,0,MIXER_OBJECTF_MIXER); with MixerLine do begin cbStruct:=SizeOF(TMixerLine); dwDestination:=0; dwComponentType:=MIXERLINE_COMPONENTTYPE_SRC_COMPACTDISC; end; MixerGetLineInfo(MixerHndl,@MixerLine,MIXER_GETLINEINFOF_COMPONENTTYPE or MIXER_OBJECTF_HMIXER); with MixerLineCtrl do begin cbStruct:=Sizeof(TMIXERLINECONTROLS); cbmxctrl:=Sizeof(TMIXERCONTROL); dwLineID:=MixerLine.dwLineID; dwControlType:=MIXERCONTROL_CT_CLASS_FADER or MIXERCONTROL_CONTROLTYPE_VOLUME; pamxctrl:=@MixerCtrl; cControls:=MixerLine.cControls; end; with MixerCtrl do begin cbStruct:=sizeof(TMIXERCONTROL); fdwControl:=MIXERCONTROL_CONTROLF_UNIFORM; end; j:=MixerGetLineControls(MixerHndl,@MixerLineCtrl,MIXER_GETLINECONTROLSF_ONEBYTYPE or MIXER_OBJECTF_HMIXER); with MixerDetail do begin cbStruct:=Sizeof(TMIXERCONTROLDETAILS); dwControlID:=MixerCtrl.dwControlID; cMultipleItems:=0; cChannels:=1; cbDetails:=Sizeof(TMIXERCONTROLDETAILSUNSIGNED); paDetails:=@arys; end; MixerGetControlDetails(MixerHndl,@MixerDetail,MIXER_OBJECTF_HMIXER or MIXER_GETCONTROLDETAILSF_VALUE); with MixerCtrl do begin cbStruct:=sizeof(TMIXERCONTROL); fdwControl:=MIXERCONTROL_CONTROLF_UNIFORM; end; with MixerDetail do begin cbStruct:=Sizeof(TMIXERCONTROLDETAILS); dwControlID:=MixerCtrl.dwControlID; cMultipleItems:=0; cChannels:=1; cbDetails:=Sizeof(TMIXERCONTROLDETAILSUNSIGNED); paDetails:=@arys; end; MixerSetControlDetails(MixerHndl,@MixerDetail,MIXER_OBJECTF_HMIXER or MIXER_SETCONTROLDETAILSF_VALUE); MixerClose(MixerHndl); StartVolume:=integer(arys[0]); MixerClose(MixerHndl); end;
いきなりソースライン取得は無理 MIXERLINE_COMPONENTTYPE_DST_SPEAKERSから辿れ
>>299 試してみたら そのコードで希望通り CDラインの音量は取れてるようだけど?
302 :
デフォルトの名無しさん :02/05/05 23:14
えっ?CDラインになってた?(^^; だからか。 MIXERLINE_COMPONENTTYPE_DST_SPEAKERSで試してみる。 ってどこで使えばいいか良く分からんけど。
>MIXERLINE_COMPONENTTYPE_SRC_COMPACTDISC 読めないのか?
304 :
デフォルトの名無しさん :02/05/05 23:23
すまん。パクってきたソースだったからよ〜分からんかった。 MIXERLINE_COMPONENTTYPE_DST_SPEAKERSに変更したらきちんと動作しました。 皆さんありがとうございましこしこ。
(´-`).。oO(たのむからマスターボリューム勝手にいじるのはやめてくれ・・・・)
306 :
デフォルトの名無しさん :02/05/05 23:39
>>305 自分の目覚まし用のソフトだから外部には公開しないっす。
もっとも、最大音量にした後できちんと元に戻すし。
安心しちくれい。
「ここではきものをぬいでください」的だね
ここ、ではき、ものを、ぬい、で、くだ、さい・・・( ゚д゚)?
>>289 Delphiの例外は Windowsの構造化例外(RaiseException)を使うので
例外は相互に投げたりキャッチしたりが理屈の上では可能な筈です
しかし、例外オブジェクトはそれぞれの言語のメモリ管理下にありますから、これを
互いに解放しない可能性や、逆に間違って解放しようとして暴走等が起きるので
はないかと思います。
解放するかどうか デストラクタを継承したものを投げて実験してみてはどうですか?
自分がやるなら、そんな危うい事はやらないで DLLの入り口出口で
例外を全て捕捉して、エラーは別に帰り値かコールバックで返してしまいます。
>>297 そっちが本ネタだと思って、ボケてみたんだが。
レスもらえて嬉しい(*^^*)ポッ うーむ、ちょっとテストしてみるか。
やってみました。 EXEがDelphiで、DLLがC++Builderです。 EXEがDLLの関数を呼び、さらにそのDLLから例外を生成するEXEの関数を呼びます。 例外は DLL の関数で __except(MessageBeep(0)) { } のようにして止めます。 ()の中に何を書いていいかわかりません。 誰か教えて・・。 例外を raise EProject.Create('HogeHoge'); のように生成すると EProjectのデストラクタは呼ばれず、開放されません。 AllocMemCount と AllocMemSize は共に増え続けます。 P := nil; P^ := 100; だと、AllocMemCount と AllocMemSize は増えません。 同一オブジェクトを使いまわしているのですかね?
標準以外のコンポーネント、ユニットライブラリのファイルはどこに置いていますか? ProjectA、ProjectB があって、両方とも LibraryC を使う場合、 案1 ├ProjectA │ └LibraryC └ProjectB └LibraryC とやるか、 案2 ├ProjectA ├ProjectB └LibraryC とやるか、どっちがいいでしょうか?
案2
案3 ├Projects │ ├ProjectB │ └ProjectA └Libraries └LibraryC
案3にイピョーウ!
,,,,,,,,,,,,,,,,∧,,∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 〜′,,,,,,,,,,ミ,,゚Д゚彡 < あんさんに一票でんがなまんがな UU"""" U U[大阪弁]_______________
というか案1なんて使ってる奴いるのか?
案1は依存関係が無くなるんですよ。 実際には LibraryC' と LibraryC'' になるけど。 ├ProjectA │ └LibraryC' ├ProjectB │ └LibraryC'' └LibraryC LibraryCの内、それぞれのプロジェクトが使うもののみ、 コピーして使うのです。 でも、Delphiの性質上、向いていないんですよね。
>>323 つーか、なんでそんな使い方をしないといかんのかわからん。
依存関係が無くなるってどういうこと?
325 :
流星人間いぞん :02/05/08 01:16
りゅうせーい にーんげーん いぞーん いぞーん いぞーん ぼーくらーのー なーかーまー♪
>>325 お前、歳いくつだよ!って分かる俺も、俺か・・・。
,,,,,,,,,,,,,∧,,∧ /ProjectAをコピったら 〜′,,,,,,,ミ,,゚Д゚彡< 他のマシンですぐ動くって事かな? UU""" U U \ └LibraryC' └LibraryC'' こんなのが増えつづけるとソレこそ管理が 大変になるというのが、経験上わかる日が来るかも。
>>324 本当に分からないのですか?
納品する様な場合を考えてみて下さい。
∫ ∧,,∧ ∬ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ミ,,゚Д゚ノ,っ━~ < とはいえ、、、 _と~,,, ~,,,ノ_. ∀ \_________ .ミ,,,/~), .| ┷┳━  ̄ ̄ ̄ .し'J ̄ ̄|... ┃  ̄ ̄ ̄ ̄ ̄ ̄ ̄ .┻ ProjectのVersionと LibraryのVersionを組み合わせて まとめてファルダ保持 したいときなんかは、 ├ProjectA │ └LibraryC' これもいいのかもね。(あまり気乗りしないけど そういえば、自作ライブラリのVersionなんて 全然管理してないなー。みんなさんしてるのかしら?
330 :
デフォルトの名無しさん :02/05/08 02:21
じゃ、案4 ├ProjectA └ProjectB 共通ライブラリは使わない。
漢だな
332 :
デフォルトの名無しさん :02/05/08 02:31
俺はこうしているよ。 ├ProjectGroupA │ ├ProjectA │ │ └LibraryA'' │ ├ProjectB │ │ └LibraryB'' │ └LibraryA' └Library ライブラリだからといって一つのフォルダにまとめないで階層化している。 納品するときは ProjectGroupA をコピーして要らないフォルダを 消していけば簡単だしね。
紛らわしかったかも知れませんが、 ├ProjectA │ └LibraryC' ├ProjectB │ └LibraryC'' └LibraryC は、ProjectAとBはLibraryCを参照しません。 だから、案4と同じ事です。
すまんがお前らシェルのコンテキストメニューに独自のメニュー を追加する方法を教えて欲しいです。 任意のファイルを選択して右クリックから選択されたファイルの 名前を取得したいのです。
335 :
デフォルトの名無しさん :02/05/08 06:34
∧,,∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ _ ミ,,゚Д゚彡_< そのメヌって拡張子依存するんじゃナカタ? .=| |=U=U=| |= \___________ | | .ミ ミ | | | |ノ∪''∪. | | イヤ 実は知らんけど。 | | | | SendToに入るアプリの方がよろしぃかも
>>334 Demo ディレクトリは覗いてみたかな?
>>334 レジストリエディタ立ち上げて、HKEY_CLASSES_ROOT の下をよーく観察しろ。よーく、よーくだ。
>>335 ,337-338
ほんとは皆、よく知らないんだろ?
|文| ∧ \HKEY_CLASSES_ROOT\*\shell\viewの標準にコマンド名 |=|∀゚) \HKEY_CLASSES_ROOT\*\shell\view\commandに実行するコマンド | ⊂ノ でどうかな? ゛゛'゛'゛ ゛゛'゛'゛
∧∧ (゚∀゚) commandの標準ね
死ぬほど検索しやがれ。
マルチポスト野郎にマジレスするのもバカらしいから
>>339
344 :
デフォルトの名無しさん :02/05/08 23:24
Delphiのプロフェッショナルを2台のパソコンに入れて、使用許諾コードを 取得したらやばいですか?ばれます?
345 :
デフォルトの名無しさん :02/05/08 23:26
レジストリだけじゃダメだよ。結局340も分かってないようだ。 たぶん誰もまともにコンテキストメニューの実装はできないんだろう。
347 :
デフォルトの名無しさん :02/05/09 00:22
349 :
デフォルトの名無しさん :02/05/09 00:25
>>348 お前は、未だに「インストロール」とか言う馬鹿だろ?
∫
∧,,∧ ∬ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
ミ,,゚Д゚ノ,っ━~ <
>>346 誰もわからないって言いたいだけちゃうんかと(略
_と~,,, ~,,,ノ_. ∀ \_________
.ミ,,,/~), .| ┷┳━
 ̄ ̄ ̄ .し'J ̄ ̄|... ┃ 足されなかった?
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ .┻
スキルないやつばっかりだな・・・レベル低っ!
Delphiも終わったな。こんなバカ共しかいないとは
そろそろ「C#」といい出すやつが来る頃だな
これからはC#の時代です!!
>>355 だよね。明日、VC#買ってこようかなと。
いまどき、コンテキストメニューも実装できないような Delphiは糞決定ですか?
コンテキストメニューも実装できないような プログラマは糞ですが。
359 :
Delフサギコ ◆zE1iiRdQ :02/05/09 01:38
∫ ∧,,∧ ∬ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ミ,,゚Д゚ノ,っ━~ < 雨降ってジメジメ……プハァ _と~,,, ~,,,ノ_. ∀ \_________ .ミ,,,/~), .| ┷┳━  ̄ ̄ ̄ .し'J ̄ ̄|... ┃ 逆切れですか?  ̄ ̄ ̄ ̄ ̄ ̄ ̄ .┻ ・\Demos\ActiveX\ShellExt\contmenu.dprをコンパルしる ・contmenu.dllが出来る ・それを[実行|ActiveXサバ登録]でレジに登録しる ・こんなんでる --------------------------- 情報 --------------------------- ActiveX サーバー '○○\Demos\ActiveX\ShellExt\contmenu.dll' の登録に成功しました。 --------------------------- OK --------------------------- ・regeditでみると HKEY_CLASSES_ROOT\DelphiProject\shellex\ContextMenuHandlers\ContMenu こんなんが出来てやがるので そこにGUIDの値をキーとして追加? そしたら、.dprにコンテキストメニュが追加されてる。 そんな幹事かしら
(゚д゚)最近プログラマじゃないのでスマソ tp://www.asahi-net.or.jp/~GV4J-SGUR/narik/susucyu.htm
ファイルの関連付けで「開く」以外の動作を追加する
http://member.nifty.ne.jp/m-and-i/tips/fileattach.htm Delphiで作るシェル拡張(ShellExtention)・・・コンテキストメニューの追加
http://member.nifty.ne.jp/m-and-i/tips/shellext.htm ∀
┷┳━ ,,,,,,,,,,,,,,,∧,,∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
┃ 〜′,,,,,,,,,,ミ,,゚Д゚彡< ええサイトありますた。
┻. UU"""" U U \
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
進め中級ページはむずかいしな気がする
下手人さん、フサギコさん、正直逆切れちゃってスマンかった。 ありがとう!これでなんとかなりそうです!
でも、実は361のフサギコさんの紹介してくれたページは既に 見てて、サンプルで試してみてたんですが、あまりに不安定で 使えなかったんです。どこが悪いのかも自分では分からないし・・ 「進め」のほうもちょっと勉強してみます。
VBをインストロールしたのですが四苦八苦です! Delphiは簡単ですか?
>>364 お金出して買えばそれなりにやる気が出ます。
インストロールに(゚д゚)ギャッフン
IEキャシュフォルダの中のファイル名を取得したい。 FindFirst('C:\Documents and Settings\Administrator\Local Settings\Temporary Internet Files\*.*',faAnyFile,FR); 続いてFindNEXTによってディレクトリ一覧を取得しようとしましたが、 . .. ContentIE5 desktop.ini Folder Setting のみの表示で、そこにあるはすのIEのキャシュフォルダの ファイル名が取得できません。 補足 desktop.ini によてフォルダに設定がかけてあるようなのですが、 このファイルの仕様が不明の為どのような設定か不明です。 desktop.ini はマイコンピュータからのファイル参照では見ることができないので テキストエディタにダイレクトに編集名をいれなければ表示しません。 Findfirstの仕様なのか 方法が間違ってるのか 皆さんのお知恵と経験で助けてください。
>>368 そこには本当にファイルはそれだけなのかもね
そこから システム属性のフォルダを検索してみて?
その下のフォルダに実体があるように思うよ
\Temporary Internet Files\Content.IE5\index.dat とかにアドレス情報も
>>369 早速のレス有難う
私もこのフォルダに実態がないのではないかと予測しています。
faAnyFile <これですべての属性のファイルだと思うので、
その下のフォルダを参照してみます。
371 :
デフォルトの名無しさん :02/05/09 16:48
すみません。 Delphiでペイントソフトのような物を作りたいのですが 線を描く方法すらわからないです。 Canvas.LineToを利用する気がするのですが、、 何かヒント頂けませんか?
372 :
デフォルトの名無しさん :02/05/09 17:11
画面をキャプチャーするソフトを作っているんだが。 他のアプリがアクティブになっているときGetCursorではマウスがとれない。 マウスカーソルごとキャプチャできる方法を教えておくれ。。。。
373 :
デフォルトの名無しさん :02/05/09 17:12
>>372 マウスの位置を覚えておいておき
その位置にカーソルを描画する
>371 on_xxxxx を使うと動的に処理できますよ。 (xxxxxの部分は反応したいイベントの種類) とはいえ、実際のペイントソフトのような、「描いている」 ような処理をさせるには、これだけではまったくだめです。 CANVASのプロパティで用意されている関数だけならともかく エアーブラシのような効果を出したい などはもっと手の混んだ事をしなければなりません。 手始めに、内部的なデータ配列をRGB変換 DIB>BITMAP >CANVASのような物を作られるのがよろしいかと思われます。 これが無理だ!ならフォトショップを買ってきましょう^^; IEのキャシュのは Client UrlCache MMF が動いていたんですね。世間知らずですいませんでした。 MMFのモジュールorコンポーネントなど存在するのでしょうか?
>>373 それがやりたいんだが、
他のアプリがアクティブの時に
現在のマウスカーソルのハンドルがとれない。。。うーん。
>>373 >>375 キーワード「メッセージキュー」で関連する情報を得てはいかがでしょうか?
TCustomApplicationEvents.OnMessage
など関連ありそうな情報だと思います.
378 :
デフォルトの名無しさん :02/05/10 08:30
現在動的に生成したTMenuItemにOnClickイベントを割り当てる方法が分からず困っています 静的であれば procedure TForm1.Open1Click(Sender: TObject); begin hoge; end; procedure TForm1.hoge(Sender: TObject; Hint: String); begin ShellExecute(Handle,'OPEN',PChar(Hint),'','',SW_SHOW); end; とすればよいのでしょうが、動的に生成したものをどのように処理したら良いかわかりません どなたかご教授お願いします
>>378 今度は作成したOnClickにそのメソッド名hogeを代入するだけです
ただし hoge は OnClickと同じ引数並びにしなければいけません。
なおhogeは 実行時型情報は不要ですから、privateでもprotectedでもOKです
>>379 >なおhogeは 実行時型情報は不要ですから、privateでもprotectedでもOKです
privateなメンバの実行時型って取得できないんですか?(アクセスできないんだから当然か)。
>>390 メソッドの実行時型情報(つまりメソッド名からメソッドアドレスが検索出来る)のは
publishedの場合だけです。
それ以外の場合はコンパイル時にのみ可能です
>>381 ふむ、勉強になりました。
通常の関数ポインタはコンパイル時に特定されてないと逝けないのね。
素早いレスありがとうございます。とても助かりました
>>374 ,377
ありがとうございました。
先に進めそうです。
385 :
デフォルトの名無しさん :02/05/10 10:55
TObject型をString型にキャストするにはどのようにしたらよいのでしょうか
>>385 stringは組み込み型でTObjectから派生した物ではありません。
>>386 なるほど…ありがとうございました
Senderで送られた情報から、たとえばMemo1からならば
Sender.Lines.Text (これが無理なのは分かるのですが)
のような感じでデータを取り出したいのですが可能なのでしょうか?
388 :
Delフサギコ ◆zE1iiRdQ :02/05/10 11:18
∧,,∧ ミノ゚Д゚彡ノ もし、Sender is TMemo then TMemo(Sender).Lines.Text ってするとよさげ
>>388 バッチシでした、DelphiMLよりも遥かに助けられる2チャンネラの人達に多謝
>>389 だってここが公式サポートサイトだしぃ..
>>389 MLのログ検索すればそれくらいの質問は(以下略
>>391 ううむ、確かにそのとおりかもです…
一応あさってはみるのですが、何が分からないのか分からないような状況だと
結構探しづらくて、ついつい2chに頼ってしまっています
しかし
>>389 ちょっと言い過ぎでした
もちろんDelphiML過去ログにもいつもお世話になっています(笑
質問に答えることによって自分も磨かれていく・・・そんな感じ?俺かなりいい事いってるね♪
394 :
Delフサギコ ◆zE1iiRdQ :02/05/10 14:04
♪ .∧,,∧ ♪ ,ミ,,゚∀゚ミ. ♪ ジガジサーン で マターリ・・・ ミ,,つ[|lllll]). 〜 ミ,, ,,,..ミ ∪ ∪  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ MLでは気軽な雑談しにくいかもね。 初心者は雑談したら 「過去ログみろ、検索はこちら」 だもの…
>>393 その通り
ある程度以上の年齢になると
「人に教えることで自分も覚える」
というのが一番効率のいい勉強方法なんだそうだよ
delphiってポインタないの?もしかしてclassへのreferenceだけ?
>>396 ネタならつまらん。
マジならヘルプぐらい見れ。
>>397 スマソ。classはreferenceで基本型はそうじゃないんですね。なんか変なの。
ってjavaもそうか。でも基本型のポインタもあるのがなんか変。 cA -> reference ^cA -> referenceのreference a -> 実態 ^a-> 1reference 一個ずれてるのが気持ち悪いんですけど・・・
>>399 BCBでは使えないけど オブジェクト型というのもあるよ
オブジェクト型ならC++みたいに変数宣言すれば実体も作成される
クラスについては C++の参照扱いだと思ったらいいんじゃないの? 変数宣言はインスタンスへのポインタの宣言だけど 使う時には自動的に参照されるというふうに
>>400 なるほど。まあ、C++でもあんまり使わないからいらないか。。。
この辺りが構造化言語とOO言語の境界線なんだろうな。
>>401 .(dot)が変数がreferenceなら自動的に->として解釈してくれる感じなのかな。
>>400 , 401
pascalはともかく環境は気に入りました。
さっそくIEにキーコード送るソフトでも作ってみよ。
厨房的質問に付き合ってくれてありがとう、ではまた会う日まで。
クラス型の変数.xx を C++で書けば クラス型の変数->xx になるというだけでは?
>>405 むしろ、C++でいう(クラス型の変数).xxが出来ないのが気持ち悪いと言いたいのだろう。
厨房的質問といっても、C++経験者だし別に厨扱いする必要はないわな。
408 :
デフォルトの名無しさん :02/05/10 23:42
Delphi6(Update Pack2適用済み)とMS-Access2000をWindows2000SP2で 共存させています。 Delphi6でParadoxやdBaseを使ったデータベースアプリケーションを作成 しているのですが、MS-Access2000でdBaseファイルとリンクしているリンク テーブルを開くと日本語が文字化けしてしまいます。 dBaseファイルをインポートして作ったテーブルを開いても文字化けしています。 エクセルで開くと字化けすることはありません。 今のところ解決策はOffice2000とDelphi6を共存させないということしかありません。 Delphiをインストールしていない、もしくはインストールしていても作成中のアプリ ケーションを「実行」しなければ文字化けは起こりません。 なにか情報をご存知の方はおられないでしょうか?
Delphi5も6もWinXPで使うと、たまに数十秒くらい固まったりしない?
パネルとかをポップアップさせるやり方ってあります? ちゃんと、そのときユーザーが指定してるアニメーションで.
414 :
デフォルトの名無しさん :02/05/12 00:07
Imageコンポーネントを動かすにはどういうコードを入力すればいいのか教えてけれ〜(;´Д`) 最近始めた初心者なので全然わからない・・・
スマソ、そうじゃなくて例えばボタンを押したら imageを動かすようなコードを組みたい。
>>416 procedure TForm1.Button1Click(Sender: TObject);
begin
Image1.Top := Image1.top + 1;
Image1.Left := Image1.Left + 1;
end;
ああなる程!
改めて
>>415 さんスマソ。
そしてみんなありがとう。
420 :
デフォルトの名無しさん :02/05/12 00:25
10 x=0 20 y=0 30 locate x,y 40 print Image 50 goto 10
421 :
wasureta... :02/05/12 00:27
45 x=x+1:y=y+1
423 :
machigaeta... :02/05/12 00:28
50 goto 30
くだらね
くっだ〜らない〜 くっだ〜らない〜 くっ くだくっだくっだ〜らない〜♪
>411 うおっ、激しくこれっぽいです.ありがとうございます. しかし、使い方がよく分かりません・・・. とりあえず、フォーム作成後にShowのかわりにやってみたけど 見た目変わんないんですけど、なんかやり方あるんでしょうか?
ちがう、レスは>413だ.鬱・・・
Irvineのダウンロード終了のお知らせってこれ使ってたのか…
430 :
デフォルトの名無しさん :02/05/12 02:20
>428 同じのみつけて試してみてたよ・・・. AnimateWindowで検索したらなんかゴロゴロ出てきた. 案外メジャーなのか、この関数.ちょっとハズカスィ
フォームごとアニメーションできるんだこれ。おもろい。
432 :
デフォルトの名無しさん :02/05/12 15:42
現在、金もってないくせに、delphiはじめようと思っています。そこで質問なんですが、 初心者が一冊だけ買うとしたら、どんな本を買えばいいですか?
デラべっぴん
>>432 実際に本屋へ行って立ち読みしてみて一番面白いと思った本が
あなたにとって「一番いい本」
初心者といっても
「プログラムそのものが初心者」から
「Java/C++バリバリだけどDelphiは初めての人」までいろいろだからね
435 :
デフォルトの名無しさん :02/05/12 16:21
NewItem := TMenuItem.Create(Self)等で作ったアイテムを for文で繰り返し使い、popup等に入れた場合 なぜ上書きされずにpopupに順次追加されるのでしょうか?
>popup等に入れた場合 追加したからでしょう。
>>436 for内部の文末にFreeを加えるとリストに表示されなくなるので参照扱いかと思ったのですが
Freeをすることによりそれによって作られたItemが全て消えるという事なのでしょうか?
すいません、もう少し詳しく書きます for count := 0 to 5 do begin NewFile := TMenuItem.Create(Self); Form1.popup.Items.Add(NewFile); end; これでfor中の最後にNewFile.Free;を入れると。ということです end;のあとに入れるぶんには大丈夫なのですが… webでもfreeを入れるとデータが消えるので入れないようにと 書いてある所は多いのですがなぜそうなるのかが分かりません
Freeは用が済んだインスタンスを開放するのに使う ポップアップ・メニューに入れて「これから使おう」というのに 消してしまったのでは「意味がない」
>>437-438 何を6回繰り返してるか、把握したまえ。以下が、キミが繰り返している内容だ。
「メニューアイテムを生成し、フォーム1のpopupに追加。」
これを6回繰り返したら、メニューアイテムが6個生成されるのは自明だ。
for の中に Free を入れた場合、繰り返すことになるのは以下の内容だ。
「メニューアイテムを生成し、フォーム1のpopupに追加し、削除。」
6回追加して6回削除してるのだから1個も残らないのは自明だ。
ううむ、NewFile.Free自体がPopup.Items.Items[count]の削除にそのまま繋がってるのですね 少しまだ分からない所がありますが、勉強して出直します ありがとうございました
NewFile := TMenuItem.Create(Self); でやっていることは × NewFileのアドレスへTMenuItemのインスタンスを作る ○ TMenuItemのインスタンスを作ってそのアドレスをNewFileへ代入する なので forループの中でNewFileの指すアドレスは毎回変わる そして Form1.popup.Items.Add(NewFile); によってそのアドレスが順次、popupへ保持されていく
>>434 わかりました。本屋に行ってみます。ちなみに、プログラム初心者です。
>>442 なるほど、根本的な勘違いをしていました。
理解できました、ありがとうございます
delphi6personalで、aspやスクリプト環境で使えるような COMオブジェクトが作れるかどうか調べています。 personalはCOMウィザードがないのですが、現実的に全部手動で 作れるものでしょうか? それとも素直にProfessionalを買うべきでしょうか。 Googleでも"delphi +COM"ではうまい情報が見つかりません……
技術的な話に絞れば、実装はComObjにヘルパークラスがありますし、 psdkを落としてmidlコンパイラでリソースを作れば出来ない事も無いと思います。 でも……
ヘルプで ディスパッチインターフェース型 を読んで理解出来れば 作成可能かも・・・ でもタイプライブラリエディタが無いので苦労はすると思います。 その苦労に見合うかどうかは他人にはわかりません。
> aspやスクリプト環境で使えるような > COMオブジェクトが作れるかどうか調べています。 _____________ ∧,,∧ / ミ;゚Д゚ミ ∫< 俺はBCB6Proでも見事に失敗した。 .(ミ ミっ-~ \__________ 〜ミ,,⊃ミ⊃ ナンデダローナンデダロー... VBで作られるActiveXDLLと互換のものを BCB6ProのActiveXDLLウィイザで作ろうとしたら どんなオプションをセットするか、さっぱりわからなくて 作られたものはaspから呼び出せなかったよ... メンドっちかったので、BCB6で作った普通のDLLを VB6でラップしてActiveXDLL作って それをaspから読みました。 保守性わるーーー。ある意味スパゲティミートソース そういうActiveXDLLを作ろうと思っても 作り方が詳しく載っている資料ってなかなか みつからなくてつらいっす。 出来るかどうかっていうと、間違いなく出来るはずなんだけどなー。 あ、Personalでやると フサが苦労した10倍以上は多分苦労するでしょうから… 茨の道かと...
BCBの場合は、確かに、ATLとVCLの2重になってDelphiより厄介 Delphiは言語側でサポートがあるからその面少し楽かも
こちらのサイトよりBORLAND製品のキージェネレーターが落とせますので
C++Builder6 Enterprise
JBuilder6 Enterprise
Delphi 6 Enterprise
の各体験版をBORLANDに申し込みまして
シリアルぶっこんでkeygenでオーソライズしちゃいましょう
すべて動作確認済みです
Enterprise以外はkeygenが使えませんので注意してください
※下記サイトに逝く時はなるべくjavaは切った方がいいでしょう
http://www.cracks.am/cracks/b4.html
451 :
デフォルトの名無しさん :02/05/12 21:30
450=神
逝ってよし
>454 Delphi2.0パワープログラミングには書いてあった気がする。 まーウィザード無い頃だし、当たり前だけど。
タスクトレイにアイコンを追加する場合 FIconData.hIcon := Application.Icon.Handle; だけでは自動的に16x16x8のアイコンを選んで表示してくれません この場合手動でiconファイルのどのiconを使うか指定する事は出来るのでしょうか?
>>457 複数のアイコン用意して、リソースコンパイラでリソースにして
目的のヤツ選んで表示…では?
>>460 461
アイコンを別フォルダに置いて読み込むようにしかできていなかったので
教えていただいた事を挑戦してみます
ありがとうございました
ご報告 コンパイル後、TResourceStreamで読み込んでうまく出来ました
464 :
デフォルトの名無しさん :02/05/15 13:09
コンポーネントの継承について分かり易く説明されている書籍で 良いものは無いでしょうか?
>>464 知らないけどDelphiのマニュアルとヘルプに一通りの事は書いてあると思われ。
俺は3.1時代そうやってた。
後、結構茨の道です。
466 :
デフォルトの名無しさん :02/05/15 13:19
>>465 具体的にはTreeViewのTTreeNodesをカスタマイズしてString情報を一つ格納したいのですが
茨の道ですか…ヘルプで少し頑張ってみます
>>466 それならTTreeNodesを継承してメンバ追加、TTreeViewを継承して
コンストラクタとAddあたりをオーバーライド(隠匿になるんだっけか?)。
後はプリフォシズムでうまくいくはず。
>>467 今の段階だと半分ほどしか理解できませんが
その流れを追ってやっていきたいと思います。thanks
Delphiでオブジェクト指向プログラミングやっている奴いるの? 特に仕事で。
>469 むしろやらないほうが変だろ
>470 同意
オブジェクト指向を無理にやろうとせずに、コンポーネント自作すれば便利だなあ 程度の気持ちでかかった方がいいとは思うけどね。 無理にTListを継承しようとしたりするより 動的配列使いこなす方がわかりやすかったりするし
Delphi=ぽとぺた指向プログラム言語
>>470-471 Delphi使っているからオブジェクト指向やってんだと勘違いしている罠
>>474 ( ´,_ゝ`)プッ
知らないなら無理して出てこなくてもいいぞ(藁
>>466 TTreeNode.Data につっこめばよい。
>>476 あ、こんな格納先があったのですね…
今継承がある程度まとまりそうなので勉強ついでに終わらせた後
こっちでも試してみます。多謝
478 :
デフォルトの名無しさん :02/05/15 17:15
Delphiってすごい。いや凄くない VCLが凄い
479 :
デフォルトの名無しさん :02/05/15 19:19
onContextPopup等で、左クリックと同じ挙動をさせるために PostMessage(Application.Handle, WM_LBUTTONDOWN, 0, 0); PostMessage(Application.Handle, WM_LBUTTONUP, 0, 0); なんて書いてみましたが駄目でした。ご教授お願いします
>479 Application ウィンドウにメッセージ送ってどうするつもり? 何をしたいのか書いてください。 右クリックを左クリックと同じにしたいなら、たんに OnClick イベントハンドラを呼んだら?
>>481 インラインコンプリートが(VC++に比べて)お馬鹿さんって聞きましたがどーよ
---
Delphi 使ったこと無い人より
483 :
デフォルトの名無しさん :02/05/16 02:47
>>480 TreeViewで各nodeを右クリックすると一度選択されたようになり、また元の項目に戻ってしまうので
右クリックでも選択出来るようにしたいのです
>>483 procedure TForm1.TreeView1ContextPopup(Sender: TObject; MousePos: TPoint;
var Handled: Boolean);
begin
TreeView1.Selected := TreeView1.GetNodeAt(MousePos.X,MousePos.Y);
end;
485 :
デフォルトの名無しさん :02/05/16 08:52
イベントで with (Sender as Sender.ClassType) do Caption:=name; こう書いたけど これって、Caption も name もSenderじゃなくて フォームのになってしまうんだけど?
インラインコンプリート? コード補完の事かな? BCBは悪いと思うけど Delphiは普通だと思うよ
コード補完に関しては C#>>>>>>>>>>>>>>VC>>>Del VCは候補のコメントを、C#はヘルプを チップヘルプで表示してくれてめちゃ便利
>>437 あれは確かに金かかってるよね。
でもあれ自作コンポで出せるの? 出せたとしても敷居が高そうだね
489 :
デフォルトの名無しさん :02/05/16 11:42
確認してないけどソース中のXML形式のコメントから拾ってくるんじゃない? ヘルプもこのコメントから生成されるわけだし。 だとすれば敷居はだいぶ低いはず。
いや (Sender as Sender.ClassType).Caption:='試験'; と書いてみれば判るけど、 Captionは無いとでる as は動的にではなく、コンパイル時の状態で比較してるんじゃない? というか、こんなふうに書きたいならCOMにするしかないと思う
>>485 『イベントを発生させたコンポーネントの名前を
フォームの見出しに表示させたい』
ということでしたらこんな感じで.
with Sender as TComponent do
Caption := Name;
Caption はTComponentの公開プロパティではない(存在しない)ので
フォームのCaptionだと解釈され,
NameはTComponentの公開プロパティなので
Sender(がTComponentだとしてそ)のNameだと解釈されます.
DelphiにできてC++builderにできないことってないんですか?
>>494 C+++独自拡張でDelphiで出来ることは大抵できる。
じゃないとVCLの使い回しとか不可能だし(実際、結構無理してると個人的には思う)
496 :
デフォルトの名無しさん :02/05/16 20:25
delphi + 翼のvisual Formade の組み合わせって いいですかねぇ? 経験者、語ってください。
>>495 DelphiとC++builderを両方使ってる人ってどういう風に使い分けてるんですか?
>>497 いるんだろうか・・・?
BCBでもPascalコンパイルできるし。
>>498 すいません、自分の勘違いみたいでした。。
ところで、2chを見ると
C++builderよりDelphi使ってる人のほうが多いみたいなんですけど
なんででしょうか・・?
>>499 そう?2chビューアとか少なからずBCBで作られてたりするけど。
>>499 Delphiはパーソナルがフリーだから
>>498 BCBのC++はコンパイルが遅いのでDelphiのほうが気楽。
BCB5 のIDEのエディタはDelphiより低機能だし、Delphiのフォームが編集できない。
→ 普段Delphiだけ, C++でなければならないものだけBCB
としてる。Turbo Cからupgradeを続けてきたが、BCB6は申し込んでない・・。
503 :
デフォルトの名無しさん :02/05/16 22:01
Delphiのエディタで編集中のテキストデータを、別のプログラムから読み込んだり・書き換えたりする方法は無いですか?
>>503 エディタのウインドウハンドル見つければ。
_____________ ∧,,∧ / ミ,,゚Д゚彡 < IDEの機能使ってヨシ。 ミ⊃ ミ⊃ \____________ 〜ミ ミ ∪''∪ ただし保存してから開くべし [ツール]-[ツールの設定]でダイアログを開き [追加]で、ツールプロパティダイアログを開き [タイトル] 好きな名前を付ける [プログラム] エディタのExeをフルパスで指定 [作業フォルダ] 設定しなくてよい [実行時引数] $EDNAME EmEditorの場合、行番号も引数に渡す /l $ROW $EDNAME 応用してIDEで開いているファイルの ひとつ上のフォルダを開くヤツ。かなり便利。 [タイトル] 好きな名前を付ける [プログラム] エクスプローラを指定、以下のどの指定方法でもOK explorer explorer.exe C:\WINNT\explorer.exe [作業フォルダ] 設定しなくてよい [実行時引数] 現在開いているファイルのフォルダを普通に開く $PATH($EDNAME) 現在開いているファイルのフォルダをエクスプローラで開く "/n", "/e", $PATH($EDNAME) プロジェクトフォルダを普通に開く $PATH($EXENAME) プロジェクトフォルダをエクスプローラで開く "/n", "/e", $PATH($EXENAME)
Delphiで使用できるSAXパーサはありませんでしょうか? MSXML以外で探しています。(Win95+IE3の環境でも使いたい) Googleで検索してたら、ドラムとかギターとか出てきてビビッた。 だれだよ。Delphiなんて名前のバンド(しかもサックスもいる)を作ったのは(w
>>506 ちょっとウケた。
XMLっつーとDOMばっかりでSAXライブラリはなかなか充実しないね、
XPath使えるやつもほしいんだけどなー
508 :
デフォルトの名無しさん :02/05/17 23:27
(´-`)。o ○ (Delphi談話室がKylixの話題もOKになったそーだ…。別BBS付けてほしいな…。 Kylixの話題なんてあるのか…?)
(´-`)。o ○ (「別BBSにして、そっちでやってほしいな…」だった…)
511 :
デフォルトの名無しさん :02/05/18 01:15
Delphi買っている人いる?
iru
あーあ、パーソナルにちゃんとしたヘルプがついてりゃ割れ物使わなくてもいいのになぁ。 金貯めるかぁ。
>>515 付いてるけど?
あれ読んでダメなら才能無いと思われ。
>>516 ああ、「ちゃんとしたヘルプ」じゃなくて「F1キーで出てくるあのヘルプ」と言うか何というか…
まぁ、いいか。
518 :
デフォルトの名無しさん :02/05/18 21:30
初心者な質問ですいません、エクスプローラの詳細表示等で使われている 複数の情報を表示できるリストのような物は何というのでしょうか
リストビュー TListView
520 :
デフォルトの名無しさん :02/05/18 21:48
>>515 エンプラ体験版のヘルプだけ抜き出して使え。
>>521 成る程。期限が来て使えなくなるのはIDEだけだからな。
Delphiのヘルプって読みにくいよな。 やる気なくすヘルプだよ。
ヘルプに責任を押しつけるとは・・・・・・・・・・・・・・・・・・・・・正解。
初心者な質問ですいません、Formって多い方がいいのですか? 少ない方がいいのですか?
多い日も安心です。
>>523 狂おしく同意!
誰か弱々しい僕ちゃんにDelphi教えてくれよ!(w
Formは適当に… つか、あまりごちゃごちゃさせない程度に必要なだけ作ってよし。
>>525 フォームが少なければ少ないほどリソースは食わない。
フォームが少なくなって使いづらいアプリになるくらいなら俺ならフォームを多くする。
フォーム1000個とかヴァカやら無い限り、使い勝手を優先すべきだと思う。
だけど、フォームが多くて使いやすいアプリなんて知らん!
多いのが気になるなら動的に読み込めば良いんじゃないの?<Form
532 :
ダースベイダー :02/05/18 23:27
フォースが足りないんですが、どうしたらいいですか?
ルークよFormを使え
市販の本とか使わないで、Delphiのヘルプだけで使いこなせるようになった人っている?
>>537 優秀だなぁ。
どのくらい時間かかったの?
まさか真面目にレスが貰えるなんて… >>all ありがとう
>>538 さぁ、高校2年くらいだし。
1年後にはコンポーネントとか書いてたなぁ・・・。
オーバーライドとかはいまいちわかってなかった。継承とかはわかってたけど。
あれから5年経ったけど今では手足のように使える。
>>540 高二でヘルプを理解したって、尊敬するよ。
Delphiの本ってほとんど無いから、俺も今日からヘルプで頑張ってみる。
継承わかって Override わかんないってのもあれだね。あれ。手足のようだね。
>>541 ま、明確な基準は無いけど。
自分の作りたいと思った物が自由に作れるようになったらかな、俺の基準では。
>>542 だってアレしかなかったんだもん。頼れる物は。
後、本屋で必死にAPIの引数暗記して帰ったりとかw。
>>543 自分でクラス作って駆使するようなプログラムを書いていなかったと。
クラス組むだけで一仕事だし。
攻防のおもちゃプログラムにはクラスいらなかったw。
最近はオブジェクト指向の有用さは理解してるつもり。
ターコイズブルーのOverrideォ!コォォォォ!震えるぞハート!
>>542 現在の年齢で比べるより経験年数とかで比べる方が妥当だと思うよ・・・
>>545 >後、本屋で必死にAPIの引数暗記して帰ったりとかw。
たいした記憶力で感心するけど
英語版のAPIヘルプは付いてるんだから
その記憶力があれば英語を勉強した方がいいかもね
俺はヘタレだからMSDNを開いちゃうけど
>>549 DOSでCを一年ほど。その前にN88-BASIC2年。
>>550 Shell_Notifyicon()とか載ってなかったのよ。当時。
隠しAPI扱いだったっけか?
>>545 ああ、オレもよくファミ通の裏技暗記して家に帰ってたよ。
>>552 NT3.5か3.51
用の英語ヘルプだったな。確か。
(´-`)。o ○ (本屋で座り込んでメモに書き込んでる強者を見たときは愕然としたなぁ…)
>>555 いるいる。採用コーナーでSPIの問題写してるアフォとか。
写真取って各社にばらまいてやろうかと小一時間悩んだ。
>>553 やったやった(藁
忘れちゃうから(コマンドだから)、語呂合わせ作ったりね。
「ろくよんじょうげのみぎひだり」とか(藁
電話して書き込んでもらおうとも思ったけど、さすがにやめたなぁ。
>>557 最近はメールしてるふりして携帯に打ち込んだり出来るよね。
新製品の型番メモったりはよくしてる。
>>551 俺はDelphiが始めての言語どす。
ヘルプのみで頑張り…ま……す…………。(泣)
>>560 一区切り付いたらCも触っておいた方が良いよ。
なんだかんだ言ってあっちの一族がデファクトスタンダードだから。
Pascalやり込んでおけば1週間かからないと思う。
>>561 一区切り付いたら…ね。(笑)
Cちゅーのは、C++でもいいですか?
もし触る機会があったら、C++Builderがいいかなと思って。
>>562 そだね。C++としての機能は一通りそろってるし。
564 :
デフォルトの名無しさん :02/05/19 04:33
Customsortを行いたいのですが、どうやっても、"変数が必要です"とのエラーが出てしまいます ヘルプを始めwebにあるものを、そのままの形で試しても駄目でした 環境はDelphi6personalです。情報がほとんど無いのですが どなたか原因らしきものが分かれば教えてください
>564 ソースを晒してみろ
遅くなって申し訳ない procedure TForm1.FormCreate(Sender: TObject); begin ListView1.CustomSort(@CustomSortProc, 0); end; function CustomSortProc(Item1, Item2: TListItem; ParamSort: integer): integer; stdcall; begin Result := -CompareText(Item1.Caption,Item2.Caption); end;
3行目の@CustomSortProc,の右がわにカーソルが来た状態で 変数が必要です とのエラーです
>>567 後、CustomSortProcはListView1〜より上に書いた方が良いかも。
代入する時点ではCustomSortProcは宣言されてない扱いになったりとか。
編集画面の段階でListViewに適当な文字列をいれて、それ以降はいじってない状態です
>>571 上にもってきたのでしたが駄目でした。またnilにすると動きます
>>569 調べてみた。
>VCL リファレンス
TCustomListView.CustomSort
>TCustomListView 参照 例
>CustomSort メソッドは,指定された順序付け関数を使ってリストの項目をソートします。
>type TLVCompare = function(lParam1, lParam2, lParamSort: Integer): Integer stdcall;
引数全然違うがな。
ワラタ
あらら、申し訳ないTT みなさんありがとうございました
あ、例では function CustomSortProc(Item1, Item2: TListItem; ParamSort: integer): integer; stdcall; begin Result := -CompareText(Item1.Caption,Item2.Caption); end; procedure TForm1.Button1Click(Sender: TObject); begin ListView1.CustomSort(@CustomSortProc, 0); end; になってるのか・・・不思議だな。 Integerで受け取ってTListItem(へのポインタ)にキャストかな?
>>578 ううむ、そこも検索で出てきたので見てみたのですが
駆け出しなものでdelphiとどう照らし合わせたらいいかが分かりませんでした(^^;
>>579 ううむ、lstrcmpというのは使ったことないのですがapiなのですね
comparetextより応用が聞くのですかね…
ひとまずその段階の手前でつまづいてるようです
確かに違う型をいれると
PFNLVCOMPAREと互換性は〜と言われるので
>>579 さんのアドレスが関係あるみたいです
Delphiをどうしても「でるふぃ」と読んでしまう折れをどうにかしてください。
Oncompareを使うことで解決しそうです いろいろと調べてくれた方々、ありがとうございました
先生!TStream型について1から教えてください! お願いします!
>584 Readで読み込み Writeで書き込み Seekで移動 以上!
>>585 ありがとうございます。
ヘルプを見ると、
function Read(var Buffer; Count; Longint): Longint;
となっています。
Countには読み込むバイト数を入れるんですよね?
Bufferには何を入れれば良いのですか?
文字列sに読むとしたら SetLength(s,100); Read( PChar(s)^ , length(s) );
>>582 ぐちゃぐちゃのぐっちょんぐっちょんのねっちょんねっちょんにしてぐりぐりしてほしいってことか?
589 :
デフォルトの名無しさん :02/05/20 00:09
ネイティブに発音すると「でるぴぃ・ひ!」です。 さんはい!
タリー タリー タリー (\_/) タリー ( ´Д) タリー タリー / つ (\_/) (\_/)ノ⌒ヽ、 (_(__つ⊂(´Д`⊂⌒`つ(´Д` )_人__)
TMediaPlayerでWaveファイルを再生しています。 停止状態からTMediaPlayer.Playを実行して再生すると5回に1回くらい失敗します。 MCIのErrorは起きてないようですが、再生の状態になりません。 なぜなんでしょう?
MCIはあんまり信用ならんからAPI直叩き
ふと思ったんだけど、VBのInputBoxって、Delphiでは無いのかね?
>>594 本気でごめん。
ヘルプで検索する時、ImputBoxで調べてた…
アフォすぎて本気で死にたくなったよ…
かちゅ〜しゃの人は俺のレス、透明あぼ〜んしてしておいてくれ。
>582, 588 まだ連載続いているの?
599 :
デフォルトの名無しさん :02/05/21 00:53
まったり雑談中すいません、教えて下さい。 TRichEditで、特定行のフォントのスタイルや色を変えたいのですが 具体的にどうすればよいのでしょうか? 一応Win32APIというかEM_というprefixがつくメッセージをつかって 現在行のStringや現在行数を得たりするところまではできています。 宜しくお願いします。 環境: Win2K Delphi6 personal
SelAttributes
602 :
デフォルトの名無しさん :02/05/21 01:07
フォームを継承しようとしたら、 Actionmanager1は継承できません。 とエラーが表示されました。何故ですか?
603 :
デフォルトの名無しさん :02/05/21 01:12
一子相伝だからです。先にケンシロウが継承したと見た!
>>600-601 速いレス、ありがとうございました。
早速googleとMSDNと、ヘルプをみてみます。
606 :
デフォルトの名無しさん :02/05/21 01:37
ComboBoxのベロンと出てくるとこだけ欲しい。 もし作れるなら、誰か教えてー
度々すいません、TRichEditについて再確認なんですが、 StartPos EndPosを用いて、コントロールのStartPos文字目からEndPos 文字目まで選択状態にして、SelAttributesで書式を決定する、 という流れでOKですよね?
黙ってやって それからレスして
>606 あれはListBoxだ。 が、必要な時だけベロンチョと出てくるのが好きならPopupMenu使え。 横の▼ボタンが欲しいって話ならSpeedButtonで。
\
>>609 ありがとう〜 その手があったか。
(゚д゚) エンジョイプレイ! PopupMenuのアニメーションの仕方変えたらいい感じだったよ。
<( ) あとオーナードローすれば、ばっちりいけそうだ。
< \
ベロンチョ
612 :
デフォルトの名無しさん :02/05/21 15:41
Enterprise版のWebSnap使ってる人いるかい? どうかな?
613 :
デフォルトの名無しさん :02/05/21 15:55
SQLのCREATE TABLEで、日本語のフィールド名を持つParadoxテーブルが作成できません。 環境 Delphi6 Pro (BDE5.20) + Database Desktop 症状 日本語を含む項目名をクォーテーションやダブル・クォーテーションで囲もうが、エリアス を設定しようが、エラーで跳ねられる。 参考 Local SQLのヘルプでは、出きると書いてあるけど、SELECT文のサンプルのみ(これは 出来て当たり前) BDE5.xx以降は、数万件規模のインデックス付きテーブルを作ると、「OS内部の深刻なエラー」 というアラートとともにお亡くなりになるので、SQLでインデックスをDROPし、再度CREATEしよう と思ったのですが、どうせならテーブルから作りなおそうとしたのですが、上記の不具合のため、 手を焼いております。 何かよい解決方法があれば、お教え頂きたいのですが。
バビンチョ
>どうせならテーブルから作りなおそうとしたのですが ∧,,∧∩ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ミ,,゚Д゚彡 < どうせなら、それをやめたらどかしら。 U ミ \____________ ミ ミ ノ∪∪ レコード全削除、全Insertでよろしかない?
>>512 ありがとん。アメリカ語はよくわからないけど、がんばって読んでみます。
617 :
どきれいなど素人 :02/05/21 22:17
Delphiで、テキストとバイナリが 混じったファイルから, "("と")"にくくられたデータを 取り出すには一般的にはどうするの ですか? そのデータがutf-16の文字列の 場合、シフトJISに変換する関数は ありますか?
618 :
デフォルトの名無しさん :02/05/21 23:26
>>617 本屋にいけー
金がないやつぁ、図書館にいけー
619 :
デフォルトの名無しさん :02/05/21 23:29
620 :
デフォルトの名無しさん :02/05/22 00:12
>>615 Insertにすると、テーブル(もくしはインデックス)があぼーんされるのです。
(いま件数数えてみたら……あはは、12万件超えてますわ)
↑ちなみに郵便番号の件数です。
よく考えたら、CREATE TABLEが駄目なら、おそらくCREAT INDEXも駄目
でしょうし、PradoxやDatabase Desktopって内部的にはSQL文を発行している
みたいなのに、どうやって実現しているのでしょうね?
Firebirdと言ってみる
>>617 バイナリ混じりならTFileStreamかな。
ウニコードは、Stringでキャストするか、
Wide〜とか使えばできるんじゃないの?
>>620 漏れもParadoxで郵便番号データ扱ってるけどうまくいってる。
違いはフィールド名が英語なこと位かなぁ。
日本語のフィールド名やめたら?
624 :
デフォルトの名無しさん :02/05/22 07:31
>>620 [フィールド名]って書いてみれば?と言ってみる。
ageてしまった・・・
626 :
デフォルトの名無しさん :02/05/22 10:57
>>623 時間の関係で、今回は諦めてインデックスを削除してから全件削除して、〒事業庁の
CSVから変換しました。
・10万件規模の場合、2次インデックスがあると書きこみ途中であぼーん
・ついでにBDEもあぼーん
・このまま続行すると、テーブルまであぼーん
・あとからインデックスを追加する分には問題無し
>>624 書きこみ前に駄目元で試してますが、駄目でした。
それじゃ悪背洲でんがな(w
>>626 OS は何? ファイルハンドルの数が足りないような感じの現象だね
628 :
デフォルトの名無しさん :02/05/22 13:19
>>627 Win98SE + BDE5.xです。
(DBテーブルをローカルに置こうが、NT4 Serverに置こうが、駄目でした)
Win95 + BDE3.xでは、別に問題は無かったのですが。
(ファイルハンドラの件は、確かに盲点ですね)
なにせ12万件のデータですので、Pradoxではキツイから、何か他の方法を考えて
みようかと思います。(これまで持っているのは、データの変更を個別に行なわず、
半年に一度程度で作りなおしているためだと思います)。
(一応、D1から浮気もせず使いつづけている者ですが、今回は有難うございました)
629 :
デフォルトの名無しさん :02/05/22 14:04
BCB使ってるんですが、 コンポーネント作りの参考にVCLのソースを見ていたら、 親クラスのプライベートメンバにアクセスしてる部分がありました。 なんでじゃ。
プライベートでも 同じ unit つまり 同じ .PAS ファイル 内では C++でいうfreand扱いだからです
おお、そうだったんですか。ありがとう。
Delphi はじめの一歩 でブラウザ作っててエラー出たの、俺だけっすか・・・? Lesson9で 未定義の識別子:'SCS_NAVIGATEFORWARD' 未定義の識別子:'SCS_NAVIGATEBACK' って出るんですけど。。・゚・(ノД`)・゚・。
633 :
デフォルトの名無しさん :02/05/22 20:14
>>632 タイプライブラリの取りこみで取りこんだユニットをUSESしてる?
>>632 これはありえないと思うのですが
「CSC」_NAVIGATEFORWARDが
「SCS」_NAVIGATEFORWARDになってませんか?
見当違いだったらスマソ
>>633 それってLessonに出てきてませんよね?何を書けばいいんでしょうか。
Lesson1のActiveXの取りこみはやったんですが。
>>634 ブッ
>>632 のカキコでは思いっきり間違ってますね…。
ソースでも記述ミスしたかも。
手元にインストしたPCがないので明日確認してみます。
かなり遅いレスですが、ありがとうございました。 無事解決しました。 横レススマソ。続きをドウゾ↓
了解しました。
納得いきません↓
納豆はいりません→
640 :
デフォルトの名無しさん :02/05/23 05:26
じゃあオクラはいる?↑
641 :
デフォルトの名無しさん :02/05/23 05:46
TreeListでルート項目の二つ目のindexを求める場合 一つめの項目の子項目が1階層ならば TreeList.items.item[TreeList.items.item[0].count + 1] 等で出せるのですが、子階層の中にさらに階層がある場合は どのようにして調べればよいのでしょうか? Senderを使い回帰的に行えたらと思ったのですが、旨くいきませんでした 調べられる事ができるプロパティやメソッドがあればその名前を そのような物が無い場合、funciton作成のヒントを教えてください
D6 personalにwin32.hlpがあったのを今更ながら発見した。。。 MSDNで探し回っていた俺って。。。
TreeList?
できました。やっぱりCSCとSCSを間違えてました。( ・∀・)σ)Д`)←俺 ところで、コンパイルは無事に終了したんですが、正常に動作してない ようなんです。WebBrowser1が、Forwardに正常に表示できるページが なければForwardButtonを押せない状態にしてくれるんですよね? 最初のURLを入力した後はForwardもBackも押せる状態で、押すと やっぱりエラーがでてしまうんですが…。
645 :
デフォルトの名無しさん :02/05/23 10:45
で、Delphiやろうかと思ってるんだが やっぱりクライアントサイド最強かね?
>>645 70%の人は1ヶ月程仕事で使えばそう思うと思います
647 :
デフォルトの名無しさん :02/05/23 10:57
>>646 おお。2ヶ月程度の仕事に使うんだよ。ちょうどいいね。
どのへんがいいのかな?おれCしかやったことないんだけどね。
>>641 TTreeViewの話なら、TTreeNodeのAbsoluteIndex使うといいんでないかい
>>647 最初の1週間はコントロールを貼り付けてイベントに少しコードを書くだけでいいと思います
次の1週間くらいから、 Cと同じように、共通の処理や再利用出来そうなコードを別ユニットにします
3週間目はデータベース周りならTQueryに挑戦しましょう
4週目から良く使いそうな部分をコンポーネントにしてみましょう。そしてそのコンポーネントのユニットに
自分が良く使う手続きとかを押し込んでおきましょう
後はもう、コンポを増やせば増やす程効率があがり、クライアントサイド最強を実感出来るでしょう
650 :
デフォルトの名無しさん :02/05/23 13:14
Delphi 6 にある TLabeledEdit、あれはどうやって実現しているのでしょうか? 似たようなコンポーネントを作りたくていろいろやっているのですが、どうしても うまくいきません。具体的にはボタンの下に色つきの線を引きたいのです。 TButton を継承して、 type TMyButton = class(TButton) private Line: TShape; public constructor Create(AOwner: TComponent); override; destructor Destroy; override; end; constructor TMyButton.Create(AOwner: TComponent); begin inherited Create(AOwner); Line := TShape.Create(self); with Line do begin Parent := self.Parent; Pen.Width := 3; Pen.Color := clRed; Left := self.Left; Top := self.Height; Width := self.Width; Height := 3; end; end; のようにやってみても色つきの線が出ません。 どなたか教えてください。Delphi 6 は Personal しか持っていないので、 ソースを見ようにも……。
∧,,∧ こんなんでしたっけ? ミ,,゚Д゚彡,,,,,, CreateHandleメソッドのinherited後に ∩,,,,,,,,,,,,,,⊃⊃ TShape生成処理をいれたらいかがかしら? まちがってたら指摘たのんます Create呼び出し Create Parent設定 CreateHandle begin CreateWnd begin CreateParams CreateWindowHandle CrateWnd end CreateHandle end;
そもそもボタンに TShapeは載せられないでしょう
TButtonではなく TPanelにしたらいいのでは
>>650 ボタンもパネルも外見ソックリでしょ
∧,,∧ ミ,,゚Д゚彡 コード見ると、Buttonの前(Zオダ)に (ミ ミつ ハイチ死体んじゃないと思われ。 ミ ミ ∪ ∪ TLabeledEditの話も出てル〜シ〜
あっと ボタンでもOKだね。 問題は単に表示位置の問題 これで試してみて constructor TMyButton.Create(AOwner: TComponent); begin inherited Create(AOwner); Line := TShape.Create(self); with Line do begin Parent := self; Pen.Width := 3; Pen.Color := clRed; Left := 3; Top := 3; Width := self.Width-3; Height := 3; show; end; end;
>>650 で Parent := Self.Parentとしているということは、
表示したいのはボタンのクライアント外でないんかな。
657 :
デフォルトの名無しさん :02/05/23 14:04
Del フサギコさん、ありがとうございました。ご教示の方法でできました。 type TMyButton = class(TButton) private Line: TShape; protected procedure CreateHandle; override; public destructor Destroy; override; published end; procedure TMyButton.CreateHandle; begin inherited CreateHandle; Line := TShape.Create(self); with Line do begin Parent := self.Parent; Pen.Width := 3; Pen.Color := clRed; Left := self.Left; Top := self.Top + self.Height; Width := self.Width; Height := 3; end; end; これでボタンのすぐ下に 3 ピクセルの赤い線が引かれました。あとはボタンの 移動とリサイズに反応して線の位置や長さを変えればよさそうです。 どうもありがとうございました。
>>653 実は以前に TPanel を継承して似たようなものを作ったことがありますが、
今回は TButton を継承して作ってみたかったのです。Delphi-ML の過去ログを
検索すると誰だか分かってしまいますが……。
提示いただいたコードも試してみます。どうもありがとうございました。
漏れでは解決の仕方がわからんので別の方法を提案してみる。 TButtonのWM_PAINTメッセージを乗っ取って、 自分の描画が終了したら、親となるコントロールに直接描画したらだめなのかしらん? TTestButton=class(TButton) private procedure WMPaint(var Msg:TWMPaint);message WM_PAINT; end; procedure TTestButton.WMPaint(var Msg: TWMPaint); var PCanvas:TCanvas; LRect:TRect; const LHeight=3; begin inherited; Msg.Result := 0; PCanvas := TCanvas.Create; PCanvas.Handle := GetDC(Parent.Handle); try PCanvas.Brush.Color :=clRed; LRect:=Self.BoundsRect; OffsetRect(LRect,0,LHeight); LRect.Top := LRect.Bottom-LHeight; PCanvas.FillRect(LRect); finally ReleaseDC(Parent.Handle , PCanvas.Handle); PCanvas.Free; end; end; 深くは考えていないのでたぶん問題が出ると思うが。
既に解決してるんでないの
あ、やっぱだめだわこの方法。 忘れてくれ。
>>649 Σ(゚д゚lll)ズガーン
だいぶ長いこと3.1 Proを使ってますが、最初の1週間の作業
以外やったことない・・・。だって困らないんだもん。
3.1 proで作ったデータベースを 6 personalで読み込もうとしたら
DBTextやDBNvavigateが見つかりませんとか出ますけど、
やっぱり駄目なんでしょうか。会社がケチで金出してくれないので…。
わざわざ継承するのはイヤンだったので ∧,,∧ TCompo継承で ミ 彡 MainControlとSubControlプロパをリンクで設定したら (o o) Mainの移動に追随してSubが動くような奴ツクタ ミ ν ミ いるですか?、あまり使い勝手はよくないけれども− ∪ ∪ メセジのフックは難しかたな。 >Delphi-ML の過去ログを >検索すると誰だか分かってしまいますが……。 ま、詮索はせずに…
>>664 ありがとうございます。今回はこれを直接使うことはしませんが、ソースを見て
大変参考になりました。実はあの後ちょっと詰まっていたところでしたので。
本当にありがとうございました。
666 :
デフォルトの名無しさん :02/05/23 20:41
ポップアップメニューの枠の部分を自分で書くことはできまスでしょうか
667 :
デフォルトの名無しさん :02/05/23 23:27
漏れ獣の数字だage
668 :
デフォルトの名無しさん :02/05/23 23:39
某所で「ウニコード・UTF-16・Tfilestream」の質問してる 「ミカンの皮」っての、マルチポストだよネ? ここで聞きまくってるのと。
670 :
デフォルトの名無しさん :02/05/23 23:43
>>669 ご本人ですかぁ?マルチポストはイカンよなぁ。
>>670 別人だけど?
お前のマルチポストが目に余ったから抗議したまで。
672 :
デフォルトの名無しさん :02/05/23 23:52
>>671 「人に質問しといて、どこかがビンゴすればOK!レス無いところはシカト!」
ってのと、どっちが悪質かね?
シカトされたとこの立場は?
>>672 はい、PCQA住人なもんでね。
マルチの問題は正確に認識していると思うよ。俺は。
だからといってそれがお前が抗議文マルチポストした理由にはならない。
>>672 ミカンの皮とやらを知らない者にとっては、
お前のマルチポストとage荒らしがうざい。
漏れの質問が流れてるから嫌い
>>674 えーと。されてないデスヨ。
「(劇藁嘲笑」←なにこれ。
>>675 sageますた。
ま、これで二度とここで聞けまい。
笑われちゃいまスた
>666 できないんじゃない?
あら、そうですか。残念・・・。
>>681 ありがとうございます。
ス・テ・キ♪
騙り騙られ2ちゃんる
この板も(精神年齢)21禁にすべきだ(w
21歳以上禁止?(w
689 :
デフォルトの名無しさん :02/05/24 12:44
>>648 返事が遅くなってすみません
そのabsoluteindexを求める方法がわからないのです
親から*個目を指定するプロパティがあるのでしょうか?
>>663 年々基準の精神年齢って変化すると思うんですけど何を指標にすればいいの?
偉そうに言うんだから客観的な判断基準があるんでしょ音符
∧,,∧ 俺かよ… ミσ゚Д゚ミσ
せっかくなのでDelフサさん意見をどうぞ
>>689 ノードの親の中でのインデックス
Node.Index
ノードのルートからのインデックス
Node.AbsoluteIndex
ノードのn番目の子ノード
Node.Item[n]
ルートからn番目のノード
TreeView.Items[n]
ノードからn番目のノード
TreeView.Items[Node.AbsoluteIndex + n]
(゚д゚) <これらで解決シル!!
~( )−
/ >
694 :
デフォルトの名無しさん :02/05/24 17:38
database desktop って使ってる? 作ったDBってのはアプリケーションと一緒に配布できるの??
695 :
デフォルトの名無しさん :02/05/25 00:58
>>693 大元の親の子の数(?)はItems.Countとなってしまい求めることが出来ず困って居ます
スマートではないですがこんなかんじで書いてみました
while (TreeView1.Items.Item[nodelevel].Level <> 0) or (TreeView1.Items.Item[nodelevel].AbsoluteIndex = 0) do
begin
Inc(nodelevel);
end;
と書いてみたのですが、このようなローラー作戦みたいな事はやはり処理時間も長くなってしまうのでしょうか?
696 :
デフォルトの名無しさん :02/05/25 01:59
A
┣B
┃┣C
┃┗D
┣E
>>695 このツリーで何を求めたいのか詳しく説明プリーズ。
Eです。 奇麗な表現に感動
>>697 = 641
>TreeListでルート項目の二つ目のindexを求める
procedure TForm1.Button1Click(Sender: TObject);
var
i,Count:integer;
begin
Count := 0;
for i := 0 to TreeView1.Items.Count-1 do
if TreeView1.Items[i].Level = 1 then begin
Inc(Count);
if Count = 2 then
Label1.Caption := TreeView1.Items[i].Text;
end;
end;
広場でもレス、書けよ
699 :
デフォルトの名無しさん :02/05/25 03:49
広場は〜広いから〜広場と〜言うの〜♪
>>698 ありがとうございます。まだ見たばかりで
これからソースの流れを理解したいとおもいますが助かりました
あと広場とは他のスレでしょうか?私はここにしか書いていないので
もしかしたら他の方とかぶっているのかもしれません
一応アドレスを張っていただけると助かります
ルートの2つ目の子なら単に TreeView1.Items[0].Item[1] で、いいんでないかい。
>>701 ほんとうだぁ。
Label1.Caption := IntToStr(TreeView1.Items[0].Item[1].AbsoluteIndex);
漏れが648で TreeView1.Items[0].Item[1].AbsoluteIndex と書いておけば済んだってオチ。<(゚д゚) テヘッ
705 :
デフォルトの名無しさん :02/05/25 10:31
VCLのソース うpキボン
・・・
オーイ
うあ、皆様ありがとうございます
>>696 さんの表で言うとAは実際には表示されておらず(大元のルートという存在)
B,Eが表示されている項目(level0)。ていうつもりで話していました。説明が何度もたりず申し訳ないです
Items.item[0](=Items[0]?かな ヘルプにはそんな感じで書いてありました)
の中の階層という事ではありませんでした
一応解決できたと思うのでソースをかいておきます
procedure TForm1.Button1Click(Sender: TObject);
var
nodelevel,rootindex: integer;
begin
nodelevel := 0;
rootindex := 0;
while (TreeView1.Items.Item[nodelevel].Level <> 0) or (rootindex <> 1) do //1は検索したいindex
begin
if TreeView1.Items.Item[nodelevel].Level = 0 then
Inc(rootindex);
Inc(nodelevel);
end;
showmessage(inttostr(TreeView1.Items.Item[nodelevel].absoluteindex));
end;
まだ質問に慣れておらず、みなさんを混乱させて申し訳ありませんでした
なるほど、B、Eがレベル0でAが存在しないと。 それじゃ、 procedure TForm1.Button1Click(Sender: TObject); begin ShowMessage(IntToStr(TreeView1.Items[0].getNextSibling.AbsoluteIndex)); end; 必要な回数getNextSibling繰り返せばヨシ! (゚д゚)
>>712 おお、これこそ求めていたものです。
これで処理速度を保つことが出来ます、ありがとうございました
714 :
デフォルトの名無しさん :02/05/25 23:48
特にDelphi固有の問題じゃないのですが、、、 Windowsの標準のスクリーンセーバーである3Dテキストやラインアートのファイルを 取得して実行させたいのですけど、システムフォルダの中に*.scrのファイルとしては 無いみたいです。 どこにありますか?
717 :
デフォルトの名無しさん :02/05/25 23:56
>>714 オカンのタンスの上から2段目にあります。
もうねようね。おやすみ
基本的なことなんですが、 関数内でC言語でいうstatic変数を使いたいのですがどうすればいいですか? 関数が呼ばれるたびに同じ値を使いたいので。 グローバル変数にしないとだめなんでしょうか。
>>719 procedure 〜
const
ここに書いてね。
var
・
・
・
721 :
デフォルトの名無しさん :02/05/26 00:54
static変数とやらと、グローバル変数の違いは何? 利点は何?
>>721 スコープがローカルかグローバルか。
前回の状態をフィードバックできる関数が書ける。
>720 const節は定数宣言じゃないですか? 自分が知りたかったのは静的変数のことでちょっと違うんですが。
>>724 それが違うんだ。
ヘルプで型付き定数検索してみ。
失礼しました。 720,726さんの言われるとおりでした。 ありがとうございました。
ヘルプ見ればわかるけど、$Jコンパイラ指令がONのときのみ書き換え可能で Delphi5はデフォルトONだったが、Delphi6でデフォルトがOFFに変更になったからややこしい。
720さんのコードのようにローカル変数的に書いても値が保持され続ける というのはなんか気持ち悪いね const 変数名: 型名 = 初期値; procedure 〜 var ・ ・ ・ こうしたい気分
でもスコープが違うか・・・慣れるしかないね
>>729 >720さんのコードのようにローカル変数的に書いても値が保持され続ける
それがstatic変数だと思われ。
>>731 static変数っていうのはインスタンスではなくクラスの属する変数っていうことで
スコープ云々の話ではなかったような・・・
Delphiの場合、implementation部に書くことでunit外からのアクセスは禁止できるけど
そのクラス内からだけアクセスできるようには出来なさそうな気がする
(ローカル変数的に書くと他のメソッドからも見えなくなる)
×クラスの属する ○クラスに属する
ObjectPascalにはCのfriendみたいな機能が無い代わりにunitが
識別子のスコープの単位になっている。
だから
>>719 みたいな用途だったら、そのクラスまたは関数が定義
されているunitのimplementation部でグローバル変数を書けばよし。
そのグローバル変数を初期化したければ、initialization部を使う。
つーか、結局delphiにおいてはグローバル変数だっちゅーことで解決ですか?
皆様は以下のif文でどれが一番綺麗だと思いますか? 例1 if … then begin … end else if … then begin … end else begin … end; 例2 if … then begin … end else if … then begin … end else begin … end; 例3 if … then begin … end else if … then begin … end else begin … end; 私は例2の様に書いているのですが、 end else begin の部分が美しくないと思ったので、変えようと思っています。 稀に end else begin の様に全部同じ行に書くコードも見たことがありますね。 例に無い書き方でお勧めがありましたら、書いていただけるとありがたいです。
if … then begin … end else begin if … then begin … end else begin … end;
あ、beginが多かった。
if ・・・ then begin ・・・ end else if ・・・ then begin ・・・ end else begin ・・・ end;
>>739 はオススメってわけじゃないよ。
俺はこう書いてるってだけ。
741 :
デフォルトの名無しさん :02/05/26 07:57
レッツビギン!
俺はこう書くのが好き if … then begin … end else if … then begin … end else begin … end;
>>737 ???
>>739 それも綺麗で読みやすいですね。
でも、elseの部分が
if …then
…
end;
if …then
…
end;
と読み間違えたりしそうで心配です。(笑)
とりあえず、私の中での選択候補に入れさせていただきます。
>>742 それマジですか?
本当だったらかなり凄いんですけど!
しかも綺麗だし…。
芸術的だと思います。
可読性も構造化しないなら良いのですが、
構造が複雑になってくるとあまり読みやすくない気がします。
他にも投票や新しい案など、よろしくお願いします。
構造化? さらにネストする時? ホントはこれが3行以上長くなるなら if … then proc1 else if … then proc2 else proc3 ; というように書くよ
>>732 >static変数っていうのはインスタンスではなくクラスの属する変数っていうことで
>スコープ云々の話ではなかったような・・・
それ、JavaとかC#のキーワードがなぜか同じなお話。
後、Cでもローカル変数ののstaticキーワードとグローバル変数のstaticキーワードは意味が違う。
上位ワード・下位ワードの値を一つにする方法を教えてください。 また、分ける場合はHi, Lo関数で大丈夫ですか?
748 :
デフォルトの名無しさん :02/05/26 10:44
>>717 ごめん。おかんのタンスの中は探してなかった。見つかった。ありがとう。
>>747 32bitと32bitを引数に入れて、返値が64Bitになる関数はありませんか?
>>749 そもそもOPascal64bit変数合ったっけ?
>>750 Int64型があります。(確かDelphi4からだったかな)
>>745 サンクス
C的な意味でのstaticの話だったわけですね
Javaが別の意味に同じキーワードを使って、C#もそれに倣ったと
(ローカル変数のstaticに近いから、全然別というわけでもないか)
勉強になりました(というか、勉強不足・・・恥)
>>752 って言うかC#ってstatic使えないんだ。
試したらコンパイルエラー。
大発見。
>>作ればいいし関数にしなくても Int64Rec(変数名).Lo= xx; Int64Rec(変数名).Hi= yy; と2行で書けるし
>>751 long a = 5385,b = 46601;
int64 c;
c = a;
c << 32;
c |= b;
もしくは
c = a * 4294967296 + b;
アセンブラ関数にすれば 本体書かずに function MakeInt64(lo,Hi:Integer):int64;asm end;
あ 呼び出し規約 register を付けといた方が安全か
759 :
デフォルトの名無しさん :02/05/26 11:12
>>748 うちのおかん、もう55歳だけど親父と結婚する前の職業がプログラマーだよ。
Windows知らないくせにブラインドタッチだよ、マジで。
紙テープにセーブしていたとか言うんだよ。
>>754 すいません、共有体という言葉は聞いたことあるんですが、
それがどういう仕組みなのか未だに理解出来ません。
解説してあるサイトを探しても見つからなくて…。
>>755 C言語コードは理解出来ません…。すみません。
>>757 アセンブラ関数は分からないんですが…。
762 :
デフォルトの名無しさん :02/05/26 11:17
Windowsの標準のサウンドファイルが置いてあるフォルダを取得出来るAPIは無いでしょうか? Getsystemdirectoryしか見つからない。。。
>>761 判らなくても
function MakeInt64(lo,Hi:Integer):int64;register; asm end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Caption:=IntToHex( MakeInt64(1,3),16);
end;
みたいに使うといいよ
>標準のサウンドファイルが置いてあるフォルダ ?? 「My Documents\My Music」のこと? SHGetSpecialFolderLocationでMy Documents探せば
:\WINNT\Medi とかか?
>\WINNT\Medi \WINNT\Media
767 :
デフォルトの名無しさん :02/05/26 12:21
>>764-766 レスありがとうございます。
winnt\mediaやwindows\mediaの事です。
とりあえず、Getwindowsdirectoryに追加する形が一番早いみたいなのでそれで処理しました。
あと、最後にいくつか教えてください。
フォームのキャプションとタスクバーを消すにはどうしたらよいのでしょうか?
もう一つですが、フォームを透明化するにはどのようにしたら良いでしょう?
wsmaxmizeでもCaptionは残ってしまっているので困っています。
バックアップ処理をするスクリーンセーバーを作っているので画面を単色にしたいのです。
フォームの透明化はImageをはりつけて色々とやっているのですが、なかなかうまくいきません。
将来的にはImage上で簡単な図形を書こうと思っています。
どうかよろしくおながいします。
フォームを透明にする十分な理由が無いなら リージョンを作った方がいいでしょう
769 :
デフォルトの名無しさん :02/05/26 12:56
>>768 リージョンですか。ちょっと調べてみます。
フォームのタイトルバーを消すのはBorderStyleをいじって出来ました。
>>760 record型において、同じメモリ領域に複数のフィールド名を持たせる方法。
同じメモリをつかってるから、たとえば、
hoge.foo := 1;
とやれば
hoge.bar
も自動的に1になったりする。
Cではunion、Pascalではrecord宣言の中にcase ... end; を入れる。
771 :
デフォルトの名無しさん :02/05/26 13:12
なんでみんなRubyを貶すのかなー? もしかして劣等感?僻んでる? 日本発の言語で世界に評価されているのはRubyしか存在しないんだから みんなでRubyを盛り上げてC++やDelphiなんて、プププのプーってぐらいに しなきゃ。 実際今まで10年ぐらいプログラミングしてきた俺だけど、Rubyより優れた 言語に出会った事がないよ。 やっぱり新しい言語は優れているんだろうね。
772 :
760(=746=751) :02/05/26 13:14
>>763 本当だ、理論は分からないけど、出来ました。
ありがとうございます。
>>760 なるほど。
type
TFoo = record;
case Integer of
0:
1:
end;
っていうのを見たことがあるんですが、これはどうなるのですか?
スクリプト言語とコンパイル言語を比較しようとする
>>771 は頭がおかしいのでは無いかと思う。
比較するならPerl,PHP,Phytonとかとしろ。
>>773 >771は頭がおかしいのでは無いかと思う。
まさしく・・・771はマルチポスト
775 :
デフォルトの名無しさん :02/05/26 13:25
puuuuuuuuuuuupupupu Ruby >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Delphi
Ruby is Nanbar one!!
>>776 英語のつもり?思いっきり綴り間違えてるぞ
>777 アンチRuby厨の罠
779 :
デフォルトの名無しさん :02/05/26 13:55
Delphi6 Enterpriseの評価版をインストールしたんですが、プログラムを実行す る時に必ず「WindowsがBorland Delphi6を設定中です。」というダイアログが出 てしまいます。 設定が終われば二度目の実行時にはダイアログが出なくなるのですが、Delphiを 終了してもう一度Delphiを起動するとまたダイアログが出てしまいます。 インストールした環境はWindows 2000のServicePack2です。 レジストリが壊れてるのかと思ってOSから入れなおしてみましたが他にアプリが全 く入っていなくても同じ現象が起こります。 どなたか解決策をご存知無いでしょうか?
クラック法を伺いたいのでしょうか?
781 :
デフォルトの名無しさん :02/05/26 16:25
>>780 めっそうも無い。
正規の使い方をしてるだけなのに、実行の度にダイアログが出てウザいんですよ。
もしかしてこれは評価版の仕様なんですか?
Delphiにはx = a ? b : cのような3項演算子は無いのでしょうか? if a then x := b else x := c; とやるしか無いのですか?
>>782 Pascalは行儀の良い言語なのでそう言うのは無いですな、確か。
>>782 ありません
3項演算子のように極度に記号的なものは
プログラミング言語の中では特異なものだと考えます
>>782 IfThenって関数が出来たが・・・使いたきゃどうぞ。
>>783-785 ありがとうございました。
大抵の言語ではifより3項演算子使った方が高速になると思ったもので…
>>786 最近の最適化は賢いから小手先のコードいじりって無駄なことが多かったり。
3項演算子でもアセンブラになれば同じ子としているようにも思える。
この反応の仕方がやっぱなんか異質
>>790 Delphi関係の参考書によく書いてあることだけど。
> Pascalは行儀の良い言語なので > 3項演算子のように極度に記号的なものはプログラミング言語の中では特異なものだと考えます > ・・・使いたきゃどうぞ
おせっかいが多いのは事実だと思う 困ってるとき質問投げるとすぐ答えてくれるから便利だけどw その便利さに比べたら言語擁護ぐらい目をつぶれw
まあね
>>788 は2ch初心者の小さな女の子なの・・・。
許してあげてね♥
>>792 事実。その代わり融通が利かない場面もしばしば。
事実。上に準ずる。
function IFTHEN(a :boolean;b :Integrer;c :integer) :integer;
begin
if(a)
Result :=b
else
Result := c;
end;
こんな関数を呼び出すのは非常にばからしいと私は思いました。
アフォが湧いてきたな
ObjectPascalが嫌なら他の言語使え。誰も止めん。 質問スレなのにおせっかいが多いだ? 戯言がお好きなようで。
次の質問どーーーーーーーーーーーーーぞ ↓
質問です。 Delphiに文句を言う奴に限ってBCBを使いたがらないのはどうしてですか?
>>802 私はDelphi嫌いですがBCB好きです。
>803 一番下のは雑談スレですが。
>>800 > ObjectPascalが嫌なら他の言語使え。誰も止めん。
> 質問スレなのにおせっかいが多いだ? 戯言がお好きなようで。
>>800 は
>>793 にレスしてるんだよね。
おせっかいが多いといったのは彼だけだから。
でも、
>>793 のレスを見る限り、彼はDelphiが好きなんだよね。
その彼に対してこんなレスつけちゃうんだもんなぁ。
>>788 の「異質」は俺も感じる。
>>808 ホントなんでこんなに引っぱるかなあ・・・。
「粘着」を感じる。
誰もObjectPascalが嫌なんて言ってないしな
どこからそれ出てきたの?
>>800 (w
812 :
デフォルトの名無しさん :02/05/26 22:12
非常に初歩的な質問でごめんなさい。 StartBtnをクリックするとTimeLbl.Captionが秒を刻むようにしたいです。 以下の様にコーディングすると、コンパイルはできましたが、TimeLbl.Captionが秒を刻みません。 ケアレスミスだと思うのですが、どこが間違えてるのかわかりません。(^^ヾ 誤りがありましたら、指摘していただけたらありがたいです。m(_ _)m var Form1: TForm1; Time_: TDateTime; implementation {$R *.dfm} procedure TForm1.Timer1Timer(Sender: TObject); begin Time_ := IncSecond(Time_); TimeLbl.Caption := FormatDateTime(ShortTimeFormat, Time_); end; procedure TForm1.StartBtnClick(Sender: TObject); begin Timer1.Enabled := True; end; procedure TForm1.FormCreate(Sender: TObject); begin TimeLbl.Caption := FormatDateTime(ShortTimeFormat, 0); end; ちなみに、ちゃんとTimer1.Intervalは1000になってます。
>788,808 「異質」なんて言われても通じないんですけど。 無駄な独り言はよそでやれ。
>>812 TDateTime使わずにIntegerでも良いと思われ。
後、グローバル変数にするよりクラスのメンバにした方がgood。
異臭ってどんな臭いですか?
817 :
デフォルトの名無しさん :02/05/26 22:22
>>812 ShortTimeFormatのせい。ヘルプみてみそ
時:分になっちまう
818 :
デフォルトの名無しさん :02/05/26 22:26
>>815 ありがとうございます。
TDateTime型ではなくInteger型を使用するということは、
分の部分と秒の部分で2つの変数を使うということですよね?
何か面倒な気が…(^^;
Time_変数をクラスのメンバにした方が良いのはどうしてですか?
未だにメンバにする場合、グローバル変数にする場合の使い分けがよくわかってないもので…(汗)
ヽ( ゚д゚)ノ 失礼しやしたー -=≡ ( )へ >
>>818 ああ、そうか、分もはかりたいのね。
Format("%02d;%02d"[Time div 60,Time mod 60]);
とか。
>>818 クラスにするとスコープ(アクセスできる範囲)がクラス内に留まる。
この場合、TimeはTForm1のメンバから呼び出される可能性は無いのでクラスメンバにした方が望ましい。
まぁ、2つ以上のインスタンスを生成するようになれば少しは実感できるかも。
(´-`).。oO(同じDel使いのこぼした感想がこんなことに・・・恐るべし
>>822 半分言いがかりだしw
次に来るであろう
「便利なのにどうしてないんでしょうかねぇ?」
と言う質問を見越しただけという意見も。
もうええやん。
825 :
デフォルトの名無しさん :02/05/26 22:47
適当なクラスを使って生成したインスタンスは、例えプログラム終了直前でもフリーする必要があるのでしょうか?
827 :
デフォルトの名無しさん :02/05/26 22:50
>>826 では、フリーしないと実際に問題が生じますか?
>>817 おっしゃる通りでした。
ありがとうございます!
>>820 FormatDateTime(ShortTimeFormat, Time_);
↓
Format("%02d;%02d"[Time div 60,Time mod 60]);
そうしてみたら、コンパイルできなくなっちゃいました。
つか、FormCreateイベントで
FormatDateTime(ShorTimeFormat, 0);
にしてしまうと、TimeLbl.Captionが「12:00」になってしまいました。(笑)
>>821 Time_変数をTForm1のクラスにすると、TForm1のメンバからしか参照できないっていうことですよね?
>この場合、TimeはTForm1のメンバから呼び出される可能性は無いので
この場合、Time_変数はTForm1のメンバであるTimerのイベントから呼び出されてということにならないのですか?
>>828 Format("%02d:%02d",[Time div 60,Time mod 60]);
コンマ忘れ。でもこれくらい補正してくれ〜。
なお、Time :Integerでお願い。
>>828 継承して、
TCountTimer(TTimer)
とかするならもちろんTCountTimerのメンバにあった方がいい。
>>827 それは状況によります。
メモリその他の資源はOSが解放してくれますが( Win9xだと頼るのは危険)
クラス作成者がデストラクタに何か意味のある動作を割り当てているかもしれません。
>>831 なるほど。ありがとうございます。
別の問題ですが。
Haltを使う場合も同様の危険をもつと認識していいのでしょうか?
>>832 Windowsのリソース管理機能に依存。
>>832 特に事情がないかぎりオブジェクトはすべてFreeして正常終了すべきだと思いますが。
malloc and freeとはまた別の問題。
>>829 >>828 を書き込んだ時点で、コンマの追加やってましたよ。
で今、Time_: Integer; にして、IncSecond → Inc にしてみましたが、コンパイルできません。(泣)
まぁ、まだ良くわからないので、原始的な方法でやってみようと思います。
ありがとうございました。
>>830 子クラスからもその変数を使いたい場合は、ってことですよね?
ありがとうございます。
836 :
デフォルトの名無しさん :02/05/26 23:35
±5秒の精度で時刻比較をしたいのですが、TDateTime型をif文で if Atime=Btime then 等と入力しても千分の一秒単位で比較することになってしまいます。 桁を丸め込んで比較しても同一タイムでしか比較出来ません。 このような場合、良い方法は無いでしょか?
>>835 ごめーん。"->'だわ。
最近C系の言語使うことが多くて・・・申し訳ない。
>>836 if Abs(ATime - BTime) / ( 1.0 / 24 / 60 / 60) < 5 then
>>836 てきとーな思いつきだけど、これでどう?
if Abs(Atime-Btime) < EncodeTime(0,0,5,0) then
_____________ ∧,,∧ / ミ,,゚Д゚彡 < MinutesBetween 関数つかうとよし。 U つ \ @ミ ミ  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ∪''∪ D6から追加された関数だと 思うけど。
∧,,∧ /えっと、それをつかって ミ;゚Д゚彡 < 差が5分以内かどうかを求められると ミU U \思うんだけど.... 〜ミ ,, ミ ∪ ∪
±5秒の差があっても同一時刻と判定したいんでない?
びょう べう 【秒】 ふん 【分】
秒 VS 分 カーン (゚д゚) ( ×) ファイッ / >
ショボーン ∧,,∧ / 秒だった。。。。 ミ ,,ミ < し ミ \ きっと、脳の一部が壊死してんだ.... ミ 〜ミ ∪''∪ 欝氏欝氏 function FiveSecondsEqual(DateTime1, DateTime2: TDateTime): Boolean; begin if SecondsBetween(DateTime1, DateTime2)<= 5 then Result := True then Result := False; end;
カンカンカーン 秒 won!
>>837 おはようございます。
それも予測して、 ' ' でも試してみましたよ。(^^;
でもできませんでした。(泣)
849 :
デフォルトの名無しさん :02/05/27 08:36
836です。
みんな、ありがと!
if文の中で()を使えば単純計算も出来るだなんて知らなかったよ。
>>846 thenが二個あるのは秘密にしとくね。
教室のみんな、ありがとー! お兄ちゃん助かりまくりだゾ!!
851 :
デフォルトの名無しさん :02/05/27 09:55
Delphi5.0で開発したプログラム(データベースはparadoxを使用)をパソコンにインストール したら、「認識できないデータベースです」というエラーメッセージが表示 されまともに動きません。 どうもデータベースのエリアスが正しく設定されていないみたいです。 インストールにはDelphi5.0付属のInstallshieldを使用しています。 googleなどで検索してみましたが該当するものがありません。 インストールしたパソコンは98、XPです。 ただほとんどの98、XPパソコンでは正しくインストールできるのですが メーカパソコンでosをアップグレードしたり、再インストールしたパソコン でこの障害が発生します。 (たまたまかもしれない) どなたかお助け下さい。
>>851 コントロールパネルの BDE Administrator で設定するとよろし
大抵の場合、間違った PATH が入っている(Installshieldの不具合かも)
>>785 3項演算子と違い、引数があからkじめ評価されてしまう罠。
854 :
デフォルトの名無しさん :02/05/27 19:07
onClickイベントハンドラで、TStringListの文字列を操作する手続き(SetQList)とQListを参照して処理する手続き(Question) を呼び出したら、onClickのend;の部分で例外が発生してしまいました。 どこを直したら例外が出なくなるか教えてください。m(_ _)m SetQList・Questionとも、TForm1のメンバとして宣言してあります。 procedure TForm1.StartBtnClick(Sender: TObject); begin SetQList; Question; end; procedure TForm1.Question; var QNum: Integer; begin QNum := Random(QList.Count); QEdit.Text := QList[QNum]; end; procedure TForm1.SetQList; begin QList := TStringList.Create; try with QList do begin //文字列の操作(省略) end; finally QList.Free; end; end;
QListをFreeしてるのに Questionで参照してるんだから当然 例外を出さないようにするには QListを永続的になるようにする必要がある 簡単なのは TStringListを TStringsを持つTComponent継承のどれかにして フォームのOnCreateで オーナをフォームにして作っておけばいい
856 :
デフォルトの名無しさん :02/05/27 19:35
むっちゃ厨房な質問すいません、 他の言語と比べてDelphiのメリット、デメリット WinAPIの使用、DirectXの使用について問題点なんかあったら教えてください
>>855 様
レスありがとうございます。
言われてみれば当たり前ですね。(^^;
QList: TMemo; で宣言し、Linesプロパティで文字列操作をしてみようと思いました。
>フォームのOnCreateで オーナをフォームにして作っておけばいい
オーナをフォームにして作るってどうやるんですか?
>>856 メリット…
コンパイルが速い。
利用している言語の元の言語が教育用に適した言語。
VB並に簡単にプログラムが書けてランタイムがいらない(BCBもそうだが)
デメリット…
廃れる予定。
Delphiは言語じゃない。
最新のDirectXを扱うにはC++で扱うより面倒(ヘッダ移植するか探してこないとならないから)
APIも最新のじゃなければ普通に使えるがM$がわざわざObjectPascal用の
PlatformSDKを作ったりはしないので、
最新のAPIを使いたいなら自分で定義する必要があってやはり面倒。
結論… 最新の技術使いたきゃBCB使えw
実際のところ業務用アプリを書いてて最新の技術が必要な場合と言うのは そう多くはないんだけどね Delphiの最大のメリットはコンパイルが速いことに加えて コンパイラの型チェックが頼りになるということかな コーディングのミスを調べるためにリビルドするという C++では考えられない方法を気楽に使える
×コーディングのミスを調べるためにリビルドするという ○わずか数行のコーディングのミスを調べるためにリビルドするという この方が分かりやすいね
>>857 TMemoね・・・・うーん
なんか窓ハンドルが勿体無いようにも思うけど・・・まあいいか
そういうレベルなら、単にフォームにMemo貼り付けてVisibleをfalseでやったら?
>>862 いや、TStringListでいいじゃん。
>>862 Memoを貼り付けてVisibleをFalseっていうのも、僕も考えてました。
その前にTStringListのままでインスタンスの破棄をしないテストをしてみたんですけど、一応正常に動きましたが、何かバグの原因になったりしますか?
>>864 非常に危険なのでデストラクタか何かに破棄コード書いて下さい。
>>865 デストラクタを学習中…(笑)
ところで、インスタンスを破棄するのって、生成した場所と違うプロシージャで行っても問題無いですよね?
>>866 問題ない。
その代わり解放するまでインスタンスをどこかの変数に閉じこめて決して見失わないように。
おかげ様で作りたかった物(かなりショボイ鬱打みたいな物、後は打つ言葉を考えるだけ。)が完成間近です。 質問に答えてくださった皆さん、どうもありがとうございました。m(_ _)m
>>865 そういえばFreeをやらないことなんて考えたことなかったな。
実際破棄しないと、どういう風に非常に危険なんだい?
フリーズで終わりじゃないの?
>>869 フリーズが起きるかどうかはクラスによる、けどあまり起こらない。
ふつーのメモリはDelphi のメモリマネージャが解放する(?)ので
自前で取得したメモリとかハンドルとかのリソース解放漏れが
発生するのが一般的に起きる問題だと思う。
‥‥間違っているかな?
>>869 TStringListを開放しないだけでフリーズなんてするわけないだろ
872 :
Delフサギコ ◆zE1iiRdQ :02/05/28 05:15
_____________ ∧,,∧ / ミ ゚Д゚ミっ < あさから質問っす。 |''U ̄| \______________ | ̄ ̄| / ゙ヽ ( ゚Д゚ ) 質問だからage! 人____ノ テキストファイルとバイナリファイルを区別する には、どんしたらよろしかりけりでしょうか? 余計な制御コードの有無かなんか の条件判断でわけるのがいいんでしょうか? もうひとつ質問。 適当にサンプルコードを入力していると usesするユニットが増えていて 実際にリリースする時には 余計なものがざっくり入っている場合があり、 そのせいで、exeのファイルサイズが 不必要にでかくなってしまうことがあります。 uses不要なunitを簡単に取り除くことはできるでしょうか? 知ってたら教えてくださいませー。
>>872 ASCIIかSJIS以外のコードが来た時点でバイナリ。
まぁ、テキストとバイナリの差なんて微妙なもんさ。
874 :
Delフサギコ ◆zE1iiRdQ :02/05/28 06:56
_____ ∧,,∧ / ミ*゚Д゚,,ミ < もそっと教えて。 ミ つ つ \_____ @ミ ミ (ノ'''''∪ どうやって、 > ASCIIかSJIS以外のコードが来た時点でバイナリ。 文字がASCIIかSJISコードかってのを 調べるのでしょうか? 微妙な差ってのはそんな気がしてましたが。 1文字のファイルなんて、判断つかないしなあ,,,
perlのJcode.pmでは[\x00-\x06\x7f\xff]が含まれていたらバイナリと判別してた。 fileコマンドは定義ファイル次第?
>>874 この方法の怖いところは5GBのファイルの最後の一バイトが突拍子もない値だっただけで
テキストファイルではありませんエラーが出るところ。
>>872 昔のDOSでテキストファイルでもctrl+Z以後に#0とかゴミがあるばあいがあるから
後ろの数バイトはctrl+Z以後を判定に含め以内ように
文字コードが ShiftJIS とか判っているなら それが崩れてないかチェックするとか
uses を自動的に外すには
ファイル名を与えると 先頭のuses を分解して 1個づつ外してはファイル出力し
DCC32でエラーが出るかどうかチェックさせて 不要な uses を検出するという
そういうアプリを作るしかないのでは?
GUIアプリで作って、不要な uses を外した uses 行を出力してくれるような
クレクレクレクレ
∧,,∧
ミ,,゚Д゚彡 ソウスコウドくれくれ厨
ミ つ⊂ミ でもいいですか?
ミ ミ
∪ ∪ どうやってSJIS判定したらいいのかも
サパーリ....
usesの方は
C# vs Delphi Round 1
http://pc.2ch.net/test/read.cgi/tech/1021550705/195 uses Windows; {$APPTYPE CONSOLE}
procedure Exec(const Cmd: PChar);
var SInfo: STARTUPINFO; PInfo: PROCESS_INFORMATION;
begin
GetStartupInfo(SInfo);
CreateProcess(nil, Cmd, nil, nil, False, 0, nil, nil, SInfo, PInfo);
WaitForSingleObject(PInfo.hProcess, INFINITE);
end;
var F: Text;
begin
Assign(F, 'b.pas'); Rewrite(F);
Write(F, 'begin Write(''Hello World'') end.');
Close(F);
Exec('dcc32 -cc b.pas'); Exec('b.exe');
end.
これを応用してなんとか
ならんもんだろうかしら。
>>878 俺の休みまで待てるなら書いてもいいけど
∧,, ∧ ミ*゚Д゚*ミ ま" ,,うれすぃお言葉。。 ミ ⊃⊂ミ サンクスコ ミ ミ ∪ ∪ 待ってますので マターリで作ってくださいませ。
>>878 …そのコードは使い捨てなのでCloseHandleを省略してしまってますけど、フサギコさんわかってますよね?
function isShiftJIS(s:string;var p:PChar):boolean; var siz:Integer; begin p:=PChar(s); siz:=Length(s); while Siz>0 do begin dec(Siz); case p^ of {ShiftJisの第一バイト} #$81..#$9F , #$E0..#$EF: begin inc(p); //次の文字が {ShiftJisの第2バイト}でなければ if p^ in [#$40..#$7E,#$80..#$FC ] then inc(p) else begin Result:=false;Exit;end; end; {EOF } #$1A: begin Result:=True; exit; end; #0: begin Result:=false; exit; end; #$09, {TAB} #$0d,#$0a,{改行} #$20..'~': inc(p); else begin Result:=false;Exit;end; end; end; end; function MojiTest(s:string):string; var p:PChar; var isMoji:Boolean; begin isMoji:= isShiftJIS(s,p); if isMoji then if p^ = #$1A then isMoji := (Integer(p)-Integer(PChar(s))) <5; if isMoji then Result:='たぶん文字' else Result:=IntToStr(Integer(p)-Integer(PChar(s))) +'文字目が$'+IntToHex(Ord(p^),2)+'だから変'; end; ///////////////// 試験用 コード ///////// var w:String; begin w:=Memo1.Lines.Text; Memo2.Lines.Add( MojiTest(w)); w[random(Length(w)-1)+1]:=Char(random( 7)); Memo2.Lines.Add( MojiTest(w)); end;
あっと isShiftJIS でループ前か最後に Result:=True; を入れといて
あ、さらにバグ カナを忘れてたのと、漢字の場合の Siz更新を忘れてた。 メシ食べにゆく function isShiftJIS(s:string;var p:PChar):boolean; var siz:Integer; begin p:=PChar(s); siz:=Length(s); while Siz>0 do begin dec(Siz); case p^ of {ShiftJisの第一バイト} #$81..#$9F , #$E0..#$EF: begin dec(Siz); inc(p); //次の文字が {ShiftJisの第2バイト}でなければ if p^ in [#$40..#$7E,#$80..#$FC ] then inc(p) else begin Result:=false;Exit;end; end; {EOF } #$1A: begin Result:=True; exit; end; #0: begin Result:=false; exit; end; #$09, {TAB} #$0d,#$0a,{改行} #$A0..#$DF,{カナ} #$20..'~': inc(p); else begin Result:=false;Exit;end; end; end; Result:=True; end;
別に文字コードとか関係なくテキストファイルはテキストファイルだよな。(ボソ
>>877 ただ、元のプロジェクトと違うアプリとして作ってしまうと
その uses したいファイルが見つからないというエラーも出てしまう可能性有
887 :
デフォルトの名無しさん :02/05/28 14:42
「Delphi 6 プログラミングバイブル」って6200円もする 本があって、かなり使える本なのですが、皆さんは 購入してます? 次期 delphi.net って、かなりコンポーネントの使い方が 違うんじゃないかと思うので....
>>887 します
.netは次次期になるんじゃなかた?
889 :
デフォルトの名無しさん :02/05/28 15:50
>887 コンポーネントじゃなくて、コントロールの 事かな? BDEとSQLLINKは、無くなるらしい。
>>889 ParadoxとdBASE用のBDEは残るんでしょ
891 :
デフォルトの名無しさん :02/05/28 21:18
いま、趣味で、WebBroker+IIS使ってWebアプリケーションを作ってるのですが、 データの保存先にデータベースを使いたいと考えています(掲示板なんですが)。 で、BDE+Paradoxにするか、ADO+Accessにするか、dbExpress+MySQLにするか 悩んでいるのですが、運用面ではどうなんでしょうか。 BDEとAccessはそれなりに触ったことがあります。MySQLは軽いとの噂を聞いて 気になってます。
あ、BDE+Accessというのは無しで。
漏れ的には他プラットフォームにも転用できそうなdbExpress+MySQLがいいかも。 しかし、漏れはMySQLをいじったことがないヘタレなので参考にならない罠。
IBX+FireBird はいらんかね〜
俺はDelphiが大好きです。 大好きで大好きで仕方がありません。 いや、むしろ好きすぎて嫌気を感じます。 誰か、Delphiの弱点をたくさん教えてください。 シェアがないから会社で使えないとか、そういう事でなくて、 もっとDelphiの性能的な弱点を。 それを知れば、これからも俺はずっとDelphiを愛していられる…。
>895 無いなぁ。
>895 C#やってみたら(IDE付で)? Delphiの古臭い部分がかなり改善されてて その差異がそのままDelphiの欠点になってるのがわかるから。
>>891 BDE+Paradoxは先が無いからやめといた方がいいかもな。
>>898 TDataSetレベルで使えばMySQLとどう違うんだという話になると思うのだが?
TQueryで使えば他のDBと操作感は同じだし?
>>897 むしろDelphiの2way-toolっぷりがすばらしいことを再確認しただけですが何か?
確かに言語は洗練されてるけどねえ?
>>895 プログラミング言語愛しちゃってどうすんだヴァカ。
Accessみたいに毎回仕様が変わるより 仕様が変わらなくてデータがそのまま使えるのなら それはそれで使い勝手がいいかも
>>891 漏れも
>>894 に同意でIBX + Firebirdおすすめする。
いま仕事で使ってるがかなりいい感じ。
日本語ドキュメントが少ないが。
>>895 mapとかhashとかstlで簡単にできるような事が自分で実装しないとできない。
Delphi用のライブラリはC系のライブラリよりずっと数が少ない。
>>903 キャッシュアップデートって使えますか?
BDEの時はあれがすっごく便利と思ってたんで。
>>897 金無いしな…。
具体的にどう古臭いんですか?
>>901 だって…だって…Delphiが美しすぎて…。
Delphiが完璧すぎて生きるのが辛い!(笑)
>>904 スキなくせしてまだ全然詳しくないから前半はよくわからない。(苦笑)
後半は結局シ(ry (泣)
C#は現代的かもしれないけど、タカピー 料理のメニューは多いけど電子レンジでチンばかり メニューにない料理を作ろうとしたらシランプリで助けてもくれない Delphiは 古風だけどしっかり現実的で、2人で頑張ろうって思わせてくれる 一つ料理するにも自分が手伝ってやらなくちゃいけない所もチャームポイントだし そして色んな所を自由に触らせてくれるのが最高 自分も成長するし、彼女も俺が成長させるって思わせてくれるんだ
C#話始めるとM$信者やDel厨に荒らされるのでよそでやろうぜ。
>>909 そもそもC#の話ってスレ違いだと思われ。
だからC#な話をしたければ別の板/スレへ逝くのは当然だと思われ。
912 :
永遠のwindows95ユーザ :02/05/31 00:17
外出かと思うけど Del6のSampleタグにあるShellTreeViewとShellListViewは MemCheckで見る限りではメモリリークを起こすね(各2回ずつ) ソースがあればなんとかなるところだろうけど見当たらないし 使えないとすれば、見栄えがいいだけにちょっと残念だね
>>913 取り消し
Demos\ShellControlsに入ってた・・・これならなんとか使えそう
>>913 Borland Developer Networkに修正済みソースがおいてあったような
気がする。落としてないので,どこを直してるのかはわからんが。
まあ,ソースを見つけられたみたいだし,自分なりに直すのも良いと
思うけどね。
[Delphi:65307] Re: ShellTreeView で現在のフォルダを指定文字列で変更する方法 _____ ∧,,∧___ /修正版の情報が載ってるけど /ミ,,゚Д゚ミ/\< メモリクが修正されてんのかな? /| ̄∪∪ ̄|\/ \_____ |____|/
>>906 使えるようだが、ちゃんと機能してるかどうかは自信無し。
いまのところCacheUpdate + Transactionで制御してるけど
思ったとおりに動いてる。
918 :
デフォルトの名無しさん :02/05/31 19:29
delphi5ってどこかで落とせないんですかねえ? pascalならあるんですけど授業と食い違うんですよ
>>918 D6パーソナルならあるけど、授業と食い違うって事?
FindDialogでMemoコンポーネント内を検索したいのですが、 TMemoにはFindTextメソッドが無いため、うまくいきません。 それで FindDialogのonFindイベントでTCustomRichEdit型のオブジェクト変数を宣言して 使おうと思ったのですが、何故かうまくいきません。 何故ですか? また、Memo内検索で一般的に使われていると思われる方法はどの様なものなのでしょうか? ご教授お願いします。
>>918 割れ厨なら氏ね。
マルチポストなら氏ね。
923 :
デフォルトの名無しさん :02/05/31 23:47
中古ソフト屋でお金払って落とす。
925 :
デフォルトの名無しさん :02/06/01 00:26
>>924 がんばりますっ!
>>925 ふんばりますっ!
ED: TRichEdit; でもエラーが出る…(泣)
誰か…教えてくだせー。。。
>>921 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;
procedure TForm1.Button1Click(Sender: TObject); var pos,initpos:integer; begin if Memo1.SelLength = 0 then initpos := 0 else initpos := Memo1.SelStart+1; pos := FindStr(Memo1.Text,Edit1.Text,initpos); if pos <> -1 then begin Memo1.SelStart := pos; Memo1.SelLength := Length(Edit1.Text); Memo1.SetFocus; end else Beep; end; procedure TForm1.Button2Click(Sender: TObject); var pos,initpos:integer; begin if Memo1.SelLength = 0 then initpos := Length(Memo1.Text)-1 else initpos := Memo1.SelStart-1; pos := RevFindStr(Memo1.Text,Edit1.Text,initpos); if pos <> -1 then begin Memo1.SelStart := pos; Memo1.SelLength := Length(Edit1.Text); Memo1.SetFocus; end else Beep; end;
おらは923じゃなかった!(泣)
>>927-928 すげぇ!(パチパチ
でも、例えばTRichEditとかにMemoの内容をAssignして、
FindTextメソッドを使うという技は使えないんですか?
RichEditを非表示にして、Memoの全行をコピーして RichEdit側で検索して、あった所をMemoで表示して… ああ、大変だ。
タスクバーから表示を消したいのですが、 ShowWindow(Application.Handle,SW_HIDE); で消えません。 何故なんでしょうか? 環境は Win2k + Delphi6Personal です
>>931 Application.ShowMainForm := False;
をプロジェクトソースファイルに追加するってFAQがあるんだけど、
それじゃダメなの?
>>930 RichEdit1.Lines.Assign( Memo1.Lines);
資源の無駄だけど、少なくとも面倒じゃないんだよってことで一応。
>>929 それに気付いたなら自分で試そうね。
>>927-928 FindDialogという単語が入ってないですが、
それでFindDialogから検索できるんですか?
つか、p^ ってポイント型って奴ですよね?
それ、おいらわかりませぬ。。。
>>930 それも考えたんですけどぉ…。
何で 変数名: TRichEdit; で宣言できないか不思議で気持ち悪いっす!(泣)
>>932 レスありがとうございます。
それじゃぁメインフォームも消えちゃうんです。
何が原因なのかさっぱりで・・
>>931 SetWindowLong(Application.Handle, GWL_EXSTYLE,
GetWindowLong(Application.Handle, GWL_EXSTYLE) or WS_EX_TOOLWINDOW);
>>934 >何で 変数名: TRichEdit; で宣言できないか不思議で気持ち悪いっす!(泣)
uses ComCtrls;
>>936 できました!
ありがとうございます!!
よろしければ
ShowWindow(Application.Handle,SW_HIDE);
これとは何が違うのか教えていただけないでしょうか?
>>937 ありがとうございます。
でもそれもムリでした。
メインフォームがでてきません・・
>>939 何が違うって、関数が違うとしか言えんのだが。
付録のMSWinHelpかMSDNで調べなさい。
>>941 分かりました、調べてみます。
みなさんありがとうございました
>>937 禿thx!
でも、Createするとパラメータが足りねぇ…、宇津田刺乃迂…。
AOwnerとか出てるけど、継承ではないっすよね、ワケワカンネ。
>>921 procedure TForm1.Button1Click(Sender: TObject);
var
a:TRichEdit;
FoundAt: Integer;
begin
a:=TRichEdit.Create(Self);
a.Parent:= Self;
a.Lines.Assign( Memo1.Lines);
FoundAt:=a.FindText('hoge',1, Length(a.Text),[stMatchCase]);
Label1.Caption:= IntToStr(FoundAt);
a.Free;
end;
>>927-928 の方法はTFindDialog.OnFind に928のButton1Click相当の
ロジックかけばいいでない?
pos := FindStr(Memo1.Text,Edit1.Text,initpos);
のEdit1.Textはもちろん FindDialog1.FindText にしてね
オレの環境ではあのFAQで消えるんだが、Win2kだとだいぶ違うってことだろうか? Win2kいじったことない。 パソナルに付録のMSWinHelpってのあったかな? >それじゃぁメインフォームも消えちゃうんです。 ↑これがよく分からんが、まぁうまくいったんならOKだね。うん。
>>945 > パソナルに付録のMSWinHelpってのあったかな?
あるよ。
>>944 おぉっ、親切なお方再ハッケソ!
試そうと思ったらTRichEditで宣言できなかったり、Createでパラメータが足りなかったりして無理だったのれす。
どうもありがとー!(泣)
Createの時にパラメータがいる時といらない時ってどう違うんでしょうか?
継承ではないですよね?(^^;
>>921 TRichEditに限らずコンポーネントは TComponent を継承するから
TComponent のCreate が要求する引数AOwnerが必要なのです。
何故 TComponent が AOwnerを要求するかはヘルプをみてくれい。
"継承ではないですよね" は意味不明。継承関係は復習してきてくれや
>>948 なるほど…。
継承に限らず、オブジェクト指向を勉強しなくては。
Delphiの初心者本って、コンポーネントの使い方とか、IDEについてにページを裂き過ぎて、
オブジェクト指向はわかりずらいですよね。
(と、最近Javaの本をちらっと見て思った。)
熟読します!
親切にどもでした。
DelphianWorldが繋がらんのだが、なんでだろ。誰か知ってる?
>>949 DelphiはどうしてもIDEやVCLがウリだから初心者本はその
華やかな部分を大々的に書きたがるんだよね。
でObjectPascalの言語仕様についてはあまり書かれない。
ホントはなかなか味のある言語だからじっくり調べると面白いよ。
漏れも初心者本に書いて有るようなことが煮詰まったときに改めて
ObjectPascal言語ガイドを最初から読んだら目から鱗が落ちまくった。
(加えて初心者本の言語関係の記述のいい加減さに愕然とした・・・)
言語仕様を丁寧に解説した本やページってあまり無かったから
いつか自分で作ってみようかなって思ってたら、
http://pc.2ch.net/test/read.cgi/tech/1021201697/550 の方が漏れが考えてたことと同じ様な事をやってくれた。
そんなわけで、これ↑おすすめ。
「クラスとオブジェクト」の章をじっくり読むといいよ。
>>949 そういう点で評価が高いのに、「Delphi オブジェクト指向プログラミング」という本があるんだが
残念ながら、今は絶版で手に入らない・・・・。
(復刊依頼はここで
ttp://www.fukkan.com/vote.php3?no=4407 )
で、同じ著者がもっと昔に書いた、「ゲーム&&オブジェクト指向プログラミング」という本が
けっこうお勧め。Delphi以前の本だけど、Delphiの祖先のTurbo Pascalを使って解説してる
からDelphi使いなら、じゅうぶん読める。こっちはまだ売ってる・・・
あとは、やっぱり、オブジェクト指向を書籍で勉強するなら、Java読めるといいかも(笑
Object Pascal判るなら、Javaっても、読むだけなら、大差無いから簡単だし。
関係ないけど、最近、リファクタリング、を読み始めた。けっこう面白い(笑)
>>951 その書き込み、前に見たことあるけど、そんなに良い物だったとは…。
落としてみました、ありがとうございます、作ってくれた人もありがとう。
>ObjectPascal言語ガイドを最初から読んだら目から鱗が落ちまくった。
読んでみたい!
それは確かDelphiと別売りでも買えますよね?
Borlandに電話してみようかな。。。
>>952 そのページ、ついこの間オブジェクト指向の本が欲しくて、
検索して見たページです。(^^;
Javaの本をちらっと読んだら、Object PascalよりJavaのオブジェクト指向の方を先に覚えちゃった。
それくらいDelphiとJavaの本の質はレベルが違う。
(オブジェクト指向を学ぶという点で。)
>>953 ObjectPascal言語ガイドはDelphiヘルプの一部ですが・・・
パッケージを買ってきた人なら紙媒体もあるし、Del6Parsonalな
ひとでも標準でインストールされるはず。
>>954 ヘルプにあるんすか…(恥
VCLリファレンスしか見たことなかった。。。
でも、紙媒体で欲しいから、Borlandに電話してみよーっと。
つーか、
>>951 で紹介してもらった物とDelphiヘルプの言語ガイドって全く同じなんすね。
勘違いしてた。。。(汗)
逃げっ!
959 :
デフォルトの名無しさん :02/06/05 13:19
心の隙間埋めて下さい・・・・。
960 :
デフォルトの名無しさん :02/06/05 13:24
v (゚ω゚) <まだちょっと早いかな? /( )\ /'\
もーいいよ、邪魔だから sageで埋めてくれよ でも定期的に新スレの案内も書いてよね。
v (゚ω゚) <おっ!おいらのこと呼んだ? /( )\ /'\
Linuxイラナーイ 1000!
Linuxイラナーイ 1000!
Linuxイラナーイ 1000!
Linuxイラナーイ 1000!
(゚Д゚) ageんなヴォケが!!
(゚Д゚) ageんなヴォケが!!
(゚Д゚) ageんなヴォケが!!
(゚Д゚) ageんなヴォケが!!
(゚Д゚) ageんなヴォケが!!
(゚Д゚) ageんなヴォケが!!
(゚Д゚) ageんなヴォケが!!
(゚Д゚) ageんなヴォケが!!
Linuxイラナーイ 1000!
Linuxイラナーイ 1000!
(゚ε゚)♪〜
(゚ε゚)♪〜
(゚ε゚)♪〜
(゚ε゚)♪〜
(゚ε゚)♪〜
(゚ε゚)♪〜
(゚ε゚)♪〜
(゚ε゚)♪〜
Linuxイラナーイ 1000!
イラナーイ
|-□□-| \ - / 900ですね
|-□□-| \ - / 901ですね
|-□□-| \ - / 902ですね
|-□□-| \ - / 903ですね
|-□□-| \ - / 904ですね
|-□□-| \ - / 905ですね
|-□□-| \ - / あとは勝手にどうぞ
Linuxイラナーイ 1000!
Linuxイラナーイ 1000!
Linuxイラナーイ 1000!
_
/ `j
/ /`ー' ちょっときみィ
〈 `ヽ
`、 ヽ∧_∧
>>999 〉 ) (`Д´)!
/ ノ  ̄⌒ヽ 「 〉ノ
ノ ' L `ヽ./ /ヽ
/ , ' ノ\ ´ / )⌒
( ∠_ ヽ、_, ' ミ
i 、 ヽ
_,, ┘ 「`ー-ァ j
f" ノ { /
| i⌒" ̄ / /_
ヾ,,_」 i___,,」
ヽ l //
――― ★ ―――
// | \
/ /. | \
/ |
逝ってよし
-  ̄ ̄ ―
/
/ ヽ
∧_∧_
| ( ´Д`)  ̄"⌒ヽ
| / ) ヽ' / 、 `、_
γ --‐ ' λ. ; !
f 、 ヾ / )
! ノヽ、._, '`"/ _,. ‐'"
| j ヽ 〈_,,,ノ" ヽ
! ヽ 冫 y' .ノ
`、 \ | / /
\、ヾ | | イ-、__
l.__| }_ l
_.| .〔 l l
〔___! '--'
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。