[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 08/13 11:51 / Filesize : 238 KB / Number-of Response : 924
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

くだすれDelphi(超初心者用)その46



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


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が固まるし…
再描画の他のコントロールのイベントは見てなかったのでチェックしてみます。

332 名前:デフォルトの名無しさん [2008/04/12(土) 20:17:28 ]
DICOMをDelphiで勉強しようと思ってopen sourceであるezDICOMを見ているので
すが、childwin.pasで
const
gMouseDown : boolean = false;
とあり、その以降で
   gMouseDown := true;
となっていて、エラーがでて代入できない左辺値ですと表示されます。
constだからそういうエラーになるのですか?もしそうなら
あまり当てにしてはならないコードと判断すべきなのでしょうか?






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<238KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef