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


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

Delphi初心者のための寺子屋



1 名前:デフォルトの名無しさん mailto:sage [2005/11/23(水) 23:31:08 ]
Delphi初心者が問題をコツコツと解きながらレベルアップするためのスレです。


367 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 09:53:58 ]
codecentral.borland.com/Item/22123

368 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 11:44:07 ]
DelphiでJpeg2000を表示する方法を教えて下さいでつ。

369 名前:365 mailto:sage [2007/10/11(木) 11:51:18 ]
368はニセモノでつ。









でも、実は未だに解決してなくて知りたかったりして。

370 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 13:22:13 ]
普通に>>367ので表示できたけど?

371 名前:365 mailto:sage [2007/10/11(木) 14:23:02 ]
サンクス>>370

実は自分もDel7出来ました。

が、実際の環境である、














C++ Builder 6だと上手くコンパイルできないんでつ><

372 名前:デフォルトの名無しさん [2007/10/11(木) 16:41:56 ]
Delphiアプリのメインフォームのウィンドウクラスって、TApplication固定でしたっけ?

373 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 19:19:37 ]
でつでつ言うなよ

374 名前:デフォルトの名無しさん mailto:sage [2007/10/11(木) 22:14:07 ]
でつな

375 名前:デフォルトの名無しさん [2007/10/12(金) 15:44:09 ]
(a+3)^
ってある^はどういう意味?



376 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 16:43:45 ]
ObjectPascalの場合 後ろの^は ポインタの参照
C言語の *(a+3) と同じ

377 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 17:52:24 ]
なるほどサンクス

378 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 18:39:09 ]
よく見かける、
エディットボックスにファイルをD&Dしてそのパスを取得
はどのようにやればよいですか?

379 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 19:29:56 ]
質問はこちらにどうぞ
くだすれDelphi(超初心者用)その44
pc11.2ch.net/test/read.cgi/tech/1191657968/l50

380 名前:デフォルトの名無しさん mailto:sage [2007/10/13(土) 05:15:36 ]
答えられんからって誘導とは酷いな!

381 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 17:21:40 ]
vb.netでそこそこは作れるレベルだけど、delphi始めようと思ったら最初に買うべき
本は何がいい?
それかどぼんみたく、そこだけ見ればそこそこのものは作れるようになるサイトか

382 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 23:12:41 ]
何を作りたいかだろ
ファイラ作りたいとか、MMO作りたいとか(スレがあっったりするが)

383 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 08:44:22 ]
ドトネトみたく環境設定も要らないし、コンポーネントも要るものはあるし。
いきなり始めて、躓いてから質問してみたら?

384 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 15:17:32 ]
VB2005はヘルプがすごく使いやすい

385 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 15:30:47 ]
ヘルプだけかよw

ネイティブアプリが作れるようになったら試しに触ってやるよ。



386 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 23:24:20 ]
ま、C#からやったらいいよ。DelphiもIDEは.NETが必要だし。
C#は良い本もヘルプもMSDNもWEBサイトも腐るほどあるし。

387 名前:デフォルトの名無しさん [2007/11/09(金) 01:23:20 ]
Del5。XPで、

Ctrl+Alt+Delを無効にする方法。
右クリックを無効にする方法。

教えて。


388 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 01:40:40 ]
>Ctrl+Alt+Delを無効にする方法。
マルウェアでも作るつもりですか?

389 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 05:38:41 ]
そーゆーことしたいなら自分で調べろww

390 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 06:47:53 ]
>>387
いちばん簡単なのは、DirectXのフルスクリーンモードで、そういうモードがある。
やり方は自分で調べろ

391 名前:387 [2007/11/09(金) 06:48:48 ]
いや、調べてもわからないから聞いてるんで。

ちなみに、会社のIT担当委員ってのをやってて、社員にサイバーテロの対処について教育するんだが、
本物のウィルスを使うわけにはいかないんで、ジョークウェアを作ろうと思っている。


392 名前:387 [2007/11/09(金) 06:49:39 ]
書き忘れた。

一定の時間が経過したら自動的に終了させるつもりだ。

393 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 23:31:11 ]
Ctrl-Alt-Deleteのキーストロークは最優先でシステムが捕捉するので、これを
無効にすることはできない。無理。不可能。Deleteキーの軸を折っちゃえ。
右クリックはマウスの右クリックのスイッチを(ry

394 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 06:56:12 ]
無理ではない。教えたいところだけど、>>391が本当か分からないし
教える立場だったら自分で調べて欲しいところ。

ヒント:海外

395 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 07:35:04 ]
ソフトウェア板の各所でも、キーロガーとか、スパウウェア用途に使われるものは紹介しないというルールだしな
おしえる側も、最低限のことは守らないと



396 名前:デフォルトの名無しさん [2007/11/10(土) 08:46:07 ]
391だけど、不正ソフトばらまくのは犯罪だってことくらい知ってるよ。
けどまぁ、信用してもらえないのも仕方がないからなんとかするわ。

397 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 07:10:16 ]
2chで信用しろといわれても・・・

398 名前:delphi初心者 [2007/11/12(月) 13:48:03 ]
ご質問いたします。

1.コンマ区切りの文字列をばらして配列にセットしてくれる関数はありませんか?
2.functionで配列は返せないのですか?





追伸: 「そんなこと自分で調べろ!」 と云う罵倒はおことわり。

399 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 13:50:46 ]
TStringList.CommaText

400 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 13:51:22 ]
それかTStringList.Textに入れれば、バラしてくれたかも

401 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 22:10:08 ]
>398
配列の型を宣言してそれを戻り値の型にすればおk


402 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 14:33:42 ]
>>401
それ、何てTStringList?

403 名前:デフォルトの名無しさん [2007/11/13(火) 18:48:49 ]
【Borland Delphi 6 Personal日本語版 入手先】
www.vector.co.jp/soft/dl/win95/prog/se205882.html
【Delphi 6 導入手順 】
www.wikihouse.com/DelphiVIP/index.php?%C6%B3%C6%FE%BC%EA%BD%E7
【インターネットダイレクト(Indy)コンポーネント導入手順 】
homepage3.nifty.com/KENCH/open/indy/delphi_indy.htm

動作確認は、メモとIdHttpコンポーネントを貼り付けて以下のコードを書いて実行してみる。
うまくいくとこのスレがメモにダウンロードされる。
Memo1.Lines.Text := IdHttp1.Get('live19.2ch.net/test/read.cgi/stock/1144395454/l50');

【デルファイの質問所】
hpcgi1.nifty.com/MADIA/DelphiBBS/wwwlng.cgi
leed.t.u-tokyo.ac.jp/~takeuchi/delphi/search.cgi
groups.google.com/groups/search?hl=ja&q=delphi+

404 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 20:01:32 ]
上げ荒らしうぜえ

405 名前:初心者++ [2007/11/18(日) 11:09:49 ]
UpdateSQLがうまくいきません。以下のようなコードで実行すると、例外エラー'アップデート失敗'がでます。
propertyの設定は
cachedupdate true /requestlive true /updateobject updatesql

updatesqlのsql設定文もできてると思うんですが、、、


begin
database1.open;
database1.StartTransaction;
query1.Open;
end;

procedure TSDIAppForm.Button1Click(Sender: TObject);
begin

if query1.UpdatesPending then begin
query1.ApplyUpdates;
end;
database1.Commit;
query1.CommitUpdates;
query1.Close;
database1.Close;

end;

どこが間違ってるのでしょうか?教えてください
Turbo Delphi for wind32
OS : wind2000です。




406 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 15:36:44 ]
残念、スレちがいです。

>Delphi初心者が問題をコツコツと解きながらレベルアップするためのスレです。

407 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 17:54:22 ]
糞なテンプレでスレ立てて必死に粘着交通整理してる奴ってなんなの?

408 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 18:45:04 ]
自分の居場所なんだから、そりゃ必死だろう。

自分の居場所をキチンとメインテナンスするのは、それは当然ではあるまいか?

409 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 17:32:32 ]
自分の居場所ならグダグダ「スレ違い」とか言ってないで、問題を出題すべきだと思うんだな。
問題と解答、それに議論が無いから、過疎ってスレ違いと基地外の巣窟と化してるんだな。
問題:おみくじ
randomを使って大吉、吉、凶のいずれかを表示するプログラムを作れ

410 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 17:36:13 ]
>>409

あまりにも簡単すぎるプログラム出題でワロタw

せめて、n回凶が出る確率を計算するプログラムとかにすればいいのに。

411 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 17:47:39 ]
>>405

Queryの更新エラーは、
query1.RequestLiveのtrue/falseが
結構関係している。

412 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 22:53:35 ]
Gandomを使って大吉、吉、凶のいずれかを表示するプログラムを作れ


413 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 23:05:26 ]
>>412
CGは専門外なんで無理ですw

414 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 23:21:52 ]
Gandom はすれ違い。

415 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 01:02:34 ]
問題:呼び出すたびに1と0を交互に返す関数を書け。グローバル変数を使っても良い。



416 名前:初心者++ [2007/11/21(水) 02:06:06 ]
UpdateSQLのエラーが解決しました。レスを下さった方ありがとうございました。
SQL文のキー違反でした。
 SQLの勉強をもっとしないと阿寒と思いました。
 Accessのビューで作ったSQL文を貼り付けたりしておったのですが、、、。
 エラー続出でした。

417 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 23:30:12 ]
問題:マウスクリックすると、クリックしたマス目とその上下左右のマスが反転する。
    マス目を全て塗りつぶしたらクリアとなるゲームを作る

□□□□□             □□□□□            ■■□□□
□□□□□             □□■□□            ■□■□□
□□□□□             □■■■□            □■■■□
□□□□□             □□■□□            □□■□□
□□□□□の真ん中を押すと  □□□□□左上クリックで   .□□□□□

■■□□□           ■□□□□
■○■□□           □■□□□
□■■■□           □□■■□
□□■□□           □□■□□
□□□□□ ○を押したら  □□□□□


全部塗りつぶしたらゲームクリア
■■■■■
■■■■■
■■■■■
■■■■■
■■■■■

418 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 23:43:16 ]
>>417
ライツアウト懐かしいな

419 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 00:58:06 ]
俺には作れねぇ

420 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 01:03:28 ]
頑張れば作れなくもなさそうだけど、とてつもなく無駄が多くなりそう・・。

421 名前:1/2 mailto:sage [2007/11/22(木) 01:33:44 ]
  TForm1 = class(TForm)
    procedure FormPaint(Sender: TObject);
    procedure FormClick(Sender: TObject);
  private
    FTable: array[0..4, 0..4] of Boolean;
  end;

procedure TForm1.FormPaint(Sender: TObject);
const
  B2S: array[Boolean] of String = ('□', '■');
var
  x, y: Integer;
begin
  for x := 0 to 4 do
    for y := 0 to 4 do
      Canvas.TextOut(x*12, y*12, B2S[FTable[x, y]]);
end;

422 名前:2/2 mailto:sage [2007/11/22(木) 01:34:15 ]
procedure TForm1.FormClick(Sender: TObject);
var
  pt: TPoint;
begin
  pt := Self.ScreenToClient(Mouse.CursorPos);
  pt.X := pt.X div 12;
  pt.Y := pt.Y div 12;

  if (0 <= pt.X) and (pt.X <= 4) and (0 <= pt.Y) and (pt.Y <= 4) then
  begin
    FTable[pt.X, pt.Y] := not FTable[pt.X, pt.Y];

    if 1 <= pt.X then FTable[pt.X-1, pt.Y] := not FTable[pt.X-1, pt.Y];
    if pt.X <= 3 then FTable[pt.X+1, pt.Y] := not FTable[pt.X+1, pt.Y];
    if 1 <= pt.Y then FTable[pt.X, pt.Y-1] := not FTable[pt.X, pt.Y-1];
    if pt.Y <= 3 then FTable[pt.X, pt.Y+1] := not FTable[pt.X, pt.Y+1];
  end;
    
  Invalidate;
end;

423 名前:2/2 ver.2 mailto:sage [2007/11/22(木) 01:40:47 ]
クリア判定忘れてた。

procedure TForm1.FormClick(Sender: TObject);
var
  pt: TPoint;
  x, y: Integer;
  Clear: Boolean;
begin
  pt := Self.ScreenToClient(Mouse.CursorPos);
  x := pt.X div 12;
  y := pt.Y div 12;

  if (0 <= x) and (x <= 4) and (0 <= y) and (y <= 4) then
  begin
    FTable[x, y] := not FTable[x, y];

    if 1 <= x then FTable[x-1, y] := not FTable[x-1, y];
    if x <= 3 then FTable[x+1, y] := not FTable[x+1, y];
    if 1 <= y then FTable[x, y-1] := not FTable[x, y-1];
    if y <= 3 then FTable[x, y+1] := not FTable[x, y+1];
  end;

424 名前:3/2 mailto:sage [2007/11/22(木) 01:41:18 ]
  Clear := True;
  for x := 0 to 4 do
  begin
    for y := 0 to 4 do
      if not FTable[x, y] then
      begin
        Clear := False;
        Break;
      end;

    if not Clear then
      Break;
  end;

  if Clear then
    ShowMessage('おめ');

  Invalidate;
end;

425 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 02:02:47 ]
すげー!参考にさせて頂きますm(_ _)m



426 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 11:33:40 ]
implementation
{$R *.dfm}

//スペースの都合上ここに記述本当ならTForm1のprivateが望ましい
var
BTable:array of array of Boolean; 

procedure CheckComplete();
var
X,Y:Integer;
begin
for X:=1 to High(BTable)-1 do
for Y:= 1 to High(BTable[X])-1 do
if Not BTable[X,Y] then Exit;

ShowMessage('Mission Complete!');
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
SetLength(BTable,DrawGrid1.ColCount+1,DrawGrid1.RowCount+1);
end;


427 名前:修正1/2 (426は放置推奨 ) mailto:sage [2007/11/23(金) 11:43:25 ]

//●最初にDrawGridを貼り付け、プロパティを以下のようにセット
  Align = alClient
  DefaultDrawing = False
  ColCount = 6
  RowCount = 6

//●FormのPrivateに以下のフィールドとメソッドを追加
  BTable:array of array of Boolean; //動的二次元配列
  procedure CheckComplete();
  
//●CheckComplete関数を書く
procedure TForm1.CheckComplete();
var
  X,Y:Integer;
begin
  for X:=1 to High(BTable)-1 do
    for Y:= 1 to High(BTable[X])-1 do
      if Not BTable[X,Y] then Exit;

  ShowMessage('Mission Complete!');
end;

//●FormCreateを書く
procedure TForm1.FormCreate(Sender: TObject);
begin
  SetLength(BTable,DrawGrid1.ColCount+1,DrawGrid1.RowCount+1);
end;

428 名前:修正(2/2) mailto:sage [2007/11/23(金) 11:43:59 ]
//●DrawGrid1DrawCellを書く
procedure TForm1.DrawGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);
const
  COLORPALS:array[Boolean] of array[Boolean] of TColor = ((clWhite,clBlack),(clSilver,clSilver));
begin
  DrawGrid1.Canvas.Brush.Color := COLORPALS[(gdFixed in State) , BTable[ACol,ARow] ];
  DrawGrid1.Canvas.FillRect(Rect);
end;

//●DrawGrid1SelectCellを書く
procedure TForm1.DrawGrid1SelectCell(Sender: TObject; ACol, ARow: Integer;var CanSelect: Boolean);
begin
  BTable[ACol-1,ARow] := Not BTable[ACol-1,ARow];
  BTable[ACol ,ARow] := Not BTable[ACol ,ARow];
  BTable[ACol+1,ARow] := Not BTable[ACol+1,ARow];
  BTable[ACol,ARow-1] := Not BTable[ACol,ARow-1];
  BTable[ACol,ARow+1] := Not BTable[ACol,ARow+1];
  DrawGrid1.Invalidate;
  CheckComplete();
end;


429 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 18:34:16 ]
>>417
7行スレで盛り上がりそうな内容だなw

430 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 17:46:32 ]
25ボタンの処理を全部書くことで初心者でも作れてしまうが、まじめにやれば7行に・・・・なるな多分

431 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 23:00:38 ]
>>157
D6からそうなったのか?
パスなしだとWINDOWSフォルダにつくられるんじゃなかった?

432 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 23:01:27 ]
未読位置を間違えてロングパスを放ってしまったorz

433 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 01:31:13 ]
>>417
作れたは良いんだがクリアできない
なんかコツとかある?勿論クリアするね

434 名前:デフォルトの名無しさん [2007/12/13(木) 23:00:31 ]
TMEMOの任意の行を削除するにはどうしたらいいの?

435 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 23:09:52 ]
>>434
TMemo.Lines.Delete



436 名前:434 [2007/12/14(金) 06:52:10 ]
>>435

ありがとう。

ごめん、質問間違えた。
あるデータと一致する行を削除 だった。
listboxだったらitems.indexとかで簡単にできるけど

437 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 22:58:42 ]
>>436
TMemo.Lines.IndexOf

438 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 19:30:52 ]
BDS2007を使っているんですが、コード補完機能って、すごーく
時間がかかるものなのでしょうか?
HDアクセスしまくりで、VS2005のそれとは比較にならない程遅いのですが。
それとも何か設定等が悪いのでしょうか?

OSはWinXP, メモリは2Gです。よろしくお願い致します。


439 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 18:36:32 ]
コンポを大量インスコしてるとか

440 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 09:47:31 ]
普段使わないコンポはチェック外しておくとロード時間が劇的に短くなる。

441 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:13:59 ]
普段使うコンポはチェック外さないでおくとロード時間がものすごく長い。

442 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 22:06:02 ]
最新式マシンに変えるとロード時間が劇的に短くなる。

443 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 01:49:05 ]
ちょっと前のマシンだとロード時間がはげしく長い。

444 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 02:11:10 ]
BDS2006で、PenD(3.0GHz) メモリ2G WinXPマシンでつこーてるが、
コード補完は、特に遅くないな。
ちなみに、起動時は、起動オプションで、Delphiのプロファイルのみ読み込み、
あと余計なDB周りのコンポなどもはずしてる。

しかしメモリ2Gで、ハードディスクカリカリは感がられんな
BDS2007が遅いということあるのかね

445 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 23:14:45 ]
D7En Pen3(966) MEM384MB
コード補完滅茶苦茶遅い。
数年前は大丈夫だったから多分原因はHDDだろうと勝手に思ってる。



446 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 03:44:18 ]
>>445
そのくらいのスペックで、Del6Pro つかってだけど、問題なかったぞ?

BDSの世代になって、死ぬほど重くて、マシン買い換えたが

447 名前:デフォルトの名無しさん [2007/12/31(月) 07:28:11 ]
職場のD7ENTでこちょこちょ書いてますがひたすらコピペしまくりでクラスも作った事がありません。
どこかのサイトにオプジェクト志向学ぶならC#やJavaで書かれた出来の良いコードをDelphiに移植するのが面倒だけど理解が早くなる、と言う意味の事が書かれてました。
とは言え、自分にオプジェクト志向の良いコードなのかどうか判別が出来るくらいならわざわざ移植には及ばない訳でして、適当なサンプル選びで途方に暮れています。
簡単なもの、ちょい重たいかなレベルで適当そうなコードを紹介して頂けませんか?


448 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 07:30:10 ]
スミマセン
ageてしまいました。

449 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 11:10:07 ]
どこまでもコピペするつもりですか。

*頭をたたくと「いてぇ」、わきの下をくすぐると「わははは」と笑うクラスをつくて

まじめな課題です。


450 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 11:59:29 ]
自分用のコンポーネントを自作するのが近道だよ。

451 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 12:06:15 ]
>>447
何度も同じコード書いてるならそこを共通化するクラスなりライブラリなりを作ってみたら。
重複部分で呼び出しているAPIなり関数なりをJediVCLでGrepかけてどうラップしてあるかを見てみればいいと思う。
あのライブラリ郡の設計が美しいかどうかは微妙なところだけど。

一番手っ取り早いのはC#をやること。
C#、Delphi両面の利点と欠点が見えてくると思う。
もちろんよりリッチなクラスライブラリの使い方も習得できるしね。

452 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 19:50:50 ]
JCLのコンテナ使いにくすぎる。おすすめせん。

俺も、C#のライブラリを参考にするのがお勧め。
標準のでいい。
インターフェスだけならMSDNで見たい放題、クラス設計の参考になる。

中のぞきたかったら、Reflectorででも、使えばソース見られる。
Reflectorなら、Delphiでも見られるしなw


あとは、OOPなら、動的型言語のRubyもお勧め。
ほとんどが、オブジェクトなので、それを前提として、
どういった便利な使い方ができるか?というのがよくわかる。
ただ、ガーベジコレクション前提でオブジェクトを使い捨てまくるので、
そのままは使えないのだが、
勉強にはなる。

453 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 23:14:08 ]
2005を今更再インスコしようとして、鬱になる。

#さぽきれかあ

454 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 15:25:42 ]
あー、今頃出来やがんのorz

455 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 16:05:07 ]
ASMならジャンプテーブルを用意すれば簡単化と思いますがDelphiなら
以下の条件ならどんなコーディングをすればいいのでしょうか?
type
TSomeInts = 0..9;
IntSet1, IntSet2 = set of TSomeInts
の条件下で
if (0 in IntSet1) and (0 in IntSet2) then ...
if (0 in IntSet1) and (1 in IntSet2) then ...
...
if (9 in IntSet1) and (9 in IntSet2) then ...
のように、IntSet1且つIntSet2の組み合わせでcase文を使用したい場合です




456 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 16:08:54 ]
すみません
問題を単純化するのにミスしました
type
Int1, Int2 = 0..9;
の条件下で
if (Int1 = 0) and (Int2 = 0) then ...
if (Int1 = 0) and (Int2 = 1) then ...
...
if (Int1 = 9) and (Int2 = 9) then ...
でお願いします

457 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 16:15:33 ]
case を2重にして全部を列挙するか
0〜9と決まってるんなら単純に

case Int1*10+Int2 of
00:
01
...
とやったら?

458 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 16:29:47 ]
>>457
ども
実際ご指摘のとおり
type
Suit = (Club, Diamond, Heart, Spade);
var
card1, card2: Suit;
cardbits: BYTE
とあれば
cardbits := ($01 shl Integer(card1) + ($10 shl Integer(card2));
case cardbits of
$00, $01, $02: ...
$10, $11, $03: ...
end
みたいなことで実現しているのですが、実際は条件がもっと複雑で
単純にcase文でネストする場合三重になります
この場合可視性が悪いですし
Suit = (Null, Club, Diamond, Heart, Spade, Joker);
みたいに列挙型を変更する場合も困難を極めます

459 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 17:04:39 ]
var jumptable: array[0..9, 0..9, club..spade] of tjumpproc;
なジャンプテーブル用意したら。

460 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 17:16:45 ]
>>459
どもw
ジャンプテーブルが使えたんですね・・・

何やってんだ俺orz

461 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 17:54:22 ]
×可視性
○可読性

462 名前:デフォルトの名無しさん mailto:sage [2008/01/28(月) 14:54:47 ]
Delphi6のFileSeekは多重定義されてますが
function FileSeek(Handle, Offset, Origin: Integer): Integer; overload;
function FileSeek(Handle: Integer; const Offset: Int64; Origin: Integer): Int64; overload;

OffsetにInt64をあたえても上が呼ばれてるみたいなんですが
どうなんでしょう

463 名前:デフォルトの名無しさん mailto:sage [2008/01/28(月) 18:45:19 ]
気のせいです

464 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 22:18:42 ]
Threadを使用してバックグラウンドで処理を行い、進行状況をForm1で表示する処理を行っています

Form1のLabelに表示するたびにSynchronize関数を呼び出すとそのオーバーヘッド
が凄まじく処理時間が数倍に跳ね上がってしまいます
VCLを使用する場合にはSync関数を使用して呼び出すべきとの話ですが
全てが全てSyncを使用しなければならないのでしょうか?
例えばInvalidate関数等はどのタイミングで呼び出すべきなのでしょうか

465 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 22:31:43 ]
スレッドセーフで無いコードはSynchronizeを使いVCLにスレッドセーフであることを保証してもらう必要がある。
初めからスレッドセーフなコードならばわざわざそんな事はしなくても良い。



466 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 22:33:02 ]
いろいろやり方はあるけどLabelの更新頻度を下げるのが手っ取り早い。
データがどれだけ変更されようが画面の更新は1秒に一回未満にするならこんな感じ

lastupdateview := GetTickCount;
while true do
begin
 処理
 if GetTickCount - lastupdateview > 1000 then
 begin
  lastupdateview := GetTickCount;
  Synchronize;
 end;
end;

467 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 23:05:17 ]
>>466
ども。
Invalidateの呼び出しはそれでやってます。

その方法では、例えば処理中のファイル名を表示しようとした場合
重い処理を行っている時は表示されているファイル名と処理している
ファイルが異なるような場面が発生しませんか?
かと言って”処理が長くなるようだったら強制的に表示する”って方法
を実現しようとするとタイマーを使用するなり手間がかかる気がするのですが・・・






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

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

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