【Delphi初心者】今から始めるDelphi Part01
1 :
デフォルトの名無しさん :
03/09/01 22:18
夏休みもおわったっていうのに、どうして次から次へと糞スレが…
質問です。png 画像を表示したいです。どうしたらよいですか。
質問です。gif 画像を表示したいです。どうしたらよいですか。
6 :
デフォルトの名無しさん :03/09/01 22:23
Delphiは7になってどのように変化しましたか? VCL7は機能変更ですか、機能拡張ですか? どのような機能が拡張されていますか? Delphi6ではVCL7を使用できないのでしょうか?
>>5 Netscapeコンポーネントを利用してください。
質問です。Netscapeコンポーネントを利用したいです。どうしたらよいですか。
夏休みは今日までじゃなかったのか!?
にしても、
>>1 は糞スレ立てるなボケ
10 :
デフォルトの名無しさん :03/09/01 22:36
Netscapeコンポーネントって
12 :
デフォルトの名無しさん :03/09/04 13:40
>>6 Delphi.netに向けてコンパイラがやかましくなりました。
VCLはpro以上じゃないと意味ないかな IntraWebだけは楽しいです。
質問です。夏休みを増やしたいです。どうしたらよいですか。
14 :
デフォルトの名無しさん :03/09/04 13:47
質問です。夏休みを増やしたいです。どうしたらよいですか。 ただし、駅前に限定します。
今年のですか? 今年のならタイムマシンを発明して下さい。 来年のですか? 夏休みの多い学校に転校しましょう。 10年先に夏休みがあって欲しいならせめて公務員になりましょう。 プログラマにだけはならないようにね。
DMC = Delphiマンセー厨
引きこもればいいんじゃないかな
質問です。pcx 画像を表示したいです。どうしたらよいですか。
ぐぐる。 > 20
>>21 ぐぐっても表示できませんでした。
>>22 そのページみても表示できませんでした。
悔い改める
リンクをつかうんですかぁ。
>>26 ImageEn を使ってみる。ありがと。
29 :
デフォルトの名無しさん :03/09/08 00:07
Delphiやっても将来がないことに気付きました。C#やります。
ばかだね。 プログラミングやるなら将来ない事に変わりはないのに。 どうせ何やっても将来ないならDelphiで楽しんだほうが人生楽しいと思うけどね。
新しいドトネト厨釣り堀はここですか?
そうです。最近数が激減したのでなかなか釣れませんが。
34 :
デフォルトの名無しさん :03/09/20 13:51
最近VCLというボーランドのライブラリ名を 汎用的に使っている奴がいるな。 どうせただの一人だろうが。
>1は part01てことはpart10まではスレを伸ばす気があるってこととみた。
>>36 はぁ ?
普通に、Delphi/C++ Builder 用のライブラリのこと言ってるだけだろ ?
どこが汎用的なんだ ?
39 :
デフォルトの名無しさん :03/09/23 19:27
質問!!
すみません、自己解決しますた。
どんな質問だったんだろう…
42 :
デフォルトの名無しさん :03/09/25 23:18
今から始めるバッファオーバーフロー
43 :
デフォルトの名無しさん :03/10/03 23:21
今から始めるバッファオーバーフロー
function SetRotFont(Canvas:TCanvas;Font:TFont;deg:double;back:TColor):TSaveFont; var lf:LOGFONT; begin lf.lfCharSet := Byte(Font.Charset); lf.lfEscapement := round(deg*10) ; lf.lfHeight := Font.Height; lf.lfWidth := 0 ; lf.lfOrientation := 0 ; lf.lfItalic := Byte(fsItalic in Font.Style); lf.lfUnderline := Byte(fsUnderline in Font.Style); lf.lfStrikeOut := Byte(fsStrikeOut in Font.Style); lf.lfOutPrecision := 0 ; lf.lfClipPrecision := 0 ; lf.lfQuality := 0 ; lf.lfPitchAndFamily:= 0 ; if fsBold in Font.Style then lf.lfWeight := FW_BOLD else lf.lfWeight := FW_NORMAL; if AnsiCompareText(Font.Name, 'Default') = 0 then StrPCopy(lf.lfFaceName, DefFontData.Name) else StrPCopy(lf.lfFaceName, Font.Name); Result.newFont := CreateFontIndirect(lf); Result.oldFont := SelectObject(Canvas.Handle , Result.newFont); SetTextColor( Canvas.Handle ,ColorToRGB(Font.Color)); Canvas.TextFlags := 0; if back=clNone then begin Canvas.TextFlags := ETO_OPAQUE ;Canvas.Brush.Color:= back ; end; end;
type TSaveFont=record oldFont:HFont; newFont:HFont; end; procedure FreeFont(Canvas:TCanvas;var oldFont,newFont:HFont); begin SelectObject(Canvas.Handle, oldFont); DeleteObject(newFont); end; 使い方、 with SetRotFont(Canvas,Font , 90, clWhite) do try Canvas.TextOut(x,y,s); //この文字描画は90度縦方向に描画出来る finally FreeFont(Canvas,oldFont,newFont);end; このセットで使用して下さい。
元スレ(
>>1 )は相当の基地害です。無視進行でお願いします。
47 :
デフォルトの名無しさん :03/10/15 08:25
アプリ起動時(フォームが出る前)にコントロールキーが押されているか判断したいです。 Googleで探したけど、良い方法がみつかりません。 ヤバいくらいにクールなやりかたを教えてください。
これは? GetKeyState(VK_CONTROL)
_________ ∧,,∧ / ヤバイくらいに ミ*゚Д゚彡 < 普通のやり方です。 ミつ旦(ミ~~ \ どぞ。 @ミ ミ  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ∪''∪ ヤベーヨ ヤベーヨ function PressKeyCode(const VirtualKey: Integer): Boolean; begin if ((GetAsyncKeyState( VirtualKey ) and $8000) = 0) then Result := False else Result := True; end; begin if PressKeyCode(vk_control) then ShowMessage('コントロール押しすぎ!'); if PressKeyCode(vk_Shift) then ShowMessage('シフト押しすぎ!'); Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run; end.
ありがとう
51 :
デフォルトの名無しさん :03/10/17 09:21
delphiを使用してバイナリファイルをテキストファイルに変換したいのですが やり方がさっぱりで・・・ charとpic形式が混じった物なのですがアドバイスをいただければ幸いです char(8)…8byte pic(15)…8byte pic(11,2)…6byte(11桁+小数2桁) を読み込んでテキスト化したいのですが 構造体?みたいなのを宣言して読み込めばいいのでしょうか?
>>51 ここは終わったスレだから、くだすれdelphiのほうに
質問したほうがよさげ
つか削除依頼だしてこい
>>1
>>51 それだけなら
var buf : packed record
name1 : array[0..7] of char;
num1 : array[0..7] of byte;
num2 : array[0..5] of byte;
end;
として、
Stream.Read(buf,sizeof(buf));
で呼んで
num1,num2は16進数変換してから小数点やゼロ差プレスを入れたらどうなの?
Delphi関連の本スレはこちらです。類似スレに注意。
55 :
デフォルトの名無しさん :03/10/23 21:46
おながいです、おながいです、とても困っているので教えてくさい。 漏れはVBからdelに移行した物ですが、サパーリわからなくて困っています。 vbの場合、あるファイルをTxt_typeという構造体で開く時に Open App.Path & "\***.txt" For Binary As #1 Put #1, 1, Txt_type Close #1 としますよね。 これをdelで同じように開くにはどうしたら良いのでしょうか?
>>55 TFileStream使ってやったんじゃ駄目かい?
普通にアクセスするより楽だと思うけど・・・
>>55 もしくは小さなテキストファイルを扱いたいなら
TStringListを使ってみる。。。
>>55 >>56 のでいいんでない?
もしくはTMemoryStreamに全部いれて地道に・・・
TFileStream や FileOpen, AssignFile の使い方が 解らないというレベルの話だと思うが。
因みに扱う形式はテキスト?バイナリ?どっちなのだ? どんなデータを作りたいのかが判らんなぁ〜
Delphiの標準的な 文字列の型ってなんですか?
>>62 stringはそのままAPIの引数に使えますか?
使えないとしたらどのようなコードを書けばいいですか?
>>63 使えるよ。
C,C++から呼び出すときに使えないけどC++Builderからなら使えたはず。
>>63 String型はそのままAPIに引き渡すのは良くないですよ。
SetLengthでAPIが使用する文字列のサイズを指定してから
引き渡すようにして下さい。
>>64 >>65 で結局どっちなのさ。具体的なコードがあれば嬉しいんだけど。
たとえばstringにHELLOっていれて
APIのMessageBoxで表示するコード。
>>66 希望のサンプル
procedure TMainForm.Button1Click(Sender: TObject);
var
msg: String;
begin
//-----
msg := 'めっせーじじる';
if (MessageBox(self.Handle, @msg[1], 'きゃぷしょん', MB_OK) = IDOK) then begin
end;
end;
こうでもいいよ。 if (MessageBox(self.Handle, PChar(msg), 'きゃぷしょん', MB_OK) = IDOK) then begin
var s:AnsiString; nSize:Cardinal; begin nSize:=256; SetLength(s,nSize); GetUserName(PChar(s),nSize); s := PChar(s); ShowMessage(s); end; 添え字が0から始まるChar型の配列も文字列として扱うことが可能。 文字列を受け取るAPIを多用するならこちらのほうが便利。
あぁ、そうそう。文字列を受け取る場合も知る必要があるね。 なんで、stringじゃなくてAnsiStringになっているのさ? めんどくせーな。
って言うかいい初心者向けサイトない?
73 :
デフォルトの名無しさん :03/11/11 10:47
使い始めて一週間です プログラムの実行はF9でできるのですが 終了させるのにCtl+F2を押しても終了しません。 どうすればよろしいのでしょうか?
Alt+F4
75 :
デフォルトの名無しさん :03/11/11 11:35
>>74 ありがとう、ございます
(でも、なんで実行の表示と違うのだろう)
なぜに今からDelphiを始めるんだろう…? 確かに数年前まではMSの開発環境より言語仕様やVCLの面でDelphiが大きな アドバンテージを持っていた。 でも今から始めるなら.netがあるじゃん。言語仕様もクラスライブラリも Delphiのそれとよく似ているし、機能面では遜色もない。 昔からDelphiの人ならともかく、今からあえてDelphiを学習するメリットって あるのかな。
仕事で使うことになったんです
始めまして。1点質問があるのですがよろしいでしょうか? TQueryコンポーネントのFilterって基本的に「*」検索できないんでしょうか? DBはOracleを使用しているのですが、どうも正しい検索結果が得られません。 例えば、 Name ------- 田中義剛 というデータがあったとして、以下のようなFilterをかけてもこちらの思うような結果が得られません。 ・「Name = *剛」→ヒットせず。 ・「Name = c*」→ヒット(なぜ?) 何かFilterを使うときの注意などはあるのでしょうか?
TQueryなら SQL で LIKE で絞り込むのではダメかい?
初めまして、非常に低レベルな質問なんですがよろしくお願いします。 X と Y (ともに符号なし整数) の和が奇数かどうかを調べたいんですが、 Odd(X + Y)、 Odd(X) xor Odd(Y)、 X and 1 xor Y and 1 = 1 のうちどれが一番高速でしょうか。
Odd(X xor Y)
83 :
デフォルトの名無しさん :03/11/14 12:24
Cにおけるsystem()のようなものはDelphiにはないのでしょうか?
あります。
排他的論理和ってなんなんだ
排他的論理和 それはとても便利な演算
なんかすごそうですね。 ソンゴクウより強いですか?
おそらく五分。
最近Delphiの勉強を始めたのですが、何かゲームでも作っていきたいとおもいます。 でも、板違いですかね?
すぐにチャチャが入りますからね。 でも、このスレでこっそりやれば大丈夫でしょう。
やはり快く思わない人もいるみたいだから、やめておいた方がよさげだね。
真性の馬鹿か?ゲ制作技術板でやるだろ普通。
でもこのスレを有効活用するにはいいんでない? ゲームだと荒れそうだからゲーム以外のもの作ってみては?
ゲームを作るのが目的じゃなくて、勉強が目的で手段がゲームでも だと考えりゃいいんじゃないの
>>89 板違いかどうかは分からん。
でも応援してる(藁
>>93 あそこは「ひどいインターネットですね」の見本みたいなとこだからなぁ…。
ずいぶん前に見る気失せた。
なんであんなに荒らされてんだろう?
paradox使ってデータベースアプリの作成をやっているのですが、 たまに「ドライバをロードできません。」というエラーメッセージが表示されます。 これは一体何が原因なんでしょうか? 再現性がないために、原因が掴めません。 何か知ってらっしゃる方がいたら回答頂けませんでしょうか? 宜しくお願いします。
特定の条件下でCD-ROMを使えなくするようなコードを書きたいのです が、どのようにしたらいいでしょうか? 思いついたのは、レジストリをDelphiから操作して使えなくする事なの ですが、どこをさわればいいのかわかりません。゜。・゜(つД`)゜・。 この他にDelphi側からハードをコントロールする方法はありますか? 現場の人が勝手にどんどんゲーム等をインストールしてしまう事への 対策なのです。(´・ω・`)
>>98 PC の蓋開けて、CD-ROM の電源ケーブル抜いときゃいいと思うけど。
つーか会社だったら、CD-ROM の蓋の部分に、「勝手にインストールするな !! 見つけたら、解雇するぞ !!」とでも書いた紙貼っときゃいいだろ。
まじめにやるなら、OS を WindowsNT 系にしてグループポリシーで制限すべきだと思うけどな。
XPで管理者権限外したの使わせたらインスコとかはできないんじゃ?
つーか、あんまり変なコーディングするべきじゃないと…。 その話からすると、コーディング云々より人間性の問題かと…。 変なコーディングして思わぬ事が起きた場合から発生する問題が恐いかと…。
レス遅れてすいまそん。 実はこの現場ってのは、国外でして・・・。ローカルの従業員(しかも工員) に「絶対使うな!」と言ってもかなり難しいようです。 OSは予算の関係でそう簡単には変えられないので、ソフトでなんとかな らないかと泣きつかれてしまった日曜プログラマなのでつ。(´・ω・`) でも、どうやら無理そうですね。 あちらにはそのように返答しておきます。 ありがとうございました。
OS が 98 系なら、セキュリティの概念がない OS だから、何に対してもプロテクトを かけることは難しいでしょう。ソフトレベルで小細工しても(たぶん)容易にはずされる。 98 系なら、OS リブートは当たり前ですから、割り切って、BIOS レベルで CD-ROM を切り離したら? BIOS 設定にパスワードロックがかけられればなおよし。 単にエクスプローラーから見えないようにするなら、TweakUI で設定できます。おそらく レジストリでも。けどドライブ自体は存在するので DOS に降りられたら終わり。 後は CD-ROM からの自動起動を OFF にしておけば、DOS を知らないユーザーなら何とかだませるだろう。
そこに勤務する日本人はPCに詳しい人がいないので、出来たらプログラ ムを作って簡単にやりたいらしいのです。 (CD-ROMを使う必要がある場合もあるので、ずっとそのままでも駄目な 為) きっとBIOSなんていじらしたら、そのまま永遠に起動させなくしそうです・・・。 例えばTweakUIで実現しているCD-ROMを見えなくする方法は、Delphi では出来ますか? やはりレジストリを操作するのだと思うのですが、どの部分をDelphi側 から変えてやらなければいけないかご存知の方、教えていただけないで しょうか? Delphiと若干関係無い質問で申し訳ございません。
>申し訳ございません というなら、場所を変えなさい。 Windows 板がよいかと思うよ。
今日からdelphi始めました。 変数・配列の宣言が変わってるよね・・・ なんだろう、VBに近いのかな? とりあえず簡単なゲームぐらいは作れるようになりたいぽ
ゲー板のがいいんじゃない? 簡単なゲームってのがどの程度のものか知らないけど(w
CD-ROMドライブ自体を物理的に外してしまうのじゃだめ?
>>98
>>108 >>104 > (CD-ROMを使う必要がある場合もあるので、ずっとそのままでも駄目な為)
110 :
デフォルトの名無しさん :03/12/15 23:51
氏ね
スレ違ってたらすみません。 さきほど Delphi6 Personal を入れてこれから勉強始めようと思っているのですが インストール時に FW で許可した D6REG.EXE は今後も通信する可能性あるので しょうか?また、DELPHI32.EXE がブロックされていたのですが、許可しておいた方 が良いのでしょうか?
>>112 スレ違いじゃないけど、「ボーランドさんに聞け」と。
>>112 バージョンアップのお知らせとかだよ。
好きにしる。
他の情報が漏れてるかどうかはしらん
>>113-114 回答ありがとうございます、お知らせしてくれるとは親切ですねー。
最悪もれて困るようなデータは入っていないマシンなので、許可しておきます。
通信しっぱなしとかだったら考えてしまいますけど。
>>115 バージョンアップと言っても無料じゃないから親切ではないかと。
CMと似たようなもん
たまに表示されるがどうせ見ないから邪魔なだけ
TRrichEditを使って色付きのビュアーを作成しようとしているんですが 74kほどのファイルを表示させるのにもかなり時間(十数秒)かかるんですが、 画面に必要な分だけ表示させて画面スクロールしたらまた表示するようにして 表示速度を上げる方法をしりたいんですが、どこかにそういった情報乗ってる場所 ないでしょうか? 別のコンポーネントとかでもかまいません。
時間がかかっているのはどこですか? RTF テキストの読み込み時に時間がかかっているのであれば、 データを書き換え/挿入している部分の前後を RichEdit.Lines.BeginUpdate と EndUpdate ではさんで、よけいな再描画が起きないように するというのがよくある話。
>画面に必要な分だけ表示させて画面スクロールしたらまた表示するようにして 見える部分だけをデータとして用意する仮想リストボックス風の処理をしたいのでは無いでしょうか。 RichEdit にそんな機能あったっけなぁ?
>>118 ソース出しますね。
まだこの処理の後色つけ等してるんですが・・・
AssignFile(InF, ファイル名);
Reset(InF);
log.Clear;
while Not EOF(Inf) Do
Begin
Readln(InF, Buf);
log.Add(Buf);
end;
logViewer.Lines.BeginUpdate; //これ入れたらかなり改善したけど
//ここから
logViewer.Lines := log;
//ここまでの処理が大変時間かかる。
logViewer.Lines.EndUpdate;
ようは、EmEditorとか色付きで表示されているのにあれと同じような
レスポンスがないんで何をしてるのかなぁっておもってるんです。
これでどれくらいになりますか? with logViewer.Lines do begin BeginUpdate; LoadFromFile(ファイル名); EndUpdate; end;
ドルに換算すると1jくらいになります
今デバッグ中なのかリリース版(exeを普通に起動)したのか わかる変数ってありませんか? デバッグ中だけしたいことというのがあるんですが 今のところ debug=1とconstで設定してリリース時にはconst=0とかにして リコンパイルしてリリースしているんですが、これをミスるとデバッグ版を 出してしまいそうで。
74kのファイルでの時間測定
私のやり方では
8923ms
8903ms
9053ms
平均8959ms
>>121 さんやり方では
271ms
310ms
281ms
平均287ms
約31倍速度アップしました
後1Mのファイルを開いてみたら
911msとかでたので比例的に時間かかるというわけでもなさそうですね。
ありがとうございました。これつかって作ってみます。
よくあるテクニックとして、社内デバッグ中であることを示す環境変数またはレジストリを準備し、 それが特定の値の時にはデバッグコードを動かします。 もちろん出荷製品のインストーラーにはそういう隠し設定は入れません。 もう少し微妙なテクニックとしては、プロセスがデバッガによって読み込まれているかどうかを 判断する API があります。
NT 系だと、IsDebuggerPresent とその一族を使ってデバッガにアタッチされていないかを検出できます。 95 系にはこの API がありませんが、その代わりに FS セグメントのオフセット 0x20 をチェックする。という 技法が使えます。Anti Crack 関連をぐぐってください。
1.IsDebuggerPresent関数 2.仮想デバイスドライバ検出 3.デバッガのウィンドウクラス名取得
裏で開く procedure TMainWnd.actListOpenHideExecute(Sender: TObject); var item: TListItem; thread: TThreadItem; begin (* *) if ListView.SelCount > 1 then item := ListView.ItemFocused else item := ListView.Selected; if item = nil then exit; if UILock then exit; thread := TThreadItem(item.Data); ShowSpecifiedThread(thread, Config.oprGestureThrOther, true, false, true); SetRPane(ptList); end;
全ての新着開く procedure TMainWnd.actOpenAllNewThreExecute(Sender: TObject); var index: Integer; item: TListItem; thread: TThreadItem; begin if ListTabControl.Tabs.Count < 1 then exit; for index:=0 to ListView.Items.Count-1 do begin item := ListView.items[index]; if item = nil then continue; thread := TThreadItem(item.Data); if (thread.lines > 0) and (thread.oldLines >= thread.lines) and (thread.lines < thread.itemCount) then begin ShowSpecifiedThread(thread, Config.oprGestureThrOther, (Config.oprOpenThreWNewView xor (GetKeyState(VK_SHIFT) < 0))); SetRPane(ptView); end; end; end;
全ての新着を裏で開くにはどうソースを書いたらいいか分かりません わかりやすく説明してもらえませんか?
age忘れました
132 :
デフォルトの名無しさん :04/01/21 17:43
>>123 デバッグを示すファイルを作成して そのファイルがあるときは デバッグ中とすればいいのでは?
133 :
デフォルトの名無しさん :04/01/23 23:37
ゲームつくるにはデルヒが一番らくですか
ゲームっていっても色々あるんだが じゃんけんゲームとか もぐらたたきゲームとか RPGとか ゲーム板いったほうがいいよ
ありがとー。いってみます
1番楽。 VB,C#はゲーム向けではないし、C++は大変。
137 :
デフォルトの名無しさん :04/02/02 00:48
動きの激しい(シューティングなどの)ゲームを作るとちょっと描画がもたつく 感じがするのですがDelphiで高速な描画というとどういった方法がセオリーですか? 今はImageList.Drawを使っています
ゲ製作板にいくほうがいいかと
>>138 失礼しました、こちらは描画一般は扱わないのでしょうか
(過去ログにピクセルの描画に関しての高速化があったのであえてこちらに書き込んでしまいました)
ゲ製作に逝ってきます
141 :
OpenGL :04/02/13 02:37
上の人とも関係するかもしれませんが、 DelphiでOpenGLを扱うやり方について、過去ログや文献、webで 参照すべきものがあれば教えていただけないでしょうか。
>>142 有難うございます!
今、徹夜で頑張ってます(多分朝の10時くらいから寝ると思いますが…)。
144 :
デフォルトの名無しさん :04/02/23 13:16
Delphi6 Perのヘルプのチュートリアルには誤記があるようですが、 誤記の内容と本来書かれるべき内容を教えてください。 他のスレやサイトに書かれている場合は、 そのスレやサイトのURLかタイトルなどを教えてください。
147 :
デフォルトの名無しさん :04/02/23 16:24
trim関数を使ってもtabが取り除けないです ヘルプには空白と制御文字をと書いてますし 制御文字で検索するとtabは制御文字で間違いないようです うまくやる方法を教えてください
>>147 文字列の先頭と末尾しか取り除けないが、中間にあるのまで取り除こうとしてない?
>>147 AnsiReplaceStrやAnsiReplaceTextでどうでしょ?
(制御文字は自分ではやったことないけど大丈夫じゃないかな)
>>148 >>149 ありがとうございます、解決しました
>>148 氏のアドバイスの後、まさかと思いつつ調べたところ
memo1上で目視確認で改行されてたものが実は繋がっていたというミスでした
お騒がせしました
ええとどこに書くか迷ったのですがはじめての事なのでこちらに書きます。 いままで98SEにDelphi 6 Personalをインストールして使っていたのですが WinXP sp1へ移行する事になったのでDelphi 6もXPへ移行しようとしたら 対応OSがWindowsMe Windows2000 Windows98 WindowsNT となっています。 XPへインストールしてもいいのでしょうか。
>>151 俺XP sp1で使ってる
何の問題も無いよ
ていうかレス速すぎてずっとこのスレ見張ってたみたいだが
>>152 どうもです。
どのスレか見失ってしまったのですが、XPは対応していない
という書き込みを見たような気がしたものですから。
thxです。
Delphi6 Personalはもう落とせないのでしょうか。OSを再インストールして、 もう一度Delphiを入れ直そうとしたらDelphi7(使用期限あり)に変わってたようで。
ダウンロードページが書き換わってるね。 ファイルはまだある Ftp://ftpa.borland.co.jp/pub/delphi/personal/BorlandDelphiPersonalEditionJP.exe
delphi7ってアカデミーパックないの? studio proを買おうと思ってるんだけど、アカデミーパックが見付からない。
159 :
デフォルトの名無しさん :04/05/30 23:29
こんばんわ ListBoxについて質問です。 リソースファイルを以下の様に宣言して、画面に表示されたのですが、 値の追加はどのようにすればいいのでしょうか? SendMessage(hWnd,LB_INSERTSTRING,0,s); では値か表示されませんでした・・・ PAGE1 DIALOG DISCARDABLE 0, 0, 160, 124 CAPTION "未読" FONT 9, "MS Pゴシック" BEGIN AUTOCHECKBOX"送受後(&R)",101, 12, 12, 100, 10 LISTBOX 151, 14, 20, 80 , 65 PUSHBUTTON"送信(&D)", 199, 140, 72, 48, 14 END
SendMessage(GetDlgItem(hWnd, IDC_MCDLIST), LB_INSERTSTRING,0,Longint(PChar('kkk'))); で出来ました。ふぅ
163 :
デフォルトの名無しさん :04/06/06 00:22
FileListBoxに対してフルパス もしくは fileNmaeを与えることによってそのList内での順番を得るにはどうしたらよいのでしょうか? FileListBoxの中身 001.txt 002.txt 003.txt ・・ ・・・ ・・ ・・ これに対して 003.txt(もしくはC:\・¥・・¥003.txt)という引数をを入れた場合の返り血として 3 がほしいのです。
>>163 FileListBox1.Items.IndexOf('003.txt');
0から始まるから、2が返ってくるけど。
165 :
デフォルトの名無しさん :04/06/09 02:36
質問ですが、 配置したボタンをクリックすると、同時に起動している別のエディタのカーソルの位置に 指定の文字列が入力されるようにするにはどのようにすればよいのでしょうか?
以下のコードで起動してるメモ帳に Edit1 の内容を挿入できましたが、 ウィンドウの検索方法が厳密でないので、同名のウィンドウが複数 存在する場合、予期しない動作をするかもしれません。 procedure TForm1.Button1Click(Sender: TObject); var Target: HWND; begin Target := FindWindowEx(0, 0, 'Notepad', '無題 - メモ帳'); if Target <> 0 then begin Target := FindWindowEx(Target, 0, 'Edit', nil); if Target <> 0 then SendMessage(Target, EM_REPLACESEL, 0, Integer(PChar(Edit1.Text))); end; end;
メモ帳の場合はエディット部分がウィンドウズのEDITコントロールですから、 EM_XXXX メッセージが使えます。でも、秀丸とか EmEditor とか他のメジャー なエディタは独自のエディットコントロールを使っていますので、EM_XXX や WM_XXXX のようなメッセージにはほとんど応答しません。クリップボード経由 ならなんとかなるかも知れませんが。
168 :
デフォルトの名無しさん :04/06/11 21:07
SelectDirectoryで取得したパスの一階層上のパス(C:\AAAA\BBBBをC:\AAAに) を取ろうと思い。ExtractHTTPFieldsで分解してリストボックスに表示させました。 uses HTTPApp var DirPath: string; chrSepa,chrWhite: TSysCharSet; sltResult: TStringList; begin DirPath := DirPathBox.Text; sltResult := TStringList.Create; sltResult.Clear; chrSepa := ['\']; // 分解 ExtractHTTPFields(chrSepa,chrWhite,PChar(DirPath),sltResult); // 表示 ListBox1.Items.Assign(sltResult); sltResult.Free; end; その結果次の様になったのですがドライブを指定した場合不明な文字・が出てきます。 パス :C:\AAAA\BBBB | C:\ 文字列:C: | C: :AAAA | ・ :BBBB | このままだと、この後にfor文でリストボックスのカウントを使って一階層上のパスに 結合させようとした事ができません。 この・は何なのでしょうか。出ないようにすることはできるのでしょうか? また、もっと簡単に一階層上のパスを取得する方法が有ればそちらも教えて頂きたいです。
169 :
デフォルトの名無しさん :04/06/11 21:10
えーと、C:\とC:\AAAを分解した時のリストボックスのカウントが ・のせいで同じ2になってしまうのです。
170 :
デフォルトの名無しさん :04/06/11 21:48
書き忘れ…使ってるバージョンはデルファイ5です
なんだか、ワケワカだが > パスの一階層上のパス(C:\AAAA\BBBBをC:\AAAに)を取ろうと思い なら、ExtractFilePath() をつかって ExtractFilePath('C:\AAAA\BBBB') → C:\AAAA\ だけど。
つづき ExcludeTrailingBackslash(ExtractFilePath('C:\AAAA\BBBB')) → 'C:\AAAA'
ExtractFileDir
おお!
176 :
デフォルトの名無しさん :04/08/06 11:53
Delphi使い始めの初心者です。だれか助けてくださいonz str: string; if OpenDialog.Execute then str := OpenDialog.FileName; with IBDatabase do begin // InterBaseDBへの接続 Params.Clear; Params.Add('user_name=SYSDBA'); Params.Add('password=??????'); Params.Add('lc_ctype=sjis_0208'); DatabaseName := str; Open; end; with IBTransaction do begin DefaultDatabase := IBDatabase; Active := True; end; こんな感でデータベースとの接続が出来るのは分かりました。 OpenDialogで選ばれたフォルダがローカルの時は問題なく動きます。 例 strの中身←'c:\ib\test.gdb' LAN上の別のパソコンのDBに繋ぐにはどうしたらよいのでしょうか? 例 strの中身←'\\server\サーバー\ib\test.gdb' とかで繋がらなくてエラーになります。 strの中身を'server:d:\ib\test.gdb'に書き変えると繋がる場合、 strをどのように書き換えたら良いのでしょうか? 'd:'指定が要らずに繋がったはずなのですが、やり方を忘れましたtt どなたか教えてください。
共有フォルダの設定や、\\鯖\D$\Program Files\...とかじゃないんですか? Explorerのアドレスバーへの入力ではそれでアクセス可能かと。 権限を得る方法は、知らないので誰か フォローおねがいしまつ。
177さん、ありがとうございます。 Explorerのアドレスバーへ \\server\ib と入力したら確かに test.gdbファイルが見えました。 見えるって事は権限あるって事ですよね? 理屈から考えると、パス込みのファイル名は \\server\ib\test.gdb のはず なのですが、IBDatabase.FileNameにそのまま渡してもうまくいきません。 う〜ん、行き詰まってしまいましたonz
'server:d:\ib\test.gdb'の場合、そのマシンのInterbaseサーバが処理してて、それとクライアントが通信してるんだよね。 Interbaseサーバは違うマシンのDBファイルを扱わなかったと思うが違うか?
179さん、ありがとうございます。 違うマシンのDBファイルじゃダメなんですね。 分かりました。他の方法を考えます。
>>180 安易な発想ですが、ネットワークドライブを割り当ててみたらどうですか?
質問なのですが、ShellListViewコンポーネントでフォルダを移動したときに ディレクトリパスの表示を変えたいのですが、どのイベントで「フォルダを移動した」 ということがわかるのでしょうか?? onChangeでは取れないみたいなので。。 よろしくお願いします。
age~
>>184 できたー!!ありがとうございます。
onDblClickでやったらできました!
ふぅ、勉強不足。。
質問です。swf(flash) を表示したいです。どうしたらよいですか。
ShellExecute
>>186 ShowMessage('swf(flash)');
>187 その単語で検索していろいろとやってみます。 >188 センスなし!次ぃっ!
>>189 swf(flash).Visible:=True;
>>186 表示したい場所に TWebBrowser を貼り付ける。
WebBrowser1.Navigate('ファイル名.swf');
もし 'ファイルのダウンロード' が出てくるならもう少し工夫が必要。
192 :
デフォルトの名無しさん :04/08/23 17:08
6.0使ってます。 QuickReportを使って、Paradox.DBの内容を一件ごとに一頁印刷し 改頁するというアプリを作ってるのですが、うまくいきません。 用紙は定形ではなく連続用紙なので、レポートの設定で用紙サイズと 同じ「カスタムサイズ幅210x長さ140」と設定してるんですが、実際 印刷するときはA4になってしまっているようで、改ページ位置がA4と 同じ位置になってしまいます。 プリンタ設定を見てみると用紙サイズA4になっているので、「ユーザー 定義1」に手動で変更してみても駄目です。 どうしたら縦140mmの位置で改ページできるでしょうか。
>>186 関連付けで実行したいなら
>>187 IEコンポで開きたいなら
>>191 そのまま開きたい場合。
Flashのバージョンや環境によって少々変化するかもしれません。
ActiveXコントロールからの取り込みでShockWave ActiveX Controlを取り込み
以下のような感じで開く。
LoadMovieの第一引数はよくわかりません
procedure TForm1.Open1Click(Sender: TObject);
begin
if OpenDialog1.Execute then
ShockwaveFlash1.LoadMovie(0,od.FileName);
end;
>193 ご丁寧にありがとう御座います。無事うまくできました。 >187,>191 ご助言感謝します。ありがとう御座いました。
195 :
デフォルトの名無しさん :04/09/02 06:26
質問です。 ある9つのEditに、1から9の、それぞれ数字をランダムに入れたいと思います。 ランダマイズ関数だけでは数字がかぶってしまうことがあると思うのですが、どのようにすれば全て異なる数字になるのでしょうか。
配列に1..9をセットしてシャッフルする
197 :
デフォルトの名無しさん :04/09/02 06:57
>>196 ありがとうございます。
シャッフルというのを使ったことがないのでわからないのですが、どう記述すればよいのでしょう。
>>197 こんな感じとか
procedure TForm1.Button1Click(Sender: TObject);
var
num:array[1..9] of integer;
i,j,tmp:integer;
begin
for i := 1 to 9 do num[i] := i;
randomize;
for i := 9 downto 2 do begin
j := Random(i)+1;
tmp := num[j];
num[j] := num[i];
num[i] := tmp;
end;
Memo1.Clear;
for i := 1 to 9 do
Memo1.Lines.Add(IntToStr(num[i]));
end;
199 :
デフォルトの名無しさん :04/09/02 18:09
delphi6落としたんだけどまず何からつくればいい? オンクリックメッセージとかなしで。
>>199 作りたいものがあるならそれを作ればいいし
単純に勉強したいならメモ帳クローン。
新規、ロード済み、編集中とかの状態を管理することを覚えられるし
標準的なメニューの実装方法をどう書くかとか
バージョン情報のダイアログの作り方とか一通りマスターできる。
>>199 プロジェクトを保存するディレクトリを作ろう。
俺はサブディレクトリ検索して分類・ランク付け・削除機能付のエロ画像をランダムに表示するビューア作ったな。
>>199 画像サムネイル表示機能付きエクスプローラ。
それまんまExplorerじゃん ShellExecute一発でできるよw
おー たくさんのレスありがとう。 やる気が出たよ
207 :
デフォルトの名無しさん :04/09/02 22:28
>>198 お礼遅くなり申し訳ありません。
それではEditに書き込んでいく場合は、下の方のListBoxをEditでループさせていく、ということでしょうか。
本当にありがとうございます。
208 :
デフォルトの名無しさん :04/09/02 22:33
意味不明なこと書いてました ListBoxをEditでループさせていく ↓ Memo.LinesでなくEditに置き換える
>>208 そうだね。Edit1 〜 Edit9 だとすると
for i := 1 to 9 do
TEdit(FindComponent('Edit'+IntToStr(i))).Text := IntToStr(num[i]);
のように。
as 使った方がいいよ。
どうして? キャストはノーコスト、as はいっぱいコードが走る。 確定時になぜに as ?
Edit1 という名前の TListBox があるかも知れない、とか心配してるんじゃないの
Edit1ってLabelがあったらクラッシュするから。 素のキャストをするのはisでチェックしたものだけにしといた方がいい。 プログラミングってそういうものだよ。
nil を心配してるんだろ
> Edit1 〜 Edit9 だとすると これ読めないの?
TLabel に Edit1 っていう名前を付けないようにする。 プログラミングってそういうものだよ。
>>214 nilはasでも検出できない。
>>215 そういう別の場所で決められたルールには依存したくないってこと。
begin〜end内で完結した正しい記述ができればそうしたい。
パフォーマンスが問題にならないところで安全なコードが書けるなら安全に書く。
という習慣づけをしてるってだけ。強要はしないけどね。
as がいいことは分かった。でも TLabel に Edit1 っていう名前を付けるのはそれ以前の問題
>>216 >別の場所で決められたルールには依存したくないってこと
なら、FindComponent は、はなから使えないじゃん
for ループ内 FindComponent 使ってるんだから、名前にある種の規則性を前提に していることは明白だろう
>>219-220 FindComponentの話はしてないよ・・・
is/asの使い分けの基準のことしか言ってないよ。
210は独りことかよ
「馬鹿に何を言っても無駄」の良い例ですね。
>is/asの使い分けの基準のことしか言ってないよ。
is/asじゃなくてキャストとasの使い分けだった。
>>222 210は自分じゃないよ。それ以降が自分が書いたレス。
ま、主張は同じだけど。
で 理由は 「Edit1ってLabelがあったらクラッシュするから。」ですか?
実行中にはコンポーネントの名前をユーザは変えられないんだから、キャストで問題ないんじゃないの
>>225 違う。もっと一般的な理由。
一般に外から渡されたTObjectなオブジェクトの参照はキャストすべきでない。
asを使うかisでチェックしてからキャストすべき。
理由はもし想定外のオブジェクトが渡されたときデバッグが困難になるから。
ただし、動作速度が問題になるようなケースではこのルールは適用しないことも考慮すべき。
補足すると
>>209 のケースに限定すればはっきりいってどうでもいいよ。
どうしてと聞いたので理由を述べただけだし。
ただ自分は常にasを書くね。
>>217 でも言ったとおり
どっちでもいいなら安全なコードを書きたいし
外部の条件を一々考慮せずになるべく統一的に書きたい心理があるから。
以上。もう寝る。
>>227 >一般に外から渡されたTObjectなオブジェクトの参照はキャストすべきでない。
はい、もちろんこれは同意します。
>補足すると
>>209 のケースに限定すればはっきりいってどうでもいいよ。
そうですね、FindComponent は「想定外のオブジェクトが渡されたとき」ってないですよね。
だから、
>確定時になぜに as ?
と訊いたのです。その回答が
>Edit1ってLabelがあったらクラッシュするから。
というものだったので、それは納得できないと。どっちでもいいのではなく、as が
この場合は冗長なのだと。
> 外部の条件を一々考慮せずに
一々考慮するべきだと思うよ。
>プログラミングってそういうものです。
>>227 一般論に適合しないケースに一般論を適用しようとしたら無理があるだろ
>>228 >一々考慮するべきだと思うよ。
まぁ、ベーシックは全てグローバル変数だから、
いちいち考慮する必要がありますけどね。
私なら型チェックは徹底して行いますね。 冗長性というのは、is の後に as でキャストする事では?
>>209 ありがとうございました。
>>210 以降
私がいただいたアドバイスの派生ですよね。
難しすぎてわからず、何がなにやらというところなのですが(汗)、ありがとうございました。
>>228 >確定時になぜに as ?
>この場合は冗長なのだと。
それは問題があまりにも単純だからだよ。
イベントハンドラが数十個あってそのうちのいくつか(どれかはコーディングによって刻々と変化していく)
にはSenderに複数(場合によっては同一オブジェクトだったり異なるオブジェクトだったり)
渡されるような状況で、どのSenderにどのオブジェクトが渡されるか
ソースコード的にははっきり決まっているけどプログラマがきっちり把握するのが怪しくなるような
ケースであってもasが無駄だと思う?
>>228 >>233 へのレスはやっぱいらないや。
一つ聞きたいんだけどバグがまったくない状態でasが失敗するようなコーディングってする?
つまりasは純粋にバグ検出のためにだけ使っているかどうか。
それだけ聞いておしまいにしたい。
>>234 > バグがまったくない状態でasが失敗するようなコーディングってする?
バグが無くて、as が失敗するようなコードをどうやって書くのかな。
バグが無いことを一般には確信出来ないから as をつかうんだろう。
>>209 の場合は
>>233 も言うように単純すぎて as 使う意味がないから違う。
>>231 >冗長性というのは、is の後に as でキャストする事では?
is のあとに as で動的型チェックするのは冗長であると確信できるからですね?
わたしは Edit1 という名前のコンポは TEdit であると確信できるようなプログ
ラミングをすべきだと思います。
TObject.ClassNameは駄目なの?
as のような動的型チェックは、上位クラスでも true を返すようにしなければ 多態性がつかえなくなるので、TObject.ClassName ではだめです。
× >true を返すようにしなければ ○ >成功するようにしなければ
241 :
デフォルトの名無しさん :04/09/03 13:04
えーと エディタでソースかいてるときの 最後のend.は何ですか? なんでここだけend;じゃないの?
end; → 文の終わり end. → プログラムの終わり
243 :
デフォルトの名無しさん :04/09/03 13:10
らじゃ
ヘルプより ・すべてのソースファイルと同じように,プロジェクトファイルはピリオドで終わります。 ・ユニットは end とピリオドで終わらなければなりません。 ・ブロック内の複数の文およびユニットの初期化部と終了処理部の複数の文を区切るには,セミコロンを使用します。
>end; → 文の終わり これは違う。文の区切り。だから次に区切るべき文がない場合はなくてもよい。 end; の直前の文の末尾とか
正しくは end. → プロジェクトまたはユニットの終わり でした。失礼しました。
end; → 文の区切り end. → プロジェクトまたはユニットの終わり
248 :
デフォルトの名無しさん :04/09/03 13:26
どうもでした。
as の前に nil のチェックを入れた方が良さそう。
as のみの場合は軽いチェックにしか使えないな。
var
Hoge: THoge;
begin
Hoge := nil;
(Hoge as THoge).Test;
Hoge.Test;
end;
どちらも Test が呼び出されるけど、おかしいよね。
どうしてBorlandは nil as で例外を出さないようにしたのかな。
nil is は False なのに。
昔のDelphiは nil is が True を返してたけど、
このあたりの仕様の解りずらさが関係してたのかな。
>>237 私は型チェックもするし、紛らわしい名前も付けないように努力してますよ。
>>249 >私は型チェックもするし、紛らわしい名前も付けないように努力してますよ。
237 です。どうも真意が分かって頂いてないような気が・・・・
IDE が配置したコンポは、name プロパティーとインスタンス変数の名前が一致
しています。プログラマは、どのインスタンスがどのクラスなのか知っていない
とコードが書けません。'edtName' とか 'edtAge' に対応する edtName と
edtAge が TEdit であることを知っているからこそ
edtName.Text := 'John';
edtAge.Text := '23';
というコードが書けます。
(FindComponent('edtName') as TEdit).Text := 'John';
と書くのは、'edtName' に対応する edtName が TEdit であることを知って
いる場合は、冗長じゃないか、と言いたいのです。edtName が TEdit でない
かもしれないから as を使うべきだ、という主張どおりなら
(edtName as TEdit).Text := 'John';
(edtAge as TEdt).Text := '23';
と書かねばならず、コードは as だらけになってしまうでしょう。これは変です。
Sender:TObject で渡された場合には、実行時型チェックはキャストの前に必須
である、ということと FindComponent() の場合とは明らかに違います。
人間はミスを犯すもの。 コンパイル時チェックができないのであれば、実行時チェックをしましょう。
「両取り逃げるべからず」という将棋の格言があります。素直にそれに従って 玉を取られて負けた、という笑い話があります。格言も適用できるかどうか 頭を使って考える必要がありますね。
>>251 > コンパイル時チェックができないのであれば、実行時チェックをしましょう。
なるほど。
edtName.Text := 'John';
の場合は edtName の型チェックはコンパイラがやってくれると。しかし、
FindComponent('edtName')
が返すオブジェクトの場合はそうではない、と。たしかに。
208さんのコードは
var
cmp:TComponent;
for i := 1 to 9 do
begin
cmp := FindComponent('Edit'+IntToStr(i));
if Assigned(cmp) and (cmp is TEdit) then TEdit(cmp).Text := IntToStr(num[i]);
end;
とすべきですね。ありがとう。
>>252 格言には互いに相反するものもありますよね。でもなにがしかの先人の知恵が
入ったものなので、場面場面で適用すべきかどうかは一考する価値がありますよね。
ありがとう。
>>249 >as の前に nil のチェックを入れた方が良さそう。
as で nil チェックができないとすると、どんな場面で as を使うんでしょうね。
>if Assigned(cmp) and (cmp is TEdit) then TEdit(cmp).Text := IntToStr(num[i]);
では as の出る幕がありませんよね・・・・・
あっ、間違えた。is は nil チェックするんでしたね。 if (cmp is TEdit) then TEdit(cmp).Text := IntToStr(num[i]); で OK でした。 Assigned は余計でした。でも as の出番がない。
FindComponentの場合なら、最も多いミスは違った型が返されることでなくて 名前のタイポやiが大きくてあり得ない名前になったりした場合にnilが返される 場合なんだから as じゃ役に立たない、ってことね
なんかNullReferenceExceptionとInvalidCastExceptionを混同してるアホがいるな。
両者のエラー検出は全く別物。asは望んだ型の参照を得るのが目的なんだから
nil参照前提で取得することも普通にある得る。だからasでnilチェックをしないのは当然。
幸いC#では通常の型キャストで必ず実行時型チェックが入るから
Delphiみたいにアホ開発者がバグをばら撒くのを未然に防止している。
それからお前らが書くような小規模ゴミアプリの開発においては
プログラミング作法なんて全く不要。
好きなだけゴミコードを撒き散らして結構。好きにしとけ。議論なんて時間の無駄。
まともな議論したいなら、まずはまともな知識を得た上で経験を積めと。
>>255 >if (cmp is TEdit) then TEdit(cmp).Text := IntToStr(num[i]);
はバグがあった場合素通りしてしまう最悪なコード。
予期しないnilに対しては例外を発生させるべきで、それならただのキャストの方がまだまし。
>>256 >予期しないnilに対しては例外を発生させるべきで、それならただのキャストの方がまだまし。
結局、
>>208 場合、どうすればいいの?
> 幸いC#では通常の型キャストで必ず実行時型チェックが入るから JIT だから、実行時情報が取りやすいからでしょ
>>258 >結局、
>>208 場合、どうすればいいの?
>>249 の言うように as に先だって nil かどうかを確認するといいのでは。
var obj:TComponent;
for i := 1 to 9 do
begin
obj := FindComponent('Edit'+IntToStr(i));
if Assigned(obj) then
try
(obj as TEdit).Text := 'Test';
except
raise Exception.Create('InvalidCast');
end
else
raise Exception.Create('InvalidCast');
>>257 >予期しないnilに対しては例外を発生させるべきで、それならただのキャストの方がまだまし。
僕のD5では obj が nil でも TEdit(obj).Text で例外がでない。何事もなく通り過ぎる。
nil も含めて、TEdit 以外では例外を出すべきなんだから
if (cmp is TEdit) then TEdit(cmp).Text := IntToStr(num[i])
else raise Exception.Create('InvalidCast');
でいいと思う。
>>257 の説明を読んでも as が nil を参照したら例外を出してくれた
ほうが、ずっと便利だと思う。だって、実際、nil をキャストしたい場面が思い浮かばない。
現状の as がどの場面で使われるのかやっぱ分かんない。
Delphiで作ったexeファイルの名前を、「エディタ.exe」 にすると、 タスクバーに、「トディタ」って表示されるんですが…… これはOSのバグですか?? ちなみに環境は、win98 で Delphi6 Personalです。
exe の名前が表示されているんじゃなくて、Application.Title が表示されている。 Project.exe でも表示できるよ。 procedure TForm1.FormCreate(Sender: TObject); begin Application.Title := 'エディタ'; end;
>>260 TControl.SetText は Self = nil ならフィールドにアクセスしないので、
AVは起きません。
TButton や TLabel のインスタンスを渡すと、TEdit でキャストしても、
Caption が変更されるのでびっくり。
>>265 の説明でなるほどと。
ということは、C# の as は、InvalidCastException を NullReferenceException
に変換してるんだね。
>>257 の言うように
> なんかNullReferenceExceptionとInvalidCastExceptionを混同してるアホがいるな。
と同じで C# で as を使うと、区別できないのね。ま、仕様としては C# の as の
方がいいと思うけど。
>>257 は C# で as 使ってないんじゃないの。
C#のasユーザは、はなから混同もできないアホばかり、ってことになる
>>268 > InvalidCastException を NullReferenceException に変換してるんだね
?asで例外が起きることは無いけど。C++のdynamic_castと同じでnullを返すだけ。
>>270 >asで例外が起きることは無いけど。
それは
>>267 で書いてあるので知っている。返されたオブジェクトをそのままキャストしたとき、
null だったら NullReferenceException 相当が起こると。
Delphiのasの使い方がわからないとか言ってる奴は VCLのソースをas, FindComponentなんかで検索して読んどけと。 にわかPersonal厨には無理だろうけど。
えらそうにいってるだけで説明できないんだよな
お前らアホどもを納得させるのは不可能だよ。
えらそうにいってるだけで説明できないんだよな
全部じゃなくても
>>208 の場合は as を使ってどうやればいいのかと
>>276 FindComponentのキャストにasを使うだけだろ。
理由は上のほうで散々書かれているだろ。
それで納得できないアホにはこれ以上かける言葉が見つからない。
>FindComponentのキャストにasを使うだけだろ。
それだったら、
>>261 のほうがいいと思うな。
かなりヨスレ
ass には穴があるんだよ。
結局、だれも as の正しい使い方知らないみたい
>>279 そうだね。すべのキャストでそう書いとけばいいよ。
うん。いらないよ。使わないほうがいい。
ほう。 Delphi が発売されて9年余。この5日間で「 as 使え 」から「使わないほうがいい。」 に大転換!! すごいね、このスレ!
289 :
デフォルトの名無しさん :04/09/07 14:08
type ENullpoError = class(Exception); function NullpoCheck(obj: TObject): TObject; begin if obj = nil then raise ENullpoError.Create('ガッ'); Result := obj; end; ((NullpoCheck(FindComponent('Edito1')) as TEdit).Text := 'ぬるぽ'; ってやれば完璧
でも無理矢理 as 使ってるけど。is + キャスト で十分
なんかasがいらないことになっててワロタ。 そういやforもwhileもifとgotoがあるからいらないな。 つかCかアセンブラで十分。
コンピュータもいらないな。 人力で十分。
この際人間も要らないな
>>264 亀レスすいません。
ありがとうございます。
早速試してみます。
>>292 えらそうにいってるだけで説明できないんだよな
頭悪いのは笑うしかないんだよ
771 :デフォルトの名無しさん :04/09/06 22:49 そういうな。馬鹿は馬鹿なりに頑張っているんだ
299 :
デフォルトの名無しさん :04/09/08 17:51
TFormがICON化してる状態ってWindowStateがwsMinimizedかと思ったら、 違うみたいですね。 どうやって判断したら良いですか?
TFormがICON化ってのは、タスクバーに収まって画面が出てない状態のことでつ。
302 :
デフォルトの名無しさん :04/09/08 18:17
TDateTimePickerの初期表示を空にする方法教えて下さい。
>>299 function GetWindowState(WndHandle: HWnd): TWindowState;
var
pw : TWINDOWPLACEMENT;
begin
pw.length := SizeOf(TWINDOWPLACEMENT);
GetWindowPlacement(WndHandle, @pw);
case pw.showCmd of
SW_SHOWNORMAL:{=1}
Result := wsNormal;
SW_SHOWMINIMIZED: {=2}
Result := wsMinimized;
SW_MAXIMIZE: {=3}
Result := wsMaximized;
else
raise Exception.Create('WindowStateのエラー'+IntToStr(pw.showCmd));
end;
end;
>>300 procedure TForm1.Timer1Timer(Sender: TObject);
begin
if IsIconic(Application.Handle) then Beep;
end;
305 :
デフォルトの名無しさん :04/09/08 22:26
VBを学んでからDelphiに移ったという方が多いですが、そうしたほうがいいのですか?
移ったんじゃなくて複数使えるようになっただけだよ。
>>305 VC++に挫折してDelphiに移ったという方ならここに居るがVBは触った事ない。
て言うか、VC++はどの辺がVisualだったのかいまだに分からにゃい。
>>307 とりあえずコマンドラインでビルドしないからに1票
とりあえず VB と名前を共通にしたかったから、に20票
実はVirtual C++だったに1票。
20:1:1で309の勝ち
..............................................
ビクトリー コンバトラーの略です。
>>313 ああ、今度ガンダムAで連載されるコンバトラーVの続編だね。
315 :
デフォルトの名無しさん :04/09/10 15:54:55
ヴィジュアル系でもできるC++
MSはVisual Xシリーズでアルファベット制覇を目指すべき VA Visual Assembler VB Visual Basic VC Visual C++/C# VD Visual Delphi VE Visual Eiffel VF Visual Fortran
男はだれでもできるCw
318 :
デフォルトの名無しさん :04/09/15 04:55:23
OpenJaneDoe-Lovelyと言うのがソース付きなので、 自分でビルドしようと思ったのですが、うまくいきません。 どこがと言うと、ActiveXコンポーネントを二つ使わないと行けないのですが、 一つしか入ってくれず、もう一つは「既にそのクラスがあります」と言った メッセージが出ます。 環境はDel7Proです。 MS-HTTP何とかは入るのですが、MS-Internet何とかが クラスが既にあると言うことでパッケージになってくれません。 どうしたらよいでしょうか。
わかんないっす
>>319 TWebBrowser がすでにインストールされているからだと思います。
入手したソースを Grep 検索して uses 節の ShDocVw_TLB を ShDocVw に
置換するのでは駄目でしょうか?
プロジェクトオプションのユニットの別名でもいけるかもしれません。
>>321 お返事ありがとうございます。
お返事では方法は二つあると言うことでしょうか。
・ソースのコンポーネント?パッケージ?の引用部分を書き換える。
二つめが分かりません。
ユニットの別名とは何でしょうか。
>>1 今から始めるのはやめた方がいいと思う。
もうすぐ消える言語だし。
03:39:27
TWebBrowser は標準でついていますのでタイプライブラリを作成する必要は ありません。ユニットは ShDocVw です。 まず、Jane のプロジェクトファイル (dpr) を開いてください。 1 つ目の方法は、'検索' → 'ファイル検索' でプロジェクト全体を検索して uses 節で 'ShDocVw_TLB' を参照している箇所があれば 'ShDocVw' に直すと いうことです。 2 つ目の方法は、'プロジェクト' → 'オプション' を開いて、 'ディレクトリ/条件' タブにある 'ユニットの別名' に 'すでにある文字列;ShDocVw_TLB=ShDocVw' を設定するということです。 セミコロン以降を入力してください。 これでうまく行かないようなら Jane スレで聞いた方がよろしいかと思います。
>>325 ここまで親切にして頂きありがとうございます。
JaneDoe-Lovelyはソースを公開しており、
いじることから始められるので、IDEの勉強にもなるし、
プログラミングそれ自体の勉強にもなります。
一からだととても難しいですから。
かきわすれ。 まず、今現在のLovelyだと不具合がでるので それのないVerを探して、それから無改造ビルドとなるので、 結果には少々時間が掛かります 失礼します。
328 :
デフォルトの名無しさん :04/09/23 08:00:10
delphiで何かお勧めなリファレンス本あるかい OBpascalについても詳しいやつ。
俺もそれは興味津々だ。 ここで聞いてなければ、参考書スレで聞こうか。
標準のヘルプ嫁
332 :
デフォルトの名無しさん :04/09/23 20:31:28
下のやつめちゃくちゃたけーーーですね
うーん、その分の価値はあると思う
上のヤツは、amazon では在庫2点!だけ このごろDelphi本がめっきり減ってしまった。
近所の割と大きい本屋3つ回ったら、Delphi本壊滅。 オフィシャルコースウェア以外なくなってしまった!
335です。 1. なら、補充が間に合わなくてもじょじょに減っていくはず。だいたい3週間周期 で行ってるから、それはないと思う。違う本屋なのに、なぜか一斉に返本された感じ 言語のところでは C# 関連も減っている。新刊本が出てない。VB.NET ASP.NET と JAVA UML 関係が増えている感じ。
>VB.NET ASP.NET と JAVA UML 関係が増えている感じ。 趣味関係が減って、お仕事関係が増えたんだな
339 :
デフォルトの名無しさん :04/09/26 12:24:20
所詮 プログラムは趣味で手を出せる時代は終わったってことだ。 趣味でやるとしても積極的にベクターにUPするぐらいの気合がないと とても半端に手を出せないよなー。ポトぺタいじってもやりがいがないし。 今趣味でやるのならphpがお勧めかな。 ちょっとまえまではperlだったが。
340 :
デフォルトの名無しさん :04/09/26 12:26:52
VS.NETの中でもVBだけは公式本(基礎編)読めば驚くほど理解できるが delphiではそういうのはないからな。
341 :
デフォルトの名無しさん :04/09/26 12:34:16
昔は町工場でバイクつくって 大手のメーカーさえもおびやかす性能を出す例もあった。 しかし、それも遠い昔。 どんな技術も洗練されれば、素人は表面的に扱うだけで 中身にはさわることができなくなる。 プロも自分に許された一工程に携わるだけになる。 そのうちプログラムなんてボイラー操作技術学ぶのと 同じような認識になると思う。いやもうなってるか。
で今現在Delphi学んでなんか役に立つ?
自分次第
>>341 >いやもうなってるか。
そうですね。特に、.NET = WinFX になってくると、オブジェクトレベルの API に
なって、プログラミングがレゴブロックをつかって何かつくるような感じがしてきます。
デバイスドライバや組み込み系などの低レベル以外では、こんな傾向が強まってきて
趣味でプログラミングするのは、すくなくても Windows 上では面白くなくなってきた
ように感じます。
>>339 >ポトぺタいじってもやりがいがないし。
御意。
346 :
デフォルトの名無しさん :04/09/26 14:19:05
プログラミングの本質的なところを楽しみたいなら HaskellでもSchemeでもやっときゃいいのに。 といってもそもそも理解できないだろうけど。 お前らの愚痴り方は意味がわからん。
>>341 どうなんだろうね。
洗練されるほど、面白くなるものだと思うのだけど・・・
ボイラー操作技術も結構勉強すべき事も面白い所もありそうだけどね
ポトペタでできる部分をコードで書きたいんかなぁ? 俺ならポトペタでできる部分はポトペタでやって ポトペタでできない核の部分だけをコードで書くけどな。 ポトペタでできる部分って基本的にソフトの"ガワ"だけだし、 "ガワ"なんかいじってもやりがいないし。 もしかしてポトペタで完成できる程度のソフトしか作ってないとか?
自慢のRADをあっさりVB.NETに抜かれてしまったから 必死に否定したがってるんだよ。 それくらい察してやれよ。
>>344 > なって、プログラミングがレゴブロックをつかって何かつくるような感じがしてきます。
それは単に、自分がやる気がないだけでは?
たとえばブラウザを作るときIEコンポーネントを作ったら確かに
レゴブロックのような感じになる。
でも本来ブラウザを作るといったらタグ解析して適切な位置に描画する
などというプログラミングをするってことだ。少なくともIEが
コンポーネントとして簡単に使えない時代はそうしていた。
多分自分で作ってもIEよりもすぐれたものは作れないだろう。
しかし今でもIEコンポーネントを使わずにブラウザを作ることはできる。
レゴブロックのように感じてしまうのは、自分で作ろうとせずに使ってばかりとか
すでに優れたものがあるから作るのをあきらめとか、今までにない物を作ろうとしないとか
そういう考えをしている自分のせいだと思うぞ。
351 :
デフォルトの名無しさん :04/09/26 15:50:27
学校の授業などで限られた材料の中から 一番いいものをつくったやつを表彰するといった形ならば それなりにやる気もおきると思う。 しかし実用のためにつくるとなるとがんばっても既にあるものに 追いつくのがやっととなるとやる気は失せるな。 それでもやりたいやつはやればよいけど、 そういうやつはたくさんはいない→廃れる。 ってのはある意味自然な流れ。 歴史が証明している。
ただのユーザーでいたいならWin板に帰りな。 ただし市場活性化のためにもちゃんと金払えよ。
353 :
デフォルトの名無しさん :04/09/26 16:00:03
まあ、純粋に企業戦略に踊らされずいいプログラミング書きたいのなら linuxでC言語でコンソールプログラミングだけしておくのが ベストだな。 初心者がポトペタから入るという風潮が一番おかしい。
354 :
デフォルトの名無しさん :04/09/26 16:03:27
で、それで面白みを感じなくて 仕事にする気もないやつはもうprgやめたほうがいい。
あぼーん
貴重な休日にくんずほぐれつよくやるよ。仲の良いこと・・・
レゴブロックとか言ってポトペタを嫌っているのは GUI普及しはじめごろからプログラミングしてきた人だろうな。 そのころはGUIは苦労して作るものだった。 そのためプログラミング=良いGUIを作ることになってしまっているのだろう。 GUI部分以外に力を入れている人にとっては、 ポトペタはつまらなくて面倒な部分を便利に使えるツールと認識するが、 良いGUIを作ることだけがプログラミングの人は、自分が苦労して作っていた GUIを簡単に作れてしまうようになったわけで自分の仕事を取られたって気がするのだろう。 その点コンソールプログラミングから入った人は、そもそもGUIなんてない状態で プログラミングの面白さを知るわけで、ポトペタを嫌うことはないだろうな。 まあGUIなんていらないなんて極端な方向に行くのもちょっと困るが。
>>351 それは廃れるというよりか、
使えない奴=すでにあるものにしか追いつけない奴 が
淘汰されるだけのことじゃないのか?
はっきり言ってすでにあるものにしか追いつけない奴はいらないよ。
実用アプリを作りたいのなら、すでにあるもの以上のものを作らなきゃ。
やる気があっても、すでにあるもの以下のものは実用にはならない。
359 :
デフォルトの名無しさん :04/09/26 16:27:44
もともと書店からDELPHI本が消えているっていう話からはじまったんだろ? それはしょうがないっていうのはみんな否定できないところだろ?
プログラムなんて法律と一緒。 人間が作り出した法則を学ぶだけ。 作り出した人間の恣意に左右される。(企業戦略も含む。) 本質的も糞もない。 それがいやなら関わらないこった。
釣りはageなきゃw
>>360 >人間が作り出した法則を学ぶだけ。
20年以上プログラミングを趣味としてきたけど、これ、つよく思うようになってきた。
仕事は自然科学の研究なんだけど、それは神の法則について調べることなので、まだ
飽きないよ。人文科学の人は、人間や人間の行為とその結果に興味があるんだね。
プログラミングは人文科学じゃなく、数学に通じる論理の美しさがあるけど、OS 依存
なところは、知識としてもなにかむなしい感じがするね。MS のつくった六法全書を
勉強している感じはする。
>>362 君は実はプログラミングをしていないのだよ。
絵画にたとえれば君は絵筆の使い方を勉強しているだけ。
本当のプログラマは道具(API等)を使って自分の思うものを作るんだよ。
絵筆という道具を使って絵画を書くようにね。
君はまだまだ道具に使われているだけのようだね。
364 :
デフォルトの名無しさん :04/09/26 19:55:43
DeDeというDelphi用の逆コンパイラがあるらしいのですが、何処で入手出来るかご存知に方はいらっしゃいませんか? 自分なりにぐぐってみたんですがどうしても見つける事ができませんでした。
365 :
デフォルトの名無しさん :04/09/26 20:50:26
>>363 そう思いたい気持ちはよーくわかる。
趣味でプログラミングやるひとの大半は
それを信じよう、信じようとして
信心深さからMS大明神にお布施を惜しまない。
統一協会もまっつぁおです。
ボーランド菩薩もいるでよ。
略してボー薩
仕事でdelphi得意のデータベース構築とかに 特化して使う分にはそんなに乗せられてるって感じはしないな。 出費もあくまで経費だし。 ただ、なんでもできるよって言われてホイホイ乗せられてる personalユーザーはちょっとね・・って感じもするけど 本人が楽しめてるのなら構わないだろう。
苺きんたま
>>363 「OS 依存なところは・・・」だけを拡大解釈しているような気がするが。
>>363 >君は実はプログラミングをしていないのだよ。
なるほど。道具の周辺をうろうろしているつもりはないのですが、業務で使う以外
では、趣味とは言え、プログラミングではないのかも知れません。自分にはそのような
才能がないのかもしれせんね。Vector などで公開されているフリーウェアなどを
見てみると、半分以上は自分でも作れそうに思います。でも、ユーザの要望に応えて
メンテナンスを行う根気がありません。
趣味は別な方面に移した方がいいような気がしてきました。
アドバイス、ありがとうございます。
趣味でやる制御系はプログラムじゃない。 メーカーに乗せられてるだけだ。 趣味の場合は処理系の充実こそがプログラムだ。 将棋のAIをつくるようなのが趣味プログラムの王道。
いや、某iEPGサイトを使って自宅の家電に予約を入れたいんだが うちの家電は某iEPGサイトに対応してないからゴニョゴニョっと自 作してってのが趣味グラムだ。 当然、いきなりWEBブラウザを書き始めるなんて事はしない。 できるだけ少ない手数で、できるだけ短い時間で、とにかく動くもの を作る。
自動保全ソフトあたりもIndyやHTTPの勉強がてらに初心者にお勧め
そういえば苺きんたまもDelphiで作られていたそうだが・・
俺は仕事がらみで苺きんたま似のソフトをDelphiで作ろうとしてるが 仕組み自体は簡単そうだな
あっそ
ボタンを押してWindowsを再起動させたいのですが、どのようなコードを書けば良いでしょうか。 また、usesに何か追加する必要はありますか?
>>379 ,380
無事にできました〜
ありがとうございます。
タスクマネージャでなく、フォーム上のボタンを押すなどして任意のアプリ(プロセス)を強制終了させる ようなプログラムを作る事は可能なのでしょうか?_?
可能か不可能か答えれば気が済むんだな? 可能だ。
なるほど。できればそのコードも希望なのですが^_^;
385 :
デフォルトの名無しさん :04/10/01 16:12:22
?_? ↑ このAAは他でも見たな。そこでもコードくれって言ってた
>>385 熱心なんだろうな。
俺が教えられれば教えたいところだが、残念ながら知らんw
おれは質問自体の意味がわからんかった
外部のプロセスを終了させたいって事だよねたぶん。
いや、あっちのほう
クライアント側でcaseを使った条件分岐の数字と文字列を同時に送信し、それをサーバ側で受信するにはどうすれば良いでしょうか? クライアント[01,文字列]→サーバ[01(条件分岐),文字列(ダイアログボックスに使う文字列)]
あなた、あちこちで聞いていませんか?
異議有り!みたいなゲームを作りたいのですがどうすれば良いのでせう?
ガンガレ
フラグ勃った
実行ファイルをつくっているのはコンパイラ様なのだ。 お前らなんてコンパイラに下手な文章でお願いして つくってもらってるだけじゃん。 自分で実行ファイルつくった気になるんじゃないよ。
お前なんてパソコンに下手な文章でお願いして ここに書き込んでもらってるだけじゃん。 自分で書き込んだ気になるんじゃないよ。
お前もな
オマエモナー
そして俺もな
俺を忘れるな。
俺はコンパイラを奴隷として扱える。 めんどくさいことは全てコンパイラにやらせる。 俺は神なのだ。
糞スレ
糞には紙が似合う
TMenubarをインストールしようと思ったら、 baseclxがないとかでるんですが、 どうすればいいか教えてください。お願いしますm(_ _)m ちなみに6 Personalです。
インストールしてみたがどこから始めるのかさっぱり。 文字すら表示できない('A`)
IDE は起動した?
フォームは出せた?
>>405
>>406 次にIDEって何?フォームって何?
って質問がくるから注意w
Delphiで最初に作ったソフトは?
project1.exe
DelphiでRPG作りたいんですが、正直難しいと思います。 でもやりたいんです!!僕はDelphiでブロック崩し ぐらいなら作ったことあります。 今のところ、オープニングまで作ったのですが、どなたか僕に Delphiの基礎からすべてを叩き込んでくれませんか?? お願いします。
なんかここの質問って 「二階建のベランダ付きの家を建てたいんですが、どうすればよいですか?」 みたいな質問が多いような気がする… うん、いゃ、分かりにくいが、なんか、言いたくなっただけだ、それだけだ…
>>411 まぁまぁ。作業する前に困難さがわかるようになったら、どんな業界でも一人前といえるのさ。
「Excel はアセンブラで書かれていると聞きました。TurboAssembler で Excel のような
アプリを作るにはどうしたらよいですか?」という質問があったそうな。
「ガンガレ」としかいえないだろ?
VSってなんでこんな重いの
415 :
デフォルトの名無しさん :04/10/24 19:34:35
Delphi7のエディタで、行末でカーソル「→」を押すと次行の行頭に、 行頭でカーソル「←」を押すと前行の行末に移動するようにできませんか?
416 :
デフォルトの名無しさん :04/10/25 03:02:14
指定したフォントで文字を書きたいのですが、反映されてくれません。 Image1.Canvas.Font.Name := 'Arial Black'; Image1.Canvas.TextOut( x, y, 'ABC' ); どのように指定したらいいのでしょうか?
ショートカットすらないのか(プッ
>>416 Image1.Canvas.Font.Name := 'Arial Black';
Image1.Canvas.Font.Charset := ANSI_CHARSET; //追加
Image1.Canvas.TextOut( 10, 10, 'ABC' );
>>419 できました! ありがとうございます!!
421 :
デフォルトの名無しさん :04/10/25 17:00:12
GLDPNGを使ってPNG形式で保存しようとしています。 BMP形式での保存は問題なかったので。 png := TGLDPNG.Create; png.Width := bmp.Width; png.Height := bmp.Height; //png.Assign(bmp); png.Image := bmp; png.SaveToFile('test.png'); とやったのですが、書き出されたファイルは壊れたカラーテレビのようで 絵は微妙に縦長になるし、画面全体が縦のスプライトで埋め尽くされるし、 グレーになっているし。 Assign()でやっても同じでした。なにがいけないのでしょう?
422 :
421 :04/10/25 17:01:02
ごめんなさい、縦長ではなく「横長」でした。
>421 png.Width := bmp.Width; png.Height := bmp.Height; が冗長な気がする。これとっぱらってAssignしてもだめかね。 それと、bmpかTBitmapなら、bmpとpngのassignの間に、 中村センセーのTNkDIBでのassignを一枚噛ませてみるのも良い手。 TNkDIBでの画像が正しく出るかで、問題の切り分けができるし、 TNkDIBはTBitmapよりあきらかに速いから元からTBitmapを使っていた 部分をTNkDIBに切り替えるという手もある。
>423 ありがとうございます。 TNkDIBに移行しようとしたらまた別のところでつまづいています。 CopyRect() でパーツを取り出そうとすると TBitmapでできたものが できなくなってしまいました。 ドキュメントを見る限りでは Canvasによる描画ができるようなのですが。 bmp1 := TNkDIB.Create; bmp1.LoadFromFile('test.bmp'); bmp2 := TNkDIB.Create; bmp2.Width := 400; bmp2.Height := 400; Canvas1 := TNkDIBCanvas.Create(bmp1); canvas2 := TNkDIBCanvas.Create(bmp2); canvas2.CopyRect(Rect(0,0,399,399), Canvas1, Rect(0,0,399,399)); canvas1.Free; canvas2.Free; bmp2.SaveToFile('test3.bmp'); bmp1.Free; bmp2.Free;
たびたびすいません。 TGLDPNGですが、bmp.Canvas.CopyRect() を使って部分複製した 画像を保存しようとすると崩れるようです。
>424 おまいさん、TNkDIBはcreateした直後は8bpsだということを忘れとるよ。 以下な風に書き換えてみそ bmp1 := TNkDIB.Create; bmp1.LoadFromFile('x.bmp'); bmp2 := TNkDIB.Create; bmp2.PixelFormat:=nkPf24Bit; bmp2.Width:=400; bmp2.Height:=400; Canvas1 := TNkDIBCanvas.Create(bmp1); canvas2 := TNkDIBCanvas.Create(bmp2); canvas2.CopyMode:=cmNotSrcCopy;//好きなコピーモード canvas2.CopyRect(Rect(0,0,399,399), Canvas1, Rect(0,0,399,399)); canvas1.Free; canvas2.Free; bmp2.SaveToFile('test.bmp'); bmp1.Free; bmp2.Free;
>426 >bmp2.PixelFormat:=nkPf24Bit; うわぁ! なるほど!! ありがとうございます。 TBitmap関係をいろいろ漁っていてパレット関係が怪しいとにらみ bmp2.PixcelFormat := bmp1.PixcelFormat; とやってムリヤリ自力解決したのですが、そっちの方法のほうが 断然スマートですね(あたりまえだ。 というわけで解決しました!!
>427 いや、どちらかというと、それが正解だよそれが。 おいらは、8bpsじゃないってことであーかいたけだけだ。 とにかく、画像処理は深みに入っていくと楽しすぎるから頑張ってな− あと、そのうち、パレットとかハンドルについて悩むときも来そうなので予めいっとくが、 TNkDIBから直接ハンドル・ポインタを取り出した時の不具合がどうしても 解消できそうにないときは、TMemoryStream変数にloadtostreamさせて、 直接画像データをみに行くという方法もあるから覚えておくと良いよ。 幸い、DIBのファイルフォーマットは、探せばそこらにやたらあるので。
>428 ありがとうございます。 おそらくこれからアルファブレンド、スクリーン合成、乗算、覆い焼き などでハマっていくことになると思います。 その時に参考にさせていただきます。
430 :
デフォルトの名無しさん :04/10/28 16:59:41
あるフォームがモーダルダイアログを開いているかどうか判断する方法教えて下さい。
?
モーダルダイアログってフォームが開くものなんか? はじめて聞いた。
なんとも頭の固い人達ですね
そうか? 単にモーダルダイアログが何なのか解かってないんでしょ。
435 :
デフォルトの名無しさん :04/10/30 01:02:41
下記のように二次元配列を varで渡したかったのですが、エラーになってしまいます。 一次元だと出来るのですが、どのようにすればいいでしょうか? procedure TForm1.Button1Click(Sender: TObject); var hoge : array[0..10] of array[0..10] of Integer; begin hoge[1][2] := 20; hoe( hoge ); end; /// ----------------------------------------- procedure TForm1.hoe(var hoge : array of array of Integer ); begin Showmessage(IntToStr(hoge[1][2])); end;
typeしろ
type hoge = array of array of Integer;
ですね。自力で解決できました。^^;
>>436 あ、先に書かれていた。ありがとうございます。
VCLのCoolBarの挙動が変なんですが、何か回避方法とかありますか?
あれはバグが多いとオモタ。 とりあえずTB2K+TBXを使って回避してる。(つかこっちの方が高機能だったり
TB2Kも試したのですが、なんか動作が気に入らない・・・orz IEみたいな動作のCoolBarがベストなんですが・・・
困りましたな。
いやぁー、あちこち書きまくりですな、クールバーとかrebarとか。
CoolBarってそんなに変か?
今日初めてプログラミングでアプリ作りました。 サイトみながらでしかも 内容はテキストエディタってメモ帳なんかにも及ばない くだらないものなんすけど、それでも十分感動しました。
>>445 おめでとう。どういう環境でどのサイトを参考にしたのかきいていいかい?
環境はDelphi 6 personalなのですが、TChartコンポーネントが使えません。 ていうか、インストールされてません。どこで、インストールできますか?
personal にはありませんし、DLして使うモノではありません。
451 :
449 :04/11/23 22:09:56
では、諦めるしかありませんか?
Professional版を買ったら?
csvではき出してエクセルで十分だろw
Delphi6 の IdHTTP を使用し、2chのDAT差分を取得したいのですが IdHTTP.Request.ExtraHeaders.Values['Range'] := 'bytes=1000-'; と書いてGetしても、必ず全体を取得してしまいます。 何か指定の方法がまずいのでしょうか?
IdHttp1.Request.ContentRangeStart := 1000;
>>456 いきなりブラウザですか・・・
ちょっとハードル高いかな。
ちょっとしたミニゲームみたいなのを作ってみようと思います。
>>457 そのサイト読んでから文句言うように。
テキストエディタより簡単だと思うが…。
そうだね。簡単だけど成果がはっとしてて作り甲斐があるよね。
そうですか・・・ ちょっとがんばってみます。
がんばれー。がんばることは良いことだー。
SeventhDelphi、いいサイトだったのにこの前行ったら突然新しくなって 前にあったHTMLファイルが消えてた。 誰か保存している人いないかな…
> SeventhDelphi、いいサイトだったのに そうだね。GUI がどうの、このクラスはどうの、といったあまりプログラミングの 本質ではないところをなくして、論理重視に変更されたんだね。これは管理人の 個性でしょう。依然としていいサイトであるとは思うけど、コンテンツの量が減った のは残念だね。
画像は無いけど、Internet Archiveにあった
465 :
デフォルトの名無しさん :04/11/29 00:04:09
Delphi6 personalを使って大量の計算を行っているのですが、 計算中に音楽でも添付して流してみたいと思いました。 そういうことはできるのでしょうか? できたとしてもMedia playerが立ち上がったりするんでしょうか?
やってみろ。
やってみます。 ありがとうございました。
469 :
デフォルトの名無しさん :04/11/29 03:10:40
16進法表記と10進法表記では10進法のほうがやりやすいのですが、 16進法にすると処理速度が上がったりとか、何か得でもあるのでしょうか?
$FF + $FF と 255 + 255 はどっちが速いかって事? 同じだよ。 ビット演算子(andやor)は、16進数表記の方がわかりやすい。 アドレスも16進数。
>>469 別に16進法にしたって動作速度速いこたないが、プログラミングを続けていると嫌でも16進法で表記した法が
圧倒的にコーディングが楽な場合が出てくる。
たとえば、2進数との親和性が高いので、
アーカイバ作るときにビット演算の式を作るのが楽だとか
10進法では1周360度の場合、361度や-57度を正規化するのにdivやら負の場合分けをしなくちゃいけないのに対し、
一周を2のn乗、たとえば16乗の65536($10000)度系とかにすれば、
16進法だと87308や-53812がnに角度として入っていても、正規化は n and $FFFFだけですむ。
あるいは、TColorやHTMLの様に、一般的には色は16進数で表示されるので
Delphi上でも色を扱うときは16進数が楽とか。
例えば10進数で 16711680 とか書かれても何色だかわからんだろ。
16進数だと$FF0000(C言語なら0xFF0000)となって、
TColorなら青、HTMLなら赤のことを指し示しているとすぐわかる。
>>470-471 わかりやすいご説明ありがとうございました。
16進法に慣れるようにこれから切り替えていこうと思います。
Imageに対する描画で背景色を透明にするには、 Image1.Canvas.Draw(i*32 + 17, j*24, Load_Bmap) に何を追加すればいいのでしょうか…?
age忘れました…orz
475 :
ホントの初心者 :04/11/29 22:22:08
単にInteger型の配列の読み書きをしたいのですが読み込みでIOエラーが出ます。どこが悪いのでしょ? var UArrayNo: array[0..99] of Integer; procedure TForm1.sbTest1Click(Sender: TObject); var i: Integer; F:File of Integer; begin AssignFile(F,ExtractFilePath(Application.ExeName)+'FileNo.dat'); ReWrite(F); for i := 0 to 99 do begin UArrayNo[i] := Random(100); Write(F,UArrayNo[i]); end; CloseFile(F); end; procedure TForm1.sbTest2Click(Sender: TObject); var i: Integer; F:File of Integer; begin AssignFile(F, ExtractFilePath(Application.ExeName)+'FileNo.dat'); Reset(F); i := 0; while not Eof do begin Read(F,UArrayNo[i]); Inc(i); end; CloseFile(F); end;
476 :
デフォルトの名無しさん :04/11/29 22:39:37
>>475 >F:File of Integer;
これがまずくないかい。
任意のファイル型は、TYPEで宣言するような。
あるいは、 F: TextFile; にしておいて、IntToStrやStrToIntでやり取りしたらどうだろう。
はずしてたらスマン。
while not Eof(F) do
>>477 どうもです。お恥ずかしい限り・・・・・
>>473 透過は描かれる Load_Bmap のほうの特性
なんでnot eof doでビルドとおるんだ?
命令すんなボケ
逆ギレすんなカス
(´-`)
「ヘルプ嫁」っていうのはここでは常套句。
>>482 面白すぎ
>>480 Eof は,現在のファイルポインタがファイルの終わりであるかどうかをテストします。F はファイル変数です。
F を省略した場合,F は標準ファイル変数 Input になります。
>>475 をファイルストリームを使って同じことするにはどうするのかな。
TFileStreamってヘルプ読んでもよくわからない。
var UArrayNo: array[0..99] of Integer; procedure TForm1.Button1Click(Sender: TObject); var fs: TFileStream; i: integer; begin fs := TFileStream.Create(ExtractFilePath(Application.ExeName)+'FileNo.dat',fmCreate or fmShareExclusive); try for i := 0 to 99 do begin UArrayNo[i] := Random(100); fs.Write(UArrayNo[i],SizeOf(Integer)); end; finally fs.Free; end; end; procedure TForm1.Button2Click(Sender: TObject); var fs: TFileStream; i: integer; begin fs := TFileStream.Create(ExtractFilePath(Application.ExeName)+'FileNo.dat',fmOpenRead or fmShareExclusive); try for i := 0 to 99 do begin fs.Read(UArrayNo[i],SizeOf(Integer)); Memo2.Lines.Add(IntToStr(UArrayNo[i])); end; finally fs.Free; end; end;
× Memo2.Lines.Add(IntToStr(UArrayNo[i])); デバッグ用
スクロール上で右クリックのままドラッグでぐりぐり動かすとスクロール内もそれにあわせて動くってのはどうやるんだ? 教えてエロイ人
右クリックでスクロールバーぐりぐりすると何かいいことあるんか?
>>490 1. OnMouseDownで現在のX,Y座標を取得 + スクロール中フラグを立てる。
2. OnMouseMoveでスクロール中フラグが立っていたなら、1のX,Y座標と
現在のX,Y座標の差を取り、スクロールバーのPositionにセット。
3. OnMouseUpでスクロール中フラグを下ろす。
おお、ありがとうございます。 いえ、ちょっとゲームを作ってまして…。 画面のスクロールでそれができたら楽だなぁ、と。
早速記述したんですが、何か違うっぽい…orz procedure TForm1.ScrollBox1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X1, Y1: Integer); begin MouseDown := True; end; procedure TForm1.ScrollBox1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X1, Y1: Integer); begin MouseDown := False; end; ではいけないんですか? 一応グローバル変数のところには MouseDown : Boolean; と書いてあるんですが。
それただフラグ立てただけ。 X,Y も記録 MouseMove でずれ取得 ずれ分スクロール
あ、いえMouseDown/MouseUpだけでテストしてからMouseMoveしようとして、 その時点でエラーが出たんです。 言い忘れてましたね。すいませんです。 問題はどうしてこの時点でエラーが出るんだろということです。 その後、X1-X2,Y1-Y2をそれぞれHorzScrollBar.PositionとVertScrollBar.Positionに足せばいいんですよね?
こっちはエスパーじゃないのでエラーの内容を晒せ。
MouseDown := True; MouseDown := False; それぞれに「実パラメータが足りません」との表示が。
TFormにはMouseDownというメソッドがあって名前がかぶってるので、変数名を変える。
ナルホド、MouseDownCheckに名前を変えたらサクサクできました。 ありがとうございます。
あっちにも応答しとけよ
いまさらだが初心者スレ重複してないか?
504 :
デフォルトの名無しさん :04/12/01 20:36:29
クダスレは結構レベル高いぞ。 こっちがほんとの初心者向けかな。
くだすれにレベルの低い質問をしてはいけない、なんてことはないのだが。 実際向こうで俺レベルが答えられる質問が減っているのは確かだけど。
507 :
デフォルトの名無しさん :04/12/02 21:40:30
var FromF, ToF: file; NumRead, NumWritten: Integer; Buf: array[1..2048] of Char; begin if OpenDialog1.Execute then begin AssignFile(FromF, OpenDialog1.FileName); Reset(FromF, 1); //レコードサイズ = 1 if SaveDialog1.Execute then begin AssignFile(ToF, SaveDialog1.FileName); Rewrite(ToF, 1); //レコードサイズ = 1 DMemo.Lines.Add(IntToStr(FileSize(FromF)) + ' bytes...'); repeat BlockRead(FromF, Buf, SizeOf(Buf), NumRead); BlockWrite(ToF, Buf, NumRead, NumWritten); until (NumRead = 0) or (NumWritten <> NumRead); CloseFile(FromF); CloseFile(ToF); end; end; end; ------------------------------------------------------------------------- これはヘルプにあるサンプルですが、2048バイトずつコピーすればそれで割り切れないバイト数が残ることもあるはず なのに、なぜこれでいいのでしょ? あとできたらこれもTFileStreamを利用した例が知りたいです。
var ReadF,WriteF: TFileStream; NumRead: Integer; Buf: array[1..2048] of Char; begin if OpenDialog1.Execute then begin ReadF := TFileStream.Create(OpenDialog1.FileName, fmOpenRead); if SaveDialog1.Execute then begin WriteF := TFileStream.Create(SaveDialog1.FileName, fmCreate); repeat NumRead:= ReadF.Read(Buf, SizeOf(Buf)); WriteF.Write(Buf, NumRead); until NumRead <> SizeOf(Buf); end; end; ReadF.Free; WriteF.Free; end;
> 2048バイトずつコピーすればそれで割り切れないバイト数が残ることもあるはず なぜ NumRead を使っているのか考えること。BlockRead のヘルプを読むこと
要するに何もしないでも残りが2048バイト未満であっても自動的に読み込んでくれるんですねえ。 どんな仕組みになっているか BlockRead のソースをチェックしたのですが アッセンブリーコードでした(*_*)。
2048ずつ読んでるだけじゃないの? 何か疑問?
>>507 ,508
こういう場合読み込むサイズをどれくらいにするのが適当なんだろ?
1024,2048,4096,8192 で確認したけどスピードは変わらない。
スピードはディスクアクセスがボトルネック。1バイトバッファなら差がでるかな?
ロボット作りマニュアル本でこれから始めるならcよりdelphiが良いって本で見たのですが、実際はどうなんですか? ぐぐっても、制御系のサイトがあまりみつからなかった・・・・・・・・・。
花の盛りは短くて儚い
>>516 禿同。ソースを将来とも大事にしたいならCでやっとけばいい。
とりあえずはやくつくりたいならDelphiでもいいけど。
518 :
デフォルトの名無しさん :04/12/09 16:41:06
初めまして。当方趣味程度でDelphi3をやっておりました。むろん正式ユーザーです。 今度、社内と関連会社で使うテキスト操作と小規模のデーターの仕事関係の プログラミングを頼まれたのですが、XPの現在でもDelphi3は使えますでしょうか? Delphi6の無料版を考えていましたが、よそにやることも考えて(そこから先、どうなるか 分からないため)Delphi3で組もうと思います。 データー管理は300人程度の小規模のものです。 Delphi3ってXPの現在、使えますか?
また、使っている方いらっしゃいますでしょうか? XPで特に気をつけるようなことありましたらアドバイスお願いします
Del6per のほうがよい。文字列操作関係の関数も充実してるし、最新版との互換性も Del3とは大違い。仕事に使うんならライセンスをクリアするために、ひとつくらい最新版を 購入しよう。XPスタイルへの対応だけが問題。
業務用には使えないだろボケ
c言語を勉強しているけど、何かこっちの方が理解し易いな・・・・・・・変えようかな・・・・・・・ でも、マイナーで入門書とサイトが少ないのが初心者にはキツイ。
最新版って Delphi2005 でしょ。これを買って、実際は Del6per で開発って、いいじゃないの。
最後だけ2005の糞重いIDEを起動してコンパイルするとなおいいね。
>>522 入門書は確かに少ないけど、その分厳選されているし、大きな本屋を漁ってみればさほど問題ない。
サイトは少ないように見えてけっこうあるよ。Delスレの過去ログとか見るとあちこちにちりばめられている。
WEB上の情報は必要十分にある。
英語が読めるとなお情報を入手しやすいんだけどね。
なんかいい感じのスレですね。 でも最近マカーなので……。 Mac OS X対応のKylixが出てくんないですかね。
> 入門書は確かに少ないけど、その分厳選されているし 厳選してないよ、ただたんに少ないだけ
2,3年まえには結構な数があったけどね > 入門書 ムックまであったし。いま入手できるのは、売れ残ったやつだけ。新刊書がないから。
じゃ、終わりって事じゃんか・・・・・・・・・。
正直、Delphi入門者の取るべき書籍が無いのは由々しき状態。 日某はそこらへんわかってるのかなあ。
>じゃ、終わりって事じゃんか・・・・・・・・・。 そう。需要がないから供給もない。入門者が減ってるんだよ。
amazonで検索して購入すればいいだけの話だろう。
入手方法はこのさい関係なし。
どうしても購入させたくない必死な香具師がいるようだな。
入手方法ではなく入門書に新刊がないことを言ってるの。頭割り意のがいるな。
いまから入門するとして、リッチなのは D2005 を買う。そうすると新IDEに対応した 手取足取り入門書は皆無。プアーなのは D6per をDLして使い始める。本がなくても 入門サイトが結構あるから大丈夫かもね。
いや、amazonだろうがなんだろうが、 評判いい入門用の本の多くが絶版になってるんだよ。 中村御大が褒めている本とか。
Delphi8の入門書はとうとう出なかったな。
おいおまいら、 Seventh Delphiの旧入門コンテンツが復活してますよ。 もういまとなっちゃ、ここ以外、総合的にDelphiを扱った入門サイトが 皆無だからよかったよかった。
そこ、並みの入門書よりかなりいい内容だよね。新Delphi入門もトライして見る価値はおおいにある。
542 :
デフォルトの名無しさん :04/12/11 16:19:45
今更、Delphiの勉強を始めたんだけどややこしいなこの言語。 CやJavaなら簡単に出来る事を、Delphiでどうやったらいいかを調べるだけで 時間がどんどん過ぎていく…。
ドルフラングレンと関係は無いみたい。
>>540 おぉ、フィードバックで旧コンテンツの復活望んだ甲斐があった。
>>542 よく考えて堅牢なコードを書くという習慣が身につきます。
あとで「ああ良かった」ときっと思えます。
Delphiってひょっとしてオブジェクト指向に向いてなくない?
君に向いてないだけ
548 :
デフォルトの名無しさん :04/12/11 22:42:36
>>546 どういう部分でそう思う?
確かにスコープのとり方がちょっとへんだが、1クラス=1ユニットで書けば問題ない。
>確かにスコープのとり方がちょっとへんだが 変じゃねーよ .NETのinternalを先取りした機能だ
お前ら、本を執筆しる! 誰も出さんから売れるぞ。
551 :
デフォルトの名無しさん :04/12/11 23:01:48
>>548 何から何まで時代遅れ。
言語的にC#に対するアドバンテージは皆無。
意味もなく某が執着しなければ手続き型で終わってたはずの言語だな。
> 誰も出さんから売れるぞ。 原因と結果が逆。売れないから誰も出さないの。
よく某は食っていけてるもんだ・・・
delで儲けてるわけじゃないって何回(ry
つか、Delphiって宣伝みたいなもんだよな
>>540 デザインパターンのページは復活してないね
あれ、よかったのになぁ〜
archive.org使用すれば見れるが
今から見る人は使用しないだろうし・・・
ScrollBox等のコンポーネントの上に、記述による生成でコンポーネントを置く時にはどうしたらいい?
Button := TButton.Create(ScrollBox1); Button.Parent := ScrollBox; Button.Caption := 'NewButton'; ...
なるほど、そうだったのか。 Thanks.
560 :
デフォルトの名無しさん :04/12/20 20:19:42
テキスト ←→ リッチテキスト 変換は、 どうやってやりますか?
Arrey[?..?]の数って宣言以降に変更できるんですか?
562 :
デフォルトの名無しさん :04/12/20 22:44:58
Delphi2005って無料で使える?
>>561 動的配列使え。下限は0固定。
var arr: array of Integer;
begin
setlength(arr, 100);
// arr[0] .. arr[99]にアクセス可
>>562 英語版トライアルのみ
いずれ日本語版Personalが出るらしい
Arr[?,?] の様に二つの配列を使うことは出来ないのですか?
制御について書かれたマニュアルが無い。
>>564 出来ない。
arr: array of array of integer;
arr[y][x] とやるしかない
>>566 arr: array[0..M, 0..N] of Integer;
といった書式で書いてコンパイルしてみれ。
動的でってことじゃないの?
宣言で任意のサイズの多次元配列を定義するのは無理でしょ。 例えば arr[1][0] の先頭位置からのオフセットは 2 番目の添え字の数で 決まるから。 array of array of Integer で SetLength したら array of Integer の アドレスが上位の array のメモリに格納されるだけ。
Pascalの仕様じゃ動的にarrayを確保できない。
そうですか…TStringListで無理矢理代用してみます。 ありがとうございました。
SetLength(arr, MaxX * MaxY); arr[x * MaxY + y] とかやっとけば二次元のデータも格納できるけどね。 ややこしければラッパーかませばいいし。
XとYの桁が決まってるならば、こういうのはどうだろう。 (X,Yがそれぞれ2ケタとした場合) arr[X*100 + Y] X=25.Y=34ならば arr[2534] とか。
ラッパの方が100倍まし
へたれのおれには2次元配列にするのとどう違うのかわからんorz
ヘルプキーワード「多次元動的配列」
A: array [0..1] of array [0..1] of Integer; の場合 宣言によって変数 A[0, 0], A[0, 1], A[1, 0], A[1, 1] の順に 16 バイトの 連続メモリが割り当てられる。ただそれだけ。 A: array of array of Integer; の場合 宣言によって変数 A に 4 バイトのメモリが割り当てられる。 SetLength(A, 2); 参照カウンタ, 長さ, A[0], A[1] の順に 16 バイトの連続メモリが割り当てられる。 変数 A に A[0] のアドレスを指すポインタ (4 バイト) がセットされる。 SetLength(A[0], 2); 参照カウンタ, 長さ, A[0, 0], A[0, 1] の順に 16 バイトの連続メモリが割り当てられる。 変数 A が指すメモリ (A[0]) に A[0, 0] のアドレスを指すポインタがセットされる。
SetLength(A,3,3) とかでもOK
配列の話が出てるので聞きたいんですが、配列に一括して代入をすることはできるんですか? Arr[1] := 1; Arr[2] := 1; Arr[3] := 1; … というような配列を、まとめて同じ数を代入したいんです。
そんな命令や手続きはないよ。作るとしたらオープン配列パラメータを使ってやることに なるだろうな。 procedure InitArray(var iary: array of Integer; inival: Integer); var I : Integer; begin for I := 0 to High(iary) do iAry[I] := inival; end;
for で一行
FillChar
FillChar でどうやって1に初期化するかしりたいものだ
>>582 FillCharは値がバイトの範囲しかないぞ。0で初期化とかなら使えるが。
#1とか?
4バイトのそれぞれのバイトが#1で integer として1になるとでも思ってる?
手続き名で惑わされるな。第3引数はCharではなくByte型だ。 FillChar(a[1], SizeOf(a), 1); かな?
あ、586がただしいわ。LongIntとかだと0以外は駄目だな。
バイト単位で初期化するから2バイト以上の変数は一般にはだめ。ゼロとかnilとかだったら使える
文字列の最後のn文字を削除したいっていう場合はどうするんですか?
>>590 LengthとLeftStrを組み合わせれ。
SetLength(s, Length(s)-n);
どうも、ありです。
>>590-593 遅いレスですが>590は『文字数』ということですので
対象となる文字列に漢字などの2バイト文字が含まれている場合は
それを考慮しないと正しく動作しません.
(文字列がWideStringである場合は問題ありません.)
やり方はWideStringに変換して戻す方法と変換しない方法がありますが前者の方が単純です.
{★文字列wsの末尾Count文字を削除した文字列を返す関数}
function TrimTrailChars(const ws: WideString; Count: integer): WideString;
begin
Result := copy(ws, 1, Length(ws) - Count);
end;
string型(AnsiString型)の値とWideString型の値との変換は両方向とも自動的に行われますので
wsにAnsiString型の値を指定したり戻り値をAnsiString型(TCaption型を含む)の変数やプロパティに代入しても構いません.
例)Edit_Dest.Text := TrimTrailChars(Edit_Src.Text, SpinEdit_Count.Value)
595 :
デフォルトの名無しさん :05/01/12 21:54:23
良スレage
596 :
デフォルトの名無しさん :05/01/14 10:19:05
ログ保存機能をアプリに付けたいと思っています。 が、VCLのSaveToFileはファイル上書きしかなかったり、 ディスクが一杯だったら、とか、色々問題ありそうです。 ログ保存機能コンポーネントなんてあるんでしょうか?
> ディスクが一杯だったら ディスクがいっぱいだったらどんなコンポでも書き込めないだろ・・・ ふつうは TFileStream とか使うんじゃないの
コンポーネントなんて使うまでもないだろ
>>596 せっかくDelphiを使ってるんだからDBで保存することを考えたら?
後で様々な切り口で分析できるし便利だよ
601 :
デフォルトの名無しさん :05/01/17 01:49:26
エクスプローラのツールバーがはみ出したときに表示されるボタンは どうやって作るのでしょうか?
シェブロンでググれ 多分相当難しいと思われ。
Memo1.Lines.LoadFromStream(TFileStream.Create(FileOpenDialog.FileName)); で開いたデータをスクロールバーssBothのMemo1で表示すると、縦スクロールは普通にできるのに横スクロールの挙動がおかしいです バーをドラッグしてもピョンと端に戻ってしまいます、どうしたらいいのでしょうか
>>603 Memo1.Lines.LoadFromFile(FileOpenDialog.FileName)ではどう?
あと、TFileStream型の変数を別に用意して、初期化と読み込みを
別にした場合は?
いろいろな方法で試してみれば、どこに問題があるか突き止め
られるようになるぞ。
> Memo1.Lines.LoadFromStream(TFileStream.Create(FileOpenDialog.FileName)); 最悪なコードだな。インスタンス一つ行方不明
>>605 たしかに最悪というか、邪悪だな。
すぐにアプリケーションが終了することが前提なコードだよ。
でも、.NET普及したら、その世代では標準のコードになるのかもな
.netでも使い終わったら解放するのがまともなコード
>>608 うそ、マジで?
test.method(new kaba)とかはJavaでは普通に使われてるから
GC任せにするのが当たり前だと思ってたんだが・・・・・・
ああいえばこういう
RichEditで通常と太字で大きさ同じにしたいのですが abcde ←1行目フォント指定しない abcde ←2行目太字 で文字位置がだんだんずれていくんですがどうすればいいのでしょうか
612 :
デフォルトの名無しさん :05/01/28 05:24:58
すいません、上げます
固定ピッチのフォント使えばいいんじゃないの
>>611 結局、普通書体でも太字でも同じ幅にしたいってことだろ?
LogFont.lfWidth の値を設定して、CreateFontIndirect /
SelectObject を使って TRichEdit のフォントを指定できないかな?
上級スレにいきました。もう流してください。 結局ウインドウコントロールのEditは出来ないと言うことに落ち着いて、 GDI駆使して作ります。フリーなコンポも教えてもらい部分部分盗みながら
ToolBtn := TToolButton.Create(Self); ToolBtn.Parent := ToolBar1; これでツールボタン作成するとめちゃくちゃ遅いです。 ツールバーをカスタマイズ出来るようにしたいのですが、起動に時間がかかります。 どうにかなりませんか?
617 :
デフォルトの名無しさん :05/02/05 02:39:50
age
618 :
デフォルトの名無しさん :05/02/05 03:16:21
下のコードはコンパイラは 自動的にポインタを割り当てるの? with TStringList.Create do try SaveToFile('C:\Test.txt'); finally Free; end;
TStringList.Create が返す参照を with でくくってるんだよ
>>618 考えた奴には敬服するし、感心したけど、
初心者には、すすめられないコードかもね。
VCLにそういうコードが載ってるよ。
学校でDelphiを習い始めたのですが これの言語の名前ってDelphiでいいんですよね? いや、ホント意味不明な頭悪い質問で申し訳ありません
おそらくそれで良いとお思いますが、そういったことも含めて、学校の先生に 聞いてみたらどうでしょうか。そのほうが確実ですよ。
Object Pascal
思えば、Delphi7の時に某がわざわざ Object Pascalと呼ぶのは間違いだった とかいう必要、あったのかね
某は三流企業なので後先のことは考えていません。 最近は統合開発環境自体をDelphiと呼んで訳分からなくなってます。
DelphiのC#をつかってつくったアプリ、とか?。。。えへへ
もうDelphi言語です。
思い返すとDelphi言語になってから凋落が始まった・・・・
Delphi7になってから、 開発環境をDelphi Studio 開発言語をDelphi言語にしたはずなのに、 結局、どっちも広まらなかった。 中途半端にVisual Studioに対抗したのがいけないかったのかな
>>622-623 積極的に学校の先生に聞いたほうがいいぞ
大抵の先生は、まってましたと言わんばかりにニヤニヤしながら答えてくれる
さらには、好感度もアップ。成績もアップだ。
もし、ムスッとしている先生であっても、内心キターとか思ってるはずだ
馬鹿か、こいつ、と思うかも
もうだめなんですか?delphi
人の意見で自分を左右したければ MS についていきなさい。
>>633 だめですねぇー、最近Delphiについてよいことは何も無い。
うーん、なによりユーザが減ってコミュニティーも沈滞ぎみだし、本も出ないし、 新バージョンの評判は散々だし、.NET対応はまともにできてないし、・・・だめかも
英語が読み書きできればね。 日本は、少ないパイを MS が丸ごとかっさらっていくから...
英語の件は今に始まったことでもあるまい。最近のユーザ減少はDelphiのほうの問題 が原因だと思うけど
減少してるのは日本だけだけどね。
ふふふ、NG読んでね。
どの nwesgroups だい?
nwesgroupsって知らないけど、何?
NG のことです。
やっぱ日本だけじゃん
だといいね。
日本だけ減少の理由はブランド志向が高いからです。 自分の意見より他人の意見、他人の目が、大事な人が多いわけです。よね?
647 :
デフォルトの名無しさん :05/02/14 10:25:42
>日本だけ減少 ソースプリーズ。 >日本だけ減少の理由はブランド志向が高いからです。 最近急にブランド志向が高くなったわけでもあるまい? >自分の意見より他人の意見、他人の目が、大事な人が多いわけです。 最近、急に多くなったわけでもあるまい? 何の根拠もない脳内妄想は書かないように。
>>647 自分の常識は世界の常識と妄想しておりました。
Delphiはアメリカのオークションでも少なかったです。
アメリカのヤフーオークションでは一つも無かったです。
それくらいしかソースがありませんです。
申し訳ありませんでした。<(_ _)>
追伸 私はDelphi勉強中です。
なんで人気が無いのか不思議なんです。 以上です。
>>648 > なんで人気が無いのか不思議なんです。
Win32 ではすばらしいツールだと思いますけど、なぜ、いまよりユーザが多くない
のか不思議ですよね。Pascal に対する偏見や、もちろん、好き嫌いもあります。
最近は、.NET 対応がうまくいってないのが原因かもしれません。
見方はいろいろありますけど、プラットフォームとしての Win32 がもう少しで
終わる、という見方が多くなりつつあるのが影響してるのかもしれません。
>>649です ありがとうございます。わかりました。 FileListBox1.Directory := 'log'; で出来ました。お騒がせしました。
すみません。ごばくしました。
>>648 いろいろな言語を習得しといて孫はないよ
>>652 激しく同意
今、これさえやっとけば他はいらないという言語がないね。
654 :
デフォルトの名無しさん :05/02/15 10:24:15
>>652 ありがとうございます。 648です。
いろいろ言語にかじった事はかじったのですが、
どれも、入門を終えたレベルでありまして、
delphiだと何か作れそうで小物から作りはじめてます。
なんで早くに気づかなかったのかと後悔するばかりで・・・。うう。
たしかに遅すぎたかも・・・・
うう。
String型変数の内容をTDate型の変数に値をぶち込む前に、その値が日付型かどうかチェックしたいんですがうまい方法は無いでしょうか?
StrToDateDef
変換する関数で例外発生の有無を確認
RGBの値をHTMLのカラーコードに変換する方法はありますか?
662 :
デフォルトの名無しさん :05/02/15 16:40:26
ありますよ
ないですよ
プログラムを始めるのならグラフィックスプログラミングからやった方が楽しい気がするのは漏れだけ?
動いてることが見えるプログラムは入りやすいと思う。 仕事だけど機械制御は結構楽しかった。
Win3.1の頃、C++のおべんきょーは画像を表示しようという目的だった(エロ) C++は面倒くさくなってDelphiに代わり画像+動画のビューワー(エロ) DirectShowのおべんきょーはビデオキャプとDVDプレイヤーの作成(エロ) 目的意識でのエロの力は凄い でも途中で抜いちゃうとオネンネしちゃうんだよね おまいらもそうだっただろ?
そんなもん、自分でつくらなくてもフリーでいいのがいっぱいあったけどね。
自分好みの窓で動かしたいんだよ
その目的意識はエロと関係ない。どっちかと言えばOS依存
せっかくだからなんか作ろうぜ。 ちゃんと過程が目に見えるやつ。
どうぞ
674 :
デフォルトの名無しさん :05/02/18 17:19:07
ある文字列と特定の文字列”ABCD”とのxorってどうやってとったらいいんでつかね?
Byte(s[i]) のようにバイト配列とみなして、それぞれ xor を取る。結果を 文字列とみなすと痛い目にあう
676 :
デフォルトの名無しさん :05/02/20 00:48:51
Delphiの本でお勧めされてるのは今買えないものが多いですよね。 今買えるものでお勧めはなんでしょう? >331の Delphiクイックリファレンス A NUTSHELL HANDBOOK の他に、たとえば入門向けなどでいいやつはないですか?
それは困った。
入門が遅すぎたのかも・・・・
Seventh Delphiの旧Delphi入門より、 入門に適した書籍がないというのは大問題だよな。
Pascalやるってのは遠回りですか? 一応他の言語はある程度わかるんですが。 リファレンス系でやってみてわからなかったら戻ってくるか。
VB経験者向けのDelphi解説サイトがあったはず…。 探してみて。
マジレスするとSeventhDelphiで勉強してみたら。 本じゃないけど
塚越さぁぁぁん!!orz
初心者です。 今6の無料版を使っています。 デルフィ本の古いバージョン4とか5とかで勉強しても大丈夫ですか?
大丈夫ですけど、読み方はデルフィじゃなくてデルプヒですよ
マジレス でるぽい っぽい
デルフィじゃないんですか?
デルピ?
マジレス。デルファヒ
SeventhDelphi見たんですけど旧の方はチェックしてなかった。 よさそうですね。やってみます。
693 :
デフォルトの名無しさん :05/02/20 23:32:24
でるふぁい でしょ?
だれが呼んでもデルプヒだろ。
本家は Δελφοι(デルフォイ)
俺は デルフィ おまえも デルフィ 日本人は デルフィ 通は デルファイ
デルッペ
698 :
デフォルトの名無しさん :05/02/21 15:41:49
デルファイのvarってなんの略ですか? VerjionのVerではないんですか?
verjionがどう関わってくるのかの方が知りたいな
varか
701 :
デフォルトの名無しさん :05/02/21 19:50:39
Vermitetionの略だろ
Verjion の検索結果 約 150 件中 1 - 40 件目 (0.45 秒)
variable 変数
在庫が連動してない某ブックサービスで ダメモトで「Delphi オブジェクト指向プログラミング」注文してみたら 発送されましたメールが来た。ウヒョー。 この手の本は在庫連動してないところが穴場かも。 ギリシア語ではデルフォイ、英語っぽく読むとデルファイ。 日本人もだいたいデルファイ。 Vermitetionってなんや。
あぁ・・あれ買っちゃったんだ・・(遠い目)
delphiヘルプとVCLソースあれば十分だべ
両方フリーじゃ無いがね。(ヘルプはフリーだとしょぼい)
本当に入門であれば「はじめてのデルファイ」も買っといたほうがいいかも。 そっちから読み始めて色々とハマりながらいじってみる。 って、もうこれさえも手に入らない状態なのかな・・? あとは入門系解説サイトが頼りかな、これは流石にDelphi3とか4時代よりは色々ある。 で、ある程度慣れたら「Delphi オブジェクト指向プログラミング」に進む、と。
正直、今からDelphi入門はおすすめしない。
でもなー、他におすすめってーと、Eclipseくらいしかないじゃん。 Win32ネイティブなプログラミングやりたいってーなら、どれも先が短そうだから どれでもいいんじゃない?
Eclipse は Delphi のような操作感のエディタなんですか?
音声読み上げで「デルフィ」って読み上げられちゃって ずっとデルフィ〜呼んでるんだけどこれでもいいですか?
713 :
デフォルトの名無しさん :05/02/23 10:18:54
Delphi5で、オラクルに接続しているのですが、ユーザ数が120を超えると 「APからは接続されていません」とエラーが出るらしく、接続不可になるようです。 BDEを使っているのですが、コネクション数などを設定できるところがありますか? オラクルの設定は問題がないようなのですが・・・ Delphi始めたばかりで何がなんだか分かりません。 どなたか回答いただけると嬉しいです。
スレ違い
>>711 いや、全く違う。けど、非常に魅了的なプラグインが各種揃ってて
意外と(;´Д`)ハァハァ
Eclipse + Visual Editor Plug-in (+ SWT) なんかだと、割と快適なポトペタプログラミングできちゃうしな。 JAVAだから、スレ違いだけど。
レポートタイプのリストビューで非表示のカラムを作成することはできますか?
TS:= TStringList.Create; としたら、同procedure内で TS.Free しないといけないんですか? 別の箇所で再度TSの中身を読み出したいのですが
TStringListのインスタンスが有効となるスコープを広げろ。
別に、同一の関数・手続き内で Free しなければならないということはないです。 好ましくはありませんが、別の関数・手続きにインスタンスを渡してつかってから Free してもOKです。重要なのは不要になったら確実に Free できているかです。
721 :
デフォルトの名無しさん :05/02/25 20:34:40
これから買う場合、どのバージョンが良いでしょうか? やっぱり最新の2005が良いんでしょうか? ちなみに.NETは、多分使いません。
>>721 もう10ヶ月ほど無料版でねばって、
BCBが統合される次のバージョンがおすすめ。
本当に統合されればね。
723 :
デフォルトの名無しさん :05/02/25 21:33:30
>>721 Win32ならDelph5〜7が最も完成度が高いと思う。
D2005なんて今まで使ってたコンポが普通に登録出来ないし
重いしお薦め出来ないね。
>>723 となると、Delphi7がおまけについてくるDelphi8がベストになるのか!
・・・やっぱり今年の冬まで待った方が良いかも。
>722-724 レスありがとうございます。 >722 書き忘れてしまったのですが、業務目的で使うので、 Pro版以上がいいんです。 もう次期バージョン出るんですか? サイクル早いですよね、Delphiって。 >723 上の次期バージョンの話とあわせて聞いたら 2005はとりあえず、保留にしたほうが良さそうですね。 >724 8に7付いてくるって本当ですか? おまけの7って、業務目的で使えるんでしょうか?
業務で使うのに待つってどゆこと?
勉強通なのさ〜
Delphi 7.1 Professional StarTeam Edition Delphi 7 Studio Professional 日本語版 Delphi 8 Professional この中だったら、どれを買えばいいでしょうか?
不本意ながら、8以外の選択肢は無いだろ。 8と2005だと、また悩みの種が増えるのだが。 8の付属の7は、業務でも使えるよ。 8自体が.NET Framework専用なんで、あまり使い道がないんだけどな。
>>729 ありがとう 7買うところでした
もう一つ、オークションでDelphi 7 Studio Professional 売ってたりするのですが、
ユーザー登録ができない場合が多いのですが、
ユーザー登録が出来ない事で何か問題ありますでしょうか?
また、その価値はどれくらいなのでしょうか? 1万円くらい?
だれか教えてください。
>>730 Borlandをはじめ、大抵のソフトウェアメーカーは、
自社製品の一切の二次的権利譲渡を認めていない。
前のオーナーが購入後、未開封なことが確実ならともかく、
ユーザー登録出来ない開発環境を入手するのは、ナンセンスきわまりないのでやめとけ。
業務はおろか、フリーウェア配布もライセンス違反になっちゃうので、
そんなことで後ろめたい思いしたくないだろ。
あとついでに、最近のBorlandは、アカデミック版による商用利用も禁じているので注意。
あと、そういったDelphi7をオクに出すやつって、 Delphi8とかにアップデートして、 そのDelphi7の使用権利自体消失してたりしていることが多いからな。 中古やオクでソフトウェアを買うのは、滅茶苦茶リスクが大きくて勧められない。
>729 レスありがとうございます。 勉強になりました。 ちなみに>728,730さんとは別人なのですが、 危うく私も7買うところでした。 ただ少し気になったのが、7と7.1の違いについてです。 これってリリース済みのアップデートパッチが適用済みか そうでないかの違いだけっていうことでいいんでしょうか? (それともバンドル品の違いだけ?)
>>731 >Borlandをはじめ、大抵のソフトウェアメーカーは、
>自社製品の一切の二次的権利譲渡を認めていない。
ソースは?
>>733 も、(2chに限らず)書かれていることを無批判で信じないほうが...
まぁ実のところ、オークションサイトでユーザー登録を含めた権利の譲渡まで気にしている人は
皆無であることは間違いないが。
>>734 たとえば、Delphiなら、license.txtを、「譲渡不能」で検索してみなよ。
他の大概のメーカーの製品でも契約条項でその旨書いてある。
(ごく一部のソフトウェアでは、譲渡の方法まで規定しているのも昔見たことあったけど)
また、Delphiの具体例では、ちょっと前、
ttp://members3.jcom.home.ne.jp/jellyjam/ の記事で、ヤフオクでDel6Professional買ってしまった後、Borlandに
問い合わせたら、ライセンス上、使用を認められないといわれた、という話がある。
>>735 譲渡不能というか、譲渡で検索した方がいいな、licenst.txtは。
728 730 です みなさん、大変参考になりました。ありがとうございました。 オークションでユーザ登録できないのをみたら通報することにします。 733さん、質問をかぶせてしまって申し訳ありませんでした。
みんなもオークションでユーザ登録できないのをみたら通報してください。
>>738 ( ´д`)ハァ?
オクションで買わなきゃいいじゃん。
なんで、通報までしないといかんの?
て言うか、明らかに違法なんだからヤフーが取り締まるべきだよな。 利用まで取ってるくせして全く管理できてない。 中国産の違法DVDとかも普通に売られてるし、さながらUGマーケットの様。
741 :
デフォルトの名無しさん :05/02/26 20:54:41
>>737-740 通報してもYahooはなにも動いちゃくれないよ。
私も何度も通報したけど全然違法ソフトはなくならないしな
観賞用に売り買いすることに何も問題はない。
違法コピーだと知っていながら売買するのにはかなり問題がある。 Yahooは金が入ればいいんだろうけど。
>>741 動かすべきなのはアホーじゃなくて警察だよ
TLabelの文字列って、同一Label内でFontの使い分けってできるんですか? それとも別々のLabelにしなきゃダメですか?
できない。PaintBox で自力で書きなさい。どうとでも出来る。
>>744 Yahooはポーズだけはとってるけど実際サイト見れば違法ソフトが氾濫しているんだから
結果としてYahooは取り締まる気は全然ないんでしょw
ちなみにYahooの場合、違法ソフトを見つけたら所定のページから通報してくださいって
ことになってるんだけど、通報しなければ放置ってことなわけではっきり言って後手後手。
んなもん、サイト監視してりゃ一発で違法だってわかるのに何でYahoo自らが削除をしようと
しないのか謎。通報にしか対処しないってどういうことなのかね?
どっかと提携したとか言ってたけど全然違法ソフトなくなってないじゃんw
いい加減すれ違いだと気づけ
749 :
デフォルトの名無しさん :05/02/27 13:47:38
>>728 今から始めるDelphiスレなので問題無いような。
yahooに責任転嫁する人は間違いなく怪しいような。
ヤフーの行為に問題がないなら、形を変えたソフトウェアの中古販売 やレンタルを成立させる事ができる。 個人間売買の仲介役として、軒先を貸してるだけって言えば通る事に なる。
だから通ってるんでしょ? 問題ないなら、議論は不要
問題あっても議論は無意味
Delphiマガジンの表紙って古いエロ本みたいだね
だが、それがいい。
所詮 Delphi はドマイナー
マイナーでいいよ
マイナーではなくドマイナー。Python より少ないユーザ。
ザスパ草津はドマイナーだからベルディファンになれ っていわれても無理なお願いというものです。 ザスパ草津にはザスパ草津なりにいいとこがあるのです。
誰もそんなこと言ってない。被害妄想?
ドマイナーだから感謝してるわけです。 にヒヒ
ソフトウェアの譲渡は法律で認められているはずだが? 法律で認められている事を禁止する契約項目は無効なはず。 提訴でもしないかぎり拒否し続けるだろうが
お前は 音速が 遅い な というか、例のごとく、まずはソースを出せ。 話はそれからだ。
最近のパッケージソフトはソフトウェアの販売でなくライセンスの販売が主流だと思うのだが。
>>764 そうなんだよなあ。
「販売という言葉を使いますが、実際は契約です」とかなんとか書いてあるよな、最近のパッケージソフトの規約を読むと。
おそらく、インストールの時点で使用権の扱いに同意した、ということになるんだよな。
って俺、これであってる?
いい加減すれ違いだと気づけ
TButton.Create(Self); で生成したボタンのOnClickってどこに書けばいいんですか?
CはシャープでDelphiはマイナーか。
イミワカラン
いつものアンチ低脳がフラットとメジャーを勘違いしてるだけだよ
Delphi6で自作クラスを作りたいのですが 一番シンプルな形を教えてください。
type TMyClass = class end;
今日ソフマップでDelphi8 Professinonalを19800で買ってきた。 売切れそうだから、勢いで買っちゃったんだが 皆さんの感覚でこれは 安い?高い? どっち
775 :
デフォルトの名無しさん :2005/03/21(月) 06:18:39
普通。 10年近く前に買ったdelphi2 developerも2万ぐらいだった気がする
777
(・∀・)ニヤニヤ
(・∀・)ニヤニヤ
TPanelの上にTImageを乗せておくと、TPanelを.Freeする際にはTImageの.Freeは自動で行われますか?
>782 こらこら >781 ふつーForm上のPanelをコードでFreeしねぇだろ どうしてもってぇんならImageも別途Free
784 :
781 :2005/05/01(日) 17:09:27
そうですか、あともう一つ。 Panelの上に線を引きたいのですが、その場合はImageを貼り付けるしかないのでしょうか。
>781 次の中から自分にあったものをどぞ 1.Panelの上にImage(Image.Picture.Canvasに描画) 2.Panelの上にPicture(PictureのOnPaintでPicture.Canvasに描画) 3.Panelの上にShape
DELPHI 7のパーソナルではフリー・シェアウェアを作って公開できますか
パーソナルは商用アプリだめだったんじゃない
寄付歓迎、とか広告掲載とかはどうなんでしょう?
ボーランドさんに聞け。
広告なんてプログラム関係なしに自分のHPで勝手にやたら良いんじゃないの? それともプログラム本体に広告付けるって事か(だめだと思うけど)
某MMORPGゲーム内でのチャット(発言)ログをとりたいと思うのですが 詰まってきたのでアドバイスお願いします。 いまのとこわかったこと、できたこと。 ・MMOのプロセスメモリのある開始アドレスから+400hおきに1発言内容が入ってる。 ・発言は100個まで残ってる。 ・FindWindow(),GetWindowThreadProcessId(), OpenProcess(),ReadProcessMemory()などを使って現在のログが取得可能。 ・TimerEvent(300ms)毎に現在のログとその1周期前のログを比較して 増えてる発言分をtxtに出力。 よくわからないこと ・たしかにログっぽいものが取れているのですが、よーく見てみると 発言内容を飛ばして保存してたり、同じ発言を複数行に保存してたりします。 ・現在のログと1周期前のログの2つをそれぞれTStringListにいれてるせいか やたらと重くなります。 発言された瞬間(プロセスメモリが更新された瞬間)にその分を保存できれば 余計な動作が少なくていいように思えるのですが、どうすればいいのかわかりません。
792 :
デフォルトの名無しさん :2005/05/05(木) 06:06:00
メインスレッドのプライオリティの変更方法を教えてください
tinifileで、複数のアプリから同時に書き込みを行うと、エラーがでるんですが ファイルロックするにはどうすればいいですか?
794 :
デフォルトの名無しさん :2005/05/05(木) 15:59:15
マルチメディアコンポーネントでMP3ファイルを再生したのですが、 Win2000ProのPCでは問題なく再生できるのに、WinXPのPCでは 「指定されたファイル名拡張子からデバイスの種類を判断できません」 とメッセージが表示され再生できません。 Delphiの問題ではなく、環境の問題のように思いますが、 解決方法をご存じの方、よろしくお願いします。
>>793 FFileStream := TFileStream.Create(TextFileName,
fmOpenReadWrite or fmShareExclusive);
>>792 SetThreadPriority
>>791 >・たしかにログっぽいものが取れているのですが、よーく見てみると
> 発言内容を飛ばして保存してたり、同じ発言を複数行に保存してたりします。
ロガー側が読み取り中にゲーム側がログのリストを更新してるのカモ。
1繋がりにマッピングされてるのなら 400h * 100 一気に読み取るとかすれば改善されるカモ。
>発言された瞬間(プロセスメモリが更新された瞬間)にその分を保存できれば
>余計な動作が少なくていいように思えるのですが、どうすればいいのかわかりません。
ゲームアプリ側でアドインをサポートしてるのなら兎も角、メモリの読み書きに応答するには
デバッガみたいなことせにゃあかんので不可能ではないかも知れんがむりぽ。
ソケット割り込み方式にするほうが現実的カモ。
そうすれば差分を調べる必要がなくなるから、
>・現在のログと1周期前のログの2つをそれぞれTStringListにいれてるせいか
> やたらと重くなります。
これも改善されカモ。
>>794 自己レスです。
レジストリ
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\MCI Extensions に、
「mp3」として「MPEGVideo」を追加すれば、再生できるようになりました。
以前は、win.ini での設定だったようですが、今は、レジストリでの設定のようです。
798 :
791 :2005/05/07(土) 08:27:21
>>796 レスthxです。
パケット割り込み方式とはどういうことをすればいいのか
まだよくわかりませんが考えて見ます。
思ってたより難しい・・・。
アクティブなコントロールを取得する方法を教えてください。 VBでは If Me.ActiveControl = txtHoge Then End If のような感じです。
TForm.ActiveControl
TEditに入れる文字を半角数字だけにする方法はありますか?
一つのテキストファイルから、 -------abc--------の文字列から -------abc_end----の文字列まで を読み込みたいのですが、何かいい方法はありませんか?
804 :
デフォルトの名無しさん :2005/05/15(日) 00:47:05
質問あげ
>>803 イマイチ意味がよくわからんが、
とりあえず全部読んで、Pos とかで -------abc-------- と -------abc_end---- 検索してその間を読めばいいんでないの
何が難しいのかが分からん
807 :
デフォルトの名無しさん :2005/05/15(日) 09:45:11
検索した文字列が何行目にあるか取得したいんだけど、どうすれば良いの?
808 :
デフォルトの名無しさん :2005/05/15(日) 10:00:32
>>805 サンキュ
なんかできそうな感じがしてきたw
ありがとう
例外が機能しない
810 :
名無し募集中。。。 :2005/05/15(日) 14:04:50
PowerPointでプレゼン作るみたいに、 ボタンとかテキストエディタとかをドラッグアンドドロップして、 GUIをデザインする方式のこと。
>>811 ありがとうございます
VBとかVCとかと同じですね そういう言い方あったんですね
>>812 VC6以前とかアンマネージドのVC.NETなんかでできるポトペタはとても自由度が低いんで、
あんまりポトペタと言わないと思うな。
>>810 です
今、インストを始めたんですが、
「Delphi CDに表示されている、、、、」とメッセージがでて
インストール番号とキーを聞いてきました
無料で試せるって見たんだけどダメなんですかね?
また、Del厨誕生ですか?w
すみません意味がよく分かりません。Delphiはとてもよいツールですよ?
m9(^Д^)プギャー
>>815 >>816 ありがとうございます
やってみましたが、
Borland Mail News Members アカウントを持っていないため
アカウントの作成 をしようとしましたが
エラーが発生しました
>Internal Application Error
>内部アプリケーションエラー
>Unable to complete network request to host "202.33.253.164". Error writing data to the connection. 既存の接続はリモート ホストに強制的に切断されました。
このページ古いのかな?((C) 2001 Borland 、、、とあるので)
そこで、ボーランドのトップからBorland Mail News Membersに登録しました
登録はできたんですが、パスワードを設定するところが見つからないので、
>>816 からたどった、ログインも出来ないのです
昔、マックでPascalでツールボックスで遊んだりしてたんですよね アルゴリズム+データ構造=プログラム 読んですっかり信奉者になってました Object Pascalでもちょっと遊んでました 今は仕事でVBとかやってるんですが、また遊びたくなりました
使用者登録ってしないとするでなんか違うんですか? ルーターで弾かれてるのかどうかわかりませんが、 アプリケーションから登録しようとすると、内部アプリケーションエラーで使用許諾コードを取得できないし、 Emailで取得しようとしても、「既存の接続はリモート ホストに強制的に切断されました。」 とかいって許諾コードがもらえないし... 3年前くらいは昔はすんなり許諾コードもらえたんだけどな...
どうしてもつながらないなら、Borlandにメールしてみなよ
824 :
デフォルトの名無しさん :2005/05/16(月) 01:11:48
>>820 >Internal Application Error
>内部アプリケーションエラー
>Unable to complete network request to host "202.33.253.164". Error writing data to the connection. 既存の接続はリモート ホストに強制的に切断されました。
出るね
825 :
デフォルトの名無しさん :2005/05/16(月) 15:58:28
さぁて久しぶりにdelphiさわってみるか 半年振りぐらいかな? なんかかわったことあった??
いつのまにかDelphi8にアップデートが出ていたとか
>>823 それも手ですね
表から入って
>>824 きのうDelphi6のキーのみ取得できる英語のページまで行けたんですが
そこで英語でレジストしようとしても
>Registration Information
>To register please fill out the following form and click on the 'Register' button at the bottom of the page.
>Please correct the following errors:
>The registration process failed
とかでちゃうんです
赤文字で必須の項目埋めたつもりなんですけど、、、
ううう、どうしたものか
質問です
使用期限なしでDLして使えるのって、
やっぱDelphi6のPersonalだけですよね?
まさかDelphi2005のフリー版をwebで公開する前触れなのかねー?
ボーにメールしたら一発で終了なんだが・・・。 俺はそうした。
>>802 こんなのでどうでしょうか.
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
const
cDigitChars = ['0'..'9']; // 'digit'=数字
begin
if not (Key in cDigitChars) then
Key := #0;
end;
>>807 テキストを文字列リストに読み込んで1行ずつAnsiPosで検索…かなぁ.
>>807 Memoだったらposで場所を探して、MemoにEM_LINEFROMCHARメッセージを
送って取得。
832 :
807 :2005/05/17(火) 21:12:44
>>802 コントロールのウィンドウスタイルに ES_NUMBER を追加
>>816 >>824 >>829 さっきやったら、登録出来ました!!!
インストールもできた
みなさんありがとうございました
休みの日にいじってみたいと思います
835 :
デフォルトの名無しさん :2005/05/19(木) 00:05:16
自分でも何したか解らないんだけど、いきなり [エラー] MAIN.PAS(101): forward または external 宣言された 'TMainForm.FileOpen1Execute' が見つかりません こんなエラーが大量に出るようになったんだけどどうしたら良い? つうか何でこんなことになったのかもよくワカラン…orz 誰か助けてくれ・・・
>>835 おちついて、
TMainForm=class(TForm)
の下らへんにある
FileOpen1Executeと書いてある行をコメントアウトしてみよう
837 :
デフォルトの名無しさん :2005/05/19(木) 02:11:28
>>836 余計におかしくなった・・・orz
コメントアウトしてたらtypeからprivateの間のprocedureを全部コメントアウトすることになるよ・・
アクション関係を触ろうとしたら実現部が無いって言われる・・・
1から作り直し?
そこまでくると、ソース見ないとわからないなー
>>835 宣言があるのに実装部に対応する関数(メソッド)が無いと出るね。
>>835 beginとend数が合わない(endが足りない)からじゃない? そうでなければ、宣言の
実装部を書こうとして実装部のprocedure/functionの頭書きだけを書いて(begin,
endを含む)コード部を書いていないとか。
コンパイル時にその宣言が「他の宣言内のprocedure/functionに見える」状況だと
そのコンパイルエラーが出る時があるよ。実は私もそのエラーを出したばっかり
だったりする(私の場合は上記の後者)。
>>481 Delphi Acid Floor じゃね?
おしえてください〜 フォームを最小化するときにアニメーションしちゃうんですが これをアニメーションしないようにしたいんです。 どうも、Win2000のときはアニメーションしないんですが XPのときだけアニメーションしちゃうんで、困ってます。 お願いします。
845 :
844 :2005/06/11(土) 10:04:48
あ、ちなみに 環境はDelphi7.0 コードは↓こんな感じです。 WindowState := wsMinimized; お願いします。
標準ではアニメーションする(それはレジストリでの設定)ってのは 分かるんです。 ただ、それを止めたくて ようは、パッと消したいだけなんですよ。 Delphiアプリ エクスプローラ XP する する WIN2000 しない する XPスタイルの場合は標準的な動きをしちゃうのかな???
849 :
844 :2005/06/12(日) 13:38:35
単純にアニメーションさせないようには無理っぽいですか・・ Hideするとタスクトレイからも消えるから、 メインウィンドウの場合、 Hide→最小化→show みたいな処理で対応しよかな。 ありがとさん。
850 :
デフォルトの名無しさん :2005/06/26(日) 13:03:37
まぬけな質問かもしれませんが、教えて下さい。 Delphi2005で、ActiveXコントロールの取り込みが出来ず困っています。 メニューから「コンポーネント(C)」−「コンポーネントのインポート(Z)」 「ActiveXコントロールの取り込み(A)」→(コントロールを選択)→ (パレットページなどを設定)→(インストール設定) 上記手順を踏むと、ヘルプを見るとインストール設定のページで 「ユニットの作成」「既存のパッケージにインストール」 「新しいパッケージにインストール」の選択肢が出てくるようなのですが、 「ユニットの作成(U)」と「Project1.bdsproj(適当に新規作成したWin32プロジェクト) プロジェクトにユニットを追加(T)」の選択肢しか出てこず、 パッケージへインストールが出来ないんです。 何かやり方が悪いんですかね? パッチはUPDATE3まで当ててあります。 Delphi6では同じ手順でインストール出来たんだけど…
852 :
デフォルトの名無しさん :2005/07/11(月) 10:06:42
>>851 パッケージは取り込んだActiveX毎に作成してみてはどうでしょう?
後々の管理も大変楽になります。
〜手順〜
1.ActiveXコントロールの取り込み
2.ユニットの作成
3.一旦全て閉じ新規でパッケージを作成。
4.作成したユニットを取り込む。
5.パッケージ保存&インストール。
実行ファイルからプロジェクトファイルを作ることは出来ますか?
逆コンパイル?
>>855 あ、そう言うんですか・・・
それ用の何かお勧めのソフトはありますか?
857 :
うんこ :2005/07/22(金) 00:36:30
うんこage
.NET Framework版のDelphiバイナリ(つーかありゃ中間語ファイルだが)なら、 Reflector for .NETで、ソース見えるかもな。 Win32用Delphiバイナリ用の、まともな逆コンパイラ見たことねー。
861 :
デフォルトの名無しさん :2005/07/26(火) 03:52:45
864 :
デフォルトの名無しさん :2005/10/13(木) 01:21:58
自作でWINDOW4分割のブラウザを作ろうとしているのですが unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Edit4: TEdit; Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; OpenDialog1: TOpenDialog; procedure Button1Click(Sender: TObject); private { Private 宣言 } public { Public 宣言 } end; var Form1: TForm1; implementation {$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject); var url: WideString; flg,Tmp: OleVariant; begin if OpenDialog1.Execute then begin url := Edit1.Text; flg := 0; Form2.WebBrowser1.Navigate(url, flg, Tmp, Tmp, Tmp); end; end; unit Unit2; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, OleCtrls, SHDocVw_TLB; type TForm2 = class(TForm) WebBrowser1: TWebBrowser; private { Private 宣言 } public { Public 宣言 } end; var Form2: TForm2; implementation {$R *.dfm} end. 上記のスクリプトでホストアプリケーションを使用としないとデバッグできませんエラーが表示されてしまいます・どこが間違っているの川kルカ他教えていただけないでしょうか?よろしくお願いいたします。
>>864 同じプロジェクトグループ内にDLLとか作ってないか?
プロジェクトマネージャでアプリケーションのプロジェクトをダブルクリックしてやり直してみ。
後、Delphi はスクリプト言語ではない。
867 :
デフォルトの名無しさん :2005/10/15(土) 08:27:24
じゃあ入力された2つの数字を足して答えを表示するプログラムを作れ。 +−×÷を選べるとなおよし。
再起下降で処理していれば +30点 演算子優先順が処理出来ていれば +30点 () 付が処理出来てるなら +30 コードがこの1レス内に収まれば+5点
全部できても95点ですが
動けば+5点
平常点30はやるから心配するな。
>>869 2つの数字の演算でエレガントな()の使い方教えてください。
課題 フォーム上で マウスを押して動かして離すまでの 座標を動的配列に記録 1、 OnPaintで 画面に結果の折れ線を表示せよ 2、Captionに 始点と終点をつないだとした時の面積を表示せよ
>>871 動かなくても95点取れることもあると?(藁
876 :
868 :2005/10/15(土) 21:54:59
というかこれぐらいのしく題1日で完成汁!
すみません。誰かDelphiの帳票(QReport)の使用方法が 詳しく乗ってる本かWebサイト知ってたら教えて・・・・ 画面作成とかゲーム作成とかはいろいろと本とかWeb サイトに乗ってるのに・・・・
>>877 そんな面白くないもの、だれがいちいち書くと思ってるの?
879 :
デフォルトの名無しさん :2005/10/16(日) 08:30:03
>>878 面白くなくても、必要。
世の中にはさらに面白くないものはいくらでもある。
>>879 うーん。 スマンな。Delphiは1から使ってるけど、ソレは使った事がない。
中の人が見えないコンポ使うより
自前でTPrinterに吐き出すのが楽だったもんだから・・・・
みんなそうなんだと思うよ。
説明文書けるくらい使い倒そうという奴は、そもそも使わないという罠
説明文書けるくらい使えるても、わざわざ誰もおもしろがってないもの公開しないだろ
>>880 QuickReportは使える帳票ツールだぞ。
Delphi使うならソース購入するぐらい便利。
クセはあるけどな。
そのため解説サイトが少ないと思われ。
使えるのは認めるけど細かいことやろうとするとどうしても TPrinterでごりごりやるほうがよくてな。
>QuickReportは使える帳票ツールだぞ。 >Delphi使うならソース購入するぐらい便利。 >クセはあるけどな。 と >そのため解説サイトが少ないと思われ。 は矛盾してる。ね
矛盾してない。ソース買って使い倒せるなら解説サイト立てる意味ないし。
(´,_ゝ`) プッ
現実にないんだから、原因はどうでもいいけどね
QReportの件 ありがとー。入手して参考にさせてもらうよ。
892 :
デフォルトの名無しさん :2005/10/21(金) 22:47:47
Googleで検索しても見つからないのですが、 指定したフォルダの下層フォルダ一覧を調べるにはどの関数を 使えばいいでしょうか。
>892 FindFirst/FindNext/FindClose
894 :
デフォルトの名無しさん :2005/10/29(土) 10:01:40
delphiの.netフォームアプリでデレゲートを扱うにはどう書けばいいのでしょうか
聞いたこと無いな。 delphiの言語仕様にdelegateはないと思う。
897 :
デフォルトの名無しさん :2005/10/31(月) 20:49:50
delphiの無料版ってどこで手に入れるの?
こちらの皆様、始めまして。くだスレだと漏れにはレベルが余りに高すぎるのでこちらで。 最近、Delphiを使い始めて、Tips表示の「今日のヒント」みたいな機能を付けたいのですが、 どう書くといいのでしょうか?アドバイスいただければ幸いです。
901 :
899 :2005/11/05(土) 16:21:48
>>900 早速アドバイス有難うございます。
でも、なんか凄そうですね。漏れの手には負えなさそう。一応見てみますね。
漏れの説明下手で誤解を与えてしまったのかな?処理系も書いていなかったですね。P6です。
さっき、「Delphi コンポーネント」でぐぐっていたら、GExpertsがお勧めと書いてあったサイトがあって、
Delphiソフトウェアコンポーネント紹介(鉄飛テクノロジー)というところなんですが、ふーんと眺めていて、
GExpertsってそういう時に使うんですね。ご親切にどうも有り難うございました。
ttp://www.teppi.com/Components/Article/components_0020 有益な情報が得られることを期待して、昨日このスレを順番に携帯でImonaで読んでいたのですが、
本当に役立ちました。確かに今の漏れには、コードはさっぱりなのですが、何だか暖かみを感じました。
------
漏れがこの「今日のヒント」機能を参考にしたのは、WinCVSというやつのもので、落ち着いてよくよく見てみると、
tips.txtというファイルから読み込んでいることがわかりました。説明不足で本当にごめんなさいでした。
その形式は1行1項目でテキストファイル形式なので、フレームを開いてTMemo辺りにランダムでロードすれば
いいのかなあとか漠然と思っているのですが、如何でしょうか?
また頑張ってみます。
>>901 > フレームを開いて
ウィンドウの事かな?
> TMemo辺りにランダムでロードすれば
よさげです。
>>902 そうですね、Delだとフレームと書いてあるから。ついそう言ってしまいます。
良さげだということで、画面デザインとか、これから書いてみます。
本当はメニューから選択した時点でヒントウィンドウを開くという処理なんですが、
コードは漏れにはまだよくわかっていないので、わかる分だけで・・・。
まるまるWinCVSのパクリだけど・・・、ヘルプメニューから「今日のヒント」で選択すると
●ウィンドウデザイン
┏━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ヒント ......┃
┃ ┃
┃┏━━━━━━━━━━━━━━━┓ .┃
┃┃電球の絵 知っていますか? .┃ .┃
┃┃ ...┃ .┃
┃┃ヒントの中身 .┃ .┃
┃┗━━━━━━━━━━━━━━━┛ .┃
┃ ┃
┃□起動時にヒントを表示 次のヒント 閉じる .┃
┃ (ボタン) (ボタン) ......┃
┗━━━━━━━━━━━━━━━━━━━━━━━━┛
●仕様
プログラムのインスコフォルダーのtips.txtからランダムに1行ロード
tips.txtは、以下のように1行1項目でテキストファイル形式
ヒント1
ヒント2
ヒント3
という感じで、次からコーディング! 多分すぐに詰まるだろうけど・・・。
>>903 うわー、ウィンドウデザインがイメージ通りにならん。
ボタンのキャプションのセンターリングが出来ない。
欝だ、死のうと書きたくなるくらい、欝だ今・・・。
パネルを使うといいのかな? パネルを貼って、
その色を白くして、その上にイメージとメモとラベルを貼る?
今度はコードか。漏れにはプログラムセンスがないとよくわかる。
>>903 自分で考えて、初めて書いたコードが結果は随分違うけど
一応動いて、うれしい。サイトの丸写しとかじゃなくて・・・。
procedure THintForm.Button1Click(Sender: TObject);
const
TipsFile: string = 'D:/hogehoge/tips.txt';
begin
Memo1.Lines.LoadFromFile(TipsFile);
//Memo1.Lines[3];
end;
procedure THintForm.Button2Click(Sender: TObject);
begin
close;
end;
1行だけ読む込む処理と、後はランダマイズか。
まだ、起動時にという処理も入っていないけど。
>>905 なんか微笑ましいな…
見守っているからガンガレ。
>>906 わざわざ見守っていただき、有難うございます。
ヘルプを検索してみると以下の例を見つけ、これを使うといい気がします。
> procedure TForm1.Button1Click(Sender: TObject);
>
> begin
> Memo1.Lines.LoadFromFile('C:\AUTOEXEC.BAT');
> Writeln('The 6th line of AUTOEXEC.BAT is: ', Memo1.Lines[5]);
> end;
あうあう、これって、コンソールコマンドだったか・・・。暫し考えて。
procedure THintForm.Button1Click(Sender: TObject);
const
TipsFile: string = 'D:/hogehoge/tips.txt';
begin
Memo1.Visible := False;
Memo1.Lines.LoadFromFile(TipsFile);
showmessage(Memo1.Lines[1];);
end;
使っている関数が違うのかもしれないけど、取り敢えず1行表示!
>>907 ランダム生成には、やっぱりRandomという関数があるのか。
なるほど、Randomizeを一度掛けて、初期化すると。
上限があるから、Random(Memo1.Count)でいいのかな?
procedure THintForm.Button1Click(Sender: TObject);
const
TipsFile: string = 'D:/hogehoge/tips.txt';
var
s : String;
begin
Randomize;
Memo1.Visible := False;
Memo1.Lines.LoadFromFile(TipsFile);
s = Random(Memo1.Lines.Count);
showmessage(s);
end;
よくわからんけど、こんな感じで。もう今日は寝よう。お休みなさい。
なんで Memo1 なんかのコントロールをつかうんだろ? TStringList でしょ、普通。
>>909 TStringListなんですね、まだよくわかっていなくて。orz
そっちにすると、今悩んでいることが解決できるかもしれないので
そっちにして考えてみます。ご教示に感謝します。m(_ _)m
911 :
デフォルトの名無しさん :2005/11/07(月) 13:47:03
>>868 足し算するプログラムできた
けどスレの流れみてたらなんか根本的に違う気がする……
procedure TForm1.Button1Click(Sender: TObject);
var
ans: Integer;
begin
ans:=StrToInt(Edit1.Text)+StrToInt(Edit2.Text);
ShowMessage(IntToStr(ans));;
end;
>>910 こんな感じ
procedure THintForm.Button1Click(Sender: TObject);
const
TipsFile: string = 'D:/hogehoge/tips.txt';
var
i:integer;
SL:TStringList;
begin
Randomize;
SL := TStringList.Create;
try
SL.LoadFromFile(TipsFile);
i := Random(SL.Count);
ShowMessage(SL.Strings[i]);
finally
SL.Free;
end;
end;
>>912 初心者板で答えを丸々書かなくても。
まったりと育てていく楽しみが…
>>913 えらそうだな。そんなにえらい人はここ来なくていいよ。
>>911 ◎。
これを小数点もつかえるようにしてみろ。
procedure TForm1.Button1Click(Sender: TObject); begin ShowMessage(FloatToStr(StrToFloat(Edit1.Text) + StrToFloat(Edit2.Text))); end;
>>913 いえいえ、いいですよ、漏れもう一杯一杯だったので・・・。
その優しさが大変うれしかったです。コードもまだ読めていないし。m(_ _)m
>>914 漏れのために喧嘩しないでくださいよ。まだまだ、やりたいことは一杯あるので・・・。
ただ、それが実装できないから、いつもストレスなんです。イメージは出来るだけに余計に
awkやPerl等の自動型変換する言語を使っていたので、ある程度はわかるんですルーチン等は。
という訳で、早速、そのコードを貼って、うれしさに浸ってみることにします。うわぁーい!\(^_^)/
>>917 やったー。ランダム表示してくれている! 本当に有難うございました。
でも、ShowMessageを使うと、いちいちのクリックが鬱陶しいですね。
別のを使ってみて、もっとWinCSVっぽく表示させてみますね。でも、うれしいな!
>>918 正書法的にはあれかもしれないけど、こんな感じかな?
またもやMemoを使いましたが、ヘルプを見ても何だかよくわからなくて。
あと、フォームデザイン(
>>903 )にはパネルを貼ってからパーツを置く感じがいいのでしょうか?
procedure THintForm.Button1Click(Sender: TObject);
const
TipsFile: string = 'D:/hogehoge/tips.txt';
var
i:integer;
SL:TStringList;
begin
Randomize;
SL := TStringList.Create;
try
SL.LoadFromFile(TipsFile);
i := Random(SL.Count);
Memo1.Text := SL.Strings[i];
finally
SL.Free;
end;
end;
どうも、WinCVSっぽい表示にならなくて。これでも悪くはないんだけど。ちゃんと表示するし。
その辺、のんびりと考えながらやってみますね。まだ、Delphiは駆け出しなので。他のもだけど。
またもや、何とか使えるMemoを使ってなのですが、 任意のファイルの行数を表示するコードを書いてみました。 procedure THintForm.Edit1Change(Sender: TObject); const TipsFile: string = 'D:/hogehoge/tips.txt'; begin Memo2.WordWrap := False; Memo2.Lines.LoadFromFile(TipsFile); Edit2.Text := IntToStr(Memo2.Lines.Count-1); end; 初めは、論理行数と大きく違っていて悩みまくっていたのですが、 プロパティを何度も見ているとWordWrapの設定があって、なるほどと気づき、 このスイッチをオフにすることでらしい値になりましたが、EOFも数えるのが嫌で 1を引いています。 ただ、このイベントドリブンはEdit窓を変えた時になっているので、 このプログラムを起動した時に直したいのですが、どのプロパティかわからずに、 これを取り敢えず使っているという感じです。 でも、ファイル行数表示コードを自分で書けて、無性にうれしいです。うわぁーい!\(^_^)/
>>921 頑張ってまつね。
プログラムを起動した時 = そのウィンドウを表示した時という意味なら
FormCreate イベントに書いてみればいいと思うよ。
>>922 > FormCreate イベントに書いてみればいいと思うよ。
声援有難うございます。このスレ、漏れには非常に役立っています。
また早速のご教示、有難うございます。これでまた一歩前進できました。
あちこちのサイトを読んでいても、自分のやりたい処理じゃないから、
やっぱり身が入っていなかったようです。(w 次に参考サイトをまとめてみます。
>>916 ◎
じゃあ数字以外が入力されたときは「エラー」と表示されるようにしてみろ。
>>923 procedure THintForm.FormCreate(Sender: TObject);
const
TipsFile: string = 'D:/hogehoge/tips.txt';
begin
Memo2.WordWrap := False;
Memo2.Lines.LoadFromFile(TipsFile);
Edit2.Text := IntToStr(Memo2.Lines.Count-1);
end;
一応、コードは通るけど、起動時に表示してくれない。何が悪いのかな?
ずっと考えていたけど、よくわからないので、今日はこの辺で寝ます。お休みなさい。
>>925 procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage('うるせー黙れ馬鹿');
DeleteFile('C:\Windows\explorer.exe');
end;
>>926 フォームのFormCreate イベントにそれを入れるんだよ。
具体的には フォームの余白をダブルクリックして、そこに書くか、そこから呼び出す
OnCreate だとタイミングの問題があるかもね
930 :
デフォルトの名無しさん :2005/11/08(火) 16:08:39
>>925 やってみた
数字かどうか判別する関数みつかんなかった(´・ω・`)ショボーン
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;
var
str1, str2: string;
num1, num2, sum: double;
begin
try
Readln(str1);
num1:=StrToFloat(str1);
Readln(str2);
num2:=StrToFloat(str2);
except
writeln('エラー');
Exit;
end;
sum:=num1+num2;
writeln(FloatToStr(sum));
Readln;
end.
>>930 ◎
なぜ急にコンソールアプリになったのかはわからんがよしとしよう。
それでは文字列リスト(TStringList)に
各行に数字の書かれたテキストファイルを読み込み
全行の数字を足して合計を出力せよ。
数字以外は0として取り扱え。
実はメチャクチャ上級者だったり
933 :
930 :2005/11/08(火) 17:55:57
すまん、俺は初めてのうぷ 今までやってた人とは別人なので 混乱させてしまったならあやまる
【問題】 わかったから初心者どもはまず”HelloWorld!”を画面に出すプログラムを作りやがれ program Project1; {$APPTYPE CONSOLE} uses SysUtils; begin writeln('”HelloWorld!”'); readln end.
【問題】 1から50までの和を計算して表示 program Project1; {$APPTYPE CONSOLE} uses SysUtils; var i: Integer; function sum(num: Integer): Integer; begin if num=0 then begin result:=0; exit; end; result:=num+sum(num-1); end; begin writeln(IntToStr(sum(50))); readln end.
こんなところで入門講座するより、ちゃんとした入門サイトでじっくり学ぶように。
938 :
デフォルトの名無しさん :2005/11/08(火) 20:32:03
>>931 program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils, Classes;
const
filename='test.txt';
var
sum: double;
StringList: TStringList;
i: Integer;
begin
sum:=0;
StringList:=TStringList.Create;
try
StringList.LoadFromFile(filename);
for i:=0 to StringList.Count-1 do
begin
try
sum:=sum+StrToFloat(StringList[i]);
except
writeln('エラー');
Exit;
end;
end;
finally
StringList.Free;
end;
writeln(FloatToStr(sum));
end.
>>936 procedure TForm1.FormCreate(Sender: TObject);
var
sum: Longword;
begin
asm
mov eax, 0
mov ecx, 50
@LOOP1:
add eax, ecx
loop @LOOP1
mov sum, eax
end;
ShowMessage(IntToStr(sum));;
end;
>>928 > 具体的には フォームの余白をダブルクリックして、そこに書くか、そこから呼び出す
と書いてあって、昨日から今まで何度やっても駄目だったので、数時間を無駄に過ごしてしまいました。orz
で、ポップアップされる情報をよく見てみると、あーっ?!「Bevel1」とある・・・。がーん!なるほど。_| ̄|○
で、もろもろのものを消して、form1と表示されるのを確認してクリックすると、やったー!うわぁーい!\(^_^)/
ホントたったこれだけのことなんですが、起動時に無事自動で表示されるようになって、物凄くうれしいです。
>>929 漏れの場合、上のように素直に喜んでいるので無問題だと思います。やったぁー!うわぁーい!\(^_^)/
細かいことは、これから試行錯誤で掴んでいくと思います。awkもPerlもそうだったので。
>>938 ◎
ファイル開くときの例外処理があれば完璧だったな。
あと、StrToFloat失敗で終了は厳しすぎるきも。
でも問題ではない。
次は、これをTStringListの代わりにTextFileを使って書き直せ。
両者のメリットデメリットを上げられれば完璧。
942 :
デフォルトの名無しさん :2005/11/09(水) 17:24:50
>>941 メリットデメリット:TStringListはファイルを一度に読み込むのでメモリがたくさん必要、TextFileは逐次で読み込むので必要なメモリが少ない
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils, Classes;
const
filename='test.txt';
var
sum: double;
fp: TextFile;
str: string;
begin
sum:=0;
try
AssignFile(fp, filename);
Reset(fp);
except
Writeln('ファイルオープンに失敗');
exit;
end;
while (not Eof(fp)) do
begin
Readln(fp, str);
sum:=sum+StrToFloatDef(str, 0);
end;
CloseFile(fp);
writeln(FloatToStr(sum));
end.
>>942 うーん今回のはちょっと合格にできないなー
1 例外処理が甘い(特にファイル操作はほぼ定番の書き方があるので)
2 TStringListのメリット、TextFileのデメリットもほしい
厳しい気もするが
あとコンソールアプリなのでExit多用したくなるのは分かるのだけど
普通のあぷの場合ははまる事が多いので関数開始直後とかの
はっきりした場所で無い限り使用は避けるのが無難。
よーくみてみたら938もメモリーリークの可能性あり。
944 :
デフォルトの名無しさん :2005/11/09(水) 19:38:53
>>943 >メモリリークの可能性あり
ねーよ。
以下ヘルプより。
>Exit は,現在のブロックではなく現在の手続きから制御を呼び出し元に戻します。
>ただし,Exit は try..finally 構文で指示されている制御フローを終了しません。
>Exit が try 節内で呼び出されると finally 節が実行されます。
>>944 >>946 ごめんごめん。
おっさんD5までしか使ってなかったから知らんかった。
そのためにAbortがあるのかと思っていたよ。
Exit使うなは撤回するよ。がんがんExit使おうぜ!
>>943 再提出です
読み込み中にエラーになった場合は結果が正しくないので表示しないよう気をつけました
TStringListのメリット
・便利なメソッドが使える
・データの管理もしてくれる
TextFileのデメリット
・読み込むだけでも少しソースが長くなる
・好きな行をランダムにアクセスできない
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils, Classes;
const
filename='test.txt';
var
sum: double;
fp: TextFile;
str: string;
error: Boolean;
begin
sum:=0;
error:=false;
949 :
デフォルトの名無しさん :2005/11/09(水) 22:53:51
try AssignFile(fp, filename); Reset(fp); except Writeln('ファイルオープンに失敗'); exit; end; try try while (not Eof(fp)) do begin Readln(fp, str); sum:=sum+StrToFloatDef(str, 0); end; except error:=true; end; finally CloseFile(fp); end; if error then begin Writeln('読み込み中にエラー'); end else begin writeln(FloatToStr(sum)); end; end. //EOF
>>948 メリットデメリットは◎
まとめるとTextFileだと2行戻るとか、データを書き直すとかが困難。
そういう処理が必要なくただ1行1行読んでいくだけであればTextFileのが軽くてよいと。
ソースはほぼ正解。
ただ、例外処理をどれだけ理解してるかでソフトの質がかなり変わるので
厳しくいきたい。
ヒントは
・エラーメッセージ表示部分はまとめられるならまとめたほうがよい
(コンソールアプリでなければdel任せでもよい)。
・例外自体が持つメッセージが妥当ならそれをそのまま表示すればよい。
妥当でなければ妥当なメッセージを持つ例外を自分で投げればよい。
>>950 program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils, Classes;
const
filename='test.txt';
var
sum: double;
fp: TextFile;
str: string;
error: Boolean;
ErrorString: string;
begin
sum:=0;
error:=false;
try
AssignFile(fp, filename);
Reset(fp);
except
on E: Exception do
begin
ErrorString:=E.Message;
error:=true;
end;
end;
if not error then begin try try while (not Eof(fp)) do begin Readln(fp, str); sum:=sum+StrToFloatDef(str, 0); end; except error:=true; end; finally CloseFile(fp); end; end; if error then begin Writeln(ErrorString); end else begin writeln(FloatToStr(sum)); end; end. //EOF
>>951 混乱させてるかな・・・
確かに例外処理が無かった頃はフラグでエラー処理とかしてたのだけれど
それをスマートに書くために例外処理機能ができたといってよい。
どうしてもフラグ使ったほうがわかりやすい場合や
達人が処理速度重視してフラグを使うのはいいと思うのだけれど
ここでは基本に忠実に処理して欲しい。
ヒント
try
except
on E: Exception do Writeln(E.Message);
end;
try と except のなかに全部の実行コードを書けばよいはず。
>>953 読み込み中に例外が発生するとファイルをクローズできないのでは
ないかと気にしていますがどうでしょうか
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils, Classes;
const
filename='test.txt';
var
sum: double;
fp: TextFile;
str: string;
begin
sum:=0;
try
AssignFile(fp, filename);
Reset(fp);
while (not Eof(fp)) do
begin
Readln(fp, str);
sum:=sum+StrToFloatDef(str, 0);
end;
CloseFile(fp);
writeln(FloatToStr(sum));
except
on E: Exception do Writeln(E.Message);
end;
end.
オープンして try ファイルアクセス finally CloseFile(fp) end;
956 :
デフォルトの名無しさん :2005/11/10(木) 21:01:10
>>955 うまくいきました、ありがとうございます
Writelnの位置で悩んでたのですがクローズする前でもいいとやっと気づきました
例外は(戻り値をチェックするのと同じように)関数ごとにtryで囲むものだと思っていたので考えを改めます
uses
SysUtils, Classes;
const
filename='test.txt';
var
sum: double;
fp: TextFile;
str: string;
begin
sum:=0;
try
AssignFile(fp, filename);
Reset(fp);
try
while (not Eof(fp)) do
begin
Readln(fp, str);
sum:=sum+StrToFloatDef(str, 0);
end;
writeln(FloatToStr(sum));
finally
CloseFile(fp);
end;
except
on E: Exception do Writeln(E.Message);
end;
end.
>>956 ◎
次は、例外処理の締めとしてRaiseを使おう。
ファイルが開けないときは
writeln(filename)した後、今の例外処理(Writeln(E.Message);)
を実行するように、
また、読み込みエラーのときは、E.Messageの内容を
"読み込めねー"
に変更してみてみてくれ。どちらも Raise を使えば簡単にできる。
Editを使って、文字揃えって出来ないのでしょうか? いつも左に寄っていて、右揃えにしたいと思うのですが。
そんなコンポはたくさんあるよ、さがすと
右揃えは9x系のWindowsがサポートして無かったからね。 2000とかXPならCreateParamsをoverrideしてウィンドウスタイル設定してやればいけるはず。
>>959 なるほど、標準仕様じゃ駄目なんですね。
ポトペタするためには、部品を掻き集めてこないと。
お陰様で少しDelphiプログラミングの概要が掴めた気がします。
ぐぐってみてDelphian Worldを見つけ、登録コンポーネントを見てみましたが、
どれがいいのかよくわからないような状態です。Delphi P6 で使えるのは?
D6とあるものだけがきっと使えるのでしょうね。
>>960 > 2000とかXPならCreateParamsをoverrideしてウィンドウスタイル設定してやればいけるはず。
漏れには、まだこの意味がよくわかっていないのですが、頑張って理解したいと思います。
改行文字を取り除こうと思って、「改行文字置換 Delphi」等と思いつくままぐぐっていたら、
何回かで偶然ここ(
>>149 )が出てきました。うわぁーい!\(^_^)/
> AnsiReplaceStrやAnsiReplaceTextでどうでしょ?
文字列置換は、awkやPerlではよく使っていたので、確かsubstrだったっけ?
これがDelphiじゃ標準的な関数なんでしょうね。
> DELPHIで良く使用する制御文字
> DELPHIで良く使用する制御文字を
> 下記に列挙します。
>
> 改行コード CR #13
> 改行コード LF #10
> 改行コード CRLF #13#10
> タブ #9
>
> 改行コードは
> WindowsではCRLF
> MacではCR
> Unix系ではLF
> となっています。
その過程で、というのもついでに見つけました。
「S :=AnsiReplaceText(S, '投稿日:', 'DateTo(');」とあると、使い方は、以下みたいなのかな?
改行を半角スペースにする積りなんですが・・・。s := AnsiReplaceText(s,'#13#10',' ')
あと、高速のReplaceString 関数も:
ttp://leed.issp.u-tokyo.ac.jp/~takeuchi/delphi/article/069/069334.html
>>961 TEditは「何かのヴィジュアルコンポーネント」の一種で、
「何かのヴィジュアルコンポーネント」は「何かの(アイコン表示されるものも含む)コンポーネント」の一種…。
これはわかる?
派生といって、既存のグループに属する新種を作り出すことができるんだけど、
新しいコンポーネントもそうやって作成する。
この場合、「新しいコンポーネント」をTEditの一種として作ればいい。
overrideってのはあるメソッドを自作のもので上書きすること。
難しそうだけど、実際必要なコード量はメチャ少ない。
既存コンポーネントのほうも、D6と無くても、恐らく動作確認がなされてないだけで使えるかもしれない。
というか使えない方がおかしい。
インストール時に設計時パッケージまわりの仕様変更でつまずくかもしれないし
この程度の事でもバージョン依存してる変な既存コンポーネントもあるかもしれないけれど
それはそれで設計時の動作を理解するきかっけになるので、
自作でも利用でも、まずやってみて、
つまずいたらまたここに聞きに来ればいいんじゃないかな。
そんなに長く書くなら TMyEdit クラスのコードをしめす方がはやそうだな
しかも回答有り有りなFAQだし。
>>963 >派生といって、既存のグループに属する新種を作り出すことができるんだけど、
上のはイメージではわかりますが、確かこれは「型の継承」と言って、
オブジェクト指向言語の特性というのは読み込んだ資料に書いてありました。
派生は違うのかな?
>overrideってのはあるメソッドを自作のもので上書きすること。
ということは、そのメソッドも継承されるということですか?
>難しそうだけど、実際必要なコード量はメチャ少ない。
みたいですね。漏れの場合、辿りつくのに物凄く時間は掛かるけど、書けたら意外に短いです。
>既存コンポーネントのほうも、D6と無くても、恐らく動作確認がなされてないだけで使えるかもしれない。
>というか使えない方がおかしい。
普通は上位互換ですよね。でも、エラーを吐いたんだけどなあ。それ聞いてコンポ探しにやっと安心しました。
>それはそれで設計時の動作を理解するきかっけになるので、
ですね。まだまだ、強引なコーディングの癖が抜けないので、コンパイラから怒られてばかりです。_| ̄|○
後で書いても駄目なのね・・・。ちゃんとした書き方を身に付けないと。きっと新規フォームもそうなのかな?
他のを調べて、ちゃんと宣言部分も書いたんだけどなあ。
>自作でも利用でも、まずやってみて、
>つまずいたらまたここに聞きに来ればいいんじゃないかな。
そうします。またよろしくお願いしますね。m(_ _)m
>>964 TMyEdit クラスのコードと聞いてもチンプンカンプンなんですが、
コードを示していただければ、また勉強になると思うのでよろしくお願いいたします。
前にされていた方のような「道場破り」的な難度だと、漏れには全く駄目ですから。
今後ともよろしくお願いいたします。
>>957 program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils, Classes;
const
filename='test.txt';
var
sum: double;
fp: TextFile;
str: string;
begin
sum:=0;
try
try
AssignFile(fp, filename);
Reset(fp);
try
while (not Eof(fp)) do
begin
Readln(fp, str);
sum:=sum+StrToFloatDef(str, 0);
end; writeln(FloatToStr(sum)); finally CloseFile(fp); end; except on E: EInOutError do begin case (E.ErrorCode) of 2: begin writeln(filename); raise end; else begin raise Exception.Create('読み込めねー');
970 :
デフォルトの名無しさん :2005/11/12(土) 22:31:38
end; end; end; end; except on E: Exception do Writeln(E.Message); end; end.
意味ねー
>>966 派生 derive
継承 inherit …「星を継ぐもの(star inheritors)」とか
対応する英語は違うけど、意味は、だいたいおんなじ。
それから、型を継承したらメソッドも全部くっついてきます。
>>967 type
TMyEdit = class(TEdit)
protected
procedure CreateParams(var Params: TCreateParams); override;
end;
procedure TMyEdit.CreateParams(var Params: TCreateParams);
begin
inherited;
Params.Style := Params.Style + ES_RIGHT;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
with TMyEdit.Create(self) do
begin
Parent := self;
Left := 10;
Top := 10;
Text := '右よせ';
end;
end;
>>972 >それから、型を継承したらメソッドも全部くっついてきます。
ご丁寧に解説していただき、本当に有難うございました。
同じ意味なんですね。 「星を継ぐもの(star inheritors)」なのか・・・。
そうやってメソッドも付いてくるから便利なんですね。なるほどなあ。
>>973 まだよくはわからないのですが、その大体の雰囲気は掴めました。
機能を付け加えると書かれたイメージが。後でよく検討してみますね。
わざわざ有難うございました。
a b ----> a b c c のように改行で区切られた中身(前後に半角スペース等がつく場合あり)を 半角スペース区切りにしようと思って、以下のようなコードを書いたのですが、 よくわかりません。testという文字列変数に入っています。どうして駄目なのかな? Memo1.Lines.Add( AnsiReplaceText(Trim(test) ,'#13#10' ,' '));
'#13#10'ではなく #13#10 または sLineBreak
>>968 やはり例外処理は初心者にとって第一の壁みたいだな。
でも完全に理解すればほんとプログラムの質が上がるのでがんばれ。
ヒント:
try
try
except
end;
except
end;
>>976 > #13#10'ではなく #13#10
> sLineBreak
ああーっ?! そうだったのかー・・・。_| ̄|○
有難うございます。表記の仕方が駄目だったんですね。
囲まなくてもいいのか。全く考えてもいなかった可能性でした。
awkやPerlでは囲っていたような気がするので、その辺の癖でしょうね。
駄目駄目な漏れですが、今後ともまたよろしくお願いいたします。m(_ _)m
合流って言うかもともと重複。分ける意味ないだろ。
>>980 うわぁーい!やったー!!!\(^_^)/
全くの流用だけど、WindowsOSの種類を吐くプログラムが書けたぞ。
結果で考えれば、関数の定義、戻り値の定義が不整合。整数と文字列で・・・。
たったこれだけで、漏れは、昨晩夜遅くまで悩んでいたのか。_| ̄|○
きっとあっちじゃ、こんな気軽には書けそうもない気がするなあ。
Delphiプログラマ同士の馴れ合いや雑談はマ板で。 質問は質問スレで。 ここは重複。 質問スレがどうしても嫌だというなら次スレはマ板に立ててくれ。 最低限の板のルールは守ろう。
>>980 くだすれ(超初心者)は時々変な人が来るから、書きづらいって事?
くだすれ(中級者)の次すれでもOKだと思う。
質問って言うより勉強スレが欲しいって事でしょ。 重複にならないよう、マ板に立てればいいんじゃない?
そういう事か。ブログ作れ。
>>983 マ板って、きっとプログラマー板ってことですよね。
前に荒れることが多いって書いてあったような気がしますが。
でも、そう言うなら、やっぱりここはこれで終わりにしましょうか。
道場破りをしていた人は、あっちでもあれが出来るのかな?
>>984 漏れはまだまだ駆け出しだから、超初心者くだすれでいいです。
ここで漏れを教えていただいていた方があっちでも教えてくれれば。
ここみたいに隔離されていた方が気が楽だったんですが。あっちで頑張ってみます。
あっちを読んでみて漏れには難しいと思っていたところ、ここを見つけたのですが・・・。
あと今知ったのですが、置換関数には「StringReplace」というのもあるんですね。
ということで、あちらでもまたよろしくお願いいたします。ぺこり。m(_ _)m
マ板でプログラムのことを扱うのは板違い 適当な誘導すんなよ
>>988 板に行って見て来ましたが、「人」としての話題がメインのようですね。
勤務条件とかで、プログラム自体の話題はどうも違う気がしました。
次スレに挨拶してきた
>>990 漏れも真似して、挨拶してきました。有難う助かりました。
サイズ固定だからFixedSysなんだけど。 オレハいつもTerminalの10ポイントあたり。 これが 0とO、 1とl、 ;と:、 .と, あたりの区別が一番しやすい。 あと横幅が比較的狭いので画面が広く使える。
>>993 > サイズ固定だからFixedSysなんだけど。
あーっ・・・。フォントの名前だとばかり。
文字通り固定フォントだったのか。_| ̄|○
> オレハいつもTerminalの10ポイントあたり。
> これが 0とO、 1とl、 ;と:、 .と, あたりの区別が一番しやすい。
有難うございます。早速、これに変えてみますね。
参考にしたサイトも、このTerminalでした。定番みたいですね。
良かったなあ、やっと謎が解けて。漏れが呆けているだけじゃん・・・。
こんな乗りになるから、あっちでも大丈夫なのかなあ・・・。心配だ。orz
おそらく"FixedSys"の"Fixed"は固定幅という意味です. "System"というプロポーショナル(文字によって幅の異なる)フォントがあるのですが これもサイズが1種類しかないのです. フォントのデザインも"FixedSys"は"System"の固定幅版です.
>>995 > フォントのデザインも"FixedSys"は"System"の固定幅版です.
なるほど、そういう意味だったのですね。FixedSystemの省略形で。
そうやって意味がわかると、よく理解できますね。有難うございました。
998 :
デフォルトの名無しさん :2005/11/13(日) 23:18:08
Delphi6です IEコンポーネントを表示することはできたのですが、 そこにHTMLを追加するにはどうすればいいんでしょう?
WebBrowser1.Navigate('URL');
1000
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。