08/04/10 23:09:45
>>299
Delphiはじめて二番目に作ったのがランチャだった
確か一日一~二時間やって一ヶ月くらいで使えるものにはなったと思う
その後使い込んでいくウチにバグ取りや機能追加で現在に至る
人に配れるレベルになったのは半年目くらいか(配っとらんが)
おれはCもなんも知らない状態で入門書とBBSフォーラムの情報だけだった
いまはグーグル先生もいるし質問先もたくさんあるから
あとはモチベーション次第なんぢゃね?
302:デフォルトの名無しさん
08/04/10 23:12:03
>>293
オーナードロー
303:301
08/04/10 23:15:33
>>299
C#の初心者すれでもマルチポストしたのか
Delphiやってみたいってわけではなかったんだ
●rz
304:282
08/04/10 23:28:47
遅レスすみません。
>298のコードを使わせていただきました。
いくつかアイデアをもらって心に感じるものがありました。
ありがとう。
305:デフォルトの名無しさん
08/04/11 01:13:54
>300
日付時刻の扱いについて。TDateTime型はローカル、DST、UTC等の配慮は含まれていない。
よってこれらの配慮を要する場合はTSystemTime構造体を使用してGetLocalTimeまたは
GetSystemTime(いずれもWin32API)で取得し、これをSystemTimeToDateTimeで
TDateTimeに変換して使用する必要がある。またDSTについてはWindowsの実装がナニなので
(基本的に今現在のDSTの適用状況しか信用できず、たとえば数年前の特定の日付における
DSTの適用状況はわからない)、自前で実装する必要がある。
306:300
08/04/11 09:10:00
thx!>>305
現在の時間だけで良いので、OKです。
つまり、グリニッジ時間を知りたければ、TDateTimeは使えなくて、Win32に頼るってことですね。
307:デフォルトの名無しさん
08/04/12 00:05:32
Delphiを勉強するにあたってお勧めの本を教えてください
C, C++, Javaで開発をしたことがあります
308:デフォルトの名無しさん
08/04/12 00:41:29
>>309
もちつけ
309:デフォルトの名無しさん
08/04/12 00:54:13
ぺったん。ぺったん。
310:デフォルトの名無しさん
08/04/12 01:07:19
つるぺったん。
311:デフォルトの名無しさん
08/04/12 02:11:57
>>301>>303
あ、いや、C#スレでDelphiをオススメされたんでこっち来ました
ありがとうございます。半年ならちょっとやってみたいです
この言語で作ってみたいと思ってます
近場の書店巡ってもCだのJavaだのHTMLだのの教本しか置いて無かったです
Amazonを見てみたら評価の高い教本はあるものの、中古で異常な価格のモノばかりでした
何か初心者オススメの本は無いですか?
Webで資料もみますが、とりあえず1冊は教本を持っておきたいと考えています
312:デフォルトの名無しさん
08/04/12 02:17:08
今から始めるなら迷うまでもなくC#だろ・・・
313:デフォルトの名無しさん
08/04/12 02:37:53
>>311
マニュアルの文法書。
314:デフォルトの名無しさん
08/04/12 08:07:21
>>311
IDEから文法までのを一通り説明してあるやつで
Turbo Delphiか2005用のを買っといたら。
Delphi 2005 プログラミングテクニック Vol.1入門編が無難な感じ。
シリーズ化されてて興味のある分野のものを買いたせるし。
315:デフォルトの名無しさん
08/04/12 11:08:06
Turbo Delphi無料版でアプリを作りたいのですが、
ソースを難読化するツールってありますか?
316:デフォルトの名無しさん
08/04/12 11:32:27
しんぱいしなくても>>315のソースはきっと読みづらい。
317:デフォルトの名無しさん
08/04/12 13:13:12
.NETならともかくWin32でビルドしたら
逆アセンブルしか手がないからそんなに心配することもない。
318:315
08/04/12 14:21:40
>>316
コメントでバレそうです。
>>317
DEDEなるデコンパイルソフトがあるらしいのですが、大丈夫でしょうか?
319:デフォルトの名無しさん
08/04/12 14:29:26
コメント・・
320:デフォルトの名無しさん
08/04/12 14:32:01
>>315
まずはどういう動機でどういうレベルの誰から何を守りたいのかをはっきりさせよう。
321:デフォルトの名無しさん
08/04/12 14:59:30
フォームに乗せなきゃソース見れないだろ
322:315
08/04/12 15:26:27
>>320
例えば姓名判断や競馬の予想のような、
条件を入力すると、ある専門知識に基づいた計算結果が返ってくるソフトを考えています。
バレたくないのは、その結果を算出する際のアルゴリズムやデータです。
すぐに解析されてしまうということは、
せっかく苦労してアルゴリズムやデータを作成しても、
簡単にコピー(改良版)が作られる可能性があるわけですから、躊躇しています。
323:デフォルトの名無しさん
08/04/12 15:45:32
dedeで生成したソースを読めるような奴はそうそういないと思うが、もしいたら諦めるしかない
なんか特殊な方法で圧縮するとかそんな感じにしなきゃ無理な気がする
まぁその前に>>315が作るツールにそこまでしてソースを見るほどの価値があるかどうかの方が重要だが
324:デフォルトの名無しさん
08/04/12 16:00:01
一応antiDeDeとかもあるけどね
FindWindowでDeDeにWM_CLOSE投げるだけだけど
325:315
08/04/12 16:30:52
>>323
>dedeで生成したソースを読めるような奴はそうそういないと思うが、もしいたら諦めるしかない
実はdedeの詳細を分かっていなかったのですが、それなら安心です。
シェアウェア作家や商用アプリを作ってる方も、
特に気にしていないということですかね。
>>324
ありがとうございます。参考になります。
326:デフォルトの名無しさん
08/04/12 17:19:04
URLリンク(www.moonlight.gr.jp)の真ん中のを参考にして
バイナリを読み込んでみたんですけど、かなり時間が掛かってしまいます
どうすれば読み込み時間を短縮できるでしょうか?
327:デフォルトの名無しさん
08/04/12 17:26:40
遅いのは1byteずつ読んでいるから。
ある程度の大きさのバッファを用意して、
ReadではなくBlockReadでバッファ長のバイト数を読み込むようにする。
「BlockRead」をヘルプで引くかで、ゴーグレッドれば、サンプルが出てくる。
328:デフォルトの名無しさん
08/04/12 18:10:46
生成した8個のTShapeのVisibleをFalseにしたりTrueにしたりするところで
とても時間が掛かっている(1秒くらい)のですが、原因がさっぱり分かりません。
このような問題が出た方いますか。
329:デフォルトの名無しさん
08/04/12 18:20:45
再現するコード晒せ
330:デフォルトの名無しさん
08/04/12 18:47:02
TShapeなんて使ったことないけど
他のコントロールの再描画が発生して重いイベントハンドラが呼ばれているのかも。
プロジェクトオプションのコンパイラのデバッグ版DCUにチェックして再構築して
再描画中に固まるタイミングで一時停止してみたら。
331:デフォルトの名無しさん
08/04/12 19:21:44
>>329 普通に新規で最低限のコードだと再現しないんです。
>>330 ありがとうございます。一時停止はタイミングが難しくてなかなか
思うようにいかないし何回もやってるうちにWindowsが固まるし…
再描画の他のコントロールのイベントは見てなかったのでチェックしてみます。
332:デフォルトの名無しさん
08/04/12 20:17:28
DICOMをDelphiで勉強しようと思ってopen sourceであるezDICOMを見ているので
すが、childwin.pasで
const
gMouseDown : boolean = false;
とあり、その以降で
gMouseDown := true;
となっていて、エラーがでて代入できない左辺値ですと表示されます。
constだからそういうエラーになるのですか?もしそうなら
あまり当てにしてはならないコードと判断すべきなのでしょうか?
333:デフォルトの名無しさん
08/04/12 20:31:26
328ですが、やっぱり分からないです。描画関連のイベントでデバッグ用の
TMemoに出力するようにしたのですが、Visible := True; の前には表示
されません。困ったです。デバッグの良いアイデアか疑うべき点など
ありますでしょうか。
334:デフォルトの名無しさん
08/04/12 20:51:35
>332
constへの代入はコンパイルオプションにより可能なこともある。
335:デフォルトの名無しさん
08/04/12 20:53:18
いやだからソースどっかにあげろよ
336:デフォルトの名無しさん
08/04/12 20:53:51
>333
TShapeやTLabelのようなグラフィックコントロールの描画はコンテナの描画から呼び出される。
というわけでコンテナのPaintを起点に追うと何かわかるかも。
337:デフォルトの名無しさん
08/04/12 21:00:06
Delphiはいい加減標準でプロファイラつけろよな
338:デフォルトの名無しさん
08/04/12 21:13:25
>>333
プロジェクトのバックアップとってデバッグ用のコード仕込みまくって
いじりまくってブレーク張りまくって根性でステップ実行しまくる。
339:デフォルトの名無しさん
08/04/12 21:29:28
332ですが
>334
コンパイルオプションですね。探してみます。
>335
私への返事と解釈して↓のstandaloneのところですが
URLリンク(www.sph.sc.edu)
340: ◆XcB18Bks.Y
08/04/12 22:16:42
>>332
「型付き定数への代入」というやつです。
初期のDelphiコンパイラではデフォルトで有効になっていたのですが
途中からデフォルトで無効になりました。
プロジェクト設定の「コンパイラ」設定で有効にするのが手っ取り早い対処法ですが
型付き定数限定とはいえ定数の値を任意に変えられてしまうのはバグの元ですから避けるべきです。
(デフォルトが禁止になったのもバグ回避と思われます)
そのソースファイルの先頭に「型付き定数への代入」を有効にするコンパイラ指令 {$J+} を埋め込むのが良いでしょう。
341:デフォルトの名無しさん
08/04/12 23:11:55
>>327
ものすごく遅くなってしまいましたがやってみます
ありがとうございました
342:デフォルトの名無しさん
08/04/13 00:05:13
>>315
誰もおまい見たいなレベルの実行ファイルを解析したりしないよw
343:デフォルトの名無しさん
08/04/13 07:26:17
> 340
ありがとうございました。おかげさまで無事、コンパイルでき動くようになりました。
これで解析がはかどります。本当にありがとうございました。
344:デフォルトの名無しさん
08/04/13 11:21:33
>>342
「ある専門知識に基づいた計算結果」を求めてダウンロードするってことは、
少なくともその内容に関心があるってことでしょ
コーディングの巧拙は関係なし
まあ専門知識を持たないおまいには分からないだろうけどw
345:デフォルトの名無しさん
08/04/13 11:46:30
>>315
CGIにしたらどう? サーバ側で計算すればいい。
346:デフォルトの名無しさん
08/04/13 13:15:45
>345
サーバーをハッキングされる可能性があるのでは?
347:デフォルトの名無しさん
08/04/13 13:23:00
まだ引っ張るの?
348:デフォルトの名無しさん
08/04/13 15:14:53
SJIS最速の正規表現ライブラリってどれ?
349:デフォルトの名無しさん
08/04/13 15:23:29
鬼車をobjのLinkで使う。。。とかかな?
WinAPI使ってないから改造しないと曖昧検索(同形異区の文字や
全角大小文字の一致とか、)の挙動がWSHとかと違うと思ったけど
350:デフォルトの名無しさん
08/04/14 01:41:08
>>346
泥棒にPC盗まれる可能性も考えれば、
アルゴリズムは暗記して、そのつど出向いて計算してあげたらよさそう。
351:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/04/14 11:50:35
別unitに分けるなら出来るよ。
アクセスするときは ユニット名.HAIRETU[4] のようにアクセスする。
353:デフォルトの名無しさん
08/04/14 12:22:47
無理
354:351
08/04/14 18:52:37
遅くなりましたがありがとうございました
変数でやる時には配列に一気に追加する方法はあるのでしょうか?
355:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/04/15 14:18:16
IMEのON、Offの仕方。
IMEの現在の状態を監視するには、なんと入力すればいいか教えてください。
ネット検索したんですが、使い方がよくわかりませんでした。
358:デフォルトの名無しさん
08/04/15 14:28:00
ImmなんちゃらってAPIだったっけかな
359:デフォルトの名無しさん
08/04/15 14:46:32
>>358
ありがとうございます。
それの具体的な使い方がわからなくて・・・。
360:デフォルトの名無しさん
08/04/15 14:53:10
私なんて、現在IMEがONかどうかを調べることすら出来なかったよ!。
361:デフォルトの名無しさん
08/04/15 15:31:20
Delphiに直接関係はないな。
URLリンク(m--takahashi.com)
362:デフォルトの名無しさん
08/04/15 18:37:32
Delphi5で商用利用できるフリーのXMLのクラスライブラリってないかな?
363:デフォルトの名無しさん
08/04/15 19:10:32
Delphi Personal version6 を使ってるんですが
自分で作ったソフトを公開する時に気をつけることってありますか
コンパイラオプションを変えたりとか、そういう事するもんなんでしょうか?
364:デフォルトの名無しさん
08/04/15 22:10:16
Xp スタイルに対応したか? Vista 対策はOK? くらいかな。
365:デフォルトの名無しさん
08/04/15 23:23:39
>357
ImeModeプロパティじゃだめなん?
366:デフォルトの名無しさん
08/04/15 23:45:49
皆さんエディタとか何使ってますか。
beginとendを強調表示とかしてくれるエディタとかありませんかね。
367:デフォルトの名無しさん
08/04/15 23:48:47
サクラエディタとか。
368:デフォルトの名無しさん
08/04/15 23:49:24
EmEditor は、Delphi の予約語を強調表示できるよ。
369:デフォルトの名無しさん
08/04/15 23:50:09
IDEか秀丸だな。
370:デフォルトの名無しさん
08/04/16 00:04:37
すみません、質問です。
TWebBrowser で表示しているWebページの高さを
OleObject.document.body.scrollheight から取得しているのですが、
どうも正確な値がとれていない時があるようです。
うまくいく場合のあるのですが、
Google 検索結果ページでの、scrollheight の値が
明らかにこっちが想定している値と違うのです。
何か心当たりがある方いらっしゃいましたら、
教えていただけたら助かります!
#スクロールバー分は考慮してます。
371:デフォルトの名無しさん
08/04/16 09:07:56
>>370
ブラウザ内部のサイズより、HTML描画された内容が小さい場合とか?
372:デフォルトの名無しさん
08/04/16 09:21:58
メインメニュー・コンポーネントについて質問です。
大見出し
├小見出し1
├小見出し2
├小見出し3
・・・
という構成のメニューがあったとして、
小見出しを「配列」で一括管理することはできるのでしょうか?
各小見出しのオブジェクトインスペクタのname項目では、N1、N2、N3...
などとなっているので、配列名にすることができません。
(このままだと、「全てのチェックボックスを外す」などの記述が大変です)
よろしくお願いします。
373:デフォルトの名無しさん
08/04/16 09:24:08
TStringList.SaveToFileで文字コードをUTF-8で保存したいのですが
どうすればいいでしょうか?htmlファイルを生成しています。
WinXP+Delphi7Pro
374:デフォルトの名無しさん
08/04/16 10:13:17
delphiで通販サイトみたいなの作ってみようと思うんだけど
何か最低限これはみとけみたいなサイトあります?
375:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/04/16 10:18:24
Delphiでウェブアプリなんだー。
ちょ、マイナーだね。
ウェブで無償配布ツールものとかドライバ設定系デスクトップアプリでは、某アイコンを良く見るけどね。
377:デフォルトの名無しさん
08/04/16 10:25:02
>>373
UTF8Encode
378:372
08/04/16 10:34:44
>>375
ありがとうございます!とても助かりました。
379:デフォルトの名無しさん
08/04/16 10:40:52
>>373って
for i := 0 to Memo1.Lines.Count-1 do Writeln(f, WideString(Memo1.Lines[i]));
ってやるだけじゃだめなん?WideStringとUTF8って別もの?
そこらへんいまだに全く把握してないんだけど
どこかにアホグラマ向けの解説サイトとかないのかな。
380:デフォルトの名無しさん
08/04/16 10:52:30
別物。
381:デフォルトの名無しさん
08/04/16 11:21:33
>>376
htmlやcss、DB何かも飽きるほど使った事あるからいけるかなぁとか
思ったりしてるんだけどセキュリティ関連がよくわかんないのよねぇ
SQLインジェクションやクロスサイト云々とかそういうのはわかるけど
何か他にもいろいろありそうで怖い
Webアプリって今はjavaなんかがメジャーなのかな?
382:デフォルトの名無しさん
08/04/16 15:43:07
Dephi⑦のIDEモードってどうやるんだっけ。
他のウィンドウが見えるSDIになっててやりづれぇ
383:デフォルトの名無しさん
08/04/16 15:58:47
>>364
ありがとうございます。
Vista対策は全くしてませんので、その事を記載することにします
384:デフォルトの名無しさん
08/04/16 16:12:23
Vistaなんて使う方が悪いぐらいに書いとけ
385:デフォルトの名無しさん
08/04/16 16:13:13
>>381
phpとかスクリプトが多いんじゃね
386:デフォルトの名無しさん
08/04/17 13:37:09
質問です。
フォーカスが当たっているかコントロールは
どうやって調べればいいんでしょうか?
387:デフォルトの名無しさん
08/04/17 15:47:11
つ TCustomForm.ActiveControl
388:デフォルトの名無しさん
08/04/17 19:09:49
>>381
HTML、DB飽きるほどやってるなら、セキュリティ云々の前に、
未だに、Unicodeにまともに対応してない、Delphiを使うなんて論外だと思うが・・
389:デフォルトの名無しさん
08/04/17 19:58:55
Delphi.NETなら使えるんだろ。
.NETの便利クラスパクって来るのも疲れたし
マシン買い換えたらDelphi.Net触り始めてみたくはある。
ぼろマシンのネイティブアプリよりよっぽど速そうだw
C#のフォーム周りはどうも微妙すぎるし。
390:デフォルトの名無しさん
08/04/17 20:06:05
微妙って、.NET Framework使ってたら言語が違っても同じでないの?
391:デフォルトの名無しさん
08/04/17 20:22:49
クラスライブラリが違う。
392:デフォルトの名無しさん
08/04/17 21:04:42
ぼろマシンで走る.NETは遅いと思う
393:デフォルトの名無しさん
08/04/17 22:53:08
Delphi.NETは最悪の選択
394:デフォルトの名無しさん
08/04/17 23:34:25
>>387
ありがとうございます。できました
395:370
08/04/18 00:33:33
>>371
レスありがとうございます。
うまくいくページとうまくいかないページがある原因がよくわかりません。。
(yahoo とかだったら、うまくいくんですが)
しかも scrollwidth はうまくとれてたりするので、
さらに意味がわからないことになってます。。
396:デフォルトの名無しさん
08/04/18 01:40:53
>>374
「webアプリセキュリティ対策入門」って書籍。
サウンドハウスみたいに単純な穴つかれて個人情報漏らさないように気をつけてね。
Delphiって文字が悪い記事で新聞に載らないようにしてくださいw
397:デフォルトの名無しさん
08/04/18 01:42:34
>>389
ただでさえDelphiは未来がないのに、その中でロードマップで切り捨てられることが決定している
Delphi.NETは選択肢としてありえないよ。
俺ならchrome joyrideをつかう。それならC#でいいけどな
398:デフォルトの名無しさん
08/04/18 08:06:40
.NET起動遅すぎ
399:デフォルトの名無しさん
08/04/18 09:33:28
動作条件に.netが入ってる時点でDLする気失せる
400:デフォルトの名無しさん
08/04/18 10:06:10
最近のDelphiと一緒だな。J#まで必要だし。
401:デフォルトの名無しさん
08/04/18 11:06:10
未だに.NETの起動がどうのなんて言ってるボロマシン使ってる可哀そうな方々は
一生DEL7SJISWIN32で頑張ってなよ。
今時C2Dマシンなんて2,3万で組めるのにw
402:デフォルトの名無しさん
08/04/18 11:19:19
このやり取りも無断リンク論並に飽きたので
もう勘弁してほしい
403:デフォルトの名無しさん
08/04/18 11:48:20
デバッグの値の文字列を全部取得する方法っってありませんか。
文字列が長いと、「...」ってのが最後に入ってそこで終わってしまいます。
404:デフォルトの名無しさん
08/04/18 13:56:07
PageControl単位でマウスカーソルの出入りを監視するのってどうやればいいですか。
MouseOverだとその上に乗ってる全コントロールのMouseOverでチェックしないとうまくいかないし
それをやったところで結局正確には取れないです。
405:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/04/18 15:06:44
>>404
CM_MOUSEENTER/CM_MOUSELEAVE を使うのでは駄目?
407: ◆XcB18Bks.Y
08/04/18 16:18:16
>>406
最近のバージョンではOnMouseEnter, OnMouseLeave イベントとして実装されていますね。
>>379
おおざっぱに言いますとこんな感じです。
・WideString…全部の文字が2バイト
・UTF-8…英数コードが1バイト(しかもこれらのほぼすべての文字コードがANSI文字列同じ)、
漢字やかななどが3バイト
408:デフォルトの名無しさん
08/04/18 22:54:38
ユニコードが使えるエディタを作りたいのですが、良い方法はありませんか?
こちらの環境は Delphi 5 Pro です。
409:デフォルトの名無しさん
08/04/18 23:00:38
SynEdit unicode editionを使う
410:デフォルトの名無しさん
08/04/18 23:02:28
>>409
多謝!
411:デフォルトの名無しさん
08/04/18 23:40:25
stringの長さだけを初期化する方法でSetLength(s, len)ってやるのと
SetString(s, nil, len)ってやる方法の二つがあるみたいですが、
この二つの差って何かありますか?
412:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/04/21 00:35:09
>>411
SetStringで長さを設定する人を見たことが無い。
違いが気になるなら、ソース見て。
>>412
ここ見ると、追加・削除をサポートしていない形式があるみたいだけど、大丈夫?
URLリンク(www.geocities.jp)
あと、TArchiveFile.Createで例外が生成されると、DelList.Freeは実行されない。
414:デフォルトの名無しさん
08/04/21 01:15:14
>>411
SetLengthはメモリを再確保した後に内容のコピーをするような分岐がありますが、
SetStringでnilを指定した場合1つの分岐だけで即座に新しい領域が割り当てられます。
なのでSetStringの方が若干速いです。
>>413
SetLengthとSetStringはともに組み込みの手続きであり、ソース上にそのものの実装は存在しません。
場合によって別々の内部手続きが呼び出されます。この場合はLStrSetLengthとLStrFromPCharLenです。
これを初心者がソースを見て判断するのは酷でしょう。
それにSetStringで長さを設定するのはVCL内に多く見られます。
実際どうなってるか知りもしないのにそのような発言をするのはよくないんじゃないかと。
415:デフォルトの名無しさん
08/04/21 01:15:25 BE:209243-PLT(12660)
>>413
レスありがと
形式はzipだからおkだと思うんだ…
何か書き方が悪いのか何なのか
それとcreateもtryの内側に入れることにしようと思います><
416:デフォルトの名無しさん
08/04/21 01:52:53
Createをtryの内側に入れると、今度はCreateの例外で
ArcもDelListも代入前に使われちゃう。
417:デフォルトの名無しさん
08/04/21 12:31:04
>>415-516
nilで初期化しておけばおk
418:デフォルトの名無しさん
08/04/21 13:25:31
みんなー、>>516まで入りたい放題だぞー
419:デフォルトの名無しさん
08/04/21 16:51:44
Delphi.NET(2005)で質問です。
TStringGridの内容を帳票として成型して
プレビュー画面を表示した後、印刷したいのですが
一体どうすれば良いのでしょうか。
420:デフォルトの名無しさん
08/04/21 22:35:32
Excelでフォーマットを好きなように作り、プログラムからグリッドの内容をセルに流し込み、印刷で。
421:デフォルトの名無しさん
08/04/22 00:50:35
ユーザにそこまでやらせるのはひどいアプリだなぁ
422:デフォルトの名無しさん
08/04/22 00:52:49
2005で、かつ Delphi.NET 使ってる時点で論外
423:デフォルトの名無しさん
08/04/22 00:53:51
>>422
.NetとFirebirdでWebアプリ作ってる俺に謝れ!
424:デフォルトの名無しさん
08/04/22 13:12:50
ClientDataSetに放り込んでQuickReportとかは?
425:デフォルトの名無しさん
08/04/22 21:30:31 BE:975078-PLT(12660)
>>412分かる人いないかな?
426:デフォルトの名無しさん
08/04/22 23:17:35
>>425
私なら直接DLLの関数を呼び出す。
427:デフォルトの名無しさん
08/04/23 12:43:14
turbo DelphiでMSSQLのデータを表示したいのですが
知り合いにできない、と言われました。
プログラムそのものが初めてでこれからやろうとしていたので本当なのかどうかがわかりません。
本当にできないのですか?
428:デフォルトの名無しさん
08/04/23 13:06:11
>>427
普通にできる
429:デフォルトの名無しさん
08/04/23 14:20:06
>>428
ありがとうございます。これから頑張って覚えてやってみます。
友人には間違いを伝えておきます。
430:デフォルトの名無しさん
08/04/23 15:17:50
>>425
確かにzipでやってみたらファイルが消えた。
lhaならできたけどzipじゃないとだめなの?
431:デフォルトの名無しさん
08/04/23 15:25:14
>>426
日本語でおk
432:デフォルトの名無しさん
08/04/23 19:38:35 BE:557748-PLT(12660)
>>426
DLL直だとコンポーネント使ってる意味が無いというか…
最悪それに挑戦することになりそうです。
>>430
zipで出来ないとうまくないですねー
何とかならないものかしら
433:デフォルトの名無しさん
08/04/23 20:16:08
以前かなり前、TShapeの表示/非表示の切り替えが異常に遅いって
書いたモノですが、ようやく原因が分かりました。\(^o^)/
TShapeを表示させているフォームのAutoScrollをFalseにしたら、
劇的に速くなりました。良かった。これでGWは何日か休めそう
434:デフォルトの名無しさん
08/04/24 03:03:11
>>432
ZIP32.pasのMainEntry2の中でコマンド実行する前に
DeleteFile( ArchiveFileName )でファイル消されてる。
それコメントアウトするとちゃんと処理できたけど、追加のとき
エラー回避のために必要みたいなコメントあるから、ファイルを
消すときだけ処理を飛ばすようにした方が安全かも。
435:デフォルトの名無しさん
08/04/24 06:59:21
TMenuBarやTToolBarを使ってメニューを移動できるようにすると
メニューにマウスを乗っけるとボタンみたいになってしまうのですが
これを防ぐにはどうすればいいのでしょうか?
436:デフォルトの名無しさん
08/04/24 10:56:39
DelphianWorldって亡くなりました?
437:デフォルトの名無しさん
08/04/24 17:08:52
文字列型変数のアドレスを取る手続きFooがあるのですが、
その手続き内で文字列のサイズと内容をセットしたいのですが、どうすれば
いいでしょうか?
呼び出し元は
var AResult: string;
begin
Foo(@AResult);
end;
です。
procedure Foo(P: Pointer);
begin
// ここで文字列のサイズと内容を設定したい。
end;
438:デフォルトの名無しさん
08/04/24 20:25:22
短い文字列型を使う。
439:デフォルトの名無しさん
08/04/24 20:31:25
DelphiMLって今生きてるの?
4月8日からメールが流れて来ないんだが
440:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/04/24 20:53:33
ぶっちゃけ
procedure Foo(var s: string);
begin
s := 'あいうえお';
end;
これでいいじゃんと思うのは俺だけ?
442:デフォルトの名無しさん
08/04/24 21:11:37 BE:1409999-PLT(12660)
>>434
なるほど、ちょっとそのへんいじってみます。
貴重な情報ありがとうございます。
443:デフォルトの名無しさん
08/04/24 21:12:07
procedure Foo(ps: PWideString);
begin
ps^ := 'あいうえお';
end;
呼出元がポインタで渡してるみたいだし俺ならこうするかな
444:デフォルトの名無しさん
08/04/24 22:32:32
>>439
生きてるけど、人がいなくなって瀕死状態なのかと
445:デフォルトの名無しさん
08/04/24 22:40:29
同じモジュールなら、PString(P)^ := ?? でいけそうですが。
string=WideStringなら、 >443と同じですけど。
446:デフォルトの名無しさん
08/04/24 23:09:55
>>445
日本語でおk
つかおまいのこれ(>>440)はどこでStrDisposeするんだ?
どっかにリストでももってそこで管理する気か?
447:デフォルトの名無しさん
08/04/24 23:45:37
>>434
オイラからもありがとう
とりあえずこうしといた
if Pos('-d',_lpszCmdLine)=0 then
DeleteFile( ArchiveFileName );
448:デフォルトの名無しさん
08/04/24 23:47:09
とりあえず、445<>440だ。
449:デフォルトの名無しさん
08/04/25 00:05:17
Delphian Worldは消滅したみたい。Delphi-MLは開店休業。みんなFTにいるんじゃない?
450:デフォルトの名無しさん
08/04/25 01:11:53
>Delphi-MLは開店休業。みんなFTにいるんじゃない?
へっ? Delphi-ML ってメンバーが10人あまりなんか?
それは・・・瀕死状態なんでは?
451:デフォルトの名無しさん
08/04/25 04:31:23
FT?
452:デフォルトの名無しさん
08/04/25 07:49:08
>>440です。みなさん、ありがとうございました。
>>443,>>445さんの方法でうまくいきました。
procedure Foo(P: Pointer);
begin
PWideString(P)^ := 'あいうえお';
end;
PStringまたは,PWideStringにキャストすれば良かったのですね。
>>441
実際のFooは仮想クラスのメソッドで派生クラスでオーバーライドしているため、
インターフェースを変える事ができません。
>>446
文字列のための動的なメモリの割り当ては、呼び出し先(この場合Foo)で行っていますが、
呼び出し元のAResultの変数が破棄される時(この場合、スコープから外れた時)に、割り当てられたメモリは自動的に
解放されると思います(たぶん)。
453:デフォルトの名無しさん
08/04/25 08:47:53
質問します。よろしくお願いします。
var pArray: PInteger;
として
GetMem(pArray,100);
pArray[0]:=12;
とかすると、配列型が必要ですとエラーが出ます。
Integerのポインタを配列としてアクセスするにはどうすれば良いでしょうか。
454:デフォルトの名無しさん
08/04/25 09:20:46
PIntegerArrayにキャスト。
PIntegerArray(pArray)[0]:=12;
455:デフォルトの名無しさん
08/04/25 09:31:14
フォルダのパスから、そのフォルダの中にあるファイルのパスを所得するにはとうしたらいいのでしょうか?
456:453
08/04/25 09:37:41
>>454
うまくいきました。ありがとうございます。
457:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/04/25 09:45:18
>>455 意味が判らないけど
FindFirst,FindNext,FindClose
か windows API の FindFirstFile FindNextFile FindClose
の事かな?
459:455
08/04/25 09:57:04
>>458
レスありがとうございます。
フォルダをフォームにD&Dしたとき
そのフォルダの中のファイルのパスがほしいという事です。
460:デフォルトの名無しさん
08/04/25 10:02:26
D&D の方が判らないの?
FindFirst,FindNext,FindClose の使い方が判らないの?
461:デフォルトの名無しさん
08/04/25 10:06:22
他に COM を使う方法があるよ。 やり方は
CreateOleObject('Scripting.FileSystemObject') で検索すればいいと思う
462:455
08/04/25 10:11:50
>>460
FindFirstでいけそうです。ありがとうございました。
463:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/04/25 13:59:49
>>452
P は AnsiString型変数へのポインタをPWideString型へキャストすると、おかしくなると思うよ。
AResultは常にWideString型なの?
>>463
問題ない。
465:デフォルトの名無しさん
08/04/25 14:05:51
問題ないけど、この使い方なら 動的配列使えばいいのにって思うな。
466:デフォルトの名無しさん
08/04/25 14:06:29
いまどきなら動的配列じゃね?
467:463
08/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:デフォルトの名無しさん
08/04/25 20:33:15
フォルダのリネームって一行ぐらいじゃできないの?
469:デフォルトの名無しさん
08/04/25 20:58:09
RenameFile で出来ると思うけど?
ただ、誰かが使ってたら駄目だよ。
もしかして、自分自身が使ってるんじゃないの?
カレントフォルダを変更してみたら?
470:デフォルトの名無しさん
08/04/25 21:03:42
とりあえず試してみたら?
if not RenameFile( oldName ,NewName ) then ShowMessage( SysErrorMessage( GetLastError())) ;
471:デフォルトの名無しさん
08/04/25 21:40:56
動的配列…
むかーし、なにもかもをTStringGridで処理してた時期を思い出した(涙
472:デフォルトの名無しさん
08/04/25 22:04:03
それはひどすぎ。動的配列がなかったときは、配列のポインタを使ったもんだ。>>463 のように。
473:468
08/04/25 23:51:18
>>469-470
ありがとう
チョット酒飲みいってたw
474:デフォルトの名無しさん
08/04/26 03:04:25
CloseQueryでFalseしてMinimizeする常駐アプリが立ち上がってると
シャットダウンできないんだけどどうやってシャットダウンなりログアウトに対応すればいいの?
475:デフォルトの名無しさん
08/04/26 03:47:34
WM_QUERYENDSESSIONで何とかしてみるとか
476:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/04/26 08:01:11
符号無し整数の演算結果は一時的にInt64になるんじゃなかったか
478:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/04/26 11:53:43
RadioGroupのアイテムを一つだけ無効にすることってできますでしょうか?
480:デフォルトの名無しさん
08/04/26 11:59:05
>>477,>>478
ありがとうございます。試してみます。
481:デフォルトの名無しさん
08/04/26 12:21:27
>>479
URLリンク(delphi.arcadiangarden.com)
482:479
08/04/26 12:31:31
>>481
ありがとう
483:デフォルトの名無しさん
08/04/26 19:02:08
>>474
アイコンの通知を受け取るためにAllocateHWndで定義したメッセージ処理メソッドで
処理したかったメッセージ以外はWin32APIのDefWindowProcIに投げるようにする。
484:デフォルトの名無しさん
08/04/27 02:17:08
>>476
そういうことを気にしなくてもいいコードを書くべき。
485:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/04/27 15:40:29
>>484
ここは超初心者用スレだから、そんな難しいこと言われても無理。
487:デフォルトの名無しさん
08/04/27 15:43:01
そもそも会話が成立してないからスルーで桶
488:デフォルトの名無しさん
08/04/27 16:25:37
>>485
Turboが嫌なら金払え
489:デフォルトの名無しさん
08/04/27 16:48:17
金なんか払わんよ
490:デフォルトの名無しさん
08/04/27 17:39:17 BE:209243-PLT(12660)
>>488
フリーだとADO使えないの?
491:デフォルトの名無しさん
08/04/27 18:09:02
Delphi6だと、DataSet系ついてないと思った。
492:デフォルトの名無しさん
08/04/27 20:57:16
ADOIntf.pasついてないのか?
493:デフォルトの名無しさん
08/04/28 11:53:30
TurboDelphi用のQuickReportは無いのですか?
いくら探しても…
494:デフォルトの名無しさん
08/04/28 12:18:29
バンドル版じゃなくて商品版はあるんじゃね?
495: ◆XcB18Bks.Y
08/04/28 17:36:06
>>485
Turbo Delphi Explorerを導入される方が早いと思います。
統合開発環境が.NETベースなのでインストールが面倒なのがなんですが。
496:デフォルトの名無しさん
08/04/28 17:42:15
Turboでコンポーネントインスコ出来たらいいんだけどなあ・・・
497:デフォルトの名無しさん
08/04/28 17:48:57
買えよ
498:番組の途中ですが名無しです
08/04/28 17:54:51 BE:626494-PLT(12660)
>>495
ちょっと悩みましたが、TurboDelphiを導入してみようと思います
ありがとうございました
499:デフォルトの名無しさん
08/04/28 19:03:35
htmlのプレビューを、IEエンジンのように時間を掛けずに表示する方法はありますか?
THogeTextViewが一番いいと思うのですが、どう使えばいいのか分かりません・・・
500:デフォルトの名無しさん
08/04/28 23:11:41
Turbo Delphi無料版で、リソースファイル(.res)を作りたいのですが、
どうすればいいでしょうか?
あるサイトで
「rcファイルを作成し、プロジェクトに追加し、コンパイルすれば、
自動的にresファイルが生成される」と書かれていたのですが、その通りに実行すると、
[Pascalエラー] E1026 ファイル'~~.res'が見つかりません
というエラーになってしまいます。
よろしくお願いします。
501:デフォルトの名無しさん
08/04/28 23:30:24
外部のプロセスから出力されたOutputDebugStringの文字列を取得するコンポってないですか
502:デフォルトの名無しさん
08/04/29 04:48:56
>>500
URLリンク(www.wilsonc.demon.co.uk)
503:デフォルトの名無しさん
08/04/29 06:04:01
>>500
brcc32 hoge.rc
で、rcファイルをコンパイルしてみるとか。
504:デフォルトの名無しさん
08/04/29 11:07:28
>>500
URLリンク(homepage2.nifty.com)
505:デフォルトの名無しさん
08/04/29 11:25:47
504補足
プロジェクトにrcファイルを追加したら、
一旦「ファイル→全て閉じる」してから再度プロジェクトを開いてください。
これでコンパイル出来ると思います。
これってTurboDelphi無料版のバグかな?
506:わかな
08/04/30 00:31:31
CのオブジェクトファイルファイルをDelphiでリンクするやり方教えて!
507:デフォルトの名無しさん
08/04/30 00:43:32
{$L XYZ.obj}
508:わかな
08/04/30 01:07:55
>>507
ありがとうヽ(*^。^*)ノ
509:500
08/04/30 09:09:26
>>502-505
返事が遅れてすみません。>>503さんの方法で上手くいきました。
>>502 DLして試しましたが、よく分かりませんでした・・・
>>504-505 ご丁寧にありがとうございました。今後の参考にさせていただきます。
510:デフォルトの名無しさん
08/04/30 17:14:21
LeadBytesってLeadByteTable: array[#0..#255] of Booleanにした方がよっぽど速いな
511:デフォルトの名無しさん
08/05/01 20:44:33
Delphi2008はリリースされないの?
512:デフォルトの名無しさん
08/05/01 20:50:37
Delphi2008でググればいろいろ出てくるぜ
513:デフォルトの名無しさん
08/05/01 21:23:38 BE:174252-PLT(12660)
TurboDelphi入れてみたけどコンパイル遅くなったのは何で?
514:デフォルトの名無しさん
08/05/01 22:43:44
そりゃそうだろう。 Windowsだって、XPからVistaにすると遅くなる。
515:デフォルトの名無しさん
08/05/01 22:44:49
なるほど
516:デフォルトの名無しさん
08/05/01 22:59:27 BE:469793-PLT(12660)
>>514
うん。なるほど
MS-Access入って無い環境でもmdb+ADOのアプリって動く?
517:デフォルトの名無しさん
08/05/01 23:38:58
>そりゃそうだろう。 Windowsだって、XPからVistaにすると遅くなる。
そしてVistaは誰にも嫌われる、と。
確かにDelphiの最新バージョンと一緒なんだな。
518:デフォルトの名無しさん
08/05/02 07:39:53
ウンコPCは窓から捨てろよ
519:デフォルトの名無しさん
08/05/02 07:48:33
【Borland】CodeGearオッチャ その8【(ノ∀`)アチャー】
スレリンク(tech板)
520:デフォルトの名無しさん
08/05/02 09:20:39
TurboDelphiとTurboDelphi.NETって共存できないの?
521:デフォルトの名無しさん
08/05/02 09:57:12
>>520
できますん
522:デフォルトの名無しさん
08/05/02 15:50:42
TDateTimeからUTCの時間(文字列、もしくは、年、月、日の数値)を取得する方法教えてくださいでつorz
523:デフォルトの名無しさん
08/05/02 17:11:00
>>522
>>305
524:デフォルトの名無しさん
08/05/02 18:03:04
ちょっと疑問なんですが、
Nowでとった時間をTQueryなんかでAsDateTimeで設定したとしたら、
UTCとして登録されるのかな?
もしかして、localtimeとして登録されちゃう?
525:524
08/05/02 18:15:39
あれ?
テストしてみたら、localtimeがRDBに入ってるみたいだけど、そうなの?
これだと、登録した場所によって、時間の前後が変わっちゃうんだね。
526:524
08/05/02 18:27:43
具体的には、
1.日本でNowで日時を取得
2.RDB(Firebird)のTIMESTAMP項目に、AsDateTimeで設定
3.アプリを例えばグリニッジで実行したら
このとき、1と3の日付文字列は同じになるのでしょうか?異なるのでしょうか?
527:524
08/05/02 18:30:17
自分の予想としては、
DateTimeToStrはローカルタイム変換はせずローカルタイムjのみ入力可で、
RDBにはローカルタイムで登録されてるので、
同じ日付文字列になると思うのですが。。。
528:デフォルトの名無しさん
08/05/02 19:06:49
もうちょっともちけつ
529:524
08/05/02 19:18:36
ラジャ!
知りたいのは以下の内容です。
質問1:
RDBに日付を登録するときはローカルタイムで良いのでしょうか?
それともUTCの方が良いのでしょうか?
どちらが良いともいえない場合、どちらが一般的でしょうか?
質問2:
Nowで取得してAsDateTimeでRDBのTIMESTAMP項目に登録すると、
ローカルタイムが登録されるのでしょうか?
質問3:
上記の通り登録したRDBのTIMESTAMP項目をAsDateTimeで取ってきて、
DateTimeToStrした場合、
ロケールがどこに設定されたとしても、”日、時、分”は同じものとなるのでしょうか?
530:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/05/02 22:35:49
>>524
>>質問2,3
ADO,DBExpress何を使ってるかしらんが、基本的にドライバ次第。
ひねくれた?ドライバでなければ、TimeStamp値として渡した日付時刻がそのまま
登録される。勝手に変換したりはしないと思う。渡す日付時刻をどう解釈するかは
アプリ次第。
532:デフォルトの名無しさん
08/05/02 22:58:27
>>510
集合はビット演算が入るから、配列より遅くなる。 でも、メモリ消費は1/8だよ。
>>530
MSDNには、下記のようにある。
>ほかのプロセス内のコントロールのテキストを設定するには、
>SetWindowText 関数を呼び出すのではなく、直接 WM_SETTEXT メッセージを送ります。
533:デフォルトの名無しさん
08/05/03 00:07:54
TStringListのDelimiterに<>などの2文字以上の文字を設定するにはどうすればいいのでしょうか
置換で代替できるとは思うのですが格好よくないので使いたくありません・・・
534:デフォルトの名無しさん
08/05/03 00:16:35
>>533
無理
SetDelimitedTextルーチンをぱくって自分で書くしか。
単純な置換だと""の中まで変えちゃうから要注意。
535:デフォルトの名無しさん
08/05/03 02:02:47
>>533
具体的に1文字で何ができないのかを言った方が、解決すると思う
536:デフォルトの名無しさん
08/05/03 02:16:34
>>534
ありがとうございます
URLリンク(www.din.or.jp)のを使わせてもらうことにします
537:デフォルトの名無しさん
08/05/03 02:19:48
>>535
すみません、リロード忘れてました
2chのDATを扱いたいので・・・
一応<だけでやってもいいとは思いますが面倒なので・・・
538:デフォルトの名無しさん
08/05/03 02:22:34
>>537
TRegExpおすすめ
というかdat処理ならこういうの入れないとめんどくさくて無理
539:デフォルトの名無しさん
08/05/03 02:27:38
>>538
なるほど、正規表現の手がありましたか
確かに分かりやすそうです
ありがたく使わせてもらいます
540:デフォルトの名無しさん
08/05/03 08:39:07
>>532
情報ありがと。
けどメッセージ飛ばしたけど、書き換えできなかった・・・。
もう手はないかな?
541:デフォルトの名無しさん
08/05/03 09:25:51
特定のウィンドウにキーを送るのではなく
グローバルホットキー、例えばCtrl+Alt+G
を発動させるコードってどう書くんですか
542:|Д゚彡 ◆A6VzDeLphI
08/05/03 14:56:30
Ctrl/Shift/Alt/Winキーを受け付けるWindowsのHotKeyを登録・処理する
URLリンク(delfusa.main.jp)
543:デフォルトの名無しさん
08/05/03 15:29:58
HotKeyを受け取って自分で処理したいのではなく
その逆にどこかのアプリで登録済みのHotKeyを
呼び出してそのアプリの機能を呼び出したいということです。
その際直接そのアプリを指定しないでキーボード操作のみの形でやりたいです。
544:|Д゚彡 ◆A6VzDeLphI
08/05/03 15:46:31
key_eventで、キーをおしたことにすればいいんじゃないのかな?
特定のアプリ専用なら
俺なら、ウィンドウ列挙してそのアプリを前面にもってきてから
アクセラレータキーを送るとか、
そうするなあ。
545:デフォルトの名無しさん
08/05/03 16:30:05
SetWindowsHookEx をやりたいって事のようだけど
コレは色々悪さ出来るからな。
どっちにしても自前で解決して欲しい所。
546:デフォルトの名無しさん
08/05/03 16:59:03
全部の窓からWM_GETHOTKEYで 設定されてるキーを調べて
その窓に対してコマンドを送ればいいんじゃないの?
547:デフォルトの名無しさん
08/05/03 20:42:59
普通に key_event 6回だろ。
548:デフォルトの名無しさん
08/05/04 09:36:12
>>545
とりあえずマウスのフックとキーボードが押されたときに反応する(フックっていうのか?)のはできるんだけど、
電卓の例の場合はどういう種類のフック使うんでしょうか?
549:デフォルトの名無しさん
08/05/04 10:30:30
>>548
Delphi関係ないからAPIスレで聞け
Win32API質問箱 Build65
スレリンク(tech板)
550:デフォルトの名無しさん
08/05/04 19:11:50
フォームではなく、特定のコンポーネントにファイルをD&Dして
受け取らせるにはどうやったらいいのでしょうか?
551:デフォルトの名無しさん
08/05/04 19:19:50
フォームならできるのにコンポーネントだとできない理由は?
552:デフォルトの名無しさん
08/05/04 20:51:09 BE:974887-PLT(12660)
ウインドウハンドル持ってないコンポはダメじゃなかったっけ?
553:デフォルトの名無しさん
08/05/04 21:47:52
>>552
TGraphicControl派生コンポはTPanel置いてその中に置けばおk
554:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/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
08/05/04 22:51:03
みなさんありがとうございます
早速やってみますね
558:デフォルトの名無しさん
08/05/04 23:16:23
DragQueryPointでその位置にあるコントロールを取得しては?
559:デフォルトの名無しさん
08/05/05 09:30:28
いつも助かっています。
Open SourceのでかいDelphiで書かれたソフトがあり、それで
勉強しようと思っています。CTRL-Cや’;’を押してどういう処理が
されているのかをとりあえず見たいのですが、どういう文字の検索を
すれば該当部分のコードを見れるでしょうか?
OnKeyで探したのですが、それらしき処理をしている所には飛んで
いかなかったのですが。
560:デフォルトの名無しさん
08/05/05 09:38:27
実行させてみるのが一番いいと思うよ。
OnKeyって事はコンソールアプリじゃなくて GUI アプリなんだろ?
windowsGUIならイベントは全部 TAplicatioの OnMessage でひっかけられるから
この中で キーイベントを IF 文入れて ブレークポイントかけられるようにして
トレースしてゆけばいい
561:デフォルトの名無しさん
08/05/05 10:43:29
もしTActionのショートカットに入ってたらソース上には現れない
フォームを右クリックしてエディタで表示して例えば「;」なら「187」って
いう生数字を探せば見つかる
562:デフォルトの名無しさん
08/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のショートカットは登録してないですし
URLリンク(www.sph.sc.edu)
なのですが...
563:デフォルトの名無しさん
08/05/05 14:06:49
MDIChildってフォームのメニューに"Ctrl+C"と";"のショートカットが割り当てられた項目あるけど違うのけ?
564:デフォルトの名無しさん
08/05/05 14:43:09
あ、ありがとうございました。元Sourceをみていただいて
とても感謝しています。
Childwin.dfmの中を見ればいいんですね。
*.pasの中だけ、187の検索をしていました。
これをみると、Copyはshortcut16451とありますが、これは
CTRL+Cでいいんですよね..??
本当にありがとうございました。
565:デフォルトの名無しさん
08/05/05 15:10:46
> これをみると、Copyはshortcut16451とありますが、これは CTRL+Cでいいんですよね..??
そう
566:デフォルトの名無しさん
08/05/06 08:18:38
お前ら、SpTBXLibの2.0が出てますよ
URLリンク(club.telepolis.com)
2.0からTBXが不要になりました
567:デフォルトの名無しさん
08/05/06 11:44:46
SetLength(S, $7FFFFFFF)とやるとAccessViolationが
でます。Delphiは境界テスト?もろくに行われていない製品なのでしょうか?
SetLength(S, $7FFFFFFF - 10)でやっと「メモリ不足」というエラーがでます(これは
別にいいんですが)。10というのはどっからきてるんでしょうね。参照カウンタと長さ用の領域に
8バイト、終端文字に1バイト、あと?
568:デフォルトの名無しさん
08/05/06 11:48:42
Delphiは境界テスト?もろくに行われていない製品なのでしょうか?
Delphiは境界テスト?もろくに行われていない製品なのでしょうか?
Delphiは境界テスト?もろくに行われていない製品なのでしょうか?
569:Delフサギコ ◆A6VzDeLphI
08/05/06 13:05:03
|,,∧
|゚Д゚彡
|⊂ミ
>>567さん
ほんとうだ。。よく気がついたね。
570:デフォルトの名無しさん
08/05/06 13:46:54
あるいはメモリマネージャ側のエラーかもな
571:デフォルトの名無しさん
08/05/06 13:55:56
今試せないけど、データ型が大きすぎとかでそんなエラーになるとオモッタなあ。違うの?Sがなんだか知らんが
572:デフォルトの名無しさん
08/05/06 14:36:26
型が大きすぎでAccessViolationはねーよw
573:デフォルトの名無しさん
08/05/06 15:44:02
ソース見ればアクセス違反が出るまでの経緯が分かるけど、単にチェック不足だな。
要求メモリ量が負になっても気にせず続行する男気あふれるコードだ。
574:デフォルトの名無しさん
08/05/06 18:33:32
TSaveDialogでOptionsのofShowHelpをTrueにするとヘルプボタンが表示されますが
どのイベントでひろえば良いのでしょうか。
575:デフォルトの名無しさん
08/05/06 21:14:47
WM_HELPを拾えばいいんでない?
576:デフォルトの名無しさん
08/05/06 23:15:22
質問です^^
デルファイ7使ってるんですが
「元に戻す」(アンドゥ)ってどうやるんでしたっけ
先日分からなくて諦めました
3作業前に戻るとか出来ないんですかね^^;;;;;;
577:デフォルトの名無しさん
08/05/06 23:17:48
7では無理
578:デフォルトの名無しさん
08/05/06 23:35:45
>>577
まじでぇえええええ^^
あり;;
579:デフォルトの名無しさん
08/05/07 09:30:11
>>575
ダイアログを表示しているフォームのOnHelpでも、TApplicationのOnmessage
でMsg.messageをWM_HELPで判定しても
procedure WMHelp(var msg: TMSG); message WM_HELP;をprivateで宣言して
やってもひろえていないようです。どうして?
580:デフォルトの名無しさん
08/05/07 11:21:00
>>579
TApplication.HandleにRegisterWindowMessage(HELPMSGSTRING)で送られてるみたいだが
581:デフォルトの名無しさん
08/05/07 16:08:54
>>580
ありがとう。でも分からなかったです。とほほ
582:デフォルトの名無しさん
08/05/07 17:25:29
>>581
WinspectorとかでTApplicationの持つウィンドウのメッセージ監視すれば引っかかるはずだよ。
TApplication.OnMessageでは引っかからないからTApplicationのウィンドウをサブクラス化しないと受け取れないかも。
583:デフォルトの名無しさん
08/05/07 20:07:13
というかダイアログのHelpContextを設定しておけば
Application.HelpFileで指定しといたヘルプ
(の該当するトピック)を開いてくれるんだが。
それ以外のことをやりたいわけ?
584:デフォルトの名無しさん
08/05/08 07:27:53
TApplicationのウィンドウプロシージャーなら、Application.HookMainWindowでOK.
WM_COMMANDもどこかのウィンドウに送られている。(ダイアログのトップレベルのウィンドウかも)
585:デフォルトの名無しさん
08/05/08 08:10:53
色々ありがとうございます。ちなみにHTMLヘルプなもんで…HelpContextでは
うまくいきませんでした。それから Application.HookMainWindow も少しだけ
試したんですが。もう少し気合入れて調べてみます。
586:デフォルトの名無しさん
08/05/08 22:12:24
TBXを配布しているサイトが見れないのですが、TBXを再配布しているサイトはないのでしょうか?
587:デフォルトの名無しさん
08/05/08 22:34:11
微妙にバージョン違い?
URLリンク(www.torry.net)
588:デフォルトの名無しさん
08/05/08 22:54:06
ありがとうございます
使ってみます
589:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/05/09 03:55:41
そのWriteComponent内で呼ばれるTWriterのコードでも見たら?
まさにそのものをやってるメソッドがあるから
591:デフォルトの名無しさん
08/05/09 04:46:57
TPersistentから継承しなくても良かったっけ?
592:デフォルトの名無しさん
08/05/09 05:04:16
誰か例のTGifImageの脆弱性なおしておくれ
593:デフォルトの名無しさん
08/05/09 08:06:58
JaneStyleはTGifImageを修正してるみたいですね
594:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/05/09 11:04:57
>>594
行けたぜGJ!
でも俺の場合5873行なんだがこれはバージョンの違い?
一応2.2なんだが・・・
596:Zzz
08/05/09 11:24:39
質問お願いします
Delphi7なんですけど
(最大化最小化閉じるボタンを非表示などをした)Formを
同プロジェクト内の別のFormでも使いたくFormごとコピーして
使用したいのですがコピーやり方がわかりません
どうやれば実現できるのでしょうか???
597:デフォルトの名無しさん
08/05/09 11:37:16
ExplorerでForm1.pas/.dfmをForm2.*にコピー&リネームして
ファイル内のユニット名、クラス名、Nameプロパティ名を調整。
フォーム上のコンポーネントやプロパティの設定は.dfm
イベントハンドラ等のコードは.pasにあるから適当に切り貼りしてもいいかも。
名前をつけて保存でForm2とかやっちゃうとForm1が破棄されForm2を使い出すからわけわかってないと悲惨なことに。
IDEでは使いまわし支援でリポジトリなるものをサポートしているけどほとんど使ったことない。
活用してる人っているのかね。
なんにしてもプロジェクト全体のバックアップをしてから試したほうがいいかもね。
598:Zzz
08/05/09 11:40:36
やはり意外と、つらそうな道のりですね
了解しました
地味に作成しようと思います
リポジトリの使用方法も忘れてつつあるので・・・
ありがとうございました
599:デフォルトの名無しさん
08/05/09 11:40:40
うちは5846行目だった
TGIFSubImgae.Decompressプロシージャ内のNextLZW関数内だよね?
600:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/05/09 13:17:57
>>596
継承して使うと似たようなフォームで少しだけ違うような場合に便利だよ
ファイル⇒新規作成⇒その他 で出たダイアログのタブの今のプロジェクト内から Form1を選んで
下の ・継承 を確認して [OK]
602:Zzz
08/05/09 16:50:32
たびたびすいません
質問です
リストボックスやコンボックスのItems欄に選択「文字」を追加する
方法が分かりません
・・・と書くとItem addとか思われると思いますが、もう一歩進んで
その追加したを随時に追加し、且つ保存したいのです
プログラムを終了させる、プログラムを起動させる
「追加したデータが消えてる(涙・・・」
どうやれば保存できるのでしょうか
最終的には、マイナーなコンポーネントに対し保存したいのですが
基本のリストボックスやコンボックスのやり方を教授していただければ
自分で考えますので(当たり前ですけど)ヒントの程お願い致します
603:デフォルトの名無しさん
08/05/09 17:09:42
終了時にファイルに保存して起動時にファイルから読み込む。
604:Zzz
08/05/09 17:23:32
>>603 おしい
それも一つの手ではあるんですが、最終的にコンポーネントの
Items欄に追加したいのでItems欄に保存する方法はないのかと
言うのを知りたいのです
605:デフォルトの名無しさん
08/05/09 17:31:18
質問する前に日本語を勉強する
606:デフォルトの名無しさん
08/05/09 17:41:48
いまいちよくわからないがexeのどこかに保存されているであろうItemsのデフォルト値に対して保存・読み出ししたいってことか?
もしそうなら、コンパイルする度に値が吹き飛ぶぞw
607:デフォルトの名無しさん
08/05/09 18:42:09
そういうことができるなら ini ファイルはいらんがな・・
608:デフォルトの名無しさん
08/05/09 18:57:18
リソースを書き換えたいのか? 出来るだろうが、なんでiniファイルは駄目なんだ?
609:デフォルトの名無しさん
08/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
08/05/09 23:16:25
>>609
むむー
ListBox1.Items.SaveToFile(ListDat); で行けるかも
えっと
Items欄に保存ってゆうのは・・・・・・
コンボボックスとかは、選択肢をItems.Addしなくても事前に入れて置けるじゃないですか(うろ覚えすまん)
あれってPgで、あるボタンを押した時のイベントでItems.Addして追加しても、
Pg終了して、再度Pg再開してコンボボックスの中見ると消えてるじゃないですか(あたりまえですけど)
つまり、そのItems欄の中にデータを残しておきたい訳です
(↓コンボの中)
にんじん
だいこん
トマト
↓(いもを追加)
(↓コンボの中)
にんじん
だいこん
トマト
いも
↓(システム落として再起動)
(↓コンボの中)
にんじん
だいこん
トマト
(がーん いもは・・・・・)
611:デフォルトの名無しさん
08/05/10 00:01:24 BE:348454-PLT(12660)
iniかレジストリ使うのが普通じゃね?
612:デフォルトの名無しさん
08/05/10 00:55:11
自分で言ってるけど消えるのは当たり前なんです
そういうのは外部のファイルに記録しておいて
再開したときに読み込むのがいいと思います
613:デフォルトの名無しさん
08/05/10 07:42:56
だから、設計時に追加した情報は、コンパイルするとリソースとしてexeに含まれるの。
614:デフォルトの名無しさん
08/05/10 10:03:01
TIniFile使ってやるのが一般的じゃね?
>>610の気持ちもわからんではないが・・・逆にIDEで初期値を入れられるだけでも便利と思え!
ListBox1.Items.Commatext:=ReadString('ListBox1','Items','');
WriteString(ListBox1','Items',ListBox1.Items.CommaText);
615:デフォルトの名無しさん
08/05/10 10:27:37
dfmファイルを外部に持たせればOK.
616:デフォルトの名無しさん
08/05/10 11:28:00
彡川三三三ミ
川出 ::::::⌒ ⌒ヽ パクリ星からやってきたお!
出川::::::::ー●-●-)
..川(6|:::::::: ( 。。)) パクリ星の王子様の◆Style/kK.sだお!
出川;;;::∴ ノ 3 ノ
ノ\_;;;;;;;;;;;;;;;;ノ Janeスレ荒らしてるヒキコモリだから友達できないお!
( * ヽー--'ヽ )
(∵ ;) ゚ ノヽ ゚ ):) チンポは極小で包茎だお!!ちなみに童貞だお!!
(: ・ )--―'⌒ー--`,_)
(___)ーニ三三ニ-)
(∴ ー' ̄⌒ヽωニЗ 好きなものは他人のソースとオナニーとwarezだお!!
`l ・ . /メ /
ヽ ∵ /~- /. 今日もたくさんソースパクリまくるお!!
(__)))))_)))))
617:デフォルトの名無しさん
08/05/10 14:33:41
>>566
おー、Sliverpoint乙
618:デフォルトの名無しさん
08/05/10 15:14:34
>>587
今頃で申し訳ないんですがエラーが出てインストール出来ません・・・
d6perだからですかね?proだとインストールできるんでしょうか
619:デフォルトの名無しさん
08/05/10 16:15:29
>>618
alpha版はdel7から対応だったように思う
2.1beta1↓
URLリンク(www.fileup.org)
TB2Kのパッチは自分で探してね
620:デフォルトの名無しさん
08/05/10 16:15:47
>>619
passはtbx
621:デフォルトの名無しさん
08/05/10 16:22:52
>>619-620
わざわざうpしていただいてありがとうございます!
インストールしてみます
622:デフォルトの名無しさん
08/05/10 16:46:04
インストールできました!
ありがとうございました!
623:デフォルトの名無しさん
08/05/10 18:24:43
インストールできたのはいいんですがメニューがボタンのようになってしまいます・・・
これじゃ当初の目的が達成できないのですが、どのようにすれば普通のメニューのように出来るのでしょうか
624:デフォルトの名無しさん
08/05/10 18:28:59
すみません、自己解決しました・・・
625:デフォルトの名無しさん
08/05/10 18:30:40
わけわかんねー事言ってんじゃねぇよタコ
小学生からやりなおせ
626:デフォルトの名無しさん
08/05/10 19:07:00
今小学5年生です・・・・
627:デフォルトの名無しさん
08/05/10 19:15:49
「相撲」って人気有るんだな
映画化されて・・・と思った・・・おれは小学生からやり直すべき?
628:デフォルトの名無しさん
08/05/10 19:17:12
相模だろw
629:デフォルトの名無しさん
08/05/10 19:18:37
意味の解らない俺はどれからやり直せばいいんだ?
630:デフォルトの名無しさん
08/05/10 20:02:46
アセンブラからだろ とーぜん
631:デフォルトの名無しさん
08/05/10 20:30:43
精子から
632:デフォルトの名無しさん
08/05/10 20:42:11
Office2007でコンテキストメニューを表示したとき
その上にツールバーも一緒に表示するUIが何気に便利なんだけど
あれどうやって実現するんだろう。
633:デフォルトの名無しさん
08/05/10 21:24:25
実現も何も・・ただそういうウィンドウを表示してるだけだよ。
634:デフォルトの名無しさん
08/05/11 03:52:32
うまく言えないんですがエスケープシーケンスのある文字列を変換するにはどうすればいいんでしょうか
たとえばabc\ndefという文字列があった時に
abc#10def(#10はもちろん文字列としてではなく)に変換するみたいなのです
635:デフォルトの名無しさん
08/05/11 03:56:24
お願いします。APIを使ったプログラムに不自由してるくらいの実力の者です。
URLリンク(d.hatena.ne.jp)
ここのサイトの通りにTMemoに検索をつけてみたんですが、検索方向が下向きに検索できるのですが、上向きには検索できません。
どうすればできるようになるのでしょうか?
ちなみに環境はWindowsXPHome,Delphi5Proです。
636:デフォルトの名無しさん
08/05/11 05:17:38
>>634
つStringReplace
>>635
TFindDialog.OptionsにfrDownが設定されているかを確認して
自分で切り替える必要があります
637:634
08/05/11 05:27:03
>>636
一応\nだけではなくて\tとか漢字とかもエスケープされてるようなので使えないです・・・
638:デフォルトの名無しさん
08/05/11 07:56:46
>>637
つ正規表現 TRegExp
639:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/05/11 08:11:02
>>634 はもしかして C言語スタイルの \ エスケープでエンコードされた
文字をデコードしたいって事じゃないかと思ってサンプルコードを書いてみた
641:634
08/05/11 08:27:34
>>638
TRegExpは何だかさっぱりであまり使ってません・・・
>>639,640
ありがとうございます
元のプログラムはCのようなのですがそれの仕様が良く分からないもので・・・
一応「テスト」という文字が「\83e\83X\83g」になるということは分かってます
642:デフォルトの名無しさん
08/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
08/05/11 09:26:00
>>642
それで出来たようです!
ご迷惑かけました!
そしてありがとうございました!
644:デフォルトの名無しさん
08/05/11 12:15:59
フォームのボタンなどのキャプションに付けるアクセラレータって言うんでしょうか
(&A)みたいにするとAltキーとAを一緒に押すとクリックされるやつですが、
コントロールが多くなってくると、どれが使われていないのか探すのが大変です。
便利なワザみたいなの、ありませんでしょうか。
645:デフォルトの名無しさん
08/05/11 12:40:14
ActionList
646:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/05/11 18:17:09
質問です。
TMemo に長いテキストを読み込ませたいのですが LoadFromFile で一気に読み込むと一瞬フリーズしたようになります。
そこで、スクロールに合わせて小分けに読み込むようにしたいのですが何か良い方法はありませんか?
648:デフォルトの名無しさん
08/05/11 18:50:47
>>647
マルチスレッド
649:デフォルトの名無しさん
08/05/11 19:08:34
>>648
お答えありがとうございます。
ですが、メモリを節約して小分けに読み込み表示してスクロールバーの振る舞いはファイルサイズに合ったものにしたいのですが、どうにかなりませんか?
650:デフォルトの名無しさん
08/05/11 19:23:38
はなっからスクロールバーを適正サイズにしたいってこと?そりゃ無理。どれだけの行数があるのかは
読み込んでみないとわからないっしょ?
651:デフォルトの名無しさん
08/05/11 19:26:12
>>650
確かにそうですね。妥協することにします。
>>647 終了です。ご回答くださった方ありがとうございました。
652:デフォルトの名無しさん
08/05/12 07:36:01
TStringListにいったん読み込めばいい。
653:デフォルトの名無しさん
08/05/12 15:29:15
複数キー入力を検出するにはどうすればよいでしょうか?
Ctrl+Alt+Delとかのことです。
よろしくお願いします。
654:デフォルトの名無しさん
08/05/12 15:31:32
そんな無作法なツールは死ねばいい
655:デフォルトの名無しさん
08/05/12 16:01:57
>>653
TShiftState
656:デフォルトの名無しさん
08/05/12 23:00:01
>653
検出はいいけど、何をしたいのか具体的に書いたほうがいいと思うが。
ちなみにCtrl+Alt+Delは捕捉できないので念のため。
657:デフォルトの名無しさん
08/05/12 23:01:57
BBS へ行ったと思われ
658:デフォルトの名無しさん
08/05/12 23:42:30
TMemo でスクロールせずに表示できる行数を知るには ClientHeight を Font.Height で割れば良いのでしょうか?
659:デフォルトの名無しさん
08/05/13 00:07:26
1分で確かめられる事をわざわざ聞きにくるな
660:デフォルトの名無しさん
08/05/13 02:25:24
1分使って自分で確かめるくらいなら2分使って質問を投げる勇気を私はもちたい。
661:デフォルトの名無しさん
08/05/13 03:02:10
:::::::::::.: .:. . ∧_∧ . . . .: ::::::::
:::::::: :.: . . /彡ミ゛ヽ;)ヽ、. ::: : ::
::::::: :.: . . / :::/:: ヽ、ヽ、i . .:: :.: :::
 ̄ ̄ ̄(_,ノ  ̄ ̄ヽ、_ノ ̄
662:635
08/05/13 12:49:06
>>636
ありがとうございます。帰ってやってみます。
663:デフォルトの名無しさん
08/05/13 21:40:18
これからDelphiをはじめる初心者ですが
TurboDelphi用の初心者向け参考書はありますか?
お勧めがあれば教えて下さい。
664:デフォルトの名無しさん
08/05/13 21:50:23
>>594
>>595
>>599
melander ってしらないうちにオンラインにカムバックしてたのね
URLリンク(melander.dk)
ここで各種 Delphi のバージョンアップ対応のメンテ版を公開していたので
同じ 2.2 でもバージョン違いが存在する
URLリンク(www.tolderlund.eu)
で、そもそも TGIFImage は CodeGear に寄贈されて最新版の3.0は Delphi 2007 に同梱と
665:デフォルトの名無しさん
08/05/13 23:38:58
>>664
D2007のTGIFImage3も>>594のはバグってる
でも他のInterlaceなGifの問題は直ってたりするけど
URLリンク(www2.ttcn.ne.jp)
666:デフォルトの名無しさん
08/05/14 02:11:31
(;^ω^)今更ながらtypeとポインタが便利な事に気付いたwwww今まで時間無駄にしてたわwwwwwww
667:デフォルトの名無しさん
08/05/14 05:23:00
で、TGIFImage の開発元にフィードバックしたいのだが。
で、いくつか問題起こす gif を見ましたが、なんつーか児童ポルノに厳しい国でも
レポートできるようなアニメーション GIF で再現できない物ですかねぇ
668:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/05/14 14:03:27
ウィンドウハンドルを指定してそのウィンドウのキャプチャをCanvasに描くのってどうやるの?
670:デフォルトの名無しさん
08/05/14 16:52:05
ランダムな2バイト文字を生成するにはどうすればいいんでしょうか
671:デフォルトの名無しさん
08/05/14 17:27:16
'ランダム'
お約束すぎた?
672:デフォルトの名無しさん
08/05/14 21:06:49
>>669
GetWindowRect(ハンドル,Rect);
GetDC
673:デフォルトの名無しさん
08/05/15 13:49:45
calendarExと言うdelphiのカレンダーコンポーネント使ってるんですけど
Appendで特別な祭日(2008/5/6)の追加できたんですけど削除の仕方がわかりません^^;
どうやればいいのでしょう
すれ違いだと思いますが罠にもすがる思いで質問します
674:デフォルトの名無しさん
08/05/15 14:18:30
罠にすがられたいという事なんで レスしてみる
calendarEx と言われても、誰もが付けそうな名前なんで判らん。
とりあえず一番簡単なのは、Createをメソッドとして読んで
再度 設定しなおしたら駄目?
レジストリやファイルに保存してないならだけどさ
675:デフォルトの名無しさん
08/05/15 15:30:39
罠???
糸・・・藁だ 藁
なるほどその手もありましたか
このソフトなんか10年くらいの前のソフトらしく四苦八苦してます
ヒントくれてありがとうございます ;;
676:デフォルトの名無しさん
08/05/15 15:51:13
>>670
全2二バイト文字を抽出しておいて、そこからランダムに選んだらどうだろう。
677:デフォルトの名無しさん
08/05/15 20:20:00
うーん、2バイト文字ってのも良く分からないけど
何でランダムに抽出したいのか、その使い道が気になるにょ
678:デフォルトの名無しさん
08/05/16 19:09:21
>>670
文字コードにもよるが、SJISのランダムな日本語を得たいのかな?
679:670
08/05/16 19:55:14
>>676
それだけでかなりの時間がかかりそうですですね
>>677
色々です、色々
>>678
そうです、SJISです
680:デフォルトの名無しさん
08/05/16 22:17:52
結果はファイルにでもキャッシュしておけばいい。
SJISに割り当てられている全文字合わせても20KBくらいだし。
681:デフォルトの名無しさん
08/05/17 01:28:40
無効な文字なら、アウトラインを取得できないかもしれないから、
それ使って判断できるかも。
682:デフォルトの名無しさん
08/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:番組の途中ですが名無しです
08/05/17 11:59:35
>>682
>選択行を1段下げる
MultiSelectだと飛び飛びで選択している場合もあるけど
その場合は?
684:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/05/17 14:06:00
>>682
<<1でTListItem.SelectedをFalseにしているのだから
<<2のTListView.Selectedはnilになってる
686:682
08/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:デフォルトの名無しさん
08/05/17 15:16:38
マルチセレクトでないなら
ListView.ItemIndex := ListView.ItemIndex + 1
でいいんじゃない?
688:デフォルトの名無しさん
08/05/18 17:56:34
指定した文字列がファイルとして作成できるか確認する方法はありますか?
例えばC:\Delphi.txtを渡すとTrue、C:\Delphi\を渡すとFalseを返す、などということです
689:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/05/18 18:17:14
>>688
ヘルプでFileCreate検索しろ
>>689
ListViewの扱い方をまず学べ
691:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/05/18 18:30:13
>>690,692
FileCreateで行けるようですね、ありがとうございました
694:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/05/18 18:48:41
本当にすみません。
>>692さんのコードでできました。お騒がせいたしました。
また、答えてくださった方ありがとうございました。
696:デフォルトの名無しさん
08/05/18 18:56:07
>>691さんのコードもできました。
変に打ち間違えていたようです。
すみませんでした。
697:デフォルトの名無しさん
08/05/20 06:08:00
>>696
うるせ馬鹿
死んで詫びろ
698:デフォルトの名無しさん
08/05/20 06:10:06
>>690
お前も死ね
699:デフォルトの名無しさん
08/05/20 17:44:20
ActionListをダブルクリックすると編集ウィンドウが開きますが、
この位置や大きさをプロジェクト単位で覚えさせとくってできます?
700:デフォルトの名無しさん
08/05/21 00:32:41
知らぬ間にPngDelphi氏んでたのね
URLリンク(www.codeplex.com)
701:デフォルトの名無しさん
08/05/21 07:14:42
>>699
フリーウェアでそんなのがありそうだな。
ソフトウェア板行って聞いてみたら。
702:デフォルトの名無しさん
08/05/21 11:04:56
Memo1.Lines.LoadFromFile(FileName);
とかでEUCのテキストを読み込むと文字化けしますが
これを読めるように表示することってできるのでしょうか?
テキストエディタだと見た目はeucで読み込んで表示し
保存もeucのまましてるように見えるけどあれは
内部でシフトJISに変換して表示して、保存時は再度eucに変換してるだけなんでしょうか?
703:デフォルトの名無しさん
08/05/21 11:35:28
TMemoryStreamで読み込んで
nkf32.dllで変換して
Memo1.Lines.LoadFromStream
704:k
08/05/21 11:52:01
正整数Nを読み込み、x^2≦N<(x+1)^2となる整数x、つまり√Nの近似値を求めるプログラムを、
sqrtなどの標準関数を使わないで作りなさいという問題なんですが。。。
わかりません。教えてもらえませんか?PASCALでやっているんですが。
705:702
08/05/21 11:54:14
>>703
やはりnkf32.dll等で自動判別して読み込んでsjisで表示するんですね
ありがとうございます
706:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/05/21 12:05:02
あ div 2 は 不要だ。
708:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/05/21 14:50:47
わざわざForm3のOnCreateを使ってiniを読む理由は?