【Delphi初心者】今から始めるDelphi Part01
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNGもちろん、質問もOKです。
質問はage
回答はsage
第一回 画像表示ソフトを作ろう
くだすれDelphi(超初心者向け) Part5
http://pc2.2ch.net/test/read.cgi/tech/1061090908/l50
0153デフォルトの名無しさん
NGNGどうもです。
どのスレか見失ってしまったのですが、XPは対応していない
という書き込みを見たような気がしたものですから。
thxです。
0154デフォルトの名無しさん
NGNGもう一度Delphiを入れ直そうとしたらDelphi7(使用期限あり)に変わってたようで。
0155デフォルトの名無しさん
NGNGファイルはまだある
Ftp://ftpa.borland.co.jp/pub/delphi/personal/BorlandDelphiPersonalEditionJP.exe
0156デフォルトの名無しさん
NGNGありがとうございます。助かりました。
0157デフォルトの名無しさん
NGNGstudio proを買おうと思ってるんだけど、アカデミーパックが見付からない。
0158デフォルトの名無しさん
NGNGhttp://www.amazon.co.jp/exec/obidos/ASIN/B0000794TV/qid=1083244594/sr=1-5/ref=sr_1_8_5/250-3713163-3141030
0159デフォルトの名無しさん
NGNGListBoxについて質問です。
リソースファイルを以下の様に宣言して、画面に表示されたのですが、
値の追加はどのようにすればいいのでしょうか?
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
0160デフォルトの名無しさん
NGNG0161sage
NGNGただで使えるからです・・・
0162デフォルトの名無しさん
NGNGで出来ました。ふぅ
0163デフォルトの名無しさん
NGNGFileListBoxの中身
001.txt
002.txt
003.txt
・・
・・・
・・
・・
これに対して
003.txt(もしくはC:\・¥・・¥003.txt)という引数をを入れた場合の返り血として 3 がほしいのです。
0164デフォルトの名無しさん
NGNGFileListBox1.Items.IndexOf('003.txt');
0から始まるから、2が返ってくるけど。
0165デフォルトの名無しさん
NGNG配置したボタンをクリックすると、同時に起動している別のエディタのカーソルの位置に
指定の文字列が入力されるようにするにはどのようにすればよいのでしょうか?
0166デフォルトの名無しさん
NGNGウィンドウの検索方法が厳密でないので、同名のウィンドウが複数
存在する場合、予期しない動作をするかもしれません。
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;
0167デフォルトの名無しさん
NGNGEM_XXXX メッセージが使えます。でも、秀丸とか EmEditor とか他のメジャー
なエディタは独自のエディットコントロールを使っていますので、EM_XXX や
WM_XXXX のようなメッセージにはほとんど応答しません。クリップボード経由
ならなんとかなるかも知れませんが。
0168デフォルトの名無しさん
NGNGを取ろうと思い。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文でリストボックスのカウントを使って一階層上のパスに
結合させようとした事ができません。
この・は何なのでしょうか。出ないようにすることはできるのでしょうか?
また、もっと簡単に一階層上のパスを取得する方法が有ればそちらも教えて頂きたいです。
0169デフォルトの名無しさん
NGNG・のせいで同じ2になってしまうのです。
0170デフォルトの名無しさん
NGNG0171デフォルトの名無しさん
NGNG> パスの一階層上のパス(C:\AAAA\BBBBをC:\AAAに)を取ろうと思い
なら、ExtractFilePath() をつかって
ExtractFilePath('C:\AAAA\BBBB') → C:\AAAA\
だけど。
0172デフォルトの名無しさん
NGNGExcludeTrailingBackslash(ExtractFilePath('C:\AAAA\BBBB')) → 'C:\AAAA'
0173デフォルトの名無しさん
NGNG0174デフォルトの名無しさん
NGNG0176デフォルトの名無しさん
NGNGstr: 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
どなたか教えてください。
0177ミ,,゚Д゚彡 ◆A6VzDeLphI
NGNGExplorerのアドレスバーへの入力ではそれでアクセス可能かと。
権限を得る方法は、知らないので誰か
フォローおねがいしまつ。
0178176
NGNGExplorerのアドレスバーへ \\server\ib と入力したら確かに test.gdbファイルが見えました。
見えるって事は権限あるって事ですよね?
理屈から考えると、パス込みのファイル名は \\server\ib\test.gdb のはず
なのですが、IBDatabase.FileNameにそのまま渡してもうまくいきません。
う〜ん、行き詰まってしまいましたonz
0179デフォルトの名無しさん
NGNGInterbaseサーバは違うマシンのDBファイルを扱わなかったと思うが違うか?
0180176
NGNG違うマシンのDBファイルじゃダメなんですね。
分かりました。他の方法を考えます。
0181デフォルトの名無しさん
NGNG安易な発想ですが、ネットワークドライブを割り当ててみたらどうですか?
0182デフォルトの名無しさん
NGNGディレクトリパスの表示を変えたいのですが、どのイベントで「フォルダを移動した」
ということがわかるのでしょうか??
onChangeでは取れないみたいなので。。
よろしくお願いします。
0183182
NGNG0184デフォルトの名無しさん
NGNGOnClickでいいんじゃないの?
0186デフォルトの名無しさん
NGNG0187デフォルトの名無しさん
NGNG0188デフォルトの名無しさん
NGNGShowMessage('swf(flash)');
0189186
NGNGその単語で検索していろいろとやってみます。
>188
センスなし!次ぃっ!
0190デフォルトの名無しさん
NGNGswf(flash).Visible:=True;
0191デフォルトの名無しさん
NGNG表示したい場所に TWebBrowser を貼り付ける。
WebBrowser1.Navigate('ファイル名.swf');
もし 'ファイルのダウンロード' が出てくるならもう少し工夫が必要。
0192デフォルトの名無しさん
NGNGQuickReportを使って、Paradox.DBの内容を一件ごとに一頁印刷し
改頁するというアプリを作ってるのですが、うまくいきません。
用紙は定形ではなく連続用紙なので、レポートの設定で用紙サイズと
同じ「カスタムサイズ幅210x長さ140」と設定してるんですが、実際
印刷するときはA4になってしまっているようで、改ページ位置がA4と
同じ位置になってしまいます。
プリンタ設定を見てみると用紙サイズA4になっているので、「ユーザー
定義1」に手動で変更してみても駄目です。
どうしたら縦140mmの位置で改ページできるでしょうか。
0193デフォルトの名無しさん
NGNG関連付けで実行したいなら>>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;
0194186
NGNGご丁寧にありがとう御座います。無事うまくできました。
>187,>191
ご助言感謝します。ありがとう御座いました。
0195デフォルトの名無しさん
NGNGある9つのEditに、1から9の、それぞれ数字をランダムに入れたいと思います。
ランダマイズ関数だけでは数字がかぶってしまうことがあると思うのですが、どのようにすれば全て異なる数字になるのでしょうか。
0196デフォルトの名無しさん
NGNG0197デフォルトの名無しさん
NGNGありがとうございます。
シャッフルというのを使ったことがないのでわからないのですが、どう記述すればよいのでしょう。
0198デフォルトの名無しさん
NGNGこんな感じとか
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;
0199デフォルトの名無しさん
NGNGオンクリックメッセージとかなしで。
0200デフォルトの名無しさん
NGNG作りたいものがあるならそれを作ればいいし
単純に勉強したいならメモ帳クローン。
新規、ロード済み、編集中とかの状態を管理することを覚えられるし
標準的なメニューの実装方法をどう書くかとか
バージョン情報のダイアログの作り方とか一通りマスターできる。
0201デフォルトの名無しさん
NGNGプロジェクトを保存するディレクトリを作ろう。
0202デフォルトの名無しさん
NGNG0203デフォルトの名無しさん
NGNGゲームもよろしく
Delphiまとめ
http://gamdev.org/w/?%5B%5BDelphi%A4%DE%A4%C8%A4%E1%5D%5D
【Delphi】 ゲームつくるぞ(゚Д゚)ゴルァ 【作れば?】
http://pc5.2ch.net/test/read.cgi/gamedev/1051110669/
Delphiでアクションゲームが作りたい!! Part2
http://pc5.2ch.net/test/read.cgi/gamedev/1027482533/
Delphiゲームプログラミング相談室
http://pc5.2ch.net/test/read.cgi/gamedev/1006249204/
delphiでMMO
http://pc5.2ch.net/test/read.cgi/gamedev/1072515100/
ネットワークゲーム作成のお勉強(Delphi専用スレ)
http://pc5.2ch.net/test/read.cgi/gamedev/1028278884/
[Delphi] RPG作らねば [Delphi]
http://pc2.2ch.net/gamedev/kako/1013/10139/1013976376.html
0204デフォルトの名無しさん
NGNG画像サムネイル表示機能付きエクスプローラ。
0205デフォルトの名無しさん
NGNGShellExecute一発でできるよw
0206199
NGNGたくさんのレスありがとう。
やる気が出たよ
0207デフォルトの名無しさん
NGNGお礼遅くなり申し訳ありません。
それではEditに書き込んでいく場合は、下の方のListBoxをEditでループさせていく、ということでしょうか。
本当にありがとうございます。
0208デフォルトの名無しさん
NGNGListBoxをEditでループさせていく
↓
Memo.LinesでなくEditに置き換える
0209デフォルトの名無しさん
NGNGそうだね。Edit1 〜 Edit9 だとすると
for i := 1 to 9 do
TEdit(FindComponent('Edit'+IntToStr(i))).Text := IntToStr(num[i]);
のように。
0210デフォルトの名無しさん
NGNG0211デフォルトの名無しさん
NGNG確定時になぜに as ?
0212デフォルトの名無しさん
NGNG0213デフォルトの名無しさん
NGNG素のキャストをするのはisでチェックしたものだけにしといた方がいい。
プログラミングってそういうものだよ。
0214デフォルトの名無しさん
NGNG0215デフォルトの名無しさん
NGNGこれ読めないの?
0216デフォルトの名無しさん
NGNGプログラミングってそういうものだよ。
0217デフォルトの名無しさん
NGNGnilはasでも検出できない。
>>215
そういう別の場所で決められたルールには依存したくないってこと。
begin〜end内で完結した正しい記述ができればそうしたい。
パフォーマンスが問題にならないところで安全なコードが書けるなら安全に書く。
という習慣づけをしてるってだけ。強要はしないけどね。
0218デフォルトの名無しさん
NGNG0219デフォルトの名無しさん
NGNG>別の場所で決められたルールには依存したくないってこと
なら、FindComponent は、はなから使えないじゃん
0220デフォルトの名無しさん
NGNGしていることは明白だろう
0221デフォルトの名無しさん
NGNGFindComponentの話はしてないよ・・・
is/asの使い分けの基準のことしか言ってないよ。
0222デフォルトの名無しさん
NGNG0223デフォルトの名無しさん
NGNG0224221
NGNGis/asじゃなくてキャストとasの使い分けだった。
>>222
210は自分じゃないよ。それ以降が自分が書いたレス。
ま、主張は同じだけど。
0225デフォルトの名無しさん
NGNG0226デフォルトの名無しさん
NGNG0227デフォルトの名無しさん
NGNG違う。もっと一般的な理由。
一般に外から渡されたTObjectなオブジェクトの参照はキャストすべきでない。
asを使うかisでチェックしてからキャストすべき。
理由はもし想定外のオブジェクトが渡されたときデバッグが困難になるから。
ただし、動作速度が問題になるようなケースではこのルールは適用しないことも考慮すべき。
補足すると>>209のケースに限定すればはっきりいってどうでもいいよ。
どうしてと聞いたので理由を述べただけだし。
ただ自分は常にasを書くね。>>217でも言ったとおり
どっちでもいいなら安全なコードを書きたいし
外部の条件を一々考慮せずになるべく統一的に書きたい心理があるから。
以上。もう寝る。
0228デフォルトの名無しさん
NGNG>一般に外から渡されたTObjectなオブジェクトの参照はキャストすべきでない。
はい、もちろんこれは同意します。
>補足すると>>209のケースに限定すればはっきりいってどうでもいいよ。
そうですね、FindComponent は「想定外のオブジェクトが渡されたとき」ってないですよね。
だから、
>確定時になぜに as ?
と訊いたのです。その回答が
>Edit1ってLabelがあったらクラッシュするから。
というものだったので、それは納得できないと。どっちでもいいのではなく、as が
この場合は冗長なのだと。
> 外部の条件を一々考慮せずに
一々考慮するべきだと思うよ。
>プログラミングってそういうものです。
0229デフォルトの名無しさん
NGNG一般論に適合しないケースに一般論を適用しようとしたら無理があるだろ
0230デフォルトの名無しさん
NGNG>一々考慮するべきだと思うよ。
まぁ、ベーシックは全てグローバル変数だから、
いちいち考慮する必要がありますけどね。
0231デフォルトの名無しさん
NGNG冗長性というのは、is の後に as でキャストする事では?
0232208
NGNGありがとうございました。
>>210以降
私がいただいたアドバイスの派生ですよね。
難しすぎてわからず、何がなにやらというところなのですが(汗)、ありがとうございました。
0233デフォルトの名無しさん
NGNG>確定時になぜに as ?
>この場合は冗長なのだと。
それは問題があまりにも単純だからだよ。
イベントハンドラが数十個あってそのうちのいくつか(どれかはコーディングによって刻々と変化していく)
にはSenderに複数(場合によっては同一オブジェクトだったり異なるオブジェクトだったり)
渡されるような状況で、どのSenderにどのオブジェクトが渡されるか
ソースコード的にははっきり決まっているけどプログラマがきっちり把握するのが怪しくなるような
ケースであってもasが無駄だと思う?
0234デフォルトの名無しさん
NGNG>>233へのレスはやっぱいらないや。
一つ聞きたいんだけどバグがまったくない状態でasが失敗するようなコーディングってする?
つまりasは純粋にバグ検出のためにだけ使っているかどうか。
それだけ聞いておしまいにしたい。
0235デフォルトの名無しさん
NGNG> バグがまったくない状態でasが失敗するようなコーディングってする?
バグが無くて、as が失敗するようなコードをどうやって書くのかな。
0236デフォルトの名無しさん
NGNG>>209 の場合は >>233 も言うように単純すぎて as 使う意味がないから違う。
0237デフォルトの名無しさん
NGNG>冗長性というのは、is の後に as でキャストする事では?
is のあとに as で動的型チェックするのは冗長であると確信できるからですね?
わたしは Edit1 という名前のコンポは TEdit であると確信できるようなプログ
ラミングをすべきだと思います。
0238デフォルトの名無しさん
NGNG0239デフォルトの名無しさん
NGNG多態性がつかえなくなるので、TObject.ClassName ではだめです。
0240デフォルトの名無しさん
NGNG○ >成功するようにしなければ
0241デフォルトの名無しさん
NGNGエディタでソースかいてるときの
最後のend.は何ですか?
なんでここだけend;じゃないの?
0242デフォルトの名無しさん
NGNGend. → プログラムの終わり
0243デフォルトの名無しさん
NGNG0244デフォルトの名無しさん
NGNG・すべてのソースファイルと同じように,プロジェクトファイルはピリオドで終わります。
・ユニットは end とピリオドで終わらなければなりません。
・ブロック内の複数の文およびユニットの初期化部と終了処理部の複数の文を区切るには,セミコロンを使用します。
0245デフォルトの名無しさん
NGNGこれは違う。文の区切り。だから次に区切るべき文がない場合はなくてもよい。
end; の直前の文の末尾とか
0246デフォルトの名無しさん
NGNGend. → プロジェクトまたはユニットの終わり
でした。失礼しました。
0247sorry
NGNGend. → プロジェクトまたはユニットの終わり
0248デフォルトの名無しさん
NGNG0249デフォルトの名無しさん
NGNGas のみの場合は軽いチェックにしか使えないな。
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
私は型チェックもするし、紛らわしい名前も付けないように努力してますよ。
0250デフォルトの名無しさん
NGNG>私は型チェックもするし、紛らわしい名前も付けないように努力してますよ。
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() の場合とは明らかに違います。
0251デフォルトの名無しさん
NGNGコンパイル時チェックができないのであれば、実行時チェックをしましょう。
0252デフォルトの名無しさん
NGNG玉を取られて負けた、という笑い話があります。格言も適用できるかどうか
頭を使って考える必要がありますね。
■ このスレッドは過去ログ倉庫に格納されています