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
231 名前:228 mailto:sage [2008/04/04(金) 15:03:14 ] >>229 素早いご回答をありがとうございます。 実は、str[1]に空文字を代入して'ABC'→'BC'とするなど、 色々できたらと思ったのですが、 やはりString型として処理した方がよさそうですね。 (そもそもString型の中身について理解していないのが問題ですが...)
232 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 15:12:25 ] それなら delete(str,1,1) でいいと思うけどな c言語の文字列はゼロ値終端で扱われる。 pascalの文字列は 構造体になっていて文字のサイズ情報を持っている。 だから値#0を含む文字も含む事が出来る。 DelphiはC言語との連携が楽なように、PCharとpascal文字列の型変換が出来るように工夫されている たとえば s:=PChar(s); と書くと、sの中から#0までの長さに自動調整される。 だから delete(str,1,1)を str :=PChar(str)+1 ; と書くことも出来る
233 名前:228 mailto:sage [2008/04/04(金) 16:01:13 ] >>232 delete関数、知りませんでした…。 その他もとても勉強になります。ありがとうございました。m(__)m
234 名前:デフォルトの名無しさん [2008/04/04(金) 16:13:39 ] こんにちは、Delphiのインラインアセンブラについて質問があります。 Python for Delphi(P4D)のコンポーネントのソースを見ているのですが、 > mov eax, Self > mov eax, [eax].DLL_PyArg_ParseTuple の [eax].DLL_PyArg_ParseTuple とはどういう意味なのでしょうか? eax + DLL_PyArg_ParseTuple であってますでしょうか
235 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 18:11:10 ] >>234 はいな const hoge=3; mov eax, [eax].hoge は mov eax, [eax+3] と同じ そういう時は、実行して、そこで止めてCPU窓を開くと逆アセ表示するからわかるよ
236 名前:デフォルトの名無しさん [2008/04/04(金) 21:24:48 ] StretchDrawで画像を縮小するとかなり画像が劣化するのですが、 たとえば、1/2とか特定の縮小率にすればいいとか何かいい方法は ないでしょうか? Tbitmapを印刷するのに、StretchDLBitsを使う方法はDelphi Tipsで見つけたの ですが、画面上でも使えますか?
237 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 22:36:31 ] 縮小にはDHGL ttp://www.asahi-net.or.jp/~HA3T-NKMR/DGS/
238 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 23:53:45 ] こんばんは、旧バージョンについて教えてください。 サンプルでDelPhi5のソース等をもらったのですが DelPhi5 というのはもう手に入らないのでしょうか? 現在提供されている無償版が6で5とは互換性がないと どこかに書いてあったのでDelPhi5を手に入れる方法を ご存知なら情報をお願いします。
239 名前:デフォルトの名無しさん [2008/04/05(土) 00:25:14 ] >>235 レスサンクス! > そういう時は、実行して、そこで止めてCPU窓を開くと逆アセ表示するからわかるよ おお!その手があったか
240 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 00:25:55 ] >>236 DHGL >237 Delphiな小技:画像の拡大と縮小(画質重視) delphi.livedoor.biz/archives/50602241.html Delphiな小技:バイキュービック(Bicubic)法による拡大と縮小 delphi.livedoor.biz/archives/50610022.html きれいな拡大・縮小〜Bilinear法の解説〜 www.geocities.jp/asumaroyuumaro/program/tips/Bilinear.html きれいな拡大・縮小その2〜Bicubic法の解説〜 www.geocities.jp/asumaroyuumaro/program/tips/BiCubic.html Delphi(Graphics) : Resize 1. Bilinear junki.lix.jp/delphigr/041Resize1.htm Delphi(Graphics) : Resize 2. Bilinear vs Bicubic junki.lix.jp/delphigr/042Resize2.htm Delphi(Graphics) : Resize 3. Interpolations junki.lix.jp/delphigr/044Resize3.htm Delphi(Graphics) : [GDI+] Resizing Images junki.lix.jp/gdiplus/005ResizeImages.htm >>238 Delphiの無償版はDelphi6とTurbo Delphiしかないと思う。 Delphi6でコンパイルしてみて、警告やらエラーが出たらソースを修正すればよし。
241 名前:デフォルトの名無しさん [2008/04/05(土) 00:26:52 ] >>238 Delphi5のソースは大体、上のバージョンで通るから大丈夫。 通らなかったら、ここに聞きに来な
242 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 00:52:42 ] >>240-241 ありがとうございます。6でコンパイルしてみます。 エラーがどうしても解消できなかったら また質問に来るのでよろしくお願いします。
243 名前:デフォルトの名無しさん [2008/04/05(土) 05:59:25 ] > 237,240 ありがとうございました。さっそく、DHGLを試してみます。 Delphi Graphic Secretsはどこでも販売してなくて Amazonでは中古を9800円で販売していましたが、今、みたら 4000円だったのでさっそく購入してみます。 もしDHGLがうまくいかなかったら、ご紹介いただいたGDI+も 挑戦してみたいと思います。 本当にありがとうございました。
244 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 06:13:45 ] きれいに画像を縮小したいだけだったら、DHGLを使うのに本を買う必要はないです。
245 名前:デフォルトの名無しさん [2008/04/05(土) 15:18:51 ] ボタンクリックで即休止状態にしたいです。 新規プロジェクト(VCL Formアプリケーション)のフォームに配置したボタンに procedure TForm1.Button1Click(Sender: TObject); begin SetSystemPowerState(False,True) end; と書いてコンパイルしただけでは、実行してボタンクリックしても 見た目は無反応でした。何かコードが不足しているのでしょうか・・・? Windows XP SP2です。 ご存じの方いらっしゃいましたら、 すみませんが、よろしくお願いいたします。
246 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 16:11:20 ] >245 ttp://msdn2.microsoft.com/en-us/library/aa373206(VS.85).aspx Remarks The calling process must have the SE_SHUTDOWN_NAME privilege. To enable the SE_SHUTDOWN_NAME privilege, use the AdjustTokenPrivileges function. For more information, see Changing Privileges in a Token.
247 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 18:22:17 ] >>243 ttp://hp.vector.co.jp/authors/VA015850/delphi/lib/ かなり出遅れたけど上記の nstretchf はどう?
248 名前:デフォルトの名無しさん [2008/04/05(土) 21:00:23 ] delphi経験一週間の者です。 配列を2つ作って、 両者の要素をコピーし合いたいんですが、 上手くいきません。 値のコピーをしたいのですが、 アドレスがコピーされてる模様。 Delphi7で、配列の値をコピーする 方法をご教示ください。
249 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 21:02:26 ] 配列に値入れてコピーしたらアドレスになるってどういう事?意味がわからない
250 名前:デフォルトの名無しさん mailto:sage [2008/04/05(土) 22:32:28 ] なぜ、うまくいかないコードを示さないのだろう?
251 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 01:04:39 ] >>248 b := a; // アドレスのコピー b := Copy(a, 0, Length(a)); // 値のコピー SetLength(b, Length(a)); Move(a[0], b[0], SizeOf({要素の型}) * Length(a)); // 値のコピー 文字列の場合は t := s; とすると、s の文字列をコピーした振りをしてくれる(COW: Copy-On-Write)。
252 名前:245 [2008/04/06(日) 01:35:00 ] レスありがとうございます。 homepage1.nifty.com/MADIA/delphi/delphi_bbs/200404/200404_04040006.html で示されてるサンプルコードでも期待した結果を得られなかったのですが、 休止状態にするには、 ボタンのプロシージャにはどのように書けばいいのでしょうorz すみません、よろしくお願いいたします
253 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 04:32:50 ] なんで246を読んで試さないの?
254 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 10:03:16 ] 面倒だからです
255 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 10:13:23 ] 246のサンプルが252じゃねの
256 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 13:09:07 ] >252 ん〜そこのサンプルソースでうまくいかないのであれば、それぞれの関数の戻値をチェックしてエラーが起きていないか、 そのときのGetLastErrorの値はどうなっているか、あたりを調べてみて。Win32Check関数とかお勧め。 それとこの手の質問をするときはうまくいかない環境のOSやバージョン、他のOSでの状況なども明示すること。
257 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 13:27:42 ] XP SP2ゆうてるじゃん
258 名前:デフォルトの名無しさん [2008/04/06(日) 18:47:46 ] > 247 ありがとうございました。DHGLでうまくいったので、今のところは 必要ないのですが、いきずまったら試してみます。 ありがとうございました。
259 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 11:48:11 ] TDdeClientItemのOnChangeイベントって 頻繁に更新するデータとか、複数のデータに対しては 正確に動かないんでしょうか? qc.borland.com/wc/qcmain.aspx?d=51614 homepage1.nifty.com/MADIA/delphi/delphi_bbs/200512/200512_05120125.html ↑ これに書いてあるのと全く同じ症状が起きて困ってます。 OpenOfficeとかC#のDDE通信だときっちり動いているのに Delphiで作ったアプリだと明らかにデータ更新が遅延したり、 中には全く反応しないitemがあったりします。
260 名前:デフォルトの名無しさん [2008/04/07(月) 12:49:15 ] いつも、いつもすみませんが、教えてください。 RadioGroup1で 例えば、0:犬 1:豚とあり、初期に0:犬をマークしているようになっていると します。で、豚を選択したときは、RadioGroup1で、OnEnterでイベントを検出して Procedure TFrom1.RadioGroup1Eneter(Sender:TObject) begin Label1.caption:='pig'; end; でうまくLabelにpigを出せるのですが、 RadioGroup1で0:犬、1:豚、2:魚として初期に0:犬をマークしているとします。 で、豚か魚をマークした時に Procedure TForm1.RadioGroupEvent(sender:TObject) Case Radiogroup1.ItemIndex of 1:label1.caption:='pig'; 2:label1.caption:='fish'; end;end; ではLabelに何も表示されません。何かいい知恵はないでしょうか?
261 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 13:11:41 ] OnClick
262 名前:デフォルトの名無しさん [2008/04/07(月) 13:45:16 ] あれー、OnClickは試して駄目だったのですが 今するとちゃんとできます。なぜだんたんだろう?? なにはともわれありがとうございました。
263 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 17:24:25 ] ComboBoxのドロップダウンの長さを長くするにはどうすればいいんでしょうか?
264 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 17:55:51 ] DropDownCount
265 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 19:12:29 ] >>264 ありがとです♪
266 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 19:17:28 ] 今度からはヘルプ読もうねボク
267 名前: ◆XcB18Bks.Y mailto:sage [2008/04/07(月) 19:32:51 ] >>221 フレームにOnCreateやOnDestroyはありませんが コンストラクタやデストラクタをオーバーライドすればたいていのことはできると思います。 (この方法はDelphi 4(5かも)以降のフォームやデータモジュールでも使えます) ただ各画面に共通する機能は1カ所に書く方がよいので 私も共通の基本フレームクラスを作って各画面のフレームはそこから派生させています。 画面がいくつもあるアプリなんか作ってしまうとフレームのありがたさが身にしみてきます。
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が固まるし… 再描画の他のコントロールのイベントは見てなかったのでチェックしてみます。