くだすれ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デフォルトの名無しさん
NGNG16 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ダウンロードを途中で止めたい場合、abortを使っているのですが例外がでてしまいます。
abortをtry〜exceptで囲っても捕まえることができません。
この例外を出ないようにしたいのですがどうすればよいでしょうか?
0004デフォルトの名無しさん
NGNGみたいな記事がでてくるけどどう?
IndyのサンプルプログラムにTIdFTPのデモってないのかな?
0005デフォルトの名無しさん
NGNGすばやいレスありがとうございます。Yahooは未チェックで検索結果がGoogleとここまで違うとは収穫でした。
Indyのサンプルプログラムでも同じ例外はでます。
ほかにもTIdFTPを使ったサンプルをいくつかみつけましたがどれも同様でした。
検索して出てきた記事を何度か読み直してみましたがおそらく今回の件とは関係ないようです。
0006デフォルトの名無しさん
NGNGデバッグオプションで例外のチェックをはずすか、.exeから実行
すればちゃんとキャッチするとかだったら、既出度120%で今にも
波動砲が発射されそうな勢いなのだが。
0007デフォルトの名無しさん
NGNGすいません、わからない事もあって説明がおかしいかもしれません。
追加でわかった事も含めてもう一度まとめました。
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デフォルトの名無しさん
NGNGKillDataChannelも同時に実行されてソケットハンドルが閉じられるそうだけど、
Abort後にそれに対して何か操作してるところとかない?
0009デフォルトの名無しさん
NGNG今、表示されてる(VisibleがTrueになってる)アイテムの数を知るプロパティみたいなものってないですか?
FieldCountだと非表示のやつまでカウントされるんで・・
0010デフォルトの名無しさん
NGNGAbortの後は何もしないようにしています。
Getメソッドの中で何かしてるのかと思い調べていきましたがよくわかりませんでした。
(Getメソッドの中を弄らないといけないならちょっと手に負えない気がします)
Getメソッドは受信したファイルを書き込むファイル名、もしくはTStreamを指定できるのですが
ファイル名のほうを指定し
procedure TIdTCPConnection.RaiseExceptionForLastCmdResult;
begin
raise EIdProtocolReplyError.CreateError(LastCmdResult.NumericCode, LastCmdResult.Text.Text);
end;
のraiseをコメントアウトすれば例外はでなくなりました。
とりあえずの解決です。
ただ、TStream(TFileStreamを使っていますが)を使いたいのでもう少し調べてみます。
長い時間ありがとうございました。
ちょっと時間をかけ過ぎたようで自前実装のほうが速かったような気もします orz
0011デフォルトの名無しさん
NGNGメニュー操作中は処理を一時無効にして、メニューが実行された場合やメニューから
フォーカスが外れた場合に処理を再開しようとしています。
TMainMemuにはFocusedメソッドも無く、ActiveControlでは判断できませんでした。
メニューが操作中か、メニューにフォーカスがあるかわかる方法は無いでしょうか?
0012デフォルトの名無しさん
NGNGフォーム直下に表示されるメニューに関しては、操作の開始と終了時に
フォームに WM_ENTERMENULOOP と WM_EXITMENULOOP がそれぞれ
送られてくるようです。
それ以外にもメニューの状態変化は、親ウィンドウにメッセージとして
送られてきますので、適当なものを WinSight で調べてみてください。
0014デフォルトの名無しさん
NGNGどうすれば良いのでしょうか?
ExceptObject は例外があってもなくても nil なので使えませんでした。
try
raise Exception.Create('Hoge');
finally
// if not 例外 then 処理A
if ExceptObject = nil then
ShowMessage('finally: ExceptObject = nil');
end;
0015デフォルトの名無しさん
NGNGtry
finally
end;
// ここに書いたコードは try〜 finally で例外発生時には実行されない
これでいいと思うが
001614
NGNG例外発生時には同じ関数内で別の処理をしたいのですよ。
こんな感じです。
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「例外が起こっても絶対に実行する処理」なわけだから
そこで一部だけ処理したいと発想するのがおかしい
0019デフォルトの名無しさん
NGNG作っているのですが
Dateヘッダーの形式
Sat, 14 Apr 2004 12:08:43
を作るにはどうしたらよいでしょうか?
0020デフォルトの名無しさん
NGNG>
>基本的にありませんが、Assertで失敗することで取得できます。
>ただし字面の見栄えが悪いのと速度が遅いのが難点です。
>
>try Assert(False) except on E:EAssertionFailed do ShowMessage(e.Message); end;
これって、AssertErrorProc 使ったほうがいいみたいだね
0021デフォルトの名無しさん
NGNG影響が大きすぎるだろ。
備わっていない機能を無理に使うよりモジュール名メソッド名を
手打ちで出力しておいたほうがよっぽどまし。
0022デフォルトの名無しさん
NGNG0023デフォルトの名無しさん
NGNG0024デフォルトの名無しさん
NGNGtryとかで無理矢理はさむよりAssertErrorProcを使ったほうがいいよねって意味で言ったの
0025デフォルトの名無しさん
NGNG0026デフォルトの名無しさん
NGNG0027デフォルトの名無しさん
NGNG言いたいことは「影響が大きすぎるだろ。」って事だけだよ。
無理やりAssertErrorProcを使って取得するのは現実的ではない。
実際に試してみたか?
他の箇所でもAssertを大量にばら撒いているようなプロジェクトでさ。
0028デフォルトの名無しさん
NGNGファイル名や行番号取得目的でなかったらデフォルトの呼べばいいし
0029デフォルトの名無しさん
NGNGAssertErrorProcを置き換える時に元のアドレスも保存しておいて
ShowOnce := True; //グローバル変数。一回だけ情報表示に使う意味
Assert(False); //AssertErrorProcでShowOnceを見て呼び分ける。ShowOnceをFalseに戻す。
なんてのを思いついた。
0030デフォルトの名無しさん
NGNGだからそれを実際にやっているのかと・・・
万難を排して実現するようなもんじゃないだろ。
ってのは俺の価値観か。邪魔したね。
0031デフォルトの名無しさん
NGNG0032デフォルトの名無しさん
NGNGもしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが、
お礼はDelphiの布教と初心者の救済をお願いします。
0033ななしへたぐらま ◆XcB18Bks.Y
NGNG字面通り解釈するならこんなのでどうでしょうか.
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
NGNGprocedure 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ちょっとまずいんじゃないの?
0036デフォルトの名無しさん
NGNGどっちにしてもわけわかな副作用を持たせるより
素直にメソッド分けるなりして単純愚直にやるのが定石。
BeginUpdate
try
...
Succeed or Finish or Close;
finally
EndUpdate;
end;
except内で必ず何か記述させるより正常なシーケンスで何か呼ばせる方が
呼び忘れたときの検出が容易で被害が少ないと思うし。
003711
NGNGTMainMemuの操作中の判断はWM_ENTERMENULOOPとWM_EXITMENULOOPで無事判断する
事ができました。
しかし、TPopupMenuのメッセージはうまく取得できませんでした。
また、Personalしか持っていないので「WinSight」の代わりに「Spy++」を
使って送られてくるメッセージを見てみたんですが、メニュー関連と思われる
ものを見つける事が出来ませんでした。
ポップアップメニューを操作しているかどうかの判断は、どうすれば出来ます
でしょうか?
003811
NGNGprotected
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モーダルなんだから
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 にして。
004011
NGNGあ、すみません。テストロジックの例がまずかったですね。
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今のところ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デフォルトの名無しさん
NGNGif 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デフォルトの名無しさん
NGNG0044デフォルトの名無しさん
NGNG0045デフォルトの名無しさん
NGNG0046デフォルトの名無しさん
NGNGなぜに?
0047デフォルトの名無しさん
NGNG0048デフォルトの名無しさん
NGNGだって、手動でポップアップメニューを表示してるんだから、その前後でどこの
メニューが開こうとしているか、閉じようとしているかはコードでいかようにも
知らせることができるだろうさ
0049デフォルトの名無しさん
NGNGprocedure 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デフォルトの名無しさん
NGNGUpdateCountのデフォルトは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デフォルトの名無しさん
NGNG0052デフォルトの名無しさん
NGNG0053デフォルトの名無しさん
NGNG> UpdateCountのデフォルトは0ですよ、当然。
なんで当然なの?
> Unitのプライベートな変数を使うのは構わないのですけど、
> try〜exceptブロックが増えるので駄目です。
そこまで言いきるなら、try〜exceptは一切使わない。これ最強。
ひょっとして、また質問のふりをした釣りなのか?
005411
NGNGえーと、情報が小出しみたいになってすみません。
「その他、色々な場所で何種類かのポップアップメニューを表示」は
下のようなPopupMenuプロパティでのポップアップも含めてになります。
Panel1.PopupMenu := PopupMenu3;
Panel2.PopupMenu := PopupMenu4;
・
・
・
あとポップアップメニューの個数も、ポップアップするタイミングも、後から
追加していく事も多いので、出来れば設定を1箇所にまとめたいもので。
あと、>>40の意味がわかりにくかったですね。
基本的にやりたい事は、>>11のTPopupMenu版になります。
「複数ある内のどれかがポップアップしているのかを判断したい」は
「どのメニューがポップアップしているか」ではなくて、
「操作しているアクティブなものがポップアップメニューか(を判断し
タイマーイベントを処理するか判断する)」
あるいは「複数あるポップアップメニューの操作開始・操作終了を
一箇所で拾いたい(操作開始ならタイマー無効、操作終了なら
タイマー開始)」になります。
0055デフォルトの名無しさん
NGNGVCLソース読んだ事ある?
0056デフォルトの名無しさん
NGNGhttp://pc5.2ch.net/test/read.cgi/tech/1062422335/210-224
214
220
222
と同じ人物?
新手のVB荒らし?
0057デフォルトの名無しさん
NGNG0058デフォルトの名無しさん
NGNG0059デフォルトの名無しさん
NGNGファイル'ExptIntf.dcu'が見つかりません
と出ます。ExptIntf.dcuで検索してもロシア語のページが数件出てくるだけです。
どこかでExptIntf.dcuはDL出来るものなのですか?
0060デフォルトの名無しさん
NGNG0061デフォルトの名無しさん
NGNG>「操作しているアクティブなものがポップアップメニューか(を判断しタイマーイベントを処理するか判断する)」
うーん、いろんなところでポップアップされる可能性があるなら、メッセージを一つの
プロシージャで捕まえるのは難しそう。
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メッセージループを実行中なんだな。ごめん。
0063デフォルトの名無しさん
NGNGOnInitPopUp と OnClosePopup イベントを付けた派生コンポをつくるのが簡単かも
0064デフォルトの名無しさん
NGNGTPopupList型の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デフォルトの名無しさん
NGNGhttp://www.delphipraxis.net/post210991.html
ここみたくInitializationでやればプロジェクトソースは書き換えなくて済むか。
0066デフォルトの名無しさん
NGNGHook: 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デフォルトの名無しさん
NGNGresult := 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をしているのに途中でフォームが閉じれないのはなぜでしょうか?
0069デフォルトの名無しさん
NGNG0070デフォルトの名無しさん
NGNGフラグを見るようにしました。
0071デフォルトの名無しさん
NGNGループ内のどの辺で、どのくらいの時間を消費しているのか
測定してみて、定期的にApplication.ProcessMessagesを
呼び出すようにすればいいのでは?
ただ、Application.ProcessMessagesを使いすぎるとパフォーマンスが
落ちることがあるようなので、その辺はチューニングする必要ありかも。
0072デフォルトの名無しさん
NGNG0073デフォルトの名無しさん
NGNGそれでは、お勧めの開発ツールは何ですか?
0074デフォルトの名無しさん
NGNG0075デフォルトの名無しさん
NGNG現在アニメーションのプログラムを製作しているのですが,知識が不足してきまして,
新しい参考書を買って勉強しようと考えています.
どの参考書が有効なのか自分だけでは判断付かなかったので,オススメの本がありましたら教えていただけませんか?
なお,今まで「Delphiゲームプログラミングのエッセンス(著:日高 徹)」という本を使って勉強していました.
ただこれは人から譲り受けたものでして,私はゲームを作っているわけではありません.
アニメーションと言いましても,シミュレーション結果をアニメーション表示する機能が付いている,というものです.
0076デフォルトの名無しさん
NGNG0077デフォルトの名無しさん
NGNG0078デフォルトの名無しさん
NGNG0079デフォルトの名無しさん
NGNGIntraWebは?
あとPHPなら、Delphiと連携出来るみたい
http://users.chello.be/ws36637/php4delphi.html
0080デフォルトの名無しさん
NGNG0081デフォルトの名無しさん
NGNGi:= byte(c);
0083デフォルトの名無しさん
NGNGなぜにByte・・・
Ordにしとけ
0084デフォルトの名無しさん
NGNGその人によるとOrd()とByte()の生成するコードはまったく同じらしい。
好みで使い分ければよろし
0085デフォルトの名無しさん
NGNGキャストでしょ?
008611
NGNGごさいました。
PopupListなんてものがあるんですね。
コンポーネントを派生してなにかしないといけないのかと思っていましたが、
かなりスッキリしたコードになりそうです。ありがとうごさいました。
0087デフォルトの名無しさん
NGNG0088デフォルトの名無しさん
NGNGみたいな感じで、日付をそのまま名前にしたテキストファイルがびっしり詰まっているとします。
日付は必ずしも連続していません。
この中からいちばん日付の新しいもの(ファイルプロパティのUPDATE日付じゃなく、ファイル名の日付)
を取得するうまい方法ってありますか。
0089デフォルトの名無しさん
NGNGファイル名をすべて列挙して調べるしかない。
0091デフォルトの名無しさん
NGNG0092デフォルトの名無しさん
NGNGfunction 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一番上のファイル名を取得するやり方はどうかな。
0095デフォルトの名無しさん
NGNG>>92の比較部分をCompareStrにするのが一番早い気がする。
MMDDYYYYとかになったら対応できんけど。
0096デフォルトの名無しさん
NGNGCのなら探せばあるはず。 Delphiのは知らない。
009788
NGNGすげーです
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)って結果はまったく同じですよね?
自分の解釈では同じだと判断したのですが
先輩(もう居ない)のソースコードを見ると両方が入れ違いに使われてたりするので
なにか自分の知らない意味があるのかと気になっているのですが・・。
0100A
NGNGどっちが効率がいいかは、状況次第になるけど…。
私は、似たような処理の必要なアプリで、>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;
こんな感じ。(テストはしてないから、そのまま動くかどうかは不明)
ファイルのリストからではなくて、現在の日付から存在が予測されるファイル名を
決めうちでどんどん作って存在するか調べてみる。という方法。
0101A
NGNGそういうファイルは、ほぼ毎日次々と製作される可能性が高いので…
最新のファイルは、現在からそう日を置かない物の可能性が高い。
同じ場所にかなり大量のファイルが存在する可能性が高い。
と判断。
そういう条件の場合においては、存在するファイルを全て調べる>92の方法よりは、
こっちのほうが、効率が良くなるんじゃないかな…? と思ってみた。
ただし、この方法の欠点は、前提となる条件が外れると、むちゃくちゃ効率悪くなることw
あと、最大検索数より古いものが最新だった場合、検知できないこと。
0102デフォルトの名無しさん
NGNGそこで良くない方法かもしれないけど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デフォルトの名無しさん
NGNG0104デフォルトの名無しさん
NGNGcopy
0105デフォルトの名無しさん
NGNG見落としてました。
有り難うございます。
0106デフォルトの名無しさん
NGNGもしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが、
お礼はDelphiの布教と初心者の救済をお願いします。
010788
NGNG特に>>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あの音だけを鳴らしたい場合、どのようにすればよいでしょうか?
0109デフォルトの名無しさん
NGNGポーン
0110デフォルトの名無しさん
NGNG0111デフォルトの名無しさん
NGNG別のフォルダにコピーするにはどうしたらいいでしょうか?
WininetのFindFirstUrlCacheEntryやFindNextUrlCacheEntryを使えばいいのでしょうか?
0112デフォルトの名無しさん
NGNG0113デフォルトの名無しさん
NGNG>>110
ありがとうございます。>>110さんのほう、いただきました。
0114デフォルトの名無しさん
NGNGもしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが、
お礼はDelphiの布教と初心者の救済をお願いします。
0115デフォルトの名無しさん
NGNGprocedure TForm1.Button2Click(Sender: TObject);
begin
with NotifyIcon do
begin
hIcon := Icon.Handle;
end;
Shell_NotifyIcon(NIM_MODIFY,@NotifyIcon);
end;
ここのIcon.Handleのところですが
任意のアイコンを指定したいのですが
このIconはどこに読み込んでおけばいいのでしょうか?
0116デフォルトの名無しさん
NGNG0117デフォルトの名無しさん
NGNGそのリソースというのがやりたいです。
0118デフォルトの名無しさん
NGNG�@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わお!勉強になります。
�@をいただきます。ありがとうございます。
0120Delフサギコ ◆A6VzDeLphI
NGNGミ,,゚Д゚彡
ミ つ旦)~~
〜と,,,~),,~)
コントロールがDisabledの時の
Fontの色は何がつかわれているのでしょうか?
clInactiveCaption/clInactiveCaptionText/clGrayText
のどれかだとは思うのですが。
0121デフォルトの名無しさん
NGNG0122デフォルトの名無しさん
NGNGclGrayText
clInactiveCaptionはアクティブじゃないタイトルバーの背景色
clInactiveCaptionTextは同テキストの色
0123デフォルトの名無しさん
NGNG0124デフォルトの名無しさん
NGNG0125デフォルトの名無しさん
NGNGメッセージボックスを作りたいのですが何のイベントを拾えばいいのでしょう?
0126デフォルトの名無しさん
NGNG最小化した状態のアプリケーションからタイマーで起動すると
起動したアプリケーションが非アクティブで起動されてしまいます。
0127デフォルトの名無しさん
NGNGなるほど。そうだったのですか、ご忠告感謝します
0128ミ,,゚Д゚ミノ ◆A6VzDeLphI
NGNGもうひとつ質問します。
StatusBarの右下にあるサイズ変更可能をしめす
三角形の[//.]こんなマークを
FormやPanelに描画するスマートなやり方は
ありますか?
.NETのWinFormでSizeGripStyle Showにしたら出るので
何かAPIで描画できるようなきがするのです。
0129デフォルトの名無しさん
NGNGそうなんです。どうにかなりませんか?
0130デフォルトの名無しさん
NGNGやったことないけどDrawFrameControlで出来るんじゃないかしら。
0131デフォルトの名無しさん
NGNGこんなんでパネルにSizeGripを表示してるコードが見つかった。
0132Delフサギコ ◆A6VzDeLphI
NGNG⊂,,,,,,,,,つ,,゚Д゚ミつ
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デフォルトの名無しさん
NGNG0134デフォルトの名無しさん
NGNGReleaseCapture();
Perform(WM_SYSCOMMAND, SC_SIZE | 8, 0);
0135デフォルトの名無しさん
NGNGWM_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デフォルトの名無しさん
NGNG0138デフォルトの名無しさん
NGNGl |
''''''''''‐-、, | に |
::::::::::::::::::::\ | |
:::::::::::::::::::::::::ヽ _,,,,,,_ .| す |
:::::::::::::::::::::::::::::':, ,.-''"::::::::::::`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デフォルトの名無しさん
NGNGTEdit。ReadOnlyをtrueにする。
014377
NGNG0144デフォルトの名無しさん
NGNGEnabledをFalseにすると、ページ内のコンポーネントまで死んでしまうので他の方法があれば教えてください。
0145デフォルトの名無しさん
NGNGOnChangingイベントで、AllowChangeをfalseにする。
0146デフォルトの名無しさん
NGNG0147デフォルトの名無しさん
NGNGhttp://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デフォルトの名無しさん
NGNGbegin
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何で Ellipse を使わないの?
TImage の Canvas は Picture.Bitmap.Canvas と同じで、ビットマップを
変更する都度 Picture.OnChange イベントが発生して全体が無効化される。
従って、表示中に複数に分けて描画を行うとパフォーマンスが低下する。
0150148
NGNG普段の円はEllipseを使うのですが
Sin・Cosを使用しての場合これでよいのか聞いたんです。
円を描くだけでなくて他に応用
するつもりでしたが、質問の仕方が悪かったんですね。
Trunc(Sin(i*Pi/180)*100)とTrunc(Cos(i*Pi/180)*100)
の計算はこれでよいのかって事です。
0151デフォルトの名無しさん
NGNG0152デフォルトの名無しさん
NGNG0153デフォルトの名無しさん
NGNG0から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を使用して)って言ってんだから悪くないだろ。
ただの難癖代案厨だからスルーしとけ。
書き方は問題ないよ。
0155148
NGNG参考になりました。ありがとうごさいます。
0156デフォルトの名無しさん
NGNG0157デフォルトの名無しさん
NGNG0158デフォルトの名無しさん
NGNGJEDIの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デフォルトの名無しさん
NGNGThx!!
CLSID・・・クラス GUID
IID・・・インターフェースGUIDなんですね_| ̄|○
ところでVC用のヘッダーって参考になりますか?
0160デフォルトの名無しさん
NGNG148みたいに質問をよそおうといいのね
0161デフォルトの名無しさん
NGNG0162デフォルトの名無しさん
NGNG0163デフォルトの名無しさん
NGNGfor each hoge in forms
if hoge.name = "hoge" then
hoge.visible = true
end if
next
というのがやりたいのですがDelphiではどのように書きますか?
0164デフォルトの名無しさん
NGNGprocedure 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スマソ、最後の再帰呼び出しの所はTWinControlにキャストして
0166デフォルトの名無しさん
NGNG即レス、感謝。
試してみます。
0167デフォルトの名無しさん
NGNG0168163
NGNGあるイベントでフォームをクリエイトしてそのときはまだ不可視で
タスクトレイから出したときにそのクリエイトしたフォームを可視化したいです。
そこでメインフォームがリストア時に不可視のウィンドウを検索して
すべて可視化したいといったところです。
0169164
NGNGごめん、勘違いしてた
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;
0171163
NGNG0172デフォルトの名無しさん
NGNGインスタンスを管理しないで、名前だけ付けてるとかかな。
0173デフォルトの名無しさん
NGNG0174デフォルトの名無しさん
NGNG自分がなくなるとき、自分をリストから削除する、と。
0175デフォルトの名無しさん
NGNG0176デフォルトの名無しさん
NGNGもしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが、
お礼はDelphiの布教と初心者の救済をお願いします。
0178デフォルトの名無しさん
NGNG0179デフォルトの名無しさん
NGNG全然問題ないよ。>>174のは別に普通じゃないから気にスンナ
0180163
NGNG0181デフォルトの名無しさん
NGNG0182163
NGNGif Screen.Forms[I] Is frmHoge then
Screen.Forms[I].Show;
という感じですか?
0183デフォルトの名無しさん
NGNGis使うと後からフォームのクラス名変えるとかクラス名のタイポしたとき
ちゃんとコンパイルエラーが出てくれる。
0184163
NGNGIsを使ってみます。ありがとうございました。
0185163
NGNG0186デフォルトの名無しさん
NGNG問題出てきたじゃないかよ
0187デフォルトの名無しさん
NGNG>>174, 177の流れで>>169は問題ないと言ったのだよ。新しくリスト作る必要ないだろ。
0188デフォルトの名無しさん
NGNGインタープリタとして使いたいんですが・・・。
0189デフォルトの名無しさん
NGNGアプリケーションのコンパイルをすると、Borland$が見つかりません
というエラーが出てコンパイルできなくなってしまいました。
何か対処の方法があるのでしょうか?
0190デフォルトの名無しさん
NGNG0191デフォルトの名無しさん
NGNG0192デフォルトの名無しさん
NGNGSP2アンインストールします。
0193デフォルトの名無しさん
NGNGSP2アンインストールします。
0194デフォルトの名無しさん
NGNG0195デフォルトの名無しさん
NGNG0196デフォルトの名無しさん
NGNGprocedure Thoge.New;
begin
self.Free;
self:=Thoge.create;
end;
ってできるんですか?
0197デフォルトの名無しさん
NGNG強力かどうか知らんが、Application.ProcessMessages
0198デフォルトの名無しさん
NGNGそれがかなり貧弱で困ってます。
0199デフォルトの名無しさん
NGNGポップアップメニューを表示しているときに
タイマーによって起動されたちょっと長い処理があると
その処理が終わるまでメニューの操作ができないのです。
0200デフォルトの名無しさん
NGNG0201デフォルトの名無しさん
NGNG長い処理はスレッド使ってください。
0202デフォルトの名無しさん
NGNGそれしかないですか。
大部分がフォームのコンポーネントにアクセスするので
面倒なんですよね。
0203デフォルトの名無しさん
NGNGメニューの操作程度ならApplication.ProcessMessagesでも出来ます。
0204デフォルトの名無しさん
NGNGbegin
while true do
begin
application.ProcessMessages;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
PopupMenu1.Popup(0,0);
end;
で試してみたのですが、止まってしまいます。
どこらへんがまずいでしょう?
0205デフォルトの名無しさん
NGNG無理
0206デフォルトの名無しさん
NGNGループはいる前にTimer1.Enabled:=False;を入れないと次々イベントが発生して死にます
0207デフォルトの名無しさん
NGNGすみません。サンプルが悪かったですね。
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デフォルトの名無しさん
NGNG0209デフォルトの名無しさん
NGNGモードレスでポップアップできないでしょうか?
0210デフォルトの名無しさん
NGNG0211デフォルトの名無しさん
NGNG0212デフォルトの名無しさん
NGNGサブ処理(メニュー操作?)がもったりするのは当然ぽ。
0213デフォルトの名無しさん
NGNG0214デフォルトの名無しさん
NGNGWindows の仕組みですから無理
0215デフォルトの名無しさん
NGNG0216デフォルトの名無しさん
NGNG違います(^^;)
0217デフォルトの名無しさん
NGNG0218デフォルトの名無しさん
NGNG0219デフォルトの名無しさん
NGNG0220デフォルトの名無しさん
NGNG0221デフォルトの名無しさん
NGNG0222デフォルトの名無しさん
NGNG0223デフォルトの名無しさん
NGNG0224デフォルトの名無しさん
NGNG「TApplicationのOnIdele」、「TActionListのOnUpdate」どちらを使った方が良いですか?
それとも、別の何かこれを使うのが普通といったものがありますでしょうか
0225デフォルトの名無しさん
NGNGエディットコントロールのコピーなら標準アクションのTEditCopyでも良い。
0226デフォルトの名無しさん
NGNG>面倒なんですよね。
プログラミングなんて面倒なことだらけかと。
割と禁句かと。
面倒がイヤならプログラミングやめるとか。
0227デフォルトの名無しさん
NGNGそうそう。そんならはなからやめとけっていいたくなるよね。
0228デフォルトの名無しさん
NGNGそうそう。そういう奴は豆乳でも飲んでろっていいたくなるよね
0229デフォルトの名無しさん
NGNG失ったことをイベントで知りたいのですが
どうしたらいいですか?
0230デフォルトの名無しさん
NGNG0231デフォルトの名無しさん
NGNGどうも。たぶんそれです。
ありがとうございます。
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;
0233232
NGNGツールバーのボタンを押します。
他のウィンドウを触ってフォーカスをはずします。
ツールバーのボタンを押します。
ここで見た目は押されていない状態になります。
コマンドボタンを押します。TRUEと表示されます。
TRUEと表示されるということは押された状態ということです。
でも、表示上は押されてない状態なのです。
これはコンポーネントのバグなのでしょうか?
0234232
NGNG0235デフォルトの名無しさん
NGNGなんでそんな制御しなけりゃならんのか、わからんな
0236232
NGNGちょっとよくわかりません。
0237デフォルトの名無しさん
NGNG>他のウィンドウを触ってフォーカスをはずします。
>ツールバーのボタンを押します。
このこと。
・フォーカスを得る
・Enabled が true になる
・ボタンが押された
どの順序で起こることを期待してるの?
0238デフォルトの名無しさん
NGNGGetDownメソッドを用意して、常にToolBarウィンドウにボタンの状態を問い合わせるようにすれば、
こういうバグは発生しないのに。まあ何かしら理由がある…と思いたいけど。じゃなきゃ設計が(ry
>>232 とりあえず↓のようにすれば正しい状態を取得できるよ。
down := ToolBar1.Perform(TB_GETSTATE, ToolButton1.Index, 0) and TBSTATE_CHECKED <> 0;
0239デフォルトの名無しさん
NGNGtrue → false は MaouseUp で
Activate は MouseDown で
FDown のトグルは MouseDown で
ということが複雑に絡み合って
0240デフォルトの名無しさん
NGNG御意。VCLはこんなのがけっこうたくさんある
0241デフォルトの名無しさん
NGNG0242232
NGNG順番はどうあれ見た目では押された状態じゃないのに
プロパティは押されていると返すのはバグじゃないの?
といっているのです。
>>238
ありがとうございます。試してみます。
0243デフォルトの名無しさん
NGNG0244デフォルトの名無しさん
NGNGDrawText() + DT_PATH_ELLIPSIS とかなんとか
0245232
NGNG0246デフォルトの名無しさん
NGNGMinimizeName?
0248デフォルトの名無しさん
NGNG多分それだと思うけど、なんかうまくできない。
二番目のカンバスってなんだ?
調べてもぴんとこない。
0249デフォルトの名無しさん
NGNG0250デフォルトの名無しさん
NGNGDelphiでUnicodeを扱えないというのを聞いたのですが、
Unicodeが使えないと困る時ってどういう時ですか?
エディタソフトを作る時とかに困るんですかね?
0251デフォルトの名無しさん
NGNGUnicodeが使えないとUnicodeを使うときに困ります。
0252デフォルトの名無しさん
NGNG0253デフォルトの名無しさん
NGNG0254デフォルトの名無しさん
NGNG自前で作るべきですか?
0255デフォルトの名無しさん
NGNG0256デフォルトの名無しさん
NGNGなにか改善策ありますか?
0257デフォルトの名無しさん
NGNGVCLでやるならChangeFileExt(filename, '') かね。
0258デフォルトの名無しさん
NGNGXpSP2やめろ。
0259デフォルトの名無しさん
NGNG0260デフォルトの名無しさん
NGNGXpSP2の話題は、本家ニュースグループ(delphi.non-technical)が最強。
0261デフォルトの名無しさん
NGNG0262デフォルトの名無しさん
NGNG0263デフォルトの名無しさん
NGNG0264デフォルトの名無しさん
NGNG0265デフォルトの名無しさん
NGNG0266デフォルトの名無しさん
NGNG1、delphiでBDEを使ってデータベースに接続するソフトを書いたのですが、
これを他のマシンで使う場合、実行ファイルのほかにどのファイルをコピーしないと駄目ですか?
2、Form1、unit1に書いてあるQuery1をUnit2から利用したいのですが、unit2のInterface部にunit1を入れ、
unit1のimplementation部にunit2を書いているのですが、Query1だけが利用できません。
Queryは他のユニットからは使えないのでしょうか?
0267デフォルトの名無しさん
NGNG使用マシンで、BDEをインストールしないと駄目
ODBCとか使っていたら、それも設定する
Query1は、Form1.Query1とする。
0268デフォルトの名無しさん
NGNG>使用マシンで、BDEをインストールしないと駄目
>ODBCとか使っていたら、それも設定する
と言うことは、DelphiのインストールCDを使ってBDEやODBCをインストールしないと
駄目ってことでしょうか?
それともその辺をまとめたファイルがBorlandのサイトかどこかにありますか?
0269デフォルトの名無しさん
NGNGその他、BDEのディレクトリにあるBDEINST.CABを使ってWebで
配布する方法もある。同じディレクトリにあるBDEINST.TXTを参照の事。
0270デフォルトの名無しさん
NGNG266の作ったアプリのユーザーに同情するよ・・・・
0271デフォルトの名無しさん
NGNG0272デフォルトの名無しさん
NGNG改めないとな、漏れも
0273デフォルトの名無しさん
NGNG0274デフォルトの名無しさん
NGNG0275デフォルトの名無しさん
NGNGこんな便利なのあるんだ・・・付属の一生懸命使ってたのは何だったんだ
0276デフォルトの名無しさん
NGNGひどいなー。言いがかりだ。
0277デフォルトの名無しさん
NGNGInnoSetupって何?
0279デフォルトの名無しさん
NGNGすまん、こっちだった
http://www.jrsoftware.org/
0280277
NGNG簡単にBDEも同梱できるんだったら使いたかったんだが。甘かった。
0281デフォルトの名無しさん
NGNG0282277
NGNG今回も美味しそうだったからつまみ食いしようと思ったんだが。
0283デフォルトの名無しさん
NGNG当方Delphi7Proを使っています。
0284デフォルトの名無しさん
NGNGDel7だったらTTcpServerじゃない?
0285デフォルトの名無しさん
NGNG0286デフォルトの名無しさん
NGNG何のために本買ったんですか?俺は。
0287デフォルトの名無しさん
NGNGパレットには載ってないけど、ScktCompをusesに加えれば従来通りTServerSocketも使えます。
この場合はTServerSocketのインスタンスを自分で作成する必要があります。
0288デフォルトの名無しさん
NGNGどのように書けばよいでしょうか?
0289デフォルトの名無しさん
NGNGRandom(100)+1;
0290デフォルトの名無しさん
NGNG即レス感謝
0291デフォルトの名無しさん
NGNG特別な用途がない限り、アプリ起動に対し一回だけで良し。
かつライブラリが自動的に呼び出しているので、乱数を手に入れることだけが目的なら
Randomize は必要ないですし、繰り返し呼ぶと乱数の列が乱れます。
0292デフォルトの名無しさん
NGNGopendialogを使うとファイルの指定は出来ますが、フォルダの指定が出来ないので。
0293デフォルトの名無しさん
NGNGbuff: array[0..255] of char;
と宣言している配列をAPIに渡すためにクリアしたいのですが
どのような方法が一番簡単で確実でしょうか?
GetWindowText(handle, buff, sizeof(buff));
を使用しています。
取得できたら
sCaption: String;
へ、
sCaption := buff;
としてStringへ変換しています。
ひょっとしてこの場合はクリアする必要はないですか?
0294デフォルトの名無しさん
NGNGGetWindowText(handle, PChar(sCaption), Length(sCaption));
0296デフォルトの名無しさん
NGNG0298デフォルトの名無しさん
NGNG0300デフォルトの名無しさん
NGNGこれは良く見かける質問だね。
SelectDirectory関数とか。
0301デフォルトの名無しさん
NGNGOK押されたらExtractFilePathでディレクトリ取得という技もあったな。
プレースバーも使えるので個人的には一番使いやすかったり。ダサいけど。
0302デフォルトの名無しさん
NGNG>かつライブラリが自動的に呼び出しているので、乱数を手に入れることだけが目的なら
>Randomize は必要ないですし、繰り返し呼ぶと乱数の列が乱れます。
Randomize でソースをGrepしても System.pas の宣言と実装しか引っかからないけど。
ライブラリのどこで呼び出してるの?
0303デフォルトの名無しさん
NGNG0304デフォルトの名無しさん
NGNG遅いレスだが、日本語化できるみたい
http://www.jrsoftware.org/files/istrans/
0305デフォルトの名無しさん
NGNGデフォルトのコンポーネント使って自分なりの「フォルダ選択ダイアログ」を作る
って手もありかと。
※スルーされたからって、催促書くのはどーかと。
0306デフォルトの名無しさん
NGNG取得する文字列がbuffより長い場合はどうやって安全に全部の文字列を取得できますか?
0307デフォルトの名無しさん
NGNGこういう心配をする人には、根本的な解決策はありません。でっかいbuffを取っておくように。
0308デフォルトの名無しさん
NGNGDEMOを見てもサッパリです。
お助けください。
0309デフォルトの名無しさん
NGNGと
>取得する文字列がbuffより長い場合はどうやって安全に全部の文字列を取得できますか?
は
かなり異質の問題と思うけどなぁ。
0310デフォルトの名無しさん
NGNGGetWindowTextLength で取った数値が GetWindowText を使うときにはもう信用できないかも、
っていう心配してるんだから、同じじゃないの? TMemo みたいにバカ長いテキストも
あり得るんだから、そんな心配より、全部取れないかもしれない、という心配のほうが
ずっと価値あると思うんだけど。
0311デフォルトの名無しさん
NGNGこの場合は自分で管理すればよろしい。
他プロセスとのやり取りは、そもそも危険。
0312デフォルトの名無しさん
NGNGMSDN says,
GetWindowText cannot retrieve the text of a control in another application.
ということで、そもそも
>>295
>でも、1行目と2行目でキャプションが変わったらどうしましょう。
はあり得ないってことですね。サンクス >>311
0313デフォルトの名無しさん
NGNG0314デフォルトの名無しさん
NGNG0315デフォルトの名無しさん
NGNGだいたいそんな感じです。
0316デフォルトの名無しさん
NGNGttp://www.tmssoftware.com/diagram.htm
ttp://www.devexpress.com/ ←現在、サーバーが死んでいる。製品名OrgChart
0317デフォルトの名無しさん
NGNGthx!どうもです。
0318デフォルトの名無しさん
NGNG0319デフォルトの名無しさん
NGNGvar
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引数でエラーになるようなのですが
渡し方が間違っているのでしょうか?
0320319
NGNGvar
d: Longword;
d2: PDWord;
ret: LongWord;
a: PMIB_TCPTABLE;
begin
d2 := @d;
a := nil;
ret := GetTcpTable(a,d2,false);
showmessage(inttostr(ret));
end;
できました。
0321デフォルトの名無しさん
NGNG0322デフォルトの名無しさん
NGNGファイル|新規作成の所に、ActiveXというタブはありますか?
その中に、ActiveXライブラリというアイコンがあれば可能です。
0323デフォルトの名無しさん
NGNGポインタが var パラメータになっている関数の宣言がおかしいのでは?
var パラメータはその位置にある変数を指すポインタを渡すという意味なので、
ポインタのポインタを渡してることになりますよ。
0324デフォルトの名無しさん
NGNGダウンロードしたのですが、
30日評価版の文字が・・・
0325デフォルトの名無しさん
NGNGフリーはDelphi 6。Delphi 7にフリーは無い
0326デフォルトの名無しさん
NGNGhttp://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デフォルトの名無しさん
NGNG0328デフォルトの名無しさん
NGNGありますでしょうか?
0329デフォルトの名無しさん
NGNGちょっと描いてみてくれ。
0330デフォルトの名無しさん
NGNG0331デフォルトの名無しさん
NGNGDelphi覚えたけど何の役にもたたんね
0332デフォルトの名無しさん
NGNG立てたよ。ネガティブな悪口はそちらでどーぞ。
Delphi覚えたけど何の役にもたたんね
http://pc5.2ch.net/test/read.cgi/tech/1095115109/
0333デフォルトの名無しさん
NGNG0334デフォルトの名無しさん
NGNG縦だけ可変ということは横を固定にしたいわけだから
Form の constrains プロパティで maxwidth と minwidth を同じ値に指定。
0335デフォルトの名無しさん
NGNGありがとうございました。
ほんとDelphiって簡単になんでもできてしまうんですね。
0336デフォルトの名無しさん
NGNG何処のどの本がいいですかね?
0337デフォルトの名無しさん
NGNG0338デフォルトの名無しさん
NGNGTPanelやTMemoはParentを切り替えるだけで親を切り替えられたのですが、
WebBrowserコンポーネントのは場合うまく行きませんでした。
得たい結果としては「元々表示していたページ・入力していた値は消えない」で
「切り替えた先の親に合わせてリサイズが自動で行われる」です。
試したパターンでは、どちらか片方の結果しか得られませんでした。
WebBrowserの親の切替については直接の切替ではなく、親のパネルの切替でも
構わないのですが、なにか良い方法は無いでしょうか。
From1
Panel1
WebBrowser1
Button1〜Button4
From2
Panel2
0339デフォルトの名無しさん
NGNG//元々表示していたページが消えてしまう。
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デフォルトの名無しさん
NGNG0341デフォルトの名無しさん
NGNGParent切り替え時にウィンドウハンドルも再生成されるから、
その時に情報が失われるのかもしれないね。
0342デフォルトの名無しさん
NGNG出来ますけど。何か?
キーワード:RTTI。SaveToStream
0343デフォルトの名無しさん
NGNGclassのメンバに整数型の動的配列入れたいんですが、
どうやってアクセスさせればいいんでしょうか(文が変
hoge = class(TObject)
private
FList : array of integer;
public
ここに何書けばいいんかわかんない
end;
FList[n]の値を代入・値を取得したいです。
0344デフォルトの名無しさん
NGNGhttp://tabbrowser.ktplan.jp/valinor/sleipnir.html
これはSleipnirのですがこんな感じを想定しています
>>330
やっぱりタブで使いたいです
0345デフォルトの名無しさん
NGNG0346デフォルトの名無しさん
NGNGたとえば
property Items[Index: integer]: integer read GetItems write PutItems;
コンストラクタでSetLength()しといてね
0347デフォルトの名無しさん
NGNGスレッドオブジェクトを作る時、名前つきスレッドを選択すると
[エラー] Unit3.pas(67): 'TThreadNameInfo' と 'Cardinal' には互換性がありません
って出るんだけど、どうすればいいですか?
0348デフォルトの名無しさん
NGNG0349デフォルトの名無しさん
NGNG動的配列じゃなくてTList使ってるけど、ここが参考になると思う。
ttp://hp.vector.co.jp/authors/VA009712/take/delphi/pointer.htm#tlist
0350デフォルトの名無しさん
NGNGもしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが、
お礼はDelphiの布教と初心者の救済をお願いします。
0351デフォルトの名無しさん
NGNGTThreadNameInfoって何?
0352347
NGNG名前付きで作成して、1行もコード書かなくてもコンパイルすると
エラーになるんです。
TThreadNameInfoてのは、名前付きでスレッド作ると
Delが勝手に作ってくるです。
スレッドのデモも実行出来なくて。
Del7でアップデートしたらおかしくなったので、その辺りかなと思ったり思わなかったり。。。
0353デフォルトの名無しさん
NGNG0354デフォルトの名無しさん
NGNG0355347 その1
NGNGTyyって名前で「名前付きスレッド」作りました。
type
TThreadNameInfo = record
FType: LongWord; // 0x1000 にすること。
FName: PChar; // (ユーザー空間での) 名前文字列へのポインタ
FThreadID: LongWord; // スレッド ID (呼び出しスレッドは -1)
FFlags: LongWord; // 将来のために予約。0 にすること。
end;
{$ENDIF}
0356347 その2
NGNGprocedure 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デフォルトの名無しさん
NGNG0358デフォルトの名無しさん
NGNGが出ているのだね?
プロジェクトのコンパイルオプションの「型付 @ 演算子」のチェックをはずすこと。
0359デフォルトの名無しさん
NGNGどうにかできるかな?
0361343
NGNGTListにはポインタが入るってことは、
Listに加える内容はオブジェクトでも変数でもなーんでもイイヨ ってことになるんかな?
としたらものすげー便利?
ううむ、奥が深い
0362デフォルトの名無しさん
NGNG0363デフォルトの名無しさん
NGNG頭の皮膚の固いロートルは消えろ
0364デフォルトの名無しさん
NGNGまぁ、バージョンアップするほど使いこなしてないけどなー
0365デフォルトの名無しさん
NGNG0366デフォルトの名無しさん
NGNG0367338
NGNGそーですActiveXです。
確かに、>>339の「元々表示していたページが消えてしまう」場合のハンドルを
調べてみたら変わってました。WebBrowser1.LocationURLも消えてました。
「元々表示していたページ・入力していた値は消えない」場合は同じハンドル
でした。
ページが消えるのは困るので消えないパータンでなんとかしたいのですが、
リサイズ対象の件についてなにか情報がありましたらよろしくお願いします。
0368デフォルトの名無しさん
NGNG0369デフォルトの名無しさん
NGNGあらためて Navigate したらいいんじゃないの。
0370338
NGNGレスどもです。
確かに消えてしまったページを再度Navigateすればページは表示されるんですが、
入力していた値が消えてしまったり、表示位置が先頭に戻ってしまうのが不便なのと、
実際のプログラムでは複数のブラウザコントロールに対して親の切り替えを
一気に行うので、再度読み込みに行ってしまう事を控えたいというのがあります。
0371デフォルトの名無しさん
NGNGこれ試してみて
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もうさ、Parentプロパティは一切設定しないでさ、
ブラウザは動的に作成、親はAPIのSetParentで設定、リサイズは自分で行う
って風にしてしまうのはどうだい。
0373デフォルトの名無しさん
NGNGprocedure 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デフォルトの名無しさん
NGNG0375デフォルトの名無しさん
NGNG0376デフォルトの名無しさん
NGNGprocedure 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;
0377338
NGNGサンプルコードわざわざどうもです。試してみました。
これは初回移動時用でリサイズは自前の場合の例ですよね。この場合、
親のリサイズ時にはSetBoundsで子供のサイズ変更が必要になりますね。
>>372
ブラウザの動的作成も試してみたんですが、結果は最初から貼り付けた時と
同じでした。
「リサイズは全部自前」も考えてはいたんですが、複数ある子供を管理する
仕掛けを作らないといけなそうなので、最終手段かなと思ってました。
自分が親になってるコントロールをぐるぐるループして見つけてサイズ変更
していくとか、各親に子供のブラウザーを管理するリストをつけるとか。
それと、どうもリサイズが元の親に対して行われてしまう原因(Parent以外の
何か)を見逃してるような気がしてたもので。
0378デフォルトの名無しさん
NGNGそれはたぶんその後ParentやAlignを設定したからでは。当然結果は同じだね。
> それと、どうもリサイズが元の親に対して行われてしまう原因
それはAPIでSetParentしても、VCL側ではParentが元のままだから、ちゅう単純な理由だね。
それでParentを一切設定せずに全部自前ってのを薦めたんだけも、まあいろいろ悩みがあるようだね。
0379338
NGNG>>ブラウザの動的作成も試してみたんですが、結果は最初から貼り付けた時と同じでした。
>れはたぶんその後ParentやAlignを設定したからでは。当然結果は同じだね。
そうですね。というかParentを設定しないと見えなくなっちゃっていたので。
>それはAPIでSetParentしても、VCL側ではParentが元のままだから、ちゅう単純な理由だね。
なるほどそうなんですか(といいつつ完全には理解しきれてませんが)。
可能ならロジックは減らしたいというのもあったんですが、「リサイズは全部自前」は
最終手段というほどのものでもないですし、もう少し情報を待ちつつ調べてみて、
方法が見つからなかったら自前にしてみようと思います。ありがとうございました。
0380デフォルトの名無しさん
NGNG変更しても実行時には変更されないのですが、こういう仕様なのでしょうか?
OwnerDataをfalseにしていると、Canvas.Fontなどの変更も反映されます。
0381デフォルトの名無しさん
NGNG「メニューアイテムの選択が、右クリックか、左クリックか」を
OnClick内で判別したいのですが、どうすればいいのでしょうか?
0382デフォルトの名無しさん
NGNG0383デフォルトの名無しさん
NGNG0384381
NGNG人に使って貰うソフト用でなくて、自分専用のソフトで
ナビゲートを少しでも効率的にしようかと思って考えた
んですが、やっぱり変ですよね(自分専用だから変でも
良いかと思ったんですが)。
>>383
キーボードのときは左クリックとすれば問題ないかと。
0385デフォルトの名無しさん
NGNG0386381
NGNGありがとうございます。が、メニューが選択された時点では
ボタンは既に離されているので、同じ値しか返ってきません
でした。
クリックされたマウスボタンではなく他の方法を使って実装
しようかと思います。
0387デフォルトの名無しさん
NGNGShift+クリックで詳細なダイアログを表示して実行ボタンを押すと実行というので使い分けてるな。
で、そのダイアログにはSHIFTを押したときのみこのダイアログを表示みたいなチェックがついてた。
0388デフォルトの名無しさん
NGNG>同じ値しか返ってきませんでした。
あのね、そのとき押してるかかどうかのほかに履歴も取れるんだよ
0389デフォルトの名無しさん
NGNG0390デフォルトの名無しさん
NGNGのですが、どうすればよいでしょうか?宜しくお願いします。
0391デフォルトの名無しさん
NGNGFindFirst
FindNext
FindClose
0392デフォルトの名無しさん
NGNGprocedure 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;
0394デフォルトの名無しさん
NGNG志村上ー、上ー!
0395デフォルトの名無しさん
NGNGって >>381 は試したの?
0396デフォルトの名無しさん
NGNG0397デフォルトの名無しさん
NGNG0398381
NGNGスレ汚されて迷惑な話ですが。
0399デフォルトの名無しさん
NGNG0400デフォルトの名無しさん
NGNG0401デフォルトの名無しさん
NGNG0402デフォルトの名無しさん
NGNG正解が見えないからこそ、いろいろやってみるんだと
0403デフォルトの名無しさん
NGNG教えてもらうのがヘタな香具師は結果的に自分が損することになるよ
0404デフォルトの名無しさん
NGNG0405デフォルトの名無しさん
NGNG0406デフォルトの名無しさん
NGNGもしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが、
お礼はDelphiの布教と初心者の救済をお願いします。
0407デフォルトの名無しさん
NGNG0408381
NGNG遅くなって申し訳ありません。時間が無くてテストできませんでした。
394,395さんのレスで392さんのコードが分かりました。
いま試したところ、ちゃんと動くようになりました。
みなさん、ありがとうございます。
0409デフォルトの名無しさん
NGNG非ブロッキング通信だと正常に切断されるのに
全く同じことをブロッキング通信で行うと、いつまで待っても切断されません(TClientSocket.Socket.Connected が False にならない)
どういうことなのでしょうか?
0410デフォルトの名無しさん
NGNG0411デフォルトの名無しさん
NGNGメモ内のテキストの5バイト目の文字の左上の座標を求めたいのですけど、
以下の方法ではうまくいかないのですけど、どうすればいいでしょうか?
procedure TForm1.Button1Click(Sender: TObject);
var
P: TPoint;
begin
Memo1.Perform(EM_POSFROMCHAR, Integer(@P), 5);
Caption := IntToStr(P.X);
end;
0412デフォルトの名無しさん
NGNGvar
pos: TSmallPoint;
begin
pos := TSmallPoint(Memo1.Perform(EM_POSFROMCHAR, 5, 0));
Caption := IntToStr(pos.x);
end;
0413デフォルトの名無しさん
NGNG0414デフォルトの名無しさん
NGNG同じことを非ブロック通信でやれば問題ないのですが、
これは相手側が確実に切断している事にはなりませんか?
0415デフォルトの名無しさん
NGNG0416デフォルトの名無しさん
NGNGウィンドウのクライアント領域だけドロップを受け付ける
(タイトルバーや枠では受け付けない)ようにするにはどうしたら
良いのでしょうか?
DragAcceptFiles(Form1.Handle,True) でドロップを受け付けるので、
DragAcceptFiles(Form1.ClientHandle,True)でも出来ると思ったんですが、
これだと全く受け付けてくれません。
仕方が無いので、クライアント領域と同じ大きさのパネルを置いて、
そのパネルをドロップを受け付けるようにする、と考えましたが、
他にいい方法は無いでしょうか?
0417デフォルトの名無しさん
NGNGMDI親フォームなの?
そうだとしても、ClientHandle に対応するウィンドウはフォームじゃないよ。
別ウィンドウだけど。
下の方法がいいと思うけど、なんか都合が悪いことあるの?
0418デフォルトの名無しさん
NGNGOLEドラッグ&ドロップなら、カーソル位置によってドロップ禁止したり自由に出来るけど、
パネル置くより面倒かも。コンポーネント拾ってくれば楽かもね。
ちなみにClientHandleはFormStyleがfsMDIFormの時なら使える。
0419デフォルトの名無しさん
NGNG使えるけど TForm のメッセージハンドラでは WM_DROPFILES は受け取れないよ
0420デフォルトの名無しさん
NGNG別にApplication.OnMessageで受け取ればいい
0421デフォルトの名無しさん
NGNGほほう、それは初耳
0422デフォルトの名無しさん
NGNG0423デフォルトの名無しさん
NGNG0424デフォルトの名無しさん
NGNG0425デフォルトの名無しさん
NGNG0426デフォルトの名無しさん
NGNG?あるよ。
0427デフォルトの名無しさん
NGNG0428デフォルトの名無しさん
NGNG代案って何か問題あるのか?
0429デフォルトの名無しさん
NGNGただ代案を出すだけなら問題ないんでない
0430デフォルトの名無しさん
NGNG〜がありますか?
if あるなら then
その方法を提示;
if ないなら or 現実的でないなら then
begin
直接的な解はないと回答
while さらに別の方法が必要か? do
一段階上位の要求を聞きだして、その方法を提示
end;
0431デフォルトの名無しさん
NGNG0432デフォルトの名無しさん
NGNGprocedure 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デフォルトの名無しさん
NGNG0434デフォルトの名無しさん
NGNGどうでもいいんだが、
> if ないなら or 現実的でないなら then
> begin
> 直接的な解はないと回答;
じゃね?
0435デフォルトの名無しさん
NGNG今回の場合は
if 簡単に解決できるけど then ShowMessage('なんでそんな事するの?必要あるの?')
ってことだよ。質問自体の内容はハッキリしてるけど、理由が不明だから、簡単に解決する
けど、なんだか変 って感じなの
0436416
NGNGパネルを使って処理する事に特に問題は無いんですが、もし使わないで
同じことが出来るならそうしたいと思い、質問した次第です。
パネルを使う方法と、うまく使いこなせるか分かりませんが、
>>432 さんのコードも試してみたいと思います。ありがとうございました。
0437デフォルトの名無しさん
NGNGMDI親フォームなの?
そうなら、>>432 でいいけど、普通のフォームならパネル使って >>432 のコードで ClientHnalde
のところを Panel1.Handle に変えてね
0438デフォルトの名無しさん
NGNG>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デフォルトの名無しさん
NGNG0440デフォルトの名無しさん
NGNG0441デフォルトの名無しさん
NGNGFindFirstでファイル一覧を取得しているのですが、とある複数の拡張子を取得したいと思っています
*.txtと*.htmlのみを取得しようとしたら、FindFirstをそれぞれ二回やらないとダメでしょうか?
二つ三つならまだいいけど、十個などになるとさすがにきついと思うので
何かスマートな方法ないでしょうか?
0442デフォルトの名無しさん
NGNG0443デフォルトの名無しさん
NGNGExtentions:string = 'txt;html;';
*.*で検索
ExtractFileExt(FileName)+';'でPos
0444デフォルトの名無しさん
NGNG0445デフォルトの名無しさん
NGNG酷いコードだな
tmlでも引っかかるし
だいたい ; ってファイル名に含められるし
0446デフォルトの名無しさん
NGNG0447デフォルトの名無しさん
NGNGIndexOfの方が良くないか?
0448デフォルトの名無しさん
NGNG超遅レスだが、InnoSetupで、BDEを配布する方法(和訳)
http://www.geocities.jp/mystral_kk/iskb13.htm
0449デフォルトの名無しさん
NGNG*.*で検索後から必要な物を抜き出す方法を試してみました。
うまくいきました。ありがとうございます。
でもTFileListBoxをこっそり使った方が手間が省ける事が解かって
ちょっと気が抜けちゃいました
ま、若いうちの苦労は買ってでもs…と言うことで
0450デフォルトの名無しさん
NGNGTListViewのOwnerDataとOwnerDrawをtrueにして、仮想リストビューとして使っているのですが、
MemCheckユニットで確認したところ、終了時にメモリリークするようになってしまいました。
穴が開くほど確認しましたが、自作クラスなどの解放はやっています。
また、OwnerDataをfalseにすると、メモリリークは起こりませんでした。
MemCheckによって生成されたログを見ると、リークはTListItem.Createで作られた
インスタンスだと思われます。
OwnerDataを使うのは初めてなのですが、もしかして、何か自前で解放しなくては
いけないのでしょうか? また、そうだとしたら、具体的に何を解放すればよいのでしょうか。
一応、フォームのOnDestroyに、リストアイテムを解放させるコードも書いて試してみましたが、
思った通りアクセス違反の例外が発生しました。
0451デフォルトの名無しさん
NGNGProだとアップデート当てれば直ったはず。Perはどうだかわからん。
0452デフォルトの名無しさん
NGNGttp://buglist.jrsoftware.org/generated/entry0575.htm
0453450
NGNGご返答ありがとうございました。
情報の後だしになってしまったようで申し訳ないのですが、
Delphi6ですが、既にUpdate2パッチは当ててあります…。
また、>>452のバグは、TSubItem周辺のものだと思われますが、
仮想リストビューでSubItemは全く弄っておりません。
0454ミ,,゚Д゚ミノ ◆A6VzDeLphI
NGNGファイルパスが
UNCかC:\形式か、それともファイルパスとしてふさわしくないか
を調べる関数など、JEDIとかMonaや自作ルーチンで
あったら教えてくださいませ。
場当たり的な実装ではなくて(場当たり的なのは自作できるし)
比較的汎用的なものがほしいです。
あと、ファイルパスが何階層目なのかを調べる関数なども
あったら教えてくださいませ。
.NETあたりにはあるのかな?
0455デフォルトの名無しさん
NGNG0456デフォルトの名無しさん
NGNG音声と映像の同期がとれなかったり、再生が遅延したりしてしまう・・・。
TMediaPlayer使ってるんですが、なんかいい解決法ないですか?(´・ω・`)
FormCreate内でopenしてplayしようとすると、映像が展開される前に
音声だけ流れ始めたりして、再生がしっちゃかめっちゃかになります。
もちろんHDDからだと問題ないけれど、CDに焼くと途端に崩壊・・・。
TWindowsMediaPlayer使うと上手くいくんですが、ユーザの環境
(プレーヤのバージョンとか)に思い切り依存するのでボツりました。
0458デフォルトの名無しさん
NGNG某所で「ぎこちないTMediaPlayerのムービー再生」というタイトルで質問してた人ですか?
0459デフォルトの名無しさん
NGNG0460ミ,,゚Д゚ミノ ◆A6VzDeLphI
NGNGRTLupdate関係なのかな?
うちでは仮想ListViewでMemCheckしても発生してないですね。
再現する小さいプログラムコードを
ソース置き場
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/lounge/index.html
などに掲載するとええかも。
0461デフォルトの名無しさん
NGNGない。作れ。すぐできるぞ。
\\で始まるか、アルファベット:かで区別すればよい。これ以外は相対パスかな。
不正な文字が含まれているかどうかチェックをつけるかは任意で。
0462450
NGNGにあげてみました。実行にはMemCheckユニットが必要です。
ボタンを押すと仮想ListViewのアイテムを増やします。
その後、フォームを閉じるとメモリリークが検知されます。
私の環境では、1回ボタンを押してフォームを閉じると
150回のメモリリークが起きます。
(追加したアイテムのキャプションを変更するとさらに増える)
私の環境が悪いのでしょうか…
0463450
NGNG0464デフォルトの名無しさん
NGNGそんなことをしたときの挙動がおかしいのかもしれないね。
ほんとはInvalidOperationだかの例外を投げるべきなのかもしれないけど。
0465464
NGNGとりあえず解決するにはItemsではなく独自のコンテナにデータを保持して
OnData,OnDataFindでデータをセットすればリークは消えるはず。
0466デフォルトの名無しさん
NGNG仮想リストビューコントロールに格納される情報は,選択およびフォーカス情報だけです。
だから、自分で開放しなけりゃリークするのは当然だと思うけど。
0467450
NGNGご返答ありがとうございます。
どうも私の使い方が間違っているようですね…。
独自のコンテナを使うのは問題無いのですが、
リストビューにOwnerDrawで表示する場合、どんな風にイベントが起こるのでしょうか。
(例えば、リストアイテムの数などは、どのイベントで設定するのでしょうか。)
何分、OwnerDataを使うのが初めてなので、ノウハウが良くわからないです…。すいません。
TListView OwnerData などで検索してみましたが、
ヒットするサムネイル表示のサンプルでは、OwnerData:=Trueの状態で
Items.Add をしていますね。やはりこれも間違っているのでしょうか。
正しいサンプルが見つかりません… orz
0468450
NGNG設定できるのですね… orz
なんとかなりそうです。ありがとうございました。
0469デフォルトの名無しさん
NGNG使ってプログラムを実行しようとすると
Graphics.pasがないです
といわれてしまうのですが、
どうすればいいのでしょう。
このファイルはどこでダウンロードできるのでしょうか。
0470デフォルトの名無しさん
NGNG使いたいコンポーネントの名前。
おそらくは、バージョンの不一致。
0471デフォルトの名無しさん
NGNGuses節に「Graphics」を追加すると、どう?
0472469
NGNGDelphiのバージョンは6です。
使いたいコンポーネントはデフォルトでついている
OpenPictureDialog
Image
Buttonです。
ダイアログを出して、画像ファイル(jpg)を選択すると
上記メッセージがでます。
>>471
自動的に追加されてました。
0473デフォルトの名無しさん
NGNGで、コンパイル時ではなく、アプリ実行時のエラーなのですね?
それは、単にデバッガがソースコード表示をしようとしていて、
Personal 版だからソースがない。といってきているだけかと。
無視してください。
ただ、デバッガが開いたということは何かバグがあったということですから、
虫取りしましょう。
0474デフォルトの名無しさん
NGNGuses に jpeg を追加してみると変化があるかも。
0476デフォルトの名無しさん
NGNG0477デフォルトの名無しさん
NGNGこれが原因ではないかな。
ttp://hogehoge2001.at.infoseek.co.jp/note-delphi.html
>☆TListView☆(2002-02-03追加)
0478450
NGNGわざわざありがとうございます。
すいません、一応解決済みです。
OwnerData := True の状態で Items.Add をしていたのが原因のようです。
本来ならば、Items.Count を増やすところでした。
で、またまた質問です。というか、バグっぽいのですが、
TListView の OwnerData := True MultiSelect := True にして、
Shift や Ctrl を使った複数選択をすると、SelCount に 0 が代入されます。
本来ならば選択された数が入るはずなのですが…
また、普通にマウスによる範囲選択を行うと、ちゃんとSelCountに反映されます。
選択数が必要なので、取得したいのですが、ShiftやCtrlによる複数選択が使えないのは
辛いです。何か代替案等ありましたらよろしくお願いします。
0479450
NGNGCtrlによる複数選択は SelCount に反映されるようです。
正しくは Shift で複数選択を行った時、でした。
0480デフォルトの名無しさん
NGNGああ、subitemの話じゃないのか。それなら477は関係なかった。
0481デフォルトの名無しさん
NGNG使えない機能もあるんでAPIに頼らないとダメなんだな。
0482デフォルトの名無しさん
NGNG0483450
NGNGそれで、>>481さんの言う通り、LVM_GETNEXTITEM で直接数えてみましたが、
やはりShift選択に限っては 0 になりました。
恐らく、仮想リストビューでShift選択しても反映されないのは、
Windowsの仕様(もしくはバグ)みたいなので、APIスレに行って参ります。
0484デフォルトの名無しさん
NGNG0485450
NGNGもちろん自分のプログラムの間違いの可能性もあったので、
一応簡単なテストプログラムも作りましたが、結果は同じでした。
もし何だったら試してみてください。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/lounge/file/1017673221_9/MultiSelectTest.zip
このプログラムを実行して、アイテムをShift+クリックなどで複数選択すると、
SelCount は 0 となりました。
0486469
NGNG配列に入れて買えそうと思いましたが、
function() : Integerとか
function() : Arrayとか
やってもうまくいきません。
0487デフォルトの名無しさん
NGNG関数内で結果をその引数に代入すれば戻せる。
0488469
NGNGことなんでしょうか???
クラスにした方がいいような気がしてきました。
0489デフォルトの名無しさん
NGNGprocedure 一度に二つの整数を返す関数 (var x, y : integer);
begin
x := 1;
y ;= 2;
end;
0490デフォルトの名無しさん
NGNGtype
二つの整数を保持する型 = record
x, y : integer;
end;
function 二つの整数を保持する型を返す関数 : 二つの整数を保持する型;
begin
result.x := 1;
result.y := 2;
end;
0491デフォルトの名無しさん
NGNG基礎力付けとかないとこの先大変だぞ
0492デフォルトの名無しさん
NGNGいったん全体が解除されて、OnSelectItemが発生する。
このとき引数であるItemはnil(=全体)で、SelectedはFalse(=選択解除)。
>>485のソースだと、このときSelCountを表示してるので、0が表示される。
で、その後はOnSelectItemではなく、OnDataStateChangeが発生する。
ここでは選択範囲をインデックスで知ることができ、
SelCountにはちゃんと選択数が入っている。
つまりSelCountが0と表示されたのはバグでも何でもない。
全体解除されるタイミングがあり、そのタイミングで表示しただけのこと。
0493デフォルトの名無しさん
NGNG0494469
NGNG戻り値を因数にするってのが
なんかいやだ〜〜
単なるこだわり
0495469
NGNG○引数
0496デフォルトの名無しさん
NGNG○ひきすう
0497デフォルトの名無しさん
NGNG0498デフォルトの名無しさん
NGNGうそだ
0499デフォルトの名無しさん
NGNG0500デフォルトの名無しさん
NGNGAPIスレに投げた質問取り消しておけよ。
0501デフォルトの名無しさん
NGNGマジで最近は「いんすう」でも間違いではないらしい。
こだわるのは考えが古いのだろうか
0502デフォルトの名無しさん
NGNG年寄りほど「いんすう」と呼ぶらしいから、そいつらこそ「いんすう」にこだわってるんじゃないか。
0503450
NGNGうは、なるほど。OnSelectItemで取得していたのが悪かったのですね… orz
OnDataStateChange で拾う事に致します。
詳しいご説明ありがとうございました。
>>493
既出でしたか…。申し訳ありません。検索したつもりでしたが、漏らしていたようです。
>>500
かしこまりました。
皆様お手数をかけてしまい、申し訳ありませんでした。
お陰様で、OwnerData の使い方が大分理解できました。
有難うございました。
0504デフォルトの名無しさん
NGNG0505デフォルトの名無しさん
NGNG0507デフォルトの名無しさん
NGNGメンバーにクラスを持たせることができる仕様なんでしょうか・・・?
0508デフォルトの名無しさん
NGNG質問が曖昧なのでもう少し具体的に。
クラスのインスタンスを持たせたいのか
メタクラス(クラス参照)を持たせたいのか
クラス内でクラスを定義したいのか。
上の二つなら可能。一番下はDel8なら可能。
0509デフォルトの名無しさん
NGNGc:\Documents and settings\ユーザ名\
の下にしたいんですが、ユーザ名のところには何て書けばいいですか?
0510デフォルトの名無しさん
NGNG0511デフォルトの名無しさん
NGNGhttp://homepage1.nifty.com/MADIA/delphi/Win32API/ShFolder.htm
アプリのデータは
C:\Documents and Settings\ユーザ名\Application Data\アプリ名
かMy Documents\アプリ名
に作っとけ
0512デフォルトの名無しさん
NGNG回避する方法ってありますか?
0513デフォルトの名無しさん
NGNGありがとうございました。
UML敵にどう書くのかなw
0514デフォルトの名無しさん
NGNGどれがどれだかわからなくなってくるのですが
うまくまとめているページありませんでしょうか。
0515デフォルトの名無しさん
NGNGs := 'たぶん閉じ忘れ;
0516デフォルトの名無しさん
NGNGいやクエリとか書いてて、マジで256以上なるんですよ。
んで、一つの句ごとに改行しているので、
なんかあまり美しくなくて。
0517デフォルトの名無しさん
NGNG・プロジェクト(P)-オプション(O...)で出てくる設定ウィンドウの コンパイラ タブにある
「長い文字列を使う」にチェックを入れる。
・string[255]、ShortStringなどを使わず、普通にstringを使う。
・PCharを使う。
データベースの制限についてはわかりません。
0518デフォルトの名無しさん
NGNG[エラー] XXXX.pas(2455): for ループ制御変数 'i' に代入しました
と表示されるのですが、DelphiだとFor文のループ制御変数に値を代入する
事はどうやっても出来ないのでしょうか(ノД`)
VBだと普通にi=5とか出来たのですが・・・。
0519デフォルトの名無しさん
NGNGできません。
while文かrepeat文を使いましょう。
0520デフォルトの名無しさん
NGNG出来ないのでしかー。
わかりますた。アリガトン
0521デフォルトの名無しさん
NGNGlonglong = '1......' +
'................' +
'................';
一行 1024 文字、ひとつの文字列リテラルが 255 の制限があるだけで
文字列定数そのものの制限は... 8192 文字までは試した覚えあり。
0522デフォルトの名無しさん
NGNGTQuery.Add('ほにゃらら');
とかで分割して入れたらOK!!
0523デフォルトの名無しさん
NGNG''の間はどうしても255文字までなんですね
ということは、そんなふうに分けないといけないのでつね。
なんか、あまり美しくないようなきもしますが・・・
さしあたりありがとうございました。
0524デフォルトの名無しさん
NGNG定数式の結合はコンパイル時に行われるので、ソース上で最長 255文字ごとに
改行が必要になるだけ。生成コードは最初からひとつの文字列になっています。
0525デフォルトの名無しさん
NGNG例えば、Inc関数なんかは
Inc(i);
でも
Inc(i,10);
でも使えますよね。こんなのを作りたいんです。
とりあえず、今はoverloadで全引数有りと一部引数抜きの2つを作ってごまかしているんですが
overloadを使わないで作る方法を教えてください。
0526デフォルトの名無しさん
NGNGbegin
inc(i,delta);
end;
myinc(i);
myinc(i,10);
0528デフォルトの名無しさん
NGNGStretchBlt関数を使っているのですが
品質がいまいちです。
もっとよい品質で拡大・縮小をする方法はありませんでしょうか?
0529528
NGNGPHPみたいなスクリプト言語でさえ綺麗なサムネイルが
作成できる時代に・・・・。
ちなみにDelphi6 Personalです。
0530528
NGNGリサンプリングのコードを書いて
実装させる必要があるみたいですね・・・。
ひえー。
0531デフォルトの名無しさん
NGNGJEDIに定義ファイルがあったはず。
0532デフォルトの名無しさん
NGNG0533デフォルトの名無しさん
NGNG逝ってよし。
0534デフォルトの名無しさん
NGNG0535デフォルトの名無しさん
NGNGttp://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デフォルトの名無しさん
NGNG0538デフォルトの名無しさん
NGNGif CheckListBox1.count>0 then CheckListBox1.Items[0] := 'テスト0'
0539デフォルトの名無しさん
NGNGそれ違う。Button2を押す前にButton1はもちろん押してるぞ。
0540デフォルトの名無しさん
NGNGInsertObject(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デフォルトの名無しさん
NGNG0543デフォルトの名無しさん
NGNGでも、モーダルダイアログと違っていつ閉じられるか
イベントがないのでどうしたらいいものかと
0544デフォルトの名無しさん
NGNG別解。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デフォルトの名無しさん
NGNGif menuhoge = nil then
showmessage('メニューは表示されてないよ')
else
showmessage('メニューは表示されてるよ');
0546デフォルトの名無しさん
NGNG>>64
0547デフォルトの名無しさん
NGNG0548ななしへたぐらま ◆XcB18Bks.Y
NGNGこれでしょうか.
ttp://www.asahi-net.or.jp/~HA3T-NKMR/DGS/
フリーのライブラリがいろいろ揃うのはDelphiの良いところですね.
0549543
NGNG0550デフォルトの名無しさん
NGNGエラーが出てしまいます。
/で検索をかけても/はコメントと日付のセパレートとしてしか
使われていません。
F8の乱打ではとても追いつけないほどループを繰り返しているので、
F8も使えないのですが、0による除算のエラーがでる直前のところで
処理を止める方法はないでしょうか?
あるいはどこで0による除算のエラーが出たか知る方法はありませんか?
よろしくお願いします。
0551デフォルトの名無しさん
NGNGすこしづつ絞っていくことぐらいはできるのでは?
なお、 div も割り算です。
0552デフォルトの名無しさん
NGNG使わないほうがいいという書き込みを見たような気がします。
C/SではIBTableを使わないほうがいいんでしょうか?
予想レコードは10万件、同時接続クライアントは10件くらいです。
代替えにIBQueryかIBDataSetを使おうと思ったのですが、使い方が分かりません。
IBTableだとDataSourceと一つずつあればとりあえず動きますが、IBQueryとかだと
DataSourceと排他ですよね。ヘルプ見ても分からないので質問しますが、
DBコンポーネントと連携したいのですがどういった構成で使うものなんでしょう?
0553デフォルトの名無しさん
NGNGメインウィンドウのポップアップなら拾えるんでは。
その他のコントロールなら、それ自身で拾うか、>>64 とかフックとか
0554デフォルトの名無しさん
NGNG結局IBTableもクエリー流してるだけじゃないの、
といってみるテスト。
0555デフォルトの名無しさん
NGNGメモリ関係のエラーが発生した場合、無関係なエラーメッセージが出る場合がある。
配列操作やクラスの生成解放などで、怪しい所はないですか?
0556デフォルトの名無しさん
NGNG0557デフォルトの名無しさん
NGNGTListBox の Columns を設定すると、スクロールバーが水平方向しか出ないのですが
垂直方向にスクロールするようにはどうしたらよいでしょうか。
Style には lbVirtualOwnerDraw を指定して、仮想リスト+オーナードローで使ってます。
0558デフォルトの名無しさん
NGNG0559デフォルトの名無しさん
NGNG0560デフォルトの名無しさん
NGNG0561559
NGNG0562デフォルトの名無しさん
NGNGGoogle;
end
0563559
NGNG0564デフォルトの名無しさん
NGNG0565デフォルトの名無しさん
NGNGフィルターをたとえばjpgにしていたら、
ファイル名に拡張子を指定していない場合でも
自動的に.jpgという拡張子をつけて
保存するようにしたいと
考えているのですが、どのようにしたらいいのでしょうか?
0566565
NGNG0567デフォルトの名無しさん
NGNGDefaultExt
0568デフォルトの名無しさん
NGNG0570565
NGNGif FilterIndex =1 then
DefaultExt := bmp
FileName := Filename +'.'+ DefaultExt
みたいな面倒なことしなきゃだめなんでしょうか??
もっとスマートな方法ってありますか?
0571デフォルトの名無しさん
NGNGFileNameに何が返ってくるのか試してみたのか?
それじゃD6インストールしてませんって言ってるようなもんだぞ?
0572565
NGNGてことは、やっぱりこの面倒な方法しかないんですね・・・・・
0573デフォルトの名無しさん
NGNGbmp、jpeg以外の画像をクリックすると
デバッグでエラーがでてしまいます。
このエラーを回避するにはどうしたらいいのでしょうか?
(エラーを出さずに、単に「なし」と表示させたい)
0574デフォルトの名無しさん
NGNG0575デフォルトの名無しさん
NGNGbmpをクリップボードにコピーして、
他のソフトから読めるようにする方法を
説したサイトなんてないですか?
0576デフォルトの名無しさん
NGNG0577デフォルトの名無しさん
NGNGuses
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デフォルトの名無しさん
NGNGFormのサイズをautosizeにしていたときは大丈夫だったのですが、
画像を開くと同時にその画像の高さ・幅をformの高さ、幅に
指定するように書き直したところ、
画像を開いた瞬間にWindowsXPのVisualStyleが
適用されないウィンドウに変化してしまうようになりました。
これはどうしたらいいのでしょうか?
0579578
NGNG0580578
NGNGVisual Styleが無効になっているみたいです。
何か参考となる情報
0581デフォルトの名無しさん
NGNG0582578
NGNGユーザーが故意にウィンドウサイズを変更して
スクロールバーがでるような
状態になったときにやはり
VisualStyleが適用されないウィンドウに
なってしまいます。
これはDelphi6の仕様上どうしようもない
現象なのでしょうか。
0583デフォルトの名無しさん
NGNG0584デフォルトの名無しさん
NGNG0585578
NGNGただいまダウンロード中・・
0586578
NGNGVS適用されました!!
0587575
NGNGありがとうございます。
やっぱりその方法ですか。
以前、その通りにやって、クリップボードにコピーされたはずのbmpが
他のグラフィックソフトで貼り付けできない(というか、「貼り付け」メニュー
項目がアクティブにならない)ことがあったので。。。
もう一度やっています。
0588デフォルトの名無しさん
NGNG画像が表示されていないときは
メニューのコピーや切り取りをつenable := falseにして
画像が表示されていたらtrueにしたいとおもってます。
「開く」メニューや「閉じる」ボタンにいちいち
その処理を書いていくのは面倒なので
ユーザーが何かの操作をしたときに毎回
Imageがからかどうかを確かめてそれによってメニューが
使えるかどうかを設定したいと思っています。
そこでユーザーが何かの操作をしたときに毎回
呼び出されるようなプロージャってあるのでしょうか?
0589デフォルトの名無しさん
NGNG0590デフォルトの名無しさん
NGNG「開く」や「閉じる」の中でその手続きを呼び出す。
これすら面倒というのならつける薬はないだろ。
0591デフォルトの名無しさん
NGNGメニューの項目の Enabled を決定するのは、それがぶら下がっている項目の
OnClick イベントで表示される直前に。
それ以外の方法では面倒
0592デフォルトの名無しさん
NGNG編集を加えなきゃだめですか。
了解しました。
0593デフォルトの名無しさん
NGNG0594デフォルトの名無しさん
NGNGいちいちって・・・普通だけど
0595デフォルトの名無しさん
NGNG試してみます。
>>594
同じ動作をいろいろなところに分散させて記述するのは
仕様を変更したり機能を拡張したりするときの
バグの元になります。
0596デフォルトの名無しさん
NGNG0598557
NGNG>>558,597
えと、申し訳ありません。どうも自分の使い方にはTListViewの方が
あっているようなのです。
ただ、TListViewでは大きなアイコン表示でオーナードローする際に、
アイコンとアイコンの間隔がWindowsの設定のものになってしまうので、
それをアプリケーション側から(Windowsの設定を弄ることなく)決めたいと思っています。
これは、可能でしょうか。もし可能ならば、具体的にはどのようにすれば良いでしょうか?
また、ImageListを設定せずに、1項目のサイズを設定する方法はあるのでしょうか?
0599デフォルトの名無しさん
NGNG0600デフォルトの名無しさん
NGNGどうすればいいのでしょうか?配列を渡す事はできたのですが(↓の例)、
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どうやって選択しているタブを取得するのでしょうか?
0602デフォルトの名無しさん
NGNGDelphi相談室(上級者用)その12
http://pc5.2ch.net/test/read.cgi/tech/1064766880/560
0603デフォルトの名無しさん
NGNG0604デフォルトの名無しさん
NGNGaaa[0]に6バイト分読み込む
0605デフォルトの名無しさん
NGNG提示されているコードに 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デフォルトの名無しさん
NGNG0607603
NGNGどうしたら良いんでしょうか?
0608デフォルトの名無しさん
NGNGすみません、おおざっぱに抜粋し過ぎました。
605さんのその方法はよくわかります。
しかし、ストリームのデータサイズが不定のため、その方法は
やりたくないんです。
うまいことキャストとかしてStream.Memory(要はPointer型)を
引数であるarray of Charに渡したいんです。
0609デフォルトの名無しさん
NGNG>やりたくないんです。
意味不明。不定だからこそ
type
TArrayOfSixChar = array of Char;
にしておいて SetLength() するべき。ポインタはメモリ上の一点の位置を指してる
だけ。array of char のようなものをわたしたいんなら、内容をコピーしないと。
0610デフォルトの名無しさん
NGNGあ、あ、あなた様はもしや・・・
いや間違いない。絶対そうだ。
あっちでお願いします。
意味不明ですみませんでした。
type
TArrayOfSixChar = array of Char;
これでやると
渡される方もこうしないとダメですよね。
array of Charのままじゃ無理ですもんね。
・・・渡される方が変更できないんです・・・
0611デフォルトの名無しさん
NGNG0612デフォルトの名無しさん
NGNG自分、array of Charの引数渡しを質問出したけど、609は別人だよ。
0613ななしへたぐらま ◆XcB18Bks.Y
NGNGやってみた.(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キボンヌ
0615デフォルトの名無しさん
NGNG0616デフォルトの名無しさん
NGNG穂積一平さんのサイトにあるようですが、見つかりません。
0617デフォルトの名無しさん
NGNG0618デフォルトの名無しさん
NGNGプログラミングをはじめたのが上記のとおりの真性初心者なんですけど
(ifとforをやっと理解できた程度の雑魚です。。。)
BUTTONを押したら他のアプリケーションが複数機動できるようにしたいのですが、
どういうコマンドがありますか??
本当にへぼい質問ですいません。ご教授のほどよろしくお願いします。
0619デフォルトの名無しさん
NGNG0621デフォルトの名無しさん
NGNGhttp://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どうしたらよいのでしょうか?
メモ帳の拡張版みたいなのを作りたいと思ってます。
0624デフォルトの名無しさん
NGNGDelphi6がわからないです。。。orz
秀和システムの「基礎からわかるDelphi6」を買ったんですけど
いまいちで。。。
ギコナビ・プロジェクトははるか先です(涙)
初心者にナイスな本を教えてください。
お願いします。
0625デフォルトの名無しさん
NGNG0626624
NGNGコードの書き方というか、とっかりになるような本ありませんか。
0627616
NGNG0628デフォルトの名無しさん
NGNG開発者ガイド端から読んどけ
0629デフォルトの名無しさん
NGNGVBで作ったものを移植してみる。
0630デフォルトの名無しさん
NGNG塚越本(はじめてのDelphi,Delphiオブジェクト指向プログラミング)がおすすめ。
はじめて…は絶版だったかな?
コンソールアプリを多用していて一見とっつきにくそうだが
余計なものがない分すごく分かりやすい。そして…
Delphiに慣れてくるとVB6に対して今までと違う感情を抱くようになるw
0631デフォルトの名無しさん
NGNG0632ななしへたぐらま ◆XcB18Bks.Y
NGNG『コードの書き方』というのが漠然としていて何を指すのかがはっきりしませんが,
言語仕様をお知りになりたいのでしたらオンラインヘルプの
『Object Pascal言語ガイド』をご覧ください.
できればどこまでできてどこでつまずいているかを具体的に書いていただければ
より適切なアドバイスのレスが返ってくるのではないかと思います.
0633デフォルトの名無しさん
NGNGま、仕方ねーんじゃないのか。
良本は時を経ても良本で、糞本は永遠に糞本。
日本語うまくて、なにからなにまでわかってて、しったかせずに全部教えてくれる人は少ない、
っつーか国内じゃ塚越+2人しかいねーと思う。
0634デフォルトの名無しさん
NGNGdelphiがもっと楽しくなるぜ。
怪しいと思うなら、紀伊国屋書店で検索な。
0635デフォルトの名無しさん
NGNG上達した後でも辞書がわりに使えたりして便利。
初心者向きの薄めの本はわかりやすいし、たくさんの機能を紹介してるけど
広く浅くしか紹介してないから
ちょっと突っ込んだことやろうとするといきなり情報がなくなる。
それに、分厚い本といっても1ページ目から全部読む必要はない
自分が面白そうだと思ったところだけ読めばいい
今は興味がなくてわけがわからないところも
レベルが上がってくれば意味がわかるようになるし
個人的には分厚い本がお勧め。
0636635
NGNGあれも辞書代わりに使える。
クラス設計のところが非常細かくて、ちょうどクラスに興味のあったころだったから
自作クラス作る際のいい教科書になった。
薄い本で使えないと思ったのは、「Delphiの奇跡」とか「Windows98ではじめるDelphiプログラミング」とか・・
0637デフォルトの名無しさん
NGNGこれってどう?
0638デフォルトの名無しさん
NGNGhttp://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ご参考までに
0641デフォルトの名無しさん
NGNGあ、そこ見るの忘れてたー。やっぱAmazonの評価見て買った方がいいんですかね。
>>639
さいですか、ありがとうございます。
とりあえず、そこのページを見て学習してみようかな。
>>640
なんか信用しがたいレビューですな(汗
0642デフォルトの名無しさん
NGNGWYSSIGなHTMLエディタ
を作ろうと思っているのですが
どうしたらいいのか
途方に暮れています。
何かヒントになる情報をください。
0643デフォルトの名無しさん
NGNGありせんか?
Delphi6Personalで
0644デフォルトの名無しさん
NGNGたとえば
abではじまってssで終わる文字列を置換したいときは
ab*ssと指定するとか。
このようなことができる別の関数があれば教えて頂きたいです。
0645デフォルトの名無しさん
NGNGDelphiつかえねーーー
0646デフォルトの名無しさん
NGNGSetLength(ary_str, 3);
ary_str[1] := '111111';
ary_str[2] := '222222';
ary_str[3] := '333333';
であるとして、SetLength(ary_str, 0);をしたとき
'111111'や'222222'の使っていたメモリってちゃんと解放されるのでしょうか?
いや、普通に考えると解放されるはずで解放されないとすげー困るんですけど、
ヘルプのどこを探しても解放されると書いてなくて気になってるんです
0647デフォルトの名無しさん
NGNG0648デフォルトの名無しさん
NGNGかどうか気にしないだろ。それと同じ。
0649デフォルトの名無しさん
NGNG>StringReplace関数でワイルドカードを指定することはできないのでしょうか?
できませんね。
>abではじまってssで終わる文字列を置換したいときはab*ssと指定するとか。
「abではじまってssで終わる文字列」を検索する関数をつくる
んで
その結果を使って置換する。
これは簡単。
0650デフォルトの名無しさん
NGNG標準の関数や他人のつくった関数だけをつかって問題を解決しようとすると、Delphi
に限らずすぐ行き詰まります。自分の頭をつかって関数をつくる事から始めるといろ
いろ出来るようになります。Delphi は文字列の扱いが得意とは言えないけど、それ
なりにやりたいことはできると思うんですけど。
0651デフォルトの名無しさん
NGNG相手するな。したければこちらへ誘導の上存分にやってくれ。
ミ,,゚Д゚彡フサギコのフサフサDelphi談話室その15
http://pc5.2ch.net/test/read.cgi/tech/1095399719/
0652デフォルトの名無しさん
NGNG>Delphi は文字列の扱いが得意とは言えない
冗談も休み休み言え
0653デフォルトの名無しさん
NGNG休み
0654645
NGNGDelphiの関数ってどこかにまとめられていたりしませんか?
0656デフォルトの名無しさん
NGNGヘルプに機能別の索引があるはずだけど
0657デフォルトの名無しさん
NGNGものなので、Delphiより文字列操作は楽だよね。
0658デフォルトの名無しさん
NGNG冗談はどうした、冗談は。
0659デフォルトの名無しさん
NGNG0660デフォルトの名無しさん
NGNG0661デフォルトの名無しさん
NGNGもしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが、
お礼はDelphiの布教と初心者の救済をお願いします。
0662デフォルトの名無しさん
NGNG0663デフォルトの名無しさん
NGNG0664デフォルトの名無しさん
NGNGDelphi覚えたけど何の役にもたたんね
http://pc5.2ch.net/test/read.cgi/tech/1095115109/
0665デフォルトの名無しさん
NGNGみたいなコンパイラ信者はどうにかならんかね
0666デフォルトの名無しさん
NGNGいってる意味が分からんけど超初心者スレだから許す
0667デフォルトの名無しさん
NGNG0668デフォルトの名無しさん
NGNGそれぞれの長所、短所を見極めずに
やれスクリプトは糞だのインタプリタは糞だのと喚く
コンパイラ型とインタプリタ型というので言語比較してる時点でアレだな
0669デフォルトの名無しさん
NGNG0670645
NGNG> 「abではじまってssで終わる文字列」を検索する関数をつくる
この関数を作りたいのですがどの関数を使えばいいんでしょうか?
ヘルプで正規表現で検索したり
googleでDelphi 正規表現で検索したりしていますが
それらしい物がでてきません。
もし、こういった関数やコンポーネントが列記されているリファレンス
があれば教えてほしいです。
ちなみに今は
・カンタン!Delphiプログラミング
・はじめてのObjectPacalプログラミング
という本を参考にしながら勉強していますが
両方の本ともイマイチです。
0671デフォルトの名無しさん
NGNGヘルプの
文字列処理ルーチン
文字列処理ルーチン(ヌルで終わる)
が参考になります。
自分がつくるとしたら AnsiStrPos() を使うでしょうね。
0672デフォルトの名無しさん
NGNGTRegExprでぐぐってみな。
0673671
NGNGTSearchData = 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;
0674671
NGNGprocedure 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デフォルトの名無しさん
NGNG0676デフォルトの名無しさん
NGNGURLを開くんじゃなくて
文字列を引数として与えると
それをレンダリングしてくれるような
関数ってないのでしょうか?
HTMLエディタにプレビュー機能をつけたいと思っています。
0677デフォルトの名無しさん
NGNG0678デフォルトの名無しさん
NGNGVB畑の方ですか?
0679デフォルトの名無しさん
NGNG0680デフォルトの名無しさん
NGNG誰もいってないけどね。
何か嫌なトラウマでもあんのだろうか。
0681デフォルトの名無しさん
NGNG0682デフォルトの名無しさん
NGNG0683デフォルトの名無しさん
NGNG0684デフォルトの名無しさん
NGNGそういう場合たいていのソフトは一旦HTMLファイルに書き出して
そのファイルをIEコンポで開いてるよ
0685デフォルトの名無しさん
NGNG0686デフォルトの名無しさん
NGNG実装できるなら何でもいいよ
0687デフォルトの名無しさん
NGNGおまえは相変わらず無意味なことばっかり言ってるな
0688デフォルトの名無しさん
NGNG0689デフォルトの名無しさん
NGNG0690デフォルトの名無しさん
NGNG0691676
NGNGスレが無駄に荒れると他の人にも迷惑なので。
0692デフォルトの名無しさん
NGNG0693デフォルトの名無しさん
NGNG0694デフォルトの名無しさん
NGNG0695デフォルトの名無しさん
NGNGどこかにおちていませんかね。
自分で作成しようと思ったのですが
センスのなさに愕然としてしまいましたよ・・・。
Janeみたいなカコイイアイコンほしい・・・。
0696デフォルトの名無しさん
NGNGそれはスレ違いかな
0697695
NGNGDelphi関係ないですもんね・・・
よかったらスレ誘導してください・・・・
0698デフォルトの名無しさん
NGNG0699デフォルトの名無しさん
NGNGMonazilla の資料室あたりにあった気がする
0700デフォルトの名無しさん
NGNGありました
ありがとうございました
0701デフォルトの名無しさん
NGNG(カテゴリとノードで変えたい)
のですがどのようにしたらいいのでしょうか。
0702デフォルトの名無しさん
NGNG責任取れよお目ーら
0703デフォルトの名無しさん
NGNGデルフィアン?
デルファイラー?
デルフィラー?
デルファイニャン?
デルフィニャン?
0704デフォルトの名無しさん
NGNG0705デフォルトの名無しさん
NGNG0706デフォルトの名無しさん
NGNGVBについで
0707デフォルトの名無しさん
NGNG0708デフォルトの名無しさん
NGNG0709デフォルトの名無しさん
NGNG0710デフォルトの名無しさん
NGNGvar
h: Thoge;
begin
h := Thoge.Create;
h.Assign(Self);
Result := h;
end;
というようなコードを見かけたのですが、
はじめから Result に Thoge.Create せずに
ローカル変数をはさんだほうがよいのですか?
0711デフォルトの名無しさん
NGNG0712デフォルトの名無しさん
NGNG0713デフォルトの名無しさん
NGNG単に試行錯誤した過程が残ってるだけだったり。
0714デフォルトの名無しさん
NGNGEnter押しても改行しなかったり改行しなかったり改行しなかったり・・・。
0715デフォルトの名無しさん
NGNG0716デフォルトの名無しさん
NGNG何がしたくてどういう状況でEnterを押したのかぐらい書いてもらわないと
それだけでは何にもわからない
まさしく独り言だ。
0717デフォルトの名無しさん
NGNGヘルプ見ながらがんばればそこそこプログラムできる様になれるでしょうか?
0718デフォルトの名無しさん
NGNGオンラインの入門サイトがいくつかあるからそこら辺眺めとくといいよ
0719デフォルトの名無しさん
NGNGおお、、オンラインかぁ。2ちゃんでは勉強できないかな。なんかギコナビ気にいっちゃって、使いたくてしょうが無かったり・・。
0720デフォルトの名無しさん
NGNG(2ちゃんねらーすべてがアホという意味ではない)
0721デフォルトの名無しさん
NGNG見てるとおっかしぃ事、いっぱい書いてあるね。まぁ仲良くやろ〜や。
んで、さっそくこんなサイト、見つけたので報告。
http://www.geocities.co.jp/SiliconValley-SanJose/2560/delphi4/index.htm
ちょっと古いのかもしれないけれど、ここを参考に1からやってみまっす。
0722デフォルトの名無しさん
NGNGtry〜exceptブロックをはさんだほうがよい。
0723デフォルトの名無しさん
NGNG0724デフォルトの名無しさん
NGNG当該クラスのインスタンスに割り当てられるべきだったメモリは自動的に開放されますか?
0725デフォルトの名無しさん
NGNGどうして?
>>724
意味が解らないからコード例だして。
0726デフォルトの名無しさん
NGNGインスタンスのメモリが割り当てられてから、コンストラクタが呼ばれます。
コンストラクタの実行中に例外が生成された場合,デストラクタが自動的に
呼び出されてインスタンス・メモリが解放されます。
0727デフォルトの名無しさん
NGNGURLやファイル名のデータを関連づけて
保存したいのですが
どうしたらいいのでしょうか
0728デフォルトの名無しさん
NGNGみたいにINIファイルに書き出したら
0729デフォルトの名無しさん
NGNG0730デフォルトの名無しさん
NGNG0731デフォルトの名無しさん
NGNGTStringList にURLを保持して、Node の Data のそのインデックスをキャスト
0732デフォルトの名無しさん
NGNGTreeViewのメソッドにそんな機能の物が
あるだろうとおもっていたのですが・・。
自分で実装するしかないようですね。
ありがとうございました。
ちょっとPHPになれすぎてしまったようです。
0733デフォルトの名無しさん
NGNGオブジェクトの永続化も満足にできないんだよ。
0734デフォルトの名無しさん
NGNGそう。index ゼロはダミーにしてつかわないように。保存・読み込みは
http://www.lmc-mediaagentur.de/dpool/tips/0703.htm
を参考にして Stream の LoadFromFile SaveToFile を使う。一番内側のループ
で Data プロパティーをキャストして WriteInteger ReadInteger してください
URL をほじした TStringList を別に保存するのがいやなら、インデックスではなく
文字列そのものを WriteString しておき、読み出し時に ReadString で読み出して
改めて関連付けしてもいい
0735デフォルトの名無しさん
NGNGTreeView は Windows のコモンコントロール、Delphi はラップしてるだけ。
Windows のオブジェクト指向度が低いから、とはいえるかも
0736デフォルトの名無しさん
NGNGそんなエサで(ry
0738デフォルトの名無しさん
NGNG(バックグラウンドで実行されるような感じにしたい)
初めてDelphi触ってるんで混乱中 orz
0739デフォルトの名無しさん
NGNG0740デフォルトの名無しさん
NGNG0741デフォルトの名無しさん
NGNGMessageBeep(MB_ICONASTERISK);
0742デフォルトの名無しさん
NGNGEditボックスを透明にすることはできないでしょうか?
borderを消すことはできたんですが。
Styleがないので、bsClearとかは使えないですよね
0743デフォルトの名無しさん
NGNG0744デフォルトの名無しさん
NGNGTLabelでいうTransparentみたいなプロパティが、TEditにないかと思って
でもプロパティにないってことはないということなんでしょうかね
0745デフォルトの名無しさん
NGNG0746デフォルトの名無しさん
NGNGコンソールモードを OFF にしてコンパイル。
Win32 のコンソールモードは、アプリ起動時にコンソールが開くかどうかの違いしかない。
writeln などのコンソールとの読み書きを行わないアプリならコンソールモードでなくても
問題ない。
逆に、デバッグの時とかで VCL アプリをコンソールモードでビルドする場合もある。
0747デフォルトの名無しさん
NGNGありがとう!鳴りました。
0748デフォルトの名無しさん
NGNGProからで無いと無理な様な事を見た気がしたのですが、簡単な物でも作れればと思って。
0749デフォルトの名無しさん
NGNG例えばMSDE2000をインストールしてADOのタイプライブラリ取り込みして使うとか。
0750デフォルトの名無しさん
NGNG0751デフォルトの名無しさん
NGNGttp://hp.vector.co.jp/authors/VA036663/dbmsbyd6p.htm
0752デフォルトの名無しさん
NGNGDBCheckBoxを使いたいのです。
0753デフォルトの名無しさん
NGNG値を判定してDBCheckBoxに相当する表示を工夫する。
0754デフォルトの名無しさん
NGNG0755デフォルトの名無しさん
NGNGないんでしょうか?
オブジェクトを永続化しようとして躓いています。
0756デフォルトの名無しさん
NGNG0757デフォルトの名無しさん
NGNG0758デフォルトの名無しさん
NGNGあり得ない。でも、ここに限らずWEB上では日常茶飯事なのよね。まっ、回答する
ほうも勝手にしているわけだけど。
0759デフォルトの名無しさん
NGNGオブジェクトの永続化って、具体的にどういう意味?
SaveToFile LoadFromFile とかと関係ある?
0760デフォルトの名無しさん
NGNG関係あります。
メモリ上のオブジェクトをHDD上に書き出して
次も使えるようにすることです。
結局TStringList.AddObjectとして
TStringListとTTreeViewを両方
永続化し、行で対応づけることで解決しました。
0761デフォルトの名無しさん
NGNGSendTextでメッセージを表示させられるところまではできたのですが、別の指示の出し方が分かりません。
もう接続できていて、なおかつSendTextでメッセージを送れている場合、もうサーバ側は弄らなくても良いのでしょうか?
0762デフォルトの名無しさん
NGNGExcelのように固定行または列でドラッグすると連続して列や行を選択できるようにするには
どのようにしたらよいのでしょうか?
0763デフォルトの名無しさん
NGNG0764デフォルトの名無しさん
NGNGpublic
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デフォルトの名無しさん
NGNGprocedure 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デフォルトの名無しさん
NGNGif 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;
0768デフォルトの名無しさん
NGNGDataSource 上で代替フィールドを作ればすむ話ではないか?
0770デフォルトの名無しさん
NGNGヘルプでTDBCheckBoxのValueChecked,ValueUncheckedの説明を見てみよう。
0771デフォルトの名無しさん
NGNG見てみたんですが、何がなんだかちんぷんかんぷんでした。
いちばん上のADOって奴をちょっと試しにやってみたんですケド、
応用するにはかなりの勉強が必要ですね。
Proでなら簡単に出来そうな気がするんですが、気のせいでしょうか?
でもあまりに高価過ぎて手が出せそうにありませんケドね。。
どっちにせよ、もうちょっとじっくりやる時間が出来たら、先のページで
いろいろ実験してみます。また不明な事が出て来たら、あまりにも初歩的な事なのかもしれませんケド、
教えてやって下さい。
0772デフォルトの名無しさん
NGNGTDBRadioGroupもだったか忘れたがうざい時あるな。
QueryをOpenした時値が入ってたらOnClickが反応したりとか最悪。
0773デフォルトの名無しさん
NGNGhttp://www.teppi.com/Components/DBISAM/
こんなページを見つけたのですが、コレもぱーそなるぢゃ無理な事なんですよね?
0774デフォルトの名無しさん
NGNGhttp://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それ有料
0776デフォルトの名無しさん
NGNG7のパーソナルなど最初からない。6のはまだ配布中。
0778デフォルトの名無しさん
NGNGGLDPNGは開発終了したみたいだし・・・
Jpegみたいに簡単に扱えない?
0779デフォルトの名無しさん
NGNG使ってみます
0780デフォルトの名無しさん
NGNG0781デフォルトの名無しさん
NGNG返事が遅くなってすみません。
期待する動作にかなり近い動作をいたしました。
これを叩き台にしていろいろいじくってみようと思います。ありがとうございました。
0782デフォルトの名無しさん
NGNGいつの間にか「TkPNG」って言うシェアウェアへ
移行してたんだねぇ…。
0783デフォルトの名無しさん
NGNG0785デフォルトの名無しさん
NGNGダイアログボックス(「タイトル」=Edit1,「本文」=Edit2)を表示させるにはどのように記述すれば良いでしょうか。
Client側、Server側それぞれお願いします。
0786デフォルトの名無しさん
NGNG何かよい方法ありますか?
0787デフォルトの名無しさん
NGNG0788デフォルトの名無しさん
NGNGプロジェクトごとに、コンポーネントを切り替えたいという事なら
プロジェクトごとに、batファイルでレジストリを切り替えれば良い。
0789デフォルトの名無しさん
NGNG0790デフォルトの名無しさん
NGNGインストールが必要では?
0791786
NGNGレジストリの切り替え・・・
よさそうですね。
しかし、レジストリのどのあたりをbatで切り替えるのでしょうか?
0792デフォルトの名無しさん
NGNGたぶん
HKEY_CURRENT_USER/Software/Borland/Delphi/<Version.0>/Known Packages
0793792
NGNGHKEY_CURRENT_USER/Software/Borland/Delphi/<Version.0>/Palette
0794786
NGNG実行できる環境で、是非やってみようと思います。
ありがとうございました。
0795デフォルトの名無しさん
NGNGDelphiのdemosフォルダを見なさい
\demos\internet\chat
0796デフォルトの名無しさん
NGNG何通りか、そして全ての文字列を出力するというプログラムを
作っているのですが、どうやってもうまくいきません。
考え方としては、全ての通りを出し、そこから重複を削除するという形で
よいのでしょうか?
0797デフォルトの名無しさん
NGNG煽りでもなんでもないが、意味が分からない。
0798デフォルトの名無しさん
NGNG0801デフォルトの名無しさん
NGNGの方が簡単だと思うよ。
forループを3つ重ねればよい。
0802デフォルトの名無しさん
NGNG重複チェックは直前のものとの比較のみでいい。
0803デフォルトの名無しさん
NGNGちょっとそれは私、確信が持てませんが、本当に大丈夫ですか?
0804デフォルトの名無しさん
NGNG0805デフォルトの名無しさん
NGNGXXY、XYX、YXX(X=[A..C]、Y=[A..F]-X)の3*3*6の組み合わせしかない。
0806デフォルトの名無しさん
NGNGTScrollBoxで、スクロールをしている最中にイベントを起こせませんか?
0807806
NGNGOnConstrainedResizeで拾えました。
0808デフォルトの名無しさん
NGNG0809デフォルトの名無しさん
NGNG0810デフォルトの名無しさん
NGNG0811Delフサギコ ◆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デフォルトの名無しさん
NGNGimplementation節
usesの項に
form1を加えれば良い。
例:
implementation
uses Unit1;//(Form1のユニットファイル名)
0814デフォルトの名無しさん
NGNGUnit1のinterfaceにて宣言された変数
Form1: TForm1 を、Form2のimplementationの
USES宣言以下で使用可能になり、
Form1.Edit1.Text := 'Hello';
という命令もコンパイルされる事になる。
0815デフォルトの名無しさん
NGNG適当だと思っていた
Form1.Edit1.Text := 'Hello'; 自体はあってたんですね。
素早い回答ありがとうございます。
0816デフォルトの名無しさん
NGNGhttp://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∫,,,,,,,,,∧,,∧
⊂,,,,,,,,,つ,,゚Д゚ミつ
つまり、SelStartを保持しておいて、擬似的にクリックして
桁/行情報を取得してから、元のSelStartに戻すとか?
力技。。。
0818デフォルトの名無しさん
NGNG0819デフォルトの名無しさん
NGNGTStringListで読み込んで、posで判定するってこと?
0820818
NGNGそうしようと思っているのですがTStringListで読み込んだ文字列を
Pos関数に渡しても0しか返ってきません。
slFile:=TStringList.Create;
slFile.LoadFromFile(FileName);
if Pos(slFile.Text,Text)<>0 then
Result:=True
else
Result:=False;
0821デフォルトの名無しさん
NGNGTMemoだとやはりTEditと違って行単位でしか扱えないんでしょうか。
何行目の何文字目まで指定できると有難いんですが、
やっぱり
Memo1.Lines[1]
Linesとぐらいだから無理ですかね。
代用策でもかまわないんですが何かあれば教えてもらえるとありがたいです。
0822デフォルトの名無しさん
NGNG1回普通の文字列型に移してそれを経由してやればいいんですかね
そんなにたいしたことじゃなさそうだ
0823デフォルトの名無しさん
NGNG>if Pos(slFile.Text,Text)<>0 then
オレもたま〜にやるけど、逆でない?
→if Pos(Text,slFile.Text)<>0 then
0824818
NGNGヌ・・・初歩的なミス・・・。
解決いたしました。
どうもありがとうございました。
0825デフォルトの名無しさん
NGNG810でも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>>821
1回くらい検索しようよ。
0827デフォルトの名無しさん
NGNG0828Delフサギコ ◆A6VzDeLphI
NGNG⊂,,,,,,,,,つ,,゚Д゚ミつ それだ!
http://www.borland.co.jp/tips/delphi/dh013/index.html
0829デフォルトの名無しさん
NGNG何の話?
0830デフォルトの名無しさん
NGNGcygwinのホームディレクトリの設定ってどうやるんでしょうか?
0831デフォルトの名無しさん
NGNGおおお!出来た。
どうもありがとう御座います。
0832デフォルトの名無しさん
NGNG>>819
0833デフォルトの名無しさん
NGNGDOS窓が一瞬で閉じてしまうんですが、
DOS窓を表示したままには出来ないのでしょうか。
ちなみにWinExec使用です。
0834デフォルトの名無しさん
NGNGcommand hoge.exe
0835デフォルトの名無しさん
NGNG0836デフォルトの名無しさん
NGNG0837833
NGNG835さんの方法でできました。
普通にDOS窓開いた時と違って、PATHが通ってないんですね。
0838デフォルトの名無しさん
NGNGuses節にコンポーネントのユニットが追加されますよね。
で、それと同時に別に追加したいユニットがあるのですが、それも自動で追加させるにはどうすればいいのでしょうか?
例えば、IndyのTIdHttpコンポーネントを乗せるとIdHttp以外のユニットも自動的に
usesされますが、そんな感じのことをしたいのです。
0839デフォルトの名無しさん
NGNG0840デフォルトの名無しさん
NGNGコンポーネントのパッケージに登録されているユニットが
勝手に追加されているだけでは?
0841デフォルトの名無しさん
NGNG0842デフォルトの名無しさん
NGNG自分で考えたやり方が正しい。
0843デフォルトの名無しさん
NGNGもしかして、イベントハンドラで使われる引数の型を定義しているユニットも
自動的に追加されるのかもしれないね。
0844デフォルトの名無しさん
NGNGそのアプリの、今フォーカスのあるコントロールの
ハンドルを取得するにはどうしたらよいでしょう。
0845デフォルトの名無しさん
NGNG0846デフォルトの名無しさん
NGNGhttp://www2.big.or.jp/~osamu/Delphi/delphi-browse.cgi?index=030830
0847デフォルトの名無しさん
NGNGそれ以外の利点は特にない。
0848デフォルトの名無しさん
NGNG別のオブジェクトとして認識してほしいのですが、
うまくいきません。
例えば、AとBを同一のクラスに属するオブジェクトとすると、
...
B:=A;
A.FMem:=2*A.FMem//フィールドの値の更新
...
としたとすると、AとBを別のオブジェクトと
認識してほしいのに、同一のオブジェクト(A=B)
と認識されてしまいます。
何か付け加える必要があるのでしょうか?
0849デフォルトの名無しさん
NGNGB.FMem を確認してごらん。同じになってるから。
B:=A;
は、参照を代入してるから、A と B は同一の実体を参照してるんだよ
0850デフォルトの名無しさん
NGNG全部オブジェクトへの参照でしか存在できない。
オブジェク変数に別のオブジェクト変数を代入すれば
参照しているオブジェクトを付け替えることになる、
B:=AをやればAとBが指し示すオブジェクトは同じの物となる。
もし、Bのフィールド内容をAにコピーしたいのならAssignメソッドを使わなければならない。
B.Assign(A)
でAの内容がBにコピーされる。
0851デフォルトの名無しさん
NGNG上の記事を読むと、FreeAndNil の方が危ないと思うのですけど、どうですか・
NewsGroupでもいっぱい話題になってるけど、どれを読めば悩みが解決するのか
解りません。
0852デフォルトの名無しさん
NGNGAのフィールド内容をBにコピーしたいのなら
だね。
Assign メソッドが必ずあるとは限らない。自分で実装する必要がある場合がある。
また、内容同士を比較するメソッドも必要になるかもしれないね。
0853デフォルトの名無しさん
NGNGFreeAndNil は、すでにDelphiにあるのを使うこと。危ないことはない。
君の「悩み」については、だれも知らない。具体的に。
0854デフォルトの名無しさん
NGNGTPersistent.Assign のヘルプを読むことをすすめる
0855デフォルトの名無しさん
NGNG使わない方が良いのではないか?
と言うものです。
ローカル変数であれば
Obj.Free;
だけでいいし、
それで不十分なら、
Obj := nil;
を加えれば良いのではないですか?
FreeAndNil を使う理由は何なのでしょう?
0856デフォルトの名無しさん
NGNG初期化していない変数を渡しても警告が出ない事と、
オブジェクト変数以外を渡してもコンパイルエラーが出ない事です。
0857デフォルトの名無しさん
NGNGインスタンス参照にnilを代入しておくと、それが有効な参照かどうかを確認する
ことが出来るようになります。ローカル変数を最後に解放するのでしたら、Free
で十分でしょう。
0858デフォルトの名無しさん
NGNGそれは解ります。
FreeAndNil を考えた人は下記の例を問題視しているみたいですけど、
もうちょっと考えてみます。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1017673221&res=11&fi=no
destructor内で例外が発生したときの為に、あらかじめ nil を代入しておくのかな?
でも、destructor内で例外が発生したら駄目ですよね。
0859デフォルトの名無しさん
NGNGDelphi 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.
0860858
NGNGどうして nil を代入してから Free するのか、が今の悩みです。
procedure FreeAndNil(var Obj);
var
P: TObject;
begin
P := TObject(Obj);
TObject(Obj) := nil;
P.Free;
end;
0861デフォルトの名無しさん
NGNGTIdHTTP は、TObject → TPersistent → TComponent → TIdBaseComponent
→ TIdComponent → TIdTCPConnection → TIdTCPClient → TIdCustomHTTP の
順に派生されているので、上位クラスが宣言されているユニットが順番に
追加される。
これと同じように UnitA のコンポーネントを貼り付けたときに UnitB も
追加されるようにしたければ UnitB で宣言したクラスを上位に持つように
すればいい。
ただし、共通部分を持つクラスをほかに作らない場合は、一つにまとめた方が
サイズ的にも速度的にも有利になる。
>>860
グローバル変数を複数のスレッドからアクセスした場合とかに、処理の順序が
重なりあうという偶然が生じた場合に、複数回 Destroy しないためじゃないの?
複数の変数にコピーしてれば意味なさそうだけど。
0862デフォルトの名無しさん
NGNGマルチスレッドの場合はEnterCriticalSectionを使わないと駄目では?
同時にFreeAndNilが呼ばれた場合、同時に一時変数へ保存して、同時に同じオブジェクトをFreeする事になりますよ。
NG読むと、Free後にnilを代入しても手遅れと言う意見がありました。
つまり、デストラクタ内では既にオブジェクトは無効という考えらしい。
本当か?
0863デフォルトの名無しさん
NGNGFree したオブジェクト参照にnilを代入することの必要性が理解できていれば
一瞬でも、Free したオブジェクトの参照がnilになっていないのは、危険である
ことが分かると思います。ですから、Free する前に nil を代入しておくわけです。
シングルスレッドでは、
Obj.Free
Obj := nil;
の二行のコードの実行時間差があったとしても、同じプロセスのコードで Obj に
アクセスする機会がないように感じるかも知れません。でも、Free から呼び出される
メソッド、とくにデストラクタから、何かメッセージを処理したり、他の手続きを
呼び出したりしているとき、この Obj にアクセスすることになるかも知れません。
ですから先にnilを代入しておけば、Free 呼び出した時点で、この Obj へのアクセス
は無効である、とコードで判断できます。マルチスレッドでは、上のコードで nil が
代入される前に、プリエンプションが起こってサブスレッドに制御が移り、Obj に
アクセスする機会が生まれます。クリティカルセクションを必ず使うという制約より
FreeAndNil を使うことにした方が制約は少ないと思います。
「手遅れ」っていうのはこういう意味です。
0864デフォルトの名無しさん
NGNG同時に呼ばれることはありません。参照の代入は単純なマシンコードなので<途中>で別スレッドにうつること
はないと思います。ですから、あとに呼ばれた方は、すでにnilになっているのでなにもしません。
マルチプロセッサの場合は知りませんが。その場合でも Free してから nil を代入するより
安全だとは思いますけど。
0865デフォルトの名無しさん
NGNGマルチスレッドについては詳しくないので、もし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上は単に既存コントロールにプロパティを追加して Getメソッで値を読み取る時に1/10とか1/100すればいい
2番目は、理論的には作れない。
少数点以下を100000倍して10で割りながら余りがゼロでないというようなことを考えているのだろうが
少数点以下有効桁数は3であっても 1.200 である場合というのがありえるから
0867デフォルトの名無しさん
NGNG表示はGUIの大事な部分。ユーザが1.33に設定したいとき133を入力させるのはGUIとして失格。
0868デフォルトの名無しさん
NGNG"金額(100円単位)"は微妙に混乱するかもしれないけど。
混乱度が低いなら慣れ親しんだ標準のコントロールを
ユーザーに使わせるのは十分あり。
0869デフォルトの名無しさん
NGNG1.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デフォルトの名無しさん
NGNG0872デフォルトの名無しさん
NGNGおお
いや、勉強のためにコンポ作りしてて、悩んでますた。
これで実行時と設計時でいろいろできますねー
助かりました。ありがとう!
0873デフォルトの名無しさん
NGNG0874デフォルトの名無しさん
NGNG・全部読み込んで部分的に書き換えて全部書き込む。
・seekやposを使って書き込む位置を指定して書き込む。
0875デフォルトの名無しさん
NGNGレジストリを設定する事になるのでしょうか?
0876デフォルトの名無しさん
NGNG'gee/mm/dd' では「昭52/01/01」となりますが、
フォーマットの指定のみで「S52/01/01」みたく表示できますか?
0877デフォルトの名無しさん
NGNG0878デフォルトの名無しさん
NGNGおそらく無理。
年号の変換は結局のところWindowsAPIのGetDateFormatを利用してるみたいだけど
そもそもGetDateFormat自体が(H,S,T,M)形式の年号に対応してない。
自力で関数を作るならまぁ結構簡単に作れそうだけど・・
というか、実験してみて笑ったんだけど
年号って明治までしか用意されてないのなw
0879デフォルトの名無しさん
NGNGそうなの? Format 文字列の中に元号と関係なく平や昭や明なんかの文字があったり
する可能性があるので結構面倒だと思うけど
0880デフォルトの名無しさん
NGNG0881デフォルトの名無しさん
NGNG0882デフォルトの名無しさん
NGNGおっ、なるほど!
0883デフォルトの名無しさん
NGNGPRINTDLG構造体はDelphiではどのように記述するのでしょうか
教えてください。
PRINTDLG pd;
ZeroMemory (&pd, sizeof(PRINTDLG));
0884デフォルトの名無しさん
NGNGTPrintDlg
0885デフォルトの名無しさん
NGNGTPrintDlgという型で定義されている。
0886デフォルトの名無しさん
NGNG0887デフォルトの名無しさん
NGNG0888デフォルトの名無しさん
NGNGあんた、背中がすすけてるぜ
0889883
NGNGありがとうございます。
しかしこんな簡単なことに丸2日使ったのか・・・
0890デフォルトの名無しさん
NGNG1.FilterOptionの設定の仕方がよくわからないです。
2.Filterを使って前後方一致比較ってできないんですか?
前方一致は*でいけるみたいなんですが、後方ができないようで。
何か方法があれば教えて頂けると助かります。
0891デフォルトの名無しさん
NGNGソースをお持ちであれば、Grep するといいです。personal ユーザでも Doc ディレクトリ
にある *.int ファイルを今回であれば PRINTDLG で大文字小文字を区別しないで Grep する
と TPrintDlg レコードの定義がすぐに見つかります。
0892デフォルトの名無しさん
NGNGTestDB
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質問とは全く関係ないが
if (〜) then
Result := True
else
Result := False;
の部分は
Result := (〜);
にするとコードがすっきりする。
0894デフォルトの名無しさん
NGNGprocedure 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指定すると、勝手にコマンドプロンプトが立ち上がってくれるもんだが。
0896デフォルトの名無しさん
NGNG0897デフォルトの名無しさん
NGNG0898デフォルトの名無しさん
NGNG以前のDelphiにはIsNumericがなかったと思うのですが、
7のhelpにはIsNumericが載っています。
しかし使い方が全くわからないのです。
教えていただけませんでしょうか。
0899デフォルトの名無しさん
NGNGprocedure form1.btnCheckClick(Sender: TObject);
begin
//入力チェック
if チェック then
エラーなら以下の処理は行わずprocedureを抜ける
//処理
・・・
end;
としたいのですが、途中でprocedureを抜ける方法がわかりません。
どうすればいいのでしょうか。
チェック項目が増えると見苦しいので、elseによるネストはしたくないのです。
よろしくお願いいたします。
0900デフォルトの名無しさん
NGNG0901899
NGNGExit
でいけるんですね。。。
お騒がせいたしますた。
0902デフォルトの名無しさん
NGNGそれとは別の日本語のサイトに、
これを入れると既存のコンポーネントが上書きされる
と書いてあったのですが、他にUnicodeを使えるようにする方法はありませんか?
0903デフォルトの名無しさん
NGNG上書きなど初耳だが。
そのサイト晒してみてくれ。
0904902
NGNG↓です。
http://hp.vector.co.jp/authors/VA004777/report/unicode.html
ごめんなさい。よく読んだら、自分で書き換えたと書いてありましたorz
でも、逆に言えばTntのコンポーネントは使用に書き換えが必要なんでしょうか?
0905デフォルトの名無しさん
NGNG0906デフォルトの名無しさん
NGNGdiv ebx って書くとエラーが出ます。
div eax,ebx だとエラー出ないが、これは文法的に間違ってないですかね?
あとdiv edx っていうのは間違いですか?
0908デフォルトの名無しさん
NGNGその場合、編集が終われば削除してもいいのでしょうか?
また、これらが自動的に削除されるような方法はないのでしょうか?
0909デフォルトの名無しさん
NGNG0910デフォルトの名無しさん
NGNGで、そのバックアップを生かしたい時は手で拡張子直すのでしょうか?
ざっとメニューみてみましたがそれらしいツールはありませんでした。
0911デフォルトの名無しさん
NGNGもう5年以上使ってるけど、一度だけ手で直したことがある。ほかのやり方は知りません。
0912デフォルトの名無しさん
NGNG「書くとエラー」って言うから、コンパイルエラーかと思った。
オーバーフローだろ?
divは上位edx、下位eaxの64bitの数を指定のレジスタで割るから。
edxにゴミでも入ってるんだろ。
当然div edxもオーバーフローする。常に商がeaxに収まらないから。
0913デフォルトの名無しさん
NGNG作らせないようにする設定なら、エディタオプションの「表示」の所にある。
0914デフォルトの名無しさん
NGNGADOQueryのActiveをTrueにしているので、表示した瞬間にDBの内容が表示されます。
ここでDBの内容を再取得して再表示したいのですがやり方がさっぱりわかりません。
どなたかご教授いただけませんでしょうか。
0915914
NGNGこれで正しいのかどうかわかりませんが、
ADOQuery.Active := False;
ADOQuery.Active := True;
DBGrid.Refresh;
とすることで表示更新できました。
お騒がせしました。
また、これが間違っていたらツッコミよろですm(__)m
0916デフォルトの名無しさん
NGNG作っておいた方が精神衛生上いいかも。
消したくなったら、
DEL *.^??
みたいなバッチ作っておけば一発で消せるし。
[環境設定]の[自動保存]もチェック付けといた方がいいね。構成管理ツール導入して版管理できれば尚いい。
0917916
NGNGDEL *.~??
0918デフォルトの名無しさん
NGNGまともなソース管理ツール使っとけ。
0919デフォルトの名無しさん
NGNG0920デフォルトの名無しさん
NGNG万が一に備えているわけだから。
0921デフォルトの名無しさん
NGNG0922デフォルトの名無しさん
NGNGSQL := 'INSERT INTO test2tb ([date],[time]) VALUES("' + DateToStr(Now) + '","' + TimeToStr(Now) + '")';
でやってみそ
0923デフォルトの名無しさん
NGNG先ほどの>>914-915です。
>>915の方法では追加更新削除の処理をした後、
なぜか再取得できるときとできないときがあります。
もうなにがなにやら。。。
アドバイスいただければうれしいです。
よろしくお願いいたします。
0924デフォルトの名無しさん
NGNGオレも詳しい原理は知らないが
DataSource.DataSet.Close;
DataSource.DataSet.Open;
で表示の更新ができる。
同じ対象をさしているはずなのに
なぜQueryでなくDataSource.DataSetの方じゃないといけないか
自分でもよくわからないんだけどな。
0925デフォルトの名無しさん
NGNG0926デフォルトの名無しさん
NGNGレスありがとうございます。
しかし、それでも再取得できたりできなかったり。。。
もしや時間的に再取得できないのかと思い、
DB更新処理後に「更新しました」とダイアログ出して時間とってみたのですが、
それでも一緒です。
フォーム上にボタンを作って、
ADOQuery.Active := False;
ADOQuery.Active := True;
DBGrid.Refresh;
としてみると100%再取得できます。
うーむ。。。
0927デフォルトの名無しさん
NGNGBorderStyle
0928デフォルトの名無しさん
NGNGありっす。
最小化が使えなくなるのですね。。。
工夫してみます。
0929デフォルトの名無しさん
NGNG0930デフォルトの名無しさん
NGNGDialog以外なら最小化できるだろ
0931デフォルトの名無しさん
NGNGtestin.bmpをロードして(Image1)、画像の一部を切り出して
切り出した部分(Image2)をtestout.bmpとして保存したいのですが
実行すると止まってしまいます。
ヘルプを参照しても不明です。
bmpの扱い方を解説してるページなどありますか?
(検索しましたが、見つけられませんでした)
0932デフォルトの名無しさん
NGNGinterface
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デフォルトの名無しさん
NGNGvar
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.
0934931
NGNGhttp://homepage1.nifty.com/cosmic/delphi/tips_graphic.html
よく判りません・・・・助けてぇ
0935デフォルトの名無しさん
NGNG1ヶ月もかけなかったコード
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デフォルトの名無しさん
NGNG0937デフォルトの名無しさん
NGNGDeleteObject(Rgn);
Image1.Free;
Image2.Free;
end;
end.
後始末も。
0939デフォルトの名無しさん
NGNGprocedure 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デフォルトの名無しさん
NGNGhttp://www.google.co.jp/search?hl=ja&q=TBitmap&lr=lang_ja
↑
これじゃ足りないってこと?
0942デフォルトの名無しさん
NGNG0943デフォルトの名無しさん
NGNG× Image2.Picture.SaveToFile('testout.BMP');
○ Image2.SaveToFile('testout.BMP');
0944デフォルトの名無しさん
NGNG0945デフォルトの名無しさん
NGNG0946デフォルトの名無しさん
NGNGA: array[0..2, 1..3] of Integer;
で、
High(?) = 2 を求めるには?にどう書けば良いのでしょう?
High(A[0]) = 3 ですし。
0947デフォルトの名無しさん
NGNG0948946
NGNGついでに
A: array[0..1, 2..3, 4..5] of Integer;
で、4, 5を求める場合は
Low(A[0, 2])
High(A[0, 2])
でした。
0949デフォルトの名無しさん
NGNG0950デフォルトの名無しさん
NGNGとか無いんでしょうか。
マイクロソフトのエンジンを使うとして、
メモに貼り付けた日本語を読んでくれるだけでいいんですが・・。
どなたか分るかた居ないでしょうか
0951デフォルトの名無しさん
NGNGIBMからSDK付で出てたような。
0952デフォルトの名無しさん
NGNGPageControlのコンポを作っていて、設計時に固定のTabSheetを動的に生成しています。
その処理はCreateWndメソッドをオーバーライドして、
if csDesigning in ComponentState thenの中で記述しています。
これでポトペタ時にはTabSheetもちゃんと表示され、実行時には作成されずちゃんと動作
するのですが、いったんフレームに貼り付けて設計し、そのフレームをフォームに貼り付けよう
とすると、「コンポーネント名TabSheetはすでに使われています」のようなメッセージがでて、
うまく動作しません・・・。
こんな場合にはどうすればいいんでしょう・・・・。どなたか教えてください!
0953950
NGNGレスどうも。いえ日本語もできます。他の言語も。それを使った
読み上げのフリーソフトとか結構ありますし。
ただそれを自分のソフトに組み込むのはどうすればよいのやら・・。
0954931
NGNG回答くださった方々、ありがとうございました
もう1つお願いします・・・・
BM(Tbitmap)の座標(100,100)にある点の色が何色か知るにはどうしたら良いのですか?
とりあえず黒かどうか判定するに
Canvas.Draw(0, 0, BM);
if Canvas.Pixels[300, 300] = clBlack then hantei := 0
という文を書いたのですが・・
黒ならhanteiの値を0にしてその後の処理を分岐しようかと
でもうまく行きません。何がまずいのでしょう?
Drawとかしなくても直接BMのある点の色を知る方法とか無いですか?
ヘルプを見てるのですが、「色を知る」 という情報が検索できません
「色を知る」が検索かけてそっくりそのまま出るとは思いませんが
0955デフォルトの名無しさん
NGNG1.TBitmapにもCanvasプロパティがある
2.100, 100 が知りたいのに何でPixels[300, 300]?
0956931&955
NGNGhttp://homepage1.nifty.com/MADIA/delphi/Win32API/getcolorcount.htm
一行文の色値を読み込んでから、その中から目的の座標の色を探すみたいですが
直に目的の座標の色を知る方法てないんでしょうか?
>>955
すみません、座標打ち間違いです。
0957デフォルトの名無しさん
NGNGhanteiをhentaiと読み間違えたよ。それだけだけど。
0958デフォルトの名無しさん
NGNG0959デフォルトの名無しさん
NGNGデータが0の時は'XP'、1の時は'Me'と表示するようなことをしたいのですが、
どうすればいいのでしょうか?
それと>>914で質問しました、DBGridのデータ再取得でいまだに悩んでおります。
DBGridでデータ一覧を表示>別画面に移ってデータ改変>またDBGridに戻る
といったような画面ハンドリングの場合、みなさんはどうやってDBGridのデータを再取得しているのでしょうか?
DBの種類や接続方法によって違うのでしょうが、参考に教えていただければうれしいです。
0960デフォルトの名無しさん
NGNG何故かローカルじゃないと接続できません。
どういった間違いがあるとこういう事が起こるのでしょうか?
例えば自分のプライベートIPを入れて接続しようとしても接続できません。
0961デフォルトの名無しさん
NGNG0962デフォルトの名無しさん
NGNGネットワークアプリ作ろうってのかい?
0963デフォルトの名無しさん
NGNGMSのエンジン使いたいみたいだけど、
日本語にも対応するようになったんだな。
自分は以前、テレフォニー関係のツールで
合成エンジンが必要になって、MSのも
調べたが、当時は日本語ができなくて
結局、OKIのSmarttalkを使った。
OKIのはActiveXだから、Delでも簡単に実装できた。
0964デフォルトの名無しさん
NGNGすいません本当にアホみたいな間違いしてました。できました。
お騒がせしました^__^;
0965デフォルトの名無しさん
NGNGみくろなおっぱい 洗濯かごの中
いっぱいオッパイの残り香イエエエエエ!
ダンシングしながらはいてみたよ!イエエエエエ
おっぱいみたいな肉まん当てたら疑似餌なおっぱい
アンダー60 トップ80 (笑い)
そんなミクロのオッパイ光恵kてやる是イエエエエエ
0966デフォルトの名無しさん
NGNG削除したりするソースを公開しているホームページを
知りませんか?
プログラムだけでもいいんですけど。
0967デフォルトの名無しさん
NGNG0968デフォルトの名無しさん
NGNGTRegIniFileかTRegistryで検索しろ
0969デフォルトの名無しさん
NGNG>表示するデータ
対応するテーブルを作るしかないんじゃないの?
>データ再取得
トランザクション再接続じゃダメ?
0970デフォルトの名無しさん
NGNGDBGridの表示内容改変はできないのですね。了解しました。
トランザクション再接続とは具体的にはどうすればいいのでしょうか。
再取得方法として、以下の方法で再接続してみたのですが、
ADOQuery.Active := False;
ADOQuery.Active := True;
DBGrid.Refresh;
でも
DataSource.DataSet.Close;
DataSource.DataSet.Open;
DBGrid.Refresh;
でもだめなのです。
だめというか、同じ処理を2〜4回やると再取得できているというのが現状です。
なぜ一回ではダメで複数回で反応するのかがまったくの謎なのです。。。
0971デフォルトの名無しさん
NGNG0972デフォルトの名無しさん
NGNGttp://pc5.2ch.net/test/read.cgi/tech/1097454588/
0973デフォルトの名無しさん
NGNGある程度、物になったら払ってもいいかなとは思ってますけど・・・
0974デフォルトの名無しさん
NGNGなぜここで聞く・・・・
0975デフォルトの名無しさん
NGNG0976ななしへたぐらま ◆XcB18Bks.Y
NGNG超初心者向けスレッドでそういうボケをかますと本気にされそうですね.
念のために書いておくと>>974氏の意図は
「TEditorのおひさるページで調べるなり,作者に直接問い合わせるなりすればよいのに
なぜわざわざここで尋ねるのか?」
ということだと思われます.
0977デフォルトの名無しさん
NGNG日本語でも英語でもかまいません。よろしくお願いします。
0978デフォルトの名無しさん
NGNGここで聞くより、検索した方が早いと思うが。
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わざわざ、ありがとうございました。信じられないことに検索をすることをど忘れしていました。
0980デフォルトの名無しさん
NGNGゴメン、ADO使ってないのにレスしてしまった。
参考までにIBの場合で書くと、
DataSetをPostしてもトランザクションをコミットしないと実際にはDBに
書込まれないので、他のクライアントからは更新されてないように見える。
任意にサーバーのDB更新したいならコミット処理を書く。
たぶん同じケースなんだと思うけど、ADO知らないので詳細は不明。
0981デフォルトの名無しさん
NGNG機能的にはSQLのサブセットを使ってテキストファイルに入出力を行うものです.
0982デフォルトの名無しさん
NGNGWinXPでCD-ROMやリムーバブルドライブにメディアを挿入した時に
ドライブ内のファイルによって自動再生プログラムを選択する
ダイアログが表示されますが、その中に自作プログラムを入れたいのですが
どうすればよいでしょうか?
具体的には、デジカメのメモリーカードを挿した時に自動でHDDに取り込む
プログラムを作っています。
0983デフォルトの名無しさん
NGNGもしくは"autorun.inf"でぐぐれ。
0984デフォルトの名無しさん
NGNG0985デフォルトの名無しさん
NGNGオレもそう答えそうになって踏みとどまったのだよ
0986デフォルトの名無しさん
NGNG漏れならそのダイアログにあるプログラムの名前で
レジストリをサーチする。
何件か絞り込んだらなんとかなるんじゃないかな
0987デフォルトの名無しさん
NGNG図々しい。
0988デフォルトの名無しさん
NGNGレス数が950を超えています。1000を超えると書き込みができなくなります。