1 名前: ◆XcB18Bks.Y mailto:sage [2008/03/12(水) 21:09:39 ] Delphi(デルファイ)について、他のスレッドでは書き込めない超低レベル、 もしくは質問者自身何が何だか分からない質問を 勇気を持って書き込むスレッドです。 Delphi使いが優しくコメントを返しますが お礼はDelphiの布教と初心者の救済をお願いします。 <前スレ> くだすれDelphi(超初心者用)その45 pc11.2ch.net/test/read.cgi/tech/1198802907/ <過去スレ> DelWiki避難所(Delphi 関連の過去スレッド) delwiki.info/?Delphi%20%B4%D8%CF%A2%A4%CE%B2%E1%B5%EE%A5%B9%A5%EC%A5%C3%A5%C9
268 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 20:37:58 ] >>267 む〜そんなんですか。画面たくさんのアプリじゃあ、フレームなのかな。 PageContorolじゃ無理あるかも(以前に質問したモノですが) どう実装するか全然ピンと来ないですが、参考となるサイトか参考書など ありましたら教えてもらえますでしょうか。
269 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 01:07:43 ] >>268 以前作った検証用のサンプルを継承に依存しないように書き直して TurboDelphi用にしたサンプルとメモ書き。 中見ればわかるけど全然大したことないよ。インターフェースは好きなように書き換えちゃって。 delwiki.info/?%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%81%BF%E3%82%8B delwikiはまたphpのに戻ったのか。
270 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 09:18:52 ] ComboBoxのドロップダウンの幅を広くするにはどうすればいいんでしょうか?
271 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 10:18:05 ] CB_SETDROPPEDWIDTH を窓ハンドルに送ってやる。 こんな感じ ComboBox1.Perform(CB_SETDROPPEDWIDTH,300,0);
272 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 10:28:22 ] >>268 普通にフォームに書いて設計しておくのではどうして駄目なの? 似たような配置で画面遷移で一部だけ変わるような場合も フォームの継承使えば簡単だし
273 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 13:00:32 ] パラレルポートからパルスを出力したいのですが どうすれば可能でしょうか。 パルス幅の設定とON、OFFスイッチを設け ONしている間だけ設定値のパルス幅で出力し続けるという 感じで行きたいのですが。。。
274 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 14:02:57 ] パラレルポートってUSBの先にあるやつじゃなくて、パソコン附属の奴だよね? 1、I/O命令を使えるようにする。 giveioとかGWIOPMとか Delwikiに書いてあったんだけど消えてる。 キャッシュは 72.14.235.104/search?q=cache:rkGsmNRbmEcJ:delwiki.info/ コンポーネント/GWIOPM(I/Oポートを直接叩く) 2、I/O命令をasmで呼び出すか、関数にして呼び出す 3、時間制御については、精度の保持はパソコンなので難しい
275 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 16:40:00 ] >>274 ありがとうございます。 時間制御ですが、ひとまずプログラム上でお約束できれば 良しとしようと思います。 マイクロ秒タイマーのコンポーネントとか使ってみよう
276 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 17:50:28 ] コレ結構簡単 つ ttp://www.seya.org/cs/driverlinx.html
277 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 11:12:43 ] TMemoベース(でなくてもいいけど)のコマンドプロンプトのコンポーネントってないですか? cmdなり任意のコマンドラインツールを対話的に実行できるものです。
278 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 11:22:20 ] コマンドプロンプトを使った方が遥かに楽な気がする
279 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 02:58:38 ] 自分のアプリに埋め込みたいんだろ
280 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 03:10:38 ] メモ帳で、Enterを押したらその行を解析して実行するのはどぉ?
281 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 03:29:39 ] 改行は?
282 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 07:57:39 ] 失礼します。 iniファイルを実行ファイルのフォルダじゃなくて、 ホームディレクトリに置きたいのですが、 どうすればよいのでしょうか。今は下のコードです。 IniFile := TIniFile.Create(extractFilePath(paramstr(0))+'test.ini'); 実行ファイルは同じだけど、iniは各個人で持ちたい。
283 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 08:37:53 ] マイドキュメントのフォルダの事なら support.microsoft.com/kb/194702/ja つまり uses shlobj ; の. SHGetSpecialFolderPath CSIDL_PERSONAL レジストリ でもアクセス出来る support.microsoft.com/kb/310746/ja でも、実行ファイルのあるフォルダにユーザー命のフォルダを掘ってアクセスする方がいいと思うよ。 ユーザー名は GetUserName/ GetUserNameEx で取れる
284 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 09:00:10 ] >>282 function GetMyIniFolderName: string; var uName: string; nSize: DWORD; begin nSize := 4000; SetLength(uName, nSize + 4); if GetUserName( PChar(uName), nSize) then begin SetLength(uName,nSize-1); end else uName := 'non'; Result := ChangeFileExt(paramstr(0) ,'' )+ '@'+uName+'.ini'; end; 実行ファイルのフォルダで "実行ファイル名@ユーザー名.ini" という感じで作る IniFile := TIniFile.Create( GetMyIniFolderName() );
285 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 09:38:50 ] GetEnvironmentVariableで環境変数取る手もあるな。 APPDATA=C:\Documents and Settings\UserName\Application Data USERPROFILE=C:\Documents and Settings\UserName >>283 のマイドキュメント/AppName/AppName.iniあたりに作るのが最も無難。 >>283 >でも、実行ファイルのあるフォルダにユーザー命のフォルダを掘ってアクセスする方がいいと思うよ。 小物フリーウェアではお手軽便利なやり方で長年使われてたけど、あまりよいやり方じゃないよ。 これが横行したのがPowerUser常用が強要されてXPのセキュリティがグダグダになった一因だし。 一長一短にしても今更推奨はできない。
286 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 09:45:08 ] とりあえず実行ファイルのフォルダに作ってみて作れなかったらマイドキュメントでいいと思うけどな
287 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 09:48:20 ] 2つのStringListを同期させるにはどうすればいいんでしょう たとえばStringListをソートした時にStringListBをAと同じように並べ替えたいのです
288 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 09:57:02 ] Textを全部コピーしたら。代入じゃなく。
289 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 09:58:28 ] 中身は違うものなんだよね? Objects の方にインデックスかポインタを無理やり入れておいたらどう?
290 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 10:08:22 ] >>288 ,289 ありがとうございます >288 2つのStringListは全く違うものなので使えなさそうです >>289 Objectsというプロパティに触ったことがないのでよく分かりません もう少し詳しくお願いできますか?
291 名前:287 mailto:sage [2008/04/10(木) 10:43:59 ] >>289 の通りにやってみたらできました! ありがとうございました
292 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 11:10:17 ] synapse の imap クライアントを使って、gmail (imap有効済) に imap で接続しようとしていますが 接続に失敗(エラー: 10091)してしまいます 設定など足りないところがありますでしょうか? uses imapsend; ------------------- with TIMAPSend.Create do try TargetHost := 'imap.gmail.com'; TargetPort := '993'; UserName := '***@gmail.com'; Password := '***'; Timeout := 5000; FullSSL := True; if Login then begin Caption := 'OK'; Logout; end else begin Caption := 'NG'; end; finally Free; end; -------------------
293 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 11:16:21 ] ComboBoxでドロップダウンした時だけ違う文字列を表示できる?
294 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 11:19:04 ] OnDropDownで combobox.items.commatext := 'a,b,c'; って話か?
295 名前:293 mailto:sage [2008/04/10(木) 11:35:11 ] >>294 ドロップダウン閉じた時にどうやって元に戻せばいい?
296 名前:292 mailto:sage [2008/04/10(木) 14:48:11 ] 自己解決しました synapse の imap クライアントは、ソースを追ってみると SSLが実装されてないような... Indy の TIdIMAP4 の IOHandler に TIdSSLIOHandlerSocketOpenSSL を入れて、 UseTLS := utUseImplicitTLS 、下記のコードで接続OKでした ------------- with IdIMAP41 do begin Host := 'imap.gmail.com'; Port := 993; ConnectTimeout := 3000; Username := '***@gmail.com'; Password := '***'; if Connect then begin Caption := 'OK'; Disconnect; end else begin Caption := 'NG'; end; end; -------------
297 名前:デフォルトの名無しさん [2008/04/10(木) 16:48:17 ] DateTimeToStrについて教えて下さい。 DateTimeToStrは、ロケールを意識して文字列にしてくれますが、 グリニッジ標準の文字を取得するにはどうすればよいのでしょう? さらに、夏時間とか絡んでくると、わけわからなくなりますが、 夏時間とかいうのもVCLのどこかに規定されているのでしょうか?
298 名前:ななしへたぐらま ◆XcB18Bks.Y mailto:sage [2008/04/10(木) 18:40:58 ] >>282 普通のアプリと同じように「ローカルアプリケーションフォルダ」に入れるのがよいのではないでしょうか。 usesにShlObjを追加して… { 現在のユーザーアカウントの「ローカルアプリケーションフォルダ」のパスを返す.} function GetLocalAppDataPath: string; var buf: array [0..MAX_PATH] of char; begin SHGetSpecialFolderPath(0, buf, CSIDL_LOCAL_APPDATA, False); Result := buf; end; { 現在のユーザーアカウント名を返す.} function GetCurrentUserName: string; var buf: array [0..MAX_PATH] of char; size: dword; begin size := MAX_PATH; GetUserName(buf, size); Result := buf; end; { 実行例 } procedure TForm1.ShowAppDataPathActionExecute(Sender: TObject); var Path: string; begin if LabeledEdit_CompanyName.Text = '' then raise Exception.Create('社名はちゃんと入れろよ!'); if LabeledEdit_AppName.Text = '' then raise Exception.Create('アプリ名もちゃんと入れろよ!'); Path := GetLocalAppDataPath + '\' + LabeledEdit_CompanyName.Text + '\' + LabeledEdit_AppName.Text; ShowMessageFmt('このパソコンの場合,ユーザー%sの設定ファイルは'#13#13'%s'#13#13'の下に保存すべきじゃ', [GetCurrentUserName, Path]); end;
299 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 18:49:07 ] ・ショートカットキーで起動 ・ショートカットを登録 このような単純な機能を持つデスクトップランチャーを、Delphiノータッチの人間が作ろうとしたらどれ位時間がかかりますか? 作成に掛かる時間…というよりも、ランチャー作成自体の難易度がどのようなものか教えていただけると幸いです C、Java、アセンブラは初歩を嗜んだ程度です
300 名前:297 mailto:sage [2008/04/10(木) 18:49:15 ] ヘルプ検索してみましたが、 Delphiってグリニッジ時間の文字列を作りだすメソッド無いんですね。
301 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 23:09:45 ] >>299 Delphiはじめて二番目に作ったのがランチャだった 確か一日一〜二時間やって一ヶ月くらいで使えるものにはなったと思う その後使い込んでいくウチにバグ取りや機能追加で現在に至る 人に配れるレベルになったのは半年目くらいか(配っとらんが) おれはCもなんも知らない状態で入門書とBBSフォーラムの情報だけだった いまはグーグル先生もいるし質問先もたくさんあるから あとはモチベーション次第なんぢゃね?
302 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 23:12:03 ] >>293 オーナードロー
303 名前:301 mailto:sage [2008/04/10(木) 23:15:33 ] >>299 C#の初心者すれでもマルチポストしたのか Delphiやってみたいってわけではなかったんだ ●rz
304 名前:282 mailto:sage [2008/04/10(木) 23:28:47 ] 遅レスすみません。 >298のコードを使わせていただきました。 いくつかアイデアをもらって心に感じるものがありました。 ありがとう。
305 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 01:13:54 ] >300 日付時刻の扱いについて。TDateTime型はローカル、DST、UTC等の配慮は含まれていない。 よってこれらの配慮を要する場合はTSystemTime構造体を使用してGetLocalTimeまたは GetSystemTime(いずれもWin32API)で取得し、これをSystemTimeToDateTimeで TDateTimeに変換して使用する必要がある。またDSTについてはWindowsの実装がナニなので (基本的に今現在のDSTの適用状況しか信用できず、たとえば数年前の特定の日付における DSTの適用状況はわからない)、自前で実装する必要がある。
306 名前:300 mailto:sage [2008/04/11(金) 09:10:00 ] thx!>>305 現在の時間だけで良いので、OKです。 つまり、グリニッジ時間を知りたければ、TDateTimeは使えなくて、Win32に頼るってことですね。
307 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 00:05:32 ] Delphiを勉強するにあたってお勧めの本を教えてください C, C++, Javaで開発をしたことがあります
308 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 00:41:29 ] >>309 もちつけ
309 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 00:54:13 ] ぺったん。ぺったん。
310 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 01:07:19 ] つるぺったん。
311 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 02:11:57 ] >>301 >>303 あ、いや、C#スレでDelphiをオススメされたんでこっち来ました ありがとうございます。半年ならちょっとやってみたいです この言語で作ってみたいと思ってます 近場の書店巡ってもCだのJavaだのHTMLだのの教本しか置いて無かったです Amazonを見てみたら評価の高い教本はあるものの、中古で異常な価格のモノばかりでした 何か初心者オススメの本は無いですか? Webで資料もみますが、とりあえず1冊は教本を持っておきたいと考えています
312 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 02:17:08 ] 今から始めるなら迷うまでもなくC#だろ・・・
313 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 02:37:53 ] >>311 マニュアルの文法書。
314 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 08:07:21 ] >>311 IDEから文法までのを一通り説明してあるやつで Turbo Delphiか2005用のを買っといたら。 Delphi 2005 プログラミングテクニック Vol.1入門編が無難な感じ。 シリーズ化されてて興味のある分野のものを買いたせるし。
315 名前:デフォルトの名無しさん [2008/04/12(土) 11:08:06 ] Turbo Delphi無料版でアプリを作りたいのですが、 ソースを難読化するツールってありますか?
316 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 11:32:27 ] しんぱいしなくても>>315 のソースはきっと読みづらい。
317 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 13:13:12 ] .NETならともかくWin32でビルドしたら 逆アセンブルしか手がないからそんなに心配することもない。
318 名前:315 mailto:sage [2008/04/12(土) 14:21:40 ] >>316 コメントでバレそうです。 >>317 DEDEなるデコンパイルソフトがあるらしいのですが、大丈夫でしょうか?
319 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 14:29:26 ] コメント・・
320 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 14:32:01 ] >>315 まずはどういう動機でどういうレベルの誰から何を守りたいのかをはっきりさせよう。
321 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 14:59:30 ] フォームに乗せなきゃソース見れないだろ
322 名前:315 mailto:sage [2008/04/12(土) 15:26:27 ] >>320 例えば姓名判断や競馬の予想のような、 条件を入力すると、ある専門知識に基づいた計算結果が返ってくるソフトを考えています。 バレたくないのは、その結果を算出する際のアルゴリズムやデータです。 すぐに解析されてしまうということは、 せっかく苦労してアルゴリズムやデータを作成しても、 簡単にコピー(改良版)が作られる可能性があるわけですから、躊躇しています。
323 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 15:45:32 ] dedeで生成したソースを読めるような奴はそうそういないと思うが、もしいたら諦めるしかない なんか特殊な方法で圧縮するとかそんな感じにしなきゃ無理な気がする まぁその前に>>315 が作るツールにそこまでしてソースを見るほどの価値があるかどうかの方が重要だが
324 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 16:00:01 ] 一応antiDeDeとかもあるけどね FindWindowでDeDeにWM_CLOSE投げるだけだけど
325 名前:315 mailto:sage [2008/04/12(土) 16:30:52 ] >>323 >dedeで生成したソースを読めるような奴はそうそういないと思うが、もしいたら諦めるしかない 実はdedeの詳細を分かっていなかったのですが、それなら安心です。 シェアウェア作家や商用アプリを作ってる方も、 特に気にしていないということですかね。 >>324 ありがとうございます。参考になります。
326 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 17:19:04 ] www.moonlight.gr.jp/~el/delphi/bedit/step2.html の真ん中のを参考にして バイナリを読み込んでみたんですけど、かなり時間が掛かってしまいます どうすれば読み込み時間を短縮できるでしょうか?
327 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 17:26:40 ] 遅いのは1byteずつ読んでいるから。 ある程度の大きさのバッファを用意して、 ReadではなくBlockReadでバッファ長のバイト数を読み込むようにする。 「BlockRead」をヘルプで引くかで、ゴーグレッドれば、サンプルが出てくる。
328 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 18:10:46 ] 生成した8個のTShapeのVisibleをFalseにしたりTrueにしたりするところで とても時間が掛かっている(1秒くらい)のですが、原因がさっぱり分かりません。 このような問題が出た方いますか。
329 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 18:20:45 ] 再現するコード晒せ
330 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 18:47:02 ] TShapeなんて使ったことないけど 他のコントロールの再描画が発生して重いイベントハンドラが呼ばれているのかも。 プロジェクトオプションのコンパイラのデバッグ版DCUにチェックして再構築して 再描画中に固まるタイミングで一時停止してみたら。
331 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 19:21:44 ] >>329 普通に新規で最低限のコードだと再現しないんです。 >>330 ありがとうございます。一時停止はタイミングが難しくてなかなか 思うようにいかないし何回もやってるうちにWindowsが固まるし… 再描画の他のコントロールのイベントは見てなかったのでチェックしてみます。
332 名前:デフォルトの名無しさん [2008/04/12(土) 20:17:28 ] DICOMをDelphiで勉強しようと思ってopen sourceであるezDICOMを見ているので すが、childwin.pasで const gMouseDown : boolean = false; とあり、その以降で gMouseDown := true; となっていて、エラーがでて代入できない左辺値ですと表示されます。 constだからそういうエラーになるのですか?もしそうなら あまり当てにしてはならないコードと判断すべきなのでしょうか?
333 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 20:31:26 ] 328ですが、やっぱり分からないです。描画関連のイベントでデバッグ用の TMemoに出力するようにしたのですが、Visible := True; の前には表示 されません。困ったです。デバッグの良いアイデアか疑うべき点など ありますでしょうか。
334 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 20:51:35 ] >332 constへの代入はコンパイルオプションにより可能なこともある。
335 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 20:53:18 ] いやだからソースどっかにあげろよ
336 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 20:53:51 ] >333 TShapeやTLabelのようなグラフィックコントロールの描画はコンテナの描画から呼び出される。 というわけでコンテナのPaintを起点に追うと何かわかるかも。
337 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 21:00:06 ] Delphiはいい加減標準でプロファイラつけろよな
338 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 21:13:25 ] >>333 プロジェクトのバックアップとってデバッグ用のコード仕込みまくって いじりまくってブレーク張りまくって根性でステップ実行しまくる。
339 名前:デフォルトの名無しさん [2008/04/12(土) 21:29:28 ] 332ですが >334 コンパイルオプションですね。探してみます。 >335 私への返事と解釈して↓のstandaloneのところですが ttp://www.sph.sc.edu/comd/rorden/ezdicom.html
340 名前: ◆XcB18Bks.Y mailto:sage [2008/04/12(土) 22:16:42 ] >>332 「型付き定数への代入」というやつです。 初期のDelphiコンパイラではデフォルトで有効になっていたのですが 途中からデフォルトで無効になりました。 プロジェクト設定の「コンパイラ」設定で有効にするのが手っ取り早い対処法ですが 型付き定数限定とはいえ定数の値を任意に変えられてしまうのはバグの元ですから避けるべきです。 (デフォルトが禁止になったのもバグ回避と思われます) そのソースファイルの先頭に「型付き定数への代入」を有効にするコンパイラ指令 {$J+} を埋め込むのが良いでしょう。
341 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 23:11:55 ] >>327 ものすごく遅くなってしまいましたがやってみます ありがとうございました
342 名前:デフォルトの名無しさん [2008/04/13(日) 00:05:13 ] >>315 誰もおまい見たいなレベルの実行ファイルを解析したりしないよw
343 名前:デフォルトの名無しさん [2008/04/13(日) 07:26:17 ] > 340 ありがとうございました。おかげさまで無事、コンパイルでき動くようになりました。 これで解析がはかどります。本当にありがとうございました。
344 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 11:21:33 ] >>342 「ある専門知識に基づいた計算結果」を求めてダウンロードするってことは、 少なくともその内容に関心があるってことでしょ コーディングの巧拙は関係なし まあ専門知識を持たないおまいには分からないだろうけどw
345 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 11:46:30 ] >>315 CGIにしたらどう? サーバ側で計算すればいい。
346 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 13:15:45 ] >345 サーバーをハッキングされる可能性があるのでは?
347 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 13:23:00 ] まだ引っ張るの?
348 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 15:14:53 ] SJIS最速の正規表現ライブラリってどれ?
349 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 15:23:29 ] 鬼車をobjのLinkで使う。。。とかかな? WinAPI使ってないから改造しないと曖昧検索(同形異区の文字や 全角大小文字の一致とか、)の挙動がWSHとかと違うと思ったけど
350 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 01:41:08 ] >>346 泥棒にPC盗まれる可能性も考えれば、 アルゴリズムは暗記して、そのつど出向いて計算してあげたらよさそう。
351 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 11:10:07 ] 定数を const HAIRETU: Array[0..10] of String = ('a','b','c','d','e','f','g','h','i','j','k'); HAIRETU: Array[100..110] of String = ('z','y','x','w','v','u','t','s','r','q','p'); のように離れて宣言することは出来るのでしょうか?
352 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 11:50:35 ] 別unitに分けるなら出来るよ。 アクセスするときは ユニット名.HAIRETU[4] のようにアクセスする。
353 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 12:22:47 ] 無理
354 名前:351 mailto:sage [2008/04/14(月) 18:52:37 ] 遅くなりましたがありがとうございました 変数でやる時には配列に一気に追加する方法はあるのでしょうか?
355 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 20:11:58 ] Delphiに疎な配列がないのできれいに書くのは難しい。 const HAIRETU: array[0..110] of PChar = ('a','b','c','d','e','f','g','h','i','j','k', nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 'z','y','x','w','v','u','t','s','r','q','p'); if HAIRETU[4] <> nil then ShowMessage(HAIRETU[4]); const HAIRETU: array [0..2] of record n: Integer; v: String; end = ( (n:0; v:'a'), (n:1; v:'b'), (n:100; v:'z') ); for i := 0 to 2 do if HAIRETU[i].n = 1 then ShowMessage(HAIRETU[i].v); HAIRETU := TStringList.Create; HAIRETU.Values['0'] = 'a'; HAIRETU.Values['1'] = 'b'; HAIRETU.Values['100'] = 'z'; ShowMessage(Hairetu.Values['0'])
356 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 09:27:19 ] 関数を作ってみた procedure StrToArray(var Hairetu: array of string; Start: Integer; Args: array of string); var I: Integer; begin I := Length(Args) -1; while (I >= 0) do begin Hairetu[I + Start] := Args[I]; Dec(I); end; end; // ----------------- // StrToArray(HAIRETU, 0, ['a','b','c','d','e','f','g','h','i','j','k']); StrToArray(HAIRETU, 100, ['z','y','x','w','v','u','t','s','r','q','p']);
357 名前:デフォルトの名無しさん [2008/04/15(火) 14:18:16 ] IMEのON、Offの仕方。 IMEの現在の状態を監視するには、なんと入力すればいいか教えてください。 ネット検索したんですが、使い方がよくわかりませんでした。
358 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 14:28:00 ] ImmなんちゃらってAPIだったっけかな
359 名前:デフォルトの名無しさん [2008/04/15(火) 14:46:32 ] >>358 ありがとうございます。 それの具体的な使い方がわからなくて・・・。
360 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 14:53:10 ] 私なんて、現在IMEがONかどうかを調べることすら出来なかったよ!。
361 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 15:31:20 ] Delphiに直接関係はないな。 ttp://m--takahashi.com/bbs/pastlog/A0600/A0534.html
362 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 18:37:32 ] Delphi5で商用利用できるフリーのXMLのクラスライブラリってないかな?
363 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 19:10:32 ] Delphi Personal version6 を使ってるんですが 自分で作ったソフトを公開する時に気をつけることってありますか コンパイラオプションを変えたりとか、そういう事するもんなんでしょうか?
364 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 22:10:16 ] Xp スタイルに対応したか? Vista 対策はOK? くらいかな。
365 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 23:23:39 ] >357 ImeModeプロパティじゃだめなん?
366 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 23:45:49 ] 皆さんエディタとか何使ってますか。 beginとendを強調表示とかしてくれるエディタとかありませんかね。
367 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 23:48:47 ] サクラエディタとか。
368 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 23:49:24 ] EmEditor は、Delphi の予約語を強調表示できるよ。
369 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 23:50:09 ] IDEか秀丸だな。
370 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 00:04:37 ] すみません、質問です。 TWebBrowser で表示しているWebページの高さを OleObject.document.body.scrollheight から取得しているのですが、 どうも正確な値がとれていない時があるようです。 うまくいく場合のあるのですが、 Google 検索結果ページでの、scrollheight の値が 明らかにこっちが想定している値と違うのです。 何か心当たりがある方いらっしゃいましたら、 教えていただけたら助かります! #スクロールバー分は考慮してます。
371 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 09:07:56 ] >>370 ブラウザ内部のサイズより、HTML描画された内容が小さい場合とか?
372 名前:デフォルトの名無しさん [2008/04/16(水) 09:21:58 ] メインメニュー・コンポーネントについて質問です。 大見出し ├小見出し1 ├小見出し2 ├小見出し3 ・・・ という構成のメニューがあったとして、 小見出しを「配列」で一括管理することはできるのでしょうか? 各小見出しのオブジェクトインスペクタのname項目では、N1、N2、N3... などとなっているので、配列名にすることができません。 (このままだと、「全てのチェックボックスを外す」などの記述が大変です) よろしくお願いします。
373 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 09:24:08 ] TStringList.SaveToFileで文字コードをUTF-8で保存したいのですが どうすればいいでしょうか?htmlファイルを生成しています。 WinXP+Delphi7Pro
374 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 10:13:17 ] delphiで通販サイトみたいなの作ってみようと思うんだけど 何か最低限これはみとけみたいなサイトあります?
375 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 10:18:16 ] >>372 大見出し(MenuItem1)から小見出し操作するなら for i := 0 to MenuItem1.count - 1 do begin MenuItem1.Items[i].checked := false; end; メインメニュー(MainMenu1)から大見出し(例としてメインメニューの一番目)を指定して 小見出しを操作したいなら for i := 0 to MainMenu1.Items[0].count - 1 do begin MainMenu1.Items[0].Items[i].checked := false; end; でいけると思う。
376 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 10:18:24 ] Delphiでウェブアプリなんだー。 ちょ、マイナーだね。 ウェブで無償配布ツールものとかドライバ設定系デスクトップアプリでは、某アイコンを良く見るけどね。
377 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 10:25:02 ] >>373 UTF8Encode
378 名前:372 mailto:sage [2008/04/16(水) 10:34:44 ] >>375 ありがとうございます!とても助かりました。
379 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 10:40:52 ] >>373 って for i := 0 to Memo1.Lines.Count-1 do Writeln(f, WideString(Memo1.Lines[i])); ってやるだけじゃだめなん?WideStringとUTF8って別もの? そこらへんいまだに全く把握してないんだけど どこかにアホグラマ向けの解説サイトとかないのかな。
380 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 10:52:30 ] 別物。
381 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 11:21:33 ] >>376 htmlやcss、DB何かも飽きるほど使った事あるからいけるかなぁとか 思ったりしてるんだけどセキュリティ関連がよくわかんないのよねぇ SQLインジェクションやクロスサイト云々とかそういうのはわかるけど 何か他にもいろいろありそうで怖い Webアプリって今はjavaなんかがメジャーなのかな?
382 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 15:43:07 ] DephiFのIDEモードってどうやるんだっけ。 他のウィンドウが見えるSDIになっててやりづれぇ
383 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 15:58:47 ] >>364 ありがとうございます。 Vista対策は全くしてませんので、その事を記載することにします
384 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 16:12:23 ] Vistaなんて使う方が悪いぐらいに書いとけ
385 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 16:13:13 ] >>381 phpとかスクリプトが多いんじゃね
386 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 13:37:09 ] 質問です。 フォーカスが当たっているかコントロールは どうやって調べればいいんでしょうか?
387 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 15:47:11 ] つ TCustomForm.ActiveControl
388 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 19:09:49 ] >>381 HTML、DB飽きるほどやってるなら、セキュリティ云々の前に、 未だに、Unicodeにまともに対応してない、Delphiを使うなんて論外だと思うが・・
389 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 19:58:55 ] Delphi.NETなら使えるんだろ。 .NETの便利クラスパクって来るのも疲れたし マシン買い換えたらDelphi.Net触り始めてみたくはある。 ぼろマシンのネイティブアプリよりよっぽど速そうだw C#のフォーム周りはどうも微妙すぎるし。
390 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 20:06:05 ] 微妙って、.NET Framework使ってたら言語が違っても同じでないの?
391 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 20:22:49 ] クラスライブラリが違う。
392 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 21:04:42 ] ぼろマシンで走る.NETは遅いと思う
393 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 22:53:08 ] Delphi.NETは最悪の選択
394 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 23:34:25 ] >>387 ありがとうございます。できました
395 名前:370 mailto:sage [2008/04/18(金) 00:33:33 ] >>371 レスありがとうございます。 うまくいくページとうまくいかないページがある原因がよくわかりません。。 (yahoo とかだったら、うまくいくんですが) しかも scrollwidth はうまくとれてたりするので、 さらに意味がわからないことになってます。。
396 名前:デフォルトの名無しさん [2008/04/18(金) 01:40:53 ] >>374 「webアプリセキュリティ対策入門」って書籍。 サウンドハウスみたいに単純な穴つかれて個人情報漏らさないように気をつけてね。 Delphiって文字が悪い記事で新聞に載らないようにしてくださいw
397 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 01:42:34 ] >>389 ただでさえDelphiは未来がないのに、その中でロードマップで切り捨てられることが決定している Delphi.NETは選択肢としてありえないよ。 俺ならchrome joyrideをつかう。それならC#でいいけどな
398 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 08:06:40 ] .NET起動遅すぎ
399 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 09:33:28 ] 動作条件に.netが入ってる時点でDLする気失せる
400 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 10:06:10 ] 最近のDelphiと一緒だな。J#まで必要だし。
401 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 11:06:10 ] 未だに.NETの起動がどうのなんて言ってるボロマシン使ってる可哀そうな方々は 一生DEL7SJISWIN32で頑張ってなよ。 今時C2Dマシンなんて2,3万で組めるのにw
402 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 11:19:19 ] このやり取りも無断リンク論並に飽きたので もう勘弁してほしい
403 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 11:48:20 ] デバッグの値の文字列を全部取得する方法っってありませんか。 文字列が長いと、「...」ってのが最後に入ってそこで終わってしまいます。
404 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 13:56:07 ] PageControl単位でマウスカーソルの出入りを監視するのってどうやればいいですか。 MouseOverだとその上に乗ってる全コントロールのMouseOverでチェックしないとうまくいかないし それをやったところで結局正確には取れないです。
405 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 15:04:21 ] >>403 procedure dbgPrint(s:string); begin with TFileStream.Create('dbg.txt',fmCreate) do try Write(PChar(s)^, length(s)); finally free end; end; みたいな関数を作っておいて、 実行されない場所で呼び出しておく(そうでないと実行ファイルにリンクされない) デバッグ時に Ctrl+F7 で 評価/変更 窓を開いて dbgPrint( 変数名 ) と打って 評価(V) で dbg.txt というファイルに中身か書き出せる
406 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 15:06:44 ] >>404 CM_MOUSEENTER/CM_MOUSELEAVE を使うのでは駄目?
407 名前: ◆XcB18Bks.Y mailto:sage [2008/04/18(金) 16:18:16 ] >>406 最近のバージョンではOnMouseEnter, OnMouseLeave イベントとして実装されていますね。 >>379 おおざっぱに言いますとこんな感じです。 ・WideString…全部の文字が2バイト ・UTF-8…英数コードが1バイト(しかもこれらのほぼすべての文字コードがANSI文字列同じ)、 漢字やかななどが3バイト
408 名前:デフォルトの名無しさん [2008/04/18(金) 22:54:38 ] ユニコードが使えるエディタを作りたいのですが、良い方法はありませんか? こちらの環境は Delphi 5 Pro です。
409 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 23:00:38 ] SynEdit unicode editionを使う
410 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 23:02:28 ] >>409 多謝!
411 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 23:40:25 ] stringの長さだけを初期化する方法でSetLength(s, len)ってやるのと SetString(s, nil, len)ってやる方法の二つがあるみたいですが、 この二つの差って何かありますか?
412 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 19:09:13 BE:626494-PLT(12660)] 総合アーカイバコンポで書庫内ファイルの削除したいんだけど、 RemoveItemsメソッドの使い方教えてください ↓こんな感じで動かすと書庫本体が削除されちゃうのですが… DelList := TStringList.Create(); Arc := TArchiveFile.Create(Application); DelList に書庫内ファイル名を突っ込む←この書庫内ファイルを削除したい try Arc.FileName := "書庫本体までのフルパス"; Arc.Options.jso := 1; // 共有エラーの場合に処理を続行 Arc.Options.n := 1; // 経過非表示にする Arc.RemoveItems(Application.Handle, nil,'', [DelList]); finally Arc.Free; DelList.Free(); end;
413 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 00:35:09 ] >>411 SetStringで長さを設定する人を見たことが無い。 違いが気になるなら、ソース見て。 >>412 ここ見ると、追加・削除をサポートしていない形式があるみたいだけど、大丈夫? ttp://www.geocities.jp/norg1964/cmarc/ あと、TArchiveFile.Createで例外が生成されると、DelList.Freeは実行されない。
414 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 01:15:14 ] >>411 SetLengthはメモリを再確保した後に内容のコピーをするような分岐がありますが、 SetStringでnilを指定した場合1つの分岐だけで即座に新しい領域が割り当てられます。 なのでSetStringの方が若干速いです。 >>413 SetLengthとSetStringはともに組み込みの手続きであり、ソース上にそのものの実装は存在しません。 場合によって別々の内部手続きが呼び出されます。この場合はLStrSetLengthとLStrFromPCharLenです。 これを初心者がソースを見て判断するのは酷でしょう。 それにSetStringで長さを設定するのはVCL内に多く見られます。 実際どうなってるか知りもしないのにそのような発言をするのはよくないんじゃないかと。
415 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 01:15:25 BE:209243-PLT(12660)] >>413 レスありがと 形式はzipだからおkだと思うんだ… 何か書き方が悪いのか何なのか それとcreateもtryの内側に入れることにしようと思います><
416 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 01:52:53 ] Createをtryの内側に入れると、今度はCreateの例外で ArcもDelListも代入前に使われちゃう。
417 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 12:31:04 ] >>415-516 nilで初期化しておけばおk
418 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 13:25:31 ] みんなー、>>516 まで入りたい放題だぞー
419 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 16:51:44 ] Delphi.NET(2005)で質問です。 TStringGridの内容を帳票として成型して プレビュー画面を表示した後、印刷したいのですが 一体どうすれば良いのでしょうか。
420 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 22:35:32 ] Excelでフォーマットを好きなように作り、プログラムからグリッドの内容をセルに流し込み、印刷で。
421 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 00:50:35 ] ユーザにそこまでやらせるのはひどいアプリだなぁ
422 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 00:52:49 ] 2005で、かつ Delphi.NET 使ってる時点で論外
423 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 00:53:51 ] >>422 .NetとFirebirdでWebアプリ作ってる俺に謝れ!
424 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 13:12:50 ] ClientDataSetに放り込んでQuickReportとかは?
425 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 21:30:31 BE:975078-PLT(12660)] >>412 分かる人いないかな?
426 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 23:17:35 ] >>425 私なら直接DLLの関数を呼び出す。
427 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 12:43:14 ] turbo DelphiでMSSQLのデータを表示したいのですが 知り合いにできない、と言われました。 プログラムそのものが初めてでこれからやろうとしていたので本当なのかどうかがわかりません。 本当にできないのですか?
428 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 13:06:11 ] >>427 普通にできる
429 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 14:20:06 ] >>428 ありがとうございます。これから頑張って覚えてやってみます。 友人には間違いを伝えておきます。
430 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 15:17:50 ] >>425 確かにzipでやってみたらファイルが消えた。 lhaならできたけどzipじゃないとだめなの?
431 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 15:25:14 ] >>426 日本語でおk
432 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 19:38:35 BE:557748-PLT(12660)] >>426 DLL直だとコンポーネント使ってる意味が無いというか… 最悪それに挑戦することになりそうです。 >>430 zipで出来ないとうまくないですねー 何とかならないものかしら
433 名前:デフォルトの名無しさん mailto:sage [2008/04/23(水) 20:16:08 ] 以前かなり前、TShapeの表示/非表示の切り替えが異常に遅いって 書いたモノですが、ようやく原因が分かりました。\(^o^)/ TShapeを表示させているフォームのAutoScrollをFalseにしたら、 劇的に速くなりました。良かった。これでGWは何日か休めそう
434 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 03:03:11 ] >>432 ZIP32.pasのMainEntry2の中でコマンド実行する前に DeleteFile( ArchiveFileName )でファイル消されてる。 それコメントアウトするとちゃんと処理できたけど、追加のとき エラー回避のために必要みたいなコメントあるから、ファイルを 消すときだけ処理を飛ばすようにした方が安全かも。
435 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 06:59:21 ] TMenuBarやTToolBarを使ってメニューを移動できるようにすると メニューにマウスを乗っけるとボタンみたいになってしまうのですが これを防ぐにはどうすればいいのでしょうか?
436 名前:デフォルトの名無しさん [2008/04/24(木) 10:56:39 ] DelphianWorldって亡くなりました?
437 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 17:08:52 ] 文字列型変数のアドレスを取る手続きFooがあるのですが、 その手続き内で文字列のサイズと内容をセットしたいのですが、どうすれば いいでしょうか? 呼び出し元は var AResult: string; begin Foo(@AResult); end; です。 procedure Foo(P: Pointer); begin // ここで文字列のサイズと内容を設定したい。 end;
438 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 20:25:22 ] 短い文字列型を使う。
439 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 20:31:25 ] DelphiMLって今生きてるの? 4月8日からメールが流れて来ないんだが
440 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 20:48:01 ] 437です。 >>438 呼び出し元の方は変更できませんので、呼び出し先の方でなんとかしたいです。 で、とりあえず、色々やってみたのですが、 procedure Foo(P: Pointer); begin Pointer(P^) := Pointer(StrNew('あいうえお')); end; でやると一応動いているようには見えますが、StrNewの方で参照カウントが設定 されていないので、ちょっと不安です。 呼び出し元がWideStringで procedure Foo(P: Pointer); begin Pointer(P^) := Pointer(WStrNew('あいうえお')); end; でやるとHeapがどうたらというエラーでコケマス。
441 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 20:53:33 ] ぶっちゃけ procedure Foo(var s: string); begin s := 'あいうえお'; end; これでいいじゃんと思うのは俺だけ?
442 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 21:11:37 BE:1409999-PLT(12660)] >>434 なるほど、ちょっとそのへんいじってみます。 貴重な情報ありがとうございます。
443 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 21:12:07 ] procedure Foo(ps: PWideString); begin ps^ := 'あいうえお'; end; 呼出元がポインタで渡してるみたいだし俺ならこうするかな
444 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 22:32:32 ] >>439 生きてるけど、人がいなくなって瀕死状態なのかと
445 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 22:40:29 ] 同じモジュールなら、PString(P)^ := ?? でいけそうですが。 string=WideStringなら、 >443と同じですけど。
446 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 23:09:55 ] >>445 日本語でおk つかおまいのこれ(>>440 )はどこでStrDisposeするんだ? どっかにリストでももってそこで管理する気か?
447 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 23:45:37 ] >>434 オイラからもありがとう とりあえずこうしといた if Pos('-d',_lpszCmdLine)=0 then DeleteFile( ArchiveFileName );
448 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 23:47:09 ] とりあえず、445<>440だ。
449 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 00:05:17 ] Delphian Worldは消滅したみたい。Delphi-MLは開店休業。みんなFTにいるんじゃない?
450 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 01:11:53 ] >Delphi-MLは開店休業。みんなFTにいるんじゃない? へっ? Delphi-ML ってメンバーが10人あまりなんか? それは・・・瀕死状態なんでは?
451 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 04:31:23 ] FT?
452 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 07:49:08 ] >>440 です。みなさん、ありがとうございました。 >>443 ,>>445 さんの方法でうまくいきました。 procedure Foo(P: Pointer); begin PWideString(P)^ := 'あいうえお'; end; PStringまたは,PWideStringにキャストすれば良かったのですね。 >>441 実際のFooは仮想クラスのメソッドで派生クラスでオーバーライドしているため、 インターフェースを変える事ができません。 >>446 文字列のための動的なメモリの割り当ては、呼び出し先(この場合Foo)で行っていますが、 呼び出し元のAResultの変数が破棄される時(この場合、スコープから外れた時)に、割り当てられたメモリは自動的に 解放されると思います(たぶん)。
453 名前:デフォルトの名無しさん [2008/04/25(金) 08:47:53 ] 質問します。よろしくお願いします。 var pArray: PInteger; として GetMem(pArray,100); pArray[0]:=12; とかすると、配列型が必要ですとエラーが出ます。 Integerのポインタを配列としてアクセスするにはどうすれば良いでしょうか。
454 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 09:20:46 ] PIntegerArrayにキャスト。 PIntegerArray(pArray)[0]:=12;
455 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 09:31:14 ] フォルダのパスから、そのフォルダの中にあるファイルのパスを所得するにはとうしたらいいのでしょうか?
456 名前:453 mailto:sage [2008/04/25(金) 09:37:41 ] >>454 うまくいきました。ありがとうございます。
457 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 09:39:00 ] .NET だと使えないけど absolute という便利な構文がある。 type AInteger = array [0..$ffff] of integer; var pInteger: ^Integer; pArray: ^AInteger absolute pInteger; とやれば いちいちキャストしなくても pIntegerの別名が pArrayになるんで pArray^[0] := 12; と書けるよ
458 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 09:45:18 ] >>455 意味が判らないけど FindFirst,FindNext,FindClose か windows API の FindFirstFile FindNextFile FindClose の事かな?
459 名前:455 mailto:sage [2008/04/25(金) 09:57:04 ] >>458 レスありがとうございます。 フォルダをフォームにD&Dしたとき そのフォルダの中のファイルのパスがほしいという事です。
460 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 10:02:26 ] D&D の方が判らないの? FindFirst,FindNext,FindClose の使い方が判らないの?
461 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 10:06:22 ] 他に COM を使う方法があるよ。 やり方は CreateOleObject('Scripting.FileSystemObject') で検索すればいいと思う
462 名前:455 mailto:sage [2008/04/25(金) 10:11:50 ] >>460 FindFirstでいけそうです。ありがとうございました。
463 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 13:27:08 ] >>453 の件で便乗質問です。 私はいつも以下のようにしていますが、何かプログラム上の問題はありますか? var P: PIntegerArray; i: Integer; begin GetMem(P,SizeOf(Integer)*10); // Integer10個分の領域確保 try for i := 0 to 9 do begin P[i] := i*10000; // 順番に0,10000,20000,....90000を代入 ShowMessage(Format('P[%d] = %d',[i,P[i]])); end; finally FreeMem(P); // 領域解放 end;
464 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 13:59:49 ] >>452 P は AnsiString型変数へのポインタをPWideString型へキャストすると、おかしくなると思うよ。 AResultは常にWideString型なの? >>463 問題ない。
465 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 14:05:51 ] 問題ないけど、この使い方なら 動的配列使えばいいのにって思うな。
466 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 14:06:29 ] いまどきなら動的配列じゃね?
467 名前:463 mailto:sage [2008/04/25(金) 14:17:19 ] >>464-466 ありがとうございます。確かに動的配列でいけました。 var A: array of Integer; i: Integer; begin SetLength(A,10); for i := 0 to 9 do begin A[i] := i*10000; ShowMessage(Format('A[%d] = %d',[i,A[i]])); end;
468 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 20:33:15 ] フォルダのリネームって一行ぐらいじゃできないの?
469 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 20:58:09 ] RenameFile で出来ると思うけど? ただ、誰かが使ってたら駄目だよ。 もしかして、自分自身が使ってるんじゃないの? カレントフォルダを変更してみたら?
470 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 21:03:42 ] とりあえず試してみたら? if not RenameFile( oldName ,NewName ) then ShowMessage( SysErrorMessage( GetLastError())) ;
471 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 21:40:56 ] 動的配列… むかーし、なにもかもをTStringGridで処理してた時期を思い出した(涙
472 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 22:04:03 ] それはひどすぎ。動的配列がなかったときは、配列のポインタを使ったもんだ。>>463 のように。
473 名前:468 mailto:sage [2008/04/25(金) 23:51:18 ] >>469-470 ありがとう チョット酒飲みいってたw
474 名前:デフォルトの名無しさん mailto:sage [2008/04/26(土) 03:04:25 ] CloseQueryでFalseしてMinimizeする常駐アプリが立ち上がってると シャットダウンできないんだけどどうやってシャットダウンなりログアウトに対応すればいいの?
475 名前:デフォルトの名無しさん mailto:sage [2008/04/26(土) 03:47:34 ] WM_QUERYENDSESSIONで何とかしてみるとか
476 名前:デフォルトの名無しさん mailto:sage [2008/04/26(土) 07:57:20 ] 演算結果の型についての質問です。 var A: Integer; begin A := MaxInt; if A + 1 > MaxInt then // ほにゃらら を実行すると、if文の条件式が偽となります。 Delphiのマニュアルを見るとオペランドがInt64でない場合は、演算結果はInteger型に なるとのことで、if文の条件式が偽になることは納得しました。 で、if文の条件式を A + Longword(1) とすると、今度は条件式が真になります。 A + Longword(1)の型は一体何になってるのでしょうか?
477 名前:デフォルトの名無しさん mailto:sage [2008/04/26(土) 08:01:11 ] 符号無し整数の演算結果は一時的にInt64になるんじゃなかったか
478 名前:デフォルトの名無しさん mailto:sage [2008/04/26(土) 10:59:35 ] 型名を知りたかったらrecord型やSelfに突っ込んでエラー起こしてみるのが手っ取り早い。 var A: Integer; rec: record dum: Integer; end; begin rec := LongWord(1); [エラー] 'Record' と 'Cardinal' には互換性がありません Self := A + LongWord(1); [警告] 符号付型と符号無し型の演算により、オペランドが拡張されまし [エラー] 'TForm1' と 'Int64' には互換性がありません
479 名前:デフォルトの名無しさん mailto:sage [2008/04/26(土) 11:53:43 ] RadioGroupのアイテムを一つだけ無効にすることってできますでしょうか?
480 名前:デフォルトの名無しさん mailto:sage [2008/04/26(土) 11:59:05 ] >>477 ,>>478 ありがとうございます。試してみます。
481 名前:デフォルトの名無しさん mailto:sage [2008/04/26(土) 12:21:27 ] >>479 ttp://delphi.arcadiangarden.com/delphilounge/webconv.dll/alltree?No=21362
482 名前:479 mailto:sage [2008/04/26(土) 12:31:31 ] >>481 ありがとう
483 名前:デフォルトの名無しさん mailto:sage [2008/04/26(土) 19:02:08 ] >>474 アイコンの通知を受け取るためにAllocateHWndで定義したメッセージ処理メソッドで 処理したかったメッセージ以外はWin32APIのDefWindowProcIに投げるようにする。
484 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 02:17:08 ] >>476 そういうことを気にしなくてもいいコードを書くべき。
485 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 15:40:11 BE:487474-PLT(12660)] フリーのDelphi6でADO使いたいのですが、 ActiveXの取り込みの一覧に、Microsoft ActiveX Data Objectsがありません また、Microsoft ADO Data Control 6.0っていうものをインストールしようとすると、 再構築時に、MSAdodcLib_TLB.pasで「'Error'は型ではありません」と再構築出来ません どうしたらADO使えるようになりますか?
486 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 15:40:29 ] >>484 ここは超初心者用スレだから、そんな難しいこと言われても無理。
487 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 15:43:01 ] そもそも会話が成立してないからスルーで桶
488 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 16:25:37 ] >>485 Turboが嫌なら金払え
489 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 16:48:17 ] 金なんか払わんよ
490 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 17:39:17 BE:209243-PLT(12660)] >>488 フリーだとADO使えないの?
491 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 18:09:02 ] Delphi6だと、DataSet系ついてないと思った。
492 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 20:57:16 ] ADOIntf.pasついてないのか?
493 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 11:53:30 ] TurboDelphi用のQuickReportは無いのですか? いくら探しても…
494 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 12:18:29 ] バンドル版じゃなくて商品版はあるんじゃね?
495 名前: ◆XcB18Bks.Y mailto:sage [2008/04/28(月) 17:36:06 ] >>485 Turbo Delphi Explorerを導入される方が早いと思います。 統合開発環境が.NETベースなのでインストールが面倒なのがなんですが。
496 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 17:42:15 ] Turboでコンポーネントインスコ出来たらいいんだけどなあ・・・
497 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 17:48:57 ] 買えよ
498 名前:番組の途中ですが名無しです [2008/04/28(月) 17:54:51 BE:626494-PLT(12660)] >>495 ちょっと悩みましたが、TurboDelphiを導入してみようと思います ありがとうございました
499 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 19:03:35 ] htmlのプレビューを、IEエンジンのように時間を掛けずに表示する方法はありますか? THogeTextViewが一番いいと思うのですが、どう使えばいいのか分かりません・・・
500 名前:デフォルトの名無しさん [2008/04/28(月) 23:11:41 ] Turbo Delphi無料版で、リソースファイル(.res)を作りたいのですが、 どうすればいいでしょうか? あるサイトで 「rcファイルを作成し、プロジェクトに追加し、コンパイルすれば、 自動的にresファイルが生成される」と書かれていたのですが、その通りに実行すると、 [Pascalエラー] E1026 ファイル'〜〜.res'が見つかりません というエラーになってしまいます。 よろしくお願いします。
501 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 23:30:24 ] 外部のプロセスから出力されたOutputDebugStringの文字列を取得するコンポってないですか
502 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 04:48:56 ] >>500 www.wilsonc.demon.co.uk/d10resourceeditor.htm
503 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 06:04:01 ] >>500 brcc32 hoge.rc で、rcファイルをコンパイルしてみるとか。
504 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 11:07:28 ] >>500 ttp://homepage2.nifty.com/Mr_XRAY/Halbow/Notes/N008.html
505 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 11:25:47 ] 504補足 プロジェクトにrcファイルを追加したら、 一旦「ファイル→全て閉じる」してから再度プロジェクトを開いてください。 これでコンパイル出来ると思います。 これってTurboDelphi無料版のバグかな?
506 名前:わかな [2008/04/30(水) 00:31:31 ] CのオブジェクトファイルファイルをDelphiでリンクするやり方教えて!
507 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 00:43:32 ] {$L XYZ.obj}
508 名前:わかな [2008/04/30(水) 01:07:55 ] >>507 ありがとうヽ(*^。^*)ノ
509 名前:500 mailto:sage [2008/04/30(水) 09:09:26 ] >>502-505 返事が遅れてすみません。>>503 さんの方法で上手くいきました。 >>502 DLして試しましたが、よく分かりませんでした・・・ >>504-505 ご丁寧にありがとうございました。今後の参考にさせていただきます。
510 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 17:14:21 ] LeadBytesってLeadByteTable: array[#0..#255] of Booleanにした方がよっぽど速いな
511 名前:デフォルトの名無しさん mailto:sage [2008/05/01(木) 20:44:33 ] Delphi2008はリリースされないの?
512 名前:デフォルトの名無しさん mailto:sage [2008/05/01(木) 20:50:37 ] Delphi2008でググればいろいろ出てくるぜ
513 名前:デフォルトの名無しさん mailto:sage [2008/05/01(木) 21:23:38 BE:174252-PLT(12660)] TurboDelphi入れてみたけどコンパイル遅くなったのは何で?
514 名前:デフォルトの名無しさん mailto:sage [2008/05/01(木) 22:43:44 ] そりゃそうだろう。 Windowsだって、XPからVistaにすると遅くなる。
515 名前:デフォルトの名無しさん mailto:sage [2008/05/01(木) 22:44:49 ] なるほど
516 名前:デフォルトの名無しさん mailto:sage [2008/05/01(木) 22:59:27 BE:469793-PLT(12660)] >>514 うん。なるほど MS-Access入って無い環境でもmdb+ADOのアプリって動く?
517 名前:デフォルトの名無しさん mailto:sage [2008/05/01(木) 23:38:58 ] >そりゃそうだろう。 Windowsだって、XPからVistaにすると遅くなる。 そしてVistaは誰にも嫌われる、と。 確かにDelphiの最新バージョンと一緒なんだな。
518 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 07:39:53 ] ウンコPCは窓から捨てろよ
519 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 07:48:33 ] 【Borland】CodeGearオッチャ その8【(ノ∀`)アチャー】 pc11.2ch.net/test/read.cgi/tech/1204612467/
520 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 09:20:39 ] TurboDelphiとTurboDelphi.NETって共存できないの?
521 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 09:57:12 ] >>520 できますん
522 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 15:50:42 ] TDateTimeからUTCの時間(文字列、もしくは、年、月、日の数値)を取得する方法教えてくださいでつorz
523 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 17:11:00 ] >>522 >>305
524 名前:デフォルトの名無しさん [2008/05/02(金) 18:03:04 ] ちょっと疑問なんですが、 Nowでとった時間をTQueryなんかでAsDateTimeで設定したとしたら、 UTCとして登録されるのかな? もしかして、localtimeとして登録されちゃう?
525 名前:524 [2008/05/02(金) 18:15:39 ] あれ? テストしてみたら、localtimeがRDBに入ってるみたいだけど、そうなの? これだと、登録した場所によって、時間の前後が変わっちゃうんだね。
526 名前:524 [2008/05/02(金) 18:27:43 ] 具体的には、 1.日本でNowで日時を取得 2.RDB(Firebird)のTIMESTAMP項目に、AsDateTimeで設定 3.アプリを例えばグリニッジで実行したら このとき、1と3の日付文字列は同じになるのでしょうか?異なるのでしょうか?
527 名前:524 [2008/05/02(金) 18:30:17 ] 自分の予想としては、 DateTimeToStrはローカルタイム変換はせずローカルタイムjのみ入力可で、 RDBにはローカルタイムで登録されてるので、 同じ日付文字列になると思うのですが。。。
528 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 19:06:49 ] もうちょっともちけつ
529 名前:524 mailto:sage [2008/05/02(金) 19:18:36 ] ラジャ! 知りたいのは以下の内容です。 質問1: RDBに日付を登録するときはローカルタイムで良いのでしょうか? それともUTCの方が良いのでしょうか? どちらが良いともいえない場合、どちらが一般的でしょうか? 質問2: Nowで取得してAsDateTimeでRDBのTIMESTAMP項目に登録すると、 ローカルタイムが登録されるのでしょうか? 質問3: 上記の通り登録したRDBのTIMESTAMP項目をAsDateTimeで取ってきて、 DateTimeToStrした場合、 ロケールがどこに設定されたとしても、”日、時、分”は同じものとなるのでしょうか?
530 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 21:10:45 ] こんばんは。 電卓のプログラム(OSに搭載されている)の3のボタンを9っていう数字に変えたいんですけど、 //電卓のウィンドウハンドルを取得 hcal :=FindWindow(nil, '電卓'); h5 :=FindWindowEx(hcal, 0, nil, '3'); if h5 <>0 then begin SetWindowText(h5, '9'); Sleep(100); end; うまくいかないのですが、どうしたらよいでしょうか? ご教授おねがいします。
531 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 22:35:49 ] >>524 >>質問2,3 ADO,DBExpress何を使ってるかしらんが、基本的にドライバ次第。 ひねくれた?ドライバでなければ、TimeStamp値として渡した日付時刻がそのまま 登録される。勝手に変換したりはしないと思う。渡す日付時刻をどう解釈するかは アプリ次第。
532 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 22:58:27 ] >>510 集合はビット演算が入るから、配列より遅くなる。 でも、メモリ消費は1/8だよ。 >>530 MSDNには、下記のようにある。 >ほかのプロセス内のコントロールのテキストを設定するには、 >SetWindowText 関数を呼び出すのではなく、直接 WM_SETTEXT メッセージを送ります。
533 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 00:07:54 ] TStringListのDelimiterに<>などの2文字以上の文字を設定するにはどうすればいいのでしょうか 置換で代替できるとは思うのですが格好よくないので使いたくありません・・・
534 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 00:16:35 ] >>533 無理 SetDelimitedTextルーチンをぱくって自分で書くしか。 単純な置換だと""の中まで変えちゃうから要注意。
535 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 02:02:47 ] >>533 具体的に1文字で何ができないのかを言った方が、解決すると思う
536 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 02:16:34 ] >>534 ありがとうございます www.din.or.jp/~egawa-n/delphi/func.html のを使わせてもらうことにします
537 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 02:19:48 ] >>535 すみません、リロード忘れてました 2chのDATを扱いたいので・・・ 一応<だけでやってもいいとは思いますが面倒なので・・・
538 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 02:22:34 ] >>537 TRegExpおすすめ というかdat処理ならこういうの入れないとめんどくさくて無理
539 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 02:27:38 ] >>538 なるほど、正規表現の手がありましたか 確かに分かりやすそうです ありがたく使わせてもらいます
540 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 08:39:07 ] >>532 情報ありがと。 けどメッセージ飛ばしたけど、書き換えできなかった・・・。 もう手はないかな?
541 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 09:25:51 ] 特定のウィンドウにキーを送るのではなく グローバルホットキー、例えばCtrl+Alt+G を発動させるコードってどう書くんですか
542 名前:|Д゚彡 ◆A6VzDeLphI mailto:sage [2008/05/03(土) 14:56:30 ] Ctrl/Shift/Alt/Winキーを受け付けるWindowsのHotKeyを登録・処理する delfusa.main.jp/delfusafloor/technic/technic/049_HotKeyRegistration.html
543 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 15:29:58 ] HotKeyを受け取って自分で処理したいのではなく その逆にどこかのアプリで登録済みのHotKeyを 呼び出してそのアプリの機能を呼び出したいということです。 その際直接そのアプリを指定しないでキーボード操作のみの形でやりたいです。
544 名前:|Д゚彡 ◆A6VzDeLphI mailto:sage [2008/05/03(土) 15:46:31 ] key_eventで、キーをおしたことにすればいいんじゃないのかな? 特定のアプリ専用なら 俺なら、ウィンドウ列挙してそのアプリを前面にもってきてから アクセラレータキーを送るとか、 そうするなあ。
545 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 16:30:05 ] SetWindowsHookEx をやりたいって事のようだけど コレは色々悪さ出来るからな。 どっちにしても自前で解決して欲しい所。
546 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 16:59:03 ] 全部の窓からWM_GETHOTKEYで 設定されてるキーを調べて その窓に対してコマンドを送ればいいんじゃないの?
547 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 20:42:59 ] 普通に key_event 6回だろ。
548 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 09:36:12 ] >>545 とりあえずマウスのフックとキーボードが押されたときに反応する(フックっていうのか?)のはできるんだけど、 電卓の例の場合はどういう種類のフック使うんでしょうか?
549 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 10:30:30 ] >>548 Delphi関係ないからAPIスレで聞け Win32API質問箱 Build65 pc11.2ch.net/test/read.cgi/tech/1208847084/
550 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 19:11:50 ] フォームではなく、特定のコンポーネントにファイルをD&Dして 受け取らせるにはどうやったらいいのでしょうか?
551 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 19:19:50 ] フォームならできるのにコンポーネントだとできない理由は?
552 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 20:51:09 BE:974887-PLT(12660)] ウインドウハンドル持ってないコンポはダメじゃなかったっけ?
553 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 21:47:52 ] >>552 TGraphicControl派生コンポはTPanel置いてその中に置けばおk
554 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 22:00:58 BE:174825-PLT(12660)] >>553 なるほど じゃあ、アプリケーションメッセージで if (Msg.message = WM_DROPFILES) and (Msg.hwnd = Panel1.Handle) then こんな感じで振り分ければおkじゃね?>>>550 ※FormCreateの中に↓を入れておくこと DragAcceptFiles(Panel1.Handle, True); Application.OnMessage := AppMessage;
555 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 22:02:52 BE:626494-PLT(12660)] 実際、ppMessageはこんなかんじ procedure TFrom1.AppMessage(var Msg: TMsg; var Handled: Boolean); begin if (Msg.message = WM_DROPFILES) and (Msg.hwnd = Panel1.Handle) then begin SetForegroundWindow(From1.Handle); SendMessage(Handle, WM_DROPFILES, Msg.wParam, Msg.lParam); Handled := True; end; end;
556 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 22:04:39 BE:609375-PLT(12660)] そんで更にこんな感じ procedure TFrom1.DropFiles(var Msg:TWMDROPFILES); const NameMax = 1024; var DropFileCount: Integer; FileNameA : array[0..(NameMax + 10)] of Char; TempStr:String; begin DropFileCount := DragQueryFile(Msg.Drop, $FFFFFFFF, nil, 0); DragQueryFile(Msg.Drop, 0, FileNameA, NameMax); //お好きな処理// DragFinish(Msg.Drop); end;
557 名前:550 mailto:sage [2008/05/04(日) 22:51:03 ] みなさんありがとうございます 早速やってみますね
558 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 23:16:23 ] DragQueryPointでその位置にあるコントロールを取得しては?
559 名前:デフォルトの名無しさん [2008/05/05(月) 09:30:28 ] いつも助かっています。 Open SourceのでかいDelphiで書かれたソフトがあり、それで 勉強しようと思っています。CTRL−Cや’;’を押してどういう処理が されているのかをとりあえず見たいのですが、どういう文字の検索を すれば該当部分のコードを見れるでしょうか? OnKeyで探したのですが、それらしき処理をしている所には飛んで いかなかったのですが。
560 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 09:38:27 ] 実行させてみるのが一番いいと思うよ。 OnKeyって事はコンソールアプリじゃなくて GUI アプリなんだろ? windowsGUIならイベントは全部 TAplicatioの OnMessage でひっかけられるから この中で キーイベントを IF 文入れて ブレークポイントかけられるようにして トレースしてゆけばいい
561 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 10:43:29 ] もしTActionのショートカットに入ってたらソース上には現れない フォームを右クリックしてエディタで表示して例えば「;」なら「187」って いう生数字を探せば見つかる
562 名前:デフォルトの名無しさん [2008/05/05(月) 13:35:59 ] お返事ありがとうございました。 > 560 あまりよくわかっていませんが、FormCreateに Applicaton.OnMessage:= AppMessage; を入れて Precedure TMainFrom.AppMessage(...) var dummy:integer; begin If msg.message=WM_Keydown then dummy:=1; end; でdummy:=1に赤線(ブレーク)をしてみましたが、そこで 止まってくれません...こういう意味ではない?? >561 187という生数字を探しましたが、ありませんでした... MenuにもCTRL-Cのショートカットは登録してないですし www.sph.sc.edu/comd/rorden/ezdicom.html なのですが...
563 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 14:06:49 ] MDIChildってフォームのメニューに"Ctrl+C"と";"のショートカットが割り当てられた項目あるけど違うのけ?
564 名前:デフォルトの名無しさん [2008/05/05(月) 14:43:09 ] あ、ありがとうございました。元Sourceをみていただいて とても感謝しています。 Childwin.dfmの中を見ればいいんですね。 *.pasの中だけ、187の検索をしていました。 これをみると、Copyはshortcut16451とありますが、これは CTRL+Cでいいんですよね..?? 本当にありがとうございました。
565 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 15:10:46 ] > これをみると、Copyはshortcut16451とありますが、これは CTRL+Cでいいんですよね..?? そう
566 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 08:18:38 ] お前ら、SpTBXLibの2.0が出てますよ ttp://club.telepolis.com/silverpointdev/index.htm 2.0からTBXが不要になりました
567 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 11:44:46 ] SetLength(S, $7FFFFFFF)とやるとAccessViolationが でます。Delphiは境界テスト?もろくに行われていない製品なのでしょうか? SetLength(S, $7FFFFFFF - 10)でやっと「メモリ不足」というエラーがでます(これは 別にいいんですが)。10というのはどっからきてるんでしょうね。参照カウンタと長さ用の領域に 8バイト、終端文字に1バイト、あと?
568 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 11:48:42 ] Delphiは境界テスト?もろくに行われていない製品なのでしょうか? Delphiは境界テスト?もろくに行われていない製品なのでしょうか? Delphiは境界テスト?もろくに行われていない製品なのでしょうか?
569 名前:Delフサギコ ◆A6VzDeLphI mailto:sage [2008/05/06(火) 13:05:03 ] |,,∧ |゚Д゚彡 |⊂ミ >>567 さん ほんとうだ。。よく気がついたね。
570 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 13:46:54 ] あるいはメモリマネージャ側のエラーかもな
571 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 13:55:56 ] 今試せないけど、データ型が大きすぎとかでそんなエラーになるとオモッタなあ。違うの?Sがなんだか知らんが
572 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 14:36:26 ] 型が大きすぎでAccessViolationはねーよw
573 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 15:44:02 ] ソース見ればアクセス違反が出るまでの経緯が分かるけど、単にチェック不足だな。 要求メモリ量が負になっても気にせず続行する男気あふれるコードだ。
574 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 18:33:32 ] TSaveDialogでOptionsのofShowHelpをTrueにするとヘルプボタンが表示されますが どのイベントでひろえば良いのでしょうか。
575 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 21:14:47 ] WM_HELPを拾えばいいんでない?
576 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 23:15:22 ] 質問です^^ デルファイ7使ってるんですが 「元に戻す」(アンドゥ)ってどうやるんでしたっけ 先日分からなくて諦めました 3作業前に戻るとか出来ないんですかね^^;;;;;;
577 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 23:17:48 ] 7では無理
578 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 23:35:45 ] >>577 まじでぇえええええ^^ あり;;
579 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 09:30:11 ] >>575 ダイアログを表示しているフォームのOnHelpでも、TApplicationのOnmessage でMsg.messageをWM_HELPで判定しても procedure WMHelp(var msg: TMSG); message WM_HELP;をprivateで宣言して やってもひろえていないようです。どうして?
580 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 11:21:00 ] >>579 TApplication.HandleにRegisterWindowMessage(HELPMSGSTRING)で送られてるみたいだが
581 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 16:08:54 ] >>580 ありがとう。でも分からなかったです。とほほ
582 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 17:25:29 ] >>581 WinspectorとかでTApplicationの持つウィンドウのメッセージ監視すれば引っかかるはずだよ。 TApplication.OnMessageでは引っかからないからTApplicationのウィンドウをサブクラス化しないと受け取れないかも。
583 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 20:07:13 ] というかダイアログのHelpContextを設定しておけば Application.HelpFileで指定しといたヘルプ (の該当するトピック)を開いてくれるんだが。 それ以外のことをやりたいわけ?
584 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 07:27:53 ] TApplicationのウィンドウプロシージャーなら、Application.HookMainWindowでOK. WM_COMMANDもどこかのウィンドウに送られている。(ダイアログのトップレベルのウィンドウかも)
585 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 08:10:53 ] 色々ありがとうございます。ちなみにHTMLヘルプなもんで…HelpContextでは うまくいきませんでした。それから Application.HookMainWindow も少しだけ 試したんですが。もう少し気合入れて調べてみます。
586 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 22:12:24 ] TBXを配布しているサイトが見れないのですが、TBXを再配布しているサイトはないのでしょうか?
587 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 22:34:11 ] 微妙にバージョン違い? ttp://www.torry.net/pages.php?id=16#7246
588 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 22:54:06 ] ありがとうございます 使ってみます
589 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 02:44:36 ] type TSettings = class published property Min: Integer; property Max: Integer; property Text: String; property Switch: Boolean; end; といったプロパティをINIファイルに自動的に読み書きさせるコードのサンプルってないのかな。 WriteComponentだとプロパティの追加削除ですぐ例外吐くから使えない。
590 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 03:55:41 ] そのWriteComponent内で呼ばれるTWriterのコードでも見たら? まさにそのものをやってるメソッドがあるから
591 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 04:46:57 ] TPersistentから継承しなくても良かったっけ?
592 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 05:04:16 ] 誰か例のTGifImageの脆弱性なおしておくれ
593 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 08:06:58 ] JaneStyleはTGifImageを修正してるみたいですね
594 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 09:37:06 ] gifimage.pasの5992行から while (code >= ClearCode) do begin //ここから if UINT(Source) > UINT(@stack[High(stack)]) then begin Dec(Source); Result := Source^; Exit; end; //ここまで Source^ := table1[code]; 検証お願いします
595 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 11:04:57 ] >>594 行けたぜGJ! でも俺の場合5873行なんだがこれはバージョンの違い? 一応2.2なんだが・・・
596 名前:Zzz [2008/05/09(金) 11:24:39 ] 質問お願いします Delphi7なんですけど (最大化最小化閉じるボタンを非表示などをした)Formを 同プロジェクト内の別のFormでも使いたくFormごとコピーして 使用したいのですがコピーやり方がわかりません どうやれば実現できるのでしょうか???
597 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 11:37:16 ] ExplorerでForm1.pas/.dfmをForm2.*にコピー&リネームして ファイル内のユニット名、クラス名、Nameプロパティ名を調整。 フォーム上のコンポーネントやプロパティの設定は.dfm イベントハンドラ等のコードは.pasにあるから適当に切り貼りしてもいいかも。 名前をつけて保存でForm2とかやっちゃうとForm1が破棄されForm2を使い出すからわけわかってないと悲惨なことに。 IDEでは使いまわし支援でリポジトリなるものをサポートしているけどほとんど使ったことない。 活用してる人っているのかね。 なんにしてもプロジェクト全体のバックアップをしてから試したほうがいいかもね。
598 名前:Zzz [2008/05/09(金) 11:40:36 ] やはり意外と、つらそうな道のりですね 了解しました 地味に作成しようと思います リポジトリの使用方法も忘れてつつあるので・・・ ありがとうございました
599 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 11:40:40 ] うちは5846行目だった TGIFSubImgae.Decompressプロシージャ内のNextLZW関数内だよね?
600 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 12:45:27 ] ver2.2のNextLZWの中です ASSERT(Code < TableSize, 'Code too large'); while (code >= ClearCode) do begin //ここから if UINT(Source) > UINT(@stack[High(stack)]) then begin Dec(Source); Result := Source^; Exit; end; //ここまで Source^ := table1[code]; Inc(Source); if (code = table0[code]) then Error(sDecodeCircular); code := table0[code]; ASSERT(Code < TableSize, 'Code too large'); end;
601 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 13:17:57 ] >>596 継承して使うと似たようなフォームで少しだけ違うような場合に便利だよ ファイル⇒新規作成⇒その他 で出たダイアログのタブの今のプロジェクト内から Form1を選んで 下の ・継承 を確認して [OK]
602 名前:Zzz [2008/05/09(金) 16:50:32 ] たびたびすいません 質問です リストボックスやコンボックスのItems欄に選択「文字」を追加する 方法が分かりません ・・・と書くとItem addとか思われると思いますが、もう一歩進んで その追加したを随時に追加し、且つ保存したいのです プログラムを終了させる、プログラムを起動させる 「追加したデータが消えてる(涙・・・」 どうやれば保存できるのでしょうか 最終的には、マイナーなコンポーネントに対し保存したいのですが 基本のリストボックスやコンボックスのやり方を教授していただければ 自分で考えますので(当たり前ですけど)ヒントの程お願い致します
603 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 17:09:42 ] 終了時にファイルに保存して起動時にファイルから読み込む。
604 名前:Zzz [2008/05/09(金) 17:23:32 ] >>603 おしい それも一つの手ではあるんですが、最終的にコンポーネントの Items欄に追加したいのでItems欄に保存する方法はないのかと 言うのを知りたいのです
605 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 17:31:18 ] 質問する前に日本語を勉強する
606 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 17:41:48 ] いまいちよくわからないがexeのどこかに保存されているであろうItemsのデフォルト値に対して保存・読み出ししたいってことか? もしそうなら、コンパイルする度に値が吹き飛ぶぞw
607 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 18:42:09 ] そういうことができるなら ini ファイルはいらんがな・・
608 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 18:57:18 ] リソースを書き換えたいのか? 出来るだろうが、なんでiniファイルは駄目なんだ?
609 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 21:18:12 ] 少なくともコード書いて試して 603 に対して「おしい」とかいってるのか? const DatEx='.dat'; var ListDat:string; procedure TForm1.Button1Click(Sender: TObject); begin ListBox1.Items.Add(Edit1.Text); end; procedure TForm1.FormCreate(Sender: TObject); begin ListDat:=ChangeFileExt(Application.ExeName,DatEx); if FileExists(ListDat) then ListBox1.Items.LoadFromFile(ListDat); end; procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin ListBox1.Items.SaveToFile(ListDat); end; ちなみにみんなの言っている「日本語でおk」は 「Items欄に保存」ってのがわからんってことだぞ
610 名前:Zzz [2008/05/09(金) 23:16:25 ] >>609 むむー ListBox1.Items.SaveToFile(ListDat); で行けるかも えっと Items欄に保存ってゆうのは・・・・・・ コンボボックスとかは、選択肢をItems.Addしなくても事前に入れて置けるじゃないですか(うろ覚えすまん) あれってPgで、あるボタンを押した時のイベントでItems.Addして追加しても、 Pg終了して、再度Pg再開してコンボボックスの中見ると消えてるじゃないですか(あたりまえですけど) つまり、そのItems欄の中にデータを残しておきたい訳です (↓コンボの中) にんじん だいこん トマト ↓(いもを追加) (↓コンボの中) にんじん だいこん トマト いも ↓(システム落として再起動) (↓コンボの中) にんじん だいこん トマト (がーん いもは・・・・・)
611 名前:デフォルトの名無しさん [2008/05/10(土) 00:01:24 BE:348454-PLT(12660)] iniかレジストリ使うのが普通じゃね?
612 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 00:55:11 ] 自分で言ってるけど消えるのは当たり前なんです そういうのは外部のファイルに記録しておいて 再開したときに読み込むのがいいと思います
613 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 07:42:56 ] だから、設計時に追加した情報は、コンパイルするとリソースとしてexeに含まれるの。
614 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 10:03:01 ] TIniFile使ってやるのが一般的じゃね? >>610 の気持ちもわからんではないが・・・逆にIDEで初期値を入れられるだけでも便利と思え! ListBox1.Items.Commatext:=ReadString('ListBox1','Items',''); WriteString(ListBox1','Items',ListBox1.Items.CommaText);
615 名前:デフォルトの名無しさん [2008/05/10(土) 10:27:37 ] dfmファイルを外部に持たせればOK.
616 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 11:28:00 ] 彡川三三三ミ 川出 ::::::⌒ ⌒ヽ パクリ星からやってきたお! 出川::::::::ー●-●-) ..川(6|:::::::: ( 。。)) パクリ星の王子様の◆Style/kK.sだお! 出川;;;::∴ ノ 3 ノ ノ\_;;;;;;;;;;;;;;;;ノ Janeスレ荒らしてるヒキコモリだから友達できないお! ( * ヽー--'ヽ ) (∵ ;) ゚ ノヽ ゚ ):) チンポは極小で包茎だお!!ちなみに童貞だお!! (: ・ )--―'⌒ー--`,_) (___)ーニ三三ニ-) (∴ ー' ̄⌒ヽωニЗ 好きなものは他人のソースとオナニーとwarezだお!! `l ・ . /メ / ヽ ∵ /~- /. 今日もたくさんソースパクリまくるお!! (__)))))_)))))
617 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 14:33:41 ] >>566 おー、Sliverpoint乙
618 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 15:14:34 ] >>587 今頃で申し訳ないんですがエラーが出てインストール出来ません・・・ d6perだからですかね?proだとインストールできるんでしょうか
619 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 16:15:29 ] >>618 alpha版はdel7から対応だったように思う 2.1beta1↓ ttp://www.fileup.org/fup183413.zip.html TB2Kのパッチは自分で探してね
620 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 16:15:47 ] >>619 passはtbx
621 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 16:22:52 ] >>619-620 わざわざうpしていただいてありがとうございます! インストールしてみます
622 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 16:46:04 ] インストールできました! ありがとうございました!
623 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 18:24:43 ] インストールできたのはいいんですがメニューがボタンのようになってしまいます・・・ これじゃ当初の目的が達成できないのですが、どのようにすれば普通のメニューのように出来るのでしょうか
624 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 18:28:59 ] すみません、自己解決しました・・・
625 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 18:30:40 ] わけわかんねー事言ってんじゃねぇよタコ 小学生からやりなおせ
626 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 19:07:00 ] 今小学5年生です・・・・
627 名前:デフォルトの名無しさん [2008/05/10(土) 19:15:49 ] 「相撲」って人気有るんだな 映画化されて・・・と思った・・・おれは小学生からやり直すべき?
628 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 19:17:12 ] 相模だろw
629 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 19:18:37 ] 意味の解らない俺はどれからやり直せばいいんだ?
630 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 20:02:46 ] アセンブラからだろ とーぜん
631 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 20:30:43 ] 精子から
632 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 20:42:11 ] Office2007でコンテキストメニューを表示したとき その上にツールバーも一緒に表示するUIが何気に便利なんだけど あれどうやって実現するんだろう。
633 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 21:24:25 ] 実現も何も・・ただそういうウィンドウを表示してるだけだよ。
634 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 03:52:32 ] うまく言えないんですがエスケープシーケンスのある文字列を変換するにはどうすればいいんでしょうか たとえばabc\ndefという文字列があった時に abc#10def(#10はもちろん文字列としてではなく)に変換するみたいなのです
635 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 03:56:24 ] お願いします。APIを使ったプログラムに不自由してるくらいの実力の者です。 d.hatena.ne.jp/Wacky/20080114/1200315830 ここのサイトの通りにTMemoに検索をつけてみたんですが、検索方向が下向きに検索できるのですが、上向きには検索できません。 どうすればできるようになるのでしょうか? ちなみに環境はWindowsXPHome,Delphi5Proです。
636 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 05:17:38 ] >>634 つStringReplace >>635 TFindDialog.OptionsにfrDownが設定されているかを確認して 自分で切り替える必要があります
637 名前:634 mailto:sage [2008/05/11(日) 05:27:03 ] >>636 一応\nだけではなくて\tとか漢字とかもエスケープされてるようなので使えないです・・・
638 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 07:56:46 ] >>637 つ正規表現 TRegExp
639 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 08:09:33 ] function DecodeEscStr(const s: string): string; var i: integer; begin Result := ''; i := 1; while i <= length(s) do if s[i] in LeadBytes then begin Result := Result + copy(s, i, 2); inc(i, 2); end else begin if s[i] = '\' then begin inc(i); case s[i] of 'x':try Result := Result + char(StrToInt('$' + s[i + 1] + s[i + 2])); inc(i, 2); except end; 'b': Result := Result + #$08; 'a': Result := Result + #$07; 'f': Result := Result + #$0C; 'r': Result := Result + #$0D; 't': Result := Result + #$09; 'v': Result := Result + #$0B; 'n': Result := Result + #13 + #10; else Result := Result + s[i]; end; inc(i); end else begin Result := Result + s[i]; inc(i); end; end; end;
640 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 08:11:02 ] >>634 はもしかして C言語スタイルの \ エスケープでエンコードされた 文字をデコードしたいって事じゃないかと思ってサンプルコードを書いてみた
641 名前:634 mailto:sage [2008/05/11(日) 08:27:34 ] >>638 TRegExpは何だかさっぱりであまり使ってません・・・ >>639 ,640 ありがとうございます 元のプログラムはCのようなのですがそれの仕様が良く分からないもので・・・ 一応「テスト」という文字が「\83e\83X\83g」になるということは分かってます
642 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 09:08:54 ] それは独自仕様って事だね。 'x':try Result := Result + char(StrToInt('$' + s[i + 1] + s[i + 2])); inc(i, 2); except end; この部分を '0'..'9' , 'A'..'F':try Result := Result + char(StrToInt('$' + s[i ] + s[i + 1])); inc(i); except end; とすれば、その部分には対応すると思うけど、他にも違いがありそうだね。 仕様が判ってるのはあなただけだから、自分でやってね
643 名前:634 mailto:sage [2008/05/11(日) 09:26:00 ] >>642 それで出来たようです! ご迷惑かけました! そしてありがとうございました!
644 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 12:15:59 ] フォームのボタンなどのキャプションに付けるアクセラレータって言うんでしょうか (&A)みたいにするとAltキーとAを一緒に押すとクリックされるやつですが、 コントロールが多くなってくると、どれが使われていないのか探すのが大変です。 便利なワザみたいなの、ありませんでしょうか。
645 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 12:40:14 ] ActionList
646 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 13:24:12 ] 適当に書いてみたが何気に便利かも・・・ 表示をまともにしてコマンドラインツールにして外部ツールとして実行できると使い物になりそう。 オープンダイアログで調べたいフォームのdfmファイルを指定するとこんな感じで出る。 C: Caption = '&ClickMe!' C: Caption = 'Button1(&C)' F: Caption = #12501#12449#12452#12523'(&F)' R: Caption = '&Run' X: Caption = #32066#20102'(&X)' procedure TForm1.Button1Click(Sender: TObject); var dfm, res: TStringList; i, idx: Integer; begin OpenDialog1.InitialDir := ExtractFilePath(ParamStr(0)); if not OpenDialog1.Execute then Exit; dfm:= TStringList.Create; res := TStringList.Create; try dfm.LoadFromFile(OpenDialog1.FileName); for i := 0 to dfm.Count-1 do begin idx := AnsiPos('&', dfm[i]); if idx > 0 then res.Add(UpperCase(dfm[i][idx+1]) + ':' + dfm[i]); end; res.Sort; ShowMessage(res.Text); finally dfm.Free; res.Free; end; end;
647 名前:デフォルトの名無しさん [2008/05/11(日) 18:17:09 ] 質問です。 TMemo に長いテキストを読み込ませたいのですが LoadFromFile で一気に読み込むと一瞬フリーズしたようになります。 そこで、スクロールに合わせて小分けに読み込むようにしたいのですが何か良い方法はありませんか?
648 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 18:50:47 ] >>647 マルチスレッド
649 名前:デフォルトの名無しさん [2008/05/11(日) 19:08:34 ] >>648 お答えありがとうございます。 ですが、メモリを節約して小分けに読み込み表示してスクロールバーの振る舞いはファイルサイズに合ったものにしたいのですが、どうにかなりませんか?
650 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 19:23:38 ] はなっからスクロールバーを適正サイズにしたいってこと?そりゃ無理。どれだけの行数があるのかは 読み込んでみないとわからないっしょ?
651 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 19:26:12 ] >>650 確かにそうですね。妥協することにします。 >>647 終了です。ご回答くださった方ありがとうございました。
652 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 07:36:01 ] TStringListにいったん読み込めばいい。
653 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 15:29:15 ] 複数キー入力を検出するにはどうすればよいでしょうか? Ctrl+Alt+Delとかのことです。 よろしくお願いします。
654 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 15:31:32 ] そんな無作法なツールは死ねばいい
655 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 16:01:57 ] >>653 TShiftState
656 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 23:00:01 ] >653 検出はいいけど、何をしたいのか具体的に書いたほうがいいと思うが。 ちなみにCtrl+Alt+Delは捕捉できないので念のため。
657 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 23:01:57 ] BBS へ行ったと思われ
658 名前:デフォルトの名無しさん [2008/05/12(月) 23:42:30 ] TMemo でスクロールせずに表示できる行数を知るには ClientHeight を Font.Height で割れば良いのでしょうか?
659 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 00:07:26 ] 1分で確かめられる事をわざわざ聞きにくるな
660 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 02:25:24 ] 1分使って自分で確かめるくらいなら2分使って質問を投げる勇気を私はもちたい。
661 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 03:02:10 ] :::::::::::.: .:. . ∧_∧ . . . .: :::::::: :::::::: :.: . . /彡ミ゛ヽ;)ヽ、. ::: : :: ::::::: :.: . . / :::/:: ヽ、ヽ、i . .:: :.: :::  ̄ ̄ ̄(_,ノ  ̄ ̄ヽ、_ノ ̄
662 名前:635 mailto:sage [2008/05/13(火) 12:49:06 ] >>636 ありがとうございます。帰ってやってみます。
663 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 21:40:18 ] これからDelphiをはじめる初心者ですが TurboDelphi用の初心者向け参考書はありますか? お勧めがあれば教えて下さい。
664 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 21:50:23 ] >>594 >>595 >>599 melander ってしらないうちにオンラインにカムバックしてたのね melander.dk/delphi/gifimage/ ここで各種 Delphi のバージョンアップ対応のメンテ版を公開していたので 同じ 2.2 でもバージョン違いが存在する www.tolderlund.eu/delphi/ で、そもそも TGIFImage は CodeGear に寄贈されて最新版の3.0は Delphi 2007 に同梱と
665 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 23:38:58 ] >>664 D2007のTGIFImage3も>>594 のはバグってる でも他のInterlaceなGifの問題は直ってたりするけど www2.ttcn.ne.jp/~honkawa/images/2770.gif
666 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 02:11:31 ] (;^ω^)今更ながらtypeとポインタが便利な事に気付いたwwww今まで時間無駄にしてたわwwwwwww
667 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 05:23:00 ] で、TGIFImage の開発元にフィードバックしたいのだが。 で、いくつか問題起こす gif を見ましたが、なんつーか児童ポルノに厳しい国でも レポートできるようなアニメーション GIF で再現できない物ですかねぇ
668 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 09:45:09 ] var Attr: Cardinal; dv: string; Attr:= GetFileAttributes(pchar(dv)); if (Attr and FILE_ATTRIBUTE_COMPRESSED) <> 0 then begin MessageDlg('Compressed.', mtError, [MBOK], 0); end; if (Attr and FILE_ATTRIBUTE_ENCRYPTED) <> 0 then begin MessageDlg('Encrypted.', mtError, [MBOK], 0); end; dv はドライブ名 C:\ or D:\ これで9x系のドライブスペースとNT系の圧縮フォルダとプロの 暗号化されたやつを判定できますか?
669 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 14:03:27 ] ウィンドウハンドルを指定してそのウィンドウのキャプチャをCanvasに描くのってどうやるの?
670 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 16:52:05 ] ランダムな2バイト文字を生成するにはどうすればいいんでしょうか
671 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 17:27:16 ] 'ランダム' お約束すぎた?
672 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 21:06:49 ] >>669 GetWindowRect(ハンドル,Rect); GetDC
673 名前:デフォルトの名無しさん [2008/05/15(木) 13:49:45 ] calendarExと言うdelphiのカレンダーコンポーネント使ってるんですけど Appendで特別な祭日(2008/5/6)の追加できたんですけど削除の仕方がわかりません^^; どうやればいいのでしょう すれ違いだと思いますが罠にもすがる思いで質問します
674 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 14:18:30 ] 罠にすがられたいという事なんで レスしてみる calendarEx と言われても、誰もが付けそうな名前なんで判らん。 とりあえず一番簡単なのは、Createをメソッドとして読んで 再度 設定しなおしたら駄目? レジストリやファイルに保存してないならだけどさ
675 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 15:30:39 ] 罠??? 糸・・・藁だ 藁 なるほどその手もありましたか このソフトなんか10年くらいの前のソフトらしく四苦八苦してます ヒントくれてありがとうございます ;;
676 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 15:51:13 ] >>670 全2二バイト文字を抽出しておいて、そこからランダムに選んだらどうだろう。
677 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 20:20:00 ] うーん、2バイト文字ってのも良く分からないけど 何でランダムに抽出したいのか、その使い道が気になるにょ
678 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 19:09:21 ] >>670 文字コードにもよるが、SJISのランダムな日本語を得たいのかな?
679 名前:670 mailto:sage [2008/05/16(金) 19:55:14 ] >>676 それだけでかなりの時間がかかりそうですですね >>677 色々です、色々 >>678 そうです、SJISです
680 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 22:17:52 ] 結果はファイルにでもキャッシュしておけばいい。 SJISに割り当てられている全文字合わせても20KBくらいだし。
681 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 01:28:40 ] 無効な文字なら、アウトラインを取得できないかもしれないから、 それ使って判断できるかも。
682 名前:デフォルトの名無しさん [2008/05/17(土) 11:41:06 ] ListViewのMultiSelect=Trueの状態で ボタンを押すと選択行を1段下げる処理をしたいのですが <<2のところで「EAccessViolation クラスの例外」と出てしまいます また<<2だけの処理だと複数行選択してしまいます with ListView do begin Items[Selected.Index].Selected := False; //<<1 Items[Selected.Index + 1].Selected := True; //<<2 end; 他にもMultiSelectをFlaseにしてから リストをClearSelectionしてからなど試しましたが 同じようにエラーが出てしまいます 何かよい方法はないでしょうか?
683 名前:番組の途中ですが名無しです mailto:sage [2008/05/17(土) 11:59:35 ] >>682 >選択行を1段下げる MultiSelectだと飛び飛びで選択している場合もあるけど その場合は?
684 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 12:13:48 ] >>682 var hoge:integer; begin if listview1.itemindex<0 then exit; hoge:=listview1.ItemIndex+1; listview1.ClearSelection; listview1.Items[hoge].Selected:=true; listview1.Items[hoge].focused:=true; listview1.SetFocus; end; こういう事? MakeVisibleや行数を超える場合は知らない
685 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 14:06:00 ] >>682 <<1でTListItem.SelectedをFalseにしているのだから <<2のTListView.Selectedはnilになってる
686 名前:682 mailto:sage [2008/05/17(土) 14:58:57 ] >>683 >>684 >>685 あ!なるほど こんな感じで実装したら思ったようにいきました。 ありがとうございます!助かりました。 procedure TMainForm.ListMove(Next: Boolean); var i, idx: Integer; begin if Next then i := 1 else i := -1; with ListView do begin idx := Selected.Index; ClearSelection; Items[idx].Selected := False; Items[idx + i].Selected := True; Items[idx + i].Focused := True; end; end;
687 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 15:16:38 ] マルチセレクトでないなら ListView.ItemIndex := ListView.ItemIndex + 1 でいいんじゃない?
688 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 17:56:34 ] 指定した文字列がファイルとして作成できるか確認する方法はありますか? 例えばC:\Delphi.txtを渡すとTrue、C:\Delphi\を渡すとFalseを返す、などということです
689 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 18:06:56 ] ListViewについて質問です。 二つのカラムを作成し(A、B)、カラムAの1番目に文字列'1-1'、カラムBの1番目に文字列'1-2'、 カラムAの2番目に文字列'2-1'、カラムBの2番目に文字列'2-2'という形でリストを作成したいのですがどうすればいいでしょうか? よろしくお願いします。
690 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 18:17:14 ] >>688 ヘルプでFileCreate検索しろ >>689 ListViewの扱い方をまず学べ
691 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 18:21:32 BE:261735-PLT(12660)] >>689 var TestColumn: TListColumn; begin with ListView1 do begin TestColumn := Columns.Add; TestColumn.Caption := 'A'; TestColumn.Width := 100; TestColumn := Columns.Add; TestColumn.Caption := 'B'; TestColumn.Width := 100; with Items.Add() do begin Caption := '1-1'; SubItems.Add('2-1') end; with Items.Add() do begin Caption := '1-2'; SubItems.Add('2-2') end; end; end;
692 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 18:24:22 ] >>688 字面の正しさは正規表現でチェック '^([a-zA-Z]\:)|(\\)(\\{1}|((\\{1})[^\\]([^/:*?<>"|]*(?<!\[\])))+)$' ディレクトリが存在してるか、アクセス権があるか等々で失敗する要因が他にもあるから あまりがんばらずに、実際に書き込んでみてから例外拾って対応するのが定石。 >>689 for i := 1 to 2 do with ListView1.Items.Add do begin Caption := Format('%d-1', [i]); SubItems.Add(Format('%d-2', [i]); end;
693 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 18:30:13 ] >>690 ,692 FileCreateで行けるようですね、ありがとうございました
694 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 18:39:52 ] >>690 色々なサイトを回ったのですがSubItemの使い方について書いてあるところが見つかりませんでした。 >>691-692 ありがとうございます。 しかし、そのとおり実行してみるとカラムAの1番目に'1-1'、3番目に'2-1' カラムBの2番目に'1-2'、4番目に'2-2'と表示され、 カラムAの2,4番目は空欄、カラムBの1,3番目も空欄、というようになります。 どうすれば1番目と2番目とで納められるでしょうか?
695 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 18:48:41 ] 本当にすみません。 >>692 さんのコードでできました。お騒がせいたしました。 また、答えてくださった方ありがとうございました。
696 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 18:56:07 ] >>691 さんのコードもできました。 変に打ち間違えていたようです。 すみませんでした。
697 名前:デフォルトの名無しさん [2008/05/20(火) 06:08:00 ] >>696 うるせ馬鹿 死んで詫びろ
698 名前:デフォルトの名無しさん [2008/05/20(火) 06:10:06 ] >>690 お前も死ね
699 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 17:44:20 ] ActionListをダブルクリックすると編集ウィンドウが開きますが、 この位置や大きさをプロジェクト単位で覚えさせとくってできます?
700 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 00:32:41 ] 知らぬ間にPngDelphi氏んでたのね www.codeplex.com/PNGImage
701 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 07:14:42 ] >>699 フリーウェアでそんなのがありそうだな。 ソフトウェア板行って聞いてみたら。
702 名前:デフォルトの名無しさん [2008/05/21(水) 11:04:56 ] Memo1.Lines.LoadFromFile(FileName); とかでEUCのテキストを読み込むと文字化けしますが これを読めるように表示することってできるのでしょうか? テキストエディタだと見た目はeucで読み込んで表示し 保存もeucのまましてるように見えるけどあれは 内部でシフトJISに変換して表示して、保存時は再度eucに変換してるだけなんでしょうか?
703 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 11:35:28 ] TMemoryStreamで読み込んで nkf32.dllで変換して Memo1.Lines.LoadFromStream
704 名前:k [2008/05/21(水) 11:52:01 ] 正整数Nを読み込み、x^2≦N<(x+1)^2となる整数x、つまり√Nの近似値を求めるプログラムを、 sqrtなどの標準関数を使わないで作りなさいという問題なんですが。。。 わかりません。教えてもらえませんか?PASCALでやっているんですが。
705 名前:702 mailto:sage [2008/05/21(水) 11:54:14 ] >>703 やはりnkf32.dll等で自動判別して読み込んでsjisで表示するんですね ありがとうございます
706 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 12:04:07 ] >>704 良く知られた方法は 奇数を順に累計していったらという方法 function iSqr(n:Integer):Integer; var i,sum:Integer; begin sum:=0; for i:=0 to $B505 div 2 do begin sum:=sum+1+i*2; if sum>n then begin Result:=i;exit;end; end; Result:=i; end; 大きな数字で速度がある程度必要ならバイナリー法(2分検索を行う) さらに浮動小数点等で速度が必要ならニュートン法
707 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 12:05:02 ] あ div 2 は 不要だ。
708 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 14:20:05 ] 助けてください。 Form3で procedure TForm3.FormCreate(Sender: TObject); begin IniFile := TIniFile.Create(ChangeFileExt(Application.ExeName, '.ini')); try pass := IniFile.Readinteger('pass', 'Pno',0); finally IniFile.Free; end; edit1.text:=inttostr(pass); end; んでForm1で procedure TForm1.N1Click(Sender: TObject); begin Form3.ShowModal; end; しても Form3のEdit1にiniのPnoデータ表示されません(;;
709 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 14:50:47 ] わざわざForm3のOnCreateを使ってiniを読む理由は?
710 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 14:54:04 ] >>708 何が表示されるの? もしかして Edit1 って文字のまま? だとしたら例外が出てるんじゃないの?
711 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 15:12:04 ] >>709 Form3(バージョン情報の画面)に シリアルb入力してiniファイルを作成してます。 んで次回起動時にForm3を開くと iniファイルを読んでシリアルb表示させたいんです。
712 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 15:15:40 ] >>710 シリアルbニして数値を表示させています。 一度入力すれば問題ないのですが 起動一発目の読み込みがうまくいきません(;;
713 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 15:16:52 ] コピペした部分のコードにはおかしいところはなさそうな気がする。 edit1.text:=inttostr(pass); の下に ShowMessage(Format('edit1.text=''%s'', pass=%d', [edit1.text, pass])); って行を入れてメッセージダイアログが表示され、更に値が望んだものかどうかをチェックしてみたら。
714 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 15:22:28 ] >>713 ダイアログ表示せず・・・ FormCreate走ってないようです orz
715 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 16:03:00 ] >>714 プロジェクトのオプションでForm3を自動作成の対象から外して Form1のボタンイベントを↓に変えて実行したらどうなる? procedure TForm1.N1Click(Sender: TObject); begin Form3 := TForm3.Create(nil); Form3.ShowModal; Form3.Free(); end;
716 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 16:53:00 ] メニューアイテムにビットマップを動的に割り付けようと 下記のようなコードを書いたのですが、反応がありません(エラーも出ない) New1.Bitmap.LoadFromFile('C:\hogehoge\new.bmp'); 設計時にオブジェクトインスペクタから、あらかじめ bitmapを割り当てていた場合は、 その画像と入れ替わりに、ビットマップが更新されます インスタンスがないのかと New1.Bitmap := TBitmap.Create; New1.Bitmap.LoadFromFile('C:\hogehoge\new.bmp'); もやってみましたが、結果は同じでした ビットマップ読み込み後に、アップデート処理などが必要なのでしょうか?
717 名前:k [2008/05/21(水) 17:34:29 ] >>706 $B505ってなんですか?すみません。なにもわからないもんで・・・
718 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 18:35:45 ] >>716 新しいTBitmapオブジェクトを作ってTMenuItem.Bitmapに代入するとうまくいくよ NewBitmap := TBitmap.Create; NewBitmap.LoadFromFile('....'); New1.Bitmap := NewBitmap; NewBitmap.Free; // 解放を忘れずに
719 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 18:53:15 ] >>716 New1.Bitmap.LoadFromFile('C:\hogehoge\new.bmp'); New1.Bitmap.Canvas.Refresh;
720 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 19:22:32 ] copy関数で何文字目とか文字数とかの設定は 関数にできないんでしょうか?
721 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 19:26:32 ] 日本語でry
722 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 19:41:31 ] >>720 こういうこと? function TForm1.CopyEx(S:String; Idx, Cnt:Integer):String; begin Result := Copy(S,Idx,Cnt); end;
723 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 20:23:11 ] >>722 申し訳ないです。 関数にできないんでしょうか? は変数にできないんでしょうか? の間違いです。
724 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 20:30:50 ] 722に申し訳がるこた全くなし つうか変数使えるでしょ?たぶん
725 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 20:32:56 ] >>723 こういうこと? var Idx,Cnt:Integer; begin idx := 1; Cnt := 2; Edit2.Text := Copy(Edit1.Text, idx, Cnt); end;
726 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 20:45:03 ] >>725 a1 := edit1.text; a2 := strtoint( a1 ); data := copy( Edit2.Text,a2,1 ); ここで悩んでます。
727 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 20:49:51 ] はぁ?
728 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 20:50:09 ] >>726 edit1.textに数字を入力すれば普通に動くと思う ↓またはこうする a1 := edit1.text; try a2 := strtoint( a1 ); finally a2 := 0; end; data := copy( Edit2.Text,a2,1 );
729 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 20:54:58 ] a1 := edit1.text; a2 := Length( a1 ); data := copy( Edit2.Text, a2, 1 ); こーゆーこと?
730 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 21:16:39 ] いやあエスパーさんばっかいるなwww
731 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 21:24:18 ] >>728 そこはexceptだろ
732 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 21:26:00 ] >>731 細かいなw
733 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 21:26:02 ] >>731 strtointdefで
734 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 21:27:24 ] >>728 var bno:string; keta:string; k1,k2 : string; kk1,kk2 : integer; a1,a2 : string; procedure TForm1.Button2Click(Sender: TObject); begin a1 := copy(bno,kk1,1); a2 := copy(bno,kk2,1); edit2.Text := a1+a2; end; procedure TForm1.Edit2Change(Sender: TObject); begin keta := edit2.text; k1 := copy(keta,1,1); kk1 := strtoint(k1); k2 := copy(keta,2,1); kk2 := strtoint(k2); end; コンパイルは通るのに実行するとエラーが出ます(涙)
735 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 21:30:36 ] edit2でキー押したとたんに落ちたの?>>734
736 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 21:32:51 ] とりあえず書き方がうざすぎる
737 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 21:33:00 ] >>735 はい。 デバッガ例外通知が出たので 継続ってすると ”は整数ではありません と怒られました。
738 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 21:33:35 ] >>734 bnoには何が入ってるのよ
739 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 21:34:50 ] >>738 ほかのEditから取り込んだ数値が入ってます。
740 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 21:39:46 ] >>739 ↓この行にブレークポイント置いてketaの中身をチェックしてみ k1 := copy(keta,1,1);
741 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 21:43:16 ] >>740 やってみます。 ありがとうございました
742 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 21:45:58 ] とりあえず1度深呼吸してからヘルプのOnChangeを10000回ぐらい読んでこい>>741
743 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 21:47:05 ] Edit&数値処理の基本 var n: Integer; begin try n := IntToStr(Edit1.Text); ShowMessage(Format('%dの二倍は%d', [n, n * 2])); except ShowMessage(Edit1.Text + 'は数値ではない'); end; end;
744 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 21:50:31 ] >>740 >>742 >>743 EditChangeに入れてた式を ButtonClickに移動したらエラーが出なくなりました。 もっと勉強します
745 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 21:51:48 ] 例外がどこで起こってるかくらいてめぇで調べられないのかよ・・・ 嘆かわしいのぅ
746 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 21:54:31 BE:348454-PLT(12660)] >>744 頑張ってね
747 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 22:56:18 ] IDEで挿入されるもの以外小文字で書いてる人よく見るけど見づらくないのかな
748 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 23:16:44 ] 大文字と小文字が区別されないという特徴をうまく使っていると思っている方々なんですよ、わかりません。
749 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 04:34:37 ] TDateTimePickerのKindプロパティをdtkTimeにし、Formatプロパティに日付を表示するように設定した場合、 日付を編集し、その後に時刻を編集すると日付が元に戻ってしまうのですが、 OnChangeなどを監視するなどしか対策方法はないでしょうか ヘルプには 「Format プロパティに日付フィールドのコードが含まれている場合には日付部分も編集できます。」 と書いてあるのに・・・
750 名前:716 mailto:sage [2008/05/22(木) 10:04:22 ] >>718-719 ありがとうございました
751 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 19:06:30 ] Delphi5, TStringGrid にデータ表示 1レコード1行の場合OnDrawCellイベントで if Grid.Row = ARow then begin Grid.Canvas.Brush.Color := '紺色'; Grid.Canvas.Font.Color := '白色'; Grid.Canvas.FillRect(Rect); end else begin Grid.Canvas.Brush.Color := Grid.Color; Grid.Canvas.Font.Color := Grid.Font.Color; Grid.Canvas.FillRect(Rect); end; として、フォーカスが当たっているように見せています。 1レコード2行の場合はどうすればいいでしょうか? Grid.Row が2の倍数で ARow = Grid.Row + 1 Grid.Row が2の倍数以外で ARow = Grid.Row - 1 の条件の時にも 背景・前景色を変更したけど、フォーカス色が残ってしまう場合があります。 OnDrawCell内で Grid.Repaint; を実行するとチラつきます。 Grid.Invalidate; だと さらに チラつきっぱなしです。 複数行フォーカスってどうやるんでしょうか?
752 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 19:33:21 ] >>751 一行が二行に見えるように描画すればいい。
753 名前:デフォルトの名無しさん [2008/05/23(金) 10:53:01 ] Delphi過去ログ検索が見つからないのですが、 もしかして畳んでしまわれたのかな・・・? leed.issp.u-tokyo.ac.jp/~takeuchi/delphi/nsearch.cgi
754 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 11:16:34 ] >>753 みたいです。MLでも話題になっています
755 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 15:10:14 ] Webサーバのあるディレクトリのファイル名の一覧を FindFirst, FindNext みたいに HTTPで取得する方法ってあります?Delphi7 + Indy9 ですけど
756 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 16:55:39 ] お前は行ったことの無い店の商品が分かるのか? そういうことだ でも店によっちゃホームページとかで公開してる場合もある それと同じようにファイル一覧が見れるページもある
757 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 17:56:19 ] 出来たらCGIがスケスケで大問題だね
758 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 17:56:57 ] >>753-754 MLにご本人からポストがありましたがWeb鯖が停止しているだけのようで。 閉鎖の予定は無いそうですよ。
759 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 19:08:33 ] >>756 >>757 あ、自分のサーバーなんです。ユーザーに配るプログラムから、 特定のディレクトリのファイルを全部 GET でダウンロードできるように したいと思いまして(そこに置くファイルは変化します)。 でも出来ないみたいなのかあ。
760 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 19:12:38 ] >>759 それなら、ファイルの一覧を取得して返すCGIを置いといて、それにアクセスすればいいと思うよ
761 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 19:31:11 ] 自鯖ならFTPか何かで取得してもいいんじゃ?
762 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 20:34:51 ] あ、そうか。CGI方式もFTPでもいけそうかあ。 ありがとう。FTPはパスワード変更しそうなんでCGIで検討してみます。 # 最初の質問、説明不足でスミマセンでした。
763 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 23:13:48 ] TComboBoxでドロップダウンのアイテム選択しているとき、 DELキーを押したら選択アイテムをItemsからむ削除したいんだけど出来るかな? ブラウザの検索履歴を消すイメージで
764 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 23:18:07 ] そりゃできるだろ
765 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 23:21:07 ] >>764 どーやるの?
766 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 23:29:11 ] どこがわからないんだよ
767 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 23:29:52 ] こいつのがんばり方が正直よくわからない
768 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 23:55:45 ] TComboBoxでやるのは意外と大変かもよ。 ブラウザは独自のComboBoxもどきでしょうね。
769 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 00:04:18 ] >>766 itemsの中身がペロッと出て、 そのペロッと出たリストを選んでいる状態で、 DELキーを押したときの処理なんだけど… 説明がヘタですまん
770 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 00:08:32 ] ボタンイベントを監視してDELが押されたら現在選択中の番号取得してそこをリストから削除すりゃーいい話だろう
771 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 00:12:22 ] ん?よくわからないんだがこれじゃだめなの? procedure TForm1.ComboBox1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); var i:integer; begin if key=VK_DELETE then for i:=0 to combobox1.Items.Count-1 do if combobox1.Text=combobox1.Items[i] then combobox1.Items.Delete(i); end;
772 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 00:15:18 ] あぁItemIndex使えばいいか
773 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 00:18:20 ] keyPressだとうまく行かなかったけど、KeyDownならうまく行きそうだね >>771 ありがとう
774 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 00:36:26 ] たびたびすいません >>771 でうまくいったと思うんだけど、 ペロッと出してない状態でも、textにitemsと同じ文字列が入ってる状態で DELキー押すとitemsから削除されちゃうのは、しょうがないですかね?
775 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 00:39:13 ] >>774 DroppedDownは?
776 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 00:43:24 ] >>775 それはイベントですか? DroppedDownの意味がわからなくてすいません
777 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 00:44:25 ] ヘルプは?
778 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 00:47:27 ] >>777 ヘルプに乗ってました ↓こうしたらうまくいきました 助かりました! if (ComboBox1.DroppedDown) and (key=VK_DELETE) then begin
779 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 00:53:43 ] ループしてる時に固まることがあるのでUpdateWindowを毎回やってるのですが、それでも固まってしまいます UpdateWindowよりも確実な方法はあるのでしょうか? Application.ProcessMessageは遅い印象があるので使いたくないです
780 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 00:56:39 ] >>779 スレッドに分ける
781 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 01:05:51 ] >>780 なるほど、マルチスレッドにはあまりしたことがないので思いつきませんでした ですがループで毎回メインフォーム弄ってたらそれも遅くなったりしませんかね?
782 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 02:02:11 ] >779 > Application.ProcessMessageは遅い印象があるので使いたくないです 印象だけで排除するのはどうよ?つかたぶんその印象は間違っている。
783 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 03:52:27 ] >>781 自分で考えてください
784 名前:デフォルトの名無しさん [2008/05/24(土) 07:08:07 ] >>779 ・マルチスレッド化する ・Sleep();を入れる マルチスレッドにしてもWait入れたりSleepしないと重くなるけどな
785 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 08:37:59 ] 特定のコンポーネントの表示を頻繁に行いたいなら ListBox1.Items.Add('foo'); ListBox1.Repaint みたいにすればいいし、ウィンドウのリサイズなんかの操作が固まるのを避けたいなら Application.ProcessMessagesかスレッド使うしかない。 どうやるにしろ表示の更新は重いのには変わりない。
786 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 08:39:45 ] ListViewならBeginUpdate / EndUpdateで大幅に高速化できるな
787 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 15:08:40 ] Invalidateしないと、UpdateWindowだけでは更新しなかった気がするのですが。
788 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 17:54:38 ] 質問させてください。(2つに分けます。長くて申し訳ありません) 次のような宣言をされた DLL があります。(Microsoft Visual C++ 6.0) typedef struct { SOCKET fd; /* Socket Handle */ struct sockaddr_in m_lcd; struct sockaddr_in m_para; struct sockaddr_in m_serial; timeval timeout; int registered; } PICNIC; extern "C" { __declspec(PICNIC_DLL) PICNIC *PN_open(char *ip, u_short lcd_port, u_short para_port, u_short serial_port); __declspec(PICNIC_DLL) void PN_close(PICNIC *pn); __declspec(PICNIC_DLL) int PN_setwhole(PICNIC *pn, int addr, int cn, ...); } つづく
789 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 17:55:32 ] >>788 のつづき この DLL にアクセスしたくて Delphi 7 でこのようにプログラムを書いてみましたが uses WinSock type TPICNIC = record fd: TSocket; m_lcd: sockaddr_in; m_para: sockaddr_in; m_serial: sockaddr_in; timeout: timeval; registered: Integer; end; function PN_open(ip: PChar; lcd_port: Word; para_port: Word; serial_port: Word): TPICNIC; cdecl; external 'PICNIC.DLL' name 'PN_open'; procedure PN_close(pn: TPICNIC); cdecl; external 'PICNIC.DLL' name 'PN_close'; function PN_setwhole(pn: TPICNIC; addr: Integer; cn: Integer): Integer; cdecl; external 'PICNIC.DLL' name 'PN_setwhole'; C での SOCKET 型が Delphi では TSocket と宣言すれば正しいのかわからないです。(Longint ?) それと、PN_setwhole(PICNIC *pn, int addr, int cn, ...); の最後の「...」を Delphi では、どのように記述すればいいのかわかりません。 どなたか教えていただけないでしょうか?
790 名前:デフォルトの名無しさん [2008/05/24(土) 19:02:15 ] 少し書き間違ってました。 function PN_setwhole(pn: TPICNIC; addr: Integer; cn: Integer; arg: array of Integer): Integer; cdecl; です。DLL 側のソースで va_start(arg, cn); for(i=0;i<cn;i++){ mask = va_arg(arg, int); or = va_arg(arg, int); frame[3+i*2] = mask; frame[3+i*2+1] = or; } va_end(arg); と記述されています。
791 名前:デフォルトの名無しさん [2008/05/24(土) 19:46:48 ] >>758 あせったわw MLみたら、2chの書き込みまで引用されててひどい 誰だよ武内さん語ったの・・・いたずらにしてはひどい話だよ
792 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 20:07:10 ] あれは、たかだか2chのソースでしかない話を引用した方も悪い
793 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 20:17:59 ] くだらない筆問ですが 下記サイトで言語習得を目指そうと思います 全てを呼んだわけではありませんがサイトから抜粋 Delphiの Object Pascal という言語をつかって、Windows 95/98/2000 が DLL (ダイナミック・リンク・ライブラリ)として提供している Win32 API (アプリケーション・プログラミング・インターフェース)という 関数群を呼び出してウィンドウズアプリケーションをつくる方法を解説しています 現在仕様しているソフトは無償版Turbo Delphiです RAD環境などサイトとは異なる点がいくつかあると思いますが問題なく勉強していけるでしょうか? これだけのボリュームと内容なので当事はかなり有名な人だったのでしょうね ttp://homepage2.nifty.com/Mr_XRAY/Halbow/ShousaiIndex.html
794 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 20:21:51 ] >>789 "..."は末尾にvarargsを付ける。詳しくはヘルプを読め SOCKETはたぶん同じ。あとTPICNICをそのまま使うんじゃなくて type PPICNIC = ^TPICNIC としてPPICNICを使わないとだめ(ポインタだから)
795 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 20:45:52 ] 実体を渡す事が多いようなら 参照にしてもいいと思うよ (var pn: TPICNIC; みたいにさ
796 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 21:18:38 ] ListViewに何万個ものアイテムを追加するとClearした時やフォーム自体を終了した時にものすごく時間がかかるのですが、 時間のかからないClearの方法はないでしょうか?
797 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 21:45:26 ] 仮想リストビュー使っとけ めちゃ軽くなる
798 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 21:56:23 ] TreeViewも標準で仮想にして欲しい
799 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 22:12:19 ] >>797 ありがとうございます。助かりました!
800 名前:デフォルトの名無しさん [2008/05/24(土) 22:45:31 ] >>793 入門にはお勧めしない 勉強していくうちに言語仕様の勉強にはなるだろうが、 そのサイトでやっているのはDelphiで主に使われるライブラリ、VCLとは真逆の方向性だから。 ここに書いてあるように、Delphiの本流ではないのでいばらの道だよ homepage2.nifty.com/Mr_XRAY/Halbow/Chap00.html#object
801 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 22:50:52 ] >>794 ,795 とりあえず、794 さんの方法で試したところ、上手く行きました。 ありがとうございました。 特に varargs は存在そのものを知らなかったので 勉強になりました。
802 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 00:04:22 ] CreateUpDownControlでアップダウンコントロールを 直前に作ったEditに関連付けて作ったのですが、 ウィンドウスタイルにUDS_ARROWKEYSを設定し、矢印キーで位置を移動したら アップダウンコントロールが凹んだまま元に戻らないのですがこれは直せるのでしょうか? アップダウンコントロールをクリックすれば元に戻るのですが・・・ また、C++で試したところ問題はなかったのですが、なぜDelphiでのみ症状が発生するのでしょうか?
803 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 11:55:39 ] Webページの更新をチェックしたいんですが、サーバーにあるファイルの更新日時は どうすれば取得できるのでしょうか?
804 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 12:39:24 ] >>803 HEADリクエスト投げてLast-Modifiedでも見れば?
805 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 13:18:49 ] >>804 出来ました!ありがとうございます。
806 名前:デフォルトの名無しさん [2008/05/27(火) 19:21:11 ] 「'」を文字列で使いたい場合どうするんでしょう? コードとして解釈されてしまいます。
807 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 19:26:59 ] ''''
808 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 19:33:53 ] >>806 Chr(39)
809 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 23:46:15 ] 今から始めるなら Delphi6とTurbo Delphiどっちがいいですか?
810 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 23:48:07 ] ガゼンDelphiだろ
811 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 05:00:52 ] 両方ともDelphiだろw
812 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 07:20:01 ] TMediaPlayerコンポーネントを使ったソフトでmp3ファイルを開こうとすると 「指定されたファイル名拡張子からデバイスの種類を判断できません」 というエラーメッセージがでるという不具合報告がありました ttp://d.hatena.ne.jp/tomoemon/20051031/p4 ↑を読むと、DeviceTypeを明示的に指定する必要があるみたいなんですが "MPEGVideo"に相当するTMPDeviceTypesの値はどれでしょう? Delphi6を使っているのですが、もしかして対応してなかったりするのでしょうか?
813 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 13:07:24 ] >>812 DeviceTypeはdtAutoSelectでmp3再生できたけど?(Del6) 書き込む前に自分で試してね
814 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 13:46:59 ] dtAutoSelectでも、↓に拡張子とデバイスタイプを結びつけるキーが無いと>>812 のエラーが出る。 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\Current Version\MCI Extensions (NT系) 不具合報告を送ってきた人の環境には、それが無いか別の値になってるのかもしれない。 ちなみにTMediaPlayerに"MPEGVideo"を指定するのはソースを見る限り無理だと思う。
815 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 20:07:25 ] あ、オレのアプリ(Del7)のMediaPlayer使ったBGM機能もいつの間にか mp3再生できなくなってる… wavで使ってきたから全然気が付かなかった。 開発時は再生できてたのに何でレジストリ変わっちゃったんだろ!? それよりクレーム全然無いってのも、悲しいもんだね
816 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 21:13:39 ] BCB使いだけどTMediaPlayerは使い勝手悪かったから、自分でDirectShow叩いてプレイヤーコンポ作っちゃったなぁ IGraphBuilderインタフェース作成して、そこからコントロールとかビデオウィンドウとかの必要なインタフェース呼び出すだけだから 最低限の物なら50行も行かないと思う。 Delだとヘッダ使えないから面倒そうだけど。
817 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 21:26:13 ] >>813 不具合報告がありましたってんだから環境によるものだろ 自分の環境が全てではないぞ 不具合報告にはOS書いてなかったのか? 95とかだったのでは?
818 名前:812 mailto:sage [2008/05/28(水) 22:11:31 ] >>814 あやや、アプリ側で吸収してあげるのは無理っぽいですか レジストリの値をいじってもらうのには抵抗ありますが致し方ないですな >>815 反応ないと寂しいのは、あるある 無茶なクレームつけられるのは困るけど、 今回の人はきちんと対話ができる人だったんで 対応するほうもやる気がでます >>817 いや、XP Proらしいっす ただ、気になる点があるとすればMP3に関連付けられてるのが Media Player Classicだってことでしょうか もしかしたら、そのせいでレジストリにキーが登録されなかったのかも レジストリの値をチェックしてもらう方向で対応してみようかと思います 皆様ありがとうございましたm(__)m
819 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 22:20:35 ] >>816 つwww.clootie.ru/delphi/download_dx92.html
820 名前:デフォルトの名無しさん [2008/06/01(日) 10:07:41 ] >>817 うるせ、バカ
821 名前:デフォルトの名無しさん [2008/06/01(日) 17:22:38 ] BDS2006 + Vistaのインストールに関する質問です。 bousyo.blog45.fc2.com/blog-entry-116.html の手順に従ってインストールが完了しました。 (アップデートはまだです) まずは、認証登録をしようとしたのですが、 インターネット経由では、「登録サーバーに接続できません。」で× dn.codegear.com/article/33586 によると、プロクシのせいとかかれていますが、当方はプロクシが不要の環境です。 次に、webによる登録で登録を無事にすませ、 認証用テキストがかかれたメールを受取、 そのreg722.txtというファイルをホームフォルダ(.borlandの上位フォルダですよね?) に突っ込みましたが、 「Borland Developer Studio for Windowsは動作を停止しました。 問題が発生ししたため、プログラムが正しく動作しなくなりました。 プログラムは閉じられ、解決策がある場合はWindowsから通知されます。プログラムの終了」 とダイアログが出て、まったく起動ができません。 管理者権限で実行しています。 大変困っております。 うまく起動する方法はありませんでしょうか?
822 名前:821 [2008/06/01(日) 19:31:20 ] アップデート1、2と当てて、ホットフィックス全部当てたら起動しました。 実は、アップデート2が同じような落ち方をして、 うまくインストールできなかったのですが、 UAC切って、DEPも切ったら当てられました。 おさわがせしました。 ありがとうございました。
823 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 20:08:31 ] あたらしいデルファイはでるんかい?
824 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 21:04:25 ] で、出るふぁい!
825 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 10:15:44 ] ボタンをクリックするたびに 1 2 4 8 ・ ・と2乗の数を表示させるプログラムを作りたいのですが、 {$R *.dfm} var s: integer; str: string; procedure TForm1.Button1Click(Sender: TObject); var i :integer; begin s :=1; for i :=1 to 44444444 do s := i * 2; str := IntToStr(s); Memo1.Lines.Add(' = ' +str); end; end. こんな風にしてやったら失敗しました。他にも試したのですが、ループ制御変数がどうとか出てできませんでした。 どなたか教えてください。
826 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 10:27:05 ] DelphiのGUIプログラミングはプログラミングの仕方がちょっと独特だから最初は戸惑うかもな type TForm1 = class(TForm) Button1: TButton; Memo1: TMemo; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private 宣言 } num: Integer; // <- 変数はここ public { Public 宣言 } end; implementation procedure TForm1.FormCreate(Sender: TObject); begin // 変数の初期値はここで設定 num := 1; end; procedure TForm1.Button1Click(Sender: TObject); begin // ボタンが押されるたびに呼び出される // なのでループを書く必要はない Memo1.Lines.Add(IntToStr(num)); num := num * 2; end; end.
827 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 11:14:03 ] >>826 ありがとうございます。
828 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 15:49:25 ] DeviceIoControl(Handle, FSCTL_SET_SPARSE, nil, 0, nil, 0, BytesReturned, nil); スパースファイルを作りたいんですけど 未定義の識別子 : 'FSCTL_SET_SPARSE'となります。 何をインクルードすればいいんでしょうか? Delphi6 personal です。
829 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 16:00:43 ] RTLには含まれていないので自分で定義してください。
830 名前:828 mailto:sage [2008/06/03(火) 16:57:30 ] >>829 ども、わかりました。
831 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 22:11:26 ] >>825 > 1 > 2 > 4 > 8 > ・ これは2乗ではないな、 1 を 起点に x2 していってるだけ > ボタンをクリックするたびに なら、ボタンクリックだけでいきなり44444444回もループしたらダメだろ? Button1のTagプロパティに1をセットして、 procedure TForm1.Button1Click(Sender: TObject); begin Memo1.Lines.Add(IntToStr(Button1.Tag)); Button1.Tag:=Button1.Tag*2; end; これでいいんではないか?
832 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 23:10:46 ] 2^0 = 1 2^1 = 2 2^2 = 4 2^3 = 8 1^2 = 1 2^2 = 4 3^2 = 8 の違いか。
833 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 23:43:13 ] ぢゃ、こうか? Button1のTagプロパティを0に戻して Memo1.Lines.Add(FloatToStr(IntPower(2,Button1.Tag))); Button1.Tag:=Button1.Tag+1;
834 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 09:34:00 ] >>825 >for i :=1 to 44444444 do s := i * 2; >>831 が >なら、ボタンクリックだけでいきなり44444444回もループしたらダメだろ? と、つっ込んではいるものの、なぜ「44444444」と記述したのか? それを知りたい。
835 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 10:41:03 ] 825です すいません。2のn乗でした。 444444としたのはとにかくどこまでも2倍ができるように作りたかったからです。
836 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 11:03:00 ] それならforよりもwhileじゃね?
837 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 11:13:03 ] forつかって書いてみなさい的な課題だったので・・・。 バリバリ初心者なのでわからないのですが・・・。
838 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 11:30:05 ] なんだよその課題 教師アホすぎてワロタw
839 名前:834 mailto:sage [2008/06/04(水) 11:53:59 ] >>835 とりあえず納得、ありがと。
840 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 21:13:37 ] for でも while でも case でも if でも何でもいいじゃん 目の前の問題が解決できりゃ万々歳 でしょ? とりあえず Delphi 実行できる環境があるんなら何でも試してみたら いいじゃん。それで出来なかったらガンガン質問すりゃいいじゃん! このスレ、結構ガンガン突っ込む人多いみたいだから安心だよ。
841 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 21:39:52 ] ボタンをクリックするたびに、*2するんじゃないのか? forの中で、キー入力待ちするの? それとも、forで一気に*2していくのか? 見えないぞ。
842 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 21:40:58 ] 2レスで解決してるのに引っ張るねぇ
843 名前:825 mailto:sage [2008/06/04(水) 22:28:29 ] 先生が見せてた見本ではクリックするたびに2,4,8,16,とMemoに表示されていってました。 長引かせてしまいすいません; プログラム板の人は親切な人が多いですね。 ありがとうございました。これからは授業ちゃんと聞きます。 課題は途中経過を書いて出します。
844 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 03:17:04 ] こういうことじゃね? procedure Form1.Button1Click(Sender: TObject); var i,j: Integer; begin j := 1; // 計算用変数jの初期値として1を入れておく with Button1 do begin Tag := Tag + 1; // ボタンを押した回数をTagに記録 for i := 1 to Tag do// ボタンを押した回数分jに2を掛ける処理 j := j * 2; end; Memo1.Lines.Add(IntToStr(j)); end;
845 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 15:56:11 ] これくらいでwith使うな OnCreateでButton1.Tag = 1; Button1.OnClickで Button1.Tag = Button1.Tag * 2; Memo1.Lines.Add(IntToStr(Button1.Tag)); 又は Button1.Tag = Button1.Tag + 1; Memo1.Lines.Add(IntToStr(Math.Power(2,Button1.Tag)));
846 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 18:09:56 ] >>826 でいいじゃん。 numはグローバル変数にして、 var num: Integer = 1; のほうが楽かも。
847 名前:844 mailto:sage [2008/06/05(木) 18:13:04 ] >>845 Button1のNameプロパティ変えたりすることを考えると、 どうしてもwith使ってしまう悪い癖は抜け切れそうに無い。 Form1のプロパティを参照したい時に面倒になるのは承知済み。 この場合、複数のボタンで使いまわし出来るよう with TButton(Sender)の方が良かったけどね。 >>837 に従って無理やりfor文を入れたけど、 for文を使わなくても良いのなら>>845 でFA。
848 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 19:52:52 ] すごい初心者で申し訳ないんのですが、 dn.codegear.com/jp/article/36347 ここを参考にデータベースでなんか作ってみたのですが これをコンパイルしたときに、interbaseを起動していないとエラー落ちしてしまいます。 たとえばexeを配布するときにはどうしたいいのですかね。 すごくしょうもないこと言っていたらすいません。
849 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 20:11:47 ] >>848 そりゃInterbaseに接続して処理するんだからしょうがない。 それと配布するとなるとインストール先にもInterbaseのライセンスが必要になる。 単一アプリケーションの内蔵データベースとしてしか使わないんであれば、Interbaseの代わりにEmbeded Firebirdの使用をおすすめ。 FirebirdはInterbase6.0互換だからVCLのInterbase接続コンポがそのままつかえる。 ※IDEからデバッグ実行したときにカレントディレクトリとexeファイルのパスの違いで問題起きるので、 アプリケーションの初期化のところでexeファイルの場所にSetCurrentDirectoryを使ってカレントディレクトリを変更しておくといい。
850 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 21:35:19 ] A-Zの26人の人がいて、8人くらいでじゃんけんをしたとする。 その結果を書いたtxtがあって、 1.自分の勝率(自分はAとする) 2.自分のBに対する勝率 3.自分が相手にすると勝率が高い人TOP5 4.自分と一緒に勝つ確立が高い人TOP を出力したいのですが、全然ナにやっていいかわからないで困っています。 1.テキストをTmemoに取り込んだ 2.勝った人の1人目をlistboxに出力してみた、うまくいかなかった 3.データベースは使い方がよくわからなかった 4.試合数だけ数えてみた:これはできた 5.やりたいことをするために何をすればいいのかわからなくなってきた いまここ
851 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 21:42:30 ] > うまくいかなかった そのうまくいかなかった部分を言おうよ
852 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 22:10:50 ] >>851 ReadInがうまく使えなかったw
853 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 22:12:48 ] それじゃ誰にも答えてもらえないよ さようなら
854 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 23:02:58 ] >>850 文字列解析の課題かな。 txtファイルがどんなのかわからないと答えようがない。 csv形式なら、TStringList.CommaTextを使ってデータを切り分けれる。
855 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 23:36:43 ] プログラム以前の問題でしょう。 やるべきことを整理して箇条書きにして、一歩一歩解決していくしかないでしょう。 質問が具体的じゃないと、具体的に回答できるはずもありません。
856 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 00:44:00 ] txtをどっかにうpすれば誰かやってくれそうなもんだけどな
857 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 01:43:47 ] 書き方悪くてすいません。850です。 irsj.bestplaying.com/modules/result/ ここのページのhtmlを取得してやろうと思ったんですが、まずはテキストと思い、 39274 フリー@(´゚ω゚`)ナッツエレガント 2008/06/06 01:30 Win genzouzi(1648) satou(1717) Molt(1437) hujisan(1438) Lose masa4_(1864) hyakusiki(1152) parusah(1610) against(1600) Upload コメント (0) こんな感じで出力されました。 これが一個のレコード?になります。なのでCSVではないです。 で、フローチャートを考えてみたのですが、それがまずわからなくて悩んでいます。
858 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 03:12:34 ] >>855 を1000回読んでから出直して来い
859 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 20:44:15 ] 何言ってんのかさっぱりわからんな
860 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 22:25:14 ] htmlから必要なデータを抜き出したいのか。 StrPosを使って、'>Win<'を探す。 それ以降にある '</a>'を探す。 名前は >mog</a> となっているから、>から<まで抜き出す。 こんな感じでやればいいよ。
861 名前:デフォルトの名無しさん [2008/06/07(土) 10:11:55 ] >>859 お前がバカだからだよ
862 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 13:16:05 ] 俺ほどぢゃないだろ
863 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 19:20:24 ] つうかこんなスレ、リキ入れて読んでられないからさ〜 酒のみながらみてるときもあるし… できるだけわかり易い文章か母性本能くすぐりーの感じで書かないと
864 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 22:15:08 ] >>863 MLでやれ
865 名前:デフォルトの名無しさん [2008/06/07(土) 23:31:06 ] 質問です。 壁紙を手前に表示するソフトを作ろうと思っています。 そこで TForm と TImage を半透明にして常に手前に表示してマウスなどの入力は背後のウィンドウに渡すようにしたいのですがどうすればできますか?
866 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 23:36:04 ] GetNextWindowで次にあるウィンドウ出して送ればいいと思う
867 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 00:21:32 ] >>866 ありがとうございます。GetNextWindow を調べてみます。
868 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 06:48:50 ] Delphiのフォームに画像はりつけて全画面かつ最前面表示して 後ろのExcelやExplorerを自然に操作するってことか。 フォームへのウィンドウメッセージをすべての他の適切なウィンドウに再送信しまくるなんて かなり面倒なことをしないといけなさそうだな。たぶん挫折するだろう。 付箋紙のイメージ表示機能で我慢しておいた方がいいんじゃね。
869 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 08:52:20 ] >>865 つ SetLayeredWindowAttributes つ WS_EX_TRANSPARENT
870 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 08:57:30 ] ここの人、親切。 でも「付箋紙のイメージ表示機能で我慢」になりそうです。 クリックすると逃げるようにして邪魔にならないようにしています。 でも多謝。
871 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 13:48:56 ] delphi6なんだけど ListViewでオーナーデータだとマルチセレクト出来ない? 出来ない場合出来るようにする方法とか教えてください
872 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 23:00:30 ] TClientSocketでデータを数値として受け取るにはどうすればいいんでしょうか? Ordで大丈夫なんでしょうか
873 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 23:32:36 ] バイナリデータを受信したとき、ってこと?1バイトならOrdでいいかな。複数バイトならバイトオーダの考慮も 忘れずに。
874 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 23:58:47 ] 普通にテキスト化して送ったら
875 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 23:29:59 ] TListViewからの派生クラスを書いているのですが、縦スクロールバー出現によるクライアントエリアの横サイズ変更に追従するには どのメソッドで変更に追従する処理をすればよいのでしょうか? 派生クラスで実装するので、できればメソッドのオーバーライドで処理したいです。
876 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 07:19:56 ] RGB0~255を三次元空間に見立てて その中に数十個のピクセルをFormなりImageなりに表示するのを支援してくれる ライブラリってないですか? DirectXやOpenGLほどハイパフォーマンスで大げさなのじゃなくて ちょっとしたグラフライブラリ程度のもので。
877 名前:デフォルトの名無しさん [2008/06/10(火) 13:53:10 ] いっていることがわからないのだが、ボクセルということだろうか
878 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 14:25:41 ] 色立体とかいう物を表示したいんじゃなかろうか。
879 名前:デフォルトの名無しさん [2008/06/10(火) 23:32:26 ] >>877 バカか?
880 名前:デフォルトの名無しさん [2008/06/10(火) 23:33:25 ] >>870 シナ人失せろ
881 名前:デフォルトの名無しさん [2008/06/10(火) 23:37:13 ] スマン ど忘れして しかも ググッテも出てこない 範囲指定して字下げするのってどうやるんだっけ? 忘れちまった・・・・・ 年だ・・・・
882 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 23:44:14 ] >>881 Ctrl+Shift+I/U フリーカーソル無効化してるならTab/Shift+Tabでもできる。
883 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 23:58:55 ] >>882 やるね!! まあああああああああああベラス!! ありがとう!! フリーカーソル?・・・・ググッタ!コンポーネントかぁ メモメモ ついでに、選択したところ全て注釈にする方法わかりますか? これも出来たはずなんだが・・・
884 名前:デフォルトの名無しさん [2008/06/11(水) 00:13:32 ] テプラ作った大切にするぉ サンキュウ デルファイ マイスターズ
885 名前:デフォルトの名無しさん [2008/06/11(水) 09:34:41 ] >>879 バカっていうんなら、人にわかるように説明しろよ
886 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 09:43:27 ] グラフライブラリって書いてあるじゃんw
887 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 10:35:03 ] TChartって2次元までだっけか?
888 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 13:39:59 ] >>883 選択状態にして選択範囲を右クリックしてみるといいよ。 ちなみに、Ctrl+/で出来る。
889 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 14:29:00 ] TlistBoxを3つ並べてスクロールを同期させたいんだがどうすればいい?
890 名前:デフォルトの名無しさん [2008/06/11(水) 14:36:13 ] >>886 いやそこの前の話
891 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 19:59:06 ] >>889 OnScrollで他もスクロールさせる。
892 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 20:38:46 ] >>888 ふむふむ ありがとう テプラットきます
893 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 12:31:07 ] >>888 それ、D7で出来ないみたい あと、いつの間にか右クリックして「しおり」のテンキーの数字が効かなくなってるし
894 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 21:33:02 ] >>893 うん やってみた ターボの方は出来るんですけれど 7はダメでした 報告ありがとう でも 7でもやる方法があった様な気がするが はて 勘違いかなあ
895 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 23:12:29 ] MainMenuについて聞きたいんですが 項目の右側に勝手に(Z)と付くのはどうにか出来ませんか?
896 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 00:38:15 ] >895 AutoHotKeysをmaManualに。
897 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 00:50:17 ] >>896 ありがっとう!
898 名前:デフォルトの名無しさん [2008/06/13(金) 09:30:41 ] >>894 GExpertsのマクロでコメントアウトなどできた気がするよ
899 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 10:59:51 ] homepage2.nifty.com/Mr_XRAY/Delphi/plSamples/790_ListView.htm#04 ここの通りにやってlistviewのカラムクリックでソートができたのですが カラムをもう一回クリックしたら逆順ソートになるようにしたいのですが、どうしたらいいか教えてください。
900 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 11:09:25 ] >>899 フラグでも立てて、Compareに-1掛ければいい。
901 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 11:17:28 ] >>900 それはわかるんですけど、そのフラグがわからんのです。 そもそもcompareイベントの仕組みがよくわからなくてコピペしたのがいけないんですが・・w
902 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 11:39:40 ] デバッガで追いかけろ
903 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 11:46:29 ] 前に書いたソートサンプル。適当に解読してくれ。 { Private 宣言 } ColumnToSort: Integer; LastColumnToSort: Integer; Ascending: Integer; procedure TForm1.FormCreate(Sender: TObject); begin ColumnToSort := -1; LastColumnToSort := -1; end; procedure TForm1.listviewColumnClick(Sender: TObject; Column: TListColumn); begin ColumnToSort := Column.Index; if (Ascending > 0) and (ColumnToSort = LastColumnToSort) then Ascending := -1 else Ascending := 1; LastColumnToSort := ColumnToSort; listview.AlphaSort; end; procedure TForm1.listviewCompare(Sender: TObject; Item1, Item2: TListItem; Data: Integer; var Compare: Integer); begin Compare := ( StrToInt(Item1.SubItems[ColumnToSort-1]) - StrToInt(Item2.SubItems[ColumnToSort-1]) ) * Ascending; end;
904 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 11:59:15 ] >>903 助かった。thx! コピペでできてしまったので、次使うときのために解読しとくわ。
905 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 13:44:41 ] コピペだけでアプリ一本作りそうな勢いだなww
906 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 15:35:05 ] >>905 教科書はネットのみだからおのずとコピペが多くなってしまうのは仕方ない気がw アプリはもうできてて今は改善している段階でふ。
907 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 01:34:51 ] ifの条件が複数あるときはVBのようにandで繋ぐことは出来ないんでしょうか?
908 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 01:38:27 ] そんなの入門サイトに乗ってそうだけどなあ 回答としては「出来る」よ
909 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 16:33:57 ] listviewで表を作っているんですが ある条件を満たしたときに画像を文字の後ろに付け足したいのですがどうすればいいですか? column1,column2,・・・ 名前,数学の点数,国語の点数, で、数学の点数や国語の点数が80点を越えたときに 各々数学マーク.bmp、国語マーク.bmpを名前の後ろに付け足したいという意味です。
910 名前:デフォルトの名無しさん [2008/06/14(土) 17:20:45 ] >>907 自分で答えを書いているじゃないかw
911 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 17:47:55 ] >>909 OwnerDrawするしかないと思う
912 名前:デフォルトの名無しさん [2008/06/14(土) 18:59:06 ] listviewのownerdrawか・・・激しく挫折しそうだ・・
913 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 20:38:35 ] >>907-908 演算子の優先度がVBと違うからできないと思ったのかもしれないな if (条件) and (条件) 〜 みたいに括弧で括らないといけないから
914 名前: ◆XcB18Bks.Y mailto:sage [2008/06/15(日) 01:09:49 ] >>912 ListViewのOwnerDrawはOwnerDataを使っていなければそんなに難しくないと思います。 OwnerDataを使っているならHeaderコントロール+ListBoxマジオススメ。
915 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 11:58:17 ] ListViewやListBoxの内容は直接編集出来ないんでしょうか?
916 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 12:36:59 ] クリックしたときに、カーソル直下のセルに内容入れたTEdit生成して、TEditがフォーカス失ったらTEditの内容をセルに書き込めばいいと思うよ。 TStringGridで用が足りることも多いけどNE
917 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 22:17:04 ] formcreateでiniファイルを読み込んで、listboxにiniの内容を書き出したいのですが for do でループしようと思ったら、iniファイルのセクションの項目数をカウントする方法が思いつかずに 困っているのですが、これはどうしたらいいのでしょうか 逆にtxt形式にしてreadlnでuntil Eofとかしないとだめなのでしょうか。ご教授ください。
918 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 22:43:28 ] >>917 ReadSections
919 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 22:47:52 ] >>918 ありがとう
920 名前:デフォルトの名無しさん [2008/06/17(火) 08:04:52 ] >>919 自演おつ
921 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 16:54:27 ] AnsiやUTF8の文字列をUTF32にエンコードするにはどうすればいいんでしょう? WikipediaのUnicodeの項目を見るとUCS4とUTF32は互換性があるらしいですが、 WideStringToUCS4Stringでエンコードしても、UCS4StringをStringに正常にキャストする方法が見つからず、 UTF32かどうか確かめられません よろしくお願いします
922 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 18:44:59 ] WideStringToUCS4Stringがあれば、当然UCS4StringToWideStringもあるわけだけど、 直接Stringにしたいって事?
923 名前:921 mailto:sage [2008/06/18(水) 19:30:09 ] すみません、自己解決しました MBCSUtils(cc.codegear.com/item/25496 )のAnsiStringToUtf8をしたあと、Utf8ToWideStringをしたら 望むとおりの結果がでました >>922 そうです UTF8にしたときは普通にStringとして取得できますが、WideStringToUCS4Stringだと 取得できないので、それを取得しようと思ったのです