[表示 : 全て 最新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


692 名前:デフォルトの名無しさん mailto:sage [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 18:30:13 ]
>>690,692
FileCreateで行けるようですね、ありがとうございました

694 名前:デフォルトの名無しさん mailto:sage [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 18:48:41 ]
本当にすみません。
>>692さんのコードでできました。お騒がせいたしました。

また、答えてくださった方ありがとうございました。

696 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 18:56:07 ]
>>691さんのコードもできました。
変に打ち間違えていたようです。
すみませんでした。

697 名前:デフォルトの名無しさん [2008/05/20(火) 06:08:00 ]
>>696
うるせ馬鹿
死んで詫びろ

698 名前:デフォルトの名無しさん [2008/05/20(火) 06:10:06 ]
>>690
お前も死ね

699 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 17:44:20 ]
ActionListをダブルクリックすると編集ウィンドウが開きますが、
この位置や大きさをプロジェクト単位で覚えさせとくってできます?

700 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 00:32:41 ]
知らぬ間にPngDelphi氏んでたのね
www.codeplex.com/PNGImage



701 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 07:14:42 ]
>>699
フリーウェアでそんなのがありそうだな。
ソフトウェア板行って聞いてみたら。

702 名前:デフォルトの名無しさん [2008/05/21(水) 11:04:56 ]
Memo1.Lines.LoadFromFile(FileName);
とかでEUCのテキストを読み込むと文字化けしますが
これを読めるように表示することってできるのでしょうか?
テキストエディタだと見た目はeucで読み込んで表示し
保存もeucのまましてるように見えるけどあれは
内部でシフトJISに変換して表示して、保存時は再度eucに変換してるだけなんでしょうか?

703 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 11:35:28 ]
TMemoryStreamで読み込んで
nkf32.dllで変換して
Memo1.Lines.LoadFromStream

704 名前: [2008/05/21(水) 11:52:01 ]
正整数Nを読み込み、x^2≦N<(x+1)^2となる整数x、つまり√Nの近似値を求めるプログラムを、
sqrtなどの標準関数を使わないで作りなさいという問題なんですが。。。
わかりません。教えてもらえませんか?PASCALでやっているんですが。

705 名前:702 mailto:sage [2008/05/21(水) 11:54:14 ]
>>703
やはりnkf32.dll等で自動判別して読み込んでsjisで表示するんですね
ありがとうございます

706 名前:デフォルトの名無しさん mailto:sage [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 12:05:02 ]
あ  div 2 は 不要だ。

708 名前:デフォルトの名無しさん mailto:sage [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 14:50:47 ]
わざわざForm3のOnCreateを使ってiniを読む理由は?

710 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 14:54:04 ]
>>708 何が表示されるの?
もしかして Edit1 って文字のまま? だとしたら例外が出てるんじゃないの?



711 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 15:12:04 ]
>>709
Form3(バージョン情報の画面)に
シリアルb入力してiniファイルを作成してます。
んで次回起動時にForm3を開くと
iniファイルを読んでシリアルb表示させたいんです。



712 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 15:15:40 ]
>>710
シリアルbニして数値を表示させています。
一度入力すれば問題ないのですが
起動一発目の読み込みがうまくいきません(;;

713 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 15:16:52 ]
コピペした部分のコードにはおかしいところはなさそうな気がする。
edit1.text:=inttostr(pass);
の下に
ShowMessage(Format('edit1.text=''%s'', pass=%d', [edit1.text, pass]));
って行を入れてメッセージダイアログが表示され、更に値が望んだものかどうかをチェックしてみたら。

714 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 15:22:28 ]
>>713
ダイアログ表示せず・・・
FormCreate走ってないようです
orz

715 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 16:03:00 ]
>>714
プロジェクトのオプションでForm3を自動作成の対象から外して
Form1のボタンイベントを↓に変えて実行したらどうなる?

procedure TForm1.N1Click(Sender: TObject);
begin
Form3 := TForm3.Create(nil);
Form3.ShowModal;
Form3.Free();
end;



716 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 16:53:00 ]
メニューアイテムにビットマップを動的に割り付けようと
下記のようなコードを書いたのですが、反応がありません(エラーも出ない)

New1.Bitmap.LoadFromFile('C:\hogehoge\new.bmp');

設計時にオブジェクトインスペクタから、あらかじめ bitmapを割り当てていた場合は、
その画像と入れ替わりに、ビットマップが更新されます

インスタンスがないのかと

New1.Bitmap := TBitmap.Create;
New1.Bitmap.LoadFromFile('C:\hogehoge\new.bmp');

もやってみましたが、結果は同じでした
ビットマップ読み込み後に、アップデート処理などが必要なのでしょうか?

717 名前: [2008/05/21(水) 17:34:29 ]
>>706 $B505ってなんですか?すみません。なにもわからないもんで・・・

718 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 18:35:45 ]
>>716
新しいTBitmapオブジェクトを作ってTMenuItem.Bitmapに代入するとうまくいくよ
NewBitmap := TBitmap.Create;
NewBitmap.LoadFromFile('....');
New1.Bitmap := NewBitmap;
NewBitmap.Free; // 解放を忘れずに

719 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 18:53:15 ]
>>716
New1.Bitmap.LoadFromFile('C:\hogehoge\new.bmp');
New1.Bitmap.Canvas.Refresh;

720 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 19:22:32 ]
copy関数で何文字目とか文字数とかの設定は
関数にできないんでしょうか?



721 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 19:26:32 ]
日本語でry

722 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 19:41:31 ]
>>720
こういうこと?

function TForm1.CopyEx(S:String; Idx, Cnt:Integer):String;
begin
  Result := Copy(S,Idx,Cnt);
end;


723 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 20:23:11 ]
>>722
申し訳ないです。
関数にできないんでしょうか?
は変数にできないんでしょうか?
の間違いです。

724 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 20:30:50 ]
722に申し訳がるこた全くなし  つうか変数使えるでしょ?たぶん

725 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 20:32:56 ]
>>723
こういうこと?

var
  Idx,Cnt:Integer;
begin
  idx := 1;
  Cnt := 2;
  Edit2.Text := Copy(Edit1.Text, idx, Cnt);
end;

726 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 20:45:03 ]
>>725

a1 := edit1.text;
a2 := strtoint( a1 );

data := copy( Edit2.Text,a2,1 );

ここで悩んでます。

727 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 20:49:51 ]
はぁ?

728 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 20:50:09 ]
>>726
edit1.textに数字を入力すれば普通に動くと思う

↓またはこうする
a1 := edit1.text;
try
  a2 := strtoint( a1 );
finally
  a2 := 0;
end;

data := copy( Edit2.Text,a2,1 );

729 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 20:54:58 ]
a1 := edit1.text;
a2 := Length( a1 );

data := copy( Edit2.Text, a2, 1 );

こーゆーこと?

730 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 21:16:39 ]
いやあエスパーさんばっかいるなwww



731 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 21:24:18 ]
>>728
そこはexceptだろ

732 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 21:26:00 ]
>>731
細かいなw

733 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 21:26:02 ]
>>731
strtointdefで

734 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 21:27:24 ]
>>728
var
bno:string;
 keta:string;
k1,k2 : string;
kk1,kk2 : integer;
a1,a2 : string;

procedure TForm1.Button2Click(Sender: TObject);
begin
a1 := copy(bno,kk1,1);
a2 := copy(bno,kk2,1);

edit2.Text := a1+a2;
end;

procedure TForm1.Edit2Change(Sender: TObject);
begin
keta := edit2.text;
k1 := copy(keta,1,1);
kk1 := strtoint(k1);
k2 := copy(keta,2,1);
kk2 := strtoint(k2);
end;

コンパイルは通るのに実行するとエラーが出ます(涙)

735 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 21:30:36 ]
edit2でキー押したとたんに落ちたの?>>734

736 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 21:32:51 ]
とりあえず書き方がうざすぎる

737 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 21:33:00 ]
>>735
はい。
デバッガ例外通知が出たので
継続ってすると
”は整数ではありません
と怒られました。

738 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 21:33:35 ]
>>734
bnoには何が入ってるのよ

739 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 21:34:50 ]
>>738
ほかのEditから取り込んだ数値が入ってます。

740 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 21:39:46 ]
>>739
↓この行にブレークポイント置いてketaの中身をチェックしてみ
k1 := copy(keta,1,1);



741 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 21:43:16 ]
>>740
やってみます。
ありがとうございました

742 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 21:45:58 ]
とりあえず1度深呼吸してからヘルプのOnChangeを10000回ぐらい読んでこい>>741

743 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 21:47:05 ]
Edit&数値処理の基本
var
 n: Integer;
begin
 try
  n := IntToStr(Edit1.Text);
  ShowMessage(Format('%dの二倍は%d', [n, n * 2]));
 except
  ShowMessage(Edit1.Text + 'は数値ではない'); 
 end;
end;

744 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 21:50:31 ]
>>740
>>742
>>743

EditChangeに入れてた式を
ButtonClickに移動したらエラーが出なくなりました。

もっと勉強します

745 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 21:51:48 ]
例外がどこで起こってるかくらいてめぇで調べられないのかよ・・・
嘆かわしいのぅ

746 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 21:54:31 BE:348454-PLT(12660)]
>>744
頑張ってね

747 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 22:56:18 ]
IDEで挿入されるもの以外小文字で書いてる人よく見るけど見づらくないのかな

748 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 23:16:44 ]
大文字と小文字が区別されないという特徴をうまく使っていると思っている方々なんですよ、わかりません。

749 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 04:34:37 ]
TDateTimePickerのKindプロパティをdtkTimeにし、Formatプロパティに日付を表示するように設定した場合、
日付を編集し、その後に時刻を編集すると日付が元に戻ってしまうのですが、
OnChangeなどを監視するなどしか対策方法はないでしょうか
ヘルプには
「Format プロパティに日付フィールドのコードが含まれている場合には日付部分も編集できます。」
と書いてあるのに・・・

750 名前:716 mailto:sage [2008/05/22(木) 10:04:22 ]
>>718-719
ありがとうございました



751 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 19:06:30 ]
Delphi5, TStringGrid にデータ表示
1レコード1行の場合OnDrawCellイベントで

if Grid.Row = ARow then
begin
Grid.Canvas.Brush.Color := '紺色';
Grid.Canvas.Font.Color := '白色';
Grid.Canvas.FillRect(Rect);
end
else
begin
Grid.Canvas.Brush.Color := Grid.Color;
Grid.Canvas.Font.Color := Grid.Font.Color;
Grid.Canvas.FillRect(Rect);
end;

として、フォーカスが当たっているように見せています。

1レコード2行の場合はどうすればいいでしょうか?
Grid.Row が2の倍数で ARow = Grid.Row + 1
Grid.Row が2の倍数以外で ARow = Grid.Row - 1 の条件の時にも

背景・前景色を変更したけど、フォーカス色が残ってしまう場合があります。
OnDrawCell内で Grid.Repaint; を実行するとチラつきます。
Grid.Invalidate; だと さらに チラつきっぱなしです。

複数行フォーカスってどうやるんでしょうか?




752 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 19:33:21 ]
>>751
一行が二行に見えるように描画すればいい。

753 名前:デフォルトの名無しさん [2008/05/23(金) 10:53:01 ]
Delphi過去ログ検索が見つからないのですが、
もしかして畳んでしまわれたのかな・・・?
leed.issp.u-tokyo.ac.jp/~takeuchi/delphi/nsearch.cgi

754 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 11:16:34 ]
>>753
みたいです。MLでも話題になっています

755 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 15:10:14 ]
Webサーバのあるディレクトリのファイル名の一覧を FindFirst, FindNext
みたいに HTTPで取得する方法ってあります?Delphi7 + Indy9 ですけど

756 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 16:55:39 ]
お前は行ったことの無い店の商品が分かるのか?
そういうことだ
でも店によっちゃホームページとかで公開してる場合もある
それと同じようにファイル一覧が見れるページもある

757 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 17:56:19 ]
出来たらCGIがスケスケで大問題だね

758 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 17:56:57 ]
>>753-754

MLにご本人からポストがありましたがWeb鯖が停止しているだけのようで。
閉鎖の予定は無いそうですよ。


759 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 19:08:33 ]
>>756 >>757
あ、自分のサーバーなんです。ユーザーに配るプログラムから、
特定のディレクトリのファイルを全部 GET でダウンロードできるように
したいと思いまして(そこに置くファイルは変化します)。
でも出来ないみたいなのかあ。

760 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 19:12:38 ]
>>759
それなら、ファイルの一覧を取得して返すCGIを置いといて、それにアクセスすればいいと思うよ



761 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 19:31:11 ]
自鯖ならFTPか何かで取得してもいいんじゃ?

762 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 20:34:51 ]
あ、そうか。CGI方式もFTPでもいけそうかあ。
ありがとう。FTPはパスワード変更しそうなんでCGIで検討してみます。
# 最初の質問、説明不足でスミマセンでした。


763 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 23:13:48 ]
TComboBoxでドロップダウンのアイテム選択しているとき、
DELキーを押したら選択アイテムをItemsからむ削除したいんだけど出来るかな?
ブラウザの検索履歴を消すイメージで

764 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 23:18:07 ]
そりゃできるだろ

765 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 23:21:07 ]
>>764
どーやるの?

766 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 23:29:11 ]
どこがわからないんだよ

767 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 23:29:52 ]
こいつのがんばり方が正直よくわからない

768 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 23:55:45 ]
TComboBoxでやるのは意外と大変かもよ。
ブラウザは独自のComboBoxもどきでしょうね。

769 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 00:04:18 ]
>>766
itemsの中身がペロッと出て、
そのペロッと出たリストを選んでいる状態で、
DELキーを押したときの処理なんだけど…
説明がヘタですまん

770 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 00:08:32 ]
ボタンイベントを監視してDELが押されたら現在選択中の番号取得してそこをリストから削除すりゃーいい話だろう



771 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 00:12:22 ]
ん?よくわからないんだがこれじゃだめなの?

procedure TForm1.ComboBox1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
var
 i:integer;
begin
 if key=VK_DELETE then
  for i:=0 to combobox1.Items.Count-1 do
   if combobox1.Text=combobox1.Items[i] then combobox1.Items.Delete(i);
end;



772 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 00:15:18 ]
あぁItemIndex使えばいいか

773 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 00:18:20 ]
keyPressだとうまく行かなかったけど、KeyDownならうまく行きそうだね
>>771
ありがとう

774 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 00:36:26 ]
たびたびすいません
>>771でうまくいったと思うんだけど、
ペロッと出してない状態でも、textにitemsと同じ文字列が入ってる状態で
DELキー押すとitemsから削除されちゃうのは、しょうがないですかね?

775 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 00:39:13 ]
>>774
DroppedDownは?

776 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 00:43:24 ]
>>775
それはイベントですか?
DroppedDownの意味がわからなくてすいません

777 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 00:44:25 ]
ヘルプは?

778 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 00:47:27 ]
>>777
ヘルプに乗ってました
↓こうしたらうまくいきました
助かりました!
if (ComboBox1.DroppedDown) and (key=VK_DELETE) then begin

779 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 00:53:43 ]
ループしてる時に固まることがあるのでUpdateWindowを毎回やってるのですが、それでも固まってしまいます
UpdateWindowよりも確実な方法はあるのでしょうか?
Application.ProcessMessageは遅い印象があるので使いたくないです

780 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 00:56:39 ]
>>779
スレッドに分ける



781 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 01:05:51 ]
>>780
なるほど、マルチスレッドにはあまりしたことがないので思いつきませんでした
ですがループで毎回メインフォーム弄ってたらそれも遅くなったりしませんかね?

782 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 02:02:11 ]
>779
> Application.ProcessMessageは遅い印象があるので使いたくないです
印象だけで排除するのはどうよ?つかたぶんその印象は間違っている。

783 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 03:52:27 ]
>>781
自分で考えてください

784 名前:デフォルトの名無しさん [2008/05/24(土) 07:08:07 ]
>>779
・マルチスレッド化する
・Sleep();を入れる
マルチスレッドにしてもWait入れたりSleepしないと重くなるけどな

785 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 08:37:59 ]
特定のコンポーネントの表示を頻繁に行いたいなら
ListBox1.Items.Add('foo');
ListBox1.Repaint
みたいにすればいいし、ウィンドウのリサイズなんかの操作が固まるのを避けたいなら
Application.ProcessMessagesかスレッド使うしかない。
どうやるにしろ表示の更新は重いのには変わりない。

786 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 08:39:45 ]
ListViewならBeginUpdate / EndUpdateで大幅に高速化できるな

787 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 15:08:40 ]
Invalidateしないと、UpdateWindowだけでは更新しなかった気がするのですが。

788 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 17:54:38 ]
質問させてください。(2つに分けます。長くて申し訳ありません)

次のような宣言をされた DLL があります。(Microsoft Visual C++ 6.0)

typedef struct {
SOCKET fd; /* Socket Handle */
struct sockaddr_in m_lcd;
struct sockaddr_in m_para;
struct sockaddr_in m_serial;
timeval timeout;
int registered;
} PICNIC;

extern "C" {
__declspec(PICNIC_DLL) PICNIC *PN_open(char *ip, u_short lcd_port, u_short para_port, u_short serial_port);
__declspec(PICNIC_DLL) void PN_close(PICNIC *pn);
__declspec(PICNIC_DLL) int PN_setwhole(PICNIC *pn, int addr, int cn, ...);
}

つづく

789 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 17:55:32 ]
>>788 のつづき

この DLL にアクセスしたくて Delphi 7 でこのようにプログラムを書いてみましたが

uses WinSock

type
TPICNIC = record
fd: TSocket;
m_lcd: sockaddr_in;
m_para: sockaddr_in;
m_serial: sockaddr_in;
timeout: timeval;
registered: Integer;
end;

function PN_open(ip: PChar; lcd_port: Word; para_port: Word; serial_port: Word): TPICNIC; cdecl;
external 'PICNIC.DLL' name 'PN_open';
procedure PN_close(pn: TPICNIC); cdecl;
external 'PICNIC.DLL' name 'PN_close';
function PN_setwhole(pn: TPICNIC; addr: Integer; cn: Integer): Integer; cdecl;
external 'PICNIC.DLL' name 'PN_setwhole';

C での SOCKET 型が Delphi では TSocket と宣言すれば正しいのかわからないです。(Longint ?)
それと、PN_setwhole(PICNIC *pn, int addr, int cn, ...); の最後の「...」を
Delphi では、どのように記述すればいいのかわかりません。
どなたか教えていただけないでしょうか?


790 名前:デフォルトの名無しさん [2008/05/24(土) 19:02:15 ]
少し書き間違ってました。
function PN_setwhole(pn: TPICNIC; addr: Integer; cn: Integer; arg: array of Integer): Integer; cdecl;
です。DLL 側のソースで
va_start(arg, cn);
for(i=0;i<cn;i++){
mask = va_arg(arg, int);
or = va_arg(arg, int);
frame[3+i*2] = mask;
frame[3+i*2+1] = or;
}
va_end(arg);
と記述されています。





791 名前:デフォルトの名無しさん [2008/05/24(土) 19:46:48 ]
>>758
あせったわw

MLみたら、2chの書き込みまで引用されててひどい
誰だよ武内さん語ったの・・・いたずらにしてはひどい話だよ

792 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 20:07:10 ]
あれは、たかだか2chのソースでしかない話を引用した方も悪い






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

前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