くだすれDelphi(超初心者用)その25
■ このスレッドは過去ログ倉庫に格納されています
0001774: 3 挿入
2005/06/17(金) 20:34:51他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが、
お礼はDelphiの布教と初心者の救済をお願いします。
<前スレ>
くだすれDelphi(超初心者用)その24
http://pc8.2ch.net/test/read.cgi/tech/1115581376/
<雑談・討論などはこちらへ>
ミ,,゚Д゚彡フサギコのフサフサDelphi談話室その23
http://pc8.2ch.net/test/read.cgi/tech/1116997081/
<その他>
Borland Home Page
http://www.borland.co.jp/
DelWiki (無料版Delphiの入手方法など)
http://onigiri.s3.xrea.com:8080/delphi/
0002774: 3 挿入
2005/06/17(金) 20:36:0023 http://pc8.2ch.net/test/read.cgi/tech/1110470895/
22 http://pc5.2ch.net/test/read.cgi/tech/1107332482/
21 http://pc5.2ch.net/test/read.cgi/tech/1104511938/
20 http://pc5.2ch.net/test/read.cgi/tech/1101530485/
19 http://pc5.2ch.net/test/read.cgi/tech/1097454588/
18 http://pc5.2ch.net/test/read.cgi/tech/1093996761/
17 http://pc5.2ch.net/test/read.cgi/tech/1091671391/
16 http://pc5.2ch.net/test/read.cgi/tech/1089779142/
15 http://pc5.2ch.net/test/read.cgi/tech/1087823906/
14 http://pc5.2ch.net/test/read.cgi/tech/1085239007/
13 http://pc5.2ch.net/test/read.cgi/tech/1081003641/
12 http://pc5.2ch.net/test/read.cgi/tech/1076610073/
11 http://pc5.2ch.net/test/read.cgi/tech/1076609666/
0003774: 3 挿入
2005/06/17(金) 20:36:4109 http://pc5.2ch.net/test/read.cgi/tech/1071294733/
08 http://pc5.2ch.net/tech/kako/1068/10682/1068201045.html
07 http://pc5.2ch.net/tech/kako/1065/10651/1065195699.html
06 http://pc5.2ch.net/tech/kako/1063/10632/1063202727.html
05 http://pc5.2ch.net/tech/kako/1061/10610/1061090908.html
04 http://pc5.2ch.net/tech/kako/1058/10588/1058834815.html
03 http://pc5.2ch.net/tech/kako/1055/10559/1055986736.html
02 http://pc5.2ch.net/tech/kako/1053/10537/1053757982.html
01 http://pc5.2ch.net/tech/kako/1051/10518/1051882835.html
0004デフォルトの名無しさん
2005/06/17(金) 22:06:430005デフォルトの名無しさん
2005/06/17(金) 23:53:430006デフォルトの名無しさん
2005/06/18(土) 00:50:35してない
TNTを使えとのこと
0007デフォルトの名無しさん
2005/06/18(土) 04:56:510008デフォルトの名無しさん
2005/06/18(土) 06:37:39ありがとうございます。
{$IFDEF UNICODE}
とかでunicodeにできるといいなあとか思ったりしました。
いちいち 〜WとかWIde〜とか面倒ですし
0009デフォルトの名無しさん
2005/06/18(土) 08:18:420010デフォルトの名無しさん
2005/06/18(土) 10:20:11C# でやりましょう。
0011デフォルトの名無しさん
2005/06/18(土) 10:26:23遅くなります。何かいい方法はないでしょうか?
SubTree.Items.BeginUpdate;
SubTree.Items.Clear;
SubTree.Items.Assign(MainTree.Items);
SubTree.Items.EndUpdate;
0012デフォルトの名無しさん
2005/06/18(土) 10:39:11巣にお帰り
0013デフォルトの名無しさん
2005/06/18(土) 10:40:03ヒント:仮想
0014デフォルトの名無しさん
2005/06/18(土) 12:03:32TTreeViewにもTListViewの仮想リストビューのようなものが使えるのですか?
0015デフォルトの名無しさん
2005/06/18(土) 12:26:48http://www.delphi-gems.com/VirtualTreeview
使えるようになると便利
0016デフォルトの名無しさん
2005/06/18(土) 16:58:14どうしたらいいのでしょうか?
エクスプローラからファイル名を取得したり、
エクスプローラへファイル名を渡してコピーする、
というのはいくつか情報が見つかりましたが、
上記の方法がわかりません。
0017デフォルトの名無しさん
2005/06/18(土) 18:22:35失礼かもしれないけど、自分の作ったアプリにドラッグアンドドロップされたファイル名を受け取るロジックは理解しているの?
0018デフォルトの名無しさん
2005/06/18(土) 18:22:550019デフォルトの名無しさん
2005/06/18(土) 18:24:15受け取るのと渡すのでは違う。失礼かもしれないけどそこのとこ理解してる?
0020デフォルトの名無しさん
2005/06/18(土) 19:02:25WideString から WideChar や PWideChar に変換するには、
どうしたら良いでのでしょうか?
0021デフォルトの名無しさん
2005/06/18(土) 19:27:22WideString <-> PWideChar はキャストを使う
WideString -> WideChar は[ ]で何文字目か指定する
const
ws: WideString = 'hoge';
var
pwchar: PWideChar;
wchar: WideChar;
begin
pwchar := PWideChar(ws); //キャストで代入
wchar := s[1]; //sの1文字目を取り出す
end;
0022デフォルトの名無しさん
2005/06/18(土) 19:28:42訂正
wchar := ws[1]; //wsの1文字目を取り出す
0023デフォルトの名無しさん
2005/06/18(土) 19:30:50サイトでは送信しました。と表示されているのですが・・・
これってすぐには届かないものなのでしょうか?
0025デフォルトの名無しさん
2005/06/18(土) 22:03:230026デフォルトの名無しさん
2005/06/18(土) 22:14:48AddFolderイベントで追加されようとしているアイテムをIsFolderで調べてTrueだったら追加しない。
0027デフォルトの名無しさん
2005/06/19(日) 00:07:570028デフォルトの名無しさん
2005/06/19(日) 00:53:290029デフォルトの名無しさん
2005/06/19(日) 01:43:250030デフォルトの名無しさん
2005/06/19(日) 04:10:31CDATAセクションを読み取るにはどうすればよいでしょうか?
niftyのmsxmlサンプルを読んでみましたがCDATAについて書いていませんでした
0031デフォルトの名無しさん
2005/06/19(日) 10:37:39どのファイルをイジればいいんだ?アフォーでスマンけど教えて
http://hpcgi1.nifty.com/MADIA/DelphiBBS/wwwlng.cgi?print+200309/03090064.txt
0033デフォルトの名無しさん
2005/06/19(日) 15:45:47| _____________ |
| |:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::| |
| |:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::| | ザー
| |:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::| |
| |::::::::::::::::::::::::::::::::::::;;;;;;;;;;;::::::::::::::| |
| |:::::::::::/ ̄ ̄ ̄`´ `ヽ:::::::| |
| |::::::::::| :ill||||||||||ll: ,-‐‐、l::::::| |
|  ̄ ̄| ||||||||||||||||「しi .l ll ̄ .|
| ̄「 ̄| |||||||||||||||||i ̄川リ ̄| ̄|
|_| ノ |||||||||||||||||| |_|
/ ||||||||||||||||||
/ /||||||||||||||||||
/ ̄/ ̄ |||||||||||||||||
/ / |l|l|l|l|l|l|l|l
/ / |l|l|l|l|l|l|ll
/ ヘJ l|l|l|l|l|l|l
ノ川 ||l||l||ll
【呪いのコピペ】
このレスを見た人は1週間以内に他のスレへコピペしてください。
そうしないと突然ディスプレイからうわなんだおまえやめ
0034デフォルトの名無しさん
2005/06/19(日) 16:04:310035デフォルトの名無しさん
2005/06/20(月) 00:46:01どうやったら皆さんの言う「プログラミング」たるものが作れるんでしょう・・?
なにかソフトを買ってきてPCに入れるんですか?それとももうPCに作れるようになっているのでしょか?
なんだか自分でもよくわかんない質問ですみません。。
プログラミングは初心者の初心者なんで、お手柔らかに教えていただけると嬉しいです。。。
0036デフォルトの名無しさん
2005/06/20(月) 01:07:000037デフォルトの名無しさん
2005/06/20(月) 01:20:490038デフォルトの名無しさん
2005/06/20(月) 01:51:421.メモ帳を開け
2 format c: と入力
3 test.batというファイル名でデスクトップ上に保存。
4 test.batをダブルクリック
最初にプログラマが通る道だ
0039デフォルトの名無しさん
2005/06/20(月) 02:31:05> 「プログラミング」たるものが作れるんでしょう
プログラミングを作るんではなく、プログラムをつくるのです。
で、プログラムをつくるにはそのための道具がいります。
Delphi でも無料で使用できるモノがあります。
http://onigiri.s3.xrea.com:8080/delphi/index.php?Delphi%A4%CE%C6%FE%BC%EA%A4%C8%A5%A4%A5%F3%A5%B9%A5%C8%A1%BC%A5%EB
そのほか、Perl や Ruby Java JavaScript なども無料で出来ます。
道具をインストールする必要がなく、かなりオブジェクト指向な JavaScript なんか
から手をつけるのがオススメです。本屋に行って1冊、本を買いましょう。
0040デフォルトの名無しさん
2005/06/20(月) 04:19:40大丈夫。初心者ならtest.bat.txtで保存してくれるはずだ。
0041デフォルトの名無しさん
2005/06/20(月) 06:12:19ttp://www25.cds.ne.jp/~kamiken/bach/bach.html
手始めにやるなら Ruby がお勧めかな (ツッコんだことを考えだすと問題もあるけど)
日本製なので日本語の情報も本も多く、言語自体が強力で解りやすい。OOP 言語だし。
JavaScript はブラウザでゴニョゴニョするんだったら逆に辛いかも。Linux ではコンソールもあるけど。
0042デフォルトの名無しさん
2005/06/20(月) 06:26:110043デフォルトの名無しさん
2005/06/20(月) 07:00:460044デフォルトの名無しさん
2005/06/20(月) 14:47:480045デフォルトの名無しさん
2005/06/20(月) 14:56:34出来るよ。つーか調べりゃすぐ出てくるじゃんよ!
0046デフォルトの名無しさん
2005/06/20(月) 15:26:270047デフォルトの名無しさん
2005/06/20(月) 16:09:14ショートカットをダブルクリックすると、ショートカットファイル自体がFilesで渡されてるようです。
ダイアログの中できちんとショートカット先に進めるようにはならないでしょうか?
>ofNoDereferenceLinks
>Windows ショートカットの逆参照を無効にする
というプロパティをいじっても何も変わらず……。
環境はD6/WinXPです。
0048デフォルトの名無しさん
2005/06/20(月) 16:14:05ショートカットからリンク先のパスを取得しれ。
0049デフォルトの名無しさん
2005/06/20(月) 16:24:03調べても出てきません。。
>>46
そのスレを見てもさっぱり。。
005047
2005/06/20(月) 17:25:21ファイル開こうとしただけで強制終了とか。ほんとにすいませんでした。
0051デフォルトの名無しさん
2005/06/21(火) 16:14:25IndyコンポーネントにはIdFTP、IdTrivialFTPコンポーネントがありますが、クライアントが
Winsock2環境でなくてはいけないという条件があり、採用できません。
Delphiのバージョンは7です。
よろしくお願いします。
0052デフォルトの名無しさん
2005/06/21(火) 16:49:470053デフォルトの名無しさん
2005/06/21(火) 17:09:562chでダメならMLですか、松浦くん!
0054デフォルトの名無しさん
2005/06/21(火) 17:21:43WinInetはDelphiで提供されているものではなく、DLLなんですね。
かなり難しそうですが、サンプルを提供されている方がいらっしゃいましたんで、
ちょっと調べてみます。
どうもありがとうございました。
0055デフォルトの名無しさん
2005/06/21(火) 23:28:13以前Niftyの掲示板で見たのですが以前とは変わっていて
前のログは見れなくなりました。
すいませんがどなたか教えてください。
(Niftyはやめちゃいました。)
おぼろげな記憶では
Edit1.txt := Webbrowser1.OleObject・・・・'body'
見たいな感じでした。
0056デフォルトの名無しさん
2005/06/21(火) 23:47:410057デフォルトの名無しさん
2005/06/22(水) 00:09:46例えば、interval が3分で処理時間が10分だった場合、13分おきに実行されるのでしょうか?
3分おきに実行されるのだったら、
処理時間が interval を越えて場合は、どんな処理になるのでしょうか?
0058デフォルトの名無しさん
2005/06/22(水) 00:20:44不思議なことはなにもない。
0059デフォルトの名無しさん
2005/06/22(水) 00:39:5710分おきに OnTimer が呼び出される。
0060デフォルトの名無しさん
2005/06/22(水) 06:31:06読み込みについては何とかなりそうなんですが、改変の方法がわかりません。
0061デフォルトの名無しさん
2005/06/22(水) 08:43:18実行ファイルだろうがデータファイルだろうがファイルはファイルだよ
0062デフォルトの名無しさん
2005/06/22(水) 09:14:57散々既出だよ。。
0063デフォルトの名無しさん
2005/06/22(水) 09:32:17例えば「c:\hoge\hoge32」から「c:\hoge」を求めたいと思っています。
0064デフォルトの名無しさん
2005/06/22(水) 09:42:10ExtractFilePath(c:\hoge\hoge32)
0065デフォルトの名無しさん
2005/06/22(水) 09:45:59ExtractFileDir('c:\hoge\hoge32')='c:\hoge'
0066デフォルトの名無しさん
2005/06/22(水) 13:33:44コンポーネントのプロパティにあるTopとLeftの単位って
何を基準に考えればよいのでしょうか?
例えばTButtonの位置を、今ある位置から正確に1cmだけ
ずらしたい場合などは、実際Leftプロパティを幾つずらせば
正確に1cmずれたことになるのでしょうか?
宜しくお願いします。
0067デフォルトの名無しさん
2005/06/22(水) 13:38:140068デフォルトの名無しさん
2005/06/22(水) 13:38:171cmずらすというのは難しいな。モニタのサイズに依存するから。
dpi取得することなんてできるのかね。
0069デフォルトの名無しさん
2005/06/22(水) 13:40:25あなたの環境での1cmが他の人の環境での1cmと同じだとでも?
0070デフォルトの名無しさん
2005/06/22(水) 14:06:31dpiから計算すれば同じですね
0071魔界の天使
2005/06/22(水) 14:14:19誤差による精度落ちが起こる可能性があるので
基準となる座標を 別に保存しておいた方がいい。
XDPI := GetDeviceCaps(Canvas.Handle, LOGPIXELSX);
YDPI := GetDeviceCaps(Canvas.Handle, LOGPIXELSX);
1cmのピクセル = XDPI * 1 <cm>;
Xピクセル の長さ = X / XPI <インチ>
function InchTotwips(InchValue: Extended) : integer;
begin // twips 単位 (1440 dpi)
Result := trunc(InchValue * 1440);
end;
function twipsToInch(twipsValue: Extended) : Extended;
begin // twips 単位 (1440 dpi)
Result := twipsValue / 1440;
end;
function InchToMm(InchValue : Extended) : Extended;
begin // 1 Inch - 25.4 mm
Result := InchValue * 25.4;
end;
0072魔界の天使
2005/06/22(水) 14:15:561cmのピクセル = InchToMm(XDPI * 1) <cm>;
0073魔界の天使
2005/06/22(水) 14:18:52begin // 1 Inch - 25.4 mm
Result := MmValue / 25.4;
end;
訂正
1cmのピクセル = trunc(XDPI * mmToInch(10));
0074& ◆5dyn/GgcdE
2005/06/22(水) 14:20:45YDPI := GetDeviceCaps(Canvas.Handle, LOGPIXELSY);
0075魔界の天使
2005/06/22(水) 14:28:47XDPI := GetDeviceCaps(Canvas.Handle, LOGPIXELSX);
YDPI := GetDeviceCaps(Canvas.Handle, LOGPIXELSY);
Xピクセル の長さ <インチ> := X / XPI;
Xピクセル の長さ <cm> := InchToMm(X / XPI) / 10;
1cmのピクセル <ピクセル> := trunc(XDPI * mmToInch(10));
1インチのピクセル <ピクセル> := XDPI;
0076デフォルトの名無しさん
2005/06/22(水) 14:31:0119インチと17インチのCRT両方で96が返って来る・・・
デバイスが古すぎて情報取れてないのかな。
0077デフォルトの名無しさん
2005/06/22(水) 14:54:14何インチだろうが設定が96なら96しか返らないだろ。
0078デフォルトの名無しさん
2005/06/22(水) 15:30:09例えば、画面の解像度を取得して、横と縦のピクセル数のそれぞれ1/10とかでもいいんじゃないか
0079デフォルトの名無しさん
2005/06/22(水) 15:33:39VERTSIZE物理画面の高さ (ミリメートル単位)
上のはプレート内の幅を含むので、見えている範囲の実寸の取り方は知らない。
008166
2005/06/22(水) 16:14:25すみません。質問の仕方が悪かったです。
実際にはQuickReportで質問した内容のことがやりたくて質問致しました。
A4サイズの紙に対し、端から何CMの位置にデータを印字したいとか、そういう話です。
混乱を招くような質問の仕方でした。本当すみません。
実際には、ミリ単位での誤差も出ないようにQRLabelなどのコンポーネントを配置しなければ
ならなかったため>>66のような質問を致しました。
皆さんに頂いたレスを参考に再度取り組んでみます。
レスして頂いた方々、ありがとうございました。
0082魔界の天使
2005/06/22(水) 17:40:53QuickReportなら 正確な出力はむりかもしれません
カスタムコンポーネント作ったことがありますが
すこしずれます。
RatioX := GetDeviceCaps(QRPrinter.Canvas.Handle, LOGPIXELSX)
/ GetDeviceCaps(Canvas.Handle, LOGPIXELSX);
RatioY := GetDeviceCaps(QRPrinter.Canvas.Handle, LOGPIXELSY)
/ GetDeviceCaps(Canvas.Handle, LOGPIXELSY);
に書きたい座標のピクセルかけると
QRPrinter.Canvas,の座標になる
0083魔界の天使
2005/06/22(水) 18:05:52trunc(1 * GetDeviceCaps(QRLabel1.Canvas.Handle, LOGPIXELSX) / 2.54);
で いいいと思います
0084デフォルトの名無しさん
2005/06/22(水) 22:09:110085デフォルトの名無しさん
2005/06/22(水) 22:19:01WMIとか使うと良いと聞いたのですが、どうもよくわかりません。
どうぞ宜しくお願いします。
0086デフォルトの名無しさん
2005/06/22(水) 23:55:55タイプライブラリに取り込むか、CreateOleObjectでオブジェクト作るかどちらかの方法で。
なおにWMIそのものの仕様についてはMSDN参照のこと。
008785
2005/06/23(木) 02:54:03ここのサンプルを見ながらやってみました。
ここで悩んだのですが、OleVariant型に格納されている値って、
それがStringかIntegerかBoolか配列なのか扱えない型なのか・・という判別は、Delphiでできるのでしょうか。
tryで総当たりしか無いでしょうか。
それと、Win32_LogicalDiskで、論理ドライブの一覧を、Win32_DiskDriveで物理ドライブの一覧を得ることができました。
しかし、論理ドライブがどの物理ドライブ上にあるのか、上手く繋がりません。
何をキーにリレーションすると良いのでしょうか。
0088デフォルトの名無しさん
2005/06/23(木) 08:37:50008985
2005/06/23(木) 11:28:28助かりました。
論理ドライブから物理ドライブを割り出すのはなかなか上手くいかないですが、
これはDelphiではなくてWMIの問題ですね。
0090デフォルトの名無しさん
2005/06/23(木) 17:51:50何百〜何千と文字列を検索し、切り抜き、連結するということを繰り返す場合、
Copy関数による部分文字列の抜き出し、
及びstring型+string型の文字列連結では、非常に動作が遅いと知り、
私もそう感じたので、何とか高速化したいと思っています。
ですがその方法が全く分からずに、途方にくれております。
知恵をお貸しください。
0091デフォルトの名無しさん
2005/06/23(木) 18:28:08PChar
0092デフォルトの名無しさん
2005/06/23(木) 18:48:52連結は、あらかじめ Size を長めに取っておいた TStringStream の Write を
つかうとよい。
0093デフォルトの名無しさん
2005/06/23(木) 18:51:33しておけば拡張に伴う無駄なコピーは避けられる
0094デフォルトの名無しさん
2005/06/23(木) 18:51:41C言語のような文字列処理をやればいいんだけど
Delphiの範囲内で0からそれを覚えられるのか知らん。
特に遅い部分のサンプルコードでも晒してみたら。
0095デフォルトの名無しさん
2005/06/23(木) 18:54:25コード見なくても分かるでしょ。
0096デフォルトの名無しさん
2005/06/23(木) 19:17:190097デフォルトの名無しさん
2005/06/23(木) 19:39:22「string型+string型の文字列連結」の「高速化したコード」例を示して
0098デフォルトの名無しさん
2005/06/23(木) 19:44:05009990
2005/06/23(木) 20:06:08テクストファイルの各行に含まれる、二つの要素を連結させて
TStringListに溜め込み、まとめて出力する といった感じです。
procedure TForm1.Button1Click(Sender: TObject);
var StrList : TStringList;
var ResList : TStringList;
var posision: integer;
var i : integer;
var Line : string;
var StrA : string;
var StrB : string;
var Res : string;
begin
if OpenDialog1.Execute then begin
StrList := TStringList.Create;
ResList := TStringList.Create;
StrList.LoadFromFile(OpenDialog1.FileName);
i := 0;
while StrList.Count > i do begin
Line := StrList[i];
posision := Pos('hogehoge', Line);
posision := Pos('piyopiyo', Line);
StrA := Copy(Line, posision, 8);
StrB := Copy(Line, posision, 8);
Res := StrA + ' ' + StrB;
ResList.Add(Res);
Inc(i);
end;
Memo1.Lines.Assign(ResList);
end;
end;
010090
2005/06/23(木) 20:07:150101デフォルトの名無しさん
2005/06/23(木) 20:13:07■ このスレッドは過去ログ倉庫に格納されています