トップページ⇒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/
0446デフォルトの名無しさん2005/10/10(月) 21:22:12
var i: real;
begin i := 10; end;
のようにreal型変数に10を代入しても問題ない。
ただの書き間違いじゃないの。
エラーの内容読んでみ。
0447デフォルトの名無しさん2005/10/10(月) 21:27:18
>>その下でi=:10

i:=10じゃね
0448デフォルトの名無しさん2005/10/10(月) 21:36:45
>>445
書式はなるべくソースそのままにしようぜ
言いたいことはわかるが、それがここだけの打ち間違いなのかソースでも間違ってんのか分かりにくい
04494452005/10/10(月) 21:37:47
>>446 やっぱり書き間違いかな???
エラー内容は、「指定された引数で呼び出すことができる
オーバーロード関数IntToStrが定義されていません」と・・・。
IntToStrっていう記述は、integer型にしか使えないのかな?
「デルファイはじめの一歩」という文字がでかくイラストが多い本を
まだ60Pしか読んでないから、テキストの例題に記載されたとおりのこと
以外は何もできない・・・。
0450デフォルトの名無しさん2005/10/10(月) 21:40:42
そりゃ"Int"ToStrだからな。
FloatToStrかFormat('%f', [i]);使え。
04514452005/10/10(月) 21:50:27
みなさん回答ありがとうございます。
もともと文系の人間で、おとといテキストを買ってきたばかりなので
なかなかサクサクとは勉強が進みません。
質問の仕方自体よく分からなかったりもしますが、多分また
お邪魔すると思います。これからもよろしくお願いします(・ω・)ノ
0452デフォルトの名無しさん2005/10/10(月) 21:54:32
>>451
なにが問題なのか自分なりに考えた結果とソースがあればおk
0453デフォルトの名無しさん2005/10/10(月) 22:05:34
>>451
低学歴ニートの俺でも時間掛けたら超基本的なとこまではできたから、絶対大丈夫だよ。
がんばれ〜
0454デフォルトの名無しさん2005/10/10(月) 22:08:14
VB.NETならi.ToString()で済むのにね。
21世紀にもなってまだ整数がオブジェクトじゃない言語があるなんて信じられないよ。
0455デフォルトの名無しさん2005/10/10(月) 22:25:01
>>454
Delphi.NETでもそれで済むよ?
0456デフォルトの名無しさん2005/10/10(月) 22:26:04
>>451
ていうか文系でも複雑な計算が必要だったり
性能を追求しなければ全く問題ない
0457デフォルトの名無しさん2005/10/11(火) 00:53:06
Delphiでは出来ません。
.NETなら出来ます。
0458デフォルトの名無しさん2005/10/11(火) 01:10:15
Str(i, s)で済むんだけどな…。
IntToStrも中身これだし。
古かろうがなんだろうが、コンパイラが直接サポートする手続きのほうが便利だよ。
0459デフォルトの名無しさん2005/10/11(火) 01:27:52
まったく思考が古いですね。
0460デフォルトの名無しさん2005/10/11(火) 02:11:20
人間にとって便利なのが一番
0461デフォルトの名無しさん2005/10/11(火) 08:01:53
>>457
意味がよくわからないのですがVBはだめでDelphi.NETではできるということですか?
ちゃんと答えてください。
0462デフォルトの名無しさん2005/10/11(火) 08:34:54
いいえ。
DelphiはだめでVB.NETではできるということです。
0463デフォルトの名無しさん2005/10/11(火) 09:17:39
ToString()は、.NETのObjectクラスのメソッドだったと思うが。
0464デフォルトの名無しさん2005/10/11(火) 09:17:51
同じ.NETなのに変ですね。
.NET自体が変ということでしょうか?
0465デフォルトの名無しさん2005/10/11(火) 09:38:00
<米デルファイ>破産法適用を申請
http://headlines.yahoo.co.jp/hl?a=20051009-00000008-mai-bus_all
0466デフォルトの名無しさん2005/10/11(火) 09:39:29
超初心者ならまだ傷は浅い。
他の言語をどうぞ。

おおおおおっと、VBの話しが出てますね、VBでもどうぞ。
0467デフォルトの名無しさん2005/10/11(火) 11:29:02
>>465
 >>418 でほぼ既出。
0468デフォルトの名無しさん2005/10/11(火) 12:24:31
>>467
とうか同じやつ(VB厨またはインライン君)でしょ
0469デフォルトの名無しさん2005/10/11(火) 12:52:25
質問した人間そっちのけで話し進めるなら談話スレでやれ。
ここは質問スレ。
0470デフォルトの名無しさん2005/10/11(火) 12:53:28
っていうか、くだ質問する初心者もいなくなったかぁ・・・・・・・・
0471デフォルトの名無しさん2005/10/11(火) 13:27:08
夏休みの2chブラウザ強制が効いたな。
他スレも全然伸びない。
0472デフォルトの名無しさん2005/10/11(火) 14:16:21
インターネット上の画像を取ってきて表示できるコンポーネント無いですか?
(プロキシサーバ対応で・・・)

FileStreamでやらないと駄目なのかなぁ
ちょっとめんどっちい
0473デフォルトの名無しさん2005/10/11(火) 14:20:52
TWebBrowser
0474デフォルトの名無しさん2005/10/11(火) 14:45:13
>>473
あ、そか サンクス

んーJpeg画像を直でURLに指定したら、画像の周りに余白がでるなぁ
消せないのかな

0475デフォルトの名無しさん2005/10/11(火) 14:47:38
ローカルにマージン指定したHTML生成するとか
04764722005/10/11(火) 14:48:25
あぅ・・windowのサイズに合わせて画像サイズのリサイズもしたいが、
結構めんどいなぁ・・・。

やっぱりImageコンポーネントに入れ込むことを考えないといけないか
0477デフォルトの名無しさん2005/10/11(火) 14:56:19
Delphiやっても、いずれ消滅していく言語だから、やっても意味がないってカキコをみました。

本当なんでしょうか?
どの言語を覚えたらいいか、真剣に考え中です。
0478デフォルトの名無しさん2005/10/11(火) 14:58:14
またおまえか
0479デフォルトの名無しさん2005/10/11(火) 15:09:01
>>476
http://www.hicomponents.com/
0480デフォルトの名無しさん2005/10/11(火) 15:22:23
>>477
 目的がDelphiをやる事なら君がやっても意味ない。 
 でもDelphiの部分を何に置き換えたって同じだよ

 どの言語を覚えるかというのがプログラム言語の意味なら、
 君は、プログラム言語をやるより、他の事やった方が幸せになれると思うよ。

というか、こんなもの覚えて、何をしたいわけ?
04814722005/10/11(火) 15:25:57
>>479
サンクスです。いいなぁこのコンポーネント

これでfreeだったらなぁ。。。(ショボーン
04824722005/10/11(火) 16:31:33
TMSのコンポーネントにありました
ttp://www.tmssoftware.com/webimage.htm

探していただいたかたどうもでした
0483デフォルトの名無しさん2005/10/11(火) 16:52:35
>>476
http://gamdev.org/w/?%5B%5BGraphics32%5D%5D
04844772005/10/11(火) 20:06:00
>こんなもの覚えて、何をしたいわけ?

なんか、Delphiの立場的なものがわかった気がします。
ちょっと、いろいろ調べて考えることにします。
0485デフォルトの名無しさん2005/10/11(火) 20:13:00
まずは日本語から。
0486デフォルトの名無しさん2005/10/11(火) 20:14:25
>>484
そうだね。 学校の勉強と違って、こういうのは、目的があってこその道具。
目的なくて、教養としてとりあえず勉強したいという「勉強が目的」ならC言語でもやればいい
0487デフォルトの名無しさん2005/10/11(火) 21:59:56
いやー釣れた釣れた
04884452005/10/11(火) 23:03:43
またすごく恥ずかしい質問なのですが、テキストの中の単語の読み方が分かりません。
(例えば、「var」とか「IntToStr」の「Str」部分とか・・・。)
今日同じ会社のプログラマーさんの席の近くを少しうろついてみた(不審?)のですが、
それっぽい単語は出てきませんでした。(´ω`)=3 
これは会社のプログラマーさんに直接聞いていくしかないのでしょうか?
(参考になる本やサイトが見つけられなかったのです・・・。)
みなさんはどうやって覚えたのでしょうか?
0489デフォルトの名無しさん2005/10/11(火) 23:18:44
var は頭の中では バー っていってる。variable 変数って言う意味。
IntToStr() は、頭のなかでは イントトゥストリング と言ってる。
integer 整数を string 文字列 に変換ってことだね。
04904452005/10/11(火) 23:56:52
>>489 そう読むんですか。勉強になりました。
今日はif文の書き方を覚えました。明日はif文の入れ子のやつを勉強します。
それではおやすみなさい(・ω・)ノシ
0491デフォルトの名無しさん2005/10/12(水) 01:12:18
読み方と言えばprocedureと引数が定番だな
procedureは「プロシージャ」辺りであり「プロセドゥア」でない
あと「引数」は「ひきすう」、間違っても「いんすう」じゃない
0492デフォルトの名無しさん2005/10/12(水) 01:20:22
いんすうってよんでた
0493デフォルトの名無しさん2005/10/12(水) 01:57:11
英語の読み方を片仮名で書くのはどうかと思ったがまあいいや
0494デフォルトの名無しさん2005/10/12(水) 02:08:30
いやいや、コーディングのとき頭のなかでどう言ってるか、ってことなんだ。
オレはブラインドタッチができないけど、頭のなかで イントトゥスリング と
いいながら IntToStr() でタイプしてると効率が上がるような気がする。
人によって言い方も、また、頭の中でもつぶやかない人がいると思うけど。
0495デフォルトの名無しさん2005/10/12(水) 02:58:32
俺はイントトゥストルって読んでる
0496デフォルトの名無しさん2005/10/12(水) 04:16:44
イントトゥストア って読んでる
要はみんな適当。と。
0497デフォルトの名無しさん2005/10/12(水) 07:15:37
親切な文書だと間違えないよう 引き数 って書いてくれるね

ひきすうと読まないと
因数と勘違いしてしまうから、たぶんそう読む事にしたんだろうね。
0498デフォルトの名無しさん2005/10/12(水) 07:17:06
普通はイントトゥーエスティーアールじゃないのかな?
0499デフォルトの名無しさん2005/10/12(水) 07:51:58
俺は頭ん中で文字列が映像として浮かぶから読んでないな
0500デフォルトの名無しさん2005/10/12(水) 08:00:13
trの発音はチュアだろ
0501デフォルトの名無しさん2005/10/12(水) 08:18:24
IncludeTrailingPathDelimiter
↑この関数タイプするのマンドクサイんですが。
0502デフォルトの名無しさん2005/10/12(水) 08:25:24
Ctrl + Spaceで補完できるだろ。
0503デフォルトの名無しさん2005/10/12(水) 08:26:04
IncludeTあたりでCTRL+SPACEとか
0504デフォルトの名無しさん2005/10/12(水) 11:00:09
俺はベタにイントトゥストラ
0505デフォルトの名無しさん2005/10/12(水) 11:38:13
 固定ピッチフォントだけを取り出すため以下のようにしているのですがプロポーショナ
ルフォントと思われる「HG 丸ゴシック M-PRO」や「HG 正楷書体 M-PRO」も列挙され
てしまいます。実用上は EnumFontsProc を呼び出す側でこれらの文字列を判断して
除けばいいのでしょうが、FIXED_PITCHを指定しているのになぜ プロポーショナルフォ
ントがリストアップされるのかわかりません。

function EnumFontsProc(var LogFont: TLogFont; var TextMetric:
 TTextMetric; FontType: Integer; Data: Pointer): Integer; stdcall;
begin
 if (LogFont.lfPitchAndFamily and 3) = FIXED_PITCH then
  TStrings(Data).Add(LogFont.lfFaceName);
 Result := 1;
end;
0506デフォルトの名無しさん2005/10/12(水) 11:57:51
あたりまえだが、固定ピッチだからじゃないの?

> プロポーショナルフォントと思われる「HG 丸ゴシック M-PRO」

どうしてそう思ったの?
0507デフォルトの名無しさん2005/10/12(水) 12:07:52
試しにCanvasに割り当てて TextWidth('i.!') = TextWidth('QWA') とかで判定してみたら?
0508デフォルトの名無しさん2005/10/12(水) 15:54:18
フォームにブラウザコントロールを置いて
wbWWW.Silent := True;
wbWWW.Navigate(openURL);
wbWWW.Refresh;

とやると、
「エラーを特定できません。」というエラーが発生します。
どうしたものでしょうか?
0509デフォルトの名無しさん2005/10/12(水) 16:08:14
>>508
非同期で動いているNavigateが完了する前にRefreshを呼ぶからぢゃない?
てか、Refreshいらんだろ。
0510デフォルトの名無しさん2005/10/12(水) 16:21:23
>>509
なるほど。Refreshしないとページが表示されないのですが
それが問題ということですね。
0511デフォルトの名無しさん2005/10/12(水) 17:46:02
 TreeView1を使って簡単なアウトラインプロセッサを作成しているのですが読み込む部分
でメモリーリークが発生して困っています。
 FileLoad を1回呼んで終了するとファイルのノード数に関わらず1回だけ、それ以上繰
り返して終了するとファイルのノード数が加算された数だけメモリーリークするようです。
 ClearTreeに何か問題があるのでしょうか?
 関係のあるところだけ抜き出しますがちょっと長いので
ttp://kuroneko-upload.no-ip.info/uploader/sn/upload.html
にアップします(up0862.txt[DLKey は 1234)。
0512デフォルトの名無しさん2005/10/12(水) 18:40:23
>>511
>      while Items.Count <> 0 do
>      begin //ノードが保持していたデータオブジェクトを確実に廃棄
>        if Items[0].Data <> nil then
>          TMyNode(Items[0].Data).Free;
>        Items.Delete(Items[0]);
>      end;

これ、遅い上に危険。
Items[0].Deleteが Items[0] の子以下も全て削除するから
子の Data が破棄されない。

for i := 0 to Items.Count - 1 do
 TMyNode(Items[i].Data).Free;
Items.Clear

にすれ。
0513デフォルトの名無しさん2005/10/12(水) 18:42:52
あ、それよりも破棄は TTreeView.OnDeletion に任せる方が安全か。
0514デフォルトの名無しさん2005/10/12(水) 20:08:37
513の言うとおりだな
OnDeletionに

if Assigned(Node.Data) then
TMyNode(Node.Data).Free;

と書いておけばおk
05155112005/10/13(木) 06:13:00
>>512=たぶん513
>>514
 ありがとうございました。
> Items[0].Deleteが Items[0] の子以下も全て削除するから
> 子の Data が破棄されない。
 なるほど、そうなんですね。
 ところで>>514さんの OnDeletion を使う方法だと
 TreeView1.Items.Clear
だけを実行すればいいわけですね。


0516デフォルトの名無しさん2005/10/13(木) 09:42:32
TRadioGroupで個々の項目を独立してEnabledの設定はできますか?
やはり、TRadioButtonを使うべきでしょうか?
0517デフォルトの名無しさん2005/10/13(木) 10:05:36
>>516
無理
TRadioButtonを置いて個々を管理するしかない
そんときは下のような関数を用意しておいて1度全部Falseにして
必要なものだけTrueにするのがスマートでいいと思う

procedure SetEnabledAll(Control: TWinControl; AEnabled: Boolean);
var
c: TControl;
i: Integer;
begin
Control.Enabled := AEnabled;
for i := 0 to Control.ControlCount-1 do
begin
c := Control.Controls[i];
if c is TWinControl then
SetEnabledAll(TWinControl(c), AEnabled)
else
c.Enabled := AEnabled;
end;
end;
0518デフォルトの名無しさん2005/10/13(木) 10:54:27
>>516

TRadioGroup.Controls[] を通じて個々のラジオボタンにアクセスできるよ。
例えばキャプションが 'ccc' なのを Enabled := false にするには

procedure TForm1.Button1Click(Sender: TObject);
var
  i: integer;
begin
  for i := 0 to RadioGroup1.ControlCount-1 do
    if TRadioButton(RadioGroup1.Controls[i]).Caption = 'ccc' then
      TRadioButton(RadioGroup1.Controls[i]).Enabled := false;
end;
0519デフォルトの名無しさん2005/10/13(木) 11:02:38
ブラウザをURLを入力するEdit&Button(この二つは同一Form上)   
WebBrowserだけを別のフォームにおいて入力部分と表示部分を分けたブラウザを作りたいと考えているのですが
実行しボタンを押してもForm2が自動で開いてくれません。どのようにすればボタンを押すことによりForm2を表示させることができるのか教えてください。よろしくお願いします。

unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, OleCtrls, SHDocVw_TLB;
type
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
Label1: TLabel;
WebBrowser1: TWebBrowser;
procedure Button1Click(Sender: TObject);
private
{ Private 宣言 }
public
{ Public 宣言 }
end;
var
Form1: TForm1;
implementation
uses Unit2;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
Form1.WebBrowser1.Navigate(Edit1.Text);
Form2.WebBrowser1.Navigate(Edit1.Text);  //ここの部分の処理 別ウィンドウを開かせたい
end;
end.
0520デフォルトの名無しさん2005/10/13(木) 11:06:47
Form2 が自動生成の対象になってるか確認
Form2.Show とか Form2.ShowModal とかのメソッドを使う。
0521デフォルトの名無しさん2005/10/13(木) 11:07:38
Form2.Show;
0522デフォルトの名無しさん2005/10/13(木) 11:08:30
WebBrowserがFomr1とForm2両方にある意味がよくわかんないけど
Form2を表示するならForm2.Show;
0523デフォルトの名無しさん2005/10/13(木) 11:11:09
>>520
自動で開いてくれないのなら手動で開くしかないでしょ。
なぜにそこで指向がストップするんだ?

Form2.WebBrowser1.Navigate(Edit1.Text);  
Form2.Show;  //追加
0524デフォルトの名無しさん2005/10/13(木) 11:11:36
Form2を自動生成してるならForm2.show

自動生成してない場合モーダル表示なら
Form2 := TForm2.Create(Self);
try
 Form2.ShowModal;
finally
 Form2.Release;
end;

モーダル表示しないなら
From2のonCloseイベントに
Action = caFree;
を記述
05255232005/10/13(木) 11:12:04
間違えた。s/指向/思考
0526デフォルトの名無しさん2005/10/13(木) 11:12:36
フォーム1上にもブラウザをおいたのは同一フォーム内だと正常に動作するのを確かめるためでした
わかりづらいことをしてすみません。解決いたしました ありがとうございます。
0527デフォルトの名無しさん2005/10/13(木) 11:14:36
>>519に怒涛のレスだけどこのスレこんなに住人いたのかw
0528デフォルトの名無しさん2005/10/13(木) 11:16:51
>>527 雰囲気に怖がらずに質問してくれればいいんだよ。 24時間フルサポートって訳にはゆかないが
0529デフォルトの名無しさん2005/10/13(木) 11:18:38
俺は9:00〜17:00までフルサポートするよ
0530デフォルトの名無しさん2005/10/13(木) 11:25:20
仕事しる!
0531デフォルトの名無しさん2005/10/13(木) 13:09:40
Edit1.Text に数字が入ってるのか文字列なのかチェックしたいのですが どのようにすればいいですか?
0532デフォルトの名無しさん2005/10/13(木) 13:21:24
try StrToInt(Edit1.Text); {数字} except {文字列} end; でいんじゃね
0533デフォルトの名無しさん2005/10/13(木) 13:23:03
数字だと仮定して、数値に変換して例外がでるかどうかで判断。
Val() だと例外でなくても判断できる。
0534デフォルトの名無しさん2005/10/13(木) 13:26:45
数字がある範囲内であるのなら(例:0以上) StrToIntDef(Edit1.Text, -1) とかでもいいわな。
0535デフォルトの名無しさん2005/10/13(木) 13:29:04
整数とは限らないわけだが
0536デフォルトの名無しさん2005/10/13(木) 13:32:25
TryStrToInt / TryStrToFloat は?
0537デフォルトの名無しさん2005/10/13(木) 13:35:12
ありがとうございます。マニュアルValの例をそのまま使えました。

var
I,Code:Integer;
begin

Val(Edit1.Text, I, Code);
if code <> 0 then
begin
Edit1.Text := '0';
end;
0538デフォルトの名無しさん2005/10/13(木) 14:30:35
Form1のフレームをマウスでひっぱたら伸びたり縮んだりするんですが、
固定する方法はありますか? 
0539デフォルトの名無しさん2005/10/13(木) 14:32:03
FormStyle
0540デフォルトの名無しさん2005/10/13(木) 14:32:06
>>538
Form1を選択した状態でオブジェクト インスペクタのプロパティにあるBorderStyleをbsSingleに
変更すれば良い。
0541デフォルトの名無しさん2005/10/13(木) 14:36:09
ありがとうございます。 固定できました。
05425162005/10/13(木) 15:02:56
>>518
できました。

>>517
アレンジして使わせていただきます。
0543デフォルトの名無しさん2005/10/13(木) 15:37:23
procedure TForm1.KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if ( Key = VK_DELETE ) and ( ssNone in Shift ) then
  begin
  end;
end;
っでssNone in ShiftとssAlt, ssCtrlだけ入れたいのですが、
どう記述したらよいのでしょうか?
全部andでつなげるしかないのでしょうか?
0544デフォルトの名無しさん2005/10/13(木) 15:50:26
意味がよく汲み取れないのですが、集合型の要素をどうやって設定するかってことなら
ヘルプみると書いてあるよ。
0545デフォルトの名無しさん2005/10/13(木) 15:53:49
設定でなくて検査ならひとつずつ in で調べる。D6 のヘルプには ssNone って載ってない
■ このスレッドは過去ログ倉庫に格納されています