トップページ⇒tech
988コメント310KB

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

レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさんNGNG
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが、
お礼はDelphiの布教と初心者の救済をお願いします。

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

<その他>
ボーランド
http://www.borland.co.jp/
DelWiki
http://onigiri.s3.xrea.com:8080/delphi/
0002デフォルトの名無しさんNGNG
<過去ログ>
16 http://pc5.2ch.net/test/read.cgi/tech/1089779142/
15 http://pc5.2ch.net/test/read.cgi/tech/1087823906/
14 http://pc5.2ch.net/test/read.cgi/tech/1085239007/
13 http://pc5.2ch.net/test/read.cgi/tech/1081003641/
12 http://pc5.2ch.net/test/read.cgi/tech/1076610073/
11 http://pc2.2ch.net/test/read.cgi/tech/1074523803/
10 http://pc2.2ch.net/test/read.cgi/tech/1074523803/
09 http://pc2.2ch.net/test/read.cgi/tech/1071294733/
08 http://pc2.2ch.net/tech/kako/1068/10682/1068201045.html
07 http://pc2.2ch.net/tech/kako/1065/10651/1065195699.html
06 http://pc2.2ch.net/tech/kako/1063/10632/1063202727.html
05 http://pc2.2ch.net/tech/kako/1061/10610/1061090908.html
04 http://pc2.2ch.net/tech/kako/1058/10588/1058834815.html
03 http://pc2.2ch.net/tech/kako/1055/10559/1055986736.html
02 http://pc2.2ch.net/tech/kako/1053/10537/1053757982.html
01 http://pc2.2ch.net/tech/kako/1051/10518/1051882835.html
0003デフォルトの名無しさんNGNG
TIdFTPを使っています
ダウンロードを途中で止めたい場合、abortを使っているのですが例外がでてしまいます。
abortをtry〜exceptで囲っても捕まえることができません。
この例外を出ないようにしたいのですがどうすればよいでしょうか?
0004デフォルトの名無しさんNGNG
yahooで「TIdFTP abort」で検索すると、threadの中でAbortするな
みたいな記事がでてくるけどどう?

IndyのサンプルプログラムにTIdFTPのデモってないのかな?
0005デフォルトの名無しさんNGNG
>>4
すばやいレスありがとうございます。Yahooは未チェックで検索結果がGoogleとここまで違うとは収穫でした。

Indyのサンプルプログラムでも同じ例外はでます。
ほかにもTIdFTPを使ったサンプルをいくつかみつけましたがどれも同様でした。
検索して出てきた記事を何度か読み直してみましたがおそらく今回の件とは関係ないようです。
0006デフォルトの名無しさんNGNG
デバッグ環境でやってて例外をキャッチしないとかじゃないよね。
デバッグオプションで例外のチェックをはずすか、.exeから実行
すればちゃんとキャッチするとかだったら、既出度120%で今にも
波動砲が発射されそうな勢いなのだが。
0007デフォルトの名無しさんNGNG
>>6
すいません、わからない事もあって説明がおかしいかもしれません。
追加でわかった事も含めてもう一度まとめました。

abortを実行すると切断を知らせる例外が発生するのですが
それはIdFTP1.abort;をtryで囲んでも捕まえられません。
Button1Clickでabortを実行するとButton1Clickを抜けてから
例外が発生するようです。(TIdAntiFreezeを利用しています。)
また、TIdFTPのOnWorkイベントでも同様でした。
なのでどこをtryで囲めばいいのかわかりません。

メッセージボックスに表示されるのは「Disconnected.」です。(IDEではなくexeをダブルクリックして実行した場合)
おそらくIdIOHandlerSocket.pasの
raise EIdClosedSocket.Create(RSStatusDisconnected);
だと思うのですがコメントアウトすると
'access violation at 0x00406609: write of address 0x00030ec0'
とでます。

言語固有の例外にEIdSilentExceptionは追加しています。
0008デフォルトの名無しさんNGNG
実験してないのでわかんないけど、Abortすると
KillDataChannelも同時に実行されてソケットハンドルが閉じられるそうだけど、
Abort後にそれに対して何か操作してるところとかない?
0009デフォルトの名無しさんNGNG
TDBGridのColumnsの話なんですけど
今、表示されてる(VisibleがTrueになってる)アイテムの数を知るプロパティみたいなものってないですか?
FieldCountだと非表示のやつまでカウントされるんで・・
0010デフォルトの名無しさんNGNG
>>8
Abortの後は何もしないようにしています。
Getメソッドの中で何かしてるのかと思い調べていきましたがよくわかりませんでした。
(Getメソッドの中を弄らないといけないならちょっと手に負えない気がします)

Getメソッドは受信したファイルを書き込むファイル名、もしくはTStreamを指定できるのですが
ファイル名のほうを指定し
procedure TIdTCPConnection.RaiseExceptionForLastCmdResult;
begin
raise EIdProtocolReplyError.CreateError(LastCmdResult.NumericCode, LastCmdResult.Text.Text);
end;
のraiseをコメントアウトすれば例外はでなくなりました。
とりあえずの解決です。

ただ、TStream(TFileStreamを使っていますが)を使いたいのでもう少し調べてみます。
長い時間ありがとうございました。

ちょっと時間をかけ過ぎたようで自前実装のほうが速かったような気もします orz
0011デフォルトの名無しさんNGNG
TMainMemuに関しての質問です。
メニュー操作中は処理を一時無効にして、メニューが実行された場合やメニューから
フォーカスが外れた場合に処理を再開しようとしています。
TMainMemuにはFocusedメソッドも無く、ActiveControlでは判断できませんでした。
メニューが操作中か、メニューにフォーカスがあるかわかる方法は無いでしょうか?
0012デフォルトの名無しさんNGNG
>>11
フォーム直下に表示されるメニューに関しては、操作の開始と終了時に
フォームに WM_ENTERMENULOOP と WM_EXITMENULOOP がそれぞれ
送られてくるようです。
それ以外にもメニューの状態変化は、親ウィンドウにメッセージとして
送られてきますので、適当なものを WinSight で調べてみてください。
001311NGNG
>>12
素早い回答ありがとうございました。
WM_ENTERMENULOOPとWM_EXITMENULOOPを調べて試してみます。
0014デフォルトの名無しさんNGNG
finally〜end; で、例外でないときのみ実行したいコードがある場合、
どうすれば良いのでしょうか?
ExceptObject は例外があってもなくても nil なので使えませんでした。

 try
  raise Exception.Create('Hoge');
 finally
  // if not 例外 then 処理A
  if ExceptObject = nil then
   ShowMessage('finally: ExceptObject = nil');
 end;
0015デフォルトの名無しさんNGNG
finally〜end; でないといかんの?

try
finally
end;
// ここに書いたコードは try〜 finally で例外発生時には実行されない

これでいいと思うが
001614NGNG
>>15
例外発生時には同じ関数内で別の処理をしたいのですよ。
こんな感じです。

procedure EndUpdate;
begin
 Dec(UpdateCount);
 if UpdateCount = 0 then
  if not 例外 then 処理A
end;

 BeginUpdate;
 try
  raise Exception.Create('Hoge');
 finally
  EndUpdate;
 end;

finally直前に UpdateCount = 1 の時に処理Aをするはカッコ悪いので駄目です。
  ...
  if UpdateCount = 1 then 処理A
 finally
  Dec(UpdateCount);
 end;

これもカッコ悪いので駄目。
 except
  EndUpdate;
  raise;
 end;
 EndUpdate;
0017デフォルトの名無しさんNGNG
例外発生にかかわらず、同じ関数内でしたい処理もある。
と言うべきでした。
0018デフォルトの名無しさんNGNG
そもそもfinally部が
「例外が起こっても絶対に実行する処理」なわけだから
そこで一部だけ処理したいと発想するのがおかしい
0019デフォルトの名無しさんNGNG
日系ソフトウェアを読みながらメールクライアントを
作っているのですが
Dateヘッダーの形式
Sat, 14 Apr 2004 12:08:43
を作るにはどうしたらよいでしょうか?
0020デフォルトの名無しさんNGNG
>C言語の__FILE__, __LINE__に相当する機能は? ↑
>
>基本的にありませんが、Assertで失敗することで取得できます。
>ただし字面の見栄えが悪いのと速度が遅いのが難点です。
>
>try Assert(False) except on E:EAssertionFailed do ShowMessage(e.Message); end;

これって、AssertErrorProc 使ったほうがいいみたいだね

0021デフォルトの名無しさんNGNG
>これって、AssertErrorProc 使ったほうがいいみたいだね
影響が大きすぎるだろ。
備わっていない機能を無理に使うよりモジュール名メソッド名を
手打ちで出力しておいたほうがよっぽどまし。
0022デフォルトの名無しさんNGNG
備わっていない機能って何?
0023デフォルトの名無しさんNGNG
>C言語の__FILE__, __LINE__に相当する機能は? ↑
0024デフォルトの名無しさんNGNG
いや、そういう意味じゃなくて、
tryとかで無理矢理はさむよりAssertErrorProcを使ったほうがいいよねって意味で言ったの
0025デフォルトの名無しさんNGNG
AssertErrorProc自体無理やりだろって意味で言ったの
0026デフォルトの名無しさんNGNG
ごめん。意味わかんない。
0027デフォルトの名無しさんNGNG
>>26
言いたいことは「影響が大きすぎるだろ。」って事だけだよ。
無理やりAssertErrorProcを使って取得するのは現実的ではない。
実際に試してみたか?
他の箇所でもAssertを大量にばら撒いているようなプロジェクトでさ。
0028デフォルトの名無しさんNGNG
messageで振り分ければ簡単
ファイル名や行番号取得目的でなかったらデフォルトの呼べばいいし
0029デフォルトの名無しさんNGNG
割り込み。
AssertErrorProcを置き換える時に元のアドレスも保存しておいて

ShowOnce := True; //グローバル変数。一回だけ情報表示に使う意味
Assert(False); //AssertErrorProcでShowOnceを見て呼び分ける。ShowOnceをFalseに戻す。

なんてのを思いついた。
0030デフォルトの名無しさんNGNG
>>28
だからそれを実際にやっているのかと・・・
万難を排して実現するようなもんじゃないだろ。
ってのは俺の価値観か。邪魔したね。
0031デフォルトの名無しさんNGNG
影響が大きすぎるというなら、そもそもe.Messageにファイル名と行番号が入っているとは限らなんな
0032デフォルトの名無しさんNGNG
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが、
お礼はDelphiの布教と初心者の救済をお願いします。
0033ななしへたぐらま ◆XcB18Bks.Y NGNG
>>14
字面通り解釈するならこんなのでどうでしょうか.

var ExceptionRaised: boolean; // 『例外が生成された』フラグ

procedure BeginUpdate;
begin

 処理
 ExceptionRaised := False; // 例外はまだ生成されていない 
end;

procedure EndUpdate;
begin
 Dec(UpdateCount);
end;

BeginUpdate;
try
 try
  処理
 except
  ExceptionRaised := True; // 例外が生成されたことを記録
  例外処理
 end;
finally
 EndUpdate;
end;

0034ななしへたぐらま ◆XcB18Bks.Y NGNG
ごめんなさい.間違ってポストしてしまいました.手続き差し替えです.

procedure BeginUpdate;
begin
 if UpdateCount = 1 then
  ExceptionRaised := False; // 例外はまだ生成されていない 
 Inc(UpdateCount);
 処理
end;

procedure EndUpdate;
begin
 Dec(UpdateCount);
 if UpdateCount = 1 then
  if ExceptionRaised then
   例外発生時の処理
  else
   処理A;
end;
#ところでUpdateCountのデフォルト値って1でよいのですよね.
0035デフォルトの名無しさんNGNG
フラグのExceptionRaisedがグローバル変数なのは
ちょっとまずいんじゃないの?
0036デフォルトの名無しさんNGNG
グローバル変数じゃなくってプロパティだろ。
どっちにしてもわけわかな副作用を持たせるより
素直にメソッド分けるなりして単純愚直にやるのが定石。
BeginUpdate
try
 ...
 Succeed or Finish or Close;
finally
 EndUpdate;
end;
except内で必ず何か記述させるより正常なシーケンスで何か呼ばせる方が
呼び忘れたときの検出が容易で被害が少ないと思うし。
003711NGNG
すみません、追加の質問です。
TMainMemuの操作中の判断はWM_ENTERMENULOOPとWM_EXITMENULOOPで無事判断する
事ができました。
しかし、TPopupMenuのメッセージはうまく取得できませんでした。
また、Personalしか持っていないので「WinSight」の代わりに「Spy++」を
使って送られてくるメッセージを見てみたんですが、メニュー関連と思われる
ものを見つける事が出来ませんでした。
ポップアップメニューを操作しているかどうかの判断は、どうすれば出来ます
でしょうか?
003811NGNG
一応、テストに使ったロジックになります。
 protected
  procedure WndProc(var Msg: TMessage); override;

procedure TForm1.WndProc(var Msg: TMessage);
begin
 case Msg.Msg of
  WM_ENTERMENULOOP:Memo1.Lines.Add('WM_ENTERMENULOOP');
  WM_EXITMENULOOP:Memo1.Lines.Add('WM_EXITMENULOOP');
  //WM_COMMAND:Memo1.Lines.Add('WM_COMMAND');
  WM_CONTEXTMENU:Memo1.Lines.Add('WM_CONTEXTMENU');
  WM_INITMENU:Memo1.Lines.Add('WM_INITMENU');
  WM_INITMENUPOPUP:Memo1.Lines.Add('WM_INITMENUPOPUP');
  WM_NEXTMENU:Memo1.Lines.Add('WM_NEXTMENU');
  WM_ENTERIDLE:Memo1.Lines.Add('WM_ENTERIDLE');
 end;
 inherited WndProc(Msg);
end;

procedure TForm1.FormClick(Sender: TObject);
begin
 PopupMenu1.Popup(Mouse.CursorPos.X, Mouse.CursorPos.Y);
end;
0039デフォルトの名無しさんNGNG
>>38
モーダルなんだから

procedure TForm1.FormClick(Sender: TObject);
begin
Memo1.Lines.Add('PopUpEnter');
PopupMenu1.Popup(Mouse.CursorPos.X, Mouse.CursorPos.Y);
Memo1.Lines.Add('PopUpOut');
end;

で十分。ただし、AutoPopup は false にして。
004011NGNG
>>39
あ、すみません。テストロジックの例がまずかったですね。
1つの場所だけではなく、複数ある内のどれかがポップアップしているのかを
判断したいのです。

procedure TForm1.WndProc(var Msg: TMessage);
begin
 case Msg.Msg of
  WM_ENTERMENULOOP:Timer1.Enabled := False;
  WM_EXITMENULOOP: Timer1.Enabled := True;
  //どこかのポップアップメニューを操作中:Timer1.Enabled := False;
  //どこかのポップアップメニューの操作を抜けた: Timer1.Enabled := True;
 end;
 inherited WndProc(Msg);
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
 //処理を行う。ただしメニュー操作中は無効。
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 PopupMenu1.Popup(Mouse.CursorPos.X, Mouse.CursorPos.Y);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
 PopupMenu2.Popup(Mouse.CursorPos.X, Mouse.CursorPos.Y);
end;
//その他、色々な場所で何種類かのポップアップメニューを表示
0041デフォルトの名無しさんNGNG
ToolHelp関数を使って他アプリケーションのヒープサイズを測っています。
今のところHeap32First+Heap32Nextを繰り返し回して合計を返すようにしているのですが、この部分が激烈に遅いのです。

例えばexplorer.exeのヒープサイズを測ろうとすると30秒近く待たされるのです。

var
h: THandle;
pe: TProcessEntry32;
hl: THeapList32;
he: THeapEntry32;
HeapSize: DWord;
st: Integer;
begin
h := CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, 0 );
if h = INVALID_HANDLE_VALUE then
begin
Exit;
end;

pe.dwSize := SizeOf(TProcessEntry32);
if Process32First( h, pe ) then
repeat
if pe.szExeFile='explorer.exe' then
Break;
until not Process32Next( h, pe );
CloseHandle( h );
0042デフォルトの名無しさんNGNG
h := CreateToolhelp32Snapshot( TH32CS_SNAPALL, pe.th32ProcessID );
if h = INVALID_HANDLE_VALUE then begin
Exit;
end;

//ヒープの列挙
st:=GetTickCount;
HeapSize:=0;
hl.dwSize:=SizeOf(THeapList32);
if Heap32ListFirst( h, hl ) then begin
repeat
he.dwSize:=SizeOf(THeapEntry32);
if Heap32First( he, hl.th32ProcessID, hl.th32HeapID ) then begin
repeat
if he.dwFlags and LF32_FREE = 0 then
Inc(HeapSize,he.dwBlockSize);
until not Heap32Next( he );
end;
until not Heap32ListNext( h, hl );
end;
MessageBox(Handle,
PChar(Format('Time: %d'#13+
'Heap Use: %d',
[GetTickCount-st, HeapSize]))
,'',0);

CloseHandle( h );
end;

実行環境は Win2k+D5+P3 850MHz です。
タスクマネージャで監視していると、Heap32Nextのループでexplorer.exeのプロセス占有が上がっていました。
なんとか速度を改善する方法、またはヒープサイズの計測で別な方法があればご教授願います。
0043デフォルトの名無しさんNGNG
Win32APIスレで聞いたら
0044デフォルトの名無しさんNGNG
Delphiって今後尻すぼみってほんとですか?
0045デフォルトの名無しさんNGNG
ほんとです。
0046デフォルトの名無しさんNGNG
>>45
なぜに?
0047デフォルトの名無しさんNGNG
ま、拡大していく要素なんか皆無だし、今後尻すぼみって言うより、すでに尻すぼみなわけだし
0048デフォルトの名無しさんNGNG
>複数ある内のどれかがポップアップしているのかを判断したいのです。

だって、手動でポップアップメニューを表示してるんだから、その前後でどこの
メニューが開こうとしているか、閉じようとしているかはコードでいかようにも
知らせることができるだろうさ
0049デフォルトの名無しさんNGNG
例えば wparam が 0 で開く、1 で閉じる。lparam はメニューの番号とかにして

procedure TForm1.Button1Click(Sender: TObject);
begin
PostMessage(Handle,WM_APP,0,1); 
PopupMenu1.Popup(Mouse.CursorPos.X, Mouse.CursorPos.Y);
PostMessage(Handle,WM_APP,1,1);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
PostMessage(Handle,WM_APP,0,2);
 PopupMenu2.Popup(Mouse.CursorPos.X, Mouse.CursorPos.Y);
PostMessage(Handle,WM_APP,1,2);
end;
0050デフォルトの名無しさんNGNG
>>33-35
UpdateCountのデフォルトは0ですよ、当然。
Unitのプライベートな変数を使うのは構わないのですけど、
try〜exceptブロックが増えるので駄目です。
BeginUpdate〜EndUpdateのコンビは今でも4回使われていて、
将来も増えるかもしれないので、なるべくシンプルにしたいのです。

>>36 の Succeed or Finish or Close; ではまだ UpdateCount > 0 なのですよね。
やはり、 UpdateCount = 0 の時に処理をしたい。
と言うわけで、これが一番マシかな。

 try
  ...
 finally
  EndUpdate;
 end;
 Succeed or Finish or Close;
0051デフォルトの名無しさんNGNG
Del房ってネガティブだね
0052デフォルトの名無しさんNGNG
いきなり発売中止されたVBより何倍もまし
0053デフォルトの名無しさんNGNG
>>50
> UpdateCountのデフォルトは0ですよ、当然。
なんで当然なの?

> Unitのプライベートな変数を使うのは構わないのですけど、
> try〜exceptブロックが増えるので駄目です。
そこまで言いきるなら、try〜exceptは一切使わない。これ最強。


ひょっとして、また質問のふりをした釣りなのか?
005411NGNG
>>48-49
えーと、情報が小出しみたいになってすみません。

「その他、色々な場所で何種類かのポップアップメニューを表示」は
下のようなPopupMenuプロパティでのポップアップも含めてになります。
Panel1.PopupMenu := PopupMenu3;
Panel2.PopupMenu := PopupMenu4;
  ・
  ・
  ・
あとポップアップメニューの個数も、ポップアップするタイミングも、後から
追加していく事も多いので、出来れば設定を1箇所にまとめたいもので。

あと、>>40の意味がわかりにくかったですね。
基本的にやりたい事は、>>11のTPopupMenu版になります。
「複数ある内のどれかがポップアップしているのかを判断したい」は
「どのメニューがポップアップしているか」ではなくて、
「操作しているアクティブなものがポップアップメニューか(を判断し
タイマーイベントを処理するか判断する)」
あるいは「複数あるポップアップメニューの操作開始・操作終了を
一箇所で拾いたい(操作開始ならタイマー無効、操作終了なら
タイマー開始)」になります。
0055デフォルトの名無しさんNGNG
>>53
VCLソース読んだ事ある?


0056デフォルトの名無しさんNGNG
>>53
http://pc5.2ch.net/test/read.cgi/tech/1062422335/210-224
214
220
222
と同じ人物?

新手のVB荒らし?
0057デフォルトの名無しさんNGNG
と言うか、Halbowだろ。
0058デフォルトの名無しさんNGNG
ずいぶんいきなりだな。
0059デフォルトの名無しさんNGNG
軽量化のためにKOLを入れてみたのですがKOL関連のものを使うと

ファイル'ExptIntf.dcu'が見つかりません

と出ます。ExptIntf.dcuで検索してもロシア語のページが数件出てくるだけです。
どこかでExptIntf.dcuはDL出来るものなのですか?
0060デフォルトの名無しさんNGNG
ExptIntfはプロ版以上のみ。
0061デフォルトの名無しさんNGNG
>>54
>「操作しているアクティブなものがポップアップメニューか(を判断しタイマーイベントを処理するか判断する)」

うーん、いろんなところでポップアップされる可能性があるなら、メッセージを一つの
プロシージャで捕まえるのは難しそう。

TPopupMenu.PopUp() は仮想メソッドなので、これを override して

procedure TMyPopupMenu.Popup(X, Y: Integer);
begin
PostMessage(Application.Handle,WM_APP+55,0,0);
inherited;
PostMessage(Application.Handle,WM_APP+55,1,0);
end;

のようにした派生コンポーネントをつくって、Application.OnMessage で受け取ればいい
じゃないかな。試してないですけど。
0062デフォルトの名無しさんNGNG
61は駄目そう。表示中は Application.OnMessage 呼ばれない。Windows の方の
メッセージループを実行中なんだな。ごめん。
0063デフォルトの名無しさんNGNG
TPopupMenu.PopUp() は仮想メソッドなので、これを override して
OnInitPopUp と OnClosePopup イベントを付けた派生コンポをつくるのが簡単かも
0064デフォルトの名無しさんNGNG
>>54
TPopupList型のPopupListという、グローバル変数がある。

↓こんなクラスを作って、
type
 TMyPopupList = class(TPopupList)
 protected
  procedure WndProc(var m: TMessage); override;
 end;

プロジェクトソースを書き換えて、
 Application.Initialize;
 PopupList.Free;
 PopupList := TMyPopupList.Create;
 Application.CreateForm(TForm1, Form1);

とすれば、TMyPopupList.WndProcで、TPopupMenuの
WM_ENTERMENULOOPやWM_EXITMENULOOPを拾えるもより。
0065デフォルトの名無しさんNGNG
同じようなことしてた。
http://www.delphipraxis.net/post210991.html
ここみたくInitializationでやればプロジェクトソースは書き換えなくて済むか。
0066デフォルトの名無しさんNGNG
var
Hook: HHOOK;

function CallWndRetProc(code:integer;wparam:WPARAM;lparam:LPARAM):LRESULT;stdcall;
var
pCWPR:PCWPRetStruct;
begin
if (code < 0) then begin
result := CallNextHookEx(Hook,code,wparam,lparam);
exit;
end;

if (Code = HC_ACTION) then begin
pCWPR := PCWPRetStruct(lParam);
case pCWPR^.message of
WM_ENTERMENULOOP:
if pCWPR^.hwnd = PopupList.Window then
Form1.Memo1.Lines.Add('PopupEnter')
else
Form1.Memo1.Lines.Add('MainEnter');
WM_EXITMENULOOP:
if pCWPR^.hwnd = PopupList.Window then
Form1.Memo1.Lines.Add('PopupExit')
else
Form1.Memo1.Lines.Add('MainExit');
end;
end;
0067デフォルトの名無しさんNGNG

result := CallNextHookEx(Hook,code,wparam,lparam);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Hook := SetWindowsHookEx(WH_CALLWNDPROCRET,CallWndRetProc,0,GetCurrentThreadID);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
UnHookWindowsHookEx(Hook);
end;

>>64
>>11 じゃないけど
すばらしい! TPopupMenu.PopUp() の中の最後の TrackPopupMenu() の中の
ウィンドウハンドルが PopupList.Window になってるんですね。ここで一括して
処理してるんだなー。なるほど。

ところで WM_ENTERMENULOOP や WM_EXITMENULOOP って SendMessage() なんで
すね。フックでも捕まりました。

0068デフォルトの名無しさんNGNG
長いループ処理で中でapplication.processMessages
をしているのに途中でフォームが閉じれないのはなぜでしょうか?
0069デフォルトの名無しさんNGNG
そのループを脱出できないからです
0070デフォルトの名無しさんNGNG
closeイベントでフラグ立ててそのループの中で
フラグを見るようにしました。
0071デフォルトの名無しさんNGNG
>>68
ループ内のどの辺で、どのくらいの時間を消費しているのか
測定してみて、定期的にApplication.ProcessMessagesを
呼び出すようにすればいいのでは?

ただ、Application.ProcessMessagesを使いすぎるとパフォーマンスが
落ちることがあるようなので、その辺はチューニングする必要ありかも。
0072デフォルトの名無しさんNGNG
DelphiってWebアプリがしょぼいのしか作れなくて駄目だ
0073デフォルトの名無しさんNGNG
>>72
それでは、お勧めの開発ツールは何ですか?
0074デフォルトの名無しさんNGNG
php
0075デフォルトの名無しさんNGNG
プログラムに関する質問じゃなくてもOKでしょうか?ダメならスルーしてください.

現在アニメーションのプログラムを製作しているのですが,知識が不足してきまして,
新しい参考書を買って勉強しようと考えています.
どの参考書が有効なのか自分だけでは判断付かなかったので,オススメの本がありましたら教えていただけませんか?

なお,今まで「Delphiゲームプログラミングのエッセンス(著:日高 徹)」という本を使って勉強していました.
ただこれは人から譲り受けたものでして,私はゲームを作っているわけではありません.
アニメーションと言いましても,シミュレーション結果をアニメーション表示する機能が付いている,というものです.
0076デフォルトの名無しさんNGNG
OpenGL
0077デフォルトの名無しさんNGNG
Charを、Integerに型キャストするにはどうすればいいんだ?
0078デフォルトの名無しさんNGNG
function Ord(C: Char): Integer;
0079デフォルトの名無しさんNGNG
>>72
IntraWebは?

あとPHPなら、Delphiと連携出来るみたい
http://users.chello.be/ws36637/php4delphi.html
0080デフォルトの名無しさんNGNG
適材適所
0081デフォルトの名無しさんNGNG
>>77
i:= byte(c);
008259NGNG
>>60
6personalを使っているのでそれが原因だったんですか・・・
他の方法を試してみます。ありがとうございます
0083デフォルトの名無しさんNGNG
>>81
なぜにByte・・・
Ordにしとけ
0084デフォルトの名無しさんNGNG
ずっと前にわざわざ機械語まで追ってくれた人が居たが
その人によるとOrd()とByte()の生成するコードはまったく同じらしい。
好みで使い分ければよろし
0085デフォルトの名無しさんNGNG
>>83
キャストでしょ?
008611NGNG
ポップアップメニューの件について、いろいろ調べていただいてありがとう
ごさいました。
PopupListなんてものがあるんですね。
コンポーネントを派生してなにかしないといけないのかと思っていましたが、
かなりスッキリしたコードになりそうです。ありがとうごさいました。
0087デフォルトの名無しさんNGNG
Extendedで扱えないような巨大な実数を処理するためのライブラリはありませんか?
0088デフォルトの名無しさんNGNG
C:\HOGE\ フォルダの中に、20040829.txt, 20040830.txt, 20040901.txt, 20040902.txt ・・・
みたいな感じで、日付をそのまま名前にしたテキストファイルがびっしり詰まっているとします。
日付は必ずしも連続していません。
この中からいちばん日付の新しいもの(ファイルプロパティのUPDATE日付じゃなく、ファイル名の日付)
を取得するうまい方法ってありますか。
0089デフォルトの名無しさんNGNG
>>88
ファイル名をすべて列挙して調べるしかない。
009088NGNG
>>89
やっぱり・・・_| ̄|○・・・そうですよね

何かこう、拳握りしめて全身震わせながら叫びたくなるような
カッコいい方法があるんじゃないかと夢見てたんですが
0091デフォルトの名無しさんNGNG
88さんはなかなかの面白人間ですね。
0092デフォルトの名無しさんNGNG
>>90
function FindNewestFile(const Path: String): TFileName;
 function FileNameToDate(const FileName: TFileName): TDate;
 var
  y, m, d: Integer;
 begin
  y := StrToInt(Copy(FileName, 1, 4));
  m := StrToInt(Copy(FileName, 5, 2));
  d := StrToInt(Copy(FileName, 7, 2));
  Result := EncodeDate(y, m, d);
 end;
var
 sr: TSearchRec;
 date, latest: TDate;
begin
 latest := 0;
 Result := EmptyStr;
 if FindFirst(Path, faAnyFile, sr) = 0 then
 begin
  repeat
   date := FileNameToDate(sr.Name);
   if latest < date then
   begin
    Result := sr.Name;
    latest := date;
   end;
  until FindNext(sr) <> 0;
  FindClose(sr);
 end;
end;

こんな感じかな?もっと効率のいい方法があったら教えてくれ。
0093デフォルトの名無しさんNGNG
そのフォルダには日付ファイル名しかないと仮定して・・

ファイル名のリストを作成してソートをかけて
一番下のファイル名を返したら?
0094デフォルトの名無しさんNGNG
Dir /ON の結果をリダイレクトで取得して
一番上のファイル名を取得するやり方はどうかな。
0095デフォルトの名無しさんNGNG
ファイル名のフォーマットがYYYYMMDDなら、
>>92の比較部分をCompareStrにするのが一番早い気がする。
MMDDYYYYとかになったら対応できんけど。
0096デフォルトの名無しさんNGNG
>>87
Cのなら探せばあるはず。 Delphiのは知らない。
009788NGNG
>>92
すげーです
Delphi初心者なのはいうまでもないとして、WHS(VBS)はちょこっとかじったことがあり、
あるフォルダ中のファイル名列挙ってのは以前似たようなことをやった経験があるので、
そのコードを見直しながら、まずは何とかDelphiに翻訳しようと格闘していたんですが、
疲れて一服している間に、コード有り難うございます(なんでこんなに短けーんだ)

if latest<date then
begin
Result:= sr.Name;
latest:= date;
end;

↑この手順がマジに震えるほどカッコいいです。


>>93
ええ、その方法は漠然と考えてました。
かなりレベルの低い形で、ですけど。
いまやってるアプリはDBも扱っているので、そこに適当な仮テーブルでっちあげて、
いっこずつファイル名とって次々にぶち込んでいく、で、ソートした結果セットの
一番下を・・・いや、バカっぽくてごめんなさい
009888つづきNGNG
入れ子状態の関数(?)ってのは初めて見るので、何となくなじめなくて分けて書いてみたんですが、
それを解読しているうちに、もしかしたら日付にこだわる必要もないのかなという気もしてきて、
取りあえず以下のような形に(変数なんかはVBS以来のなじみの形に直して使わせてもらいました)
procedure TForm1.Button1Click(Sender: TObject);
var
MySrc:TSearchRec;
MyInt:integer;
MyPrv:integer;
MyStr:string;
begin
MyPrv:= 0;
MyStr:='';
if FindFirst('C:\Hoge\*.txt',faAnyFile,MySrc) = 0 then
begin
repeat
MyInt:=StrToInt(copy(MySrc.Name,1,8));
if MyPrv<MyInt then
begin
MyStr:=MySrc.Name;
MyPrv:=MyInt;
end;
until FindNext(MySrc) <> 0;
FindClose(MySrc);
end;
ShowMessage(MyStr) ;
end;
0099デフォルトの名無しさんNGNG
ちょっと確認したいのですが、

データセットなどのIsEmptyと(Bof and Eof)って結果はまったく同じですよね?

自分の解釈では同じだと判断したのですが
先輩(もう居ない)のソースコードを見ると両方が入れ違いに使われてたりするので
なにか自分の知らない意味があるのかと気になっているのですが・・。
0100ANGNG
>>88 >>92
どっちが効率がいいかは、状況次第になるけど…。

私は、似たような処理の必要なアプリで、>92とは逆のアプローチでやってる。
>92にあわせて書いてみると……

function FindNewestFile2(const Path: String): TFileName;
 function DateToFileName(const Date: TDate): TFileName;
 begin
  Result := FormatDate('yyyymmdd', Date) + '.txt' ;
 end;
var
 date: TDate;
 nowfile: TFileName;
begin
 date := Now;
 repeat
  Result := DateToFileName( date );
  if FileExists(Path + Result) then Break;
  date := date - 1;
  Result := EmptyStr;
 until (Now - date) < 100;  // 最大検索数を設定。
end;

こんな感じ。(テストはしてないから、そのまま動くかどうかは不明)

ファイルのリストからではなくて、現在の日付から存在が予測されるファイル名を
決めうちでどんどん作って存在するか調べてみる。という方法。
0101ANGNG
>88 を見た感じ、なんらかのログファイルっぽい。
そういうファイルは、ほぼ毎日次々と製作される可能性が高いので…

最新のファイルは、現在からそう日を置かない物の可能性が高い。
同じ場所にかなり大量のファイルが存在する可能性が高い。

と判断。
そういう条件の場合においては、存在するファイルを全て調べる>92の方法よりは、
こっちのほうが、効率が良くなるんじゃないかな…? と思ってみた。

ただし、この方法の欠点は、前提となる条件が外れると、むちゃくちゃ効率悪くなることw
あと、最大検索数より古いものが最新だった場合、検知できないこと。
0102デフォルトの名無しさんNGNG
正規表現でフィルタかけてファイル名ソートするとかもあるけどDelphiには標準で正規表現が無いんだな。
そこで良くない方法かもしれないけどStrToIntが例外起こすかどうかでチェックする場合の例
function FindNewestFile3(const Path: String): TFileName;
  function Check(const FileName: TFileName): Boolean;
  begin
    Result:=True;
  try StrToInt(ChangeFileExt(FileName, '')); except Result:=False; end;
  end;
var
  Files: TStringList;
  F: TSearchRec;
begin
  Result:='';
  Files:=TStringList.Create;
  try
    if FindFirst(IncludeTrailingPathDelimiter(Path)+'*.txt', faAnyFile, F)=0 then
    begin
      repeat
        if Check(F.Name) then
          Files.Add(F.Name);
      until FindNext(F)<>0;
    FindClose(F);
    end;
    Files.Sort;
    Result:=Files[Files.Count-1]//何もないときは例外起きそう
  finally
    Files.Free;
  end;
end;
0103デフォルトの名無しさんNGNG
DelphiでBASICのMid代わりになるものってないのですか?
0104デフォルトの名無しさんNGNG
>>103
copy
0105デフォルトの名無しさんNGNG
>>104
見落としてました。
有り難うございます。
0106デフォルトの名無しさんNGNG
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが、
お礼はDelphiの布教と初心者の救済をお願いします。
010788NGNG
何かみなさんグニャグニャです。アタマやわらかすぎです。
特に>>100 のお手並みはもうガツンです。
初心者でそれを知らなかったから思いつかなかった、なんて言い訳は通らないぐらいガツンです。
FileExists('--') ぐらいは僕だって知ってました。でも脳味噌ソリッドな僕には思いつきませんでした。

日付の間隔についてはさほど神経質になる必要はありません。100日どころか10日もとっておけば余裕です。

以下でOKでした(変数は勝手な自己流に直してます)
procedure TForm1.Button3Click(Sender: TObject);
var
MyHiduke: TDate;
MyFileNM:string;
begin
MyHiduke:=Date;
repeat
MyFileNM:=FormatDateTime('yyyymmdd',MyHiduke) + '.txt';
if FileExists('C:\aaa\' + MyFileNM) then
begin
ShowMessage(MyFileNM);
exit
end;
MyHiduke:=MyHiduke - 1;
until (Date-MyHiduke) > 10;
end;

>>102 のやり方はちょっと解読に時間がかかりそうです
0108デフォルトの名無しさんNGNG
MessageBoxを表示したときに音が出ますが
あの音だけを鳴らしたい場合、どのようにすればよいでしょうか?
0109デフォルトの名無しさんNGNG
sndPlaySound('chime.wav', SND_ASYNC)
ポーン
0110デフォルトの名無しさんNGNG
MessageBeep(MB_ICONEXCLAMATION);
0111デフォルトの名無しさんNGNG
IEのキャッシュから特定のファイル(URLを指定)を
別のフォルダにコピーするにはどうしたらいいでしょうか?
WininetのFindFirstUrlCacheEntryやFindNextUrlCacheEntryを使えばいいのでしょうか?
0112デフォルトの名無しさんNGNG
Delphi関係ないし
0113デフォルトの名無しさんNGNG
>>109
>>110
ありがとうございます。>>110さんのほう、いただきました。
0114デフォルトの名無しさんNGNG
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが、
お礼はDelphiの布教と初心者の救済をお願いします。
0115デフォルトの名無しさんNGNG
{タスクトレイのアイコンを変える}
procedure TForm1.Button2Click(Sender: TObject);
begin
with NotifyIcon do
begin
hIcon := Icon.Handle;
end;
Shell_NotifyIcon(NIM_MODIFY,@NotifyIcon);
end;

ここのIcon.Handleのところですが
任意のアイコンを指定したいのですが
このIconはどこに読み込んでおけばいいのでしょうか?
0116デフォルトの名無しさんNGNG
外部のファイルとかリソースとか
0117デフォルトの名無しさんNGNG
>>116
そのリソースというのがやりたいです。
0118デフォルトの名無しさんNGNG
>>115
�@FormにImageコントロールを貼り付けて
 Handle := Image1.Picture.Icon.Handle;
 ・・・

�AもしくはTIconのインスタンスを自分で作成する
var
 MyIcon: TIcon;
begin
 MyIcon := TIcon.Create;
 MyIcon.LoadFromFile('hoge.ico');
 Handle := MyIcon.Handle;
 ・・・

�Bリソースから読み込む
 事前にイメージエディタでプロジェクトのリソースファイルにアイコンを追加しておく
 Handle := LoadIcon(HInstance, 'hugo');
 ・・・

�Cフォームのアイコンを流用する
 Handle := Self.Icon.Handle;
 ・・・

お好きなのをどうぞ
0119デフォルトの名無しさんNGNG
>>118
わお!勉強になります。
�@をいただきます。ありがとうございます。
0120Delフサギコ ◆A6VzDeLphI NGNG
    ∧,,∧  
   ミ,,゚Д゚彡
    ミ つ旦)~~
  〜と,,,~),,~)

コントロールがDisabledの時の
Fontの色は何がつかわれているのでしょうか?

clInactiveCaption/clInactiveCaptionText/clGrayText
のどれかだとは思うのですが。
0121デフォルトの名無しさんNGNG
>>119 TImageList がおすすめ
0122デフォルトの名無しさんNGNG
>>120
clGrayText

clInactiveCaptionはアクティブじゃないタイトルバーの背景色
clInactiveCaptionTextは同テキストの色
0123デフォルトの名無しさんNGNG
ちなみに影付き
0124デフォルトの名無しさんNGNG
影付きの場合はclBtnHighlightとclBtnShadow
0125デフォルトの名無しさんNGNG
Popupメニューのようなちょっと他のところをクリックしただけで消えるような
メッセージボックスを作りたいのですが何のイベントを拾えばいいのでしょう?
0126デフォルトの名無しさんNGNG
ShellExecuteで起動したアプリケーションをアクティブにしたいのですが
最小化した状態のアプリケーションからタイマーで起動すると
起動したアプリケーションが非アクティブで起動されてしまいます。
0127デフォルトの名無しさんNGNG
>>126
なるほど。そうだったのですか、ご忠告感謝します
0128ミ,,゚Д゚ミノ ◆A6VzDeLphI NGNG
>>122さん、ありがとう。

もうひとつ質問します。

StatusBarの右下にあるサイズ変更可能をしめす
三角形の[//.]こんなマークを
FormやPanelに描画するスマートなやり方は
ありますか?

.NETのWinFormでSizeGripStyle Showにしたら出るので
何かAPIで描画できるようなきがするのです。

0129デフォルトの名無しさんNGNG
>>127
そうなんです。どうにかなりませんか?
0130デフォルトの名無しさんNGNG
>>128
やったことないけどDrawFrameControlで出来るんじゃないかしら。
0131デフォルトの名無しさんNGNG
DrawFrameControl(Canvas.Handle, Rect, DFC_SCROLL, DFCS_SCROLLSIZEGRIP)

こんなんでパネルにSizeGripを表示してるコードが見つかった。
0132Delフサギコ ◆A6VzDeLphI NGNG
 ∫,,,,,,,,,∧,,∧  ありがとうございます。>>130-131さん
⊂,,,,,,,,,つ,,゚Д゚ミつ

Form上に貼り付けてみました。
object SizeGridImg: TImage
Anchors = [akRight, akBottom]
end

FormCreateイベントで
 SizeGridImg.Width := GetSystemMetrics(SM_CXVSCROLL);
 SizeGridImg.Height := GetSystemMetrics(SM_CXHSCROLL);
 SizeGridImg.SetBounds(
  Self.ClientWidth - GetSystemMetrics(SM_CXVSCROLL),
  Self.ClientHeight- GetSystemMetrics(SM_CXHSCROLL),
  GetSystemMetrics(SM_CXVSCROLL),
  GetSystemMetrics(SM_CXHSCROLL) );
 DrawFrameControl(SizeGridImg.Canvas.Handle, SizeGridImg.Canvas.ClipRect, DFC_SCROLL, DFCS_SCROLLSIZEGRIP);


このコントロールをMouseDownしているときに
リサイズ中なメッセージをFormに投げてあげたりするには
どうしたらいいんでしょうか…
0133デフォルトの名無しさんNGNG
錨使えば?
0134デフォルトの名無しさんNGNG
>>132
ReleaseCapture();
Perform(WM_SYSCOMMAND, SC_SIZE | 8, 0);
0135デフォルトの名無しさんNGNG
>>132
WM_NCHITTESTのメッセージハンドラでXPOS、YPOSがグリップ位置にあるかを判定して
Message.Result:=HTBOTTOMRIGHT;ってやるだけ。
0136Delフサギコ ◆A6VzDeLphI NGNG
 ∫,,,,,,,,,∧,,∧  
⊂,,,,,,,,,つ*゚Д゚ミつ
            おー、
        これでできた。
サンスコ。>>133-135のみなさん。

マジックナンバーの8ってのは
定義では喃喃でしょうね?

procedure TForm1.FormCreate(Sender: TObject);
begin
 Image1.Anchors := [akRight, akBottom];
 Image1.SetBounds(
  Self.ClientWidth - GetSystemMetrics(SM_CXVSCROLL),
  Self.ClientHeight- GetSystemMetrics(SM_CXHSCROLL),
  GetSystemMetrics(SM_CXVSCROLL),
  GetSystemMetrics(SM_CXHSCROLL) );
 DrawFrameControl(Image1.Canvas.Handle, Image1.Canvas.ClipRect, DFC_SCROLL, DFCS_SCROLLSIZEGRIP);
 Image1.Cursor := crSizeNWSE;
end;

procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
begin//
 if ssLeft in Shift then
 begin
  ReleaseCapture;
  SendMessage(Self.Handle, WM_SYSCOMMAND, SC_SIZE or 8, MakeLong(X, Y));
 end;
end;
0137デフォルトの名無しさんNGNG
俺もSC_MOVE or 2の2が気になる…
0138デフォルトの名無しさんNGNG
                               /  気  !
                           l      |
''''''''''‐-、,                        |   に  |
::::::::::::::::::::\                     |        |
:::::::::::::::::::::::::ヽ               _,,,,,,_ .|   す  |
:::::::::::::::::::::::::::::':,               ,.-''"::::::::::::`l        |
::::::::::::::::::::;ヘ::::;::i            /::::::::::::::::::::::::|   る   l
::::::::::::::::::::'、|ヽ!ヾ           /::::::::A:::;::::/!::ムli       |
:::::::::::::::::::、:'、              ,':::::::::ハ;ハ;l レ' '|ヽ  な  /
:::::::::::::::;:::| `!  ,.,.._         レi::;lV. ┃   ┃''"ム  /
::::::/l:::ハ:|,/  i ヽヘ,       '〈|         ソ'''''、
:::/ ,|/,,/    ',  l, ヽ.       l、   r一‐:、  /:::::::::::'、
/ | ''      \ 丶.ll''r、.,_   /::`':.、 ヽ--‐',.イ、::::::::::::::'、
:‐┴:、.       `i''y'l |: : : ``''ヽ‐''ヾil´`i';、''" /  >、:i、::::::',
    \       '-'、/ : : : : : : :`: : : lL,, l  /_ ,//: :\'、;::、
0139デフォルトの名無しさんNGNG
エクスプローラのプロパティとかで使われてる
編集できないけど選択範囲でコピーはできる部品って
Delphiではどのコンポーネントなんですか?
0140デフォルトの名無しさんNGNG
>>139
TEdit。ReadOnlyをtrueにする。
0141139NGNG
>>139
おぉ、ありがとうございます。
なるほど、プロパティを弄るのでしたか。
0142139NGNG
焦りすぎて間違えますた・・

>>140さんありがとうございます。
014377NGNG
亀だけど、�dクス!
0144デフォルトの名無しさんNGNG
PageControlのページ切り替えを出来なくする事は可能ですか?
EnabledをFalseにすると、ページ内のコンポーネントまで死んでしまうので他の方法があれば教えてください。
0145デフォルトの名無しさんNGNG
>>144
OnChangingイベントで、AllowChangeをfalseにする。
0146デフォルトの名無しさんNGNG
即レスありがとうございました。
0147デフォルトの名無しさんNGNG
IDiscMasterインターフェースを定義したいのですが
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/devio/base/idiscmaster.asp

IDiscMaster = interface (IUnknown)
['{520CCA63-51A5-11D3-9144-00104BA11C5E}']
function Open: HResult; stdcall;
function EnumDiscMasterFormats(ppEnum: Pointer): HResult; stdcall;
end;

function GetActiveDiscMasterFormatは、どのように定義すれば良いのでしょうか?
0148デフォルトの名無しさんNGNG
半径100pixelの円を書きたいのですが(Sin・Cosを使用して)

begin
Image1.Canvas.MoveTo(Trunc(Sin(0)*100)+100,Trunc(Cos(0)*100)+100);
for i:=0 to 360 do
begin
Image1.Canvas.LineTo(Trunc(Sin(i*Pi/180)*100)+100,Trunc(Cos(i*Pi/180)*100)+100);
end;
end;

1度づつ線を引く場合はこの計算で無駄な部分や間違っている部分はありますか?
0149デフォルトの名無しさんNGNG
>>148
何で Ellipse を使わないの?
TImage の Canvas は Picture.Bitmap.Canvas と同じで、ビットマップを
変更する都度 Picture.OnChange イベントが発生して全体が無効化される。
従って、表示中に複数に分けて描画を行うとパフォーマンスが低下する。
0150148NGNG
>>149
普段の円はEllipseを使うのですが
Sin・Cosを使用しての場合これでよいのか聞いたんです。
円を描くだけでなくて他に応用
するつもりでしたが、質問の仕方が悪かったんですね。

Trunc(Sin(i*Pi/180)*100)とTrunc(Cos(i*Pi/180)*100)
の計算はこれでよいのかって事です。
0151デフォルトの名無しさんNGNG
yattemitaraii
0152デフォルトの名無しさんNGNG
DegToRad
0153デフォルトの名無しさんNGNG
>>148
0から360まで回すのが無駄(特にsinとかcosとか重そうな演算を使っているときは)。
0から90まで回して、x軸、y軸の線対称と円の中心の点対称で描いてやれば速くなるかも。

それよりもTBitmapのオブジェクトを作ってメモリ内で描画して、
その後にImage1.picture.bitmapにAssignする方が速かったりして。


>Trunc(Sin(i*Pi/180)*100)とTrunc(Cos(i*Pi/180)*100)
>の計算はこれでよいのかって事です。

自分でやってみればすぐ分かるんでは?
0154デフォルトの名無しさんNGNG
>質問の仕方が悪かったんですね。
(Sin・Cosを使用して)って言ってんだから悪くないだろ。
ただの難癖代案厨だからスルーしとけ。
書き方は問題ないよ。
0155148NGNG
DegToRadを使えば式自体は小さくなりそうですね。
参考になりました。ありがとうごさいます。
0156デフォルトの名無しさんNGNG
くだスレではバグとりもやってくれるのか?
0157デフォルトの名無しさんNGNG
内容によると思う。
0158デフォルトの名無しさんNGNG
>>147
JEDIのAPI Conversion Library Graded Packs

type
IDiscMaster = interface (IUnknown)
['{520CCA62-51A5-11D3-9144-00104BA11C5E}']
function Open: HRESULT; stdcall;
function EnumDiscMasterFormats(out ppEnum: IEnumDiscMasterFormats): HRESULT; stdcall;
function GetActiveDiscMasterFormat(out lpiid: TGUID): HRESULT; stdcall;
function SetActiveDiscMasterFormat(const riid: TGUID; out ppUnk: IUnknown): HRESULT; stdcall;
function EnumDiscRecorders(out ppEnum: IEnumDiscRecorders): HRESULT; stdcall;
function GetActiveDiscRecorder(out ppRecorder: IDiscRecorder): HRESULT; stdcall;
function SetActiveDiscRecorder(pRecorder: IDiscRecorder): HRESULT; stdcall;
function ClearFormatContent: HRESULT; stdcall;
function ProgressAdvise(pEvents: IDiscMasterProgressEvents; out pvCookie: UINT): HRESULT; stdcall;
function ProgressUnadvise(vCookie: UINT): HRESULT; stdcall;
function RecordDisc(bSimulate, bEjectAfterBurn: BOOL): HRESULT; stdcall;
function Close: HRESULT; stdcall;
end;
0159デフォルトの名無しさんNGNG
>>158
Thx!!

CLSID・・・クラス GUID
IID・・・インターフェースGUIDなんですね_| ̄|○

ところでVC用のヘッダーって参考になりますか?
0160デフォルトの名無しさんNGNG
>内容によると思う。
148みたいに質問をよそおうといいのね
0161デフォルトの名無しさんNGNG
自信なさげにな
0162デフォルトの名無しさんNGNG
相変わらず勘違いレスして逆切れする初心者回答者が大活躍なスレですね。
0163デフォルトの名無しさんNGNG
VBでいうところの
for each hoge in forms
if hoge.name = "hoge" then
hoge.visible = true
end if
next

というのがやりたいのですがDelphiではどのように書きますか?
0164デフォルトの名無しさんNGNG
>>163
procedure hogehoge(AParent: TWinControl);
var
 I: Integer;
begin
 for I := 0 to AParent.ControlCount - 1 do
 begin
  if AParent.Controls[I].Name = "hoge" then
   AParent.Controls[I].Show;
  if AParent.Controls[I] is TWinControl then
   hogehoge(AParent.Controls[I]);
 end;
end;
0165デフォルトの名無しさんNGNG
>>164
スマソ、最後の再帰呼び出しの所はTWinControlにキャストして
0166デフォルトの名無しさんNGNG
>>164,165
即レス、感謝。
試してみます。
0167デフォルトの名無しさんNGNG
名前が Hoge なのが複数あるんか? なぜ FindComponent つかわんの
0168163NGNG
やりたいことはタスクトレイに入っているアプリケーションから
あるイベントでフォームをクリエイトしてそのときはまだ不可視で
タスクトレイから出したときにそのクリエイトしたフォームを可視化したいです。
そこでメインフォームがリストア時に不可視のウィンドウを検索して
すべて可視化したいといったところです。
0169164NGNG
>>168
ごめん、勘違いしてた
Form検索するならこうだね

var
 I: Integer;
begin
 for I := 0 to Screen.FormCount - 1 do
  if Screen.Forms[I].Name = "hoge" then
   Screen.Forms[I].Show;
end;
0170163NGNG
>>169
またまた即レス感謝。
VBとそっくりですね。試してみます。ありがとうございました。
0171163NGNG
思い通りど動作になりました。ありがとうございました。
0172デフォルトの名無しさんNGNG
うーむ、なんでフォームの名前が分かってて検索する必要があるんだろうか。
インスタンスを管理しないで、名前だけ付けてるとかかな。
0173デフォルトの名無しさんNGNG
同じ名前のフォームが複数あって、一挙に表示したい、ってことだろ
0174デフォルトの名無しさんNGNG
普通は TList かなにかを使って複数のインスタンスを管理する。フォームは
自分がなくなるとき、自分をリストから削除する、と。
0175デフォルトの名無しさんNGNG
代案厨乙
0176デフォルトの名無しさんNGNG
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが、
お礼はDelphiの布教と初心者の救済をお願いします。
0177163NGNG
>>174
>>169の場合だとどういった問題があるのでしょうか?
0178デフォルトの名無しさんNGNG
人生いろいろ普通もいろいろ
0179デフォルトの名無しさんNGNG
>>177
全然問題ないよ。>>174のは別に普通じゃないから気にスンナ
0180163NGNG
了解です!
0181デフォルトの名無しさんNGNG
なんでIsじゃなくてName使うの?
0182163NGNG
Isってどうやって使えばいいですか? 
if Screen.Forms[I] Is frmHoge then
   Screen.Forms[I].Show;

という感じですか?
0183デフォルトの名無しさんNGNG
それでいいよ。
is使うと後からフォームのクラス名変えるとかクラス名のタイポしたとき
ちゃんとコンパイルエラーが出てくれる。
0184163NGNG
nameだと'frmHoge'でもういっこ作ると'frmHoge_1'となりました。
Isを使ってみます。ありがとうございました。
0185163NGNG
Isでできました。ありがとうございました。
0186デフォルトの名無しさんNGNG
>>179
問題出てきたじゃないかよ
0187デフォルトの名無しさんNGNG
>>186
>>174, 177の流れで>>169は問題ないと言ったのだよ。新しくリスト作る必要ないだろ。
0188デフォルトの名無しさんNGNG
あの、DelphiでアプリにPython埋め込むことできますか?
インタープリタとして使いたいんですが・・・。
0189デフォルトの名無しさんNGNG
Delphi8を使ってるんですが、WindowsXP SP2をインストールして
アプリケーションのコンパイルをすると、Borland$が見つかりません
というエラーが出てコンパイルできなくなってしまいました。
何か対処の方法があるのでしょうか?
0190デフォルトの名無しさんNGNG
SP2はまだ入れたらだめだよ
0191デフォルトの名無しさんNGNG
Del8 再インストールで直ることもあるらしい、と Blog に書いてあった
0192デフォルトの名無しさんNGNG
修復してみたのですが、駄目でした。
SP2アンインストールします。
0193デフォルトの名無しさんNGNG
修復してみたのですが、駄目でした。
SP2アンインストールします。
0194デフォルトの名無しさんNGNG
MSのBorlandへの嫌がらせ?
0195デフォルトの名無しさんNGNG
VBのDoEventsのような強力なアイドル関数ないでしょうか?
0196デフォルトの名無しさんNGNG
質問。
procedure Thoge.New;
begin
self.Free;
self:=Thoge.create;
end;
ってできるんですか?
0197デフォルトの名無しさんNGNG
>>195
強力かどうか知らんが、Application.ProcessMessages
0198デフォルトの名無しさんNGNG
>>197
それがかなり貧弱で困ってます。
0199デフォルトの名無しさんNGNG
例えばですね
ポップアップメニューを表示しているときに
タイマーによって起動されたちょっと長い処理があると
その処理が終わるまでメニューの操作ができないのです。
0200デフォルトの名無しさんNGNG
>>196
0201デフォルトの名無しさんNGNG
>>198
長い処理はスレッド使ってください。
0202デフォルトの名無しさんNGNG
>>201
それしかないですか。
大部分がフォームのコンポーネントにアクセスするので
面倒なんですよね。
0203デフォルトの名無しさんNGNG
>>199
メニューの操作程度ならApplication.ProcessMessagesでも出来ます。
0204デフォルトの名無しさんNGNG
procedure TForm1.Timer1Timer(Sender: TObject);
begin
while true do
begin
application.ProcessMessages;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
PopupMenu1.Popup(0,0);
end;

で試してみたのですが、止まってしまいます。
どこらへんがまずいでしょう?
0205デフォルトの名無しさんNGNG
>>196
無理
0206デフォルトの名無しさんNGNG
>>204
ループはいる前にTimer1.Enabled:=False;を入れないと次々イベントが発生して死にます
0207デフォルトの名無しさんNGNG
>>206
すみません。サンプルが悪かったですね。
procedure TForm1.Timer1Timer(Sender: TObject);
begin
timer1.Enabled := false;
while true do
begin
application.ProcessMessages;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
timer1.Enabled := true;
PopupMenu1.Popup(0,0);
end;

この場合ポップアップメニューを表示してタイマー起動されると
ポップアップメニューが固まって選択不能になります。
0208デフォルトの名無しさんNGNG
ポップアップメニューのモーダルループのじゃましてるんだから当然
0209デフォルトの名無しさんNGNG
なるほど。
モードレスでポップアップできないでしょうか?
0210デフォルトの名無しさんNGNG
DoEventsの説明を見るとこの場合はDoEventsだろうと無理だと思うんだけど違うの?
0211デフォルトの名無しさんNGNG
あぅ。ほんとだ。
0212デフォルトの名無しさんNGNG
短い間隔でDoEventsやProcessMessages呼ばなければ
サブ処理(メニュー操作?)がもったりするのは当然ぽ。
0213デフォルトの名無しさんNGNG
呼び出し間隔関係なし
0214デフォルトの名無しさんNGNG
> モードレスでポップアップできないでしょうか?

Windows の仕組みですから無理
0215デフォルトの名無しさんNGNG
Delphiの限界。というやつですね
0216デフォルトの名無しさんNGNG
>>215
違います(^^;)
0217デフォルトの名無しさんNGNG
215の知能レベルが垣間見えました
0218デフォルトの名無しさんNGNG
215は俺じゃないよ
0219デフォルトの名無しさんNGNG
俺でもないよ
0220デフォルトの名無しさんNGNG
垣間というより全開で見えるけど。オレでもないよ
0221デフォルトの名無しさんNGNG
お前らじゃないとしたら俺はいったい誰なんだ?
0222デフォルトの名無しさんNGNG
俺を愛せばいい
0223デフォルトの名無しさんNGNG
少し寝たほういい
0224デフォルトの名無しさんNGNG
例えば、メモ帳で文字列が選択されたかどうかを監視したい時、
「TApplicationのOnIdele」、「TActionListのOnUpdate」どちらを使った方が良いですか?
それとも、別の何かこれを使うのが普通といったものがありますでしょうか
0225デフォルトの名無しさんNGNG
TActionManagerのTActionのOnUpdate。
エディットコントロールのコピーなら標準アクションのTEditCopyでも良い。
0226デフォルトの名無しさんNGNG
>>202

>面倒なんですよね。

プログラミングなんて面倒なことだらけかと。
割と禁句かと。
面倒がイヤならプログラミングやめるとか。
0227デフォルトの名無しさんNGNG
> 割と禁句かと。

そうそう。そんならはなからやめとけっていいたくなるよね。
0228デフォルトの名無しさんNGNG
> 割と禁句かと。

そうそう。そういう奴は豆乳でも飲んでろっていいたくなるよね
0229デフォルトの名無しさんNGNG
自分のアプリケーションのメインウィンドウがフォーカスを
失ったことをイベントで知りたいのですが
どうしたらいいですか?
0230デフォルトの名無しさんNGNG
OnDeactivateとかって事じゃないんだろうな、多分
0231デフォルトの名無しさんNGNG
>>230
どうも。たぶんそれです。
ありがとうございます。
0232デフォルトの名無しさんNGNG
フォームにツールバーを置いてボタンをひとつ新規作成します。
そのボタンのスタイルはtbsCheckにしました。
ToolButton1.Downというプロパティで押されているかどうか
わかるはずなのですが
↓のソースのようにフォームにフォーカスが無くなったとき
このボタンを使用不可にしてフォーカスを得たら使用可能に
しているのですが
フォーカスが無くなり使用不可の状態でツールバーのボタンを
押して、フォーカスを外し、その状態でいきなりそのツールバーの
ボタンを押してButton1をクリックするとtrueが帰ってきてしまいます。
見た目は押されてない状態なのでFALSEが帰ってきてほしいのですが
どのあたりに問題があるのでしょうか?

procedure TForm1.ApplicationEvents1Deactivate(Sender: TObject);
begin
ToolButton1.Enabled := false;
end;

procedure TForm1.ApplicationEvents1Activate(Sender: TObject);
begin
ToolButton1.Enabled := true;

end;

procedure TForm1.Button1Click(Sender: TObject);
begin
if ToolButton1.down then
showmessage('true')
else
showmessage('false');
end;
0233232NGNG
ちょっと説明が変でした。
ツールバーのボタンを押します。
他のウィンドウを触ってフォーカスをはずします。
ツールバーのボタンを押します。
ここで見た目は押されていない状態になります。
コマンドボタンを押します。TRUEと表示されます。
TRUEと表示されるということは押された状態ということです。
でも、表示上は押されてない状態なのです。
これはコンポーネントのバグなのでしょうか?
0234232NGNG
ちなみにDelphi6Personalです。
0235デフォルトの名無しさんNGNG
Focus を得る瞬間と Enabled := true になるタイミングがクリティカルなんじゃないの
なんでそんな制御しなけりゃならんのか、わからんな
0236232NGNG
タイミングがクリティカルだからというのは
ちょっとよくわかりません。
0237デフォルトの名無しさんNGNG
はぁ?

>他のウィンドウを触ってフォーカスをはずします。
>ツールバーのボタンを押します。

このこと。

・フォーカスを得る
・Enabled が true になる
・ボタンが押された

どの順序で起こることを期待してるの?
0238デフォルトの名無しさんNGNG
なんでToolButtonにFDownメンバが用意されてるんだろうね。
GetDownメソッドを用意して、常にToolBarウィンドウにボタンの状態を問い合わせるようにすれば、
こういうバグは発生しないのに。まあ何かしら理由がある…と思いたいけど。じゃなきゃ設計が(ry

>>232 とりあえず↓のようにすれば正しい状態を取得できるよ。
down := ToolBar1.Perform(TB_GETSTATE, ToolButton1.Index, 0) and TBSTATE_CHECKED <> 0;
0239デフォルトの名無しさんNGNG
false → true は MouseDown で
true → false は MaouseUp で
Activate は MouseDown で
FDown のトグルは MouseDown で

ということが複雑に絡み合って
0240デフォルトの名無しさんNGNG
>GetDownメソッドを用意して、常にToolBarウィンドウにボタンの状態を問い合わせるようにすれば、

御意。VCLはこんなのがけっこうたくさんある
0241デフォルトの名無しさんNGNG
ファイル名を...とかで縮めて表示するのってどうやったっけ?
0242232NGNG
>>237
順番はどうあれ見た目では押された状態じゃないのに
プロパティは押されていると返すのはバグじゃないの?
といっているのです。

>>238
ありがとうございます。試してみます。
0243デフォルトの名無しさんNGNG
バグだけど、どうしてフォーカス制御するひつようがあるの?
0244デフォルトの名無しさんNGNG
>>241
DrawText() + DT_PATH_ELLIPSIS とかなんとか
0245232NGNG
それは秘密です。
0246デフォルトの名無しさんNGNG
>>241
MinimizeName?
0247232NGNG
>>238
ありがとうございます。できました。
こういうときは素直にAPIでやればいいんですね。
0248デフォルトの名無しさんNGNG
>>246
多分それだと思うけど、なんかうまくできない。
二番目のカンバスってなんだ?
調べてもぴんとこない。
0249デフォルトの名無しさんNGNG
未定義の識別子”MinimizeName"ってでる。
0250デフォルトの名無しさんNGNG
Del6パーソナルを使い始めたものです。
DelphiでUnicodeを扱えないというのを聞いたのですが、
Unicodeが使えないと困る時ってどういう時ですか?
エディタソフトを作る時とかに困るんですかね?
0251デフォルトの名無しさんNGNG
使おうと思えば使えるけどそれなりの苦労をします。
Unicodeが使えないとUnicodeを使うときに困ります。
0252デフォルトの名無しさんNGNG
ごもっともな回答がきてしまった。
0253デフォルトの名無しさんNGNG
244はスルーですか、そうですか。
0254デフォルトの名無しさんNGNG
ファイル名から拡張子を取り除く関数ってありませんか?
自前で作るべきですか?
0255デフォルトの名無しさんNGNG
GetFileTitleというAPIがあるけどだめかな?
0256デフォルトの名無しさんNGNG
WindowsXP sp2入れたらDelphi7のTMonthCalendar等の表示がおかしいのですが
なにか改善策ありますか?
0257デフォルトの名無しさんNGNG
>>254
VCLでやるならChangeFileExt(filename, '') かね。
0258デフォルトの名無しさんNGNG
>>256
XpSP2やめろ。
0259デフォルトの名無しさんNGNG
QC にレポートすれば直るよ
0260デフォルトの名無しさんNGNG
>>259
XpSP2の話題は、本家ニュースグループ(delphi.non-technical)が最強。
0261デフォルトの名無しさんNGNG
普通某がチェックしてサイトに掲載しないか?
0262デフォルトの名無しさんNGNG
暴に頼ってはいけません
0263デフォルトの名無しさんNGNG
某はメンテナンスには興味なし
0264デフォルトの名無しさんNGNG
NG や QC や Blog はたんにユーザのご機嫌取り
0265デフォルトの名無しさんNGNG
都合のいい部分だけ汲み上げ。あとは無視。
0266デフォルトの名無しさんNGNG
すみません、おもいっきり初心者の質問だと思いますが、ご教授願います。

1、delphiでBDEを使ってデータベースに接続するソフトを書いたのですが、
これを他のマシンで使う場合、実行ファイルのほかにどのファイルをコピーしないと駄目ですか?

2、Form1、unit1に書いてあるQuery1をUnit2から利用したいのですが、unit2のInterface部にunit1を入れ、
unit1のimplementation部にunit2を書いているのですが、Query1だけが利用できません。
Queryは他のユニットからは使えないのでしょうか?
0267デフォルトの名無しさんNGNG
>>266
使用マシンで、BDEをインストールしないと駄目
ODBCとか使っていたら、それも設定する

Query1は、Form1.Query1とする。
0268デフォルトの名無しさんNGNG
>>267
>使用マシンで、BDEをインストールしないと駄目
>ODBCとか使っていたら、それも設定する
と言うことは、DelphiのインストールCDを使ってBDEやODBCをインストールしないと
駄目ってことでしょうか?
それともその辺をまとめたファイルがBorlandのサイトかどこかにありますか?

0269デフォルトの名無しさんNGNG
BDEは付属のInstall Shieldでインストーラを作成し配布する。
その他、BDEのディレクトリにあるBDEINST.CABを使ってWebで
配布する方法もある。同じディレクトリにあるBDEINST.TXTを参照の事。
0270デフォルトの名無しさんNGNG
リドミすら読まずにプログラミングした
266の作ったアプリのユーザーに同情するよ・・・・
0271デフォルトの名無しさんNGNG
InnoSetupでインストーラ作ればBDEのマージモジュールもあるし、setup.exe一個になるよね。
0272デフォルトの名無しさんNGNG
正直フリーソフトみたいな簡単な物以外のリードミーなんて読まないな
改めないとな、漏れも
0273デフォルトの名無しさんNGNG
簡単な物のは読むんだぁー。変わってるな。
0274デフォルトの名無しさんNGNG
だよなw変だな漏れ
0275デフォルトの名無しさんNGNG
>>271
こんな便利なのあるんだ・・・付属の一生懸命使ってたのは何だったんだ
0276デフォルトの名無しさんNGNG
>>270
ひどいなー。言いがかりだ。
0277デフォルトの名無しさんNGNG
>>271
InnoSetupって何?
0278デフォルトの名無しさんNGNG
>>277
http://www.syam.net/library/innosetupj/index.html
0279デフォルトの名無しさんNGNG
>>277
すまん、こっちだった
http://www.jrsoftware.org/
0280277NGNG
英語が分からない俺には駄目みたいだ。orz
簡単にBDEも同梱できるんだったら使いたかったんだが。甘かった。
0281デフォルトの名無しさんNGNG
おいおい
0282277NGNG
このスレって横からやりとりを見てたら時々美味しい情報が紛れ込んでるんだよね。
今回も美味しそうだったからつまみ食いしようと思ったんだが。

0283デフォルトの名無しさんNGNG
TServerSocketというコンポーネントを使いたいのですが、パレットのどのページにあるのでしょうか。
当方Delphi7Proを使っています。
0284デフォルトの名無しさんNGNG
>>283
Del7だったらTTcpServerじゃない?
0285デフォルトの名無しさんNGNG
ありがとうございました。TTcpServerでやってみます。
0286デフォルトの名無しさんNGNG
解説書よりもWEB上のサイトのほうがよっぽど分かり易い。
何のために本買ったんですか?俺は。
0287デフォルトの名無しさんNGNG
>>285
パレットには載ってないけど、ScktCompをusesに加えれば従来通りTServerSocketも使えます。
この場合はTServerSocketのインスタンスを自分で作成する必要があります。
0288デフォルトの名無しさんNGNG
1から100までのランダムな数値が取得したいのですが
どのように書けばよいでしょうか?
0289デフォルトの名無しさんNGNG
Randomize;
Random(100)+1;
0290デフォルトの名無しさんNGNG
>>289
即レス感謝
0291デフォルトの名無しさんNGNG
Randomize を毎回呼ばないように。
特別な用途がない限り、アプリ起動に対し一回だけで良し。
かつライブラリが自動的に呼び出しているので、乱数を手に入れることだけが目的なら
Randomize は必要ないですし、繰り返し呼ぶと乱数の列が乱れます。
0292デフォルトの名無しさんNGNG
フォルダを指定するにはどうしたら良いのでしょうか?

opendialogを使うとファイルの指定は出来ますが、フォルダの指定が出来ないので。
0293デフォルトの名無しさんNGNG
APIに渡すために

buff: array[0..255] of char;

と宣言している配列をAPIに渡すためにクリアしたいのですが
どのような方法が一番簡単で確実でしょうか?

GetWindowText(handle, buff, sizeof(buff));
を使用しています。

取得できたら
sCaption: String;
へ、

sCaption := buff;

としてStringへ変換しています。
ひょっとしてこの場合はクリアする必要はないですか?
0294デフォルトの名無しさんNGNG
SetLength(sCaption, GetWindowTextLength(handle));
GetWindowText(handle, PChar(sCaption), Length(sCaption));
0295293NGNG
>>294
カコイイ
でも、1行目と2行目でキャプションが変わったらどうしましょう。
0296デフォルトの名無しさんNGNG
SetString(sCaption, buff, GetWindowText(handle, buff, SizeOf(buff)));
0297293NGNG
>>296
これだ!
さんくすです。
0298デフォルトの名無しさんNGNG
どなたか292についてよろしくお願いします。
0299293NGNG
>>298
SHBrowseForFolderを使えばいいと思います。
0300デフォルトの名無しさんNGNG
>>292
これは良く見かける質問だね。
SelectDirectory関数とか。
0301デフォルトの名無しさんNGNG
昔はOpenDialogでダミーのファイル名"(ディレクトリ)"とか設定しといて
OK押されたらExtractFilePathでディレクトリ取得という技もあったな。
プレースバーも使えるので個人的には一番使いやすかったり。ダサいけど。
0302デフォルトの名無しさんNGNG
>>291
>かつライブラリが自動的に呼び出しているので、乱数を手に入れることだけが目的なら
>Randomize は必要ないですし、繰り返し呼ぶと乱数の列が乱れます。

Randomize でソースをGrepしても System.pas の宣言と実装しか引っかからないけど。
ライブラリのどこで呼び出してるの?
0303デフォルトの名無しさんNGNG
Randomize を呼び出さないでテストしてみるといつも同じランダム数列が得られるけど?
0304デフォルトの名無しさんNGNG
>>280
遅いレスだが、日本語化できるみたい
http://www.jrsoftware.org/files/istrans/
0305デフォルトの名無しさんNGNG
>>292
デフォルトのコンポーネント使って自分なりの「フォルダ選択ダイアログ」を作る
って手もありかと。
※スルーされたからって、催促書くのはどーかと。
0306デフォルトの名無しさんNGNG
>>293-296が気になるのですけど、
取得する文字列がbuffより長い場合はどうやって安全に全部の文字列を取得できますか?
0307デフォルトの名無しさんNGNG
>でも、1行目と2行目でキャプションが変わったらどうしましょう。

こういう心配をする人には、根本的な解決策はありません。でっかいbuffを取っておくように。
0308デフォルトの名無しさんNGNG
ドッキングテクニックを解説しているサイトはあるでしょうか?
DEMOを見てもサッパリです。
お助けください。
0309デフォルトの名無しさんNGNG
>でも、1行目と2行目でキャプションが変わったらどうしましょう
と
>取得する文字列がbuffより長い場合はどうやって安全に全部の文字列を取得できますか?
は
かなり異質の問題と思うけどなぁ。
0310デフォルトの名無しさんNGNG
そうお?
GetWindowTextLength で取った数値が GetWindowText を使うときにはもう信用できないかも、
っていう心配してるんだから、同じじゃないの? TMemo みたいにバカ長いテキストも
あり得るんだから、そんな心配より、全部取れないかもしれない、という心配のほうが
ずっと価値あると思うんだけど。
0311デフォルトの名無しさんNGNG
GetWindowTextは同一プロセス内でしか使えないから、
この場合は自分で管理すればよろしい。

他プロセスとのやり取りは、そもそも危険。
0312デフォルトの名無しさんNGNG
>GetWindowTextは同一プロセス内でしか使えないから、

MSDN says,

GetWindowText cannot retrieve the text of a control in another application.

ということで、そもそも
>>295
>でも、1行目と2行目でキャプションが変わったらどうしましょう。

はあり得ないってことですね。サンクス >>311
0313デフォルトの名無しさんNGNG
ダイアグラムエディタ(フローチャート?)のコンポーネントってないですかね?
0314デフォルトの名無しさんNGNG
VISIOみたいなやつ?
0315デフォルトの名無しさんNGNG
>>314
だいたいそんな感じです。
0316デフォルトの名無しさんNGNG
>>313
ttp://www.tmssoftware.com/diagram.htm
ttp://www.devexpress.com/ ←現在、サーバーが死んでいる。製品名OrgChart
0317デフォルトの名無しさんNGNG
>>316
thx!どうもです。
0318デフォルトの名無しさんNGNG
おれのマシンからは(今)DevExpress つながるが?
0319デフォルトの名無しさんNGNG
procedure TForm1.Button1Click(Sender: TObject);
var
d: Longword;
ret: LongWord;
begin

ret := GetTcpTable(nil,@d,false);

end;

[エラー] Unit1.pas(68): 変数実パラメータと変数仮パラメータとは同一の型でなければなりません

となります。

宣言は
function GetTcpTable(var TcpTable: PMIB_TCPTABLE;
var Size: PDWord; bOrder: Boolean): LongWord; stdcall
としています。
第2引数でエラーになるようなのですが
渡し方が間違っているのでしょうか?


0320319NGNG
procedure TForm1.Button1Click(Sender: TObject);
var
d: Longword;
d2: PDWord;
ret: LongWord;
a: PMIB_TCPTABLE;
begin

d2 := @d;
a := nil;
ret := GetTcpTable(a,d2,false);
showmessage(inttostr(ret));

end;

できました。
0321デフォルトの名無しさんNGNG
ActiveXDLLをDel6Personalで作成できますか?
0322デフォルトの名無しさんNGNG
>>321
ファイル|新規作成の所に、ActiveXというタブはありますか?
その中に、ActiveXライブラリというアイコンがあれば可能です。
0323デフォルトの名無しさんNGNG
>>319-320
ポインタが var パラメータになっている関数の宣言がおかしいのでは?
var パラメータはその位置にある変数を指すポインタを渡すという意味なので、
ポインタのポインタを渡してることになりますよ。
0324デフォルトの名無しさんNGNG
Delphi7ってフリーじゃなくなっちゃったんでしょうか?
ダウンロードしたのですが、
30日評価版の文字が・・・
0325デフォルトの名無しさんNGNG
>>324
フリーはDelphi 6。Delphi 7にフリーは無い
0326デフォルトの名無しさんNGNG
アメリカで流行っているか?太鼓

http://borcon2004.blogspot.com/
> David I have continued a yesterday Dale’s music line and joined Taiko group
> (Taiko? Read this http://www.taiko.com/rollingthunder.html).
> Drums - Great wake up call for us
0327デフォルトの名無しさんNGNG
大いにスレ違い。反省
0328デフォルトの名無しさんNGNG
TabControl,PageControlでMultiLineをTrueにした状態でタブが動かないコンポーネントを探しているのですが
ありますでしょうか?
0329デフォルトの名無しさんNGNG
上段のタブがアクティブになった時にどんな絵になるのか、
ちょっと描いてみてくれ。
0330デフォルトの名無しさんNGNG
ボタン型にすれば動かない
0331デフォルトの名無しさんNGNG
151 名前:デフォルトの名無しさん :04/09/14 06:21:35
Delphi覚えたけど何の役にもたたんね
0332デフォルトの名無しさんNGNG
>>331
立てたよ。ネガティブな悪口はそちらでどーぞ。

Delphi覚えたけど何の役にもたたんね
http://pc5.2ch.net/test/read.cgi/tech/1095115109/
0333デフォルトの名無しさんNGNG
ウィンドウのサイズを縦だけ可変にしたいのですが
0334デフォルトの名無しさんNGNG
他にもやり方はありますが

縦だけ可変ということは横を固定にしたいわけだから
Form の constrains プロパティで maxwidth と minwidth を同じ値に指定。


0335デフォルトの名無しさんNGNG
>>334
ありがとうございました。
ほんとDelphiって簡単になんでもできてしまうんですね。
0336デフォルトの名無しさんNGNG
Delphi7で主にテキストエディタ系を勉強したいのですが、
何処のどの本がいいですかね?
0337デフォルトの名無しさんNGNG
付録サンプルのテキストエディタのコード見た方が早いのでは?
0338デフォルトの名無しさんNGNG
コンポーネントの親の切り替えについての質問です。
TPanelやTMemoはParentを切り替えるだけで親を切り替えられたのですが、
WebBrowserコンポーネントのは場合うまく行きませんでした。

得たい結果としては「元々表示していたページ・入力していた値は消えない」で
「切り替えた先の親に合わせてリサイズが自動で行われる」です。
試したパターンでは、どちらか片方の結果しか得られませんでした。
WebBrowserの親の切替については直接の切替ではなく、親のパネルの切替でも
構わないのですが、なにか良い方法は無いでしょうか。

From1
 Panel1
  WebBrowser1
  Button1〜Button4
From2
 Panel2
0339デフォルトの名無しさんNGNG
//リサイズはフォーム2に合わせて自動で行われるが、
//元々表示していたページが消えてしまう。
procedure TForm1.Button1Click(Sender: TObject);
begin
 //WebBrowserの親のパネルを切り替え
 Panel1.Parent := Form2.Panel2;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
 //WebBrowserを切り替え
 Windows.SetParent(WebBrowser1.Handle, Form2.Panel2.Handle);
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
 //WebBrowserを切り替え
 TOleControl(WebBrowser1).Parent := Form2.Panel2;
end;

//元々表示していたページ・入力していた値は消えないが、
//リサイズが元の親のフォーム1に合わせて行われてしまう。
procedure TForm1.Button4Click(Sender: TObject);
begin
 //WebBrowserを切り替え
 Windows.SetParent(WebBrowser1.Handle, Form2.Panel2.Handle);
end;
procedure TForm1.Button5Click(Sender: TObject);
begin
 //WebBrowserを切り替え(一旦親フォームに移動してみる)
 Windows.SetParent(WebBrowser1.Handle, Form2.Handle);
 Windows.SetParent(WebBrowser1.Handle, Form2.Panel2.Handle);
end;
0340デフォルトの名無しさんNGNG
オブジェクトのシリアライズってできますか?
0341デフォルトの名無しさんNGNG
WebBrowserってActiveXだっけ?
Parent切り替え時にウィンドウハンドルも再生成されるから、
その時に情報が失われるのかもしれないね。
0342デフォルトの名無しさんNGNG
>>340
出来ますけど。何か?
キーワード:RTTI。SaveToStream
0343デフォルトの名無しさんNGNG
必死こいてclassの勉強してます
classのメンバに整数型の動的配列入れたいんですが、
どうやってアクセスさせればいいんでしょうか(文が変

hoge = class(TObject)
 private
  FList : array of integer;
 public
  ここに何書けばいいんかわかんない
end;

FList[n]の値を代入・値を取得したいです。
0344デフォルトの名無しさんNGNG
>>329
http://tabbrowser.ktplan.jp/valinor/sleipnir.html
これはSleipnirのですがこんな感じを想定しています

>>330
やっぱりタブで使いたいです
0345デフォルトの名無しさんNGNG
フラットボタンだな
0346デフォルトの名無しさんNGNG
>>343
たとえば

property Items[Index: integer]: integer read GetItems write PutItems;

コンストラクタでSetLength()しといてね
0347デフォルトの名無しさんNGNG
[
スレッドオブジェクトを作る時、名前つきスレッドを選択すると
[エラー] Unit3.pas(67): 'TThreadNameInfo' と 'Cardinal' には互換性がありません
って出るんだけど、どうすればいいですか?
0348デフォルトの名無しさんNGNG
コードを一行も示さずにそんなこといったって
0349デフォルトの名無しさんNGNG
>343
動的配列じゃなくてTList使ってるけど、ここが参考になると思う。
ttp://hp.vector.co.jp/authors/VA009712/take/delphi/pointer.htm#tlist
0350デフォルトの名無しさんNGNG
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが、
お礼はDelphiの布教と初心者の救済をお願いします。
0351デフォルトの名無しさんNGNG
>>347
TThreadNameInfoって何?
0352347NGNG
新規作成でプロジェクトをつくって、スレッドオブジェクトを
名前付きで作成して、1行もコード書かなくてもコンパイルすると
エラーになるんです。
TThreadNameInfoてのは、名前付きでスレッド作ると
Delが勝手に作ってくるです。
スレッドのデモも実行出来なくて。
Del7でアップデートしたらおかしくなったので、その辺りかなと思ったり思わなかったり。。。
0353デフォルトの名無しさんNGNG
Del7だからな
0354デフォルトの名無しさんNGNG
エラーでてるところの前後4行くらい、ペーストできる?>>352
0355347 その1NGNG
ちょっとながですが、こんなんです。
Tyyって名前で「名前付きスレッド」作りました。
type
TThreadNameInfo = record
FType: LongWord; // 0x1000 にすること。
FName: PChar; // (ユーザー空間での) 名前文字列へのポインタ
FThreadID: LongWord; // スレッド ID (呼び出しスレッドは -1)
FFlags: LongWord; // 将来のために予約。0 にすること。
end;
{$ENDIF}

0356347 その2NGNG
{ Tyy }

procedure Tyy.SetName;
{$IFDEF MSWINDOWS}
var
ThreadNameInfo: TThreadNameInfo;
{$ENDIF}
begin
{$IFDEF MSWINDOWS}
ThreadNameInfo.FType := $1000;
ThreadNameInfo.FName := 'yvy';
ThreadNameInfo.FThreadID := $FFFFFFFF;
ThreadNameInfo.FFlags := 0;

try
RaiseException( $406D1388, 0, sizeof(ThreadNameInfo) div sizeof(LongWord), @ThreadNameInfo );
except
end;
{$ENDIF}
end;
0357デフォルトの名無しさんNGNG
手元でやってみましたが、エラー出ません。
0358デフォルトの名無しさんNGNG
RaiseException で「'TThreadNameInfo' と 'Cardinal' には互換性がありません 」
が出ているのだね?

プロジェクトのコンパイルオプションの「型付 @ 演算子」のチェックをはずすこと。
0359デフォルトの名無しさんNGNG
あまり良くないエラーメッセージですね。
どうにかできるかな?
0360343NGNG
>>346>>349
ありがとうございますー。
だんだんちょびっとずつコツがわかってきた、ような希ガスる。
0361343NGNG
>>349を読んでて思ったけど、
TListにはポインタが入るってことは、
Listに加える内容はオブジェクトでも変数でもなーんでもイイヨ ってことになるんかな?
としたらものすげー便利?
ううむ、奥が深い
0362デフォルトの名無しさんNGNG
これだけのことで感動できるのか…
0363デフォルトの名無しさんNGNG
>>362
頭の皮膚の固いロートルは消えろ
0364デフォルトの名無しさんNGNG
Star Team エディションってなんだ?
まぁ、バージョンアップするほど使いこなしてないけどなー
0365デフォルトの名無しさんNGNG
343ではないけど、ポインタの概念理解できたとき無茶苦茶はしゃいだ…
0366デフォルトの名無しさんNGNG
気持ちはわかるな、おれも。実体を操作するよりずっと軽くて気持ちいいし。
0367338NGNG
>>341
そーですActiveXです。
確かに、>>339の「元々表示していたページが消えてしまう」場合のハンドルを
調べてみたら変わってました。WebBrowser1.LocationURLも消えてました。
「元々表示していたページ・入力していた値は消えない」場合は同じハンドル
でした。

ページが消えるのは困るので消えないパータンでなんとかしたいのですが、
リサイズ対象の件についてなにか情報がありましたらよろしくお願いします。
0368デフォルトの名無しさんNGNG
DBの日付データをDateTimePickerで入力したり表示するときはどうすればいいんですか?
0369デフォルトの名無しさんNGNG
>>367
あらためて Navigate したらいいんじゃないの。
0370338NGNG
>>369
レスどもです。
確かに消えてしまったページを再度Navigateすればページは表示されるんですが、
入力していた値が消えてしまったり、表示位置が先頭に戻ってしまうのが不便なのと、
実際のプログラムでは複数のブラウザコントロールに対して親の切り替えを
一気に行うので、再度読み込みに行ってしまう事を控えたいというのがあります。
0371デフォルトの名無しさんNGNG
>>370
これ試してみて

procedure TForm1.ChangeParent(WB: TWebBrowser; ParentWnd: TWinControl);
begin
Windows.SetParent(WB.Handle,ParentWnd.Handle);
WebBrowser1.Align := alNone;
WebBrowser1.SetBounds(0,0,ParentWnd.Width,ParentWnd.Height);
end;
0372デフォルトの名無しさんNGNG
>>370
もうさ、Parentプロパティは一切設定しないでさ、
ブラウザは動的に作成、親はAPIのSetParentで設定、リサイズは自分で行う
って風にしてしまうのはどうだい。
0373デフォルトの名無しさんNGNG
間違えた。訂正

procedure TForm1.ChangeParent(WB: TWebBrowser; ParentWnd: TWinControl);
begin
Windows.SetParent(WB.Handle,ParentWnd.Handle);
WB.Align := alNone;
WB.SetBounds(0,0,ParentWnd.Width,ParentWnd.Height);
end;

0374デフォルトの名無しさんNGNG
(;・∀・) 8秒差でかぶったぜ
0375デフォルトの名無しさんNGNG
Align が自動じゃだめなんだな
0376デフォルトの名無しさんNGNG
すみません、さらに訂正

procedure TForm1.ChangeParent(WB: TWebBrowser; ParentWnd: TWinControl);
begin
Windows.SetParent(WB.Handle,ParentWnd.Handle);
WB.Align := alNone;
WB.SetBounds(0,0,ParentWnd.ClientWidth,ParentWnd.ClientHeight);
end;
0377338NGNG
>>371
サンプルコードわざわざどうもです。試してみました。
これは初回移動時用でリサイズは自前の場合の例ですよね。この場合、
親のリサイズ時にはSetBoundsで子供のサイズ変更が必要になりますね。

>>372
ブラウザの動的作成も試してみたんですが、結果は最初から貼り付けた時と
同じでした。
「リサイズは全部自前」も考えてはいたんですが、複数ある子供を管理する
仕掛けを作らないといけなそうなので、最終手段かなと思ってました。
自分が親になってるコントロールをぐるぐるループして見つけてサイズ変更
していくとか、各親に子供のブラウザーを管理するリストをつけるとか。

それと、どうもリサイズが元の親に対して行われてしまう原因(Parent以外の
何か)を見逃してるような気がしてたもので。
0378デフォルトの名無しさんNGNG
> ブラウザの動的作成も試してみたんですが、結果は最初から貼り付けた時と同じでした。
それはたぶんその後ParentやAlignを設定したからでは。当然結果は同じだね。

> それと、どうもリサイズが元の親に対して行われてしまう原因
それはAPIでSetParentしても、VCL側ではParentが元のままだから、ちゅう単純な理由だね。
それでParentを一切設定せずに全部自前ってのを薦めたんだけも、まあいろいろ悩みがあるようだね。
0379338NGNG
>>378
>>ブラウザの動的作成も試してみたんですが、結果は最初から貼り付けた時と同じでした。
>れはたぶんその後ParentやAlignを設定したからでは。当然結果は同じだね。
そうですね。というかParentを設定しないと見えなくなっちゃっていたので。

>それはAPIでSetParentしても、VCL側ではParentが元のままだから、ちゅう単純な理由だね。
なるほどそうなんですか(といいつつ完全には理解しきれてませんが)。

可能ならロジックは減らしたいというのもあったんですが、「リサイズは全部自前」は
最終手段というほどのものでもないですし、もう少し情報を待ちつつ調べてみて、
方法が見つからなかったら自前にしてみようと思います。ありがとうございました。
0380デフォルトの名無しさんNGNG
ListViewでOwnerDataをtrueにしていると、OnCustomDrawItemでCanvasを
変更しても実行時には変更されないのですが、こういう仕様なのでしょうか?
OwnerDataをfalseにしていると、Canvas.Fontなどの変更も反映されます。
0381デフォルトの名無しさんNGNG
ポップアップメニューでメニューを選択したときに
「メニューアイテムの選択が、右クリックか、左クリックか」を
OnClick内で判別したいのですが、どうすればいいのでしょうか?
0382デフォルトの名無しさんNGNG
そんな変なUIを作る人はVBを使って下さい。
0383デフォルトの名無しさんNGNG
矢印キープラスEnterでも選択できるわけだし
0384381NGNG
>>382
人に使って貰うソフト用でなくて、自分専用のソフトで
ナビゲートを少しでも効率的にしようかと思って考えた
んですが、やっぱり変ですよね(自分専用だから変でも
良いかと思ったんですが)。

>>383
キーボードのときは左クリックとすれば問題ないかと。
0385デフォルトの名無しさんNGNG
OnClick で GetAsyncKeyState を。VK_RBUTTON が使える
0386381NGNG
>>385
ありがとうございます。が、メニューが選択された時点では
ボタンは既に離されているので、同じ値しか返ってきません
でした。

クリックされたマウスボタンではなく他の方法を使って実装
しようかと思います。
0387デフォルトの名無しさんNGNG
Visual SourceSafeでは通常のクリックで実行、
Shift+クリックで詳細なダイアログを表示して実行ボタンを押すと実行というので使い分けてるな。
で、そのダイアログにはSHIFTを押したときのみこのダイアログを表示みたいなチェックがついてた。
0388デフォルトの名無しさんNGNG
>が、メニューが選択された時点ではボタンは既に離されているので、
>同じ値しか返ってきませんでした。

あのね、そのとき押してるかかどうかのほかに履歴も取れるんだよ
0389デフォルトの名無しさんNGNG
妄想で書いてないで実験してちゃんとしたコード書いたら。
0390デフォルトの名無しさんNGNG
指定したフォルダ以下にある全てのフォルダの名称を取り出したい
のですが、どうすればよいでしょうか?宜しくお願いします。
0391デフォルトの名無しさんNGNG
>>390
FindFirst
FindNext
FindClose
0392デフォルトの名無しさんNGNG
388じゃないけどこんな感じか
procedure TForm1.PopupMenu1Popup(Sender: TObject);
begin
 GetAsyncKeyState(VK_LBUTTON);
 GetAsyncKeyState(VK_RBUTTON);
 GetAsyncKeyState(VK_RETURN);
end;

procedure TForm1.HogeClick(Sender: TObject);
begin
 if GetAsyncKeyState(VK_LBUTTON) and 1 <> 0 then Caption := '左' else
 if GetAsyncKeyState(VK_RBUTTON) and 1 <> 0 then Caption := '右' else
 if GetAsyncKeyState(VK_RETURN) and 1 <> 0 then Caption := 'Enter' else Caption := '?';
 if GetKeyState(VK_SHIFT) < 0 then Caption := Caption + ' + Shift';
end;
0393381NGNG
>>388
でもメニューをポップアップする時点で右クリックするわけだから、
右クリックの履歴をとっても常に「クリックした」となると思うのですが...
0394デフォルトの名無しさんNGNG
>>393
志村上ー、上ー!
0395デフォルトの名無しさんNGNG
OnPopUp で一度呼び出して履歴をクリアしてるんだよな

って >>381 は試したの?
0396デフォルトの名無しさんNGNG
ちゃんと動くよ。
0397デフォルトの名無しさんNGNG
教えがいの内野氏だな
0398381NGNG
代案厨と妄想厨のせいで無駄に長引いてしまいましたが解決しました。
スレ汚されて迷惑な話ですが。
0399デフォルトの名無しさんNGNG
無駄に長引いたのは自分のコードを一行も示さないからだと思うな
0400デフォルトの名無しさんNGNG
スレ汚しは381
0401デフォルトの名無しさんNGNG
スレ汚したのはむしろおま(ry
0402デフォルトの名無しさんNGNG
教えてもらうのに、正解以外は妄想だとか代案だとかいってけなすのはどうかと思うぞ
正解が見えないからこそ、いろいろやってみるんだと
0403デフォルトの名無しさんNGNG
正解が一つとも限らないし。

教えてもらうのがヘタな香具師は結果的に自分が損することになるよ
0404デフォルトの名無しさんNGNG
どうやって解決したかも書いてないし・・・情報ぜろ
0405デフォルトの名無しさんNGNG
自覚症状のない典型的な痛い奴
0406デフォルトの名無しさんNGNG
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが、
お礼はDelphiの布教と初心者の救済をお願いします。
0407デフォルトの名無しさんNGNG
別に望んでいない人にはコンサルティングよりQ&A
0408381NGNG
>>392, 394, 395
遅くなって申し訳ありません。時間が無くてテストできませんでした。
394,395さんのレスで392さんのコードが分かりました。
いま試したところ、ちゃんと動くようになりました。

みなさん、ありがとうございます。
0409デフォルトの名無しさんNGNG
TClientSocket を使って通信を行っているのですが、
非ブロッキング通信だと正常に切断されるのに
全く同じことをブロッキング通信で行うと、いつまで待っても切断されません(TClientSocket.Socket.Connected が False にならない)
どういうことなのでしょうか?
0410デフォルトの名無しさんNGNG
相手側がちゃんとCloseしてるのは間違いない?
0411デフォルトの名無しさんNGNG
質問があります。
メモ内のテキストの5バイト目の文字の左上の座標を求めたいのですけど、
以下の方法ではうまくいかないのですけど、どうすればいいでしょうか?

procedure TForm1.Button1Click(Sender: TObject);
var
 P: TPoint;
begin
 Memo1.Perform(EM_POSFROMCHAR, Integer(@P), 5);
 Caption := IntToStr(P.X);
end;
0412デフォルトの名無しさんNGNG
>>411
var
 pos: TSmallPoint;
begin
 pos := TSmallPoint(Memo1.Perform(EM_POSFROMCHAR, 5, 0));
 Caption := IntToStr(pos.x);
end;
0413デフォルトの名無しさんNGNG
すげぇ・・こんなことができるなんて考えてもみなかったぜ
0414デフォルトの名無しさんNGNG
>>410
同じことを非ブロック通信でやれば問題ないのですが、
これは相手側が確実に切断している事にはなりませんか?
0415デフォルトの名無しさんNGNG
非ブロッキングとブロッキングのコードが意味的に同じであることを保証してくれるならなる。
0416デフォルトの名無しさんNGNG
ファイルのドラッグアンドドロップに関する質問なんですが、
ウィンドウのクライアント領域だけドロップを受け付ける
(タイトルバーや枠では受け付けない)ようにするにはどうしたら
良いのでしょうか?

DragAcceptFiles(Form1.Handle,True) でドロップを受け付けるので、
DragAcceptFiles(Form1.ClientHandle,True)でも出来ると思ったんですが、
これだと全く受け付けてくれません。

仕方が無いので、クライアント領域と同じ大きさのパネルを置いて、
そのパネルをドロップを受け付けるようにする、と考えましたが、
他にいい方法は無いでしょうか?
0417デフォルトの名無しさんNGNG
>DragAcceptFiles(Form1.ClientHandle,True)でも出来ると思ったんですが、

MDI親フォームなの?
そうだとしても、ClientHandle に対応するウィンドウはフォームじゃないよ。
別ウィンドウだけど。

下の方法がいいと思うけど、なんか都合が悪いことあるの?
0418デフォルトの名無しさんNGNG
>>416
OLEドラッグ&ドロップなら、カーソル位置によってドロップ禁止したり自由に出来るけど、
パネル置くより面倒かも。コンポーネント拾ってくれば楽かもね。
ちなみにClientHandleはFormStyleがfsMDIFormの時なら使える。
0419デフォルトの名無しさんNGNG
>ちなみにClientHandleはFormStyleがfsMDIFormの時なら使える。

使えるけど TForm のメッセージハンドラでは WM_DROPFILES は受け取れないよ
0420デフォルトの名無しさんNGNG
>>419
別にApplication.OnMessageで受け取ればいい
0421デフォルトの名無しさんNGNG
>>420
ほほう、それは初耳
0422デフォルトの名無しさんNGNG
パネルを使ってはいけない特別な理由があるのだろうか…
0423デフォルトの名無しさんNGNG
なんとなく邪魔なんだろ
0424デフォルトの名無しさんNGNG
>>420 は試したことがあるの?
0425デフォルトの名無しさんNGNG
非クライアント領域で受け取りたくない理由も分からないし
0426デフォルトの名無しさんNGNG
>>424
?あるよ。
0427デフォルトの名無しさんNGNG
うだうだ言ってんのがいるな…。代案厨の派生か何かか
0428デフォルトの名無しさんNGNG
ちょっとした疑問
代案って何か問題あるのか?
0429デフォルトの名無しさんNGNG
>>428
ただ代案を出すだけなら問題ないんでない
0430デフォルトの名無しさんNGNG
199 名前:お馬鹿な回答者の為の回答フロー[sage] 投稿日:04/08/10 13:58
〜がありますか?

if あるなら then
 その方法を提示;

if ないなら or 現実的でないなら then
begin
 直接的な解はないと回答
 while さらに別の方法が必要か? do
  一段階上位の要求を聞きだして、その方法を提示
end;
0431デフォルトの名無しさんNGNG
昨日から変なのがいる。時々騙りもするみたいだし。キモイ
0432デフォルトの名無しさんNGNG
>>426

procedure TForm1.FormCreate(Sender: TObject);
begin
DragAcceptFiles(ClientHandle,true);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
DragAcceptFiles(ClientHandle,false);
end;

procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
var Handled: Boolean);
begin
case Msg.message of
WM_DROPFILES:if Msg.hwnd = ClientHandle then ShowMessage('DROPFILES');
end;
end;

確認した。WM_DROPFILES がキューに入ることしらんかった。ありがと
0433デフォルトの名無しさんNGNG
if 自分には解決できない then ShowMessage('なんでそんな事するの?必要あるの?')
0434デフォルトの名無しさんNGNG
>>430
どうでもいいんだが、

> if ないなら or 現実的でないなら then
> begin
>  直接的な解はないと回答;

じゃね?
0435デフォルトの名無しさんNGNG
>>433
今回の場合は

if 簡単に解決できるけど then ShowMessage('なんでそんな事するの?必要あるの?')

ってことだよ。質問自体の内容はハッキリしてるけど、理由が不明だから、簡単に解決する
けど、なんだか変 って感じなの
0436416NGNG
レスありがとうございます。
パネルを使って処理する事に特に問題は無いんですが、もし使わないで
同じことが出来るならそうしたいと思い、質問した次第です。

パネルを使う方法と、うまく使いこなせるか分かりませんが、
>>432 さんのコードも試してみたいと思います。ありがとうございました。
0437デフォルトの名無しさんNGNG
>>436
MDI親フォームなの?
そうなら、>>432 でいいけど、普通のフォームならパネル使って >>432 のコードで ClientHnalde
のところを Panel1.Handle に変えてね
0438デフォルトの名無しさんNGNG
>>432
>WM_DROPFILES がキューに入ることしらんかった。

わたしにも意外でした。ちょっと調べてみました。

MSDN では

WM_DROPFILES Message

--------------------------------------------------------------------------------

Sent when the user drops a file on the window of an application that has registered
itself as a recipient of dropped files.

Win32.hlp では

The WM_DROPFILES message is sent when the user releases the left mouse button while
the cursor is in the window of an application that has registered itself as a recipient
of dropped files.

どちらも sent となっていて、キューに入るとは考えられない。

http://homepage2.nifty.com/Mr_XRAY/Halbow/Notes/N022.html では自前でこのメッセージ
を送っているようだけど

>ここでは、PostMessage()で成功しているが、SendMessage() では失敗する。

と書かれている。

WM_DROPFILES はドキュメントと違って PostMessage されているようです。
0439デフォルトの名無しさんNGNG
ドキュメントが正しく、OSが間違ってるかもよ?
0440デフォルトの名無しさんNGNG
わははは、きみはドキュメントの上でアプリを走らせるわけじゃないだろ
0441デフォルトの名無しさんNGNG
ちょっと躓いたので質問させてください

FindFirstでファイル一覧を取得しているのですが、とある複数の拡張子を取得したいと思っています
*.txtと*.htmlのみを取得しようとしたら、FindFirstをそれぞれ二回やらないとダメでしょうか?

二つ三つならまだいいけど、十個などになるとさすがにきついと思うので
何かスマートな方法ないでしょうか?
0442デフォルトの名無しさんNGNG
*.*で検索してExtractFileExt、UpperCase、AnsiMatchText, AnsiMatchStrあたりで比較
0443デフォルトの名無しさんNGNG
const
Extentions:string = 'txt;html;';

*.*で検索
ExtractFileExt(FileName)+';'でPos
0444デフォルトの名無しさんNGNG
10個も検索するの?
0445デフォルトの名無しさんNGNG
>>443
酷いコードだな
tmlでも引っかかるし
だいたい ; ってファイル名に含められるし
0446デフォルトの名無しさんNGNG
TFileListBoxをこっそり使うとか。
0447デフォルトの名無しさんNGNG
>>443
IndexOfの方が良くないか?
0448デフォルトの名無しさんNGNG
>>280
超遅レスだが、InnoSetupで、BDEを配布する方法(和訳)
http://www.geocities.jp/mystral_kk/iskb13.htm
0449デフォルトの名無しさんNGNG
>>442-447
*.*で検索後から必要な物を抜き出す方法を試してみました。
うまくいきました。ありがとうございます。
でもTFileListBoxをこっそり使った方が手間が省ける事が解かって
ちょっと気が抜けちゃいました
ま、若いうちの苦労は買ってでもs…と言うことで
0450デフォルトの名無しさんNGNG
質問させてください。
TListViewのOwnerDataとOwnerDrawをtrueにして、仮想リストビューとして使っているのですが、
MemCheckユニットで確認したところ、終了時にメモリリークするようになってしまいました。
穴が開くほど確認しましたが、自作クラスなどの解放はやっています。
また、OwnerDataをfalseにすると、メモリリークは起こりませんでした。

MemCheckによって生成されたログを見ると、リークはTListItem.Createで作られた
インスタンスだと思われます。

OwnerDataを使うのは初めてなのですが、もしかして、何か自前で解放しなくては
いけないのでしょうか? また、そうだとしたら、具体的に何を解放すればよいのでしょうか。
一応、フォームのOnDestroyに、リストアイテムを解放させるコードも書いて試してみましたが、
思った通りアクセス違反の例外が発生しました。
0451デフォルトの名無しさんNGNG
素のDel6では、OwnerData使うとリークするバグがある。
Proだとアップデート当てれば直ったはず。Perはどうだかわからん。
0452デフォルトの名無しさんNGNG
ソースはコレね。Update2で修正されてる。
ttp://buglist.jrsoftware.org/generated/entry0575.htm
0453450NGNG
>>451-452
ご返答ありがとうございました。
情報の後だしになってしまったようで申し訳ないのですが、
Delphi6ですが、既にUpdate2パッチは当ててあります…。
また、>>452のバグは、TSubItem周辺のものだと思われますが、
仮想リストビューでSubItemは全く弄っておりません。
0454ミ,,゚Д゚ミノ ◆A6VzDeLphI NGNG
もつかれさま。

ファイルパスが
UNCかC:\形式か、それともファイルパスとしてふさわしくないか
を調べる関数など、JEDIとかMonaや自作ルーチンで
あったら教えてくださいませ。

場当たり的な実装ではなくて(場当たり的なのは自作できるし)
比較的汎用的なものがほしいです。

あと、ファイルパスが何階層目なのかを調べる関数なども
あったら教えてくださいませ。


.NETあたりにはあるのかな?
0455デフォルトの名無しさんNGNG
実際に存在するかとかは関係なく字面の形式性のチェックってこと?
0456デフォルトの名無しさんNGNG
アクセスが遅いメディアからムービーを読み込んで再生させようとすると、
音声と映像の同期がとれなかったり、再生が遅延したりしてしまう・・・。
TMediaPlayer使ってるんですが、なんかいい解決法ないですか?(´・ω・`)

FormCreate内でopenしてplayしようとすると、映像が展開される前に
音声だけ流れ始めたりして、再生がしっちゃかめっちゃかになります。
もちろんHDDからだと問題ないけれど、CDに焼くと途端に崩壊・・・。

TWindowsMediaPlayer使うと上手くいくんですが、ユーザの環境
(プレーヤのバージョンとか)に思い切り依存するのでボツりました。
0457ミ,,゚Д゚ミノ ◆A6VzDeLphI NGNG
>>455さん
そうっす。

となると、生気表現かすら?
0458デフォルトの名無しさんNGNG
>>456
某所で「ぎこちないTMediaPlayerのムービー再生」というタイトルで質問してた人ですか?
0459デフォルトの名無しさんNGNG
isvalidpathってのが引っかかるんだけど何物?
0460ミ,,゚Д゚ミノ ◆A6VzDeLphI NGNG
>>453,>>450さん
RTLupdate関係なのかな?

うちでは仮想ListViewでMemCheckしても発生してないですね。

再現する小さいプログラムコードを

ソース置き場
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/lounge/index.html

などに掲載するとええかも。
0461デフォルトの名無しさんNGNG
>>454
ない。作れ。すぐできるぞ。
\\で始まるか、アルファベット:かで区別すればよい。これ以外は相対パスかな。
不正な文字が含まれているかどうかチェックをつけるかは任意で。
0462450NGNG
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/lounge/file/1017673221_8/MemLeakTest.zip
にあげてみました。実行にはMemCheckユニットが必要です。

ボタンを押すと仮想ListViewのアイテムを増やします。
その後、フォームを閉じるとメモリリークが検知されます。

私の環境では、1回ボタンを押してフォームを閉じると
150回のメモリリークが起きます。
(追加したアイテムのキャプションを変更するとさらに増える)

私の環境が悪いのでしょうか…
0463450NGNG
ageさせて頂きます。
0464デフォルトの名無しさんNGNG
そもそもOwnerData := TrueでItems.Addするのがおかしい。
そんなことをしたときの挙動がおかしいのかもしれないね。
ほんとはInvalidOperationだかの例外を投げるべきなのかもしれないけど。
0465464NGNG
すまん。少し保留しといて。
とりあえず解決するにはItemsではなく独自のコンテナにデータを保持して
OnData,OnDataFindでデータをセットすればリークは消えるはず。
0466デフォルトの名無しさんNGNG
ヘルプより

仮想リストビューコントロールに格納される情報は,選択およびフォーカス情報だけです。

だから、自分で開放しなけりゃリークするのは当然だと思うけど。

0467450NGNG
>>464-466
ご返答ありがとうございます。
どうも私の使い方が間違っているようですね…。

独自のコンテナを使うのは問題無いのですが、
リストビューにOwnerDrawで表示する場合、どんな風にイベントが起こるのでしょうか。
(例えば、リストアイテムの数などは、どのイベントで設定するのでしょうか。)
何分、OwnerDataを使うのが初めてなので、ノウハウが良くわからないです…。すいません。

TListView OwnerData などで検索してみましたが、
ヒットするサムネイル表示のサンプルでは、OwnerData:=Trueの状態で
Items.Add をしていますね。やはりこれも間違っているのでしょうか。
正しいサンプルが見つかりません… orz
0468450NGNG
と思ったら、TListItems.Count はReadOnlyなプロパティじゃなくて
設定できるのですね… orz

なんとかなりそうです。ありがとうございました。
0469デフォルトの名無しさんNGNG
グラフィックス関係のコンポーネントを
使ってプログラムを実行しようとすると
Graphics.pasがないです
といわれてしまうのですが、
どうすればいいのでしょう。
このファイルはどこでダウンロードできるのでしょうか。
0470デフォルトの名無しさんNGNG
お使いの Delphi のバージョンと、
使いたいコンポーネントの名前。

おそらくは、バージョンの不一致。
0471デフォルトの名無しさんNGNG
>>469
uses節に「Graphics」を追加すると、どう?
0472469NGNG
>>470
Delphiのバージョンは6です。
使いたいコンポーネントはデフォルトでついている
OpenPictureDialog
Image
Buttonです。
ダイアログを出して、画像ファイル(jpg)を選択すると
上記メッセージがでます。

>>471
自動的に追加されてました。
0473デフォルトの名無しさんNGNG
6 Personal かな?

で、コンパイル時ではなく、アプリ実行時のエラーなのですね?
それは、単にデバッガがソースコード表示をしようとしていて、
Personal 版だからソースがない。といってきているだけかと。

無視してください。
ただ、デバッガが開いたということは何かバグがあったということですから、
虫取りしましょう。
0474デフォルトの名無しさんNGNG
>画像ファイル(jpg)を選択すると

uses に jpeg を追加してみると変化があるかも。
0475469NGNG
>>474
kita-------
キターーー
キターーーーー
きたーーーーーー
来たーーーーーーー
キタ━━━━━━(゚∀゚)━━━━━━ !!!!!
0476デフォルトの名無しさんNGNG
いいからもちつけ
0477デフォルトの名無しさんNGNG
>450
これが原因ではないかな。
ttp://hogehoge2001.at.infoseek.co.jp/note-delphi.html
>☆TListView☆(2002-02-03追加)
0478450NGNG
>>477
わざわざありがとうございます。
すいません、一応解決済みです。
OwnerData := True の状態で Items.Add をしていたのが原因のようです。
本来ならば、Items.Count を増やすところでした。

で、またまた質問です。というか、バグっぽいのですが、
TListView の OwnerData := True MultiSelect := True にして、
Shift や Ctrl を使った複数選択をすると、SelCount に 0 が代入されます。
本来ならば選択された数が入るはずなのですが…
また、普通にマウスによる範囲選択を行うと、ちゃんとSelCountに反映されます。

選択数が必要なので、取得したいのですが、ShiftやCtrlによる複数選択が使えないのは
辛いです。何か代替案等ありましたらよろしくお願いします。
0479450NGNG
すいません、訂正です。
Ctrlによる複数選択は SelCount に反映されるようです。
正しくは Shift で複数選択を行った時、でした。
0480デフォルトの名無しさんNGNG
>478
ああ、subitemの話じゃないのか。それなら477は関係なかった。
0481デフォルトの名無しさんNGNG
API直呼び。これ最強。つーかVCLのListViewバグが多いし
使えない機能もあるんでAPIに頼らないとダメなんだな。
0482デフォルトの名無しさんNGNG
そうかい
0483450NGNG
調べてみましたが、どうやらShift選択すると、Selectedにすら反映されないようです。
それで、>>481さんの言う通り、LVM_GETNEXTITEM で直接数えてみましたが、
やはりShift選択に限っては 0 になりました。

恐らく、仮想リストビューでShift選択しても反映されないのは、
Windowsの仕様(もしくはバグ)みたいなので、APIスレに行って参ります。
0484デフォルトの名無しさんNGNG
ぶっちゃけ、お前のバグが原因だ。まず、自分自身を疑え。話はそれからだ。
0485450NGNG
>>484
もちろん自分のプログラムの間違いの可能性もあったので、
一応簡単なテストプログラムも作りましたが、結果は同じでした。

もし何だったら試してみてください。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/lounge/file/1017673221_9/MultiSelectTest.zip
このプログラムを実行して、アイテムをShift+クリックなどで複数選択すると、
SelCount は 0 となりました。
0486469NGNG
関数で2つの値を返したいときはどうすればいいんでしょうか?
配列に入れて買えそうと思いましたが、
function() : Integerとか
function() : Arrayとか
やってもうまくいきません。
0487デフォルトの名無しさんNGNG
そういうときは、頭にvarを付けた配列またはレコード型の引数を使う
関数内で結果をその引数に代入すれば戻せる。
0488469NGNG
引数をポインタのようにして扱うという
ことなんでしょうか???
クラスにした方がいいような気がしてきました。
0489デフォルトの名無しさんNGNG
案その一
procedure 一度に二つの整数を返す関数 (var x, y : integer);
begin
 x := 1;
 y ;= 2;
end;
0490デフォルトの名無しさんNGNG
案その二
type
 二つの整数を保持する型 = record
  x, y : integer;
 end;

function 二つの整数を保持する型を返す関数 : 二つの整数を保持する型;
begin
 result.x := 1;
 result.y := 2;
end;
0491デフォルトの名無しさんNGNG
ちょっと先が思いやられるので、半日でいいから文法書を読みなさい。
基礎力付けとかないとこの先大変だぞ
0492デフォルトの名無しさんNGNG
ざっと試した感じ、Shiftを押して項目を選択すると、
いったん全体が解除されて、OnSelectItemが発生する。
このとき引数であるItemはnil(=全体)で、SelectedはFalse(=選択解除)。

>>485のソースだと、このときSelCountを表示してるので、0が表示される。

で、その後はOnSelectItemではなく、OnDataStateChangeが発生する。
ここでは選択範囲をインデックスで知ることができ、
SelCountにはちゃんと選択数が入っている。

つまりSelCountが0と表示されたのはバグでも何でもない。
全体解除されるタイミングがあり、そのタイミングで表示しただけのこと。
0493デフォルトの名無しさんNGNG
>485 MLに同じ質問があるから検索汁。
0494469NGNG
やっぱりくらすにした方がスマートなような気がする
戻り値を因数にするってのが
なんかいやだ〜〜
単なるこだわり
0495469NGNG
×因数
○引数
0496デフォルトの名無しさんNGNG
×いんすう
○ひきすう
0497デフォルトの名無しさんNGNG
いんすうでも間違いではない
0498デフォルトの名無しさんNGNG
>>497
うそだ
0499デフォルトの名無しさんNGNG
金地院崇伝
0500デフォルトの名無しさんNGNG
>>485
APIスレに投げた質問取り消しておけよ。
0501デフォルトの名無しさんNGNG
>>498
マジで最近は「いんすう」でも間違いではないらしい。
こだわるのは考えが古いのだろうか
0502デフォルトの名無しさんNGNG
http://www20.big.or.jp/~o-shin/bbs/bender/pg/pslg353.html
年寄りほど「いんすう」と呼ぶらしいから、そいつらこそ「いんすう」にこだわってるんじゃないか。
0503450NGNG
>>492
うは、なるほど。OnSelectItemで取得していたのが悪かったのですね… orz
OnDataStateChange で拾う事に致します。
詳しいご説明ありがとうございました。

>>493
既出でしたか…。申し訳ありません。検索したつもりでしたが、漏らしていたようです。

>>500
かしこまりました。

皆様お手数をかけてしまい、申し訳ありませんでした。
お陰様で、OwnerData の使い方が大分理解できました。
有難うございました。
0504デフォルトの名無しさんNGNG
ていうかそれくらいサンプル作っとけよ>某
0505デフォルトの名無しさんNGNG
いいえ、ちゃんとありますけど。
0506450NGNG
>>505
ほんとだ… orz
身を持って習得できたので悲しいけど嬉しいです。。。
0507デフォルトの名無しさんNGNG
Delphiのオブジェクト指向は
メンバーにクラスを持たせることができる仕様なんでしょうか・・・?
0508デフォルトの名無しさんNGNG
>>507
質問が曖昧なのでもう少し具体的に。
クラスのインスタンスを持たせたいのか
メタクラス(クラス参照)を持たせたいのか
クラス内でクラスを定義したいのか。
上の二つなら可能。一番下はDel8なら可能。
0509デフォルトの名無しさんNGNG
iniファイルを作成したく、作成先を
c:\Documents and settings\ユーザ名\

の下にしたいんですが、ユーザ名のところには何て書けばいいですか?
0510デフォルトの名無しさんNGNG
そんな所に作らない方がいいよ。
0511デフォルトの名無しさんNGNG
>>509
http://homepage1.nifty.com/MADIA/delphi/Win32API/ShFolder.htm

アプリのデータは
C:\Documents and Settings\ユーザ名\Application Data\アプリ名
かMy Documents\アプリ名
に作っとけ
0512デフォルトの名無しさんNGNG
コンパイル時に[エラー] Unit1.pas(33): 文字列の要素が 255 を超えましたというエラーがでるんですが、
回避する方法ってありますか?
0513デフォルトの名無しさんNGNG
>>508
ありがとうございました。
UML敵にどう書くのかなw
0514デフォルトの名無しさんNGNG
イメージ系のクラスが大量にあって
どれがどれだかわからなくなってくるのですが
うまくまとめているページありませんでしょうか。
0515デフォルトの名無しさんNGNG
>>512
s := 'たぶん閉じ忘れ;
0516デフォルトの名無しさんNGNG
>>515
いやクエリとか書いてて、マジで256以上なるんですよ。
んで、一つの句ごとに改行しているので、
なんかあまり美しくなくて。
0517デフォルトの名無しさんNGNG
>>512
・プロジェクト(P)-オプション(O...)で出てくる設定ウィンドウの コンパイラ タブにある
 「長い文字列を使う」にチェックを入れる。
・string[255]、ShortStringなどを使わず、普通にstringを使う。
・PCharを使う。

データベースの制限についてはわかりません。
0518デフォルトの名無しさんNGNG
Delphi5を使用しているのですが、
[エラー] XXXX.pas(2455): for ループ制御変数 'i' に代入しました
と表示されるのですが、DelphiだとFor文のループ制御変数に値を代入する
事はどうやっても出来ないのでしょうか(ノД`)

VBだと普通にi=5とか出来たのですが・・・。
0519デフォルトの名無しさんNGNG
>>518
できません。
while文かrepeat文を使いましょう。
0520デフォルトの名無しさんNGNG
>>519
出来ないのでしかー。
わかりますた。アリガトン
0521デフォルトの名無しさんNGNG
長い文字列定数の定義は、文字列リテラルを結合します。

longlong = '1......' +
 '................' +
 '................';

一行 1024 文字、ひとつの文字列リテラルが 255 の制限があるだけで
文字列定数そのものの制限は... 8192 文字までは試した覚えあり。

0522デフォルトの名無しさんNGNG
>>516
TQuery.Add('ほにゃらら');
とかで分割して入れたらOK!!
0523デフォルトの名無しさんNGNG
ははーん。
''の間はどうしても255文字までなんですね

ということは、そんなふうに分けないといけないのでつね。
なんか、あまり美しくないようなきもしますが・・・

さしあたりありがとうございました。
0524デフォルトの名無しさんNGNG
確認のために追加。
定数式の結合はコンパイル時に行われるので、ソース上で最長 255文字ごとに
改行が必要になるだけ。生成コードは最初からひとつの文字列になっています。
0525デフォルトの名無しさんNGNG
一部の引数の省略可能な関数・手続きはどうやって作ったらよいのでしょうか?
例えば、Inc関数なんかは
Inc(i);
でも
Inc(i,10);
でも使えますよね。こんなのを作りたいんです。

とりあえず、今はoverloadで全引数有りと一部引数抜きの2つを作ってごまかしているんですが
overloadを使わないで作る方法を教えてください。
0526デフォルトの名無しさんNGNG
procedure myinc(var i: integer; delta: integer = 1);
begin
 inc(i,delta);
end;

myinc(i);
myinc(i,10);
0527525NGNG
>>526
サンクスです。
実は、今自分で書いてたとこなんですが
質問してから自分でやってるうちに解決できました(泣
0528デフォルトの名無しさんNGNG
画像の拡大・縮小に
StretchBlt関数を使っているのですが
品質がいまいちです。
もっとよい品質で拡大・縮小をする方法はありませんでしょうか?
0529528NGNG
まさか自分で実装しなきゃいけないとかではないですよね・・・。
PHPみたいなスクリプト言語でさえ綺麗なサムネイルが
作成できる時代に・・・・。

ちなみにDelphi6 Personalです。
0530528NGNG
どうやら自分で
リサンプリングのコードを書いて
実装させる必要があるみたいですね・・・。
ひえー。
0531デフォルトの名無しさんNGNG
GDI+とかのライブラリを使えば良いのでは?
JEDIに定義ファイルがあったはず。
0532デフォルトの名無しさんNGNG
中村先生が画像関連のライブラリ公開してたような
0533デフォルトの名無しさんNGNG
>>529
逝ってよし。
0534デフォルトの名無しさんNGNG
HALFTONEは95/98じゃ使えないんだっけかな。まあこんなOS切り捨て(ry
0535デフォルトの名無しさんNGNG
>>528
ttp://hp.vector.co.jp/authors/VA015850/delphi/lib/index.html
ここの nstretchf.pas はどうでしょう。
0536Delフサギコ ◆A6VzDeLphI NGNG
 ∫,,,,,,,,,∧,,∧  今日も、もつかれー
⊂,,,,,,,,,つ,,゚Д゚ミつ

ちょっとメモリク話題が出たので
もいちど話だしときます
D6UP2済み環境です。

procedure TForm1.Button1Click(Sender: TObject);
begin
 CheckListBox1.Items.Add('テスト');
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
 CheckListBox1.Items[0] := 'テスト0'
end;

MemCheckしてるとButton2の方でメモリクしてる
警告が出ます。

回避策として一度DeleteしてそこにInsertすれば
よさそうですけど...

何か回避策とかありますか?
そもそもこれはバグ?漏れの環境だけ? 
0537デフォルトの名無しさんNGNG
実際漏れてるな
0538デフォルトの名無しさんNGNG
回避策
if CheckListBox1.count>0 then CheckListBox1.Items[0] := 'テスト0'
0539デフォルトの名無しさんNGNG
>>538
それ違う。Button2を押す前にButton1はもちろん押してるぞ。
0540デフォルトの名無しさんNGNG
TListBoxStrings.Putに2行追加

 InsertObject(Index, S, nil);
 P := Pointer(ListBox.InternalGetItemData(Index)); // 追加
 if P <> nil then SysFreeMem(P); // 追加
 ListBox.InternalSetItemData(Index, TempData);
 ListBox.ItemIndex := I;
end;

ソース書き換えない事には根本的な解決は�_ぽい。
フサギコの言うように、DeleteしてInsertとかするしか。
0541デフォルトの名無しさんNGNG
ポップアップメニューが表示されているかどうかを
判定する方法はありませんか?
0542デフォルトの名無しさんNGNG
Spy++
0543デフォルトの名無しさんNGNG
そのポップアップメニューは自分で表示したものです。
でも、モーダルダイアログと違っていつ閉じられるか
イベントがないのでどうしたらいいものかと
0544デフォルトの名無しさんNGNG
TPopupmenu.Popupでポップアップを表示すれば、制御が戻ったときがメニューを閉じたときだな。

別解。OnCloseContextMenuイベントの作り方。
 THonyarara = class(TWinControl)
 protected
  FOnCloseContextMenu: TNotifyEvent;
  procedure WMContextMenu(var Message: TWMContextMenu); message WM_CONTEXTMENU;
  procedure CloseContextMenu;
 public
  property OnCloseContextMenu: TNotifyEvent read FOnCloseContextMenu write FOnCloseContextMenu
 end;

procedure THonyarara.WMContextMenu(var message: TWMContextMenu);
begin
 inherited;
 CloseContextMenu;
end;

procedure THonyarara.CloseContextMenu;
begin
 if Assigned(FOnCloseContextMenu) then
  FOnCloseContextMenu(Self);
end;
0545デフォルトの名無しさんNGNG
こんな感じじゃ無理ですか?
if menuhoge = nil then
showmessage('メニューは表示されてないよ')
else
showmessage('メニューは表示されてるよ');
0546デフォルトの名無しさんNGNG
>>543
>>64
0547デフォルトの名無しさんNGNG
WM_EXITMENULOOPをメインウィンドウで拾えませんか?
0548ななしへたぐらま ◆XcB18Bks.Y NGNG
>>532
これでしょうか.
ttp://www.asahi-net.or.jp/~HA3T-NKMR/DGS/
フリーのライブラリがいろいろ揃うのはDelphiの良いところですね.
0549543NGNG
できました。ありが�d
0550デフォルトの名無しさんNGNG
Delphi5Proでソフトを作っているのですが、いつも必ず0による除算の
エラーが出てしまいます。
/で検索をかけても/はコメントと日付のセパレートとしてしか
使われていません。
F8の乱打ではとても追いつけないほどループを繰り返しているので、
F8も使えないのですが、0による除算のエラーがでる直前のところで
処理を止める方法はないでしょうか?
あるいはどこで0による除算のエラーが出たか知る方法はありませんか?

よろしくお願いします。
0551デフォルトの名無しさんNGNG
>>550
すこしづつ絞っていくことぐらいはできるのでは?
なお、 div も割り算です。
0552デフォルトの名無しさんNGNG
FireBird1.5を使ってるのですが、どこかでなるべくIBTableを
使わないほうがいいという書き込みを見たような気がします。
C/SではIBTableを使わないほうがいいんでしょうか?
予想レコードは10万件、同時接続クライアントは10件くらいです。

代替えにIBQueryかIBDataSetを使おうと思ったのですが、使い方が分かりません。
IBTableだとDataSourceと一つずつあればとりあえず動きますが、IBQueryとかだと
DataSourceと排他ですよね。ヘルプ見ても分からないので質問しますが、
DBコンポーネントと連携したいのですがどういった構成で使うものなんでしょう?
0553デフォルトの名無しさんNGNG
>WM_EXITMENULOOPをメインウィンドウで拾えませんか?

メインウィンドウのポップアップなら拾えるんでは。
その他のコントロールなら、それ自身で拾うか、>>64 とかフックとか
0554デフォルトの名無しさんNGNG
>>552
結局IBTableもクエリー流してるだけじゃないの、

といってみるテスト。
0555デフォルトの名無しさんNGNG
>>550
メモリ関係のエラーが発生した場合、無関係なエラーメッセージが出る場合がある。
配列操作やクラスの生成解放などで、怪しい所はないですか?
0556デフォルトの名無しさんNGNG
mod も割り算です。
0557デフォルトの名無しさんNGNG
質問です。
TListBox の Columns を設定すると、スクロールバーが水平方向しか出ないのですが
垂直方向にスクロールするようにはどうしたらよいでしょうか。
Style には lbVirtualOwnerDraw を指定して、仮想リスト+オーナードローで使ってます。
0558デフォルトの名無しさんNGNG
ScrollぼxにListぼxを乗せる。ではダメかね。
0559デフォルトの名無しさんNGNG
スクリーンショットを撮って保存する方法おせーて下さい
0560デフォルトの名無しさんNGNG
キーボードのPrint Screenを押してペイントに貼り付けて保存。
0561559NGNG
Delphiのコードでおながいします
0562デフォルトの名無しさんNGNG
begin
 Google;
end
0563559NGNG
すみません、ググったら意味不明なスクショが出てくるだけで解説が無いんです、、、
0564デフォルトの名無しさんNGNG
ttp://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/jpwinui/html/_win32_sendinput.asp
0565デフォルトの名無しさんNGNG
SavePictureDialogで
フィルターをたとえばjpgにしていたら、
ファイル名に拡張子を指定していない場合でも
自動的に.jpgという拡張子をつけて
保存するようにしたいと
考えているのですが、どのようにしたらいいのでしょうか?
0566565NGNG
Delphi6 Personalです。
0567デフォルトの名無しさんNGNG
>>565
DefaultExt
0568デフォルトの名無しさんNGNG
DefaultExt
0569567NGNG
>>568
幸せにしてね
0570565NGNG
if FileNameに拡張しか含まれていない then
  if FilterIndex =1 then
    DefaultExt := bmp
    FileName := Filename +'.'+ DefaultExt

みたいな面倒なことしなきゃだめなんでしょうか??
もっとスマートな方法ってありますか?
0571デフォルトの名無しさんNGNG
>>570
FileNameに何が返ってくるのか試してみたのか?

それじゃD6インストールしてませんって言ってるようなもんだぞ?
0572565NGNG
ためしてみました。
てことは、やっぱりこの面倒な方法しかないんですね・・・・・
0573デフォルトの名無しさんNGNG
PictureDialogで
bmp、jpeg以外の画像をクリックすると
デバッグでエラーがでてしまいます。
このエラーを回避するにはどうしたらいいのでしょうか?
(エラーを出さずに、単に「なし」と表示させたい)
0574デフォルトの名無しさんNGNG
Filterをbmp、jpegだけにするのはダメなの?
0575デフォルトの名無しさんNGNG
ちょっとお尋ねします。

bmpをクリップボードにコピーして、
他のソフトから読めるようにする方法を
説したサイトなんてないですか?
0576デフォルトの名無しさんNGNG
ヘルプ
0577デフォルトの名無しさんNGNG
ヘルプを読むと分かるよ

uses
Clipbrd;

procedure TForm1.Button1Click(Sender: TObject);
var
bmp:TBitmap;
begin
bmp := TBitmap.Create;
try
bmp.LoadFromFile('C:\Test.bmp');
Clipboard.Assign(bmp);
finally
bmp.Free;
end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
if Clipboard.HasFormat(CF_BITMAP) then Image1.Picture.Bitmap.Assign(Clipboard);
end;
0578デフォルトの名無しさんNGNG
画像を開いて表示するだけのソフトなのですが、
Formのサイズをautosizeにしていたときは大丈夫だったのですが、
画像を開くと同時にその画像の高さ・幅をformの高さ、幅に
指定するように書き直したところ、
画像を開いた瞬間にWindowsXPのVisualStyleが
適用されないウィンドウに変化してしまうようになりました。
これはどうしたらいいのでしょうか?
0579578NGNG
Delphi6 Personalです。
0580578NGNG
どうやらスクロールバーがでるような操作をすると、
Visual Styleが無効になっているみたいです。
何か参考となる情報
0581デフォルトの名無しさんNGNG
ScrollBox つかったら
0582578NGNG
ScrollBoxを使うとうまくいきますが、
ユーザーが故意にウィンドウサイズを変更して
スクロールバーがでるような
状態になったときにやはり
VisualStyleが適用されないウィンドウに
なってしまいます。
これはDelphi6の仕様上どうしようもない
現象なのでしょうか。
0583デフォルトの名無しさんNGNG
ScrollBox の Align を alClient にするだけ
0584デフォルトの名無しさんNGNG
Updateで直ったような気がするけど?
0585578NGNG
Updateしてみます。
ただいまダウンロード中・・
0586578NGNG
UPdate Pack#2までいれたら
VS適用されました!!
0587575NGNG
>>577
ありがとうございます。
やっぱりその方法ですか。

以前、その通りにやって、クリップボードにコピーされたはずのbmpが
他のグラフィックソフトで貼り付けできない(というか、「貼り付け」メニュー
項目がアクティブにならない)ことがあったので。。。

もう一度やっています。
0588デフォルトの名無しさんNGNG
単純な画像ビューアーをつくっています。
画像が表示されていないときは
メニューのコピーや切り取りをつenable := falseにして
画像が表示されていたらtrueにしたいとおもってます。
「開く」メニューや「閉じる」ボタンにいちいち
その処理を書いていくのは面倒なので
ユーザーが何かの操作をしたときに毎回
Imageがからかどうかを確かめてそれによってメニューが
使えるかどうかを設定したいと思っています。
そこでユーザーが何かの操作をしたときに毎回
呼び出されるようなプロージャってあるのでしょうか?
0589デフォルトの名無しさんNGNG
OnMouseDownやOnClick等のイベントから共通の関数を呼ぶようにすればよいだけ。
0590デフォルトの名無しさんNGNG
その機能を手続き化しておいて
「開く」や「閉じる」の中でその手続きを呼び出す。
これすら面倒というのならつける薬はないだろ。
0591デフォルトの名無しさんNGNG
>>588
メニューの項目の Enabled を決定するのは、それがぶら下がっている項目の
OnClick イベントで表示される直前に。

それ以外の方法では面倒
0592デフォルトの名無しさんNGNG
やっぱりいちいちすべてのメニュー、操作に
編集を加えなきゃだめですか。
了解しました。
0593デフォルトの名無しさんNGNG
TActin/TActionList使っとけ。
0594デフォルトの名無しさんNGNG
>>592
いちいちって・・・普通だけど
0595デフォルトの名無しさんNGNG
>>593
試してみます。

>>594
同じ動作をいろいろなところに分散させて記述するのは
仕様を変更したり機能を拡張したりするときの
バグの元になります。
0596デフォルトの名無しさんNGNG
1カ所にまとめてそれを呼び出すんだよ
0597ななしへたぐらま ◆XcB18Bks.Y NGNG
>>557
Windowsのリストボックスは縦スクロールか横スクロールしかできないと思います.
グリッドではだめですか?
0598557NGNG
すいません、>>558さんのレスに気づかずに読み飛ばしていました… orz

>>558,597
えと、申し訳ありません。どうも自分の使い方にはTListViewの方が
あっているようなのです。

ただ、TListViewでは大きなアイコン表示でオーナードローする際に、
アイコンとアイコンの間隔がWindowsの設定のものになってしまうので、
それをアプリケーション側から(Windowsの設定を弄ることなく)決めたいと思っています。
これは、可能でしょうか。もし可能ならば、具体的にはどのようにすれば良いでしょうか?
また、ImageListを設定せずに、1項目のサイズを設定する方法はあるのでしょうか?
0599デフォルトの名無しさんNGNG
それ TDrawGrid の方がよさそうだけど
0600デフォルトの名無しさんNGNG
とても困っててすみません、MemoryStreamに入っているデータを↓のextに渡したいんですけど、
どうすればいいのでしょうか?配列を渡す事はできたのですが(↓の例)、
MemoryStream内のデータの渡し方がわかりません。
extの引数は変更できないので、渡す前にどうにかしたいのですけど・・・

procedure TForm1.test;
var
aaa:array [0..5] of Char;
begin
aaaに値を入れて・・・
ext(aaa);
end;

procedure TForm1.ext(test:array of char);
begin
end;
0601デフォルトの名無しさんNGNG
TPageControl/TTabControlのMultiSelectedがTrueの場合
どうやって選択しているタブを取得するのでしょうか?
0602デフォルトの名無しさんNGNG
>>600
Delphi相談室(上級者用)その12
http://pc5.2ch.net/test/read.cgi/tech/1064766880/560
0603デフォルトの名無しさんNGNG
Del4のgraphsv3は、Del7ではどうなりましたか?
0604デフォルトの名無しさんNGNG
>>600

aaa[0]に6バイト分読み込む
0605デフォルトの名無しさんNGNG
>>600
提示されているコードに MemoryStream が見当たらないが。

初心者が落ちる良くあるポイント。
関数/手続き/メソッドの引数内で配列を定義しないこと。
C/C++ と異なり、それぞれの定義はそれぞれ別の型を生む。

事前に
type
 TArrayOfSixChar = array [0..5] of Char;
とでもしておけば、

procedure TForm1.test;
var
 aaa: TArrayOfSixChar
begin
 //aaaに値を入れて・・・
 ext(aaa);
end;

procedure TForm1.ext(test: TArrayOfSixChar);

とできるだろう。
0606デフォルトの名無しさんNGNG
勘違いしてるぞ
0607603NGNG
TGraph が見当たらないんですが、
どうしたら良いんでしょうか?
0608デフォルトの名無しさんNGNG
>>605
すみません、おおざっぱに抜粋し過ぎました。
605さんのその方法はよくわかります。
しかし、ストリームのデータサイズが不定のため、その方法は
やりたくないんです。
うまいことキャストとかしてStream.Memory(要はPointer型)を
引数であるarray of Charに渡したいんです。
0609デフォルトの名無しさんNGNG
>しかし、ストリームのデータサイズが不定のため、その方法は
>やりたくないんです。

意味不明。不定だからこそ

type
 TArrayOfSixChar = array of Char;

にしておいて SetLength() するべき。ポインタはメモリ上の一点の位置を指してる
だけ。array of char のようなものをわたしたいんなら、内容をコピーしないと。



0610デフォルトの名無しさんNGNG
>>609
あ、あ、あなた様はもしや・・・
いや間違いない。絶対そうだ。
あっちでお願いします。

意味不明ですみませんでした。
type
 TArrayOfSixChar = array of Char;
これでやると
渡される方もこうしないとダメですよね。
array of Charのままじゃ無理ですもんね。
・・・渡される方が変更できないんです・・・
0611デフォルトの名無しさんNGNG
マルチポストは嫌いじゃ
0612デフォルトの名無しさんNGNG
>>610-611
自分、array of Charの引数渡しを質問出したけど、609は別人だよ。
0613ななしへたぐらま ◆XcB18Bks.Y NGNG
>>598
やってみた.(Delphi 5 Pro@WinXP SP1で確認)
リストビューの項目にPositionプロパティに表示させたい座標を指定することで任意の間隔で配置できる模様.以下サンプル.

//●リストビューのアイコンを配置し直すメソッド
procedure TForm1.ArrangeListItems;
const cColumns = 4; cXPitch = 128; cYPitch = 160; // 横項目数,横間隔,縦間隔
var i, ix, iy: integer;
begin
 ListView1.Items.BeginUpdate;
 try
  for i := 0 to pred(ListView1.Items.Count) do
   ListView1.Items.Item[i].Position := Point((i mod cColumns) * cXPitch, (i div cColumns) * cYPitch);
 finally
  ListView1.Items.EndUpdate;
 end;
end;
0614デフォルトの名無しさんNGNG
IEコンポーネントの使い方を解説したサイト
キボンヌ
0615デフォルトの名無しさんNGNG
2chブラウザのサイト
0616デフォルトの名無しさんNGNG
Free Pascal Compilerのドキュメントの日本語訳はどこにありますか?
穂積一平さんのサイトにあるようですが、見つかりません。
0617デフォルトの名無しさんNGNG
マルチポストは人間のクズ
0618デフォルトの名無しさんNGNG
一週間粘ってだめだったら書き込もうと思ってて、だめだったので書き込ませてもらいます。
プログラミングをはじめたのが上記のとおりの真性初心者なんですけど
(ifとforをやっと理解できた程度の雑魚です。。。)
BUTTONを押したら他のアプリケーションが複数機動できるようにしたいのですが、
どういうコマンドがありますか??
本当にへぼい質問ですいません。ご教授のほどよろしくお願いします。
0619デフォルトの名無しさんNGNG
ShellExecute
0620618NGNG
>>619
ShellExecute(絶対パス)
でいいのでしょうか??
0621デフォルトの名無しさんNGNG
>>620
http://www.google.co.jp/search?hl=ja&ie=UTF-8&q=ShellExecute+delphi&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=lang_ja
ヒントもらったら、検索してみましょう。
0622デフォルトの名無しさんNGNG
スタイル付きのテキストを編集・表示したいのですが
どうしたらよいのでしょうか?
メモ帳の拡張版みたいなのを作りたいと思ってます。
0623618NGNG
>>621
そうですね。教えて君ですみませんでした↓↓以降気をつけます!!
0624デフォルトの名無しさんNGNG
Fortran ⇒ MS-C ⇒ VB6 とプログラミングしてきたんですけど
Delphi6がわからないです。。。orz

秀和システムの「基礎からわかるDelphi6」を買ったんですけど
いまいちで。。。
ギコナビ・プロジェクトははるか先です(涙)

初心者にナイスな本を教えてください。
お願いします。
0625デフォルトの名無しさんNGNG
VB6がわかればDelphiもわかると思うけどな
0626624NGNG
>>625
コードの書き方というか、とっかりになるような本ありませんか。
0627616NGNG
マルチポストではありません(´Д`)
0628デフォルトの名無しさんNGNG
>>624
開発者ガイド端から読んどけ
0629デフォルトの名無しさんNGNG
>>626
VBで作ったものを移植してみる。
0630デフォルトの名無しさんNGNG
>>624
塚越本(はじめてのDelphi,Delphiオブジェクト指向プログラミング)がおすすめ。
はじめて…は絶版だったかな?
コンソールアプリを多用していて一見とっつきにくそうだが
余計なものがない分すごく分かりやすい。そして…
Delphiに慣れてくるとVB6に対して今までと違う感情を抱くようになるw
0631デフォルトの名無しさんNGNG
7,8年前の本がオススメって、なんかむなしいな。
0632ななしへたぐらま ◆XcB18Bks.Y NGNG
>>626 = >624
『コードの書き方』というのが漠然としていて何を指すのかがはっきりしませんが,
言語仕様をお知りになりたいのでしたらオンラインヘルプの
『Object Pascal言語ガイド』をご覧ください.

できればどこまでできてどこでつまずいているかを具体的に書いていただければ
より適切なアドバイスのレスが返ってくるのではないかと思います.
0633デフォルトの名無しさんNGNG
http://bookweb.kinokuniya.co.jp/guest/cgi-bin/wsea.cgi?USID=&skey=1&KEYWORD=delphi%83I%83u%83W%83F%83N%83g
ま、仕方ねーんじゃないのか。
良本は時を経ても良本で、糞本は永遠に糞本。
日本語うまくて、なにからなにまでわかってて、しったかせずに全部教えてくれる人は少ない、
っつーか国内じゃ塚越+2人しかいねーと思う。
0634デフォルトの名無しさんNGNG
アフェリとかじゃねーから是非買ってくれよ。
delphiがもっと楽しくなるぜ。
怪しいと思うなら、紀伊国屋書店で検索な。
0635デフォルトの名無しさんNGNG
基本的に分厚い本を買ってくれば
上達した後でも辞書がわりに使えたりして便利。
初心者向きの薄めの本はわかりやすいし、たくさんの機能を紹介してるけど
広く浅くしか紹介してないから
ちょっと突っ込んだことやろうとするといきなり情報がなくなる。
それに、分厚い本といっても1ページ目から全部読む必要はない
自分が面白そうだと思ったところだけ読めばいい
今は興味がなくてわけがわからないところも
レベルが上がってくれば意味がわかるようになるし
個人的には分厚い本がお勧め。
0636635NGNG
ああ、薄い目の本だけど塚越さんの本は確かにいいよ。
あれも辞書代わりに使える。
クラス設計のところが非常細かくて、ちょうどクラスに興味のあったころだったから
自作クラス作る際のいい教科書になった。

薄い本で使えないと思ったのは、「Delphiの奇跡」とか「Windows98ではじめるDelphiプログラミング」とか・・
0637デフォルトの名無しさんNGNG
基礎からわかるDelphi6って本を買おうか迷ってる。
これってどう?
0638デフォルトの名無しさんNGNG
amazon のカスタマーレビューをどうぞ

http://www.amazon.co.jp/exec/obidos/tg/detail/-/books/4798002518/customer-reviews/ref=cm_cr_dp_1_1/250-0148492-1276277
0639デフォルトの名無しさんNGNG
持ってる。
絶対駄目。買っちゃ駄目。
455ページ中300ページくらいゴミが混ざってるので、実質150ページしか無いし、その150ページもイマイチ〜平凡。
http://kakinotane.s7.xrea.com/
ここ全部やればそれ以上のものが見につく。
0640デフォルトの名無しさんNGNG
http://www.amazon.co.jp/exec/obidos/ASIN/4774104272/qid%3D1096086978/249-2217831-0483562
ご参考までに
0641デフォルトの名無しさんNGNG
>>638
あ、そこ見るの忘れてたー。やっぱAmazonの評価見て買った方がいいんですかね。
>>639
さいですか、ありがとうございます。
とりあえず、そこのページを見て学習してみようかな。
>>640
なんか信用しがたいレビューですな(汗
0642デフォルトの名無しさんNGNG
フォントの変更だけができる
WYSSIGなHTMLエディタ
を作ろうと思っているのですが
どうしたらいいのか
途方に暮れています。
何かヒントになる情報をください。
0643デフォルトの名無しさんNGNG
Delphiを使った「プログラミング」の入門書
ありせんか?
Delphi6Personalで
0644デフォルトの名無しさんNGNG
StringReplace関数でワイルドカードを指定することはできないのでしょうか?
たとえば
abではじまってssで終わる文字列を置換したいときは
ab*ssと指定するとか。
このようなことができる別の関数があれば教えて頂きたいです。
0645デフォルトの名無しさんNGNG
どうやらできないみたいですね。
Delphiつかえねーーー
0646デフォルトの名無しさんNGNG
ary_str: array of string
SetLength(ary_str, 3);
ary_str[1] := '111111';
ary_str[2] := '222222';
ary_str[3] := '333333';

であるとして、SetLength(ary_str, 0);をしたとき
'111111'や'222222'の使っていたメモリってちゃんと解放されるのでしょうか?
いや、普通に考えると解放されるはずで解放されないとすげー困るんですけど、
ヘルプのどこを探しても解放されると書いてなくて気になってるんです
0647デフォルトの名無しさんNGNG
0 からだよ
0648デフォルトの名無しさんNGNG
気にする必要ない。ローカル変数でルーチン外に出たときほんとに解放されている
かどうか気にしないだろ。それと同じ。
0649デフォルトの名無しさんNGNG
>>644
>StringReplace関数でワイルドカードを指定することはできないのでしょうか?

できませんね。

>abではじまってssで終わる文字列を置換したいときはab*ssと指定するとか。

「abではじまってssで終わる文字列」を検索する関数をつくる
んで
その結果を使って置換する。

これは簡単。
0650デフォルトの名無しさんNGNG
>>645

標準の関数や他人のつくった関数だけをつかって問題を解決しようとすると、Delphi
に限らずすぐ行き詰まります。自分の頭をつかって関数をつくる事から始めるといろ
いろ出来るようになります。Delphi は文字列の扱いが得意とは言えないけど、それ
なりにやりたいことはできると思うんですけど。
0651デフォルトの名無しさんNGNG
>>650
相手するな。したければこちらへ誘導の上存分にやってくれ。

ミ,,゚Д゚彡フサギコのフサフサDelphi談話室その15
http://pc5.2ch.net/test/read.cgi/tech/1095399719/
0652デフォルトの名無しさんNGNG
>>650
>Delphi は文字列の扱いが得意とは言えない
冗談も休み休み言え
0653デフォルトの名無しさんNGNG
休み

休み
0654645NGNG
コンポーネントのメソッドじゃない
Delphiの関数ってどこかにまとめられていたりしませんか?
0655645NGNG
>>652
得意ではないと思いますよ。
いままでPHPつかってたんで
そこはすごく感じます。
0656デフォルトの名無しさんNGNG
>>654
ヘルプに機能別の索引があるはずだけど
0657デフォルトの名無しさんNGNG
PerlやPython、Ruby なんかのスクリプト言語は、テキストいじるためにあるような
ものなので、Delphiより文字列操作は楽だよね。
0658デフォルトの名無しさんNGNG
>>653
冗談はどうした、冗談は。
0659デフォルトの名無しさんNGNG
まだ休み中・・・
0660デフォルトの名無しさんNGNG
スクリプトと一緒にすんなバカ
0661デフォルトの名無しさんNGNG
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが、
お礼はDelphiの布教と初心者の救済をお願いします。
0662デフォルトの名無しさんNGNG
スクリプトより劣ってるのが気にくわないみたいだな。
0663デフォルトの名無しさんNGNG
Delphi は文字列の扱いが得意とは言えないだろ。
0664デフォルトの名無しさんNGNG
スレ違いですよ

Delphi覚えたけど何の役にもたたんね
http://pc5.2ch.net/test/read.cgi/tech/1095115109/
0665デフォルトの名無しさんNGNG
>>660
みたいなコンパイラ信者はどうにかならんかね
0666デフォルトの名無しさんNGNG
>>665
いってる意味が分からんけど超初心者スレだから許す
0667デフォルトの名無しさんNGNG
コンパイラ型の言語をマンセーし、インタプリタ型を見下すアフォのことだよ
0668デフォルトの名無しさんNGNG
うむ。
それぞれの長所、短所を見極めずに
やれスクリプトは糞だのインタプリタは糞だのと喚く
コンパイラ型とインタプリタ型というので言語比較してる時点でアレだな
0669デフォルトの名無しさんNGNG
なんか香ばしいのがいますね
0670645NGNG
>>649

> 「abではじまってssで終わる文字列」を検索する関数をつくる

この関数を作りたいのですがどの関数を使えばいいんでしょうか?
ヘルプで正規表現で検索したり
googleでDelphi 正規表現で検索したりしていますが
それらしい物がでてきません。
もし、こういった関数やコンポーネントが列記されているリファレンス
があれば教えてほしいです。
ちなみに今は
・カンタン!Delphiプログラミング
・はじめてのObjectPacalプログラミング
という本を参考にしながら勉強していますが
両方の本ともイマイチです。
0671デフォルトの名無しさんNGNG
>>670

ヘルプの

文字列処理ルーチン
文字列処理ルーチン(ヌルで終わる)

が参考になります。

自分がつくるとしたら AnsiStrPos() を使うでしょうね。
0672デフォルトの名無しさんNGNG
>670
TRegExprでぐぐってみな。
0673671NGNG
つくってみた。例外処理はなし、たたき台ということで。

TSearchData = record
  Pos:integer;
  Length:integer;
end;

TSearchDataArr = array[0..1000] of TSearchData;

function SearchStr2(const Str,StStr,SpStr:string;var SD:TSearchDataArr):integer;
var
  pInit,pStStr,pSpStr,pSt,pSp,pS:PChar;
  StLen,SpLen:integer;
begin
  result := 0;
  pInit := PChar(Str);pStStr := PChar(StStr);pSpStr := PChar(SpStr);
  StLen := Length(StStr);SpLen := Length(SpStr);
  pS := PInit;
  while true do begin
    pSt := AnsiStrPos(pS,pStStr);
    if pSt = nil then Break;
    pS := pSt+StLen;
    pSp := AnsiStrPos(pS,pSpStr);
    if pSp = nil then Break;
    SD[result].Pos := integer(pSt-PInit)+1;
    SD[result].Length := Integer(pSp-pSt)+SpLen;
    Inc(result);
    pS := pSp+SpLen;
  end;
end;
0674671NGNG
つづき。実行例

procedure TForm1.Button2Click(Sender: TObject);
var
  SD:TSearchDataArr;
  i,num:integer;
  Str:string;
begin
  Str := Memo1.Text;
  num := SearchStr2(Str,'正','現',SD);
  if num > 0 then
    for i := num-1 downto 0 do begin
      Delete(Str,SD[i].Pos,SD[i].Length);
      Insert('せいきひょうげん',Str,SD[i].Pos);
    end;
  Memo2.Text := Str;
end;

結果

[変換前 Memo1.Text]
ヘルプで正規表現で検索したり
googleでDelphi 正規表現で検索したりしていますが
それらしい物がでてきません。

[変換後 memo2.Text]
ヘルプでせいきひょうげんで検索したり
googleでDelphi せいきひょうげんで検索したりしていますが
それらしい物がでてきません。
0675デフォルトの名無しさんNGNG
RegExprじゃ読めねえからRegExにすれと何度(ry
0676デフォルトの名無しさんNGNG
IEコンポーネントで
URLを開くんじゃなくて
文字列を引数として与えると
それをレンダリングしてくれるような
関数ってないのでしょうか?
HTMLエディタにプレビュー機能をつけたいと思っています。
0677デフォルトの名無しさんNGNG
DOM
0678デフォルトの名無しさんNGNG
>667-668
VB畑の方ですか?
0679デフォルトの名無しさんNGNG
Delphi C++ 関係のものですが
0680デフォルトの名無しさんNGNG
というか、スクリプト糞、インタプリタ糞なんて
誰もいってないけどね。
何か嫌なトラウマでもあんのだろうか。
0681デフォルトの名無しさんNGNG
↑上手く逃げたね
0682デフォルトの名無しさんNGNG
いや、実際 PythonとかLuaとかDmonkeyとかで遊ぶの好きだし
0683デフォルトの名無しさんNGNG
誰もそんなこと聞いてない
0684デフォルトの名無しさんNGNG
>>676
そういう場合たいていのソフトは一旦HTMLファイルに書き出して
そのファイルをIEコンポで開いてるよ
0685デフォルトの名無しさんNGNG
代案厨キタ━━━━(゚∀゚)━━━━ッ!!
0686デフォルトの名無しさんNGNG
>>685
実装できるなら何でもいいよ
0687デフォルトの名無しさんNGNG
>>685
おまえは相変わらず無意味なことばっかり言ってるな
0688デフォルトの名無しさんNGNG
なんか最近変なのがはみ出してきてるな
0689デフォルトの名無しさんNGNG
なんか香ばしいのがいるな
0690デフォルトの名無しさんNGNG
676=685
0691676NGNG
知らないなら黙っててもらえますか?
スレが無駄に荒れると他の人にも迷惑なので。
0692デフォルトの名無しさんNGNG
夏はもう終わりました
0693デフォルトの名無しさんNGNG
スルー
0694デフォルトの名無しさんNGNG
自分で自分の首絞めるマゾはスルー
0695デフォルトの名無しさんNGNG
ボタンアイコンの素材集って
どこかにおちていませんかね。
自分で作成しようと思ったのですが
センスのなさに愕然としてしまいましたよ・・・。
Janeみたいなカコイイアイコンほしい・・・。
0696デフォルトの名無しさんNGNG
>>695
それはスレ違いかな
0697695NGNG
そうですね・・・
Delphi関係ないですもんね・・・
よかったらスレ誘導してください・・・・
0698デフォルトの名無しさんNGNG
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/lounge/file/999486538_17/glyphs.zip
0699デフォルトの名無しさんNGNG
>>676
Monazilla の資料室あたりにあった気がする
0700デフォルトの名無しさんNGNG
>>699
ありました
ありがとうございました
0701デフォルトの名無しさんNGNG
TreeViewで使うノードのアイコンを変えたい
(カテゴリとノードで変えたい)
のですがどのようにしたらいいのでしょうか。
0702デフォルトの名無しさんNGNG
おい、苺きんたまとかいうウイルス作ったのDelphianらしいじゃねーか
責任取れよお目ーら
0703デフォルトの名無しさんNGNG
デルファイアン?
デルフィアン?
デルファイラー?
デルフィラー?
デルファイニャン?
デルフィニャン?
0704デフォルトの名無しさんNGNG
delphiなら簡単に作れるね
0705デフォルトの名無しさんNGNG
タダだしな・・
0706デフォルトの名無しさんNGNG
delphiは阿呆にやさしい言語
VBについで
0707デフォルトの名無しさんNGNG
阿呆にも
0708デフォルトの名無しさんNGNG
おなじことするのにわざわざやさしくない言語を使うヤツは阿呆以下だな
0709デフォルトの名無しさんNGNG
阿呆以下つーかマゾ
0710デフォルトの名無しさんNGNG
function Tfoo.baa: Thoge;
var
h: Thoge;
begin
h := Thoge.Create;
h.Assign(Self);
Result := h;
end;

というようなコードを見かけたのですが、
はじめから Result に Thoge.Create せずに
ローカル変数をはさんだほうがよいのですか?
0711デフォルトの名無しさんNGNG
なんちゅう日本語だ
0712デフォルトの名無しさんNGNG
好みによりけり。
0713デフォルトの名無しさんNGNG
それだけのコードであれば明らかにhは不要。
単に試行錯誤した過程が残ってるだけだったり。
0714デフォルトの名無しさんNGNG
Delphiの仕様がわからない。。。
Enter押しても改行しなかったり改行しなかったり改行しなかったり・・・。
0715デフォルトの名無しさんNGNG
独り言はどっか別なところでやってくれ
0716デフォルトの名無しさんNGNG
>>714
何がしたくてどういう状況でEnterを押したのかぐらい書いてもらわないと
それだけでは何にもわからない

まさしく独り言だ。
0717デフォルトの名無しさんNGNG
プログラムの知識が皆無に近いんだケドも、興味本位でデルファイDLしてきました。
ヘルプ見ながらがんばればそこそこプログラムできる様になれるでしょうか?
0718デフォルトの名無しさんNGNG
ヘルプだけじゃつらいよ
オンラインの入門サイトがいくつかあるからそこら辺眺めとくといいよ
0719デフォルトの名無しさんNGNG
>>718
おお、、オンラインかぁ。2ちゃんでは勉強できないかな。なんかギコナビ気にいっちゃって、使いたくてしょうが無かったり・・。
0720デフォルトの名無しさんNGNG
2chはアフォが多いので初心者には正直おすすめできない
(2ちゃんねらーすべてがアホという意味ではない)
0721デフォルトの名無しさんNGNG
>>720
見てるとおっかしぃ事、いっぱい書いてあるね。まぁ仲良くやろ〜や。

んで、さっそくこんなサイト、見つけたので報告。

http://www.geocities.co.jp/SiliconValley-SanJose/2560/delphi4/index.htm

ちょっと古いのかもしれないけれど、ここを参考に1からやってみまっす。


0722デフォルトの名無しさんNGNG
>>710
try〜exceptブロックをはさんだほうがよい。
0723デフォルトの名無しさんNGNG
一概にそうは言えない
0724デフォルトの名無しさんNGNG
クラスコンストラクタ内で例外を生成した場合、
当該クラスのインスタンスに割り当てられるべきだったメモリは自動的に開放されますか?
0725デフォルトの名無しさんNGNG
>>723
どうして?

>>724
意味が解らないからコード例だして。
0726デフォルトの名無しさんNGNG
>>724
インスタンスのメモリが割り当てられてから、コンストラクタが呼ばれます。
コンストラクタの実行中に例外が生成された場合,デストラクタが自動的に
呼び出されてインスタンス・メモリが解放されます。
0727デフォルトの名無しさんNGNG
TreeViewコンポーネントのノードに
URLやファイル名のデータを関連づけて
保存したいのですが
どうしたらいいのでしょうか
0728デフォルトの名無しさんNGNG
NodePath1/NodePath2/NodePath3=C:\Windows\Calc.exe
みたいにINIファイルに書き出したら
0729デフォルトの名無しさんNGNG
NodePathっていうのはどこから取得できるんでしょうか・・
0730デフォルトの名無しさんNGNG
ちなみにTextプロパティはかぶってもいい仕様です。
0731デフォルトの名無しさんNGNG
>>727

TStringList にURLを保持して、Node の Data のそのインデックスをキャスト
0732デフォルトの名無しさんNGNG
やっぱりそうするしかないですか。
TreeViewのメソッドにそんな機能の物が
あるだろうとおもっていたのですが・・。
自分で実装するしかないようですね。
ありがとうございました。
ちょっとPHPになれすぎてしまったようです。
0733デフォルトの名無しさんNGNG
Delphiはオブジェクト指向度が低いから
オブジェクトの永続化も満足にできないんだよ。
0734デフォルトの名無しさんNGNG
>>732

そう。index ゼロはダミーにしてつかわないように。保存・読み込みは

http://www.lmc-mediaagentur.de/dpool/tips/0703.htm

を参考にして Stream の LoadFromFile SaveToFile を使う。一番内側のループ
で Data プロパティーをキャストして WriteInteger ReadInteger してください

URL をほじした TStringList を別に保存するのがいやなら、インデックスではなく
文字列そのものを WriteString しておき、読み出し時に ReadString で読み出して
改めて関連付けしてもいい
0735デフォルトの名無しさんNGNG
>>733

TreeView は Windows のコモンコントロール、Delphi はラップしてるだけ。
Windows のオブジェクト指向度が低いから、とはいえるかも
0736デフォルトの名無しさんNGNG
>>733
そんなエサで(ry
0737 ◆R.3bEnaric NGNG
おはようございまs^^
0738デフォルトの名無しさんNGNG
Delphi7のコンソールアプリケーションで、コンソールを非表示にする方法ってありますか?
(バックグラウンドで実行されるような感じにしたい)

初めてDelphi触ってるんで混乱中 orz
0739デフォルトの名無しさんNGNG
まぁbcc32で言うなら-Wオプションをつけてコンパイルry
0740デフォルトの名無しさんNGNG
システムの、警告のサウンドなんかを再生するには、どうすればいんでしょね?
0741デフォルトの名無しさんNGNG
>>740
MessageBeep(MB_ICONASTERISK);
0742デフォルトの名無しさんNGNG
背景の上にEditボックスを置いてるんですが、
Editボックスを透明にすることはできないでしょうか?
borderを消すことはできたんですが。
Styleがないので、bsClearとかは使えないですよね
0743デフォルトの名無しさんNGNG
「透明」をもう少し説明しないとレスが付かないヨカーン。
0744デフォルトの名無しさんNGNG
透過ということです
TLabelでいうTransparentみたいなプロパティが、TEditにないかと思って
でもプロパティにないってことはないということなんでしょうかね
0745デフォルトの名無しさんNGNG
XP特製ボタンとでも呼ぶのか、あのふちの丸いボタンってコンポーネントでありますでしょうか?
0746デフォルトの名無しさんNGNG
>コンソールを非表示にする方法ってありますか?

コンソールモードを OFF にしてコンパイル。

Win32 のコンソールモードは、アプリ起動時にコンソールが開くかどうかの違いしかない。
writeln などのコンソールとの読み書きを行わないアプリならコンソールモードでなくても
問題ない。

逆に、デバッグの時とかで VCL アプリをコンソールモードでビルドする場合もある。
0747デフォルトの名無しさんNGNG
>>741
ありがとう!鳴りました。
0748デフォルトの名無しさんNGNG
Delphi6のPersonalでは、データベースを作る事は無理なんでしょうか?
Proからで無いと無理な様な事を見た気がしたのですが、簡単な物でも作れればと思って。
0749デフォルトの名無しさんNGNG
DB対応コンポーネントが使えないだけでコード上からならいくらでも使えます。
例えばMSDE2000をインストールしてADOのタイプライブラリ取り込みして使うとか。
0750デフォルトの名無しさんNGNG
ようするにできません。
0751デフォルトの名無しさんNGNG
ま、がんがって。
ttp://hp.vector.co.jp/authors/VA036663/dbmsbyd6p.htm
0752デフォルトの名無しさんNGNG
Interbase(Firebird)に論理型が無いのですがどうすればよいですか?
DBCheckBoxを使いたいのです。
0753デフォルトの名無しさんNGNG
smallintで代用する。
値を判定してDBCheckBoxに相当する表示を工夫する。
0754デフォルトの名無しさんNGNG
ttp://www.progdigy.com/UIB/index.html
0755デフォルトの名無しさんNGNG
TreeViewのノードを一意に決定できるプロパティって
ないんでしょうか?
オブジェクトを永続化しようとして躓いています。
0756デフォルトの名無しさんNGNG
回答しても応答しないから、もうしない
0757デフォルトの名無しさんNGNG
短気になるな
0758デフォルトの名無しさんNGNG
人にモノを訊いて答えをもらっても返事をせずに立ち去る、ってリアル世界では
あり得ない。でも、ここに限らずWEB上では日常茶飯事なのよね。まっ、回答する
ほうも勝手にしているわけだけど。
0759デフォルトの名無しさんNGNG
>>755
オブジェクトの永続化って、具体的にどういう意味?
SaveToFile LoadFromFile とかと関係ある?
0760デフォルトの名無しさんNGNG
>>759
関係あります。
メモリ上のオブジェクトをHDD上に書き出して
次も使えるようにすることです。
結局TStringList.AddObjectとして
TStringListとTTreeViewを両方
永続化し、行で対応づけることで解決しました。
0761デフォルトの名無しさんNGNG
クライアント側の指示でサーバを動作させるプログラムを作ろうと思っています。
SendTextでメッセージを表示させられるところまではできたのですが、別の指示の出し方が分かりません。
もう接続できていて、なおかつSendTextでメッセージを送れている場合、もうサーバ側は弄らなくても良いのでしょうか?
0762デフォルトの名無しさんNGNG
StringGridでOptionsがgoRangeSelectを含むときに、
Excelのように固定行または列でドラッグすると連続して列や行を選択できるようにするには
どのようにしたらよいのでしょうか?
0763デフォルトの名無しさんNGNG
そのようにコードを書く
0764デフォルトの名無しさんNGNG
>>762

  public
    DDStart,DDFlag:Boolean;
    IniX,IniY,IniCol,IniRow:integer;
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.StringGrid1MouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
  ACol,ARow:integer;
begin
  with StringGrid1 do begin
    MouseToCell(x,y,ACol,ARow);
    if (ACol<FixedCols) and (ARow<FixedRows) then exit;
    if (ACol<FixedCols) or (ARow<FixedRows) then
    begin
      IniX := X; IniY := Y;
      DDStart := true;
    end;
  end;
end;
0765デフォルトの名無しさんNGNG
つづき

procedure TForm1.StringGrid1MouseMove(Sender: TObject; Shift: TShiftState;
  X, Y: Integer);
var
  R:TGridRect;
  ACol,ARow:integer;
begin
  with StringGrid1 do begin
    if DDStart and (not DDFlag) then
      if (Abs(IniX-X) > 2) or (Abs(IniY-Y) > 2) then begin
        DDFlag := true;
        MouseToCell(x,y,IniCol,IniRow);
      end;
    if not DDFlag then exit;
    MouseToCell(x,y,ACol,ARow);
    if (IniCol = ACol) and (ACol < FixedRows) then
    begin
      if iniRow >= ARow then begin
        R.Top := ARow; R.Bottom := iniRow;
      end else begin
        R.Top := iniRow; R.Bottom := ARow;
      end;
      R.Left := FixedCols; R.Right := ColCount-1;
      Selection := R;
    end
    else
    begin
0766デフォルトの名無しさんNGNG
さらに

      if iniCol >= ACol then begin
        R.Left := ACol; R.Right := iniCol;
      end else begin
        R.Left := iniCol; R.Right := ACol;
      end;
      R.Top := FixedRows; R.Bottom := RowCount-1;
      Selection := R;
    end;
  end;
end;

procedure TForm1.StringGrid1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  DDStart := false;DDFlag := false;
end;
0767752NGNG
>>753
要するにTDBCheckBoxは使えないってことですね。
サン糞!
0768デフォルトの名無しさんNGNG
>>767
DataSource 上で代替フィールドを作ればすむ話ではないか?
0769752NGNG
>>768
それはOnCalcFieldsを使えってことですか?
0770デフォルトの名無しさんNGNG
>>767
ヘルプでTDBCheckBoxのValueChecked,ValueUncheckedの説明を見てみよう。
0771デフォルトの名無しさんNGNG
>>751
見てみたんですが、何がなんだかちんぷんかんぷんでした。
いちばん上のADOって奴をちょっと試しにやってみたんですケド、
応用するにはかなりの勉強が必要ですね。
Proでなら簡単に出来そうな気がするんですが、気のせいでしょうか?
でもあまりに高価過ぎて手が出せそうにありませんケドね。。
どっちにせよ、もうちょっとじっくりやる時間が出来たら、先のページで
いろいろ実験してみます。また不明な事が出て来たら、あまりにも初歩的な事なのかもしれませんケド、
教えてやって下さい。

0772デフォルトの名無しさんNGNG
別の意味でTDBCheckBoxは使えないから普通のTCheckBoxにしといた方が良いかも。
TDBRadioGroupもだったか忘れたがうざい時あるな。
QueryをOpenした時値が入ってたらOnClickが反応したりとか最悪。
0773デフォルトの名無しさんNGNG

http://www.teppi.com/Components/DBISAM/

こんなページを見つけたのですが、コレもぱーそなるぢゃ無理な事なんですよね?

0774デフォルトの名無しさんNGNG
ボーランドのデペロッパーネットワークってトコの、Delphi Database Submissionsという所で、

http://search.jword.jp/cns.dll?type=ak&fm=1&lang=euc&name=borland&url=http%3A%2F%2Fwww.borland.co.jp%2F

ここです。ID22117のAbsolute DatabaseというのをDLしてみました。
Delphi (4-7)と書かれているのに、インストールしようとするとDelphi 7というのしか無い所を見ると、
7で無いと使えないのでしょうか?パッケージのインストールをしようとすると、rtl70がどうとか出て
出来ませんでした。for Delphi7 Personalって表示は見たケドも、無理なんですかね?


7のパーソナルは無償配布、終了しちゃったんですね。ショック。。

0775デフォルトの名無しさんNGNG
>>773
それ有料
0776デフォルトの名無しさんNGNG
>7のパーソナルは無償配布、終了しちゃったんですね。

7のパーソナルなど最初からない。6のはまだ配布中。
0777752NGNG
>>770
あなたに惚れますた!ありがとう。
0778デフォルトの名無しさんNGNG
DelphiでPNGを扱うにはどうすればよいのじゃろうか
GLDPNGは開発終了したみたいだし・・・
Jpegみたいに簡単に扱えない?
0779デフォルトの名無しさんNGNG
TPNGImageってのがあるのね
使ってみます
0780デフォルトの名無しさんNGNG
最新バージョンではTDBGridのスクロールバーの表示・非表示は設定できるようになってますか?
0781デフォルトの名無しさんNGNG
>>764-766
返事が遅くなってすみません。
期待する動作にかなり近い動作をいたしました。
これを叩き台にしていろいろいじくってみようと思います。ありがとうございました。
0782デフォルトの名無しさんNGNG
ふーん。
いつの間にか「TkPNG」って言うシェアウェアへ
移行してたんだねぇ…。
0783デフォルトの名無しさんNGNG
TkPNGの方がGLDPNGより先に開発されてたと思うけど…。
0784782NGNG
>>783
あら、そーなんだ。これは失敬、知らなんだ。
では続きをどうぞ↓
0785デフォルトの名無しさんNGNG
Client側のEdit1とEdit2に書かれた文字列をボタンを押すことで送信し、Server側で受け取り、
ダイアログボックス(「タイトル」=Edit1,「本文」=Edit2)を表示させるにはどのように記述すれば良いでしょうか。
Client側、Server側それぞれお願いします。
0786デフォルトの名無しさんNGNG
プロジェクト毎にコンポーネントを管理したいのですが、
何かよい方法ありますか?
0787デフォルトの名無しさんNGNG
そういうコンポーネントは実行時に作成する。
0788デフォルトの名無しさんNGNG
>>786
プロジェクトごとに、コンポーネントを切り替えたいという事なら
プロジェクトごとに、batファイルでレジストリを切り替えれば良い。
0789デフォルトの名無しさんNGNG
パッケージ
0790デフォルトの名無しさんNGNG
>>789
インストールが必要では?
0791786NGNG
>>788
レジストリの切り替え・・・
よさそうですね。

しかし、レジストリのどのあたりをbatで切り替えるのでしょうか?
0792デフォルトの名無しさんNGNG
>>791
たぶん
HKEY_CURRENT_USER/Software/Borland/Delphi/<Version.0>/Known Packages
0793792NGNG
追加で
HKEY_CURRENT_USER/Software/Borland/Delphi/<Version.0>/Palette
0794786NGNG
>>792-793
実行できる環境で、是非やってみようと思います。
ありがとうございました。
0795デフォルトの名無しさんNGNG
>>785
Delphiのdemosフォルダを見なさい
\demos\internet\chat
0796デフォルトの名無しさんNGNG
AABBCCDEFGHという文字列から3文字使って並べると
何通りか、そして全ての文字列を出力するというプログラムを
作っているのですが、どうやってもうまくいきません。

考え方としては、全ての通りを出し、そこから重複を削除するという形で
よいのでしょうか?

0797デフォルトの名無しさんNGNG
>>796
煽りでもなんでもないが、意味が分からない。
0798デフォルトの名無しさんNGNG
頭悪すぎ・・・
0799796NGNG
>>797
順列なんですが。説明下手ですいません・・・。
0800797NGNG
>>799
謝ることは無いよ。オレが理解出来ないだけだから。
0801デフォルトの名無しさんNGNG
TStringListを使って、まだ追加していないなら追加する
の方が簡単だと思うよ。
forループを3つ重ねればよい。
0802デフォルトの名無しさんNGNG
AABBCCDEFGHがあらかじめ整列済みであるという性質を利用すれば
重複チェックは直前のものとの比較のみでいい。
0803デフォルトの名無しさんNGNG
>>802
ちょっとそれは私、確信が持てませんが、本当に大丈夫ですか?
0804デフォルトの名無しさんNGNG
>>801の方法がいいんじゃない?
0805デフォルトの名無しさんNGNG
なんか宿題臭いけど、汎用性を無視すればABCDEFの順列6P3と
XXY、XYX、YXX(X=[A..C]、Y=[A..F]-X)の3*3*6の組み合わせしかない。
0806デフォルトの名無しさんNGNG
質問させてください。Delphi6 Personalです。
TScrollBoxで、スクロールをしている最中にイベントを起こせませんか?
0807806NGNG
ごめんなさい。解決しました。
OnConstrainedResizeで拾えました。
0808デフォルトの名無しさんNGNG
コンソールアプリで標準エラー出力に出力するのってどうやるの?
0809デフォルトの名無しさんNGNG
ErrOutputだった。Outputの参照から飛べるようにしてくれ・・・
0810デフォルトの名無しさんNGNG
TRichEdit でマウスポインタの位置をキャレットの位置(行、桁)に変換するにはどうすればよいですか?
0811Delフサギコ ◆A6VzDeLphI NGNG
 ∫,,,,,,,,,∧,,∧  
⊂,,,,,,,,,つ,,゚Д゚ミつ
教えてくださまい。

TSpinEditかTUpDown似なコントロールで
小数点以下桁数指定コントロールありませんでしょうかい?

あと、Extendedに入っている値が
小数点以下有効桁数が何桁なのかを求める関数とか誰か作ってません?
※A:=1.234 f(A)→3
 B:=12.34 f(B)→2
みたいの。
FloatToStrしてAnsiPos('.', してLengthから引き算してる
マヌケコード書いたらら氏にたくなりますた。
0812デフォルトの名無しさんNGNG
あるフォームから、別のフォームの変数に代入することは出来ますか?
例えば、Form2にあるButtonを使って、Form1のEdit1.Textに変数を代入するとかです。

普通にForm2のボタンに
Edit1.Text := 'Hello';
このように書き込んだだけでは、もちろん同一Formに存在しないのでダメですよね。

思いついたのは、
Form1.Edit1.Text := 'Hello';
がせいぜいでもちろんだめでした。
0813デフォルトの名無しさんNGNG
Form2を含むUNITの
implementation節
usesの項に
form1を加えれば良い。

例:
implementation

uses Unit1;//(Form1のユニットファイル名)
0814デフォルトの名無しさんNGNG
こうすることにより、
Unit1のinterfaceにて宣言された変数
Form1: TForm1 を、Form2のimplementationの
USES宣言以下で使用可能になり、

Form1.Edit1.Text := 'Hello';

という命令もコンパイルされる事になる。
0815デフォルトの名無しさんNGNG
やってみたところできました。
適当だと思っていた
Form1.Edit1.Text := 'Hello'; 自体はあってたんですね。
素早い回答ありがとうございます。
0816デフォルトの名無しさんNGNG
>>810
http://www.google.co.jp/search?hl=ja&ie=UTF-8&q=TRichEdit+%E4%BD%8D%E7%BD%AE+%E3%82%AD%E3%83%A3%E3%83%AC%E3%83%83%E3%83%88+%E4%BD%8D%E7%BD%AE+&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=
0817Delフサギコ ◆A6VzDeLphI NGNG
>>810>>816
 ∫,,,,,,,,,∧,,∧  
⊂,,,,,,,,,つ,,゚Д゚ミつ

つまり、SelStartを保持しておいて、擬似的にクリックして
桁/行情報を取得してから、元のSelStartに戻すとか?

力技。。。
0818デフォルトの名無しさんNGNG
ファイル内に文字列があるかどうか判定するルーチンを作りたいのですがどうすればいいですか?
0819デフォルトの名無しさんNGNG
>>818
TStringListで読み込んで、posで判定するってこと?
0820818NGNG
>>819
そうしようと思っているのですがTStringListで読み込んだ文字列を
Pos関数に渡しても0しか返ってきません。

slFile:=TStringList.Create;
slFile.LoadFromFile(FileName);
if Pos(slFile.Text,Text)<>0 then
Result:=True
else
Result:=False;
0821デフォルトの名無しさんNGNG
右揃えにするため、TEditの代わりにTMemoを代用したんですが、
TMemoだとやはりTEditと違って行単位でしか扱えないんでしょうか。
何行目の何文字目まで指定できると有難いんですが、
やっぱり
Memo1.Lines[1]
Linesとぐらいだから無理ですかね。
代用策でもかまわないんですが何かあれば教えてもらえるとありがたいです。

0822デフォルトの名無しさんNGNG
ああ、というか内容を
1回普通の文字列型に移してそれを経由してやればいいんですかね
そんなにたいしたことじゃなさそうだ
0823デフォルトの名無しさんNGNG
>>820
>if Pos(slFile.Text,Text)<>0 then
オレもたま〜にやるけど、逆でない?

→if Pos(Text,slFile.Text)<>0 then
0824818NGNG
>>820

ヌ・・・初歩的なミス・・・。
解決いたしました。
どうもありがとうございました。
0825デフォルトの名無しさんNGNG
>>817
810でも816でもないが、SelStartとか擬似クリックとか、どっから出てきたっつー話ですよ

procedure TForm1.RichEdit1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var
 mousePos: TPoint;
 col, row, index: Integer;
begin
 mousePos := Point(X, Y);
 index := RichEdit1.Perform(EM_CHARFROMPOS, 0, LPARAM(@mousePos));
 row := RichEdit1.Perform(EM_LINEFROMCHAR, index, 0);
 col := index - RichEdit1.Perform(EM_LINEINDEX, row, 0);
 Caption := '列=' + IntToStr(col) + ', 行=' + IntToStr(row);
end;
0826デフォルトの名無しさんNGNG
http://www.google.co.jp/search?hl=ja&ie=UTF-8&q=%E5%8F%B3%E6%8F%83%E3%81%88+TEdit&lr=
>>821
1回くらい検索しようよ。
0827デフォルトの名無しさんNGNG
TMemoryStreamの方がいいかもね。
0828Delフサギコ ◆A6VzDeLphI NGNG
 ∫,,,,,,,,,∧,,∧   >>825
⊂,,,,,,,,,つ,,゚Д゚ミつ  それだ!

http://www.borland.co.jp/tips/delphi/dh013/index.html
0829デフォルトの名無しさんNGNG
>>827
何の話?
0830デフォルトの名無しさんNGNG
すいません。
cygwinのホームディレクトリの設定ってどうやるんでしょうか?
0831デフォルトの名無しさんNGNG
>>825
おおお!出来た。
どうもありがとう御座います。
0832デフォルトの名無しさんNGNG
>>829
>>819
0833デフォルトの名無しさんNGNG
プログラム内からコンソールアプリを呼び出すと、
DOS窓が一瞬で閉じてしまうんですが、
DOS窓を表示したままには出来ないのでしょうか。

ちなみにWinExec使用です。
0834デフォルトの名無しさんNGNG
cmd hoge.exe
command hoge.exe
0835デフォルトの名無しさんNGNG
cmd /k yourprog.exe
0836デフォルトの名無しさんNGNG
system("pause");
0837833NGNG
>834-836 ありがとうございます。

835さんの方法でできました。

普通にDOS窓開いた時と違って、PATHが通ってないんですね。
0838デフォルトの名無しさんNGNG
自作でコンポーネント作ってるんですが、一般的にはコンポーネントをフォームに乗せると自動的に
uses節にコンポーネントのユニットが追加されますよね。
で、それと同時に別に追加したいユニットがあるのですが、それも自動で追加させるにはどうすればいいのでしょうか?

例えば、IndyのTIdHttpコンポーネントを乗せるとIdHttp以外のユニットも自動的に
usesされますが、そんな感じのことをしたいのです。
0839デフォルトの名無しさんNGNG
Indyの登録関係ユニットを見てみては?
0840デフォルトの名無しさんNGNG
>>838
コンポーネントのパッケージに登録されているユニットが
勝手に追加されているだけでは?
0841デフォルトの名無しさんNGNG
指定したオブジェクトが、すでにCreateされているかどうか見分けるにはどうしたらいいですか?
0842デフォルトの名無しさんNGNG
>>841
自分で考えたやり方が正しい。
0843デフォルトの名無しさんNGNG
>>838
もしかして、イベントハンドラで使われる引数の型を定義しているユニットも
自動的に追加されるのかもしれないね。
0844デフォルトの名無しさんNGNG
最前面のアプリのハンドルがあるとして、
そのアプリの、今フォーカスのあるコントロールの
ハンドルを取得するにはどうしたらよいでしょう。
0845デフォルトの名無しさんNGNG
FreeAndNil で、Freeとnilをやってくれる以外にどんな利点があるのですか?
0846デフォルトの名無しさんNGNG
>>844

http://www2.big.or.jp/~osamu/Delphi/delphi-browse.cgi?index=030830
0847デフォルトの名無しさんNGNG
>>845
それ以外の利点は特にない。
0848デフォルトの名無しさんNGNG
オブジェクトのフィールドを書き換えたら、
別のオブジェクトとして認識してほしいのですが、
うまくいきません。

例えば、AとBを同一のクラスに属するオブジェクトとすると、
...
B:=A;
A.FMem:=2*A.FMem//フィールドの値の更新
...
としたとすると、AとBを別のオブジェクトと
認識してほしいのに、同一のオブジェクト(A=B)
と認識されてしまいます。
何か付け加える必要があるのでしょうか?
0849デフォルトの名無しさんNGNG
>>848

B.FMem を確認してごらん。同じになってるから。

B:=A;

は、参照を代入してるから、A と B は同一の実体を参照してるんだよ
0850デフォルトの名無しさんNGNG
Delphiのオブジェクト変数はC++みたいに実体として存在できないのです。
全部オブジェクトへの参照でしか存在できない。

オブジェク変数に別のオブジェクト変数を代入すれば
参照しているオブジェクトを付け替えることになる、
B:=AをやればAとBが指し示すオブジェクトは同じの物となる。

もし、Bのフィールド内容をAにコピーしたいのならAssignメソッドを使わなければならない。

B.Assign(A)

でAの内容がBにコピーされる。

0851デフォルトの名無しさんNGNG
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1017673221&res=10&fi=no

上の記事を読むと、FreeAndNil の方が危ないと思うのですけど、どうですか・
NewsGroupでもいっぱい話題になってるけど、どれを読めば悩みが解決するのか
解りません。

0852デフォルトの名無しさんNGNG
>もし、Bのフィールド内容をAにコピーしたいのならAssignメソッドを使わなければならない。

Aのフィールド内容をBにコピーしたいのなら

だね。

Assign メソッドが必ずあるとは限らない。自分で実装する必要がある場合がある。
また、内容同士を比較するメソッドも必要になるかもしれないね。
0853デフォルトの名無しさんNGNG
>>851
FreeAndNil は、すでにDelphiにあるのを使うこと。危ないことはない。
君の「悩み」については、だれも知らない。具体的に。
0854デフォルトの名無しさんNGNG
>>848

TPersistent.Assign のヘルプを読むことをすすめる
0855デフォルトの名無しさんNGNG
私の悩みとは、FreeAndNil は危険だし、たいした利点もないので
使わない方が良いのではないか?
と言うものです。

ローカル変数であれば
Obj.Free;
だけでいいし、
それで不十分なら、
Obj := nil;
を加えれば良いのではないですか?
FreeAndNil を使う理由は何なのでしょう?
0856デフォルトの名無しさんNGNG
FreeAndNil の危険性とは、
初期化していない変数を渡しても警告が出ない事と、
オブジェクト変数以外を渡してもコンパイルエラーが出ない事です。
0857デフォルトの名無しさんNGNG
> FreeAndNil を使う理由は何なのでしょう?

インスタンス参照にnilを代入しておくと、それが有効な参照かどうかを確認する
ことが出来るようになります。ローカル変数を最後に解放するのでしたら、Free
で十分でしょう。
0858デフォルトの名無しさんNGNG
>>857
それは解ります。

FreeAndNil を考えた人は下記の例を問題視しているみたいですけど、
もうちょっと考えてみます。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1017673221&res=11&fi=no

destructor内で例外が発生したときの為に、あらかじめ nil を代入しておくのかな?
でも、destructor内で例外が発生したら駄目ですよね。
0859デフォルトの名無しさんNGNG
これです。

Delphi in a Nutshell: Chapter 2: The Delphi Object Model
http://www.oreilly.de/catalog/delphi/chapter/ch02.html

When freeing a global variable or field, always set the variable to nil when freeing the object so you are not left
with a variable that contains an invalid pointer. You should take care to set the variable to nil before freeing
the object. If the destructor, or a method called from the destructor, refers to that variable, you usually want
the variable to be nil to avoid any potential problems. An easy way to do this is to call the FreeAndNil
procedure (from the SysUtils unit):

GlobalVar := TFruitWigglies.Create;
try
 GlobalVar.EatEmUp;
finally
 FreeAndNil(GlobalVar);
end;

Each object has a separate copy of all of its fields. A field cannot be shared among multiple objects. If you need
to share a variable, declare the variable at the unit level or use indirection: many objects can hold separate
pointers or object references that refer to common data.
0860858NGNG
読み返してみると質問が変わってました。
どうして nil を代入してから Free するのか、が今の悩みです。

procedure FreeAndNil(var Obj);
var
 P: TObject;
begin
 P := TObject(Obj);
 TObject(Obj) := nil;
 P.Free;
end;
0861デフォルトの名無しさんNGNG
>>838
TIdHTTP は、TObject → TPersistent → TComponent → TIdBaseComponent
→ TIdComponent → TIdTCPConnection → TIdTCPClient → TIdCustomHTTP の
順に派生されているので、上位クラスが宣言されているユニットが順番に
追加される。
これと同じように UnitA のコンポーネントを貼り付けたときに UnitB も
追加されるようにしたければ UnitB で宣言したクラスを上位に持つように
すればいい。
ただし、共通部分を持つクラスをほかに作らない場合は、一つにまとめた方が
サイズ的にも速度的にも有利になる。

>>860
グローバル変数を複数のスレッドからアクセスした場合とかに、処理の順序が
重なりあうという偶然が生じた場合に、複数回 Destroy しないためじゃないの?
複数の変数にコピーしてれば意味なさそうだけど。
0862デフォルトの名無しさんNGNG
>>861
マルチスレッドの場合はEnterCriticalSectionを使わないと駄目では?
同時にFreeAndNilが呼ばれた場合、同時に一時変数へ保存して、同時に同じオブジェクトをFreeする事になりますよ。

NG読むと、Free後にnilを代入しても手遅れと言う意見がありました。
つまり、デストラクタ内では既にオブジェクトは無効という考えらしい。

本当か?
0863デフォルトの名無しさんNGNG
>NG読むと、Free後にnilを代入しても手遅れと言う意見がありました。

Free したオブジェクト参照にnilを代入することの必要性が理解できていれば
一瞬でも、Free したオブジェクトの参照がnilになっていないのは、危険である
ことが分かると思います。ですから、Free する前に nil を代入しておくわけです。

シングルスレッドでは、

Obj.Free
Obj := nil;

の二行のコードの実行時間差があったとしても、同じプロセスのコードで Obj に
アクセスする機会がないように感じるかも知れません。でも、Free から呼び出される
メソッド、とくにデストラクタから、何かメッセージを処理したり、他の手続きを
呼び出したりしているとき、この Obj にアクセスすることになるかも知れません。
ですから先にnilを代入しておけば、Free 呼び出した時点で、この Obj へのアクセス
は無効である、とコードで判断できます。マルチスレッドでは、上のコードで nil が
代入される前に、プリエンプションが起こってサブスレッドに制御が移り、Obj に
アクセスする機会が生まれます。クリティカルセクションを必ず使うという制約より
FreeAndNil を使うことにした方が制約は少ないと思います。

「手遅れ」っていうのはこういう意味です。
0864デフォルトの名無しさんNGNG
>同時にFreeAndNilが呼ばれた場合、同時に一時変数へ保存して、同時に同じオブジェクトをFreeする事になりますよ。

同時に呼ばれることはありません。参照の代入は単純なマシンコードなので<途中>で別スレッドにうつること
はないと思います。ですから、あとに呼ばれた方は、すでにnilになっているのでなにもしません。

マルチプロセッサの場合は知りませんが。その場合でも Free してから nil を代入するより
安全だとは思いますけど。
0865デフォルトの名無しさんNGNG
Free後にnilを代入する重要性は解ります。

マルチスレッドについては詳しくないので、もしFreeAndNilが
マルチスレッド用であるならば、そう理解しておきます。

>でも、Free から呼び出されるメソッド、とくにデストラクタから、
>何かメッセージを処理したり、他の手続きを呼び出したりしているとき、
>この Obj にアクセスすることになるかも知れません。

こういう事ですか? まだ納得できないけど。
VCLの csDestroying in ComponentState と似たような意味かな。

var
 Hoge: THoge;

procedure TForm1.WMMouseMove(var Message: TWMMouseMove);
begin
 if Hoge <> nil then Hoge.Proc;
end;

destructor THoge.Destroy;
begin
 // ここでメッセージキューにWM_MOUSEMOVEが入っているとすると、
 // Form1.WMMouseMove が呼ばれるが、FreeAndNil を使わない場合、
 // Hoge <> nil なので Hoge.Proc が呼ばれるが、それは期待した動作ではない。
 Application.ProcessMessages;
 inherited;
end;
0866デフォルトの名無しさんNGNG
>>811
上は単に既存コントロールにプロパティを追加して Getメソッで値を読み取る時に1/10とか1/100すればいい

2番目は、理論的には作れない。 
少数点以下を100000倍して10で割りながら余りがゼロでないというようなことを考えているのだろうが
少数点以下有効桁数は3であっても 1.200 である場合というのがありえるから
0867デフォルトの名無しさんNGNG
>既存コントロールにプロパティを追加して Getメソッで値を読み取る時に1/10とか1/100すればいい

表示はGUIの大事な部分。ユーザが1.33に設定したいとき133を入力させるのはGUIとして失格。
0868デフォルトの名無しさんNGNG
"待ち時間(0.01秒単位)"って項目があったっておかしくはないと思うが。
"金額(100円単位)"は微妙に混乱するかもしれないけど。

混乱度が低いなら慣れ親しんだ標準のコントロールを
ユーザーに使わせるのは十分あり。
0869デフォルトの名無しさんNGNG
1ドル33セント=133セントかー
1.33ドルにしたいなー
0870デフォルトの名無しさんNGNG
教えてください。ページコントロールのコンポを作成しています。
ページコントロールのメソッドをoverrideして、タブシートを下記の
コードのように動的に作成しており、このコンポーネントをインストールして
ポトペタで使用したいのですが、ポトペタ時にタブシートが作成され、
さらに実行時にもタブシートが作成され、同一のシートが二つ作成
されてしまいます?

こういう場合の、いい解決法ってありますか?

procedure TPageControl.CreateWnd();
var
 TabSheet: TTabSheet;
begin
 inherited;

 //タブシートの作成
 TabSheet := TTabSheet.Create(Self.Owner);
 TabSheet.PageControl := Self;
 TabSheet.Parent := Self;
end;
0871デフォルトの名無しさんNGNG
コンポつくってて ComponentState を知らないってことはないよな
0872デフォルトの名無しさんNGNG
>>871
おお

いや、勉強のためにコンポ作りしてて、悩んでますた。
これで実行時と設計時でいろいろできますねー

助かりました。ありがとう!
0873デフォルトの名無しさんNGNG
すでに内容があるファイルを部分的に書き換えるのってどうやるのですか?
0874デフォルトの名無しさんNGNG
>>873
・全部読み込んで部分的に書き換えて全部書き込む。
・seekやposを使って書き込む位置を指定して書き込む。
0875デフォルトの名無しさんNGNG
Windows標準のプリンタドライバを使ったプリンタの設定を、保存したり復元したりしたいのですが
レジストリを設定する事になるのでしょうか?
0876デフォルトの名無しさんNGNG
FormatDateTime のフォーマットで
'gee/mm/dd' では「昭52/01/01」となりますが、
フォーマットの指定のみで「S52/01/01」みたく表示できますか?


0877デフォルトの名無しさんNGNG
ヘルプを読んだことないの?
0878デフォルトの名無しさんNGNG
>>876
おそらく無理。

年号の変換は結局のところWindowsAPIのGetDateFormatを利用してるみたいだけど
そもそもGetDateFormat自体が(H,S,T,M)形式の年号に対応してない。
自力で関数を作るならまぁ結構簡単に作れそうだけど・・

というか、実験してみて笑ったんだけど
年号って明治までしか用意されてないのなw
0879デフォルトの名無しさんNGNG
>自力で関数を作るならまぁ結構簡単に作れそうだけど・・

そうなの? Format 文字列の中に元号と関係なく平や昭や明なんかの文字があったり
する可能性があるので結構面倒だと思うけど
0880デフォルトの名無しさんNGNG
エスケープしときゃ良さそうだけど
0881デフォルトの名無しさんNGNG
明治以前で寛永2年とか安政1年とか使いたいとかはあんまりないだろな
0882デフォルトの名無しさんNGNG
>エスケープしときゃ良さそうだけど

おっ、なるほど!
0883デフォルトの名無しさんNGNG
VC++のソースを元にDelphiに変更したいのですが
PRINTDLG構造体はDelphiではどのように記述するのでしょうか
教えてください。

PRINTDLG pd;
ZeroMemory (&pd, sizeof(PRINTDLG));
0884デフォルトの名無しさんNGNG
uses CommDlg;

TPrintDlg
0885デフォルトの名無しさんNGNG
uses節にCommDlgを追加しる
TPrintDlgという型で定義されている。
0886デフォルトの名無しさんNGNG
なんで同じこと書くの?
0887デフォルトの名無しさんNGNG
俺の存在感の無さ故、見えてないのだろう。よく言われるよ。フフ
0888デフォルトの名無しさんNGNG
>>887
あんた、背中がすすけてるぜ
0889883NGNG
>>884,885
ありがとうございます。

しかしこんな簡単なことに丸2日使ったのか・・・
0890デフォルトの名無しさんNGNG
TDataSetのFilterOptionを使いたいんですが

1.FilterOptionの設定の仕方がよくわからないです。
2.Filterを使って前後方一致比較ってできないんですか?
前方一致は*でいけるみたいなんですが、後方ができないようで。
何か方法があれば教えて頂けると助かります。
0891デフォルトの名無しさんNGNG
>>889

ソースをお持ちであれば、Grep するといいです。personal ユーザでも Doc ディレクトリ
にある *.int ファイルを今回であれば PRINTDLG で大文字小文字を区別しないで Grep する
と TPrintDlg レコードの定義がすぐに見つかります。
0892デフォルトの名無しさんNGNG
DelphiからAccessで作ったmdbにADO経由でデータ追加しようとしています。

TestDB
 test1tb
  ID オートナンバー型
  date テキスト型
 test2tb
  ID オートナンバー型
  date テキスト型
  time テキスト型
と2つのテーブルを用意しています。

test1tbの方の追加は、
SQL := 'INSERT INTO test1tb (date) VALUES("' + DateToStr(Now) + '")';
Connection1.Open('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=TestDB.mdb','','',adConnectUnspecified);
Connection1.Execute(SQL,RcA,0);
Connection1.Close;
でうまく追加できます。
IDも自動採番でユニークな番号が入っています。

しかし、test2tbへの追加が「INSERT INTO 構文の文法エラーです」で通りません。
SQL := 'INSERT INTO test2tb (date,time) VALUES("' + DateToStr(Now) + '","' + TimeToStr(Now) + '")';
Connection1.Open('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=TestDB.mdb','','',adConnectUnspecified);
Connection1.Execute(SQL,RcA,0);
Connection1.Close;

もうたったこれだけで一日悩んでいます。
どなたかアドバイスいただけないでしょうか。
よろしくお願いいたします。
0893デフォルトの名無しさんNGNG
>>820
質問とは全く関係ないが

if (〜) then
Result := True
else
Result := False;

の部分は

Result := (〜);

にするとコードがすっきりする。
0894デフォルトの名無しさんNGNG
uses shellAPI;

procedure TForm1.Button1Click(Sender: TObject);
const
strExeName = 'C:\WINDOWS\COMMAND.COM';

begin
ShellExecute(Handle,'open',PChar(strExeName),'',
PChar(ExtractFilePath('C:\borland\')),SW_SHOWDEFAULT);
end;

このような感じでMS-DOSを立ち上げたとき、コマンドラインに
C:\borland>bcc32 test.cpp
みたいな形で値( bcc32 test.cpp )を渡したいのですがどうやったらいいのでしょうか。
よろしくお願いします。
0895デフォルトの名無しさんNGNG
普通は C:\borland\bcc32.exe を立ち上げて、そのパラメータに C:\borland\test.cpp を
指定すると、勝手にコマンドプロンプトが立ち上がってくれるもんだが。
0896デフォルトの名無しさんNGNG
ども、早速やってみます
0897デフォルトの名無しさんNGNG
やっぱオレの能力じゃわからないや(':ω)| ̄|_
0898デフォルトの名無しさんNGNG
Delphi7EnterpriseTrialを使用して勉強中です。
以前のDelphiにはIsNumericがなかったと思うのですが、
7のhelpにはIsNumericが載っています。
しかし使い方が全くわからないのです。
教えていただけませんでしょうか。
0899デフォルトの名無しさんNGNG
まさにくだ質なんですが。。。

procedure form1.btnCheckClick(Sender: TObject);
begin
//入力チェック
if チェック then
エラーなら以下の処理は行わずprocedureを抜ける
//処理
・・・
end;

としたいのですが、途中でprocedureを抜ける方法がわかりません。
どうすればいいのでしょうか。
チェック項目が増えると見苦しいので、elseによるネストはしたくないのです。
よろしくお願いいたします。
0900デフォルトの名無しさんNGNG
Exit
0901899NGNG
すんまそん。
Exit
でいけるんですね。。。
お騒がせいたしますた。
0902デフォルトの名無しさんNGNG
TEditでUnicodeを使いたいと思い、ぐぐったところ、TNTというサイトが見つかりました。
それとは別の日本語のサイトに、
これを入れると既存のコンポーネントが上書きされる
と書いてあったのですが、他にUnicodeを使えるようにする方法はありませんか?
0903デフォルトの名無しさんNGNG
>>902
上書きなど初耳だが。
そのサイト晒してみてくれ。
0904902NGNG
>>903
↓です。
http://hp.vector.co.jp/authors/VA004777/report/unicode.html

ごめんなさい。よく読んだら、自分で書き換えたと書いてありましたorz
でも、逆に言えばTntのコンポーネントは使用に書き換えが必要なんでしょうか?
0905デフォルトの名無しさんNGNG
必要なし
0906デフォルトの名無しさんNGNG
インラインアセンブラで割り算する時、
div ebx って書くとエラーが出ます。
div eax,ebx だとエラー出ないが、これは文法的に間違ってないですかね?

あとdiv edx っていうのは間違いですか?
0907902NGNG
>>905
ありがとうございます。それじゃ早速使ってみます。
0908デフォルトの名無しさんNGNG
ソースフォルダに大量に生成される、拡張子の頭に'~'のついたファイルは編集時のテンポラリファイルなのでしょうか?
その場合、編集が終われば削除してもいいのでしょうか?
また、これらが自動的に削除されるような方法はないのでしょうか?
0909デフォルトの名無しさんNGNG
一つ前のバックアップ。気にするな。神経質に消す方が疲れる。
0910デフォルトの名無しさんNGNG
なるほど。
で、そのバックアップを生かしたい時は手で拡張子直すのでしょうか?
ざっとメニューみてみましたがそれらしいツールはありませんでした。
0911デフォルトの名無しさんNGNG
>で、そのバックアップを生かしたい時は手で拡張子直すのでしょうか?

もう5年以上使ってるけど、一度だけ手で直したことがある。ほかのやり方は知りません。
0912デフォルトの名無しさんNGNG
>>906
「書くとエラー」って言うから、コンパイルエラーかと思った。
オーバーフローだろ?
divは上位edx、下位eaxの64bitの数を指定のレジスタで割るから。
edxにゴミでも入ってるんだろ。

当然div edxもオーバーフローする。常に商がeaxに収まらないから。
0913デフォルトの名無しさんNGNG
>>908
作らせないようにする設定なら、エディタオプションの「表示」の所にある。
0914デフォルトの名無しさんNGNG
ADOConnection>ADOQuery>DataSource>DBGridでmdbのデータを一覧表示しています。
ADOQueryのActiveをTrueにしているので、表示した瞬間にDBの内容が表示されます。
ここでDBの内容を再取得して再表示したいのですがやり方がさっぱりわかりません。
どなたかご教授いただけませんでしょうか。
0915914NGNG
自己レスです。
これで正しいのかどうかわかりませんが、
ADOQuery.Active := False;
ADOQuery.Active := True;
DBGrid.Refresh;
とすることで表示更新できました。
お騒がせしました。
また、これが間違っていたらツッコミよろですm(__)m
0916デフォルトの名無しさんNGNG
>>913
作っておいた方が精神衛生上いいかも。
消したくなったら、
DEL *.^??
みたいなバッチ作っておけば一発で消せるし。

[環境設定]の[自動保存]もチェック付けといた方がいいね。構成管理ツール導入して版管理できれば尚いい。
0917916NGNG
ごめ、ハットとチルダ間違えました。
DEL *.~??
0918デフォルトの名無しさんNGNG
バックアップファイルなんて一度も役に立ちそうなシチュエーションはなかったな。
まともなソース管理ツール使っとけ。
0919デフォルトの名無しさんNGNG
*.~?? のファイル消すツールなら、それこそ簡単にDelphiで作れるね。
0920デフォルトの名無しさんNGNG
バックアップとか無停電電源とか生命保険とかは実際は役立たないほうが幸せ。
万が一に備えているわけだから。
0921デフォルトの名無しさんNGNG
無停電電源あって良かった事の9割は雷サージを防げたことだった。
0922デフォルトの名無しさんNGNG
>>892
SQL := 'INSERT INTO test2tb ([date],[time]) VALUES("' + DateToStr(Now) + '","' + TimeToStr(Now) + '")';

でやってみそ
0923デフォルトの名無しさんNGNG
すいません。
先ほどの>>914-915です。
>>915の方法では追加更新削除の処理をした後、
なぜか再取得できるときとできないときがあります。
もうなにがなにやら。。。
アドバイスいただければうれしいです。
よろしくお願いいたします。
0924デフォルトの名無しさんNGNG
>>915
オレも詳しい原理は知らないが
DataSource.DataSet.Close;
DataSource.DataSet.Open;
で表示の更新ができる。

同じ対象をさしているはずなのに
なぜQueryでなくDataSource.DataSetの方じゃないといけないか
自分でもよくわからないんだけどな。
0925デフォルトの名無しさんNGNG
フォームのリサイズを不可にしたいのですが、どのプロパティをいじればいいのでしょうか?
0926デフォルトの名無しさんNGNG
>>924
レスありがとうございます。
しかし、それでも再取得できたりできなかったり。。。
もしや時間的に再取得できないのかと思い、
DB更新処理後に「更新しました」とダイアログ出して時間とってみたのですが、
それでも一緒です。
フォーム上にボタンを作って、
ADOQuery.Active := False;
ADOQuery.Active := True;
DBGrid.Refresh;
としてみると100%再取得できます。
うーむ。。。
0927デフォルトの名無しさんNGNG
>>925
BorderStyle
0928デフォルトの名無しさんNGNG
>>927
ありっす。
最小化が使えなくなるのですね。。。
工夫してみます。
0929デフォルトの名無しさんNGNG
MaxHeightとかで指定するのは?
0930デフォルトの名無しさんNGNG
>>928
Dialog以外なら最小化できるだろ
0931デフォルトの名無しさんNGNG
すみません、↓のプログラムのだめなところが判りません
testin.bmpをロードして(Image1)、画像の一部を切り出して
切り出した部分(Image2)をtestout.bmpとして保存したいのですが
実行すると止まってしまいます。
ヘルプを参照しても不明です。
bmpの扱い方を解説してるページなどありますか?
(検索しましたが、見つけられませんでした)
0932デフォルトの名無しさんNGNG
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private 宣言 }
public
{ Public 宣言 }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
0933デフォルトの名無しさんNGNG
procedure TForm1.Button1Click(Sender: TObject);
var
Rgn: HRGN;
Image1: TBitmap;
Image2: TBitmap;
begin
Image1 := TBitMap.Create;
Image2 := TBitMap.Create;
Image1.Picture.LoadFromResourceName(HInstance,'testin.bmp');
Image2.Width := Image1.Width;
Image2.Height := Image1.Height;
BeginPath(Image1.Canvas.Handle);
Image1.Canvas.Polygon([Point(50, 50), Point(100, 50),
Point(100, 100), Point(50, 100)]);
EndPath(Image1.Canvas.Handle);
Rgn := PathToRegion(Image1.Canvas.Handle);
SelectClipRgn(Image2.Canvas.Handle, Rgn);
Image2.Canvas.CopyRect(Rect(0, 0, Image1.Width, Image1.Height),
Image1.Canvas,
Rect(0, 0, Image1.Width, Image1.Height));
Image2.Picture.SaveToFile('testout.BMP');
DeleteObject(Rgn);
end;
end.
0934931NGNG
ここの真似ですが・・
http://homepage1.nifty.com/cosmic/delphi/tips_graphic.html
よく判りません・・・・助けてぇ
0935デフォルトの名無しさんNGNG
オレがめんどくさいから誰か書いてくれないかな〜、と思っていて
1ヶ月もかけなかったコード

procedure TForm1.Button1Click(Sender: TObject);
var
 Dir: string;
 F: TSearchRec;
begin
 if SelectDirectory('ディレクトリを選択してください', 'C:\', Dir) then
  if FindFirst(Dir+'*.*', faAnyFile, F)=0 then
  begin
   repeat
    Memo1.Lines.Add(F.Name);
   until FindNext(F) <> 0;
   FindClose(F);
  end;
end;
0936デフォルトの名無しさんNGNG
>931 .Picture
0937デフォルトの名無しさんNGNG
>933

 DeleteObject(Rgn);
 Image1.Free;
 Image2.Free;
end;
end.

後始末も。
0938931NGNG
>>937 ありがとうございます。

早速訂正してみましたが、出力ファイルが作られません・・・・
0939デフォルトの名無しさんNGNG
>>931

procedure TForm1.Button1Click(Sender: TObject);
var
  Rgn: HRGN;
  Image1: TBitmap;
  Image2: TBitmap;
begin
  Image1 := TBitmap.Create;Image2 := TBitmap.Create;
  try
    Image1.LoadFromResourceName(HInstance,'testin.bmp');
    Image2.Width := Image1.Width;Image2.Height := Image1.Height;
    BeginPath(Image1.Canvas.Handle);
    Image1.Canvas.Polygon([Point(50, 50), Point(100, 50),Point(100, 100), Point(50, 100)]);
    EndPath(Image1.Canvas.Handle);
    Rgn := PathToRegion(Image1.Canvas.Handle);
    try
      SelectClipRgn(Image2.Canvas.Handle, Rgn);
      Image2.Canvas.CopyRect(Rect(0, 0, Image1.Width, Image1.Height),Image1.Canvas,Rect(0, 0, Image1.Width, Image1.Height));
    finally
      SelectClipRgn(Image2.Canvas.Handle,0);
      DeleteObject(Rgn);
    end;
    Image2.Picture.SaveToFile('testout.BMP');
  finally
    Image1.Free;
    Image2.Free;
  end;
end;
0940デフォルトの名無しさんNGNG
>>331
http://www.google.co.jp/search?hl=ja&q=TBitmap&lr=lang_ja
↑
これじゃ足りないってこと?
0941940NGNG
ミスった。
>>931
に訂正。
0942デフォルトの名無しさんNGNG
.Picture消せ
0943デフォルトの名無しさんNGNG
939 です。

× Image2.Picture.SaveToFile('testout.BMP');
○ Image2.SaveToFile('testout.BMP');
0944デフォルトの名無しさんNGNG
名前を bmp1 bmp2 とかにするといいものを Image1 とかにするから面倒なことに・・・・
0945デフォルトの名無しさんNGNG
「実行すると止まる」とはコンパイルエラーの事だったのか。
0946デフォルトの名無しさんNGNG
多次元配列
A: array[0..2, 1..3] of Integer;
で、
High(?) = 2 を求めるには?にどう書けば良いのでしょう?
High(A[0]) = 3 ですし。
0947デフォルトの名無しさんNGNG
High(A)
0948946NGNG
できました。 ありがとうございます。
ついでに
A: array[0..1, 2..3, 4..5] of Integer;
で、4, 5を求める場合は
Low(A[0, 2])
High(A[0, 2])
でした。
0949デフォルトの名無しさんNGNG
他人デバッグ
0950デフォルトの名無しさんNGNG
文章を読み上げる機能をつけたいんですが、コンポーネント
とか無いんでしょうか。
マイクロソフトのエンジンを使うとして、
メモに貼り付けた日本語を読んでくれるだけでいいんですが・・。
どなたか分るかた居ないでしょうか
0951デフォルトの名無しさんNGNG
MSのって英語だけじゃなかったっけ?
IBMからSDK付で出てたような。
0952デフォルトの名無しさんNGNG
上でComponentStateを教えてもらった者ですが、また新たな問題が・・

PageControlのコンポを作っていて、設計時に固定のTabSheetを動的に生成しています。
その処理はCreateWndメソッドをオーバーライドして、
if csDesigning in ComponentState thenの中で記述しています。

これでポトペタ時にはTabSheetもちゃんと表示され、実行時には作成されずちゃんと動作
するのですが、いったんフレームに貼り付けて設計し、そのフレームをフォームに貼り付けよう
とすると、「コンポーネント名TabSheetはすでに使われています」のようなメッセージがでて、
うまく動作しません・・・。

こんな場合にはどうすればいいんでしょう・・・・。どなたか教えてください!
0953950NGNG
>>951
レスどうも。いえ日本語もできます。他の言語も。それを使った
読み上げのフリーソフトとか結構ありますし。
ただそれを自分のソフトに組み込むのはどうすればよいのやら・・。
0954931NGNG
いろいろ試したら、やっとできました。
回答くださった方々、ありがとうございました
もう1つお願いします・・・・

BM(Tbitmap)の座標(100,100)にある点の色が何色か知るにはどうしたら良いのですか?
とりあえず黒かどうか判定するに
Canvas.Draw(0, 0, BM);
if Canvas.Pixels[300, 300] = clBlack then hantei := 0
という文を書いたのですが・・
黒ならhanteiの値を0にしてその後の処理を分岐しようかと
でもうまく行きません。何がまずいのでしょう?
Drawとかしなくても直接BMのある点の色を知る方法とか無いですか?

ヘルプを見てるのですが、「色を知る」 という情報が検索できません
「色を知る」が検索かけてそっくりそのまま出るとは思いませんが
0955デフォルトの名無しさんNGNG
>>954
1.TBitmapにもCanvasプロパティがある
2.100, 100 が知りたいのに何でPixels[300, 300]?
0956931&955NGNG
ここのまねをしたら、できました。
http://homepage1.nifty.com/MADIA/delphi/Win32API/getcolorcount.htm
一行文の色値を読み込んでから、その中から目的の座標の色を探すみたいですが
直に目的の座標の色を知る方法てないんでしょうか?

>>955
すみません、座標打ち間違いです。
0957デフォルトの名無しさんNGNG
>>954
hanteiをhentaiと読み間違えたよ。それだけだけど。
0958デフォルトの名無しさんNGNG
if BM.Canvas.Pixels[
0959デフォルトの名無しさんNGNG
DBGridに表示するデータについてなのですが、
データが0の時は'XP'、1の時は'Me'と表示するようなことをしたいのですが、
どうすればいいのでしょうか?

それと>>914で質問しました、DBGridのデータ再取得でいまだに悩んでおります。
DBGridでデータ一覧を表示>別画面に移ってデータ改変>またDBGridに戻る
といったような画面ハンドリングの場合、みなさんはどうやってDBGridのデータを再取得しているのでしょうか?
DBの種類や接続方法によって違うのでしょうが、参考に教えていただければうれしいです。
0960デフォルトの名無しさんNGNG
チャット&ファイル転送を兼ね備えたものを作っているのですが、
何故かローカルじゃないと接続できません。
どういった間違いがあるとこういう事が起こるのでしょうか?
例えば自分のプライベートIPを入れて接続しようとしても接続できません。
0961デフォルトの名無しさんNGNG
9割方DNSかデフォルトゲートウェイの設定が不良
0962デフォルトの名無しさんNGNG
またネットワークの基礎知識の無い奴が
ネットワークアプリ作ろうってのかい?
0963デフォルトの名無しさんNGNG
>>950
MSのエンジン使いたいみたいだけど、
日本語にも対応するようになったんだな。

自分は以前、テレフォニー関係のツールで
合成エンジンが必要になって、MSのも
調べたが、当時は日本語ができなくて
結局、OKIのSmarttalkを使った。

OKIのはActiveXだから、Delでも簡単に実装できた。
0964デフォルトの名無しさんNGNG
>>961,962
すいません本当にアホみたいな間違いしてました。できました。
お騒がせしました^__^;
0965デフォルトの名無しさんNGNG
おおおっっぱい♪ いもうとのおっぱい
みくろなおっぱい 洗濯かごの中
いっぱいオッパイの残り香イエエエエエ!
ダンシングしながらはいてみたよ!イエエエエエ
おっぱいみたいな肉まん当てたら疑似餌なおっぱい
アンダー60 トップ80 (笑い)
そんなミクロのオッパイ光恵kてやる是イエエエエエ
0966デフォルトの名無しさんNGNG
引数がキーと文字列でレジストリ値を加えたり
削除したりするソースを公開しているホームページを
知りませんか?
プログラムだけでもいいんですけど。
0967デフォルトの名無しさんNGNG
reg.exew
0968デフォルトの名無しさんNGNG
>>966
TRegIniFileかTRegistryで検索しろ
0969デフォルトの名無しさんNGNG
>>959
>表示するデータ
対応するテーブルを作るしかないんじゃないの?

>データ再取得
トランザクション再接続じゃダメ?
0970デフォルトの名無しさんNGNG
>>969
DBGridの表示内容改変はできないのですね。了解しました。

トランザクション再接続とは具体的にはどうすればいいのでしょうか。
再取得方法として、以下の方法で再接続してみたのですが、
ADOQuery.Active := False;
ADOQuery.Active := True;
DBGrid.Refresh;
でも
DataSource.DataSet.Close;
DataSource.DataSet.Open;
DBGrid.Refresh;
でもだめなのです。
だめというか、同じ処理を2〜4回やると再取得できているというのが現状です。
なぜ一回ではダメで複数回で反応するのかがまったくの謎なのです。。。
0971デフォルトの名無しさんNGNG
そろそろ次スレ。
0972デフォルトの名無しさんNGNG
くだすれDelphi(超初心者用)その19
ttp://pc5.2ch.net/test/read.cgi/tech/1097454588/

0973デフォルトの名無しさんNGNG
TEditorってシェアウェアなんだけど機能制限ってあるんですか?
ある程度、物になったら払ってもいいかなとは思ってますけど・・・
0974デフォルトの名無しさんNGNG
>>973
なぜここで聞く・・・・
0975デフォルトの名無しさんNGNG
んだな。次スレで聞けや
0976ななしへたぐらま ◆XcB18Bks.Y NGNG
>>975
超初心者向けスレッドでそういうボケをかますと本気にされそうですね.

念のために書いておくと>>974氏の意図は

「TEditorのおひさるページで調べるなり,作者に直接問い合わせるなりすればよいのに
 なぜわざわざここで尋ねるのか?」

ということだと思われます.
0977デフォルトの名無しさんNGNG
すみません。TWebBrowser について詳しいサイトを教えてください。
日本語でも英語でもかまいません。よろしくお願いします。
0978デフォルトの名無しさんNGNG
>>977
ここで聞くより、検索した方が早いと思うが。
http://www.google.co.jp/search?q=TWebBrowser&hl=ja&oe=Shift_JIS&inlang=ja&lr=lang_ja&sa=X&oi=lrtip7
http://www.google.co.jp/search?q=TWebBrowser+%83T%83%93%83v%83%8B&hl=ja&inlang=ja&ie=Shift_JIS&oe=Shift_JIS
0979デフォルトの名無しさんNGNG
>>978

わざわざ、ありがとうございました。信じられないことに検索をすることをど忘れしていました。
0980デフォルトの名無しさんNGNG
>>970
ゴメン、ADO使ってないのにレスしてしまった。
参考までにIBの場合で書くと、
DataSetをPostしてもトランザクションをコミットしないと実際にはDBに
書込まれないので、他のクライアントからは更新されてないように見える。
任意にサーバーのDB更新したいならコミット処理を書く。
たぶん同じケースなんだと思うけど、ADO知らないので詳細は不明。
0981デフォルトの名無しさんNGNG
perlで言うところのSpriteの様なライブラリのdelphi版はないでしょうか?
機能的にはSQLのサブセットを使ってテキストファイルに入出力を行うものです.
0982デフォルトの名無しさんNGNG
すれ違いですがお願いします。
WinXPでCD-ROMやリムーバブルドライブにメディアを挿入した時に
ドライブ内のファイルによって自動再生プログラムを選択する
ダイアログが表示されますが、その中に自作プログラムを入れたいのですが
どうすればよいでしょうか?
具体的には、デジカメのメモリーカードを挿した時に自動でHDDに取り込む
プログラムを作っています。
0983デフォルトの名無しさんNGNG
自動起動するCDをエクスプローラで開き、autorun.infというファイルの中身を見れ。
もしくは"autorun.inf"でぐぐれ。
0984デフォルトの名無しさんNGNG
そういうこっちゃねーだろ
0985デフォルトの名無しさんNGNG
>>983
オレもそう答えそうになって踏みとどまったのだよ
0986デフォルトの名無しさんNGNG
>>982
漏れならそのダイアログにあるプログラムの名前で
レジストリをサーチする。
何件か絞り込んだらなんとかなるんじゃないかな
0987デフォルトの名無しさんNGNG
>すれ違いですがお願いします。
図々しい。
0988デフォルトの名無しさんNGNG
ホレttp://hp.vector.co.jp/authors/VA031262/reg.html
レス数が950を超えています。1000を超えると書き込みができなくなります。