Delphi相談室その3
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNG気楽な雰囲気がよければこちら
モナーの *やさしい* Delphi質問スレ
http://pc.2ch.net/test/read.cgi/tech/1003113413/
希望や夢はこちらに
★クライアントサイド最強の Delphi に物申す★
http://pc.2ch.net/test/read.cgi/tech/1001442200/
メーリングリストのウオッチすれはこちら
Delphi/Kylix Tech 2nd
http://pc.2ch.net/test/read.cgi/tech/993005709/
つづく >>2-3 あたり
キャラ系雑談はこちらで
ミ,,゚Д゚彡DelフサギコのフサフサDelphi談話室�A
http://pc.2ch.net/test/read.cgi/tech/1006602102/
APIで直接な漢な人はこちら
Delphiで小さな実行ファイルを作ろう
http://pc.2ch.net/test/read.cgi/tech/1009080085/
ギコBASIC拡張計画
http://pc.2ch.net/test/read.cgi/prog/961558082/
前の Delphi相談室2
http://pc.2ch.net/test/read.cgi/tech/995950803/
前の Delphi相談室
http://piza.2ch.net/tech/kako/971/971261573.html
0153デフォルトの名無しさん
NGNGソース見たけど分かんなかったよ。
でも、通常は存在しないアイテムに代入することはないと思うので
いいんじゃないかな。
0154152
NGNGいや、TListBoxの内容を書き換えるときに使ってたのですが、
これだとItemIndexやSelectedをとばさずに、1部だけListBoxの
内容を書き換えられたのですが
ListBox.Item[RewriteIndex] := RewriteText;
という感じで、
これと同じことをTCheckListBoxですると、なぜかエラーがでてしまう・・・。
今は、
CheckListBox.Clear;
CheckListBox.Add;
CheckListBox.Checked;
CheckListBox.ItemIndex
を組み合わせてプログラムを書いています・・・。
CheckListBox.Item[Index] := String;さえ使えればこの手間が省けるのに。
ヘルプをみてもエラーになる理由が書いてない、というよりもTListBoxと
一緒なのが。
あと、これとは関係ないけどDel6で今書いているプログラムステップ実行をすると
確実にハングアップする部分があります。
なにも派生してないTListにポインターを放り込むだけなのに・・・。
止まる部分は
List.Items[Index] := Pointer;
と、止まりようがない部分でDelphiが固まってしまいます。
その部分だけステップ実行をしないようにすると平気で動くのに・・・。
どうもDel6のIDEはメモリ操作がらみでバグがありそうな気がする。
0155デフォルトの名無しさん
NGNG0156デフォルトの名無しさん
NGNGうーん、これだとメモリ書き込みがらみのエラーが出るんですけど・・・。
ってゆうか、Step実行でDelphiがとまってしまうのは何でだろう。
プログラム自体は正常に動くのに・・・。
Delphiのコンポーネントライブラリは便利だけど、意味不明な
エラーが出てくると対処に困る・・・。
0157デフォルトの名無しさん
NGNGそのコードだけ新規プロジェクトに移してステップ実行してもまだ起こる?
0158そすぃんさ
NGNG使用して作成したアプリには「どの程度」まで含まれてコンパイルされるのでしょうか?
例えばrealmediaのプレーヤとか…。
0159そすぃんさ
NGNGちょっと意味不明ぽかったので…。
ようするに、「配布先は、そのアプリ以外に入手するべきものがある」のか無いのか
が知りたいのですが…。まだよく分からん気もするな…(^^;。
realプレーヤを作ったとして、配布した場合、必要なdllとかは先方が用意する
必要があるんですよね?
※ウザかったら失せますので…※
0160デフォルトの名無しさん
NGNGされている必要があると思われ。
0161そすぃんさ
NGNGあ、やっぱり…。ということは、「ActiveXの取り込み」でコンポーネントに登録したヤツを
使用して作成したアプリ(長い…)は自由に配布出来るワケですよね?
dllは先方がインストールするなりして用意する必要があるということは。
レス、ありがとうございました!
0162デフォルトの名無しさん
NGNGなんのエラーがでるのか教えて。
0163デフォルトの名無しさん
NGNGが、プログラム自体が正常に動くってのがわからんな。
DirectXのアプリでLockからUnlockまでの個所内はデバッガが止まっちゃう
ってことはあったけど。
0164デフォルトの名無しさん
NGNGDirectX の Lock/Unlock は win16mutex を使っているから
そこへステップインするとハングするのは OS の仕様。
0165112
NGNG>>131 >>135の情報を元にレジストリの変更を行って、
どうにか <!--#exec cmd="cmd.exe /c dir"--> ←こいつは動くようになってくれました。
でも相変わらずexeファイルは動いてくれない・・・
「スクリプト './xxx/test.exe' を実行できませんでした: Win32 エラー コード = 2」←エラーメッセージ
#EXEC の呼び出しに対して使用可能になってないよーのエラーよりは若干進歩したようですが・・・
こんな厨房の質問にお付き合いできる方、引き続きご教授お願いたします。
0166112
NGNGSSIを呼び出しているアドレスを「http://〜」から「D:/〜」に変更したら動いてくれました!!
あ゛〜長かった、色々付き合ってくれた皆様に感謝いたします。
0167ななしん
NGNGnetapi32.lib の宣言した pas は標準ではついてないようです。
(Delphi Ver5 を使用しています)
自分で起こすしかないんでしょうか。
どっかにころがってないですかねえ?
0168デフォルトの名無しさん
NGNGhttp://www.google.co.jp/search?hl=ja&lr=lang_ja&q=netapi32%2Epas
0169ななしん
NGNGいやいや、
google で「NetUserEnum delphi」とか
「netapi32.lib delphi」で検索したら
関係ないのしかヒットしなかったんで
ここでの質問したというわけのです。
ずばり「netapi32.pas」で検索すればよかったんですね。
というわけでスペシャルサンクス!!>>168
0170ななしん
NGNGここで質問したというわけなのです
もうだめだ俺・・・逝ってきます
0171デフォルトの名無しさん
NGNGTorry's
http://www.torry.net/index.htm
に行って、NetAPI で検索すると4つのコンポーネントが
ヒットする。フリーでソース付きのがあるから参考になると
思う。
0172152
NGNGいろいろやってみて、TListBoxとTCheckListBoxの微妙な違いがわかってきました。
基本的には153さんが指摘したように、存在しないItemにStringを代入したときに
どのような処理を行ってるかなのですが、
TListBox(TCustomListBox)では、Index-1までItemが書き込まれている場合、
なにも書き込まれていないItem[Index]に文字を代入できるが、
TCheckListBoxでは文字の代入はできるが、ステータス保存用に拡張された
部分がこの状況に対応していないため、Listのインデックスの範囲が越えて
しまうようです。
TCheckListBoxで項目を書き換えるときのプログラムは
if TCheckListBox.Count = RewriteIndex //プログラム処理上Count<=RewriteIndex
then TCheckListBox.Add(RewriteText) //にしかならないようにしています。
else TCheckListBox.Items[RewriteIndex] := RewriteText;
に書き直しました。
0173152
NGNGすみません、TCheckListBoxでの処理を上のように書き換えると
メモリリークが生じるようになりました。
詳しく調べてみると、
TCheckListBox.Items[Index] := String;
の処理だけで、メモリリークが生じます・・・。
TCheckListBox.Add('12345678');
for i:=0 to 63353 do TCheckListBox.Items[0] ;= '12345678';
で、1MBほどメモリがリークします。
どうも、TCheckListBoxはステータス保存リスト処理がらみでバグが
有りそうです。
でわでわ。
0174デフォルトの名無しさん
NGNG訳の分からない動作をします。
やっぱりDel6はバグっているのだろうか?
0175デフォルトの名無しさん
NGNGそれを説明してくれないと誰もコメントをつけることはできない。
たいていのバグは自分自身から。
0177デフォルトの名無しさん
NGNG調べた限りでは列挙型→整数はOrd()関数で出来ることが判ったのですが。
0178デフォルトの名無しさん
NGNG0179デフォルトの名無しさん
NGNGtype
TFoo = (a, b, c);
var
Bar : Byte;
Foo : TFoo;
begin
Bar := 1;
Foo := TFoo(Bar);
Assert( Foo = b );
end;
0180デフォルトの名無しさん
NGNGまあ、それはそうなんだけど、TListの派生コンポで
ステップ実行していて
inherited Items[Index] := P;
でDelphiごととまられてしまうと、どこが悪いかまったくわからないよ。
普通に実行すると、何事もないのに。
あと、173の件ですが、もうちっと詳しく調べてみると
TcheckListBox.Items[Index] := String;1回につき16Byteメモリリークしてました。
やっぱり、ちゃんとVCLがついているバージョンを買って自分でバグ取りを
しないといかんのかなー?
0181デフォルトの名無しさん
NGNGTCheckListBox.Itemsは駄目だろう。
0182デフォルトの名無しさん
NGNGなんで?実際に使うときは
SelectViewCheckListBox: TCheckListBox;
とかにしてから(Formに貼り付けてから)
使ってるけど?
0183ねこま
NGNG0184デフォルトの名無しさん
NGNGなら、実際に使っているコードを載せてくれ。
確認してくれる奇特な人に打ち直しさせるきですか?
0185ねこま
NGNG0186ねこま
NGNGOnAdvancedCustomDraw で描画
GetHitTestInfoAt で判定
以上,独り言.
0187152
NGNG0188152
NGNG一応ソースです。
フォームにButtonとCheckListBoxを張り付けてから、
----------------------------------------------------------
procedure TForm1.FormCreate(Sender: TObject);
begin
CheckListBox1.Items.Add('Test');
end;
procedure TForm1.Button1Click(Sender: TObject);
var
i: Integer;
begin
CheckListBox1.Items.BeginUpdate;
for i := 0 to 65535 do CheckListBox1.Items[0] := 'Test';
CheckListBox1.Items.EndUpdate;
end;
----------------------------------------------------------
これ、Delphi6(Update1)だとボタン一押しで16*65536=1MBずつメモリ使用量が増えるのに、
Delphi4だと問題ないんだよなー。Del4と6でTCheckListBoxのVCLどこが変わってるの
だろう?professional以上持っているひと教えて!!
0189デフォルトの名無しさん
NGNG0190ねこま
NGNGソースがあっても参考にならないでしょうね
0191デフォルトの名無しさん
NGNGfunction ZenToHan(const Source: string) : string;
begin
Result := MapString(Source, LCMAP_HALFWIDTH);
end;
0192デフォルトの名無しさん
NGNGhttp://www.wwlnk.com/boheme/delphi/vbtodel/vbfaq/vbd0050.htm
それに以下を定義しないと...
function MapString(const Source: string; Flag: integer): string;
var
Chr : array [0..255] of char;
begin
Windows.LCMapString(
GetUserDefaultLCID(),
Flag,
PChar(Source),
Length(Source) + 1,
chr,
Sizeof(chr)
);
Result := chr;
end;
0193デフォルトの名無しさん
NGNGhttp://www.google.com/search?q=TCheckListBox+memory+leak+bug&hl=ja&lr=&num=50
0194デフォルトの名無しさん
NGNGがんばったようだが、全部的をはずしている。
0195デフォルトの名無しさん
NGNG何が問題なのでしょうか?
0196デフォルトの名無しさん
NGNG君がアホなのが問題
0197デフォルトの名無しさん
NGNG16色アイコンしかつくれないのでしょうか?
0198デフォルトの名無しさん
NGNG白黒や256色のアイコンもリソースに入れられますよ。
ただし、Delphi付属のImageEditorでは256色アイコンが作成出来ないので、
別途アイコン作成ソフトなどを利用してアイコンを作成する必要があります。
0199デフォルトの名無しさん
NGNG作ったとして、そのファイルは出来たアプリにどのような形で
入ってるんですかね?
結果的にバイナリでくっついちゃってるんですかね?
変な質問ですか?(^^;
0200デフォルトの名無しさん
NGNGbitmapファイルとして読み込むように作れば当然別ファイルになっているし、
リソースとして結合することもできるし。
独自形式でexeの後ろにくっつけておくこともできる。
関係ないけど200げっとズザー
0201デフォルトの名無しさん
NGNG0202199
NGNGははぁ。そうなんですか。ありがとうございます。
後から読み込むのではなくて、「決まった画像をImageコントロールに
表示させるだけ」ってヤツはどーなってるのかな?と思った次第でして。
その場合は、バイナリでくっついちゃってるんですよね?
「ズザー」ってあのAAのズザーか(^^;
0203デフォルトの名無しさん
NGNG何か「16bitリソースは扱えない」とか怒られてしまいました。。
もっと根本的なところから勉強してみます。
0204デフォルトの名無しさん
NGNG0205Delフサギコ
NGNG\\ヾ__ ∧_∧_ヾ\
\ \ \ (*´∀`)_\ \
\\ | ̄ ̄∧∧ | ヾ
\\\ ヾ |\ ミ;゚Д゚ ∧_∧
\\\ | ̄ ̄ ( *・∀・) 今だ!205番ゲットォォォォ!!!
\\\ ヾ |\ ̄/っ y っ\
\\ |  ̄ ̄ ̄ ̄ ̄ |
0207デフォルトの名無しさん
NGNG環境変数からアクセス者のドメイン(「*.*.プロバイダ名.ne.jp」形式のもの)を取得したいんですけど、
なぜかIP(「数字.数字.数字.数字」形式)ばっかり返ってきてしまいます。
環境変数名はキチンとREMOTE_HOSTで取得してるのですが・・・
(本来、IPを返すのはREMOTE_ADDRの方ですよね??)
0208デフォルトの名無しさん
NGNGドメインにかえちゃえば?
0209デフォルトの名無しさん
NGNG0210207
NGNGGetHostByAddrですか?
初めて聞く単語なんで(←ぉぃ)それを少し調べてからもう一回戻ってきます。
すごい良さげなヒントありがとうございます。
0211デフォルトの名無しさん
NGNGinet_addrもつかう
0212デフォルトの名無しさん
NGNG0213207
NGNGIP(xxx.xxx.xxx.xxx)をそのままドメイン名(*.プロバ名.ne.jp)で返してくれる
関数が見つかりました、おかげで問題も解決です。ありがとうございました。
(GetHostByAddrを使うのにwinsockを組み込むのが気づかなくて少々てこずりましたが)
ちなみにこいつです。
ttp://leed.issp.u-tokyo.ac.jp/~takeuchi/delphi/article/033/033662.html
0214サ骨
NGNG0216デフォルトの名無しさん
NGNG0217デフォルトの名無しさん
NGNGIndy のサンプル
0218デフォルトの名無しさん
NGNG#end
0219デフォルトの名無しさん
NGNGかなり藁
つーか、最近多すぎ
0220デフォルトの名無しさん
NGNGFormを持ったアプリケーションで、
タスクバーにアプリケーションアイコンを出さない簡単な方法あります?
0221デフォルトの名無しさん
NGNGTIPSで見たぞ。検索すれ!
0222デフォルトの名無しさん
NGNGたとえば↓コレとか。
ftp://delphi-jedi.org/api/Winsock2.zip
で、コレをどうやったら使えるようになるのかサッパリなんです。
凄い基本的な事らしく何処行ってもやり方乗ってないし、、、
どなたかヘルプ
0223デフォルトの名無しさん
NGNG>ftp://delphi-jedi.org/api/Winsock2.zip
↑これってIndyとは無関係のような、、、
何がやりたいのかわからんけど、ソケットを使ったプログラムなら VCL で
普通に書いたほうがいいんじゃないかな。
0224222
NGNGいやあのそのですねハイ。
それ展開したら「WinSock2.pas」と「svcguid.pas」ってのができたんです。
んで、コレ何だろう、コンポーネントなんかな?とか思って別プロジェクト
立ち上げて「コンポーネントのインストール」をやってみたのです。
でも何にもできないし。
たぶん壮大な勘違いな予感なんですけど、何処でどう勘違いしたのかもわからない。
とりあえずコイツを動かしてみたいんです。
0225デフォルトの名無しさん
NGNGなんだ、中身は単なる宣言だけじゃん。
これ、コンポーネントじゃなくてヘッダみたいなもんだよ。
これをusesしておけばWinsock2の関数が呼べる。
後はWinsockの知識があるかどうか。
0226222
NGNGありがとうございます。コンポネントじゃなかったのですね。
って事で「Sock2.dpr」とやらにTFormを追加。usesに
WinSock2,svcguid,
を加え、WinSock2と打ってみた所、候補がズラリ。
・・・でもなんか嫌な予感。内部定数まで見えてんの?コレって感じで。
そのまま↓キーをずっと押してたら、スタックオーバフローで逝ってしまいました。
どの辺で道を間違えたのでしょう?
0227デフォルトの名無しさん
NGNGWinsock2は非同期オブジェクトを使うためのものなので
なんだかわからないならば使いようがないのだけど
どの辺で道を間違えたかっていうか
根本的にDelphiがわかってないだけ
コンポーネントしかわかんないのならWinsock2使ったコンポーネントを使えば良し
0228デフォルトの名無しさん
NGNG俺も今これを探してるところなんだけど、何かお勧めってある?
0229デフォルトの名無しさん
NGNG何を作っていいかわからずこまっています
みなさんどうかお知恵を貸して頂けませんでしょうか?
他の言語の経験もありませんしdelphiの経験すらありません
よろしくお願いします
0230デフォルトの名無しさん
NGNGhttp://www.microsoft.com/japan/developer/library/vccore/_core_windows_sockets.3a_.background.htm
0231デフォルトの名無しさん
NGNGhttp://www.asahi-net.or.jp/~nk2w-ishr/winsock0.htm
0232デフォルトの名無しさん
NGNG1)ネットワーク関係
2)ゲーム
3)データベースとか会計ソフトみたいなの
0233デフォルトの名無しさん
NGNGどんな訳じゃ
0234デフォルトの名無しさん
NGNG手始めに乱数を使った単純なゲームを作ってみるといいよ
電卓とコンピュータの違いがよく分かる(・∀・)
0235デフォルトの名無しさん
NGNG1)ネットワーク関係
2)ゲーム
には興味があります
>>233
私は
http://pc.2ch.net/test/read.cgi/tech/1011649179/
の90です
0236デフォルトの名無しさん
NGNGマルチポストうざい。氏ね。
0237デフォルトの名無しさん
NGNG"モナーの90#覚えとける文字" とでも入れてね
じゃ、
先輩がアニメ絵モエな系統なら
こんなのはどう?
http://www2s.biglobe.ne.jp/~wind_f/projectd/project1.htm
0238222
NGNGありがとう。
つか勉強なるわコレ。
Delphi使った事なかったから知らんかったんだけど、
なんやコレVCとJAVAとVBのいいとこ取りみたいな言語なんね。
0239デフォルトの名無しさん
NGNGこんなことで騙されるような頭の弱い奴に一週間でできるというのは
人を小馬鹿にしてるとしか言いようがないな
http://www.text2music.com/mine/delphi/2.html
↑これやってみてできなかったら、先輩に金を返してもらえ
0240デフォルトの名無しさん
NGNG文字列型の変数同士を比較する時に、双方の文字列が完全に一致するのではなく
変数の中の一部だけを一致した場合にtrueを返すような書き方ってどうやるのでしょうか?
例えば変数aに文字列'abcde'が入っていて
変数bに文字列'cde'が入っていて、それを比較した場合にtrueを返すような感じなのですが・・・
if(a = '*'+b+'*') then begin
TorF := true;
end else begin
TorF := false;
end;
↑試しにこんなん書いてもダメだったんで(汗
0241デフォルトの名無しさん
NGNGTofF := Pos(a,b) > 0;
0242デフォルトの名無しさん
NGNG× TofF := Pos(a,b) > 0;
○ TofF := Pos(b,a) > 0;
0243デフォルトの名無しさん
NGNGおぉ!できました!どうもありがとうございます!!
(>>242は手元で試したらすぐ気づきました、どうもです)
0244デフォルトの名無しさん
NGNGマルチバイト文字(ファイル名などはその可能性がある)を扱う時は
PosをAnsiPosに替えましょう 「DELPHI クイックリファレンス」より
0245デフォルトの名無しさん
NGNGスペースとタブの区別がつかなくて
0246デフォルトの名無しさん
NGNG0247デフォルトの名無しさん
NGNGIDE上の話?
俺はタブは使わないけど。
0248デフォルトの名無しさん
NGNGそ。
秀丸みたいにいかんかね。
0250デフォルトの名無しさん
NGNG0251デフォルトの名無しさん
NGNGそのクラスで何をラップするの?
ParamCount/Str って、もう充分ラッピングされている
と思うが? グローバル変数だし。
0252デフォルトの名無しさん
NGNGFindCmdLineSwitch
■ このスレッドは過去ログ倉庫に格納されています