トップページ⇒tech
1001コメント282KB

くだすれDelphi(超初心者)その27

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2005/09/13(火) 14:40:39
このスレッドはBorland(ボーランド)のDelphi(デルファイ)について、
他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが、
お礼はDelphiの布教と初心者の救済をお願いします。

<前スレ>
くだすれDelphi(超初心者用)その26
http://pc8.2ch.net/test/read.cgi/tech/1121249711/

<雑談・討論などはこちらへ>
ミ,,゚Д゚彡フサギコのフサフサDelphi談話室その25
http://pc8.2ch.net/test/read.cgi/tech/1125304359/

<その他>
Borland Home Page
http://www.borland.co.jp/
DelWiki (無料版Delphiの入手方法など)
http://onigiri.s3.xrea.com:8080/delphi/
0685デフォルトの名無しさん2005/10/22(土) 10:38:15
あとFWソフトでFTPの使うポート20,21をブロックしてたら首吊るといいお
0686デフォルトの名無しさん2005/10/22(土) 14:33:12
>>684,685
回答ありがとうございます。

が、いずれの方法でもダメでした。
FFFTP…「"ftp://ftp.bor(略"が見つかりません」
IE…パッシブモードは既にON
FW…port20,21は通過

コマンドプロンプトでpingしてみると「ホストが見つかりません」になるので、
サーバーが停止しているようです。


元を正せば、エラー「classes.pasが見つかりません」を解決したいだけなんですが。
0687デフォルトの名無しさん2005/10/22(土) 14:41:26
>>686
今、見てみたけど問題なく繋がるけどね。

>FFFTP…「"ftp://ftp.bor(略"が見つかりません」
ってことは、ホスト名に ftp://ftp.borland... と指定しているようだけど
これは間違い。ftp.borland...が正解。
まさかと思うけど ping の時も ftp://ftp.borland... としちゃってる?
0688デフォルトの名無しさん2005/10/22(土) 15:22:46
>>回答していただいた皆様
常駐していたPeerGuardianを停止したところ、即繋がりました。
ご迷惑をおかけしました。

LAN・USBの二重コードで吊ってきますo...rz
0689デフォルトの名無しさん2005/10/22(土) 16:26:00
逆に良くある
0690デフォルトの名無しさん2005/10/22(土) 21:59:25
二つのフォームを用意して、片方のフォームにEdit欄用意してURL入れてNavigateしたら
もう一つのフォーム(Editの欄が無いフォーム)にWebbrowserを表示させるように連動(?)
させたいのですが、どう記述すべきでしょうか。
0691デフォルトの名無しさん2005/10/22(土) 23:28:31
一つのフォームでは出来るの? それなら話は早いが
0692デフォルトの名無しさん2005/10/22(土) 23:53:17
>>690
>>519-526辺りを参照してみれば?
0693デフォルトの名無しさん2005/10/23(日) 02:20:20
「どう記述すべきでしょうか」って質問って、
どう答えれば良いのか分からん。
どういう答えを期待してるのか?
「ソース出して」ってこと?
0694ななしへたぐらま ◆XcB18Bks.Y 2005/10/23(日) 10:29:50
>>679,681
色つきボタンは以下のサイトなどでいろいろ公開されているので
これらの中から気に入ったのを使うのも一手かも.

Delphian World
http://www6.airnet.ne.jp/~sone_san/delphi/

0695デフォルトの名無しさん2005/10/23(日) 17:24:10
>>690
とりあえず、Form1のEdit1に入力された文字列をForm2のLabel1に表示させるコードは書けるのかな。
06966902005/10/23(日) 17:39:58
すいません、返答が遅れました。
無事解決しました。ほぼ>>519-526と同じような事でした。
ありがとうございました。
0697デフォルトの名無しさん2005/10/23(日) 23:38:41
XPスタイルに対応させようと思い、Delphi6 Personalでコンパイルした実行ファイルと同じフォルダ内にmanifestファイルを作成しました。
ところがViewStyleをvsReportにしたTListViewを設置しているフォームが開かれた瞬間
「モジュール 'kernel32.dll' のアドレス 77E683EC でアドレス 00467088 に対する書き込み違反がおきました。.」
と言う内容のエラーダイアログが表示されるのですが、何故でしょうか?
違うマシンで試しても同じ結果に至ったので恐らくDelphi側の問題だとは思うんですが・・
06986972005/10/23(日) 23:46:48
http://leo10.cse.kyutech.ac.jp/yamada/builder_bug.html

[manifest]
 アプリケーションをWindowsXPスタイルにする方法に、manifestファイルを用いる方法がある。
 しかしこの方法では、TListViewを用いているアプリケーションでは kernel32.dll が読み込み違反エラーを吐いて
 起動に失敗する場合がある。(Delphi,C++Builderで作成されたアプリケーションの場合)

(回避方法)
 →TListViewのカラムヘッダにイメージを入れると正常に起動される。
  または、カラムヘッダを表示しないようにする。

ググってみたらこんな物を見つけたんですが、これ以外に回避法はないんでしょうか?
06991862005/10/23(日) 23:54:31
やはりカラムヘッダにイメージを挿入する事にしました。お騒がせしましたm_m
0700デフォルトの名無しさん2005/10/24(月) 00:21:50
treeViewとListViewの連携がやりたいですが
うまく動きません。
OnChagingでListViewのアイテムを数えて
メモリを確保して、配列に入れて、Nodo.Dataにポインタ
OnChangeでListViewのアイテムをClearして、指定したNode
だったら、配列を数えて、ListViewにItemを追加のですが
treeViewでどのNodeをクリックしても、最初の配列が残ってしまいます
------------------------------------
treeView | ListView
  |
rootnode   | caption | subitems
┣-aaa |------------
┃ ┣111 <-- |
┃ ┗222 <-- |
┣-bbb |
------------------------------|

よろしくお願いします

07017002005/10/24(月) 00:22:39
//つづき
/////////////////////////////////////
type
Pdata = ^TIndexData;

TIndexData =Record
code :string;
index :string;
end;
IndexDataArray = Array of TindexData;

TMainForm = class(TForm)
////////////////////////////////////////
private
{ Private 宣言 }

rootNode : TTreeNode;
//////////////////////////////////////
var
MainForm: TMainForm;
CArray :IndexDataArray;
/////////////////////////////////////////
procedure TMainForm.TreeView1Changing(Sender: TObject; Node: TTreeNode;
var AllowChange: Boolean);

var
c,i : integer;
begin
c := ListView1.Items.count;

07027002005/10/24(月) 00:23:30
//つづき
SetLength(CArray,c);
For i := 0 to C-1 do
begin
CArray[i].code :=ListView1.items[i].subitems[0];
CArray[i].index:=ListView1.items[i].caption;
end;
node.Data := addr(CArray);

end;

procedure TMainForm.TreeView1Change(Sender: TObject; Node: TTreeNode);
var
C : integer;
i :integer;
ListItem :TListItem;
begin
ListView.Items.Clear;
if (Node = rootNode) or (Node.Parent = rootNode) then exit;
begin
c:= Length(CArray);
For i := 0 to c-1 do
begin
ListItem :=ListView1.items.add;
ListItem.Caption :=CArray[i].index;
ListItem.SubItems.Add(CArray[i].code);

end;
end;

end;
0703デフォルトの名無しさん2005/10/24(月) 01:12:29
チャットプログラムに最適な (サーバー・クライアント) クラスライブラリを教えてください。
0704デフォルトの名無しさん2005/10/24(月) 01:13:09
Indy
0705デフォルトの名無しさん2005/10/24(月) 05:58:13
Unzip.DLLとかない環境でzip解凍圧縮を可能にするコンポーネントが
あったような記憶があるのですが、そういうのありましたでしょうか?
0706デフォルトの名無しさん2005/10/24(月) 06:31:20
あったねぇ
0707デフォルトの名無しさん2005/10/24(月) 06:36:14
おしえてくだせぇー
0708デフォルトの名無しさん2005/10/24(月) 06:46:35
torryというところにあるのでいいのでしょうか?
よくわかりませんが、ダウンしてみます。ありがとうございました。
0709デフォルトの名無しさん2005/10/24(月) 07:40:11
>>705
むかしイロイロと探したが日本語使うとおかしくなるのが多かった。
0710デフォルトの名無しさん2005/10/24(月) 07:43:15
ヘッダーとフッターの作り方さえ知ってれば圧縮自体はzlibだよ。
0711デフォルトの名無しさん2005/10/24(月) 09:10:07
僕ならUnzip.DLLをリソースに仕込んどいて使う時にどっか(Tempフォルダあたり?)にピーコして使います。
本末転倒ですが(w
0712デフォルトの名無しさん2005/10/24(月) 10:03:16
>>711
小心者の僕も同じですね〜プログラム終了時に消しておけばバレない(マテ
0713デフォルトの名無しさん2005/10/24(月) 10:04:29
環境非依存にしたいならスタティックリンクしとけ
0714デフォルトの名無しさん2005/10/24(月) 10:26:10
cabを使うのが流行りですよ
0715デフォルトの名無しさん2005/10/24(月) 11:36:32
ルータのUPnPのコンポーネントはありませんか?
0716デフォルトの名無しさん2005/10/24(月) 13:16:57
Delphi6PersonalにはUDPコンポーネントって無いのねorz
0717デフォルトの名無しさん2005/10/24(月) 13:37:18
>>716
っIndy
0718デフォルトの名無しさん2005/10/24(月) 17:00:28
>>717
Indyはちょっと大げさなのでAPIで実装することにしました。
0719デフォルトの名無しさん2005/10/24(月) 18:26:49
VCL つかってて Indy が大げさってことはないだろ
0720デフォルトの名無しさん2005/10/24(月) 18:42:58
UPnPごときにIndyはおおげさだろう
0721デフォルトの名無しさん2005/10/24(月) 19:41:38
UPnPごときにVCLにおおげさだろう
0722デフォルトの名無しさん2005/10/24(月) 20:04:11
ツンデレが似合うのはおさげだろう
0723デフォルトの名無しさん2005/10/24(月) 20:06:27
苦しすぎ
0724デフォルトの名無しさん2005/10/24(月) 22:40:50
今IEをコンポーネントとして、ブラウザ作ってるんですが
SleipnirやOperaにあるようなwebページのズームイン・ズームアウト表示がやりたい
んですが、そどうすれば良いんでしょうか。
0725デフォルトの名無しさん2005/10/24(月) 22:55:51
>>724
IEの独自拡張を調べなさい
0726デフォルトの名無しさん2005/10/25(火) 00:06:58
delphiに限らない質問かもしれませんが・・・。
プログラミング未経験者で初めて参考書を買って独学をしているのですが、
そのdelphi参考書は「ここはこういう理由でこういう書き方がされている」等の
理由や説明がほとんどなく、例題にあるソースをそのまま自分のパソコンに
打ち込んでいるだけで、「理解している」のではなく「例題をそのまま覚えている」
だけのような気がします。
(私と同じ本を買った人もアマゾンのカスタマーレビューで同じようなことを書いてました・・・。)

みなさんは最初にdelphiを勉強した時は、最初は取り敢えず丸暗記で、後から
内容を理解するという方法だったのでしょうか?それとも1個ずつ理解しながら
勉強していったのでしょうか?
本当に初心者なので、今の丸暗記方式をこのまま続けていってもいいのか心配です。
0727デフォルトの名無しさん2005/10/25(火) 00:12:45
ミ,,゚Д゚彡フサギコのフサフサDelphi談話室その26
http://pc8.2ch.net/test/read.cgi/tech/1128511700/
0728デフォルトの名無しさん2005/10/25(火) 00:28:50
>>726
質問部分には答えよう
オレは丸暗記も1個ずつ理解とやらもしなかった
文法以外は面倒だから覚えず、作りたいものを
サンプル見ながら適当に作っていたら
いつの間にかここで回答者にまわってた
0729デフォルトの名無しさん2005/10/25(火) 00:34:42
>>726

自分は、ずーっと前にその段階だったので記憶が定かではないが、最初は操作自体を
覚えるのも重要です。その本は、それだけのものと思って割り切ることが必要です。
でも、どうしてこうなるのか、と考えながら、自分は何が分からないのだろうか、
ということを知ることが重要です。

自分の場合は、*.pas ファイル、つまり、ユニットファイルの構造を理解し始めた
ときから急速に理解がすすんだように思います。OOP も、IDE では設計時に
TForm の派生クラスを作っているんだ、イベントはそのメソッドなんだ、と
分かりはじめたらしめたものです。

その本より優れた入門サイトがけっこうあります。おすすめは「Seventh Delphi」
です。ググって見ればすぐ見つかります。コードと説明の対応をじっくり学ぶと
じわじわと理解が進むことを実感できるようになります。
0730デフォルトの名無しさん2005/10/25(火) 00:37:56
>>726
そうは言うけどな、いきなりクラスがどうたらバーチャルがなんたらの説明ば
かりあっても初心者では理解できんよ。確実に。
サンプルを暗記っていうのはまず第一歩としてはいいと思うよ。
んでそれをちょっとづつ改造していくと。そのうち壁にぶつかるからその時に
ぶつかった壁をいっこづつ調べて理解していけばいい。

まあ学習の仕方なんて人それぞれだろうからいちがいには言えんが、俺の
場合はそうだった、という例で参考にしてくれ。

ところでその本のタイトルもあげると先人のアドバイスもつきやすいのでは
ないかな。いくらサンプル丸暗記といってもダメなのとイイやつの差はあるし。
07317262005/10/25(火) 01:01:01
みなさんご助言ありがとうございます。
>>727 そちらの方が適したスレだったかもしれません。すみません。

>>728 作りたいものがあるっていうのは、やはり勉強を進めるには
大きな力になりそうですね。私がしたいことは、私が勤めている会社で
作っているソフトがdelphiで組まれてて、そのソフトがどうして
こういう動きをするのか理解したかったのでした。

>>729 今そこのサイトを拝見させてもらいました。私が買った本よりも
情報量が多くて親切な気がします。これからはそのサイトもみて勉強してみます。

>>730 そうですね。確かにいきなりレベルの高い話をされても理解できなくて
投げ出してしまうかもしれませんね・・・。ちなみに私が買った本は
「delphi はじめの一歩(池田成樹著)」という本です。
池袋の大きな本屋さんを2箇所と、地元の本屋さんを回って、どこでもこの本が
売っていたので、余程支持されている本かと思って購入しました。
0732デフォルトの名無しさん2005/10/25(火) 01:03:55
「Delphi Acid Floor」ってサイトも良いぞ
オレは「Seventh Delphi」とそこを見ながら基本を覚えた
0733デフォルトの名無しさん2005/10/25(火) 02:53:40
Delphiでビットフィールドは使えるのでしょうか?
0734デフォルトの名無しさん2005/10/25(火) 06:56:44
>>733
": 1"しか要らないのであればビット位置を値として指定した列挙型のset。
2ビットとか4ビットとか要るのであればシフト演算でなんとかするしかないなあ。
0735デフォルトの名無しさん2005/10/25(火) 07:11:29
最初は基本を暗記、慣れたら応用、はごくあたりまえのことだろ。
1ヶ月たって応用が利かないようならプログラマの素質ないからあきらめろ。
プログラマもプロ野球選手と一緒で誰でもなれるようなものじゃない。
コーダーなら誰でもなれるけど。
0736デフォルトの名無しさん2005/10/25(火) 07:12:31
屁理屈だな
0737デフォルトの名無しさん2005/10/25(火) 08:24:05
やりたい奴がやる。やらなきゃいけない奴がやる。それでいいんだよ。
0738デフォルトの名無しさん2005/10/25(火) 08:26:21
使えません
0739デフォルトの名無しさん2005/10/25(火) 12:33:58
クラス名の前につくTって何?
0740デフォルトの名無しさん2005/10/25(火) 12:49:56
型(Type)の略。Fはフィールド、Iはインターフェース。他にあったっけ?
0741デフォルトの名無しさん2005/10/25(火) 12:51:03
Eがあった。例外(Exception)だったね。
0742デフォルトの名無しさん2005/10/25(火) 13:15:53
んじゃDelphi2005でも名前空間のことはunit、クラスのことはtype、メソッドのことはプロシージャと呼んだほうがいいのかな?
0743デフォルトの名無しさん2005/10/25(火) 13:17:50
> クラスのことはtype

ちがうでしょ
0744デフォルトの名無しさん2005/10/25(火) 13:22:29
>>743
そうなんですか。
でもとりあえず、unitは名前空間のことでいいんですよね。
0745デフォルトの名無しさん2005/10/25(火) 13:32:45
TってTypeだったんだ
てっきりAPIのTag×××のTかと思ってた
0746デフォルトの名無しさん2005/10/25(火) 15:00:57
意味は無いけど慣習上 T をつけるって聞いたぞ
0747デフォルトの名無しさん2005/10/25(火) 15:06:42
Typification じゃなかったか。
0748デフォルトの名無しさん2005/10/25(火) 15:09:02
お前らソースを出せ
0749デフォルトの名無しさん2005/10/25(火) 15:12:52
Delphi 6 プログラミングバイブルの83ページに慣習って書いてある・・

が、これが正しいかどうかは知らないよ
0750デフォルトの名無しさん2005/10/25(火) 15:49:54
結局「T」ってなんなんだ?
Delphiの中の人の発言はないのか?
0751デフォルトの名無しさん2005/10/25(火) 15:50:57
わーん。
派遣会社からDelphiとOracleの仕事どうですかって言われたよ。
javarerの漏れにはまったくわからない…
0752デフォルトの名無しさん2005/10/25(火) 15:54:08
MFCだってクラス名の頭にC付けるんだから深く考えんな
0753デフォルトの名無しさん2005/10/25(火) 15:55:52
TObject派生クラス = Txxxx
それ以外のクラス = Cxxxx
にしてるBCB使いの漏れ
0754デフォルトの名無しさん2005/10/25(火) 16:03:28
>>753
TObjectから派生しないクラスってあるの?
0755デフォルトの名無しさん2005/10/25(火) 16:17:26
>>754
ハァ?
0756デフォルトの名無しさん2005/10/25(火) 16:19:09
いや、ハア?じゃなくてあるかないか聞いてるんだけど
0757デフォルトの名無しさん2005/10/25(火) 16:24:58
Delphiではなく BCBではという事なんじゃないの?
0758デフォルトの名無しさん2005/10/25(火) 17:15:51
>>756
それならある!
0759デフォルトの名無しさん2005/10/25(火) 18:46:53
>>754
C++Builderの話だろ。
C++にはVCLの最上位クラスを継承しない野良クラスを作れる。
0760デフォルトの名無しさん2005/10/25(火) 19:07:36
作れなかったら、newしなきゃならんという制限を受け継ぐので大変
07617512005/10/25(火) 22:01:59
Delphi.netのイベントにイベントハンドラを登録したり外したりするわけのわからないメソッドIncludeとかExcludeって何?
どこの名前空間なの?
C#にはこんなのなかったぞい。
0762デフォルトの名無しさん2005/10/25(火) 22:19:46
>>751
何で解らないものを引き受けるんだ
0763デフォルトの名無しさん2005/10/25(火) 22:21:50
>>761
Pascalには無い+=と-=の両演算子の代わりとして、元々集合を扱う手続きが流用されてる。
名前空間はBorland.Delphi.Units.Systemになるんだろうけど、実体の無いコンパイラマジック。
07647512005/10/25(火) 23:11:14
>>763
それにしても
System.EventHandlerデリゲートがまったく出てこないのはどういうこと?
0765デフォルトの名無しさん2005/10/26(水) 00:00:01
26日をお知らせします
0766デフォルトの名無しさん2005/10/26(水) 00:00:30
誤爆スマン
0767デフォルトの名無しさん2005/10/26(水) 00:05:36
誤爆の上に一秒遅いとは何事か
反省正座
0768デフォルトの名無しさん2005/10/26(水) 00:05:50
26日キタ━━━━━━(゚∀゚)━━━━━━ !!
0769デフォルトの名無しさん2005/10/26(水) 09:18:08
>>758-759
ナメた口聞いてごめんなさい
ひとつ勉強になりました。
0770デフォルトの名無しさん2005/10/26(水) 11:26:08
>>754
type THoge = object
end;
0771デフォルトの名無しさん2005/10/26(水) 11:29:52
質問です。
ClientDataSetに対してSQL(Select)文を発行し、
その結果をGridに表示したいのですが、可能でしょうか?
↓のコンポーネントを用意して自分でやってみたのですがどうも上手くいきません・・・
・ClientDataSet
・Query
・DBGrid
・DataSorce
Delphi始めたばかりなので、コンポーネントの使い方とかよく分かっていない状況です。
これだけのコンポーネントを用意しておけばできるものなのでしょうか?
0772デフォルトの名無しさん2005/10/26(水) 11:46:15
スタンドアローンならClientDataSet使う必要ないと思うけど
C/Sもしくは3層以上のシステムだったらTClientDataSetにデータプロバイダってのが必要
0773デフォルトの名無しさん2005/10/26(水) 12:09:17
>>770
それクラスじゃありませんから
0774デフォルトの名無しさん2005/10/26(水) 14:19:46
>>772
レスありがとうございます。ClientDataは使わないとダメなのです・・・(事情は省略させて下さい)
やりたいことは、、、
現状こうなっているのを↓
ClientDataSet ⇒ DataSorce ⇒ DBGrid
こうしたいんです↓
ClientDataSet ⇒ Query(ClientDataSetに対してSUM関数、GroupByを使用したい) ⇒ DataSorce ⇒ DBGrid
これのどこにデータセットプロバイダというのを挟めばよいのでしょうか?
教えて君ですみません・・・。宜しくお願いします。
0775デフォルトの名無しさん2005/10/26(水) 15:27:53
>>774
ClientDataSetは問い合わせの結果をもらうもの。自前で問い合わせを行うことはできない。
やるんだったら最低C/S形式する。C/S間の通信はTSockectConnectionでTCP/IPが楽
1台でやるならIPアドレスを127.0.0.1に指定する

図で書くとこんな感じ

クライアント部(サーバーに問い合わせ結果を貰う))
TDBGrid←TDataSorce←TClientDataSet → サーバーへ

サーバー部(クライアントからの要求に基づきSQLを発行して結果を返す)
クライアントへ←TQuery←TSession←TDatabase
0776デフォルトの名無しさん2005/10/26(水) 16:28:21
Form1にあるEdit1にURLを入れて、Form2.Show で別窓(Form2)のWebBrowserにForm1のEdit1で指定した
URLのページを表示させる事は出来たんですが、そのForm1から表示させたForm2がアクティブになったら
もう一つ別窓(Form3とする)に同じWebページを表示させる って動作をさせたいのですが、
Form2側の、OnActivateイベントで
Form3.WebBrowser1.Navigate(Edit1.text);
Form3.Show;
とやってもForm2にEdit1は無いのでエラーが出ます。Form3にNavigateする方法は他にあるんでしょうか?
ご教授お願いします。
0777デフォルトの名無しさん2005/10/26(水) 16:50:10
すっごくよろしくないやり方だけど
Form3.WebBrowser1.Navigate(Form1.Edit1.text);
0778デフォルトの名無しさん2005/10/26(水) 18:08:07
ひどいUIだな
0779デフォルトの名無しさん2005/10/26(水) 18:09:38
どうでもいいが、ユニットファイルをまたぐ参照についていちいち質問するつもりですか?
ちゃんと uses の意味を考えてくださいね
0780デフォルトの名無しさん2005/10/26(水) 19:48:47
DelphiでC/Sシステムを開発するために、
書籍でステップごとに作りながら理解できる、お勧めの書籍はありますか?

amazonでの評価を信じて買ったものが、どれも内容が薄すぎて・・・(TーT


0781デフォルトの名無しさん2005/10/26(水) 20:34:27
オフィシャルコースウェアは、どうよ。
古めだがDelphi 4あたりの方がプロっぽい感じがする。
0782デフォルトの名無しさん2005/10/26(水) 20:36:28
あ、ClientDataSetというかMIDASを使う予定なら
Delphi4とはクラス名が異なるので、新しい奴を買ったほうが良いと思う。
0783デフォルトの名無しさん2005/10/26(水) 21:25:29
>>780
Delphi 4プログラミングバイブルっていう青い表紙で分厚い本がオススメ
C/SのみならずDelphiに関する基本的な知識が網羅されてる
0784デフォルトの名無しさん2005/10/26(水) 21:42:29
IDispatchって、アプリ終了前にnilを入れてやらないと、例外が起きるんですか?
■ このスレッドは過去ログ倉庫に格納されています