くだすれDelphi(超初心者向け) Part2
■ このスレッドは過去ログ倉庫に格納されています
0001毛の生えたフサギコ
NGNG他のスレッドでは書き込めない超低レベル、もしくは質問者自身何が何だが
分からない質問を勇気を持って書き込むスレッドです。
Delhi使いが優しくコメントを返しますが、お礼はDelhiの布教と初心者の
救済をお願いします。
0153デフォルトの名無しさん
NGNGDELPHIでVCLのソースコードを
ステップ実行することはできるのでしょうか?
0154デフォルトの名無しさん
NGNG0155デフォルトの名無しさん
NGNGXPスタイルに対応したコンポーネントを使うしかない
0156デフォルトの名無しさん
NGNG返答ありがとうございます
0157デフォルトの名無しさん
NGNGテンキューベリーマッチョ
0158デフォルトの名無しさん
NGNGprocedure TForm1.FormCreate(Sender: TObject);
var
F: TextFile;
begin
AssignFile(F, 'c:\hello.txt');
Rewrite(F);
Writeln(F, 'world');
CloseFile(F);
end;
0159デフォルトの名無しさん
NGNG0160デフォルトの名無しさん
NGNG書きたくなければ external 宣言した ユニットのinterface節で公開すればいい
0161デフォルトの名無しさん
NGNG定番ではないし、最近全くメンテしていないけどこんなんでよければドゾー
http://www.mars.dti.ne.jp/~b-guild/mailnews.html
0162デフォルトの名無しさん
NGNG0163デフォルトの名無しさん
NGNG経験2ヶ月弱です。
--------{unit1.pas}
procedure TForm1.Button1Click(Sender: TObject);
begin
TForm2.Create(self);
end;
--------{unit2.pas}
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
ShowMessage('Form2を閉じます') ;
Action:=caFree;
end;
---------
Form2を表示させた状態でForm1(プログラム)
を終了させた場合に、Form2が表示されていることを
チェックして、表示していた場合 Form2の OnClose イベントを
実行させるためにはどうすればいいのでしょうか?
またForm2を表示させたままForm1(プログラム)を終了させた場合ちゃんとFREE
しているのでしょうか?
0164デフォルトの名無しさん
NGNGTForm2を変数に入れた良いと思うが一応これで。
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var
I: Integer;
begin
I:=0;
while I<ComponentCount do
begin
if Components[I] is TForm2 then
begin
if TForm(Components[I]).Visible then
TForm(Components[I]).Close;
end;
Inc(I);
end;
end;
> またForm2を表示させたままForm1(プログラム)を終了させた場合ちゃんとFREEしているのでしょうか?
Freeされます。
0165163
NGNG0167デフォルトの名無しさん
NGNGきちがいの妄言は無視無視。
0168デフォルトの名無しさん
NGNGすばらしいお言葉ありがとうございました。
0169デフォルトの名無しさん
NGNG貴方のレスのおかげでスレが3レス分無駄になりました。
0170デフォルトの名無しさん
NGNG貴方がレスしなければ2レス分ですんだのにね。
0171デフォルトの名無しさん
NGNGありが�d
0172デフォルトの名無しさん
NGNGご指摘ありがとうございますた。
0173デフォルトの名無しさん
NGNGhttp://www.delphi-gems.com/
0174デフォルトの名無しさん
NGNG「\1,000」と表示されるようにするにはどうすれば良いですか?
今は別に変数(value)を用意して
OnKeyDownで
value := 数字抽出関数(TEdit(sender).text);
TEdit(sender).text := formatfloat('\#,##0',Value);
とやっているのですがカーソルが左に移動してしまい、1,2,3と入力したら
「321」と表示されてしまいます。
宜しくお願いします。
0175デフォルトの名無しさん
NGNG0176デフォルトの名無しさん
NGNGhttp://s-rf9.free-city.net/page003.html
0177デフォルトの名無しさん
NGNGTEditを上位クラスに設定して、カスタムコンポーネントを作ればいい
そんなに難しくはないよ
0179デフォルトの名無しさん
NGNGそういわずにやってみ
思ったより簡単だぞ
0180デフォルトの名無しさん
NGNGTMaskEdit を使ってみるのはどうかな?と。
0181デフォルトの名無しさん
NGNGクローズ後のDLL内の処理で、呼び出し元のファイルを書き換えようとしても出来ません。
DLL内での処理が終わり、アプリに戻った時点でクローズされてるって事ですか?
だからファイルを掴んだままなのでしょうか?
0182174
NGNGコンポーネントはいくつか作った事があるのですが、
何かと面倒なんです。
(プロジェクトメンバー全員にインストールしてもらう必要があるとか)
>>180
TMaskEditの使い方を調べてみたのですが、
どうやれば>>174が出来るのか分かりませんでした。
0183デフォルトの名無しさん
NGNG数値と文字列の相互変換は省略。
TMaskEdit の EditMask プロパティを '\\9,999;0; ' に。
これで text プロパティに文字列 '1234' を書き込むと \1,234 と表示される。
編集後の値は同じく text プロパティを読めば、\ と , が取り除かれた文字列として
手に入る。
\ や , が入った、表示されているものと同じ文字列は EditText プロパティで。
0184デフォルトの名無しさん
NGNGWindows のバージョンで動作が変わるので気をつけて。
>呼び出したDLLの中で呼び出し元のアプリをクローズはできるんですが、
どうやって「クローズ」してるのかな?
アプリケーションとそれが自動的に読み込む DLL の羅列は WIndows のローダーが管理していますから
勝手に開放(クローズ)できません。排他読み込みをおこなっているはずなので
削除は不可能。
0185デフォルトの名無しさん
NGNGレスありがとうございます。諦めます。
0186デフォルトの名無しさん
NGNGシャットダウンとかの時に使うものだからあまりお勧めはしない。
MSDN を漁ってみること。
0188デフォルトの名無しさん
NGNG2ch回覧ツールとかを1から作れるようになるような
それぐらいの実力がつくお勧めのインターネット教えてください。
プログラムはやったこと無いですがやる気はあります。
0189デフォルトの名無しさん
NGNG0190デフォルトの名無しさん
NGNGとりあえず>>4の初心者向けのサイトでもまわっておいで
0191デフォルトの名無しさん
NGNGいきなりJane読むのはしんどいかもしれないから
簡単なカレンダーとかメモ帳とかメールチェッカーを
練習として作ってから挑戦したら?
0192デフォルトの名無しさん
NGNG0193デフォルトの名無しさん
NGNG0194デフォルトの名無しさん
NGNGさっそく190さんのところで時計が作れました。
OPENJaneっていうソースを見てみたのですが、
ファイルがいっぱいあってこれがコンポーネントという物だと思いますが。
0195デフォルトの名無しさん
NGNG0196デフォルトの名無しさん
NGNGインターネット≒ホームページ
となりました。
0197デフォルトの名無しさん
NGNG0198デフォルトの名無しさん
NGNG0199デフォルトの名無しさん
NGNG0200デフォルトの名無しさん
NGNG0201遅レス
NGNG0202デフォルトの名無しさん
NGNG手を抜くことを考えるプログラマはそれ以上に糞。
0203デフォルトの名無しさん
NGNG0204デフォルトの名無しさん
NGNG自分でユニットファイルに書き込むのとではどちらがいいのでしょうか?
0205seven
NGNGどちらかが良い場合もそれぞれあるので、どちらでも可能になってるのでしょう。
D6からは、TFORMがテキストなので、テキスト保存の問題も、ほぼなくなりました。
まぁ、オブジェクトインスペクタ無しにDelphiは語れないかもです。
0206デフォルトの名無しさん
NGNG「楽をする事」の定義をちゃんとしないと揉める元だぞ。
0207デフォルトの名無しさん
NGNG自分だけで作る場合は、オブジェクトインスペクタで楽していいと思います。
共同開発の場合は、仕様書にオブジェクトインスペクタの値を書いておくことになるでしょう。
ユニットに直に書くのは、明示的にプロパティを書いておきたい、などの理由がない限りしなくていいと思います。
0208デフォルトの名無しさん
NGNG型を変換してから変数に格納しています。このとき、もし誤った値(型変換できない)が入ってきたら
判別できるようにしたいのですが、try節でミスが発生したというのはわかっても
どこで発生したか?というのがわかりません・・・。上手い方法はありませんか?
0209デフォルトの名無しさん
NGNGそれらが同じ種類のエラー文字列なら、今何処理中、みたいなのをStringに保持しとけ。
0210デフォルトの名無しさん
NGNGtryって例外があったら中断されるんですよね?
それなら、頭から順に今何を読んでいるのかを保持するようにしてみます。サンクス!
0211デフォルトの名無しさん
NGNGfunction MyStrToText(const FldName:string ; str:string):Integer;
begin
try
Result:=StrToInt(str);
except
on E:Exception; で FldNameと組み合わせたメッセージを追加して例外をもう一度投げる
end;
end;
ってやればいいと思うよ
0212デフォルトの名無しさん
NGNG0213デフォルトの名無しさん
NGNGtry節をネストすれば良いだけの事
SL := TStringList.Create;
try
try
SL.LoadFromFile('D:\DATAFILE.DAT');
for I:=0 to SL.Count -1 do
begin
try
ConvertValue( StrToInt(SL[I]) );
except
PutError('変換エラー:'+IntToStr(I)+'行');
end;
end;
except;
PutError('致命的エラー発生');
end;
finally
SL.Free;
end;
0214やりなおし
NGNGtry
try
SL.LoadFromFile('D:\DATAFILE.DAT');
for I:=0 to SL.Count -1 do
begin
try
SetValue( StrToInt(SL[I]) );
except
PutError(IntToStr(I)+'行は変換できませんでした');
end;
end;
except;
PutError('致命的エラー発生');
end;
finally
SL.Free;
end;
0215デフォルトの名無しさん
NGNGなるほど、そういう手も・・・(つД`)アリガト
0216デフォルトの名無しさん
NGNG変更すると画面がちらついてしまうのですが
これをちらつかせない方法などありましたら教えてください。
0217デフォルトの名無しさん
NGNGそれをアプリ側で制御するのは無理
0218デフォルトの名無しさん
NGNG極簡単な動作実験用とか作った時でもなる時あって、
バグ取り中に何度もコンパイルとかしてると急に今まで通り動かなくなり、
コードをコピペして全く同じ内容で新たに作るとまともに動作する。
さっき出た症状ではApplication.Handleを参照しても常に0ってのになった。
Delphiから実行時にアプリ終了してもCPU画面が出てもう一度実行ボタンを
押さないと終了しないのもどこかおかしいんだろうか?
0219デフォルトの名無しさん
NGNGOS から入れ直せ。
0220デフォルトの名無しさん
NGNGWin98?
OS と Delphi のバージョン名くらいは教えてください。
0221デフォルトの名無しさん
NGNG使っているマシンの CPU の種類とクロック速度、
使っているビデオカードの名前。
ビデオカードの種類とドライバのバージョンによっては、ソフトウェア描画に
なるから、とっても遅くなるぞ。
0222デフォルトの名無しさん
NGNGw2k sp3
D5のupdate済み
いま、既にあるアプリでApplication.Handle取得のテストしてみたら、0だった・・・
0223デフォルトの名無しさん
NGNG0224デフォルトの名無しさん
NGNGなんでだろ〜なんでだろ〜♪
0225デフォルトの名無しさん
NGNGdel居れ直しならまだしもOSからはつらいな。
今のような快適設定にレジストリ変更する自身が無い。
0226216
NGNGレスありがとです。そうですか…。残念。
実はAlphaBlendとループと使ってフォームを
徐々に表示or隠すということをしたかったのですが、
徐々に表示なら
AnimateWindow (Form.Handle, 2000, AW_BLEND);
で出来ますが、徐々に隠す方法はどうやったら出来るのでしょうか?
http://www.kumei.ne.jp/c_lang/sdk4/sdk_348.htm
ここで見る限りAnimateWindowでは出来そうもないです。。
0227デフォルトの名無しさん
NGNGHide;
でできないか?
0228227
NGNG0229デフォルトの名無しさん
NGNG0230デフォルトの名無しさん
NGNGDelphi5 だから。という話かなぁ。
CPU ウィンドウが開かなくなる。ってのは聞いたこと無いし
0231デフォルトの名無しさん
NGNG(PByte($12345678)) := $12;
(Pword($12345678)) := $1234;
てな感じでどうかな?他にもいろいろやり方あり。
0232218
NGNGオプションで「実行時パッケージを使って構築」
をチェックすると0になるアプリがあるみたいだ。
ただ、テスト用に簡単に作った奴はその限りではない・・・つらい・・・。・゚・(ノД`)・゚・。
0233デフォルトの名無しさん
NGNG開かなくなるのではなくて開いてしまうんだよ
0234デフォルトの名無しさん
NGNGうーん。みてみたいよ。あんたの環境。
・*.bpl が変なディレクトリに落ちている
・日本語を含むパス名を常用している。
どちらか、心当たりないかな?
0235デフォルトの名無しさん
NGNG0236デフォルトの名無しさん
NGNG猫が間違ってるっぽい。
「AW_HIDEとは併用できません。」は、AW_ACTIVATEの説明に入るはず。
0237デフォルトの名無しさん
NGNG>押さないと終了しない
これかぁ。勝手に出る CPU 画面、どこで止まっています?
画像写真、どこかうpろだに置けませんかね?
0238デフォルトの名無しさん
NGNG実際にやってみるよろし。
0240デフォルトの名無しさん
NGNGどちらも普通みたいです。こうなったら仕方ないので
別のHDDに非常用OS入ってるので、まっさらなdelphi入れて試します。
また報告します。
0241デフォルトの名無しさん
NGNGMSDN より実際の動き
0242デフォルトの名無しさん
NGNG0243デフォルトの名無しさん
NGNGうむ。もったいない。
バグが出ている環境は貴重なんで、できれば原因をつかみたかったが。
再インストールで問題が出なくなることを祈ります
0244デフォルトの名無しさん
NGNGデータベースって言葉知ってる?
0245デフォルトの名無しさん
NGNG0246デフォルトの名無しさん
NGNGそれに何年裏切られつづけてきたか....
0247デフォルトの名無しさん
NGNG0248デフォルトの名無しさん
NGNG言葉自体は知っていますがプログラムでどのような働きをするのかは知りません。さっさと教えなさい。
0249デフォルトの名無しさん
NGNGとりあえず、
今あるDelphiのフォルダをリネームしておいてDelphiを再インストールして比べてみろ
それから
--------- ここから -------
del *.tds
del *.~*
del *.dsk
del *.dof
del *.dsm
del *.dcu
----------- ここまで -------
をバッチファイルにして、あちこちのプロジェクトの不要ファイルを消して回れ
0250デフォルトの名無しさん
NGNG晒しました。
http://www7.big.or.jp/~mb2/bbs/up/kao/source/up3264.jpg
>>243
再インストではないですよ。予備のOSに入れるのです。
0251デフォルトの名無しさん
NGNGその画面の状態で、F7 押して。
ret の次に DebugBreak を呼び出しているモジュールの位置がわかる。
そこが鍵だ!
0252216
NGNG>>236
>>238
ほんとだ…
AnimateWindow(Handle, 2000, AW_HIDE or AW_BLEND);
hide;
上のコードでちゃんとフェードアウトする。。
何事も実際やってみないとだめっすねえ、、
ありがとうございました。
■ このスレッドは過去ログ倉庫に格納されています