くだすれDelphi(超初心者用)その25
■ このスレッドは過去ログ倉庫に格納されています
0001774: 3 挿入
2005/06/17(金) 20:34:51他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが、
お礼はDelphiの布教と初心者の救済をお願いします。
<前スレ>
くだすれDelphi(超初心者用)その24
http://pc8.2ch.net/test/read.cgi/tech/1115581376/
<雑談・討論などはこちらへ>
ミ,,゚Д゚彡フサギコのフサフサDelphi談話室その23
http://pc8.2ch.net/test/read.cgi/tech/1116997081/
<その他>
Borland Home Page
http://www.borland.co.jp/
DelWiki (無料版Delphiの入手方法など)
http://onigiri.s3.xrea.com:8080/delphi/
0685デフォルトの名無しさん
2005/07/01(金) 10:50:120686デフォルトの名無しさん
2005/07/01(金) 10:53:03検索キーワードは何でしらべたらよいのでしょう?
最小化などのキーワードで検索しましたがヘルプには乗っていませんでした。
マニュアルも過去に一通り目を通しましたが乗っていませんでした。
0687デフォルトの名無しさん
2005/07/01(金) 10:54:02マニュアル嫁
0688デフォルトの名無しさん
2005/07/01(金) 10:54:20検索っていうかマニュアル買ってないのか?
今後必要になるんだからかっとけ
0689デフォルトの名無しさん
2005/07/01(金) 10:54:51位置は指定できないと思う。
0690デフォルトの名無しさん
2005/07/01(金) 10:56:14kylixは結局LinuxにDelphiを持っていったのはいいが誰も使わなかったから
Cバージョンを出しただけ
DelphiにCバージョンがあるならそれはDelphiではないし
もしあるならみんなそっちを使ってる
0691682
2005/07/01(金) 10:57:31マニュアルを買う?Borlandからですか?
pdfのマニュアルも検索しましたが、
購入するマニュアルにはpdf以上の事が書いてあるのでしょうか?
>>689
そうですか・・・。
ご解答ありがとうございます。
0692デフォルトの名無しさん
2005/07/01(金) 10:58:12言語部分をC++に置き換えたC++Builderという別製品がある。
0693デフォルトの名無しさん
2005/07/01(金) 10:59:28その言い方だとなんでもラップしたものはダメ、みたいに聞こえるな。
みんながみんなソケットやAPIを裸で使う必要はないだろ
0694デフォルトの名無しさん
2005/07/01(金) 11:00:06頭悪いのか?
0695デフォルトの名無しさん
2005/07/01(金) 11:02:54マニュアル関係なし。アホが粘着してるからスルーするように
0696682
2005/07/01(金) 11:05:59?
あなたがですか?
解決方法も記さず、さっきからマニュアル嫁としか言わない。
また何処で買えてどのマニュアルをさしているのかもわからない。
これでは何とも・・・。
>>695
承知しました。
他所で調べてみたいと思います。
ありがとうございました。
0697デフォルトの名無しさん
2005/07/01(金) 11:06:040698デフォルトの名無しさん
2005/07/01(金) 11:07:15最小化で指定できないんなら、ラップして最小化を偽装すればいいだけだろ?
頭悪いのか?
0699デフォルトの名無しさん
2005/07/01(金) 11:11:290700デフォルトの名無しさん
2005/07/01(金) 11:12:37文字列内に"があれば自動的に後ろにもう1個足すには
どうすればいいでしょうか?
iLength := AnsiPos('"', 'あいう"えお');
と書いて"の場所はわかりましたがその後ろに"を
付ける方法がわかりません。よろしくお願いいたします。
0701デフォルトの名無しさん
2005/07/01(金) 11:12:520702デフォルトの名無しさん
2005/07/01(金) 11:13:59StringReplace
0703デフォルトの名無しさん
2005/07/01(金) 11:14:46超初心者スレなのに簡単な質問きたら頭悪いってアホかとバカかと…
~~~~~~~~~
0704デフォルトの名無しさん
2005/07/01(金) 11:18:46ありがとうございました。StringReplaceをすっかり忘れてました
StringReplace('あいう"えお', '"', '""', [rfReplaceAll])で解決ですね
0705デフォルトの名無しさん
2005/07/01(金) 11:59:48今日はアンチはいないと思うけど
それがいいたいだけなの?
0706デフォルトの名無しさん
2005/07/01(金) 12:14:370707デフォルトの名無しさん
2005/07/01(金) 12:51:02他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが、
お礼はDelphiの布教と初心者の救済をお願いします。
0708デフォルトの名無しさん
2005/07/01(金) 12:53:550709デフォルトの名無しさん
2005/07/01(金) 12:55:430710デフォルトの名無しさん
2005/07/01(金) 12:59:48>>707
0711デフォルトの名無しさん
2005/07/01(金) 14:03:150712デフォルトの名無しさん
2005/07/01(金) 14:10:200713デフォルトの名無しさん
2005/07/01(金) 14:11:070714デフォルトの名無しさん
2005/07/01(金) 14:19:04ヘルプファイルを作ってくれるロボットプログラムはどこですか?
0715デフォルトの名無しさん
2005/07/01(金) 14:19:36ミ,,゚Д゚彡フサギコのフサフサDelphi談話室その24
http://pc8.2ch.net/test/read.cgi/tech/1120195090/
0716デフォルトの名無しさん
2005/07/01(金) 14:48:24子フォームをボタンで開くと言うだけの事がなぜか動きません。
procedure TfrmEstimateEntry.btnOlditemClick(Sender: TObject);
begin
if not assigned(frmOlditem) then
begin
frmOlditem := TfrmOlditem.create(self);
frmOlditem.Show;
end;
end;
こんなプロシージャー書いたのですが、
フォームが開いていないにもかかわらず、ifからendに飛んでしまいます。
フォームが開いていなったら開けって意味で書いたのですが、
何か認識が間違ってるのでしょうか?
implementationのusesにも子フォームのユニット名は記述してあります。
何か我ながらものすごい馬鹿くさいことを忘れている気もするんですが
宜しくお願いします。
0717デフォルトの名無しさん
2005/07/01(金) 14:51:150718デフォルトの名無しさん
2005/07/01(金) 14:52:26プロジェクト オプション フォーム
0719デフォルトの名無しさん
2005/07/01(金) 14:53:03子フォームを自動生成の対象に入れてないか?
プロジェクトオプションのフォームタブをチェック。
0720デフォルトの名無しさん
2005/07/01(金) 14:54:10馬鹿くさいこともわからないのが
Del坊なんです
さいしょに
> もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
ってあるでしょ。
0721デフォルトの名無しさん
2005/07/01(金) 14:57:33begin
frmOlditem := TfrmOlditem.create(self);
frmOlditem.Show;
end
else
frmOlditem.Show;
0722デフォルトの名無しさん
2005/07/01(金) 15:04:32if not assigned(frmOlditem) then
frmOlditem := TfrmOlditem.create(self);
frmOlditem.Show;
0723デフォルトの名無しさん
2005/07/01(金) 15:04:370724デフォルトの名無しさん
2005/07/01(金) 15:21:26ああああ、ビンゴでした。
自分で設定した覚えが無いのになぜ・・・
もしかしてデフォは自動生成なんですか?
>>721
それでもいいかと思ったんですが、
なぜかってに生成されてるのか分かってなかったのが気持ち悪かったもので。
>>722
これだと短くていいですね。
何はともあれ皆さん、くだらない質問にマジレスいただいてありがとうございました。
正直ググっても、初歩過ぎて文献が見つからなかったっすorz
0725デフォルトの名無しさん
2005/07/01(金) 15:26:120726デフォルトの名無しさん
2005/07/01(金) 16:01:16> フォームが開いていなったら開けって意味で書いたのですが、
>>724
> それでもいいかと思ったんですが、
> なぜかってに生成されてるのか分かってなかったのが気持ち悪かったもので。
矛盾してるやん。
「フォームが開いていなったら開けって」ってコードはどうみても >>722 だろ
0727デフォルトの名無しさん
2005/07/01(金) 16:21:570728デフォルトの名無しさん
2005/07/01(金) 16:23:330729デフォルトの名無しさん
2005/07/01(金) 16:24:31このスレ見てたらわかるかと
0730デフォルトの名無しさん
2005/07/01(金) 16:28:180731デフォルトの名無しさん
2005/07/01(金) 17:15:350732デフォルトの名無しさん
2005/07/01(金) 18:06:240733デフォルトの名無しさん
2005/07/01(金) 18:11:01はたから見てたら本当にDelphiユーザが痛いように見えるよ
0734デフォルトの名無しさん
2005/07/01(金) 18:14:40傍から見てたらもっと痛いんだろうな
まあ、一部の奴だけだろうけどね
0735デフォルトの名無しさん
2005/07/01(金) 18:31:37ミ,,゚Д゚彡フサギコのフサフサDelphi談話室その24
http://pc8.2ch.net/test/read.cgi/tech/1120195090/
0736ななしへたぐらま ◆XcB18Bks.Y
2005/07/01(金) 18:33:11最小化されたサブフォームの移動はDelphi側ではサポートしていませんが
APIで直接動かすことができるようです.以下サンプル.
{★最小化したフォームのウィンドウ領域を返す関数です.}
function GetIconizedFormRect(aForm: TCustomForm): TRect;
begin
Windows.GetWindowRect(aForm.Handle, Result);
end;
{★最小化したフォームを指定した場所に移動します.}
procedure MoveIconizedForm(aForm: TCustomForm; Left, Top: integer);
var
WinRect: TRect;
begin
WinRect := GetIconizedFormRect(aForm);
Windows.MoveWindow(aForm.Handle, Left, Top,
abs(WinRect.Right - WinRect.Left), abs(WinRect.Bottom - WinRect.Top), True);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
aRect: TRect;
begin
// 最小化されたForm2を右16ピクセル,上16ピクセル移動する.
aRect := GetIconizedFormRect(Form2);
MoveIconizedForm(Form2, aRect.Left + 16, aRect.Top - 16);
end;
0737ななしへたぐらま ◆XcB18Bks.Y
2005/07/01(金) 18:45:08> もしかしてデフォは自動生成なんですか?
その通りです.デフォで自動生成にしたくない場合は
[環境オプション]→[設定]タブ→[フォームデザイナ]グループの
『自動作成とする』のチェックをはずして下さい.
(うちはDelphi 5なので6以降は多少変わっているかもしれませんがオプション自体はあるはずです)
0738デフォルトの名無しさん
2005/07/01(金) 19:50:55チェックをはずすとデフォが非自動生成になるってか?
0739デフォルトの名無しさん
2005/07/01(金) 19:51:550740デフォルトの名無しさん
2005/07/01(金) 20:01:35なぜ彼がファビョってるのかも知らんが。
0741デフォルトの名無しさん
2005/07/02(土) 10:14:22その列の値を並べ替えようと思い、FixedRowにボタンを配置し、そこをクリックしたときに
ソートするようにして機能は実現できたのですが、
OptionsのColSizingをTrueにしていても、サイズ変更ができなくなってしまいました。
ソートと、サイズ変更両方できるようにするにはどうすればよいでしょうか。
よろしくお願いします。
private
BtnGrdSort1, BtnGrdSort2, BtnGrdSort3, BtnGrdSort4 : TButton; //必要なcol分宣言
procedure TForm1.FormCreate(Sender: TObject);
begin
BtnGrdSort1 := TButton.Create(Self); //必要なCol分Create 以下同じく
BtnGrdSort1.OnMouseDown := BtnSortMouseDown;
BtnHaiti(BtnGrdSort1 ,1,0);
end;
procedure TForm1.BtnHaiti(BtnName :TButton;Col,Row:Integer);
var BLoc:TPoint;
begin
BLoc:=Point(Col,Row);
BtnName.Parent:=StringGrid1;
BtnName.BoundsRect :=StringGrid1.CellRect(BLoc.X,Bloc.Y);
end;
procedure TForm1.BtnSortMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
ShowMessage('ソート処理');
end;
0742デフォルトの名無しさん
2005/07/02(土) 10:26:180743デフォルトの名無しさん
2005/07/02(土) 10:33:48DevelopperExpressの追加コンポーネント買えば一発なんだがなw
0744デフォルトの名無しさん
2005/07/02(土) 10:50:24そんなことはない。おそらくプロパティが間違っている。
最初からやり直して、普通のイベントハンドラつかって試してから
応用実装した方がよい。
0745デフォルトの名無しさん
2005/07/02(土) 10:57:35イベント作ってやってるから待ってろ
0746デフォルトの名無しさん
2005/07/02(土) 11:09:33begin
...
StringGrid1.Objects[Col,Row] := BtnName;
end;
の最後に追加
StringGrid1DrawCellイベントを作成して下記をペースト
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
var
AStringGrid : TStringGrid;
begin
if (Sender is TStringGrid) then
AStringGrid := TStringGrid(Sender)
else
AStringGrid := StringGrid1;
if ARow < AStringGrid.FixedRows then
if Assigned(AStringGrid.Objects[ACol, ARow])
and (AStringGrid.Objects[ACol, ARow] is TWinControl) then
begin
TWinControl(AStringGrid.Objects[ACol, ARow])
.SetBounds(Rect.Left,Rect.Top,Rect.Right-Rect.Left,Rect.Bottom-Rect.Top);
end;
end;
0747デフォルトの名無しさん
2005/07/02(土) 15:38:00無いのであれば、何か別の良い方法をお教え下さい。
よろしくお願いします。
0748デフォルトの名無しさん
2005/07/02(土) 16:48:460749デフォルトの名無しさん
2005/07/02(土) 17:05:21どの言語のevalですか?
実現したい機能について説明しましょう。
0751デフォルトの名無しさん
2005/07/03(日) 05:31:46evalってのは基本的に、インタプリタ型特有のもんだろ。
>>749
どの言語のevalも大体同じじゃね?
文字列をコードとして解釈ってのが一般的だと思うんだけど、
他にあるのか?
0752デフォルトの名無しさん
2005/07/03(日) 08:45:21if (fooA = fooB) then
begin
//trueのときの処理
end else
begin
//Falseのときの処理
end;
こんな感じのことがしたのか?
0753デフォルトの名無しさん
2005/07/03(日) 09:07:18どうしたしまして。
あの 今日 おきて そのコードを見て はっ!! と気がつきました。
スクロールすると、同期しません(>_<)
左上の位置が変更されたら、位置を変えるコードを追加します
下記を加えてください。
procedure TForm1.StringGrid1TopLeftChanged(Sender: TObject);
var
i : integer;
R : TRect;
begin
// 行は0に固定しているので 好きに変更してください。
if (Sender is TStringGrid) then
for i := 0 to TStringGrid(Sender).ColCount-1 do
if (TStringGrid(Sender).Objects[i, 0] <> nil)
and (TStringGrid(Sender).Objects[i, 0] is TWinControl) then
begin
R := TStringGrid(Sender).CellRect(i,0);
TWinControl(TStringGrid(Sender).Objects[i, 0])
.SetBounds(R.Left,R.Top ,R.Right - R.Left, R.Bottom - R.Top);
end;
end;
0754741
2005/07/03(日) 09:17:10早速コードに追加させて頂き、
確かに今まではスクロールすると同期がとれていない現象が出ていたことと、
今回の修正で直ったことを確認しました。
本当にありがとうございました。
0755747
2005/07/03(日) 15:00:25evalの機能については、>>751さんの説明の通りです。
単純な例を下に・・・。
var
Str : String ;
begin
Str := '1+3' ;
showmessage(Str) ;
end;
例えばこのままでは「1+3」がそのまま表示されますが、evalがあれば
eval( Str );
で、計算結果の「4」を得ることが出来ます。
与えられた文字列をコードや式として解釈して、
その結果を返します。
0756デフォルトの名無しさん
2005/07/03(日) 15:16:52ギコナビのビルド方法
http://deuxdeux.hp.infoseek.co.jp/gikobuild.html#bmRegExp
Delphi6無料版とIndy_9_00_17_src、他に上記手順どおり全てのファイルを
組み込んで最終的にコンパイルしてgokonavi.exeが出来上がりました。
しかし、最初の板一覧更新から以下のエラーが正常に動作しません。
-------------------
プロジェクト gikoNavi.exeがEAccessViolationクラスの例外を作成しました。
'Access Violation at address 004EECCF in Module 'gikonavi.exe' Read of address 00000000' プロセスは停止しています。再開するにはステップ実行または実行を選択してください。
-------------------
var
Readbuff : string;
Indy: TIdHTTP;
begin
Readbuff := indy.get('http://www.yahoo.co.jp/');
showmessage(Readbuff);
end;
このプログラムを実行させても同じようなエラーになります。
どなたか問題を解決する方法を教えてください。
0757747
2005/07/03(日) 15:17:18evalの機能説明ばかりで、ちゃんと返答してなかったかもしれないので・・・。
具体的には、
Edit1.Text の「1」と、Edit2.Textの「+3」を足したとき、
文字列「1+3」ではなく、計算結果の「4」が返ってきてほしいんです。
0758756
2005/07/03(日) 15:18:12しかし、最初の板一覧更新から以下のエラーが出て、正常に動作しません。
0759デフォルトの名無しさん
2005/07/03(日) 15:20:12コンパイル言語でそういうのって難しいんじゃないかな。
その部分だけインタプリタ的な動作をする必要があるわけでしょ?
DMonkeyっていうのがあるけど、使ったことないから分からん。
http://onigiri.s3.xrea.com:8080/delphi/index.php?%5B%5BDMonkey%5D%5D
0760デフォルトの名無しさん
2005/07/03(日) 15:33:02beginの後ろに
Indy:= TIdHTTP.Create(....
みたいのいれなくていいの?
0761デフォルトの名無しさん
2005/07/03(日) 15:41:37どういうことよ 【作者、意図的なウィルスか】
http://pc8.2ch.net/test/read.cgi/software/1119624855/464-
465 :鯨田 ◆lazy.NRKzk [sage] :2005/07/03(日) 15:17:34 ID:ihTzppkq0
ttp://www.geocities.jp/troj_hirofu/about_virus.html
間違えがないかさがしてください。。。
0762デフォルトの名無しさん
2005/07/03(日) 15:53:43procedure TForm1.Button1Click(Sender: TObject);
var
Readbuff : string;
Indy: TIdHTTP;
begin
Indy := TIdHTTP.create(self);
try
Readbuff := indy.get('http://www.yahoo.co.jp/');
showmessage(Readbuff);
finally
Indy.free;
end;
end;
0763デフォルトの名無しさん
2005/07/03(日) 15:54:53http://onigiri.s3.xrea.com:8080/delphi/index.php?gikobasic
UGIKOSCR.PAS を使えば
GikoScript.ExecToVar( Edit1.Text ) とするだけで結果が返ってくるよ
0764デフォルトの名無しさん
2005/07/03(日) 15:55:580765756
2005/07/03(日) 16:06:02>>762
TIdHTTPをフォームに張った場合は、 >>756 のエラーが出てしまい、
貼らない場合に >>762 のソースをコンパイラして実行させると以下のエラーになります。
-------------------
プロジェクト test.exeがEIdConnClosedGracefullyクラスの例外を作成しました。
'Connection Closed Gracefully'
プロセスは停止しています。再開するにはステップ実行または実行を選択してください。
-------------------
Indyコンポーネントを使いたいのに、一番最初に躓いています・・・。
すみません。さらにアドバイスをお願いします。
0766デフォルトの名無しさん
2005/07/03(日) 16:07:22Indy付属のサンプルは動くのか?
0767756
2005/07/03(日) 16:07:50↑でエラーが出てしまいます。
0768デフォルトの名無しさん
2005/07/03(日) 16:09:490769756
2005/07/03(日) 16:10:10今日始めてIndyをインストールしたので、初歩の段階ですみません。
付属のサンプルってどこにあるのですか?
0770756
2005/07/03(日) 16:11:44試してみます
0771デフォルトの名無しさん
2005/07/03(日) 16:14:01>
> EIdSilentException から派生しているため,VCL の EAbort 例外のように動作します。
> [ツール|デバッガオプション|言語固有の例外|追加] をクリックして「EIdSilentException」と入力し,
> この例外を無視するように IDE を設定することをお勧めします。
0772756
2005/07/03(日) 16:14:50Computil.bpr
というのがありますが、サンプルじゃありませんでした。
0773756
2005/07/03(日) 16:17:14手順どおり設定したところ、エラーが出なくなり正常に動作しました。
スゴイ感激です。有難うございます!
0774デフォルトの名無しさん
2005/07/03(日) 16:19:30var
Atext : String;
Apos : Integer;
begin
Atext := Edit1.Text + Edit2.Text ;
//足すの場合
Apos := AnsiPos('+',AText);
if Apos <> 0 then
begin
result := StrToInt(Edit1.text) + StrToInt(Edit2.text)
Apos:=0;
end;
//かけるの場合
Apos := AnsiPos('*',AText);
if Apos <> 0 then
begin
result := StrToInt(Edit1.text) * StrToInt(Edit2.text)
Apos:=0;
end;
//引くと割るの場合は自分で考えてみよう。それと、TEdit.textの値が有効なものか事前にチェックする必要がある。
end;
0775デフォルトの名無しさん
2005/07/03(日) 16:26:18すまない>>774は間違えた。
var
Atext : String;
Apos : Integer;
begin
Atext := Edit1.Text + Edit2.Text ;
//足すの場合
Apos := AnsiPos('+',AText);
if Apos <> 0 then
begin
result := StrToInt(copy(Atext,1,Apos-1)) + StrToInt(Copy(Atext,Apos+1,Length(Atext))) ;
Apos:=0;
end;
//かけるの場合
Apos := AnsiPos('*',AText);
if Apos <> 0 then
begin
result := StrToInt(copy(Atext,1,Apos-1)) * StrToInt(Copy(Atext,Apos+1,Length(Atext))) ;
Apos:=0;
end;
//引くと割るの場合は自分で考えてみよう。それと、TEdit.textの値が有効なものか事前にチェックする必要がある。
//やっていることは文字列を結合して、演算子を探して、演算子の前後を数値として演算子に応じて計算する。
end;
0776デフォルトの名無しさん
2005/07/03(日) 17:06:370777デフォルトの名無しさん
2005/07/03(日) 17:47:32そういうまるでVBで書くようなコードじゃなくて、
普通に再帰下降で書くべきだろう。
http://piza2.2ch.net/tech/kako/1003/10035/1003559977.html
この4レス目にコード例があるから
0778デフォルトの名無しさん
2005/07/03(日) 18:51:35賛成の方も反対の方も、このスレで自分は賛成か反対かをお書きください。
プログラム技術板に強制ID制を導入すべきか否か
http://etc4.2ch.net/test/read.cgi/vote/1118144381/
理由などの記入は別に構いません。
<<賛成>>か<<反対>>かだけ御記入頂ければ結構です。
ちなみに、当たり前ですが運営の方にIPが見えているので、1日ごとにIDが変わるからといって多重投稿しないでください。
0779デフォルトの名無しさん
2005/07/03(日) 20:34:280780デフォルトの名無しさん
2005/07/03(日) 21:23:38さようなら(;_;)/~~~
0781デフォルトの名無しさん
2005/07/03(日) 21:34:500782デフォルトの名無しさん
2005/07/03(日) 21:58:210783デフォルトの名無しさん
2005/07/03(日) 23:48:34勘違いしているといけないので念のため
例外が発生したものをIDEが捕捉したからといって必ずしも
エラーなわけではない。>771はIDEが特定の例外を捕捉しない
ように設定しているだけ。
0784デフォルトの名無しさん
2005/07/04(月) 13:48:36どうすればいいのか分かりません。 誰か分かる人いますか?
■ このスレッドは過去ログ倉庫に格納されています