トップページ⇒tech
1001コメント330KB

Delphi相談室その8

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさんNGNG
Delphi関連のTips Q&A はこのスレです。

・もっと易しい、優しくな雰囲気がよければこちらに
モナーの *やさしい* Delphi質問スレ Ver.9
http://pc3.2ch.net/test/read.cgi/tech/1033668645/

・雑談はこちら
ミ,,゚Д゚彡DelフサギコのフサフサDelphi談話室�G
http://pc3.2ch.net/test/read.cgi/tech/1035549044/
ミ,,゚Д゚彡フサギコのフサフサDelphi談話室�G
http://pc3.2ch.net/test/read.cgi/tech/1035676809/


つづく >>2-4 あたり
0002デフォルトの名無しさんNGNG
<関連スレッド>

APIで直接な漢な人はこちら
Delphiで小さな実行ファイルを作ろう
http://pc3.2ch.net/test/read.cgi/tech/1009080085/

・なんかよく判らないが
Delphiマンセー
http://pc3.2ch.net/test/read.cgi/tech/1029120920/

delphiで作られた有名ソフトって何がある?
http://pc3.2ch.net/test/read.cgi/tech/990056026/
0003デフォルトの名無しさんNGNG
<過去ログ>

Delphi相談室その7
http://pc3.2ch.net/test/read.cgi/tech/1032576325/l50
Delphi相談室その6
http://pc3.2ch.net/test/read.cgi/tech/1028436692/
Delphi相談室その5
http://pc3.2ch.net/test/read.cgi/tech/1022921598/
Delphi相談室その4
http://pc.2ch.net/tech/kako/1018/10182/1018211735.html
Delphi相談室その3
http://pc.2ch.net/tech/kako/1010/10101/1010153466.html
Delphi相談室その2
http://pc.2ch.net/tech/kako/995/995950803.html
Delphi相談室
http://piza.2ch.net/tech/kako/971/971261573.html
0004デフォルトの名無しさんNGNG
日本ボーランド
http://www.borland.co.jp/delphi/

Delphiマガジン
http://dmj.psnet.ne.jp/

Delphi広場
ttp://www.sakaki.keiaikai.or.jp/

About Delphi
ttp://www2.big.or.jp/~osamu/Delphi/

その他
http://www.google.co.jp/search?q=Delphi&lr=lang_ja
0005デフォルトの名無しさんNGNG
FAQ
Q D6パーソナルにアクションマネージャーは?
A ありません

Q D7Proヘルプアップデートしたらハイパーリンク無くて使い難い
A D7Extヘルプを一緒に落としてコッソリ使いましょう
00064NGNG
掲載リンクは googleヒットの先頭から選んだもので、恣意的なものではありません。
0007デフォルトの名無しさんNGNG
すれ立て乙










統一の話はどうなったんだろ。
0008デフォルトの名無しさんNGNG
お疲れ。

それにしてもDelphiって本当に糞言語だな
0009デフォルトの名無しさんNGNG
> それにしてもVBって本当に糞言語だな
あのーここDelphiスレですが・・・
0010デフォルトの名無しさんNGNG
>統一の話はどうなったんだろ

2chのシステムとして、使わないスレは勝手に下がる
のだから、不要なら使わなければいいだけでは?
0011デフォルトの名無しさんNGNG
>>5
>A D7Extヘルプを一緒に落としてコッソリ使いましょう
D7 Ent(erprise) の間違いだな?
0012デフォルトの名無しさんNGNG
>>9
おおっ、君には見えたのか
0013デフォルトの名無しさんNGNG
今日賢くなった事 age

 構造体配列定数の定義

type THoge = record a:string;b:string; end;

const AHoge:array[0..2] of THoge=(
(a:'こう' ; b : 'いう'),
(a:'ふう' ; b : 'に'),
(a:'構造体メンバ目' ; b : 'が必要'));
0014デフォルトの名無しさんNGNG
ゲームプログラムをしているのですが、描画内容の計算は1/30秒ごとに行い、
Application.OnIdle で暇なときに描画関数を呼び出し、というのをやっています。

が、このOnIdleというのはCPUに余裕があるときに発生すると聞いたのですが、
完全に暇なときなのでしょうか、それとも100%以外という意味なんでしょうか。
もし前者なら、描画できる余裕が少しあるのに描画できない、後者なら
描画を始めた時点で100%に達してしまい、終わるまで次が描けない → 描くのに1/30秒
以上かかるときに描画が等間隔にならない、と考えたのですが・・・。

理想は、通常は30fpsで描画して、維持できなくなったら徐々にfpsを減らしていく、
という形なのですが、いいアイデアは無いモノでしょうか。
0015デフォルトの名無しさんNGNG
つまりPCの状態にかかわりなく優先的に処理して欲しいわけか
0016デフォルトの名無しさんNGNG
>>14
18fps(55ms間隔)でよければOnTimerイベント内で処理するのがいいよ。
呼べなきゃ呼べるようになったときに呼んでくれるから。
OnIdleはそういう目的では使わないよ。
というか素直にDirec(略
0017デフォルトの名無しさんNGNG
>>14
「CPUに余裕があるとき」じゃなくて何の処理もしてないとき。
これはwindows全体の話ではなく、あなたのプログラムが何の処理もしてないときに呼び出される。
(つまり、メッセージループに入っていて、かつ処理するべきメッセージがないとき)
CPUの負荷はあまり関係ない。
0018デフォルトの名無しさんNGNG
>>14
OnIdleは他のジョブが動いていても時間が来たら呼ばれる筈

ホントに時間が空いてるかどうかは
パフォーマンス データを取得して調べてみるしかないのでは?
ヘッダ情報は
http://www.ez-delphi.com/sources/PDH.htm
0019デフォルトの名無しさんNGNG
OnIdleはメインスレッドにメッセージがこなくなったら発動するんだと思う。
だから後者かな。
俺はゲームの経験はないんだけれども、fpsを気にするようなゲームでは、
メインループは独自に書いたほうがいいと思う。こんな感じ?↓
while GameIsOn() do
begin
if PeekMessage(...) <> 0 then ProcessMessages(...)<-もしVCLにウィンドウメッセージを処理させたいなら。
<描画とか、時間測ってsleepとかで調節したり...>
end;
0020デフォルトの名無しさんNGNG

while True do
begin
 now := GetMilliSecond;
 calc;
 if realtime < processtime then
  render
 else
  NanoSleep(調整);
 Inc(processtime, GetMilliSecond - now);
 Inc(realtime, 33);
end;
002114NGNG
なるほど、勉強になりました。
OnIdleは自分が何もしていないときに呼ばれるんですね。

ゲームといってもシミュレーションに近いので、数値計算は一定時間おきに行って(MMTimer使ってます)
計算結果をボンボン放り込んで、描画はそれを取り出しながら維持できる最大のfpsで行いたい、って感じですね。
うーん、やっぱりOnIdleは使うべきではないのかな・・・。
(負荷が増えると描画間隔が不定になるので、見てて気になるんです)

>>20
参考になります。
えっと、描画が終わるまでsleepして最大33ms間隔で描き続ける・・・でしょうか。
sleepは使ったことがないんですが、全体が止まってしまうということはありませんか?
(すみません、スレッドとか扱ったことがなく、よく解らなくて・・・(´・ω・`))
0022デフォルトの名無しさんNGNG
もう一個mmtimer使って、そっちで描画やったら?
0023デフォルトの名無しさんNGNG
mmtimer(マルチメディアタイマー)は実は別スレッドなので、
マルチスレッドを意識しないで使うとバグの温床になります。
つか、最近それでハマった・・・・・・。
0024デフォルトの名無しさんNGNG
アセンブラのようなものを作ろうとしています。

そのフィールドを表現する方法として
案1:
  type TOpFld = record LAB , OP , SRC , DST , Cmt:string; end;

案2:
  type TOpName=(opLAB,opOP,opSRC,opDST,opCmt);
  type TOpFld = array[TOpName] of string;

があると思います。
案2だとループ等の処理が容易なので魅力なんですが、普通はどうやります?
0025デフォルトの名無しさんNGNG
record / 構造体の代わりにクラスを定義。
ループだろうが文字列によるインデクシングだろうが何でもできる。
0026デフォルトの名無しさんNGNG
MapDKという地図開発ツールをDelphiで使っている方いらっしゃいますか?
Delphiでどうやれば使えるようになるのか知りたいのですが。。。
002724NGNG
>>25
そりゃまあ、何でも出来るけど、メンドクサイ面が多くなりませんか?
単に一時的に保存するだけでメインでない部分でクラスを使うのは・・・・
002824NGNG
>>26
知らないんだけど ActiveXみたいだから コンポーネント->ActiveXの取り込みで動くんじゃないの?
0029デフォルトの名無しさんNGNG
レコードだと一気に全部ファイルへ書き出せるのにクラスだと
ファイルに書き出すのが面倒
003026NGNG
>>28
う〜ん、試してみたんですけどAcitiveXの取り込み->コンパイルで
エラーが発生してコンパイルできないんですよ。

でも、MapDKを使用して製品を開発している会社の紹介では、
Delphiを使っているというところもあるみたいだし。
003124NGNG
>>30
確かに、タマにあるよね。 手直ししないと使えない事が。 昔は IEコントロールがそうだったような気がする。

エラーメッセージはどんなの?
003224NGNG
>>29
そうだね。バイナリならそのまま書き出せるけど・・・文字列だからなあ

結局 こんな所で悩んでもしょうがないので、2の配列型にしました。
その方が面白そうだし
0033デフォルトの名無しさんNGNG
>>24
速度いらないなら行全体を文字列として保持すればいいし
速度最優先なら一命令一クラス割り当てて
文字列を適切な型(アドレス・レジスタ等)にキャストしてセットすればいい。

文字列配列はその中間だけど列挙型がない方が柔軟な記述ができるから
  type TOpFld = array of string;
でいいんじゃないの。
003426NGNG
>>31
レスありがとです。
会社行かないとエラーメッセージは確認できないです。残念。
いろいろいじってみますね。
0035デフォルトの名無しさんNGNG
誰か pasDoc(http://pasdoc.sourceforge.net/) を
ローカライズした/する気のある奴いない?
自分でもソース手に入れて少し弄ってみたんだが、
どうも怪しげな文字化けが発生するので困ってるのよ。
0036デフォルトの名無しさんNGNG
>>35
面白そうだね。 
ただ、古いTPスタイルのコードみたいだから
Delphiスタイルに変更してしまいたいな。
それからGUI付けたい。
0037デフォルトの名無しさんNGNG
>>35
こういうのを若い人にやって貰いたいな。特にフサギコに。
0038デフォルトの名無しさんNGNG
ちと方針を変更して pasdoc をDelphi用に記述した(?
DIpasdoc(http://www.zeitungsjunge.de/delphi/) の方を弄ってる
単純な文字の置き換え作業は終わったので上げておく。
今手元のソースでチェックしてるけど、できれば協力plz
ttp://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1037496078

Kylixは確かEUC保存だったはずなのでロシア語同様、
文字コード指定を分けた方が良いかもしれない
GUIもあった方がいいね。暇を見てサクっと作っておこう
0039デフォルトの名無しさんNGNG
>>23
がちょっと気になる・・・mmtimerだけ論理的に別空間で動いてるってこと?
特に意識せずに使ってるけど、なんか覚えておかないとまずいのかな・・・。
0040デフォルトの名無しさんNGNG
「論理的に別空間」ってのはよくわからんが、仮想メモリ空間は同じだぞ。
何が問題かというと、たとえばあるポインタがnilかどうかチェックしてからそのポインタを
逆参照するようなプログラムで、nilチェックしてから逆参照するまでの間に別なスレッドが
そのポインタをnilにしてしまうとバグるとかそういう話。
TThreadの使い方、特にSynchronizeメソッドあたりの使い方を勉強しる。
0041デフォルトの名無しさんNGNG
>>38
DIpasdocにそのソースを入れてコンパイルしなおしたんだけど
特に今の所日本語が通らない事はないみたいだけど?
0042デフォルトの名無しさんNGNG
PanasonicのHDカーナビのCMで
今日何に食べる?
ナポリタンナポリタンナポリタン〜
イタリアンね
みたいな会話がある…
どうみても
( ゚∀゚ )ぱいそんぱいそんぱいそ〜〜ん
のパクリだ…
0043デフォルトの名無しさんNGNG
JavaのinterfaceみたいにDelphiのinterfaceを気軽に使いたいんですが
何かいい方法はないでしょうか?

どーもごちゃごちゃして汚くなるのと、メモリ管理が参照カウント方式になるのが
わけわからんのです。

ためしに_AddRefと_Releaseを単に-1を返すようにoverrideしてみたんですが、
それはそれで間違っているような気がします。

var
ti : IHoge;
begin
ti := SampleClass.Create;

だったらti.Freeできないですし。
Javaだったらgcがあるからかまわないわけですが、どうやるのがDelphi的に正しいのかなぁ。
0044デフォルトの名無しさんNGNG
DelphiのinterfaceはCOM専用と思っておいたほうがいいよ。
Delでは自前のクラスにinterface使った事ないよ。
0045デフォルトの名無しさんNGNG
stringで、「何か」ってどう表せば良いんでしょうか?
意味不明でスマソ。
004635=38NGNG
>>41 サンクス。しかしこちらの調べだと2バイト文字の影響を
食らいまくっているらしく。

・コメント中に2バイト目が{}がくる文字(”ボ”や”マ”)が
現れた場合はパースに失敗する
・2バイト目に@がくる文字(”ァ”)の後にlink等と書くと
タグであると誤認識する&文字化けする

StrByteType チェックを噛ましまくって暫定解決できた
版を作ったので、GUIとセットでソース置き場に上げときます。
しかしキモの部分に手を加えているのでエンバグ/デグレ
(特に既存他言語の処理で不具合)が起きている可能性が
極めて高いので御用心を。
0047デフォルトの名無しさんNGNG
>>44
多重継承みたいなことが必要になったときにはどうしてます?
そのような事態にならんように設計で回避ですか?
0048デフォルトの名無しさんNGNG
基本的なコトなんですが・・・

1. 自分でprocedureを作って、Formの上の部品にアクセスしたいとき、
Form1.label1 とか絶対指定しないとエラーになるのですが、要するにそのprocedureが
Form1を継承していないということなのでしょうか?何処かに指定がいるんでしょうか。

2. フォームの上に動的にimage1を配置したいのですが、それを見越して
Form1.image1... というのをソースに書くと、そんなモン無いぞとエラーになります。
が、image1とだけ書くとコンパイルが通ります。何故なんでしょうか?
0049デフォルトの名無しさんNGNG
>>48
>1.
継承しているかどうかということではなくって
Form1を省けるのはTForm1自身のメソッドのみ。

>2.
いろいろ方法はあるけど
TForm1のprivate部分に
image1: TImage;
と書いておけばいいよ。で、FormCreateか何かで
image1 := TImage.Create(Self);
image1.Parent := Self;
としておく。
>image1とだけ書くとコンパイルが通ります。
これは別の何かを参照しているのでバグっぽいかも。
コンパイルが通るのはたまたま・偶然。
0050デフォルトの名無しさんNGNG
>>48 FAQっぽいわけだが。
誰でも通る道っぽいので、気持ちはわからんでもない

1.クラスは「型」。例えばおかしのクッキー型のように
TForm1という型でForm1と同じFormをぽんぽん作れるの。
ぽんぽん作ったクッキーはそっくりでその全てにLabel1があって、
例えばLabel1と書いてもDelphiはTForm1という型で作った
どのクッキーのLabel1の事を云っているのかわからない。
よって Form1.label1 と指定しなければならない

2.まずソースを見る。TForm1という型には image1 は
存在しない筈。存在しないものを指定すればエラーになる道理です。
image1 でエラーにならない理由だが、
手続き/関数のローカル変数として宣言してないか?
ローカル変数はその名の通り特定地域内(たとえば関数内)専用の変数。
要は〜.〜の形式ではアクセスできないわけ。
詳細はHELPのスコープの項をみてくれい
0051デルファイの名無しさんNGNG
>>43
それでいいんじゃないですかね。
クラスとしての参照も保存しておいて、そっちでFreeかな。

var
t: SampleClass;
ti : IHoge;
begin
t := SampleClass.Create;
ti := t;
 {ti使う}
ti := nil; {Free後_Releaseが呼ばれないよう参照を切る}
t.Free;

インターフェースに_Release以外の解放用メソッドを付けるのは、
解放後言語仕様により_Releaseが呼ばれてしまいアクセス違反を起こします。

自分は、クラス型としての使用をメインに、何かに渡す時だけインターフェースな
使い方もするので、最後はクラス型としてFreeです。

或いは、TComponentの様に、連鎖解放みたいな仕組みを作っておくとか。
0052デフォルトの名無しさんNGNG
>>46
おお、修正が早いね。
2バイト目の } は見つけたんで
function TTokenizer.ReadCommentType1(var t: PToken): Boolean;
var
 c: Char;
 label LP;
begin
 ReadCommentType1 := False;
 if (not CreateToken(TOK_COMMENT, t)) then Exit;
 t^.Data^.AppendChar('{');
 repeat
 LP:
  if (not HasData) or (not getChar(c)) then
   begin
    Exit;
   end;
  if (c in LeadBytes) then begin t^.Data^.AppendChar(c);GetChar(c);t^.Data^.AppendChar(c); goto LP;end;
  if (c = #10) then
   Inc(Row);
  if (c = '{') then
   WriteLn(GetStreamInfo + 'Warning: Found opening brace { within comment, nested comments are not supported.');
  t^.Data^.AppendChar(c);
 until (c = '}');
 ReadCommentType1 := True;
end;

こんなふうに修正した所だけど、 2つ目は見つけてもなかったよ
0053デフォルトの名無しさんNGNG
C言語のsystem()に相当する関数って何かありませんでしたっけ・・・?
0054デフォルトの名無しさんNGNG
Windows.CreateProcess
0055デフォルトの名無しさんNGNG
>>49 >>50
ありがとうございます。
Form1が持つimage1と明示してやらないとだめなんですね。

で、気になったのが、onFormCreateでimage1を作ってやって、他のTForm1の
メソッド(たとえばForm.Button1.onclick)でimage1にアクセスすると通るんですが、
自分で単体のProcedureを作って(Form1のメソッドではない)その中でForm1.image1に
アクセスしようとするとダメでした。
後者は、その時点でForm1にimage1が無いのでダメなのは、ご説明で理解できました。
前者がなんで通るのかがいまいちで・・・。
http://www.geocities.co.jp/SiliconValley/1810/hoge.txt ← アフォでスミマセン(´・ω・`
0056デフォルトの名無しさんNGNG
>>39
TTimerと同じ使い方をすると原因不明の挙動で悩むことになる。
例えば、よくやるのがVCLのコンポーネントなんかにアクセスしてたりする場合。

基本的にはマルチスレッドプログラミングを適用すればよいので、
同タイトルのスレッドか、書籍やwebを見ればよいと思われ。

俺もデバッガのスレッドウインドウ見てて最近気づいた(駄目ジャン
0057デフォルトの名無しさんNGNG
48=55 は、結局、クラスとかOOPが我かっとランのね
0058デフォルトの名無しさんNGNG
>>57

そうだね。クラス、メソッド、フィールド、継承、self などを
しっかり勉強した方が、ここで対症療法を繰り返すより、
かえって上達への近道だと思われ。ヘルプを読むだけでも
いい
0059デフォルトの名無しさんNGNG
>>54
CreateProcessパラメータ多くて面倒すぎ・・・
ただdirとかコマンドラインから実行したいだけなのに。

ウワァァァンヽ(`Д´)ノ
0060デフォルトの名無しさんNGNG
WinExecという手があった。
推奨されないらしいけど。

cmd /c dirでできるね。
しかし微妙に思ったとおりの動作にならない。
コマンドラインアプリケーション作って、 cmd /c pauseってやったら
最後にEnter押すまで終了しないのが理想なのだが。
006150NGNG
>>55 もうちょっとつきあおうじゃないか。
でも>>57>>58の指摘は正しい。そのつもりで聞いとくれ
>>55の例でimage1に出来るのはimage1がグローバル変数だから。
詳しくはHelpのグローバル〜とスコープの項を読み漁る事。
その上で、以下の質問に答えよ(解答はメール欄に書く事)

Q1:a〜iのうちproc1からアクセス可能なものを挙げよ。
Q2:a〜iのうちproc2から(以下略)
Q3:unit1をuses指定しているunit2のproc3から(以下略)
unit Unit1;
interface
type
 TForm1 = class(TForm)
       a: Integer;
  public  b: integer;
  private  c: integer;
  protected d: integer;
  published e: integer;
 end;
var Form1 : TForm1;
  f: integer;
implementation
var g: integer;
procedure TForm1.proc1; var h: integer; begin end;
procedure proc2; var i: integer; begin end;
0062デフォルトの名無しさんNGNG
clipboard := TClipboard.Create;

begin
clipboard.SetTextBuf(Pchar('a'));
end;

とやるのと、

Clipboard.Astext := 'a';

とやるのではどっちが良いのでしょうか?
0063デフォルトの名無しさんNGNG
あり、begin と end は抜かして下さい。
0064デフォルトの名無しさんNGNG
後者がいいよ。PCharなぞ見たくもない。
0065デフォルトの名無しさんNGNG
やっぱりそうですか。さんくすです
0066Delフサギコ ◆A6VzDeLphI NGNG
  ∧,,∧   マヅ
 ミ,,゚Д゚ミつ TClipボドのインスタンス生成イクナイ
        たぶん
0067デフォルトの名無しさんNGNG
前者見て、singletonのかと思ってソース見たら違うじゃん。
利用するだけなら、後者だな。

後者も後者で遅延生成されてるんだな。
proxyパターン?
0068Delフサギコ ◆A6VzDeLphI NGNG
  ∧,,∧   VCL標準の
 ミ,,゚Д゚ミ   シングル�dではなかったかと。

ClipbrdユニットClipboard関数みたらわかるです。
0069デフォルトの名無しさんNGNG
1 SHL 32

なんで結果が1になる?
0070デフォルトの名無しさんNGNG
実行前だから
0071 NGNG
>>69
型のビット長の余りだけシフトするからあってるよ。
「1」とだけ書くとintegerだから32ビットシフトは
0ビットシフトと同じ。
1 shl 32 = 1 shl 0 = 1
1 shl 33 = 1 shl 1 = 2
0072デフォルトの名無しさんNGNG
むしろ1でなくて何になると思ったのか聞きたい
007369NGNG
ヘルプコピペから
 >x shl y と x shr y の各演算は,x の値を左または右に y ビットだけシフトする。
 >これは x に対する 2^y の乗算または除算に相当し,

1 SHL 32 = 1*2^32 オーバフローしてゼロを期待していました。

じつは、 nビットマスク処理= 2^n のモジュラ演算として
mask := (1 SHL n) -1;
result := X and mask;

と書いたのですが、 これが動かないので気付きました
0074デフォルトの名無しさんNGNG
>>73
ヘルプをそこまで読んだなら、なぜその後を読まない?
007569NGNG
なるほど、 D6パーソナルのヘルプには書いてありますね。 D5proには無かった
0076デフォルトの名無しさんNGNG
>>75
げ、D5かぁ。確かに書いてないな。すまん。
0077デフォルトの名無しさんNGNG
C++中級者(仕事で使ってる)ぐらいの人が
かんたんに、
Delphi勉強できるHPや書籍ってありませんか?
0078デフォルトの名無しさんNGNG
>>77
中級なら基本は付属のマニュアル等で十分だと思うがダメ?
007977NGNG
>>78
Personalだっけ
無料の奴使ってるので。
付属マニュアル無いのです。

特に無いのなら、
明日、紀伊国屋で、立ち読み大会してきます。
気に入ったら買います。

0080デフォルトの名無しさんNGNG
>>79
Personalか・・・ヘルプもほぼ付属マニュアルと同じなんだけどな。

とりあえずとっかかりに
ttp://www.ba.wakwak.com/~h-kova/
の
ttp://www.ba.wakwak.com/~h-kova/procomp.htm
なんてどうよ?
0081Delフサギコ ◆A6VzDeLphI NGNG
   ∧,,∧  お役に立てたらいいかも。
  ,ミ ゚Д゚彡 メンテしてくれたらもっといいかも。
  ミ  ∪   
C++(Builder)とDelphiの対応
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=999486538&res=7
0082Delフサギコ ◆A6VzDeLphI NGNG
   ∧,,∧  書籍ならD6プログラバイブルが
  ,ミ ゚Д゚彡 C++/VBとDelとの対応表が載ってた
  ミ  ∪  と思うです。
 ミ〜,, ミ
  ∪ ∪  かなり詳細だったはづ
0083デフォルトの名無しさんNGNG
まさか付属マニュアル見るやつが居るとは思わなかった
言い訳にしてるだけか?
0084デフォルトの名無しさんNGNG
C++ → Delphi はチョイ前のC Magazine で特集組んでたよ
何月号だったかは忘れたが、割とページを割いていて分かりやすかった
0085デフォルトの名無しさんNGNG
>>83
何か問題でも?
0086ななしへたぐらま ◆XcB18Bks.Y NGNG
>>43 >>51
なるほど〜.

実は最近インターフェイスを使い始めていて,
終了時にソースで追えないところでアクセス違反が出ていたので
どうしたものかと思っていましたが….
0087デフォルトの名無しさんNGNG
そこまでしてインタフェス使うメリットが感じられない。
008877NGNG
>>80さんや、Delフサギコさん の紹介サイトでなんとなくわかりました。
何か適当に作ってみて、慣れて見ます。
今日は忙しくて本屋いけなかったので、
次行った時にでも、D6プログラバイブル 見てみます。
ありがとうございました。
0089デフォルトの名無しさんNGNG
逆に、すべての自作クラスをInterfacedObjectから派生させて
参照カウント方式にメモリ管理を任せれば、メモリーリークと無縁の世界になれる?
VCL系のオブジェクトはFreeしなきゃいけないから混乱しちゃうか。
0090デフォルトの名無しさんNGNG
Delphiのメモリ管理
・Create/Free
・TComponentの親が子を開放
・Interfaceのリファレンスカウンタ
なんだかねぇ・・・
0091デフォルトの名無しさんNGNG
ちなみにInterfaceは循環参照するとリークが発生する。
0092デフォルトの名無しさんNGNG
>>61
すみません、超浅漬けで申し訳ないんですが勉強してきました。・゚・(ノД`)・゚・。
理論だけ見ても全く実感沸かないですね・・・実際に自分で書いて試してみます。

Formのメンバ、Unitの変数、スコープの認識がかなり曖昧デシタ・・・。
0093デフォルトの名無しさんNGNG
まぁ、C++でもメモリ管理は頭痛い問題だからしょうがないべ
(shared_ptrなんかは若干使いやすいけど)

いっそGC欲しいとも思わんでもないなぁ
0094デフォルトの名無しさんNGNG
ずっと思っていたのだが、 親が子を解放って事は
st:=Tstringlist.Create(Form1);
 というような感じでクリエイトすれば Free しなくても
 Form1の終了時に勝手にメモリ解放してくれますか?
0095デフォルトの名無しさんNGNG
>>94
TComponentの派生クラスならそうだが
残念ながらTStringListにはOwnerはありませんにょ。
0096デフォルトの名無しさんNGNG
>>94
TStringListはコンポーネント継承ではないので、その管理機構を持っていません。
TObjectTray = class(TComponent)
 public;
  constructor Create(Parent:TComponent);
  destructor Destroy:
 function CreateStringList:TStringList;
 end;

みたいなインターフェースで作るしかないかも
0097デフォルトの名無しさんNGNG
>>95 ガ━━━(゚Д゚;)━━━ン!ありがとうにゅ
 勉強し直してくるにゅ
0098デフォルトの名無しさんNGNG
>>96 かなり解ってきました。
TmenuItem などはオーナーを TmainMenuにしておくと個別に解放する必要は無いわけですね。
0099デフォルトの名無しさんNGNG
>>96 かなり解ってきました。       
TmenuItem などはオーナーを TmainMenuにしておくと個別に解放する必要は無いわけですね。
0100デフォルトの名無しさんNGNG
100
クソしてくる
0101デフォルトの名無しさんNGNG
保守
0102デフォルトの名無しさんNGNG
>>92 おしい。Q2、Q3とも a はアクセス可能です。
まぁ大体分かったと思うので精進してくれぃ。
0103デフォルトの名無しさんNGNG
HTTPから、MP3などのストリーミングデータを取り込んで、
ストリーム再生できるMP3プレイヤコンポーネントに渡す方法は
無いでしょうか?

procedure OpenStream(Stream: TStream; StreamType: TMP3StreamType);

で、渡せるみたいなのですが、サンプルコードではClientSocketから、

stream := TWinSocketStream.Create(ClientSocket.Socket, 2000);

として、Streamを取り込んでいました。
これと同じ事をNMHTTP等から出来ないものでしょうか。
0104デフォルトの名無しさんNGNG
NMHTTP なんだから HTTP プロトコル以外は無理だろ?
0105Delフサギコ ◆A6VzDeLphI NGNG
 ∩|      CLXでバグ報告&対応っす
 ミ ゙''゙゙゙つ    
 ミ∧,,∧ 以前教えてもらった
 ミ,,゚Д゚彡CLXでfsStayOnTopなMainFormが
 U U   最小化/リストアするだけでどっか行方不明になる
       というバグ。Application.OnRestoreで
FormStyleを変更するという対応だけでは不十分だったので調べました。

CLXはFormStyleを変更したり
最小化/リストアするだけでForm位置がかってに変わります。
ですので以下のようにする必要があります。
なぜこんなマジックナンバー(8とか46とか)になるのかは不明
タスクバーの配置が上下左右、どの位置でもこれでOK

procedure TForm1.AppRestore(Sender: TObject);
var FormRectBuffer: TRect;
begin
 FormRectBuffer := Self.BoundsRect;
 FormStyle := fsNormal;
 Show;
 FormStyle := fsStayOnTop;
 FormRectBuffer := Rect( FormRectBuffer.Left + 8, FormrectBuffer.Top + 46,
    FormRectBuffer.Right + 8, FormRectBuffer.Bottom + 46);
 Self.BoundsRect := FormRectBuffer;
end;
0106デフォルトの名無しさんNGNG
ラジオItem型のメニューの設定が簡単になるよう 
procedure SetMenuEnumProp(TypeInfo: PTypeInfo;MenuItem:TMenuItem;Click:TNotifyEvent);
var i:integer;
var T: PTypeData;
var s:string;
var nw:TMenuItem;
begin
 T := GetTypeData(GetTypeData(TypeInfo)^.BaseType^);
 for i:=T^.MinValue to T^.MaxValue do
 begin
   s:= GetEnumName(TypeInfo , i);
   if i<=MenuItem.Count then begin
     nw:=TMenuItem.Create(MenuItem);
     MenuItem.Add(nw);
   end else nw:=MenuItem.Items[i];
   nw.Caption := s  ;
   nw.Visible := True;
   nw.RadioItem:= True;
   nw.OnClick := Click;
   nw.Tag:=i;
 end;
end;
こんな関数を作り、
列挙型 THoge=(HAHA,FUFU); を定義して
フォームのpublished に property hoge:THoge;を設定して
procedure TForm1.OnHoge1(Sender: TObject);
begin Hoge:= THoge( (Sender as TMenuItem).Tag );
end;
実際の選択時のアクションは Hogeプロパティの代入メソッドで
書けばいいという事になるんだけど、 このあたりもっと自動化出来ないかな?
0107デフォルトの名無しさんNGNG
かなり遅レスだが個人的にタイムリーなんで

>>26
漏れはMapDKIIIとDel6Entの組み合わせで使ってます。
ActiveX取り込みんとこでエラーは出なかったが
インポートしたpasを若干修正しないとうまく動かないかも。
0108デフォルトの名無しさんNGNG
type
  TTest = class(TObject)
  public
    constructor Create;
    destructor Destroy; override;
  end;

http://www.acesekkei.com/dp_03.htm
↑ここのサンプルなどを見ると、TObjectから直接派生したクラスで、コンストラクタやデストラクタを自前で書く場合、デストラクタの方だけoverrideしてinheritedを呼んでいます。
なぜコンストラクタとデストラクタで書き方が違うんでしょうか?
TObjectのCreateは静的メソッドなのでoverrideできないのはわかるのですが、なぜあえてTObjectのCreateとDestroyは違うディスパッチの設計になっているのでしょうか?

解説していただけるとありがたいです。
0109デフォルトの名無しさんNGNG
なぜって、オレにはなぜ同じでなきゃならんと思うのかの方が不思議。
Destroy には、ふつう後始末をするコードを書く、そして、override
できない Free から間接的に呼ばれて実行される。後始末は上位クラス
についても実行されるべきなので、継承の過程でえんえんと下位クラスで
override されていくべきだと思う。これに対して、コンストラクタには
普通、初期化のコードを書くので、下位クラスで新たにパラメータを
もつ TComponent.Create(AOwner: TComponent); みたいに新たに定義して
もかまわないし、そうすべきなのでは。
0110デフォルトの名無しさんNGNG
>>108

オブジェクトを作るときはクラス名を指定してコンストラクターを呼び出す。
inst := TClass.Create;

オブジェクトを削除するときはインスタンスを指定する。
inst.Free

削除のときinstは基底クラスの変数を使うときがあるので仮想関数になっています。

TDerive = class(TBase)

var base: TBase;

base := TDerive.Create;
base.Free; <--- ここではTDeriveのデストラクタが呼び出される。
0111デフォルトの名無しさんNGNG
>>108
TObject.Destroy
TObject.Free
ヘルプ読んだか?
0112Delフサギコ ◆A6VzDeLphI NGNG
  ∧,,∧  俺も、『Delphiオブジェクト指向プログラミング(塚越氏著)』を
 ミ,,゚Д゚彡 読んでようやくわかったからなあ・・・
 ミつ[|lllll]).
〜ミ   ミ   ずばり、・なぜデストラクタは仮想かってのがP177にあり
  ∪''∪  TObject直派生のCreateやDestroyから
inheritedを呼ぶべきか否かについても書いてある。P135とP146 
しっかり読んで初めてわかるかもしれない。

名著は名著たる資格があるから名著なんでしょな。

ヘルプ読んで誰もがわかるものじゃないと思うyo。
0113Delフサギコ ◆A6VzDeLphI NGNG

  ∧,,∧  で、CreateとDestoroyの宣言について。、
 ミ,,゚Д゚彡 通常、オブジェクト破棄に使われるFreeは
 ミつ[|lllll]).  TObjectのメソッド(静的)
〜ミ   ミ   
  ∪''∪ 
StringListを例にとると、
StringList1.Freeを呼び出しても、呼ばれるコードはTObject.Free。
このTObject.FreeでDestroyを呼び出すようになっているんだけど
Destroyが静的メソッドだと、呼び出されるのはTObject.Destroyに
固定されてしまうので、StringList.Destroyが呼ばれなくて困る。

だから、Destroyは仮想メソッド。
そんな感じ。
0114Delフサギコ ◆A6VzDeLphI NGNG

  ∧,,∧   inherited Createとinherited Destroyは
 ミ,,゚Д゚彡  単にTObject.Create/Destroyに
 ミつ[|lllll]).  何もコードがないから呼び出していないだけ
〜ミ   ミ   
  ∪''∪  他クラスからの派生コードなら
      inherited Create / Destroyは必ず必要と
      覚えておいてよいでしょう。


こんな話題も、某MLでは"過去ログに載っている"or"HELP嫁"で
話題つぶされてしまうのかなあ、、、、2chも同じか。

今、HELPのTObject.Free/Destroy読んだけど、
俺の書いたような事は載ってないだろ、
なぜそうしなければいけないかの理由無しに
"必ず override 指令を追加"と書かれているだけ。
0115デフォルトの名無しさんNGNG
その本をDelphi6,7あたりに対応して復刊してくれないかなぁTT
読みたいんだけど手に入らないんよ
0116デフォルトの名無しさんNGNG
投票プリ!!
>この本は復刊交渉を開始しています
http://www.fukkan.com/vote.php3?no=4407
0117デフォルトの名無しさんNGNG
復刻じゃなくて
PersonalやPoに添付してくれないかなぁ
今添付してあるのはPDFでいいよ
簡単なクラスを作って
XX.Freeの部分からF7でトレースして動きを見れば
なるほどと思うよ

0118デフォルトの名無しさんNGNG
>>114
ここで話題にされているのか。

デフォルトですべてのメソッドは Virtual。ってのが正統派 OOL。
それだと速度とかが稼げないから non-virtual を指定できるようになったのが
C++ を筆頭とする OOL。

だから"必ず override 指令を追加" ってことで十分なんだけど。

で、混乱の元は「なぜデストラクタは仮想なの」ではなく「なぜコンストラクタは仮想でないの」
なのだと思うが?
0119ねこまNGNG
>で、混乱の元は「なぜデストラクタは仮想なの」ではなく「なぜコンストラクタは仮想でないの」
>なのだと思うが?

TObject はオブジェクトの頂点です.つまり,この上には何もいないので
override する必要がありません.

こんな説明でよろしいかと
0120デフォルトの名無しさんNGNG
>>119
全然よろしくないって
0121デフォルトの名無しさんNGNG
>で、混乱の元は「なぜデストラクタは仮想なの」ではなく「なぜコンストラクタは仮想でないの」
>なのだと思うが?

継承先でコンストラクタの引数を変える場合を想定しているから。
かな。

やればわかるが、クラスのコンストラクタを仮想にすることは可能。
つまり少なくともTObjectは「意図的に仮想とはしていない」
その理由としては
クラスを継承する場合は元となるクラスに何かしら機能を追加/特化
するわけだからコンストラクタに引数が追加されるケースもありうる
そして、仮想とした場合は引数を追加することができない。

例えば、TiniFileはTObjectを継承したクラスでコンストラクタの
引数としてファイル名を要求するが、TObjectのコンストラクタを
仮想とする場合はTiniFileのためにわざわざファイル名を引数にもつ
コンストラクタを用意しなきゃいけない。無駄だと思わない?
それはまだ良いんだが。例えばコンストラクタに自分で作った
クラス(TMyClass)を渡す必要がある場合はどうする?
某に頼んでTObjectにコンストラクタを追加してもらう?
いくらなんでも無茶だと思わない?
0122デフォルトの名無しさんNGNG
こんなこともできますが?
>constructor Create(s: string); overload
で警告が出るがこれは全く余計なお世話だと思う。

TMyObject = class
public
 constructor Create; virtual;
end;

TMyObjectEx = class(TMyObject)
public
 constructor Create; overload; override;
 constructor Create(s: string); overload;
end;
0123デフォルトの名無しさんNGNG
ひぇーDelphi初心者の自分にはこうなるとわけわかんないよ。
コンストラクタが仮想ってことは生成したいオブジェクトが実行時にしかわからんということだよね?
どーゆー意味があるんじゃあ
0124デフォルトの名無しさんNGNG
>コンストラクタが仮想ってことは生成したいオブジェクトが実行時にしかわからんということだよね?

TMyClass = class of TMyObject;
TMyObject = class ;
TMyObject2 = class(TMyObject);
TMyObject3 = class(TMyObject);
としといて
var c: TMyClass; o: TMyObject;
begin
 c := TMyObject2; o := c.Create; // TMyObject2のインスタンスが生成
 c := TMyObject3; o := c.Create; // TMyObject3のインスタンスが生成
end;
なんてことができる。

例えばオセロゲームなんかで使うとこうなるよ。
// プレイヤー選択
FirstPlayer := TManPlayer;
SecondPlayer := TCpuLevel4Player;
...
TOhelloGame.Start(FirstPlayer, SecondPlayer) // 内部でプレイヤークラスのインスタンスを生成
0125Delフサギコ ◆A6VzDeLphI NGNG
   ∧,,∧!  /
  ミ,,゚Д゚彡 < なるほど、勉強になるね
  ミ.,,O),,.ミ   \
たしか、overloadはD4かD5からなので
それまでのDelphiの為に元々のVCLが
Createを静的メソッドで実装してきたのかも。

純粋OOPLなら、デフォルトでvirtualが理想なのかもしれないですが
DelphiのHELPみると、静的メソッドは
"メソッドのアドレスが決まるからデスパッチが高速"
なんて書かれていますね。virtualがデフォじゃないとか
Createがvirtualじゃないってのも決まっているのかも知れず。

ちょっと違う疑問なんだけど、overrideって指令は
"上書き""仮想"っていう二つの意味をもってんでしょうか?
TMyClass1 = class
 procedure Method; virtual;
end;

TMyClass2 = class(TMyClass1)
 procedure Method; virtual; //※
end;
override使わなくても構文としては、
これで十分だといっつも思うんだけど…
0126デフォルトの名無しさんNGNG
>>119
じゃあデストラクタはって言われるな
0127Delフサギコ ◆A6VzDeLphI NGNG
[Delphi:72797] Re: Delphi .NET Preview が更新

   ∧,,∧   / 見逃してたんだけど、ここみると、
  ミ,,゚Д゚彡<  .NET版は
   ミ つ�I)  \ 今のところすべてのコンストラクタが
           仮想コンストラクタになっている
           とか、、、、
0128デルファイの名無しさんNGNG
>>125
スペルミスした時のことを考えてみてください。
0129デフォルトの名無しさんNGNG
>>125
違う。ひょっとしてdynamic を忘れていないかい?
overrideはあくまで "上書き"の意味しか持っていない
"仮想"には動的仮想 dynamic と 仮想 virtualの2つがあるけど、
それを指定/変更できるのは宣言元の継承元クラスのみ。
よって継承先がどちらの仮想指定であったか意識する必要はない
0130Delフサギコ ◆A6VzDeLphI NGNG
    !      _____________
   ∧,,∧    /
  ミ,,゚Д゚彡 < まあ、ダイナミーック!
  ミ.,,O),,ミ   \
 @ミ   ミ       ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
   ∪''∪ すっかりと忘却のカナタ
    ここはひとつ、dynamicは廃止の方向でとはいきませんか?

>>128
実は、ここのコードでデストロイのつづりを間違って
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1035246186&res=10
(内緒)
0131デフォルトの名無しさんNGNG
>>130
どうだろうな。VCLの中ではそれなりに意味のある使われ方してるらしいし。
0132デフォルトの名無しさんNGNG
reintroduceしる
0133デフォルトの名無しさんNGNG
次は、Dynamic がなぜ導入されたかかな?
誰か DelWiki に、トピック作れや。
0134デフォルトの名無しさんNGNG
dynamicなんてVCL級の大規模なクラスライブラリでも作らない限りは知らなくていいだろ。
0135デフォルトの名無しさんNGNG
しかしヘルプに「動的メソッドを使用するとコードのサイズを最適化できます。」
なんて書いてあるので、深く考えずに使う奴が多数かも。
0136デフォルトの名無しさんNGNG
> ここはひとつ、dynamicは廃止の方向でとはいきませんか?
逆にdynamicを廃止するとVCLのメモリ使用量が増大すると何度言わせれば・・・
0137デフォルトの名無しさんNGNG
VCLのdynamicを全部virtualに書き換えて試してみろ!!
0138デフォルトの名無しさんNGNG
Virtual vmtにそのままメソッドポインタが格納されるので、検索が無く高速
     当然virtualを多用すれば vmtが巨大になる。

Dynamic System.GetDynaMethodを見ると、継承された dynamic method index
     だけのテーブルを作り、vmtにはそのテーブルだけを登録する。
     呼び出す都度、indexがあるかどうかみつかるまで順検索する。
     無ければさらに親も順検索する
0139デフォルトの名無しさんNGNG
overrideがあるのは、偶然、同名同引数の仮想関数を新たに定義してしまうのを
防ぐためじゃないの。
0140デフォルトの名無しさんNGNG
del6 personalをxp proで利用しているのですが、F9で実行しよう
とすると、フリーズするときがあります。これは、↓の
http://www.borland.co.jp/delphi/devsupport/d6issues.html
Windows XP における不安定な動作について
と解釈していいのでしょうか?

また、その際、互換モードの適当なOSでおすすめはありますか?
0141デフォルトの名無しさんNGNG
その情報は古い。
http://www2.big.or.jp/~osamu/Delphi/delphi-browse.cgi?index=069593
互換モードは関係ない。
0142デフォルトの名無しさんNGNG
質問です。
下のようなコードを書いた場合、THogeHoge型の内容に関係なくOKと表示されますか?

var
 A: array[0..100]of THogeHoge;
 P: ^THogeHoge;

begin
 P := @A[0];
 Inc(P,23);
 if P^ = A[23] then
  ShowMessage('OK')
 else
  ShowMessage('NG');
end;
0143デフォルトの名無しさんNGNG
THogeHogeが=で比較できるならOKでは。
つか試せよ。
0144Delフサギコ ◆A6VzDeLphI NGNG
 ミ,,゚Д゚ミつ

>>141さんのリンク先のやり方は
私のところでは激しく効果ありまいた。
WinXPで不安定になってる人はお試しあれ。
0145デフォルトの名無しさんNGNG
そういやD1の頃から IME 周りでトラブルがあるよなあ・・・・まあ勝手に仕様変更するMSが悪いんだろうが
0146デフォルトの名無しさんNGNG
>>145
たとえば?
既知の問題は片付いていると思うけど。
0147デフォルトの名無しさんNGNG
overrideって、優先の意味では。。。
overwriteなら上書きだけど。。。
0148970NGNG
ちょいと質問

同じユニットで定義した
親子クラスがあるとします。

子クラスのすべてのメソッドから親クラスのprivate,protected
が呼び出せるのはいかがと思いますが。
皆さんは不自由していませんか?

0149デフォルトの名無しさんNGNG
>>皆さんは不自由していませんか?

ぜんぜん。かえって便利。
ユーザサイドは関係なく、プログラマサイドの問題だから
呼び<だせる>ことに不自由するって感覚が理解できない
0150148ですNGNG
>>149さんお答えありがとうございます。
でもほかのユニットになると厳しくなるのです。
これがよくわからない。
0151デフォルトの名無しさんNGNG
根本的にクラスの設計ができないんでしょ > 150
0152デフォルトの名無しさんNGNG
>でもほかのユニットになると厳しくなるのです。
何が厳しいのか書いて。
0153148ですNGNG
>>149,151さま
そうかもしれません。ありがとうございました。
0154デフォルトの名無しさんNGNG
同一ユニット内のクラスは互いに関連することが多い。
関連するクラス間ではデータのやり取りが他のクラスと比べて頻繁に行われる。
データのやり取りをする為にはプロパティ・アクセスメソッドを公開しなければならない。
特定のクラスにのみ公開する場合でもpublicにすると
全てのクラスからアクセスできてしまうので都合が悪い。
このような場合同一ユニット内で相手のクラスの中を
直接参照することで無駄なアクセサの公開を避けることができる。
0155デフォルトの名無しさんNGNG
unitっていうのを クラスの親玉みたいなものだって考えたらいいんじゃないの?
同じユニット内で定義されてる関数やクラスはみんなお友達って事で

0156デフォルトの名無しさんNGNG
C++から来ると焦るんだよなぁ。
なんでprivateが呼び出せるんじゃーと叫んだことがあった。
main部とクラス定義を同じファイルに書いてたときに。
0157デフォルトの名無しさんNGNG
auto friend機能だよ。
0158デフォルトの名無しさんNGNG
friend 指定使ったことある? > 156
0159148ですNGNG
154-155>>thx
すみませんです。
 >>でもほかのユニットになると厳しくなるのです
ではなく
 ユニットが異なると普通(マニュアル)の規則が適用される。
です。
あと、クラス参照プロパティ参照があぶないです。
0160デフォルトの名無しさんNGNG
危なくない機能なんて言語には存在しないんだから
仕様を理解した上で慣れるしかないよ。
まさか一クラス一ユニットにするわけにもいかないだろ。
0161148ですNGNG
>>157
0162デフォルトの名無しさんNGNG
>>158
あるよ。
今は知ってます。auto friendも。

ちょっとしたコンソールプログラム作って挙動を試すときが多いので、
auto friendはそのときは邪魔だったりする。
0163148ですNGNG
156>> さんとおなじなのです
だけどPascal or Algol は好きだ。
0164デフォルトの名無しさんNGNG
friend が C++ の仕様の中でも毛色が変わっていることは知っているかな?
かつ、friend が存在しないと困る局面も知っていると思う。

Delphi でもそういうこと。
0165デフォルトの名無しさんNGNG
毛色が変わっているものが標準で有効なのはおかしいだろ。
0166デフォルトの名無しさんNGNG
C++ でもバンバン使っているだろ?
0167デフォルトの名無しさんNGNG
必要ないときは使いません。
0168148ですNGNG
>>164 さまありがとうございます。
でもファイルスコープでfriendとおなじにするとい
うのはいかがなものかと思われます。
------
わたしはpascal好きです
0169デフォルトの名無しさんNGNG
はいはい。屁理屈言うなら終わり。

cout << someVariable;

とかもつかわないのか。
0170デフォルトの名無しさんNGNG
>>169
屁理屈はやめたほうがいいよ。
cout << someVariable; なんてfriendと関係ない話を出すなんてね。
0171デフォルトの名無しさんNGNG
これってObject Pascalで最もセンスを感じさせる仕様だと思うよ。
C#でもより明示的に取り入れられてるし。
0172148ですNGNG
えーと...(すみません)
私が考えているのは他人の実装を考えたくないからなんです。
つまり、ひとつのファイルの中で完結したい。
0173デフォルトの名無しさんNGNG
>>148
なんですか。これ?
http://pc3.2ch.net/test/read.cgi/tech/1037987061/908-
0174148ですNGNG
やっぱりDelphiの方々にはfriendは受け入れられない。
悲しいことです。さよおなら..
0175デフォルトの名無しさんNGNG
さようなら。もうこないでね >> 148です
0176デフォルトの名無しさんNGNG
このやり取りは何なんだ?沸け和か乱
0177デフォルトの名無しさんNGNG
わたしわじゅうぶんわかっている。
みんなもわかってあげなければにほんのあしたはないのだ。
0178デフォルトの名無しさんNGNG
今日の午後あたり、ム板全体に吉外の風が吹いたらしい。
0179デフォルトの名無しさんNGNG
窓枠を用意して、窓の外の景色を描画するとします。
このとき、窓の外の風景をCreateしてから窓枠をCreateし、Transparent指定すると
ちょうど風景が透けてイイ感じになりますよね。

が、風景を更新しようとすると窓枠のほうが奥に行ってしまう・・・。
ここで、重ねる順番(Zオーダーってヤツでしょうか)について疑問が出たのですが、
Createした順番に重なっていくような印象なのですが、明示することはできるのでしょうか?
0180デフォルトの名無しさんNGNG
>>179
そういう場合は自前で描画する方を選ぶもんだと思う
0181デフォルトの名無しさんNGNG
【まさかの】ひろゆきブチキレ【降臨】

とうとうキレさせてしまった過疎板の住人達。
あの一言さえなければこんなことにはならなかったのに。。。
目の前で忽然と消えていくスレ達。
一つのスレに集中(むしろ、おいやられていく)住民達。
ひろゆきVS住民
無論、俺は面白半分w

問題の発言
http://choco.2ch.net/test/read.cgi/bobby/1038742045/119

問題のスレ
http://choco.2ch.net/test/read.cgi/bobby/1038742045/
0182デフォルトの名無しさんNGNG
Object Pascalってどうやって勉強しました?
リファレンスだけ?
0183デフォルトの名無しさんNGNG
1.入門書を全部読む
2.分厚い解説書の文法の章を全部読む
3.リファレンスを全部読む
これで完璧
0184デフォルトの名無しさんNGNG
>>183
コードを一行も書かないんだね
0185デフォルトの名無しさんNGNG
>>182
Delphi言語・・・と揚げ足を取ってみる。
0186デフォルトの名無しさんNGNG
>>182
言語自体はリファレンスだけ。
0187デフォルトの名無しさんNGNG
>>180
コンポーネント内で描画させようとすると手前にボーンとなるんですよ(;´Д`)
自分でやるしかないのかな・・・。
0188デフォルトの名無しさんNGNG
ひょっとして TImage つかってるの?
それは駄目
0189デフォルトの名無しさんNGNG
Delphi 6 Personalの使用者登録ページが開けないのですが、、、
これは一時的なことなのでしょうか?

ttp://www.borland.co.jp/delphi/personal/
0190デフォルトの名無しさんNGNG
しょっちゅう落ちてるよ。
メール出さないと気づいてくれないのかも。
0191デフォルトの名無しさんNGNG
>>182
Turbo Pascalとの差分のみ、ヘルプとリファレンスから。
Turbo PascalはPascal原典とA+D=PとTurbo Pascal本多数。
0192デフォルトの名無しさんNGNG
>>188
TAviimageとゆーモノでつ・・・。。・゚・(ノД`)・゚・。
0193デフォルトの名無しさんNGNG
>TAviimageとゆーモノでつ・・・。。

なんだか分からないが、TImage 系なら、描画しようとしたとき
ポーンと手前に来るんじゃなくて、たんにCanvasにアクセスしたので
不透明なビットマップができるだけじゃないの。
0194デフォルトの名無しさんNGNG
組込み用 C ソースの検証をBCBでやってたんだけど
ライブラリ依存とか面倒になって、モジュール単位に閉じる方が楽だから
だんだんと関数ポインタと構造体ポインタを使いまくるコードになってきた。

これでいいのかな?
まあ、一人でやってるからいいんだけど、他人が見たら嫌だろうなあ
0195デフォルトの名無しさんNGNG
BCB の話は C++Builder相談室 でどうぞ。
0196デフォルトの名無しさんNGNG
ボタンクリック→
CALC.EXEを起動したいんですけど、
どうすればいいですか?
0197デフォルトの名無しさんNGNG
http://www.google.co.jp/search?hl=ja&ie=UTF-8&oe=UTF-8&q=CALC+%E8%B5%B7%E5%8B%95+Delphi&lr=
0198デフォルトの名無しさんNGNG
>>193
描画メソッドを見ると、Canvas.Drawで描画していました。
ということは、奥をDrawすると手前のTransparent越しに見えてたものが
不透明になってしまうってことなのかな・・・。

コントロールの順番は不変で、透過してたら見え方はずっとそのままって
観念だったので混乱してまつ...(汗
0199524NGNG
ツールバーのボタンに画像を表示させたいのですがどうすればいいでしか?
0200デフォルトの名無しさんNGNG
Delphi相談室その8に接続中...
しばらくお待ちください...
接続完了!!...
相談中...
0201デフォルトの名無しさんNGNG
DirectX !!
0202デフォルトの名無しさんNGNG
>>198
フォームやパネルが再描画が必要になれば、その上のコントロールが描画される
その時の順番が、たぶんキミが言ってるZオーダ

で、それぞれのコントロールに直接描画しろと命令を送ると、当然そのZオーダは無視されてしまう。

だから、そういうふうにしたい場合は
1、フォームやパネルをDoubleBufferd:=true;にしておいて、
  それぞれのコントロールにではなくフォームにInvalidateを送る

2、上のTransparentに設定した窓枠からリージョンを取り出して
  リージョンでクリップして描画させる

どちらかの戦略を取レ
0203デフォルトの名無しさんNGNG
>>199
http://www.google.co.jp/search?&q=ImageIndex+toolbutton&lr=lang_ja
0204デフォルトの名無しさんNGNG
>>202
なるほど・・・
1はちょっと頭不足で理解が追いつかないので、2で。

1) 透明指定した部分を取り出して保存し
2) その部分だけに描画をかける
ってことですね。サンプルを探しながら挑戦してみます。
0205デフォルトの名無しさんNGNG
Delphi 6 Personalです。
簡単にグラフや、散布図を書けるコンポーネントを色々探しているのですが、
なかなかこれといったものが見つかりません。
そこで、皆さんにお勧めのグラフ用のコンポーネントをお聞きしたいのですが。
0206Delフサギコ ◆A6VzDeLphI NGNG
 ミ,,゚Д゚ミつ マヅはTChartのデモをみてから。
0207デフォルトの名無しさんNGNG
Tchartってどこにありますか?
ちょっと分からなかったので・・・
0208Delフサギコ ◆A6VzDeLphI NGNG
 ミ,,゚Д゚ミつ、 ぢやあ、Personalには無いんだ、、、、
0209デフォルトの名無しさんNGNG
  ( ・∀・)   | | ガッ
 と    )    | |
   Y /ノ    人
    / )    <  >__Λ∩
  _/し' //. Vミ,゚Д゚ミ/
 (_フ彡        /
0210デフォルトの名無しさんNGNG
>>205
お金出しても良いなら TChartPro (http://www.teemach.com)
0211デフォルトの名無しさんNGNG
こんにちは。
C++のヘッダをDelphiにコンバートしてるのですが、
typedef structの構造体にメンバ関数が入ってまして、
それをDelphiのrecord型に入れられるのでしょうか?
できましたら、サンプルなどをいただけたらありがたいです。
0212デフォルトの名無しさんNGNG
>>211
> こんにちは。
こんばんわ。
0213デフォルトの名無しさんNGNG
>>208
戸田>>>>>>>>>>>>>>>>>>>>>>フサ
0214デフォルトの名無しさんNGNG
>211
スタックなobjectかヒープなclassに置き換え。
recordでは無理。
0215デフォルトの名無しさんNGNG
>>214
それは、TObjectから新しいクラスを派生させて、そこに
メンバ関数を記述するということですか?
0216デフォルトの名無しさんNGNG
ヘルプで「オブジェクト型」を見たまえ

type
 Hoge = object
  :
 edn;
0217デフォルトの名無しさんNGNG
>>211
メンバ関数が入ってるという構造体を見せて

c++ の場合 typedef しなくても構造体は自動的にtypedefされるので
もしかして メンバ関数ではなくて 単なる関数ポインタでないの?
0218デフォルトの名無しさんNGNG
>>216
ヒントありがとうございます。ヘルプと格闘してみます。

>>217
こんな感じです。
typedef struct {
void*(*get_ycp_ofs)( void *editp,int n,int ofs );
void*(*get_ycp)( void *editp,int n );
intreserve[6];
} EXFUNC;
0219デフォルトの名無しさんNGNG
Timagelistで、n番目にbitmapが格納されているかを確認する方法はありますか?
GetBitmap(n, hoge) して、hogeがnilかどうかを見るしかないのかな・・・。
0220デフォルトの名無しさんNGNG
Count
0221デフォルトの名無しさんNGNG
>218
それは関数ポインタ
0222質問者NGNG
TListViewやTTreeViewでのDrag処理でメモリリークが発生して困ってます。

詳細:
DragModeをdmAutomaticにして、さらにOnDragOverで、Acceptをtrueにしてやる。
これを実行し、ドラッグしたまま、TreeViewやListViewの中と外をいったりきたりさせると、使用メモリ量がみるみる増えていきます。
現象は、WinXpでタスクマネージャ使って確認しました。GDIオブジェクトもリークしてるみたいです。
同じexeを2000や9xで動かしても、現象は起きません。

Delphiのバージョンは6+update2です。
Delphi6はXpに正式対応じゃないみたいなので、ひょっとしたらDelphi7では直ってるのかも知れませんが、手元に6しかないので確認できません。

どなたか回避策とかご存知ないですかね?
常駐型のアプリなものでリークすると困るんです・・・。

なお、再現用のソース一式とDelphi6でコンパイルしたexeは下記に置いてます。
ttp://www57.tok2.com/home/papers/outbox/LeakTest.zip
0223デフォルトの名無しさんNGNG
次スレはここです。
http://science.2ch.net/test/read.cgi/future/1022864257/l100
0224デフォルトの名無しさんNGNG
> どなたか回避策とかご存知ないですかね?

XP対応のバージョンをつかうか、OSを換える
0225デフォルトの名無しさんNGNG
XP で、ビジュアルスタイルを有効にしているとか無いかな?
0226デフォルトの名無しさんNGNG
>>222
つい最近、どこかで似たような質問を見かけたんだが...
0227デフォルトの名無しさんNGNG
D6 で確認. Win98 では使用メモリ量に変化が無いが XP だと増えていく。
D7 でも同様。
0228デフォルトの名無しさんNGNG
過去ログ、調べたか?
0229デフォルトの名無しさんNGNG
>>218
type TExFunc=record
 get_ycp_ofs:procedure (var editp; n,ofs:Integer );
 get_ycp:  procedure (var editp: n:Integer );
 reserve:array[0..5]of integer;
} EXFUNC;

var editp が嫌ならポインタにしたらいい
0230デフォルトの名無しさんNGNG
>>218
今回は関数ポインタだから関係ないけど、
C++では struct と class はほぼ同じ意味だと理解してるか?
デフォが public か private かの違いだけで struct でもメンバ関数は持てる。
0231デフォルトの名無しさんNGNG
質問です
タブ型のメモ帳作ろうと思ってこんなコードを書きました。

procedure TForm1.newtab(filename: string); //新しいタブ
var tabsheet:TTabSheet;
var memo:Tmemo;
begin

tabsheet:=Ttabsheet.Create(PageControl1); //←この辺と
memo:=Tmemo.Create(tabsheet); // ←この辺

  memo.parent:=tabsheet;
  memo.Align := alClient;
if filename<>'' then tabsheet.Caption:=ExtractFileName(filename);

 tabsheet.PageControl:=PageControl1;

PageControl1.ActivePageIndex:=PageControl1.PageCount-1;

if filename<>'' then
begin
 memo:=Tmemo(PageControl1.ActivePage.Controls[0]);
 memo.Lines.LoadFromFile(path+CurrentDir+listbox1.Items[ListBox1.itemindex]);
end;

end;

これって同名のインスタンスがいっぱいできてるって事?( tabsheet と memo)
設計時だと作れませんけど、同名のインスタンスは作っても問題ないですかね?
0232デフォルトの名無しさんNGNG
心配ならNameを書き換えればいいだけ。デフォルトは空。
0233デフォルトの名無しさんNGNG
Delphiでバイナリエディタって作れるの?
0234デフォルトの名無しさんNGNG
>>233
バイナリエディタ用コンポーネントは標準ではありません。
0235デフォルトの名無しさんNGNG
>>234
じゃぁ、無理ってこと?
0236デフォルトの名無しさんNGNG
>>233
ttp://www.nx.sakura.ne.jp/~elysium/software/pwtr/
0237デフォルトの名無しさんNGNG
それだけは勘弁してください(´д`;)
0238デフォルトの名無しさんNGNG
使えと言ってるつもりはないから、大目に見てくれw
0239デフォルトの名無しさんNGNG
>>233
○○って作れるの?という問いの答えは
作れるけどお前じゃ無理、と決まってます。
0240デフォルトの名無しさんNGNG
新しいOSや言語を学習するときにはとりあえず16進ダンププログラムを作る
ってたのは「プログラミング Windows」の Charles Petzold だっけ
0241デフォルトの名無しさんNGNG
>>240
だったかな?

俺はマンデルブロ集合を描くプログラムが定番だったな。
0242デフォルトの名無しさんNGNG
>Delphiでバイナリエディタって作れるの?

バイナリエディタを作ることが目的なら、自分で作ることを考えては?
少なくとも Delphi IDE と同じ程度のものを作ることは可能です。

バイナリエディタを使いたいのが目的なら、バイナリエディットに特化したコンポーネントを
入手し、使うことができます。
http://www.woodybells.com/binedit/
こんなのはどうですか?

バイナリエディタは他のことをやるための道具だ。というのであれば
市販品/シェアウェア/フリーソフトを探してもよいでしょう。
>>236 さんの提示した製品でもよかろう。
0243デフォルトの名無しさんNGNG
236が言いたいのは、PWがDelphiで作られてるって事だろ。
0244デフォルトの名無しさんNGNG
>>243
ふーん。そうなんだ。
0245デフォルトの名無しさんNGNG
変数のread only propertyにたいして@で参照すると書き込めるのは
なぜでしょう。
0246デフォルトの名無しさんNGNG
@で参照したからです
0247質問者NGNG
>>226
すみません。ちょっと前に他所にも書き込みました。

>>227
D7でも同様ですか。う〜む…
0248245NGNG
247>>さんへ
VCLをだますのにかなり使っていました。
最近、これではいかんと思うようになりました。
0249デフォルトの名無しさんNGNG
>>245
Win32 アプリケーションには Java/.NET などのようにメモリセキュリティはないんだから、
メモリアドレスさえ取得できれば読み書きは可能。つーか、そうしてもらわないと困る。
0250デフォルトの名無しさんNGNG
>>247
もちっと調べてみるけど、MFC/VC6 でも怪しい動きをする。
調査が必要だ
0251デフォルトの名無しさんNGNG
乱数を発生させたいのですが、Randomを使うと毎回同じ順で数値が出てくるのですが、
完全にランダムで決定させる方法はありますか?
0252デフォルトの名無しさんNGNG
最初に一回だけRandomizeを呼べ
0253デフォルトの名無しさんNGNG
>>252
ありがとうございました!m(_ _)m
0254デフォルトの名無しさんNGNG
なんでヘルプ読まないんだろ…
0255デフォルトの名無しさんNGNG
>Delphiでバイナリエディタ

適当にbinフォルダにあるコンポーネントをインストールしたら面白いよ。
確かメモリダンプコンポーネントがどこかにある筈
0256デフォルトの名無しさんNGNG
バイナリエディタ作りたいなら、
TFileStreamあたりを見るとよい。

TStream系が使えるようになるとだいぶ技術の幅が広がるよ。
0257デフォルトの名無しさんNGNG
const
 ABC = (['A', 'B', 'C']);

この ABC の要素数である3を得るにはどうしたらいいでしょうか?
0258デフォルトの名無しさんNGNG
これって集合型になるの?だったら要素数という概念自体がなんか変かも.

この括弧て意味ある?
0259257NGNG
こんな事がしたかったの
s: string;

 if (s[i] in ABC) then
  raise Exception.Create(ABC + 'が入ってます');
0260257NGNG
×が入ってます
○に入ってます
0261デフォルトの名無しさんNGNG
コンコン!入ってます!
0262デフォルトの名無しさんNGNG
const 定義には型宣言が存在しません。だから直接には型情報およびそれに関連する
値を取得することはできません。

変数に代入するか、または型付定数、初期化済み変数を使うか。
0263デフォルトの名無しさんNGNG
>259
その用法でなぜ要素数が欲しい?
sの文字数分そうやってチェックするだけだろ?

つまり、集合型の要素の最大数の求め方は俺にはわからん訳だが.
0264ちょっと遅いけどNGNG
const ABC = 'ABC';
if (Pos(s[i], ABC) > 0) then
  raise Exception.Create(ABC + 'が入ってます');
0265デフォルトの名無しさんNGNG
>>246
どちらにしろ、要素数は必用ないな。
0266257NGNG
こんなふうに _INVALIDCHARFILENAME にキャラクタを追加するだけでokにしたかったの
const
 _INVALIDCHARFILENAME = ['\', '/', ':', ',', ';', '*', '?', '"', '<', '>', '|', '+'];

function ValidateFileName(const Name: string): Integer;
var
 i: Integer;
begin
 for i:=1 to Length(Name)-1 do
 begin
  if (Name[i] in _INVALIDCHARFILENAME) then
  begin
   Result := i;
   Exit;
  end;
 end;

 Result := 0;
end;

if (0 < ValidateFileName(FileName)) then
begin
raise Exception.Create(_INVALIDCHARFILENAME + 'はファイル名に使えません');
end;
で、↑ここで文字列にする必要があるから要素数が必要 (無理だけど)
 SetLength(_INVALIDCHARFILENAME, Length(_INVALIDCHARFILENAME));
 for i:=0 to High(_INVALIDCHARFILENAME) do
  s[i] := _INVALIDCHARFILENAME[i];

Pos なんていやん
0267257NGNG
×SetLength(_INVALIDCHARFILENAME, Length(_INVALIDCHARFILENAME));
○SetLength(s, Length(_INVALIDCHARFILENAME));
0268デフォルトの名無しさんNGNG
const
 _INVALIDCHARFILENAME = ['\', '/', ':', ',', ';', '*', '?', '"', '<', '>', '|', '+'];
_INVALIDCHARFILENAMEのメモリイメージを理解すれば自動で文字列化なんて無茶なことは言わなくなるよ。無難に(Ansi)Pos方式にしとけ。

  if (Name[i] in _INVALIDCHARFILENAME) then
Nameにsjisが混入することも考慮しとけ。
0269257NGNG
>_INVALIDCHARFILENAMEのメモリイメージを理解すれば自動で文字列化なんて無茶なことは言わなくなるよ。
何を読めばイメージが掴めるでしょうか?

>Nameにsjisが混入することも考慮しとけ。
気づきませんでした。ありがとうございます。
0270デフォルトの名無しさんNGNG
constで集合定義するならエラー用の文字列も定数で作ったら?
そんなことで一日悩んだわけじゃないだろうけど、時間の無駄っぽい
0271デフォルトの名無しさんNGNG
>>266
その使い方なら逆に
INVALIDCHARFILENAMEStr='\/:, , ;*?"<>|+';
と文字列にしてそれを集合型にするのがいいのじゃないの?
0272デフォルトの名無しさんNGNG
初期化節で処理したらいいんじゃないの?


const _INVALIDCHARFILENAME = ['\', '/', ':', ',', ';', '*', '?', '"', '<', '>', '|', '+'];
var _INVALIDCHARFILENAMEs:string;

・・・他の処理・・・

var c:Char;
initialization
_INVALIDCHARFILENAMEs:='';
for c:=Low(Char) to High(Char) do begin
if c in _INVALIDCHARFILENAME then _INVALIDCHARFILENAMEs:=_INVALIDCHARFILENAMEs+c;
end;
end.
0273デフォルトの名無しさんNGNG
Indy9をインスコしてIdHTTPを使おうとすると
http://lounge.dip.jp/pl/upb/data/test.png
こんなエラーが出ます。
何がまずいのでしょうか?
コードは何も書いてません。

Del6 XPHomeSP1
0274デフォルトの名無しさんNGNG
↑直リンスマソです…
0275デフォルトの名無しさんNGNG
>>273 想像だけど、dfmファイルが壊れているんじゃない?
フォームをテキストで表示して、確認してみ
0276デフォルトの名無しさんNGNG
>>273

Indy9では HTTP.Requrst.ProxyPortとか、HTTP.Requrst.ProxyServerは
HTTP.ProxyParam.ProxyPort、HTTP.ProxyServerに変更になっている
はず。

サンプルプログラムは、この辺を直してやらないとコンパイルできない
けど、コードは書いてないんだよね。

もしかすると Indy8がうまくアンインストールされてないんじゃない?
Windows\system32フォルダに Indy8のindy60.bplが残ってるとか。

0277デフォルトの名無しさんNGNG
>>275
一応壊れてはないみたいです。

>>276
とりあえずindy60.bplで検索するとC:\Program Files\Borland\Delphi6\Binにありましたが、
それを開いてみるとちゃんとパスは全てC:\Program Files\Indy\Sourceになっていました。
0278デフォルトの名無しさんNGNG
>>273 イマイチ状況がわからないな。
"コードは何も書いてません" ってのは、新規プロジェクトの
フォームにIdHttpをのせて実行したら、上記のエラーが出るという事?
デバッグで追い掛けてどのタイミング/どの行で例外が発生するか
わからない?
0279ねこまNGNG
フォームにのっかっていたコンポーネントの published プロパティが変更されただけでしょう.
設計時にそのフォームを開けば,無くなったプロパティを検出して修正を促してきます.
0280デフォルトの名無しさんNGNG
あるプロセスが起動しているかをチェックして、もし消滅していたらWindowsをシャットダウンするという
コードを書きたいのですが・・・。(処理終了→自動終了するアプリと一緒にWindowsも終了させたいという魂胆です)
シャットダウンは標準APIでいいとして、

1) 特定プロセスに割り当てられたアドレスを知る方法
2) それが生きているかを調べる方法

があったら教えてください。(ノД`)
0281 NGNG
(´-`)。o ○ (シャットダウンして欲しくないなぁ… どうして「終了タイマー」
みたいなフリーウェアが氾濫してるんだろう?)
0282デフォルトの名無しさんNGNG
関係ないけど、.NETServer2003ってさ、手動でシャットダウンするときに
いちいち理由を選ばないといけないのよ。(ハードウェアメンテナンスとか)

まあサーバだし、うちで3ヶ月立ち上げっぱなしで、とくに不具合ないからいんだけど。
0283デフォルトの名無しさんNGNG
以下のような TBitmap を戻り値にした function を作って

 function AAA(pBmp:TBitmap):TBitmap;
 var
  tmpBmp:TBitmap;
 begin 
  tmpBmp:=TBitmap.Create;
  try
   【処理】
  finally
   result:=tmpBmp
  end;
 end;

関数を呼ぶ時にには、呼ぶ側でCreateとFreeをやっています、
 bmp:=TBitmap.Create;
 bmp:=AAA(bmp);
 bmp.free;

この時に、
 bmp:=TBitmap.Create;
 bmp:=AAA(bmp);
 bmp:=AAA(bmp);
 bmp:=AAA(bmp);
 bmp.free;

こんな感じで連続して呼び出しても一応処理は出来ているみたいなのですが
bmpのfreeが1回しかないわりに、関数中では毎回tmpBmp:=TBitmap.Create;
が走っていてなにか釈然としないものがあります、大丈夫なのでしょうか?

そもそも、関数の最後に上の例で言えば
tmpBmpをFreeしちゃいけない理由が判る方、教えて下さいお願いします。
0284デフォルトの名無しさんNGNG
> 大丈夫なのでしょうか?

大丈夫じゃない!

> tmpBmpをFreeしちゃいけない理由

result に代入したあとなら Free できるが解決にはならない

そもそも function AAA(pBmp:TBitmap):TBitmap; こんな形
の関数が必要なのかね? 【処理】の内容によっては引数の加工で
済む場合がほとんどだと思うが。



0285デフォルトの名無しさんNGNG
234 はオブジェクト参照というものが分かってない

>bmp:=TBitmap.Create;
>bmp:=AAA(bmp);

なぜコンストラクタを実行する必要があるの?

0286デフォルトの名無しさんNGNG
�@あるフォルダ内の全ファイル名を配列で取り込む
�A実行ファイルを引数つきで実行する。

にはどういう関数を使えばいいですか?
0287デフォルトの名無しさんNGNG
×234
○283
0288デフォルトの名無しさんNGNG
何でもかんでも「関数」って言えばいいっても(略)
0289デフォルトの名無しさんNGNG
>>286
�@ FindFirst() と FindNext() ヘルプの例を参照
�A ShellExecute() or CreateProcess() or WinExec() API →google
0290デフォルトの名無しさんNGNG
>>288
スマソ
>>289
ありがとうございました
0291デフォルトの名無しさんNGNG
>> result に代入したあとなら Free できるが

ごめん、まちがい、Free できない
0292デフォルトの名無しさんNGNG
大丈夫でない理由

bmp:=TBitmap.Create;
bmp:=AAA(bmp); ← ここで上の行で作った TBitmap オブジェクトが行方不明
bmp:=AAA(bmp); ← ここで上の行で作った TBitmap オブジェクトが行方不明
bmp:=AAA(bmp); ← ここで上の行で作った TBitmap オブジェクトが行方不明
bmp.free; ← ここで上の行で作ったTBitmapだけが解放される
0293デフォルトの名無しさんNGNG
つまり、4回コンストラクタを実行して、1回だけデストラクタを実行しているので
3つのオブジェクトが行方不明になる
0294デフォルトの名無しさんNGNG
>>tmpBmpをFreeしちゃいけない理由

関数を書き直して

 function AAA(pBmp:TBitmap):TBitmap;
 begin 
  result:=TBitmap.Create;
   【処理】
  result.Free; ← これを実行すると返値がタコになるでしょ!
 end;
0295283NGNG
ありがとうございます。>>283です。

>>284
>そもそも function AAA(pBmp:TBitmap):TBitmap; こんな形の関数が必要なのか
この関数はアルファブレンドしたり、エフェクト処理とかをする関数なので
処理済bmpが帰ってきた方が便利かと思いまして、利便性だけ考えて関数に
しただけなんですが、ここらが間違っているのでしょうか・・・。

>>285
>オブジェクト参照というものが分かってない
ごめんなさい、全く判っていません。


かなりアホなんで勉強して出直してきます。m(。。)m
0296283NGNG
>>291-293
やっぱり駄目ですかBitmapで渡さない方向で
練り直します。ありがとうございました。

>>294
>これを実行すると返値がタコになるでしょ!

Free出来ないのでは、戻り値と言うか、たぶん、予想ですが、
戻そうとしている値があった場所を記憶していた値、
ポインタがfreeされて迷子になるだと認識しているのですが。
0297デフォルトの名無しさんNGNG
>> 処理済bmpが帰ってきた方が便利かと思いまして

そういう考え方をするのは理解できる。でも、関数のなかでコンストラクタを
実行するのは、非常に危険だと思う。

function AAA(pBmp:TBitmap):TBitmap;
の形ではなく
procedure AAA(pBMP:TBitmap);
の形にして、渡した pBMP を加工するとよいと思う。呼び出し側で、加工まえの
画像を保持する必要があるときは、コピーをつくってからこの関数を呼ぶように
する。オブジェクトを参照する変数は、たとえば上の引数 pBMP などは、オブジェクト
自身を保持しているのではなく、それを指すポインタである、ということを理解する
必要がある。だから、引数の pBMP を加工しても、その結果は呼び出し側にそのまま
反映される。通常の参照渡し var の場合と同じ。オブジェクトを渡す場合は、var を
つけない方がよい。それ自体が参照なので。
0298デフォルトの名無しさんNGNG
>> コピーをつくってからこの関数を呼ぶ

コピーの作り方の例

copyBMP := TBitmap.Create;
copyBMP.Assign(originalBMP);
0299283NGNG
>>297
加工した画像は、戻り値で戻さないと駄目だ、
と思い込んでいたのが間違いって事ですね。
勉強になりました。ありがとうございました。
0300デフォルトの名無しさんNGNG
>でも、関数のなかでコンストラクタを実行するのは、非常に危険だと思う。

時と場合によるけどね
Singletonの実装では常套手段だし
0301デフォルトの名無しさんNGNG
>> 関数のなかでコンストラクタを実行するのは、非常に危険だと思う。
283のは駄目だと思うけど、通常は関数内でコンストラクタ実行してもいいんじゃないの?
0302301NGNG
ごめん入れ違いになったみたい、時と場合によるのね。
0303名無しさんNGNG
Pure P2Pの例題ソース書き込んで下さい。お願いします!
0304デフォルトの名無しさんNGNG
>> 通常は関数内でコンストラクタ実行してもいいんじゃないの?

そうだね。文法的に駄目という意味ではなく、関数をブラックボックスと見なすとき
そのユーザに対して、この返値のオブジェクトは使用後必ず Free してください、
という注釈が必要になるでしょう。そのことが関数自体で完結していないので危険
だと思う。

>> Singletonの実装では常套手段だし

この場合は、むしろ呼び出し側では通常 Free は実行してはいけない、場合なのでは?
0305デフォルトの名無しさんNGNG
折れにはオマイラが書いてることが理解できませむ!
0306猛ランドNGNG
Indyコンポーネントの解説書とか発売されないのかなぁ。
数が増えたのはいいけど、イマイチわかりにくいな。
サンプルもDL汁じゃ寂しいよ、Indyはフリーとはいえ
日本語サイトも無いしなんとかしてよ某!
0307デフォルトの名無しさんNGNG
妙に活気付いてるな・・・。
確かにIndyコンポが多いのは嬉しいけど使わないのも多いな。
TCP関連とかスレッド対応になってるし、一昔前より理解するのは難しいのかな?
>>303とか、IdTCP*使ったら作れるんじゃないかな。
0308デフォルトの名無しさんNGNG
>>304
俺時々やるなぁ、インスタンス生成して返す関数。
絶対に開放を忘れないように、それとはっきりわかる関数名付けるけど。

TGraphicCreate(filename:sring): TGraphic;

とかで、画像フォーマットに合わせたインスタンスで、なおかつファイルを読み込んで
オープンするとか。
もちろんファイルオープンに失敗したら、関数内でインスタンスは破棄して例外を関数外に
投げるようにしてる。
0309デフォルトの名無しさんNGNG
>> 絶対に開放を忘れないように、それとはっきりわかる関数名付けるけど。

なるほどね。ユーザが呼び出し側コード内で、コンストラクタとデストラクタの
呼び出し回数を数えられるような感じだといいかもね。ところで

TGraphicCreate(filename:sring): TGraphic;

この関数なかなか便利そう! コードさらすつもりない?
0310デフォルトの名無しさんNGNG
TGraphicCreate(filename:sring): TGraphic;
var
 ext: string;
begin
 Result := nil;
 try
  ext := UpperCase(ExtractFileExt(filename));
  if ext = 'BMP' then Result := TBitmap.Create;
  if ext = 'JPG' then Result := TJPEGImage.Create;
  // 他いろいろ
  if Assign(Result) then begin
  Result.LoadFromFile(filename);
  end else begin
   raise Exception.Create(ext+'なんて拡張子は知らん。');
  end;
 except
  Result.Free;
  raise;
 end;
end;
こんな感じだったかな?
いまソースをとっさに持ってこれないんで、テキストエディタで適当にかいたから
スペルミスとかあるかも。
0311デフォルトの名無しさんNGNG
Assign(Result)じゃなくてAssigned(Result)だった。
0312デフォルトの名無しさんNGNG
>>310-311

ありがとう。使ってみる。
0313ねこまNGNG
TPicture を使えばいいのに……
0314デフォルトの名無しさんNGNG
既出だったらすいません。
Delphiってタダで使えるんですか?
なんか、どっかからダウンロードできるって聞いたんですけど。
0315デフォルトの名無しさんNGNG
http://www.borland.co.jp/delphi/personal/
0316デフォルトの名無しさんNGNG
Delphi6のパソ版なら ボーランドからダウンロードできんじゃないかな。
0317デフォルトの名無しさんNGNG
わざわざすいません。
ありがとうございました。
0318デフォルトの名無しさんNGNG
パソ版ってのでシェアウェア作って公開してもいいんですか?
0319デフォルトの名無しさんNGNG
商用に該当するので不可です。>318
0320デフォルトの名無しさんNGNG
シャアウェア
0321デフォルトの名無しさんNGNG
>>319
まじっすか〜7の値段見たらパソ版で10000したんだけど、
多分これも無理って事はプロ版買わなきゃなんないんですよね〜68000円て無理だ(藁
0322名無しさん@303NGNG
では、どうやってIdTCPを使って記述したらいいのですか?IdTCPはあまり使ったことがないので分かりません・・・。
0323デフォルトの名無しさんNGNG
> Result.Free;
Freeした後、必ずnilするクセをつけろ!
FreeAndNil(Result); しる!
0324デフォルトの名無しさんNGNG
>> Result.Free;
>Freeした後、必ずnilするクセをつけろ!

だめな例に教訓たれても・・・
0325デフォルトの名無しさんNGNG
> だめな例に教訓たれても・・・
じゃあ、これで・・・

Freeした後、必ずnilするクセをつけろ!
FreeAndNil しる!
0326デフォルトの名無しさんNGNG
>>321
1) D6パソをタダで入手。
2) 小銭貯金を始めると同時にD6パソで修行開始。
3) 金払ってくれるヤツがいる様なソフトを作れようになるのより\68000貯まる方が早い。
6) Pro版を買って小銭貯金の投資を回収。(←これが困難)

※ 速攻で売れるようなソフトがすぐに作れるようになれるような才能溢れるキミはガタガタ言わずにPro版買え!
0327デフォルトの名無しさんNGNG
D6パソが普通に使えるようになってから
proでもD7でもD8でも買ったらいいんじゃないのか?
最低でもD6パソを普通に使いこなせないと、
売れるようなソフトなんて組めないだろ?
0328デフォルトの名無しさんNGNG
Delphi6Personal版落としてきたんですが、EXEを実行すると
一般保護ダイアログが出てしまって、インストールできませんでした。
borlandとvectorの所から4回程ダウンロードし直して試したんですが、
全て駄目でした。環境はWindows98SEです。

ちなみにアップデートモジュールの方をダウンロードしてきて実行
するとちゃんとセットアップが実行される(本体居れてないので失敗
しますが)ので、Delphi6Personalのexe本体が壊れてる可能性が
高いと思うんですが、そういう情報はないでしょうか?
0329デフォルトの名無しさんNGNG
インストーラーが吹き飛ぶの?
インストール後の Delphi IDE が吹き飛ぶの?

インストーラーが落ちるのなら Windows Installer の問題だろうから、
IE の最新版でもインストールしてみたらどうだろうか?

IDE が起動時に吹き飛ぶ場合は... なんだろうね。聞いたことが無いけど。
OS に変な/変わったモジュール入れていませんか?
0330デフォルトの名無しさんNGNG
DelphiのインストーラーってWindows Installerじゃないだろ。
0331328NGNG
EXEを実行した直後に、いきなり一般保護になります。
セットアップに関係する様なダイアログは出ません。

以下はエクスプローラーから
BorlandDelphiPersonalEditionJP.exeを実行した時の
一般保護の詳細です。
---------------------------------------------------------

EXPLORER のページ違反です。
モジュール : KRNL386.EXE、アドレス : 0002:00004317
Registers:
EAX=00005f5f CS=016f EIP=00004317 EFLGS=00000206
EBX=c18883d0 SS=1bdf ESP=0000b2d8 EBP=0000b2e4
ECX=0000fd96 DS=018f ESI=015d0ff6 FS=45df
EDX=c188c2b1 ES=018f EDI=015d1000 GS=0000
Bytes at CS:EIP:
67 ab fe 46 ff fe 46 ff e2 92 8a 46 ff 59 66 5b
Stack dump:
b2dc0000 015d205f c08f01ec 4380b2f4 2057458f 00000062 000001e8 0a9db326 ffff205f 458f01ec 458f01ce 062201c8 458f01ce 00750074 0001001e 458f01e8
0332328NGNG
また、エクスプローラーからexeのプロパティを開き、
バージョン情報タブを選択すると同じ様に落ちます。
↑を見ても判る通り、落ちるときは起動したシェル毎落ちてしまいます。
0333328NGNG
特に変なのを入てた覚えはありませんが、
しいて言うならCD革命です。
他のEXEは問題なく実行できるのに。
0334デフォルトの名無しさんNGNG
アンインストールしろよ
CD革命
0335デフォルトの名無しさんNGNG
D6パソを営利目的で使ってるやつなんて山ほどいるがな。
有名どころだと鷹月ぐみなのとことか
0336328NGNG
原因がわかりました。
ConfigSafeという、パソコンにプリインストールされていたソフトでした。
(セットアップ前の状態を保存するソフト)
これをアンインストールしてBorlandDelphiPersonalEditionJP.exeを
実行したら正常にダイアログが表示されました。
0337デフォルトの名無しさんNGNG
>>335
つまりDel厨はライセンス違反野郎ばかりってわけだね。
0338デフォルトの名無しさんNGNG
>>331

そのインストールファイルを Explzhなどで開いて解凍。
そしてその解凍されたファイル群のなかのsetup.exeを
実行すればインストールできると思われ。

InstallShieldで作成されたインストールファイルを、Win9x
でプロパティ表示すると落ちる問題と同じと思う。

漏れも別のソフトのインストールで遭遇した。

0339デフォルトの名無しさんNGNG
>>335
「VC++で作りますた!」と答えるのに中身はdel。
同人ゲーム界のスタンダード(藁
0340デフォルトの名無しさんNGNG
違反者は潰そうぜ
0341デフォルトの名無しさんNGNG
このままじゃDelphi Personal使いが全部違反者だと思われるもんな。
0342デフォルトの名無しさんNGNG
鷹月ぐみなってここか?
http://www.campus.ne.jp/~ishigami/

違反者の癖に「同人ソフトで儲ける事について」なんてコンテンツがあるよ(w
http://www.campus.ne.jp/~ishigami/CREATION/COLUMN/DOUJIN.htm
0343デフォルトの名無しさんNGNG
0344デフォルトの名無しさんNGNG
>>同人は基本的には非営利活動
    ↓
>>同人活動というのは扱い上「非営利」であり
    ↓
利益が出ていなければ商用に該当しない
    ↓
>>ちなみに私の同人活動の儲けは、ほぼ現状赤黒ゼロです

del厨毒電波
0345デフォルトの名無しさんNGNG
自分で使うツールは割れVC++、公開するツールはDelphi6Personal
違いのわかる漏れは使い分けてます
0346デフォルトの名無しさんNGNG
>>278
そうです。どのタイミングで発生するかはちょっとわかりませんでした。

>>279
フォームはずっと表示してます。(意味取り違えてる?)
0347デフォルトの名無しさんNGNG
>>345
なぜVC++なんかを使っているのかと
0348デフォルトの名無しさんNGNG
if OpenDialog.Execute then
begin
CurrentFile := OpenDialog.FileName;
FileName := ;
end;

こうやったときに、FileNameにフルパスではなくただそれのファイル名を代入したいのですが、
どうすれば出来ますか?
0349デフォルトの名無しさんNGNG
>>348
ExtractFileName
0350デフォルトの名無しさんNGNG
>>349
あ、そうでした。何か前にそんなのをみたような気がしてたんで…。さんくすです。
0351デフォルトの名無しさんNGNG
TabControlでタブ付きのメモ帳作るのって難しいですかね?
PageControlよりリソース消費が少ないからそっちの方がいいと思うんですけど。
0352デフォルトの名無しさんNGNG
恐ろしいほど簡単です。
0353デフォルトの名無しさんNGNG
タブを追加することは出来たんですが、タブの切り替え方法が分からず…
OnChangeに何を書けば良いのかさっぱり。

そこをどうか教えてくださいませんか?
0354デフォルトの名無しさんNGNG
TabIndex見てメモの中身をすげ替えろ
0355デフォルトの名無しさんNGNG
>>353
TabControl.Tabs.AddObjectとか
TabControl.IndexOfTabAtとか
TabControl.Tabs.Objectsとか
TabControl.Tabs.IndexOfObjectとか
を上手く使えば出来る。
0356デフォルトの名無しさんNGNG
難しいか、難しくないか聞いてどーしようってんだろう?
出来ますか、出来ませんかって聞いてどーしよってんだろう?
0357デフォルトの名無しさんNGNG
なんか教えてもらえるかもしれない、ということだろ?
0358デフォルトの名無しさんNGNG
ゆ う き が ほ し い の さ 。 き っ と . . .
0359デフォルトの名無しさんNGNG
難しいか、難しくないか / 出来ますか、出来ませんか
しか聞いていないので、たとえ答えをズバリ教えてもらってもお礼を言いません

「そこまで聞いてねーけど勝手に答えた」って感じ
0360デフォルトの名無しさんNGNG
モノクロビットマップの操作って難しいというか判らん

bmp := TBitmap.Create ;
try
  bmp.Monochrome:=True;
  bmp.Width :=xs*Length(s);
  bmp.Height:=ys;
  bmp.Canvas.Font.Name:='MS ゴシック';
  bmp.Canvas.Font.Height:=ys;
  bmp.Canvas.TextOut(0 , 0 ,s);

このビットマップの0,1の反転したくて
1、これだと何故か下線しかひけない
  for y:=0 to bmp.Height-1 do begin
  q:=bmp.ScanLine[y];
  for x:=0 to bmp.Width div 8-1 do q^[x]:=not q^[x];
  end;

2、これは全くダメ
  for y:=0 to bmp.Height-1 do   for x:=0 to bmp.Width-1 do
      bmp.Canvas.Pixcel[x,y]:= not bmp.Canvas.Pixcel[x,y];

3、結局 Windows APIで
Windows.InvertRect(bmp.Canvas.Handle,rect);
  成功

でもなんで1,2だとダメなのかな
0361ねこまNGNG
>bmp.Monochrome:=True;
これだけでは PixelFormat が pfDevices のままなのでダメです.
0362デフォルトの名無しさんNGNG
コンソールアプリからのエラーメッセージを受け取るにはどうすればいいですか?
たとえばWinExec('copy file1 file2',SW_SHOWNORMAL);
でfile1が存在しなかったとき、カスタムのメッセージボックスにエラーを表示したいのですが。
0363デフォルトの名無しさんNGNG
>>362
パイプ。
0364Delフサギコ ◆A6VzDeLphI NGNG

    ∧ ∧  DelでC/Sシステムを作るとき
    ミ ゚Д゚彡 何を使うと、いいのでしょうか。..
  〜ミ,,,,uuミ
       VBでWinSockを使ってて、
      なかなか便利なので、Delでも同じ事したいです
0365デフォルトの名無しさんNGNG
Client/Server と WinSock に何の関係が?

通信プロトコルレベルを作りこむ気か?
0366デフォルトの名無しさんNGNG

VB 使いつづけたら? >> VBフサギコ

0367360NGNG
>>361
ではどうすればいいのでしょう?
bmp.PixelFormat:=pf1bit; を bmp.Monochrome:=True; の
前に入れた場合、Canvas.TextOut で文字をどう描けば良いでしょうか?

後に入れた場合、出来てるのは いわゆるモノクロビットマップではなく
パレット付きの2色のビットマップが出来ています。
 (SaveToFileしてペイントブラシで見ると色付き文字になってる)
0368360NGNG
>>362
http://www.google.co.jp/search?q=DuplicateHandle+Delphi&lr=lang_ja

>>364
C/Sというとデータベースの応用しか思いつきません
BDEでも小規模なら十分使えた(遅いけど)と思います
0369デフォルトの名無しさんNGNG
VBフサギコの言いたいのは、ネットワークをまたいだプロセス間通信を簡単にやりたい。
ということではないかな?

DCOM 使えば?
0370360NGNG
モノクロビットマップの件は

検索して
http://www.users.gr.jp/ml/archive/delphi/42732.asp
を見つけました。

pf1bit=1bit DIB(2色カラーパレット付)で Monochrome=True が 1bit DDB (モノクロビットマップ)で

DDBだと直接メモリイメージを操作出来ないという感じなのかな?

そして作成直後に pf1bitを設定すると変な色パレットが付いてるのでTextOutとかが巧くゆかないと
0371デフォルトの名無しさんNGNG
>>360
>このビットマップの0,1の反転したくて

DIBのモノクロビットマップはパレットがあるんで、色データではなく
パレットの色を入れ替えるだけで反転するよ
0372ねこまNGNG
>>371
私もそれがベストな方法だと思います
しかし Bitmap.Palette := CreatePalette(...) だと反転できないみたいです.
パレット 0 が clBlack 固定なのかな?
TBitmap を欺いて SetDIBColorTable すればできるけど.
0373デフォルトの名無しさんNGNG
>>パレット 0 が clBlack 固定なのかな?

うーん、TBitmap ではどうだかしらないんですが、すくなくとも普通の DIB なら
ゼロが黒固定ということはないです。
0374ねこまNGNG
>そして作成直後に pf1bitを設定すると変な色パレットが付いてるのでTextOutとかが巧くゆかないと
変な色パレットなんて付かないと思うんですけど……
うちでは黒白の2値パレットになります.
DDB->DIB ってビデオカードに影響されるんでしょうか?
0375デフォルトの名無しさんNGNG
DDBがビデオカード依存罠
0376Delフサギコ ◆A6VzDeLphI NGNG
         _________
  ∧,,∧   /
 ミ;゚Д゚彡< あうあうあ・・・・
  ミつ つ  \
〜ミ ,, ミ.     ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ∪ ∪   >>369さん
        イエス
0377360NGNG
>>371 いや、ちょっとフォントを加工したりとかしたかったもんだから
>>372 そこらへんが色々判らないですね
>>374 その時の状態というか直前のパレットの状態によって違う様子
http://www.users.gr.jp/ml/archive/delphi/42732.asp
によると、Width Height=0 で変になるという事だから そういう事じゃないでしょうか

>>375 モノクロビットマップは DDB といってもWindows依存なだけでは?
0378デフォルトの名無しさんNGNG
>>376
Indy はだめ?
0379デフォルトの名無しさんNGNG
ネットワークを跨いだC/Sってのがイマイチ意味不明なんですが・・・。
DBサーバに接続するだけじゃ駄目なの?
それともP2Pみたいなシステムって事?興味あるので詳しく解説希望
0380デフォルトの名無しさんNGNG
一定期間ごとに最前面に表示して入力を促すソフトを作ろうと思ってます。
そのソフトの入力画面が表示されている間だけは他のソフトの制御を出来なく
したいのですが、良い方法は無いでしょうか。

いつもは普通のソフトだけど、ある瞬間だけスクリーンセーバーとして偽装する
ことができればやりやすいと思うんだけどなかなかうまくいかないもんで。
0381ねこまNGNG
一定時間ごとにスクリーンセーバーを起動するだけのソフトを作ったらいいんではないでしょうか
0382デフォルトの名無しさんNGNG
https://211.10.75.189/k-sfa/index.jsp
このページ、i-mode N503iで表示されません。
P504i では表示されるのですが、
表示させる方法をお分かりの人がいたら、教えてください。
サーバー構成は、Apache+SSL(Apache1.3.27 OpenSSL0.9.6g) です。
0383デフォルトの名無しさんNGNG
>>381
レスどうも。
スクリーンセーバーは今あるヤツをそのまま使いたいので
スクリーンセーバーとは別に作りたいのですよ。
0384デフォルトの名無しさんNGNG
>>383
そのソフト、ものすごく使いたくないけど、
キー入力を完全に無効にしたらどう?
0385デフォルトの名無しさんNGNG
Delphi7のヘルプが中途半端に日本語化されてて一部英語な罠…
0386デフォルトの名無しさんNGNG
>>385
ヘルプアップデートしても?
うちのは英語出てこないけど?
0387デフォルトの名無しさんNGNG
>>386
TRichEdit とか英語じゃない?
7はまだヘルプアップデート出てないし…。
0388ねこまNGNG
>スクリーンセーバーは今あるヤツをそのまま使いたいので
>スクリーンセーバーとは別に作りたいのですよ。
時間が来たら一時的に入力を促すだけのスクリーンセーバーを起動して,
終わったらあなたのお気に入りのスクリーンセーバーに戻せば良い.
他にアイデアは無いです.
0389デフォルトの名無しさんNGNG
>>387
これは違うの?
ttp://www.borland.co.jp/delphi/del7docup.html
0390デフォルトの名無しさんNGNG
DirectXの排他モードを使えば?
0391デフォルトの名無しさんNGNG
>>380
「スクリーンセイバーの作り方 delphi」を検索して、他のアプリを隠す部分だけ真似すりゃ
いいんじゃないでせうかね。
0392Delフサギコ ◆A6VzDeLphI NGNG
  ∧,,∧ >>378さん
 ミ,,゚Д゚ミ インヂーの何を使えばヨロシコですか?
      >>379さん
      DBは使わないのです
     鯖も蔵も自作アプリで単に通信したいだけなんすが。
     P2Pってのは違うと思われ(ヨクワカ)
0393デフォルトの名無しさんNGNG
>>392
単に通信したいだけなら WinSockレベルで書いてもしれてるでしょ


LAN内だけなら
メールスロットなんてのもあるし
数秒レベルの遅延が許されてるなら共有ファイルを決めて
共有ファイルを通してメッセージ交換すれば? 簡単だし
Win9xを無視するなら名前付パイプでやりとりとか
0394デフォルトの名無しさんNGNG
>>392
SOAP/Web service なんかどうなの?

0395デフォルトの名無しさんNGNG
>>392のVBフサギコさんはヘルプで「DCOM アプリケーション」を引いてみるとよろし。
つかVBもDCOM使えたような…というよりDelphiより得意なんじゃないか?
0396379NGNG
>>392
なるほど、
IndyのIdTcpClientとIdTcpServerでなんとかなりませんか?
0397デフォルトの名無しさんNGNG
>VBでWinSockを使ってて、
>なかなか便利なので、Delでも同じ事したいです
ここにつっこむ人はいないの?
0398デフォルトの名無しさんNGNG
VB の WinSock は、それはそれは便利なんだろ?きっと。
0399Delフサギコ ◆A6VzDeLphI NGNG
                _____
      ∧,,∧___   /なでか、微妙に煽られてる
    /ミ゚Д゚*ミ/\<  希ガスる...
  /| ̄∪∪ ̄|\/ \_____
    |____|/
              レスありがとです
>>393さん
WinSockスレベルのしれてる度がどれだけシレってるのかが
よくわかなのです。
スロットはしたことありません。共有ファイルは簡単しょうっすね
名前尽きパイプも吸った事無く、よくわかですた。

>>394さん
そこには逝きたいでつが、大げさすぎる肝汁ですが。

>>395さん
VBは使って使って使ってガンバッテモ鬱になる言語ですが、何か.
DCOMはみかかDOMOCOみたいなので、嫌いなのはともかく
やったー事ないのでよくわかです。

>>396さん
なんとかなりそうでし。クスコクスコクスコ

>>397さん
突っ込みどころ満載ですが、何か?
>>398さん
後ろの方が、VBでやって簡単にLAN内の2台で通信できてたので
「おや、まあ、デルファイさんでも簡単ですかねえ」
と思いましたが。
0400勝手にMailSlot講座NGNG
メールスロットは Win95〜NT迄使え、LAN内のほかのパソコンともやりとり出来ます。

まずは、標準のメールスロットに送信をしてみましょう
フォームにMemoとボタンを貼り付けてボタンイベントに

procedure TForm1.Button1Click(Sender: TObject);
var hfile:THandle;
var msg:string;
var wSize:DWORD;
begin
hfile:=CreateFile('\\.\mailslot\messngr', GENERIC_WRITE,
   FILE_SHARE_READ,
   nil,
   OPEN_EXISTING,
   FILE_ATTRIBUTE_NORMAL,0);

msg:='俺'#0'お前'#0+Memo1.Text;
WriteFile(hfile,PChar(msg)^,length(msg),wSize,nil);
try finally CloseHandle(hfile);end;
end;

どのパソコンにメッセージを送るかは CreateFileの第一引数で指定します。
詳細は 
 http://www.google.co.jp/search?q=mailslot&lr=lang_ja
messngrは w2000なら普通は常にサービスとして動いています。 W9xではWinpopupです

メッセージは 誰から誰へ の欄がありその区切りは #0 です
0401勝手にMailSlot講座NGNG
受信も簡単です 別のアプリを作成し、メモとタイマを貼り付けます。

1、ローカルにハンドル型変数を定義する
 var hMailSlot:THANDLE;

2、フォームのOnCreateForm イベントか 初期化節で
 hMailSlot:= CreateMailslot(
   '\\.\mailslot\2CH\test'
    ,100 // 最大メッセージサイズ
    ,0 // 読み取りタイムアウトの間隔
    ,nil);

3、タイマーイベントで
procedure TForm1.Timer1Timer(Sender: TObject);
var rSize:DWORD;
var buf:string;
begin
 setlength(buf,1000);
 if ReadFile(hMailSlot,PChar(buf)^,Length(buf),rSize,nil) then begin
   SetLength(Buf,rSize);
   if buf<>'' then Memo1.Lines.Add(buf);
 end;
end;

送信側アプリで '\\*\mailslot\2CH\test' とすればOK
0402勝手にMailSlot講座NGNG
MailSlotは簡単ですが、制限もあります
1、必ず届くとは限らない=届いたかどうかはそれだけでは判らない
2、複数届く場合もある
3、ドメインを設定してなければ \\*\ が使えない=相手名を設定しなければいけない=結局WinSockAPIが必要かも
4、1回の送信バイト数には制限がある
0403デフォルトの名無しさんNGNG
質問ですが、Windows.pas だけ使用して
スレッド作る方法何か無いでしょうか?
(もしくは、なるべくサイズが大きくならない方法)

あるソフトのプラグイン作ってるんですが、
なるべく軽く済ませるためにClassesは使いたくないのです。
0404403NGNG
スマソ、自己レスです。
System の BeginThread でやりまつ。
0405デフォルトの名無しさんNGNG
SETTING.TXT(http://pc3.2ch.net/tech/SETTING.TXT、http://pc3.2ch.net/win/SETTING.TXTなど)
のBBS_NONAME_NAMEの部分を取り出したいのですが、どうすれば出来ますか?
一応SETTING.TXTをダウンして保存するところまでは出来たんですが、取り出す方法が分からず…

Iniと似てるのでReadStringで取り出せるかな、とも思ったのですが、セクションがないしどうにも出来なくて。
0406Delフサギコ ◆A6VzDeLphI NGNG
            _____________
    ∧,,∧    / StringListに入れて
  _ ミ,,゚Д゚彡_<  Valuesで取り出せるよ
.=| |==U==U=| |= \
 | |@ミ  ミ .| |     ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 | | ∪''∪ | | NamesとValuesをチェックっす
 | |      | |
0407Delフサギコ ◆A6VzDeLphI NGNG
            _____________
   ∧,,∧    /
  _ ミ,,゚Д゚彡 _< ネットワク関係でレスくれた人サンクスコ
.=| |==U=U==| |= \メルスロソース、ありがとん
 | | .ミ   ミ | |
 | |ノ∪''∪. | | Indyでやってみてソース書いてから
 | |      | | レスろうかと思ってたけど、禿忙しいので
         かけそうにないです

  今日も出勤…もうぬるぽ…
0408デフォルトの名無しさんNGNG
>>406
おお、出来ました!さんくすです!
0409デフォルトの名無しさんNGNG
すんません。
今までも OpenJaneDoe 使ってもらわせてましたけど
今回のクッキーの件でふと興味を持ち
http://www.geocities.co.jp/Milano-Killer/8366/CompOJ.html
を参考に Delphi をインストールしてみますた。
んでスレ見て問題の部分を SPID を PON に
したりしてコンパイルしてみましたが

[致命的エラー] Jane2ch.dpr(1): ファイル 'System.pas' が見つかりません

て出ます。これはどういうことでしょか。
0410409NGNG
解決しますた。
0411デフォルトの名無しさんNGNG
そこでどういうミスをしていたかを書いてくれれば後から見た人の役に立つのに・・・。
0412デフォルトの名無しさんNGNG
>>411
おいおい、それでは教えて厨失格というものだ。
0413Delフサギコ ◆A6VzDeLphI NGNG
            _____
   ∧,,∧    /
   ミ*゚Д゚,,ミ < よっしゃ、ばれてない!
   ミ つ つ  \_____
 @ミ   ミ
   (ノ'''''∪ (ヒミシ)
0414デフォルトの名無しさんNGNG
|∀・)バレテルヨ…
0415デフォルトの名無しさんNGNG
パワーユーザでコンパイルする方法教えれ。
0416デフォルトの名無しさんNGNG
パワーユーザって 何の事?
0417415NGNG
>>416
それくらい検索すれ (`Д´)
0418デフォルトの名無しさんNGNG
Power Usersと書かないとわからんだろ。
0419デフォルトの名無しさんNGNG
コンパイルの仕方を知らないパワーユーザ(藁
0420デフォルトの名無しさんNGNG
PoorUser?
0421デフォルトの名無しさんNGNG
Personalを使うべく、Borland Mail News Members アカウントの登録をしたのですが、
Step2へ進むためのメールが来ません。
ISPとhotmail両方試したけど両方音沙汰無し。
時間がかかるものなんでしょうか?それとも休止中?
0422421NGNG
解決しました。19時に試した分だけメールがきました。
0423デフォルトの名無しさんNGNG
自作した関数に可変数のパラメータを
とることはできないのでしょうか?

こんな感じで・・・
procedure FuncName( param1, param2, param3 ・・・ :String );

無理ならデフォルトパラメータでやることにしまつ。
0424デフォルトの名無しさんNGNG
>>416
外国でリメイクしてヒットした戦隊モノ
0425デフォルトの名無しさんNGNG
そら、ジュウレンジャーだって。

>>423 Format のような引数指定ではどうかな?
0426423NGNG
>>425
さんくすです。解決しますた。

後の人の為に。
function Add( Base :Integer; const Args :Array of Integer ) :Integer;
var
i :Integer;
begin
for i := 0 to High(Args) do Inc(Base, Args[i]);
end;

使用例: SumOneToTen := Add(1, [2,3,4,5,6,7,8,9]);
0427デフォルトの名無しさんNGNG
単なるオープン配列パラメータじゃん.

で、それに集合わたしてコンパイル通るの?
0428デフォルトの名無しさんNGNG
集合?
0429デフォルトの名無しさんNGNG
まず、自分でやってみな。> 427
0430デフォルトの名無しさんNGNG
なるほど、オープン配列コンストラクタってやつだな.

>428
「オープン配列コンストラクタは、集合構成子と同じように、
 式をカンマで区切って全体を大カッコで囲んだものです。」

だそうだ、ヘルプによると.
0431デフォルトの名無しさんNGNG
426の例はResult値がない罠
0432デフォルトの名無しさんNGNG
>>431 いいつっこみだけど、許してあげな
0433デフォルトの名無しさんNGNG
い。
0434デフォルトの名無しさんNGNG
そんぐらい許してやれ
0435デフォルトの名無しさんNGNG
よ。
0436デフォルトの名無しさんNGNG
(嘘)
0437デフォルトの名無しさんNGNG
あまり使う気はしないな<オープン配列コンストラクタ

なんか気持ち悪い
0438デフォルトの名無しさんNGNG
といいつつ、formatで思いっきり使ってたりして
0439デフォルトの名無しさんNGNG
オブジェクトの生成/消滅をモニタできるプロファイラか
Log4J のようなロギングライブラリで定評があるのって何?
0440デフォルトの名無しさんNGNG
C#を使ってみたが、泣きたくなるぐらい分かりずらいのでdelphiに
戻ってきますた。あー落ち着く。単にスキルがしょぼいだけだが。
0441デフォルトの名無しさんNGNG
C#とDelphiって激似だと思うのだが。どこが分かりづらい?
0442デフォルトの名無しさんNGNG
たぶん言語レベルじゃなくて、ライブラリ関連だと思う。
0443デフォルトの名無しさんNGNG
Delphiの・・・に相当するC#の機能はどれだってのを探し疲れるんだよな。
0444デフォルトの名無しさんNGNG
Formの上でTimageを動的に作ったりしてオブジェクトの生成・掃除の練習をしてるんですが、
親子関係がよくわかっていません。Form1を閉じると、上に載っているimageも自動で消滅させるには
Ownerを設定するだけでいいのでしょうか?
0445デフォルトの名無しさんNGNG
いいよ
あとParentも調べとけ
あとメモリリーク検出するユニットも使っとけ
0446ねこまNGNG
Owner 浅野内匠頭
Parent 大石内蔵助
Child 大石主税
0447デフォルトの名無しさんNGNG
TComponent 継承はCreateで指定した親と一緒に解放されるから TImageも同じ

TBitmapはそうじゃない。TPersistent継承だからストリーム入力機能は
あるから、コンポーネントのプロパティにすれば dfm に保存は勝手にやってくれるが
生成、解放は別に管理が必要
0448デフォルトの名無しさんNGNG
TImageに画像が表示しきれないときに、スクロールバーを表示させたいのですが、どうすれば出来ますか?
0449デフォルトの名無しさんNGNG
>>448
TScrollBoxにTImageをのせる
0450デフォルトの名無しさんNGNG
>>449
やっぱそれしかないんですか…さんくすです。
0451デフォルトの名無しさんNGNG
>>450
>やっぱそれしかないんですか

TScrollBox は、もっぱらそのような目的で使用される。
TImage は TWinControl の派生クラスではないので、それ単体で
スクロールバーをもつことはできません。
0452デフォルトの名無しさんNGNG
>>451
なるほろ。色々と参考になりました。
0453ねこまNGNG
>TScrollBoxにTImageをのせる
私もこの方法がお手軽で良いと思っていましたが,
画像ビュワとか作ってみると,拡大で限界が見えてくるんですよ.
コントロールのサイズを果てしなく大きくできないし
どんどん描画が遅くなるし

>やっぱそれしかないんですか…さんくすです。
それしかないわけではなくて,一番簡単な方法という事ですね.
不満があるなら TImage は諦めて,イメージの表示サイズにあわせて
自分でスクロールバーを制御する事が必要となります.
0454デフォルトの名無しさんNGNG
Anders Melander氏のTGIFImage(ttp://delphi.icm.edu.pl/ftp/d20free/gifimage.exe)を使って
アニメGIFを表示させようとするとすぐ固まってしまいます。

procedure TForm1.Button1Click(Sender: TObject);
var
 GIF: TGIFImage;
begin
 GIF := TGIFImage.Create;
 try
  GIF.LoadFromFile('C:\test.gif');//←GIFアニメ
  Image1.Picture.Assign(GIF);
 finally
  FreeAndNil(GIF);
 end;
end;

デモを参考にして一応こんな風にやってみたのですが、何が問題か分かりませんか?
0455デフォルトの名無しさんNGNG
UNISYSへの送金がすんでないからだろ
0456デフォルトの名無しさんNGNG
んなこたーない
0457デフォルトの名無しさんNGNG
form2をメインフォームとして、form2上のボタンを押すとfom1を生成して
form1をShowmodalします。で、form1で処理をいろいろ行い、form1のonCloseで
unit1が作ったオブジェクトをFreeし、form2側では form1.showmodal の次に form1.Free を書きました。

が、form1を閉じると「読み込み違反が起きました」が山のように出ます。
なにか間違ってるのでしょうか・・・。
0458デフォルトの名無しさんNGNG
Release
0459デフォルトの名無しさんNGNG
>>458
あ、なるほど。ヘルプ見て気付きました。

あと、Form1 := Tform1.create(Application); とかやっておけば、メインフォームを閉じたときに
form1も掃除できるのでは?と思ったのですが、どうでしょうか。
Memcheckには反応せず、LeakCheckerには反応したのでちょっと不安で(;´Д`)
0460遅レサーNGNG
>>455
ワラタ
0461デフォルトの名無しさんNGNG
>>459
Form1がメインフォーム=アプリと同じ寿命なら最初から自動生成しとけ。
0462デフォルトの名無しさんNGNG
>>461 了解です。もうちょっと勉強してきます(`・ω・´)
0463デフォルトの名無しさんNGNG
初めてActiveX DLLを作成することになったのですが、うまく例外を発生させることができません。
例外情報を渡すためのクラスとしてIDispatchインターフェースとExceptionクラスを継承したクラスを作成し、
例外発生時にはそのインスタンスを作成およびraiseして、クライアントアプリケーション側では、
そのインターフェースからエラー情報を取得するようにしたかったのですが、
クライアント側で発生する例外はただのExceptionになっています。
例外オブジェクトはActiveXとアプリケーションの間を飛び越えられてないようです。
ActiveXでエラー情報を渡す方法ってどのような方法がありますか?
0464デフォルトの名無しさんNGNG
>>463
えーと、どのスレで回答すればいいのかな?
他のスレでは、もうコメントついているのかな?
0465デフォルトの名無しさんNGNG
>>463
>クライアント側で発生する例外はただのExceptionになっています。
EOleException じゃない?
0466デフォルトの名無しさんNGNG
タブ式のペイントソフトを作っています。
PageControlのタブ名の代わりに縮小した画像を表示したいのですがどうすれば出来ますか?
0467デフォルトの名無しさんNGNG
人間やめますか?マルチポストやめますか?
マルチポストは確実にあなたを破壊します。
0468デフォルトの名無しさんNGNG
ちょいとお邪魔します。
オートメーションサーバでクライアントからインターフェースを
受け取りたいのですが、下記のようにやってみたら
「EOleException'エラーを特定できません'」という例外がでてしまいます。
何かアドバイスを頂けると嬉しいです。

・サーバ側のタイプライブラリでIAgentを定義
・クライアント側で IAgnetを実装したクラスTMyAgent (TInterfacedObjectから派生)を作る
・クライアント側で
begin
FServer := CoServer.Create;
FServer.ShowStatus; // ← 普通のメソッドは呼べる
FServer.AddAgent(TMyAgent.Create as IAgent); // ← ここで例外
end;
0469デフォルトの名無しさんNGNG
>>468
そういうちょっと高度な質問は ML にした方が質の高い回答が得られると思うぞ。
0470デフォルトの名無しさんNGNG
>>468

>FServer.AddAgent(TMyAgent.Create as IAgent);
これだと、どの場所が問題か判らないから3行に変更してみたら?

FMyAgent:=TMyAgent.Create;
IMyAgent:=FMyAgent;
FServer.AddAgen(IMyAgent);
0471468NGNG
>>470
>FServer.AddAgen(IMyAgent);
ここで例外がでました。

試しにデバッグ版DCUを使ってみたところ、(これが原因かどうか分かりませんが)
MyAgentがQueryInterfaceでIStdMarshalInfoを要求されてE_NOINTERFACEに
なっているみたいです。

うーん、わけ分かんない(-_-;;

>>469
確かにそう鴨。
てゆーかML入れよ>漏れ
0472デフォルトの名無しさんNGNG
サーバ側も一緒に作ってるんでしょ?
そしたらサーバ側で AddAgent にブレークポイント仕掛けてみたら?
0473468NGNG
仕掛けてみたけど、そこまで辿り着けないみたいなんです。
0474デフォルトの名無しさんNGNG
>>473
じゃ クライアント側でブレークポイント仕掛けて CPU 窓を開いて ステップ実行したら?
というか まずAddAgent の定義を晒してみたら?
0475デフォルトの名無しさんNGNG
BCBスレで質問したのですが、
全然関係ない事で盛り上がっていて返事が無いので、
こちらで質問します。

BCBスレによるとTRichEditとTMemoを同じ行間にする事は無理らしいのですが、
1つのTMemoコンポーネント内に
二色以上の文字列を表示させる事はできますか?
できるならばどのようにすればいいのでしょうか?

できないならば、選択して普通のテキストとしてコピーできる
TMemoと同じ行間で、2色以上の文字を表示できるようにするには、
どのような方法をとるのが一般的でしょうか?
プログラム側で文字列と色は書き込むので、
ユーザーにとってはReadOnlyで構いません。
0476デフォルトの名無しさんNGNG
>> どのような方法をとるのが一般的でしょうか?

そのようなことができるエディタ用コンポーネントはたくさんあるし、
それを使ったらよいと思う。なぜ、TMemo と同じ行間にこだわるのか
謎です。
0477デフォルトの名無しさんNGNG
>>476
ありがとうございます。エディタ用コンポーネントは大きい物ばかりなので
サイズが大きかったりシェアウェアだったりするので敬遠していました。
TRichEditだとWin98とWin2000で行間が変わって
Win2000だと行間が異様に広すぎて情報が表示しきれないのです。
0478デフォルトの名無しさんNGNG
>>477 ゴメン 関係ない話題に食いついてた
TRichEditでフォントを調整してもダメなのですか?
0479デフォルトの名無しさんNGNG
メニューの項目にマウスカーソルを合わせると
その項目にあわせた情報を文字列として生成して
Tipヘルプとして表示したいのですがどうやればいいですか?
0480デフォルトの名無しさんNGNG
そうやればいいよ。
0481デフォルトの名無しさんNGNG
ったく、ゴミレスするぐらいならレスすんなよな。
0482デフォルトの名無しさんNGNG
TThreadについて質問です。
TThreadで複数のスレッドを作って、それらのスレッドから同じグローバル変数(Integer型)にアクセスしています。
このグローバル変数を参照・代入するときに同期処理をしなかった場合、つまり複数のスレッドから同時にアクセスした場合に、どの程度の不具合が出るのでしょうか?
計算結果がおかしくなるだけで済むのか、それともメモリ違反が起きてアプリケーションごと停止してしまうのか、エラーの程度を知りたいです。
詳しい方、お願いします。


0483デフォルトの名無しさんNGNG
> 計算結果がおかしくなるだけで済む

と思う。マルチCPUでもなければ「同時に」アクセスする、という事態はない。
0484デフォルトの名無しさんNGNG
>マルチCPUでもなければ「同時に」アクセスする、という事態はない。
マジ?
0485デフォルトの名無しさんNGNG
たしかにないけど・・・そういうことじゃないだろ。
0486デフォルトの名無しさんNGNG
>>479
確かに、D7のTMenuItemのヘルプには

| ヒントテキストは,ヘルプヒントが有効な場合
| (つまり,フォームおよびアプリケーションの ShowHint プロパティが
| true の場合)に,ユーザーがメニュー項目の上でマウスポインタを止めた
| ときにヘルプヒントウィンドウに表示されます。

とあるけど、全然表示されませんね。
バグかな?それとも、WindowsXPだから?
0487デフォルトの名無しさんNGNG
>486
http://www.borland.co.jp/qanda/delphi/d0002350.html
0488デフォルトの名無しさんNGNG
>>482
スレッド1がグローバル変数nに1と2を交互に書き込み続ける。
while True do
begin
 n := 1;
 n := 2;
end;

スレッド2がグローバル変数nの値を表示し続ける
while True do
 Writeln('n=',n);

このとき
スレッド2がn=1かn=2以外の値を表示することはない。
例外やエラーがでることはない。
1と2どちらが表示されるかはわからない。
値の代入・参照にSetN/GetNのような関数を使っていた場合はまともに動く保証はない。
0489デフォルトの名無しさんNGNG
マルチCPUでかつ同時にアクセスしても問題ないと思うよ
0490デフォルトの名無しさんNGNG
>>483,484,485,488,489
レスありがとうございます。
Integer型への単純な代入・参照ぐらいでは、変な計算結果になることはあっても致命的なエラーは起こらないということですね。

重ねて質問なのですが、同じようなケースで、複数のスレッドからInt64型やAnsiString型のグローバル変数を参照・代入したときや、インクリメントの処理(x:=x+1)などを行った場合はどうなるのでしょうか?
482のケースと同じと考えていいんでしょうか。
どなたかご存知の方がいらしたらお願いします。
0491デフォルトの名無しさんNGNG
>>490  CPUバスは64bitだけどレジスタは32bitなので、int64は2つのレジスタを使っている。だから、
>>488と同じような事をした場合
$11111111 と $22222222 を 交互に書き込んだら

$11111111 と $22222222 以外に $11112222 や $222211111が読める場合がマレに出て来る。

AnsiStringについては2つのスレッドが 単なる代入をするだけなら 参照を書き換えるだけだから問題
ないだろあうが、
str:=str+"1"
str:=str+"2"
のような感じで相互に書き換えるとメモリ管理が変になるかもしれない
0492デフォルトの名無しさんNGNG

threadvar ってどういう時に使うのでしょうか?
0493デフォルトの名無しさんNGNG
>> 482のケースと同じと考えていいんでしょうか。

違うんじゃないか、と考える根拠はなに?
そもそもなにやりたいの?
0494デフォルトの名無しさんNGNG
> $11112222 や $222211111が読める場合がマレに出て来る。

おつ、断言してるね。
0495デフォルトの名無しさんNGNG
> $11112222 や $222211111が読める場合がマレに出て来る。

もと質問ではエラーの程度が知りたいみたいよ。内容がどうなるかについては
興味ないみたい。というか、そもそもどうなるかわからんし
0496デフォルトの名無しさんNGNG
内容が不定ということで、エラーの程度はもとのケースと同じ
0497デフォルトの名無しさんNGNG
皆様レスありがとうございます。

>>493
>>違うんじゃないか、と考える根拠はなに?
>>そもそもなにやりたいの?

説明が足りなくてすいません。
質問した理由は、マルチスレッドのサンプルを見てみると同期処理をしなければいけない場合としなくてもいいケースがあるらしく、その辺の基準を知りたかったからです。

Int64について聞いたのは、Int64は32bitCPUでは1度に処理できないと思うので、複数に分けられた処理が重なるとどうなるか、
AnsiStringは、文字列を代入するときなど内部的にメモリ操作なんかをしてそうなので、その処理が重なるとどうなるか、
インクリメントについて聞いたのは、インクリメントは参照と代入をしますから、その処理が重なるとどうなるか
というのがそれぞれ気になったので質問しました。

>>491
ということは、Int64については、Pascalのコード上では別々に実行されても、アセンブラのレベルでは処理が混ざってしまうケースがあるってことですね。
で、それでも致命的なエラーにはならないと。

0498デフォルトの名無しさんNGNG
threadvarはスレッド毎に違う値を保持できるんだけど
そういう値はTThread継承してフィールドとして保持するからあまり使われない。

AnsiStringや動的配列は内部で関数コールしてるからスレッドセーフじゃないかも。
0499デフォルトの名無しさんNGNG
同期処理をしなくても良い場合
○単ワードで完結したデータを 多他方が読むだけの場合
   例えば片方が読むだけの処理で片方が読んで書く処理はOK
   複数ワードのデータの場合は片方が書くタイミングによって
   は正しく送れない


基本的にそれ以外は同期処理が必要
 ただ、同期処理といっても自前で簡単に出来る場合もある。

1、複数ワードのデータ、例えば文字列をスレッド間で渡す場合は、
 文字列の領域を読むスレッドが
 完全に読める一定時間確保しておいてそのポインタを渡せばよい

2、セマファのように相互に書き換える旗を実装する場合は 
  x86ならXCHG命令を使う

3、複数スレッドでカウンタを実装する場合はアセンブラのinc命令を使う

 これを巧く組み合わせればOSの同期処理を使わなくても大丈夫
0500デフォルトの名無しさんNGNG
OSの同期処理を巧く組み合わせれば、↑を使わなくても大丈夫

同期処理をさぼりたい理由って何だろうか。しなくてもよいことは
しない方がよいことは分かるが
0501デフォルトの名無しさんNGNG
Synchronize つかってメインスレッドにやらせりゃ、自動的に排他処理になる
のになんでめんどくさいことしなきゃならんの。速度クリティカルならまぁ
わかる
0502デフォルトの名無しさんNGNG
>>500 同期処理をサボるんじゃなくてさ・・・
マルチスレッド使いこなすには同期処理しなくてよい場面をどれだけ作れるかって事
じゃないかなと思ってたんだが・・・・
まあ、無理やり理由つけると、OSの同期処理を使ってしまうとKylix<->Delphi移行なん
て時に不便かな・・・程度かな


Synchronize は Windowsメッセージを使って、メインスレッドにやらせてる訳で
よく判らんけど結構重い処理だと思うよ。
たまに呼び出すならいいけど、例えば、処理の進展状況を報告する程度の事なら
integer のグローバル変数を介して非同期にやりとりした方がいいでしょ
0503デフォルトの名無しさんNGNG
TEditで選択中の文字列の背景色と文字色を変更する事は可能ですか?
0504デフォルトの名無しさんNGNG
>>503 どうだろ?
GetSysColorの呼出個所にパッチをあてておいてWM_SYSCOLORCHANGE を送るとか・・・無理かな
0505503NGNG
>>504
それはTEditコンポーネントを改造するという事ですか?
ごめんなさい、良く分かりません(^^;
0506デフォルトの名無しさんNGNG
>>505
いや、たぶん出来ないだろうって事だろ
0507503NGNG
たぶんで答えられても困るのですが(^^;
0508デフォルトの名無しさんNGNG
>> たぶんで答えられても困るのですが(^^;

できるかもしれないが、超めんどくさいことをしなけりゃならん、と
思う。これでどう。
0509デフォルトの名無しさんNGNG
WM_PAINTで標準の描画が行われた後のタイミングを捉えて、
BrushCopyかなんかで色を置換するのは駄目?ちらつくか。
0510デフォルトの名無しさんNGNG
>> GetSysColorの呼出個所に

1)TEdit はウィンドウズのエディットコントロールのラッパー
2)その各部の色(背景色以外)はシステムカラーで決まってる(?)
3)システムカラーを変更するとできるだろう。たぶん(藁
4)でもその結果、すべてのエディタに影響が及ぶ
5)これを回避するために・・・・よくわからんが、めんどくさいことをしなければならないだろう

ま、標準コントロールの色をいじりたがるのは初心者だけだね。
0511503NGNG
ま、(?)とか「たぶん」とか書くのも初心者だろ。

よーするに有効な手段はないからてめえでコンポーネント作れ
で、よろしいか?
0512デフォルトの名無しさんNGNG
あのね、たぶん、と答えたら困る、ってことで、詳しく説明したつもりなんだけどね。
なんで逆切れしてるの。

選択色を変更しなけりゃできない機能ってどんなことだい?

わざわざコンポーネントを一から作る価値に見合う機能なんだろうね?
0513デフォルトの名無しさんNGNG
選択色を変更したいのでエディタコンポーネントを一から作るってのは
凶器の沙汰。
0514デフォルトの名無しさんNGNG
沙汰
「沙」は砂、「汰」は選び分ける
水中でゆすって、砂を捨て米や砂金を選び分ける意
0515504NGNG
>>505
そういうレベルならモナーに聞いて欲しかったな。
挑戦的な質問に聞こえたからああいう答え方になったけど、

 TEditコンポーネントを改造というかその延長では出来ないと思うよ
 だから、TRichEditで頑張った方がいいと思うよ
0516デフォルトの名無しさんNGNG
ちょっとした疑問なんですが、プロジェクトのソース、pasとdcu、dfmを合わせても700KB
程度しかないのに、コンパイルすると4MB近くになってしまいました。
今までは、せいぜいバイナリは1.5倍〜2倍程度だったのですが、今回だけ異様です。
この妙なサイズはどこから来るのでしょう?
(外部リソースは全て動的にアクセスしているので、exeが巨大化する理由がわからないんです)
0517デフォルトの名無しさんNGNG
誰も的確に答えられませんでした。
0518デフォルトの名無しさんNGNG
皆、的確に答えたが、質問者が理解できなかった。
0519デフォルトの名無しさんNGNG
ダブルバッファリングした上で>>509の方法が多分一番楽。
つか、スルーされた時点で、からかいに来たのかと疑ってる。
0520デフォルトの名無しさんNGNG
また、たぶん、かよ。
やってみてから言ってよね。
0521503NGNG
上の人のは偽物です(^^;

>>519
その方法を詳しく教えて頂けませんか?
0522デフォルトの名無しさんNGNG
ブラシの色を変えて、それで選択部分の矩形をどうやって求めるの?
0523デフォルトの名無しさんNGNG
>> その方法を詳しく教えて頂けませんか?

いい質問だね。きっと、519は具体的に答えてくれるよ。
0524504NGNG
>>519 ダブルバッファにする為には今度はBeginPaintをひっかけないといけないんじゃないの?
0525デフォルトの名無しさんNGNG
さあ、一体誰が 本 当 に 的 確 に 答えられるんでしょうかねえ(^^;
0526503NGNG
>>507
>>511
これは偽者です。
レスが遅れまして申し訳ございません。

>>512
フォームのデザインの関係で見栄えがちょっと悪かったので
変更できるのかな〜と・・・

>>513
改造でも狂気の沙汰ですか?

>>515
私のレベルがスレと合ってなかったみたいっすね(^^;
もっと簡単に出来るのかと思ってたけど、かなり難しいようですね。
どうりでググっても見つからない分けだ。
0527デフォルトの名無しさんNGNG
めんどくさいことするだけの価値があるかどうか、質問者は再考するように!

というのが一番的確な回答
0528デフォルトの名無しさんNGNG
519は逃げますた。
0529503 ◆eRDUfXaGp2 NGNG
>>521
こっちも偽者。
むぅ・・・、トリップ付けちゃる。
0530デフォルトの名無しさんNGNG
>> 改造でも狂気の沙汰ですか?

515さんも答えてるけど、TEditの改造で簡単にできるとは思えないよ
0531デフォルトの名無しさんNGNG
要するに、一回(メモリ上に)標準色で描かせておいて、
後から標準の選択色で塗られているピクセルだけ塗り替えるって事。

BrushCopyってのは、ヘルプの文面があれだけど、要するに透明色つき描画なんで、
ダブルバッファリングで得たコントロールのイメージBitmapから、
標準の選択色を透明色にして…云々。
書いてて、DIBでポインタアクセスの方が手っ取り早い気もしてきた。
まあ手段は何でもよくて、最悪GetPixel/SetPixelで1ピクセルずつ調べても、
面積にもよるけど最近のCPUならそんなに遅くならない気もする。
0532デフォルトの名無しさんNGNG
>>524
標準コントロールは、WM_PAINTのWPARAMにDC送ると、
画面じゃなくそっちに描いてくれるので、ダブルバッファリングは割と楽。
0533503 ◆eRDUfXaGp2 NGNG
>>527
そんなに大変だと思ってませんでした。
他の方法(TRichEditを使うとか、選択しないとか)でやってみます。
0534デフォルトの名無しさんNGNG
>>まあ手段は何でもよくて、最悪GetPixel/SetPixelで1ピクセルずつ調べても、
>>面積にもよるけど最近のCPUならそんなに遅くならない気もする。

おう、すごく現実的な回答だけど、こんなのでは実装したくなくなるねぇー

0535デフォルトの名無しさんNGNG
>>533
へたれ。
0536デフォルトの名無しさんNGNG
一からコンポーネント作るより楽だったんじゃねえの?
0537デフォルトの名無しさんNGNG
>> 一からコンポーネント作るより楽だったんじゃねえの?

それは認める。いろいろ勉強になった。ありがとう。
0538デフォルトの名無しさんNGNG
実際やれと言われたら出来る人はゼロだったということか。
0539デフォルトの名無しさんNGNG
>>538

537 です。実用的かどうかはともかく、実際、わたしならできるように思います。
うぬぼれでなく。
0540503 ◆eRDUfXaGp2 NGNG
>>531
BrushCopyって便利そうですね。
コンポーネント単位で描きなおすんじゃなくて、
画面の標準色の有り無しを調べて塗り直すんですね。

よっしゃ、諦めよう・・・・。

0541デフォルトの名無しさんNGNG
へたれはカエレ!!(・∀・)
0542504NGNG
>>532
 ああなるほど、今実験したら 
type TMyEdit=class(TEdit)
procedure WMPaint(var Message: TWMPaint); message WM_PAINT;
end;

でちゃんとWMPaintも呼ばれるし、 これなら簡単ですね
0543デフォルトの名無しさんNGNG
>> これなら簡単ですね

そう。あと、選択部分の矩形領域をどうやってもとめるのか、を
解決できれば、できそう。GetPixel はできればやりたくないです。
0544504NGNG
あと文字の変更時は WMPaint呼ばれないから、文字変更毎に Invalidate させてとか
も必要かな。でもたいした事じゃないか
0545デフォルトの名無しさんNGNG
>そう。あと、選択部分の矩形領域をどうやってもとめるのか、を

別に求める必要は無くて、使いたい色で一面に塗られたもうひとつのメモリビットマップに、
標準選択色を透明色ということにして色抜きコピーしてやれば解決。メモリの無駄とも言う。
全部調べるにしてもDIBでポインタアクセスした方がGetPixelより圧倒的に速いし。
0546デフォルトの名無しさんNGNG
>>544

1) EM_GETSEL を送って、選択領域の最初と最後の文字インデックスを求める
2) EM_POSFROMCHAR で選択領域の最初と最後の文字の論理座標を求める
3) 2) で求めた座標の最初と最後のところの近辺を GetPixel で調べて
 矩形の四点を求める。うーむ、左上と右下の2点で十分だね。

一行エディットだとこれでいいと思う。
0547デフォルトの名無しさんNGNG
>> 標準選択色を透明色ということにして色抜きコピーしてやれば解決

これの具体的な説明を教えて。
0548デフォルトの名無しさんNGNG
TransparentBltって色抜きコピー可能なAPIがあって、BrushCopyはそのラッパー。
で、例えば、白地にひとつ青い矩形が書かれた画像があって、青を赤にしたいとする。
真っ赤な画像を別に用意して、そこへ、元の画像を青=透明でコピーすると、白地に赤い矩形になる。
こんな説明でいい?
0549デフォルトの名無しさんNGNG
>537 です。実用的かどうかはともかく、実際、わたしならできるように思います。
>うぬぼれでなく。

「人に頼れば」出来ると言う事だったらしい。プ
0550デフォルトの名無しさんNGNG
>>548

分かると思う。帰宅したらやってみる。ありがとう。
0551デフォルトの名無しさんNGNG
>>「人に頼れば」出来ると言う事だったらしい。プ

いや、GetPixel や ScanLine を使えばできることはできる。もっと効率よく
ということさ。
0552デフォルトの名無しさんNGNG
(´∀` )エヘヘ
0553デフォルトの名無しさんNGNG
>>516
usesしてるユニットは?
0554デフォルトの名無しさんNGNG
誰でもいいからさっさと作れよ。
0555ななしへたぐらま ◆XcB18Bks.Y NGNG
>>516
もしかしたら…ですが,『プロジェクトオプション』 - 『リンカ』の
『TD32デバッグ情報を含める』にチェックが入っていませんか?
0556デフォルトの名無しさんNGNG
>>503程度も実現困難なDelphiはOOPLとしての限界を露呈してしまったね。
0557デフォルトの名無しさんNGNG
言うなら Windows標準コンポーネントの 限界だな。
バカはしゃべるなよ。
0558デフォルトの名無しさんNGNG
>>556
.NETなら簡単なんですか?
0559デフォルトの名無しさんNGNG
.NETなら多少長めに見積もって5分ってとこだな。
0560デフォルトの名無しさんNGNG
>>556
アフォかそれが出来ないこととOOPLの限界とは関係ないだろ。
素人はでてくんな。バカ。
0561デフォルトの名無しさんNGNG
Delphiなら4分ってところかな。って何の話?
0562デフォルトの名無しさんNGNG
カップラーメンの麺が程よく伸びる時間
0563デフォルトの名無しさんNGNG
最近のカップラーメンは4分が一般的だね。
ところで俺はGooTaのワンタンはおいしいと思うんだ。
0564デフォルトの名無しさんNGNG
カップラーメンはちょっと堅いくらいがうまいのに
0565504NGNG
>>559
 もともとのWinコントロールにその機能が無いのに無理でしょ。
 DelphiやネイテブのWinアプリだと最悪 DLL呼出部を検索してそこにパッチをあてる
という方法が使えるわけだけど、.NET だとそれも使えない訳で
0566504NGNG
あ、それと実験してみたけど結構大変みたい。

試しにオーナ描画で
procedure TMyEdit.WMPaint(var Message: TWMPaint);
var str:string;
  FCanvas: TCanvas;
  PS: TPaintStruct;
begin
str:=Text;
with Message do if DC = 0 then DC := BeginPaint(Handle, PS);
FCanvas:=TCanvas.Create;
try
FCanvas.Handle := Message.DC;
FCanvas.Brush:=Brush;
FCanvas.Font:=Font;
FCanvas.TextRect(BoundsRect,0,0,str);
if SelLength>0 then begin
  FCanvas.Brush.Color:=HighLightColor;
  FCanvas.TextRect(BoundsRect,
  FCanvas.TextWidth(copy(str,SelStart,SelLength))
  ,0,SelText);
end;
finally FCanvas.free;end;
end;
とやっても、肝心の選択動作中に WMPaintが呼ばれないし、キャレットが表示されない。
OnChangeだけでなくキーボードイベントも乗っ取って描画を制御しないといけないみたい
0567デフォルトの名無しさんNGNG
>>566
本題と関係ないけど、EndPaintもinheritedも無いような、気のせい?
0568504NGNG
>>567
 いやその通り EndPaint忘れてたよ。 
0569デフォルトの名無しさんNGNG
純粋に技術的なチャレンジとしては意味があるとは思うけど、

>>526 フォームのデザインの関係で見栄えがちょっと悪かったので
>変更できるのかな〜と・・・

のような厨房質問への回答としてはむなしいね。「労多くして功少なし」
0570デフォルトの名無しさんNGNG
>>503程度も実現困難なDelphiはOOPLとしての限界を露呈してしまったね。
0571デフォルトの名無しさんNGNG
>>570
で、APIプログラミングとOOPLに何の関係が?
0572デフォルトの名無しさんNGNG
>>570
C# でのサンプルを提示してくれるかな?
無理だろうけど。
0573デフォルトの名無しさんNGNG
挑発にのるな! >>570 みたいのは、スキルのないヤツしか書きこめんだろう、恥ずかしくて。
0574デフォルトの名無しさんNGNG
>>573
いーでしょ。おまえが管理しているわけではないんだから黙っていろ。
コードを提示できるならすばらしいことなんだし。
0575デフォルトの名無しさんNGNG
>>574

おっ、OOPLの意味もわからん馬鹿がきたか。>>570 は書き込みとしても意味不明
だと理解できないのか。厨房は寝る時間だぞ。
0576デフォルトの名無しさんNGNG
アップデートCDキタ━━━━━━(゚∀゚)━━━━━━!!!!!

0577デフォルトの名無しさんNGNG
和訳へただけど、リリース前から変更点が解説されてるのはうれしい。
0578デフォルトの名無しさんNGNG
>>575
バカに対して、吉外のようにわめくあなたもすばらしい。
そろそろ帰りな。
0579↑典型例(´∀`)NGNG
 
0580デフォルトの名無しさんNGNG
>>576
.NETのでしょ?
使ってないもので、しかも、試作品のパッチもらっても困るよな。
無料でD8が送られて来たら大歓迎だが(笑
0581デフォルトの名無しさんNGNG
タイトルバーの高さを求めたいのですが、どうすれば良いんでしょうか?
0582デフォルトの名無しさんNGNG
げっとしすてむめとりっくす
0583デフォルトの名無しさんNGNG
>>582
実はImageとフォームの大きさを同じにしたいのですが、
SetBounds(Left, Top, Image.Width, Image.Height + GetSystemMetrics(SM_CYCAPTION));
こうやるとボーダー(?)分幅や高さが足りなくなってしまいます。

こういう場合どうするのが一番良いんでしょうか?
0584デフォルトの名無しさんNGNG
ClientHeight := Image.Heightとかやる。
0585デフォルトの名無しさんNGNG
>>583
つーか、「フォーム全面にイメージを載っける=見た目、イメージだけ状態」
にしたいってことでは?もしかして。
0586デフォルトの名無しさんNGNG
>>584
あ、それでした。さんくすです。
>>585
いや、そうではないです。
0587デフォルトの名無しさんNGNG
どなたか Shell Namespace Extension をDelphiで使ったことがあるという人いませんか?
0588デフォルトの名無しさんNGNG
Delphiのソース編集を外部エディタ(TeraPad)でしたいのですが
できないのでしょうか?
0589Delフサギコ ◆A6VzDeLphI NGNG
           _____________
   ∧,,∧∩  /
  ミ,,゚Д゚彡 < あけ、おめ
  (ミ  ミ   \____________
 〜ミ  ミ
   ∪''∪外部エディタではないが、
       メニューでエディタを切り替えられる方法

[ツール][ツールの設定]を選びませう

[プログラム]
  エディタの指定
    C:\Program Files\EmEditor3\EMEDITOR.EXE
[実行時引数]
  普通にファイルを引数として渡す
    $EDNAME
  EmEditorの場合、行番号も引数に渡すことが可能
    /l $ROW $EDNAME
  一度、Delphiでファイルを保存してから
  EmEditorでファイルを開く方法
    $SAVE /l $ROW $EDNAME


同様に、編集中ファイルのフォルダを開くと
実行ファイルのフォルダを開くを
作っておくと、かなり便利。
0590デフォルトの名無しさんNGNG
Eclipse で Delphi を使えるようにしる!
0591588NGNG
>>589
あけましておめでとうございました&ありがとうございました。
Delphiのエディタでフリーカーソルがなくなったらだいぶましになるのになぁと思ってみたり
0592デフォルトの名無しさんNGNG
http://onigiri.s3.xrea.com:8080/delphi/index.php?%5B%5B%A5%C4%A1%BC%A5%EB%A4%CE%C0%DF%C4%EA%5D%5D
0593588NGNG
>>589
こういうページがあったんですか
ありがとうございます
0594デフォルトの名無しさんNGNG
ボーランドの製品は大昔からフリーカーソルなのです。
MSも最初はフリーカーソルだったのに、ラインエディタあたりから変わった。

0595Delフサギコ ◆A6VzDeLphI NGNG
           _____________
   ∧,,∧∩  /
  ミ,,゚Д゚彡 < おめ あけ
   U  ミ   \
 @ミ  ミ       ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
   ∪''∪

>>592さん
> 編集中のソースのあるフォルダを開く(ツリービュー有り)
> &Explorer cmd.exe /c delphi_tool_explorer.bat $PATH($EDNAME)

[プログラム]
  エクスプローラを指定、以下のどの指定方法でもOK
    explorer
    explorer.exe
    C:\WINNT\explorer.exe
[作業フォルダ]
  設定しなくてよい
[実行時引数]
  現在開いているファイルのフォルダを開く
    "/n", "/e", $PATH($EDNAME)

こっちでよいのでは?動作確認しました。

あと、コードテンプレートを指定エディタで開くのも
いれておくと、楽に編集できますです。

>>591さん
旧版からの伝統で某に直す気一切なしです
ガリレでもフリーカソのみだったら・・・
0596西安 ◆CYANlp4LPo NGNG
フリーカーソルまんせー(ぼそっ)
0597Delフサギコ ◆A6VzDeLphI NGNG
   ∧,,∧
  ミ,,゚Д゚ミy━~~
   U   ミ
俺もマンセですけどね。

フリカ拒絶派も取り込まないと
ガリレが生き残る道は…

単にフリカON/OFFスイチがあればいいだけなのに
無いだけで、IDEくそ呼ばわりですから....
0598592NGNG
>こっちでよいのでは?動作確認しました。
俺にゆーな。試したんなら直してくれよ。

>あと、コードテンプレートを指定エディタで開くのも
>いれておくと、楽に編集できますです。
こっちは載ってるよ。
0599Delフサギコ ◆A6VzDeLphI NGNG
  ∧,,∧   Wikiの使い方がわからないのですもの。
 ミ,,゚Д゚彡
 ミつ[|lllll]).
〜ミ   ミ
  ∪''∪ コードテンプレの記述はありました。

  WZの他にEmとか秀の設定があるといいかも。
  あと、編集前に$SAVEは入れた方がいいかと。
0600デフォルトの名無しさんNGNG
>>599
ヘルプ、読め。最低限の礼儀だ。
0601デフォルトの名無しさんNGNG
ボーランドが非フリーカーソルをサポートしないのは、
フリーカーソルに慣れて欲しいからかもしれないね。
フリーカーソルの方が便利だから。

非フリーカーソルで、コメント2を追加したい場合はどうするの?

Line1; // コメント1
Line2;
↓
Line1; // コメント1
Line2; // コメント2
0602デフォルトの名無しさんNGNG
みんなーボーランドと一緒に滅びようなー
0603デフォルトの名無しさんNGNG
>>601
Line1;の後ろ全選択してコピペ
0604デフォルトの名無しさんNGNG
>>601
フリーカーソルの方が面倒では?


Line1; // コメント1|←カーソル
Line2;
↓
Line1; // コメント1
Line2;        |←カーソル
↓
Line1; // コメント1
Line2;|←カーソル(BS連打)
↓
Line1; // コメント1
Line2; // コメント2|←カーソル
0605デフォルトの名無しさんNGNG
フリーカーソル、もう慣れちゃったなー。今更変えられない。
0606デフォルトの名無しさんNGNG
タブが消えたから分かり難かったです。

 Line1;    // コメント1
 Line2;

 Line1;    // コメント1|←カーソル
 Line2;
 ↓
 Line1;    // |コメント1  Ctrl+← で "コ"に移動
 Line2;
 ↓
 Line1;    |// コメント1  ←を3回押す
 Line2;
 ↓
 Line1;    // コメント1  ↓を押してコメントを書き始める
 Line2;    //

>>603
Line1とLine2の長さが違う場合はどうするのですか?
0607デフォルトの名無しさんNGNG
>>606

非フリーカーソルの場合、

Line1; // コメント1|←カーソル
Line2;
↓(↓カーソル押)
Line1; // コメント1
Line2;|←カーソル
↓
Line1; // コメント1
Line2; // コメント2|←カーソル
0608デフォルトの名無しさんNGNG
それに非フリカで矩形選択はどうなるのだろう?
0609デフォルトの名無しさんNGNG
>>607
じゃ、常に ; の二文字後からコメントが始まるの?
// を縦にそろえたりはしない?

AA;
AAAAA;
AAAAAAAAA;
AAAAAAAAAAAAA;
↓
AA;        // コメント
AAAAA;      // コメントの続き
AAAAAAAAA;    // コメントの続きの続き
AAAAAAAAAAAAA;  // 等など
0610デフォルトの名無しさんNGNG
◆◇◆◇◆最新情報◆◇◆◇◆
http://yahooo.s2.x-beat.com/linkvp/linkvp.html
0611デフォルトの名無しさんNGNG
>>608
矩形選択時だけフリカになるだろ。
TeraPadとかほとんどのエディタがそういう手法だが?
0612デフォルトの名無しさんNGNG
>>608
ボックス選択とカーソルモードは直接的な関係はないと思われ。
0613デフォルトの名無しさんNGNG
>>611
>フリカ

通ぶって 略語作って 赤っ恥
0614デフォルトの名無しさんNGNG
非フリカの利点が解らないよ!
行末で→を押すと次の行に移動する事?
リターンキーは使わないのかな…。
0615デフォルトの名無しさんNGNG
キーマクロも非フリカだと使いにくそうですが。



0616デフォルトの名無しさんNGNG
>>613
他の人も使ってるけど見えないのかなw
0617デフォルトの名無しさんNGNG
>>614
Enterしたら改行入っちゃうじゃん。
0618デフォルトの名無しさんNGNG
結局ボーランドのIDEを使いにくくするための策略でしょ?
0619デフォルトの名無しさんNGNG
>>617
上書きモードで使うので大丈夫です。
0620デフォルトの名無しさんNGNG
フリーカーソルかどうかなんて他の欠点と比べれば取るに足らない問題だ。
0621デフォルトの名無しさんNGNG
でもね、もしDelphiのエディタがメモ帳になったらDelphiを捨てます。
0622デフォルトの名無しさんNGNG






          結 局 慣 れ              









0623デフォルトの名無しさんNGNG
Delphiのテキストエディタって矩形選択で右端がキャレットより一つ余分に選択されるやつ。
これ嫌。
0624デフォルトの名無しさんNGNG
BorlandがTEditor使えば良いんだよ。
0625デフォルトの名無しさんNGNG
JavaDoc的ドキュメンテーションツールとエディタによるサポートがないのは致命的。
0626デフォルトの名無しさんNGNG
非フリカで縦書きの時はどうするんだろう?
0627デフォルトの名無しさんNGNG
自動インデント
0628デフォルトの名無しさんNGNG
非フリカを売りにしたソフトは無いんだから。

0629デフォルトの名無しさんNGNG
そりゃWindowsで非フリカは当たり前だからね。
0630デフォルトの名無しさんNGNG
最初のWindowsでは技術が無くてフリーカーソルに出来なかったんでしょ。
0631デフォルトの名無しさんNGNG
>>630
ンナバカナ
0632デフォルトの名無しさんNGNG
TPictureにLoadFromStreamってありますよね?
Image.Picture.LoadFromStreamとやろうとしても未定義の識別子と怒られてしまいます。

ヘルプ見てもやっぱりあるようなのですが…何か勘違いしてます?
0633デフォルトの名無しさんNGNG
Imageがないんじゃないの。
0634デフォルトの名無しさんNGNG
Image.Picture.Graphic.LoadFromStreamだといけるんでそれはないかなと思います。
0635デフォルトの名無しさんNGNG
TPicture.LoadFromStreamはないよ。
ヘルプ確認してみ。
0636デフォルトの名無しさんNGNG
TPicture.LoadFromStream

TPicture参照
LoadFromStream メソッドは,Stream から画像を読み出します。

procedure LoadFromStream(Stream: TStream);

説明

LoadFromStream を使うと,TStream オブジェクトから画像を読み出すことができます。作成される TGraphic クラスは,ストリームに格納されているデータの型によって指定されます。
ストリーム内のデータは,別の TPicture オブジェクトまたは TGraphic の下位オブジェクトの SaveToStream メソッドへの呼び出しによって書き込まれたものです。
0637デフォルトの名無しさんNGNG
それはCLXリファレンスな罠
0638デフォルトの名無しさんNGNG
う、そうでした…。
なんかImage.Picture.Graphic.LoadFromStream(StringStream);だとエラーが出るんで使えるのかと思ってました。
0639638NGNG
Image.Picture.LoadFromFile('test.jpg');
だと大丈夫なんですが、
Image.Picture.Graphic.LoadFromFile('test.jpg');
だとエラーが出てしまいます。

これって何が原因なんでしょうか?
0640デフォルトの名無しさんNGNG
>>639
何のエラーが出るの?
0641デフォルトの名無しさんNGNG
Graphicが作成されていない
0642カラスNGNG
アホー
0643デフォルトの名無しさんNGNG
Delphiのエディタで時々Enterキーを押しても
改行に成らないときがあるのですが
どうしたら元に(改行するように)戻るのでしょうか?
0644デフォルトの名無しさんNGNG
Insert
0645643NGNG
>>644
ありがとうございます 治りました
こんな基本的なこと聞いてすいませんでした。
0646デフォルトの名無しさんNGNG
>>641
実はBitmapとJPEGの両方を対応したいのですが、
Image.Picture.Graphic := TJPEGImage.Create;
とやるとBitmapが読めなくなってしまいます。

本当は自動的にグラフィックデータのフォーマットを判別するTPictureを使いたいのですが、
TPictureにはLoadFromStreamないようなので困っています。
0647デフォルトの名無しさんNGNG
Bitmap→PNGでした スマソ
0648デフォルトの名無しさんNGNG
>>646
君の考えている方法とは違うけど、俺ならこうする。
procedure TMainForm.OpenMenuItemClick(Sender: TObject);
var
  FName: string;
  ext: string;
  png: TGLDPNG;
begin
  if OpenPictureDialog.Execute then
  begin
    FName := OpenPictureDialog.FileName;
    ext := LowerCase(ExtractFileExt(FName));
    if ext = '.png' then
    begin
      png := TGLDPNG.Create;
      try
        png.LoadFromFile(FName);
        Image.Picture.Assign(png);  // Image: TImage;
      finally
        png.Free;
      end;
    end else if (ext = '.bmp') or (ext = '.jpg') or (ext = '.jpeg') then
    begin
      Image.Picture.LoadFromFile(FName);
    end;
  end;
end;
0649カラスNGNG
バカー
0650デフォルトの名無しさんNGNG
TWebBrowserでHttpのステータスコードを取得する方法ってありますか?
0651デフォルトの名無しさんNGNG
>>650
無い。
0652デフォルトの名無しさんNGNG
初歩的な質問で申し訳ないのですが・・・

TCard = class 〜〜 end;
TEventCard = class(TCard) 〜〜 end;
THappenCard = class(TCard) 〜〜 end;

というTCardを基底にした2種類のクラスがあり、
この2種類のどちらも格納できる配列を作成したいのですが、
その場合、Array of TCard とすれば問題ないのでしょうか?
もし、その配列に TEventCard を TCard に型キャストして代入したとすると、
TEventCard で拡張したフィールド変数などの情報は保持されるのでしょうか?
0653デフォルトの名無しさんNGNG
されるよ。参照するときは(arr[n] as TEventCard)すれば良し。
0654デフォルトの名無しさんNGNG
>>652
問題ないです。キャストが必要なのは値を取り出す場合のみです。保持されます。
0655デフォルトの名無しさんNGNG
>>653-654
良くわかりました。
素早い御回答ありがとうございます。
06561000NGNG
1000getおめ♪
0657993NGNG
ゴメソ、質問さしてください。

TForm.OnCloseQuery で分岐処理をしていて、TForm.Close メソッドを呼び出しても
必ずしも Form が閉じられるとは限らない場合、当該 Form が閉じられたかどうか
確認するにはどうすればいいのでしょうか。
0658デフォルトの名無しさんNGNG
埋めてる奴氏ねよ。マジ迷惑なんだよ。

>>657
Form.Visible
0659デフォルトの名無しさんNGNG
死ねって言われて死ぬのはおまえぐらい。プ
0660Delフサギコ ◆A6VzDeLphI NGNG
           D6Up2のdemoプログラムで
    ∧,,∧  カスタマイズダイアログで
   ミ,,゚Д゚彡   ActionMainMenuBar
    ミ つ旦)~~  に"戻る"を押すと
  〜と,,,~),,~)   MainMenuが消えますね。なぜかしら。

  あと、ヒントのショートカット表示の動作が変かな?

  ちょっともてあそべば、使えるものに
  なるような気がするような、しないような。

とりあえず、ここのサンプルは勉強になるでしょう。
http://homepages.borland.com/strefethen/info/ABExpressTutorial.htm

いろいろ触ったけど
MainMenuBarだけカスタマイズOFF
という動作は出来ないみたい。
MainMenuだけは違うクラスを使った方がいいかもね。
(DelphiIDEもMenuは違うもの使っているみたいだし)
ツールバーカスタマイズに関してはそれなりに使えそうな手ごたえでした。
0661675NGNG
>>658
TForm.OnClose で Action := caHide にしている場合には、Visible で
判定できそうですが Action := caFree にしている時はどうなんでしょう。
おそらく Form のメンバにアクセスしない方がいいとおもうので、
外部にフラグを用意して OnClose でセットするくらいしかないのでしょうか?
0662デフォルトの名無しさんNGNG
Delphiはぬるぽないんだっけ?
0663デフォルトの名無しさんNGNG
>>661
ShowModalではなくShowしてるんならフラグしかないね。

>>662
nil
0664675NGNG
>>663
サンクス、おんにきります。
0665Delフサギコ ◆A6VzDeLphI NGNG
          ActionManager
 / ̄ \   いろいろ試したけど
0⌒>   ヽ   [Tools][customize]
  ⊂ニニニ⊃  のメニュー部分だけ変更させたくない
  ミ,,゚Д゚,彡   って動作は出来ないみたい…
  ミ,つ酒O
  と,,,~),,~)   

なんとなく、なのですが
ActMainMenuは使いにくい
オブジェクトツリーがないとオブジェクト選択も難しいっす。
0666デフォルトの名無しさんNGNG
モナースレの>990さんどうもありがとうございました
がんばって作ってみます
0667デフォルトの名無しさんNGNG
>>665
季節外れだな。
0668ComboBox1NGNG
ComboBoxについて質問です。

ComboBoxのイベントは OnClose → OnChange の順で起きる
のですが、OnCloseの時点で選択肢に変化があったかどうかを認識し、
それにより動作を変えたいです。

これを実現するにはどうしたらよいでしょうか。
0669650NGNG
本当にTWebBrowserでHttpのステータスコードを取得する方法ってないのでしょうか?
Webを参照するプログラムを作っているのですが、どうしてもHTTPのステータス情報が
必要なのです。
WinInetで作成する方法も考えたのですが、TWebBrowserを使用するほうがはるかに
簡単なのです。(Httpステータスコードさえ解決すれば、すべて解決するのです。)
誰かTWebBrowserでHttpのステータスコードを取得する方法を見つけてください。
0670デフォルトの名無しさんNGNG
型違いの質問です

'String' と 'Cardinal' には互換性がありません
'TStrings' と 'Cardinal' には互換性がありません
が出てくるんですが、どうやって互換性があるようにすればよいでしょうか
0671て。 ◆qnISHi2Po. NGNG
これくらいなら答えられるぞ

Mojirets → String   Mojiretsus → TStrings  Tsuka → Cardinal として

Mojiretsu := Format('%d', [Tsuka]);
Mojiretsus.Text := Format('%d', [Tsuka]);

Tsuka := StrToInt(Mojiretsu);
Tsuka := StrToInt(Mojiretsus.Text);
0672デフォルトの名無しさんNGNG
>>669
ここで答えが出ないなら

IEコンポーネントを使い倒すスレ
http://pc3.2ch.net/test/read.cgi/tech/982930049/
0673デフォルトの名無しさんNGNG
>>669
こんな奴がプログラミングすんな
マジで
0674デフォルトの名無しさんNGNG
OSの再インストールしたいんだけど
Delphi6のバックアップはどうすればいいの?
Borland\以下のファイルとレジストリコピーして
OSとDelの再インストールが終わったらまた上書きすればいい?
067520歳男NGNG
去年までヲチ専門だったけど、htmlタグとJavaScriptでサイト作って
二年で350万hitした。一度やってみなよ。
初回のみだけど、1枚以上のオパーイ画像晒せば4000hitくらいカウンタ回る。
転用されるだけされて警告せずにアク禁することもできるし、裁判で白か黒に
思い切って訴えてしまえば50パーセントで神になる。
カッコ良きゃオフラインでセクースすればいいだけ。暇つぶしになる。
ビデオはめ撮りとかスカトロとか色々あるのでマジでお勧め。
0676デフォルトの名無しさんNGNG
なんだこのバカは。
20歳にもなってこんなレベルの人間もいるのか...。
0677670NGNG
>>て。
サンスク
自分はまだ入った事のない領域だ(?)
0678デフォルトの名無しさんNGNG
>>675
もっと面白く改良しろバカ。
0679て。 ◆qnISHi2Po. NGNG
最小化したときにタスクトレイにアイコンを表示して
そいつをクリックで復活させたいんだけどウィンドウは復活するんだけど
どうしても復活したときにウィンドウが前面に来てくんないよ 色々やってみたけどどうしてもだめ
どうしたらいいんでしょ? 田舎帰ろうかな

{ 最小化から復活したとき }
procedure TForm1.appRestore(Sender: TObject);
begin
 Shell_NotifyIcon(NIM_DELETE, @FIconData);
 SetWindowPos(Form1.Handle, HWND_TOP, 0,0,0,0,SWP_SHOWWINDOW + SWP_NOSIZE + SWP_NOMOVE );
 SetActiveWindow(Form1.Handle);
end;
0680デフォルトの名無しさんNGNG
TopMostして解除(藁
0681デフォルトの名無しさんNGNG
帰れ。
0682デフォルトの名無しさんNGNG
>>665はサンタさん?
0683て。 ◆qnISHi2Po. NGNG
>>680
あ できた ありがと

と思ったら一番前にいるのにアクティブにならん タイトルバーがグレイだ Why!?
SetActiveWindow(Form1.Handle); ってしても
Form1.Activate; ってしてもだめだ    どちて?
0684デフォルトの名無しさんNGNG
http://www.microsoft.com/JAPAN/developer/library/jpuipf/_win32_allowsetforegroundwindow.htm
0685て。 ◆qnISHi2Po. NGNG
>>684
できた 激しく感謝
0686デフォルトの名無しさんNGNG
コードくれくれ
0687て。 ◆qnISHi2Po. NGNG
>>686
 function AllowSetForegroundWindow(dwProcessId: DWORD): BOOL ; stdcall; external 'user32.dll' name 'AllowSetForegroundWindow'; stdcall;
↑をどっか見えるとこに書いて


{ 最小化から復活したとき }
procedure TForm1.appRestore(Sender: TObject);
var
 PID : DWORD;
begin
 Shell_NotifyIcon(NIM_DELETE, @FIconData);
 SetWindowPos(Form1.Handle, HWND_TOPMOST, 0,0,0,0,SWP_NOSIZE + SWP_NOMOVE + SWP_SHOWWINDOW);
 SetWindowPos(Form1.Handle, HWND_NOTOPMOST, 0,0,0,0,SWP_NOSIZE + SWP_NOMOVE + SWP_SHOWWINDOW);
 GetWindowThreadProcessId(Application.Handle, @PID);
 AllowSetForegroundWindow(PID);
 SetForegroundWindow(Application.Handle);
end;

とやったらできたよ
0688デフォルトの名無しさんNGNG
Httpのステータスコードってな〜に〜?
0689デフォルトの名無しさんNGNG
Q D6パーソナルにアクションマネージャーは?
A ありません
↑これって、字数の関係で>>1に書けなかったのかもしれないけど
>>1に書くべきでは…
最近は無いか…。この質問。
0690デフォルトの名無しさんNGNG
WikiのFAQにリンクすればいいんでしょ
0691デフォルトの名無しさんNGNG
>>688
200 とか 404 とかだろ
0692デフォルトの名無しさんNGNG
>>688
403 とか 501 とかだよ
0693668NGNG
自己解決出来ましたので一応ご報告。
コンボボックスを開くときにitemindexの値を変数に取得しておき、
OnCloseUpイベントでitemindexに変化があったかどうかを比較
することで変化の有無に応じて動作を変えることに成功しました。(^^;
0694デフォルトの名無しさんNGNG
>>677
あの内容でわかったのか?
0695688NGNG
レス番号だと思った。 そして、別スレッドで接続させたいのかと思った。
TWebBrowserってIEコンポーネントをつかうのれすね。
最初の HTTP/1.0 302 Found が欲しいと。
0696デフォルトの名無しさんNGNG
TTreeViewのノードをクラスで管理したいと思い
下のようなサンプルプログラムを書いてみたのですが
これだとTreeviewのノードをクリックしたときにエラーが出てしまいます。。
よろしかったら良い方法を教えて頂けないでしょうか?


type
TForm1 = class(TForm)
TreeView1: TTreeView;
Edit1: TEdit;
Memo1: TMemo;
Button1: TButton;
Memo2: TMemo;
procedure Button1Click(Sender: TObject);
procedure TreeView1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
end;

TTreeItem = class
private
FTitle: String;
FData: String;
procedure SetData(const Value: String);
procedure SetTitle(const Value: String);
public
property Title: String read FTitle write SetTitle;
property Data: String read FData write SetData;
end;
0697696の続きNGNG
procedure TForm1.Button1Click(Sender: TObject);
var
NewItem: TTreeItem;
begin
NewItem := TTreeItem.Create;
try
NewItem.Title := Edit1.Text;
NewItem.Data := Memo1.Text;
TreeView1.Items.AddObject(nil, NewItem.Title, @NewItem);
finally
NewItem.Free;
end;
end;
procedure TForm1.TreeView1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
Node: TTreeNode;
begin
Node := TreeView1.GetNodeAt(X, Y);
if Node = nil then Exit;
Memo2.Lines.Add(TTreeItem(Node.Data).Data);
end;
0698697の続きNGNG
{ TTreeItem }
procedure TTreeItem.SetData(const Value: String);
begin
FData := Value;
end;

procedure TTreeItem.SetTitle(const Value: String);
begin
FTitle := Value;
end;
0699デフォルトの名無しさんNGNG
NewItem.Free;

してしまったものに

Memo2.Lines.Add(TTreeItem(Node.Data).Data);


でアクセスするからでしょ

Node.Data に格納されるのは参照だけ。本体を free しちゃだめでしょ
0700デフォルトの名無しさんNGNG
TTreeItem(Node.Data)が危険なような。
Assigned(Node.Data) and (TObject(Node.Data) is TTreeItem)もチェックしたら。
0701696NGNG
>>699
>>700
参照だけなんすね。。ありがとうございます。
FreeをForm1のDestroy時に持っていって
MouseDownイベントを以下のようにしたのですが
EAccesViotationのエラーが出てしまいます。。

procedure TForm1.TreeView1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
Node: TTreeNode;
begin
Node := TreeView1.GetNodeAt(X, Y);
if Node = nil then Exit;
if Assigned(Node.Data) and (TObject(Node.Data) is TTreeItem) then
Memo2.Lines.Add(TTreeItem(Node.Data).Data);
end;
0702デフォルトの名無しさんNGNG
ふーむ、あとあやしいのは

TreeView1.Items.AddObject(nil, NewItem.Title, @NewItem);

で、@NewItem じゃなくて pointer(NewItem) じゃないかと思ふ
0703696NGNG
>>702
あ、うまくいきました。
pointerにキャストと@ 演算子は違うものが
入るんですね。。中身を調べてみたら違ってました。
そこら辺また勉強しなおします。
>>702さんみなさんありがとうございました。
0704696NGNG
恥ずかしながらもう一つ質問です。。
>>701に
>FreeをForm1のDestroy時に持っていって
と書いたものの、Form1のDestroy時は
procedure TForm1.FormDestroy(Sender: TObject);
var
i: Integer;
begin
for i := TreeView1.Items.Count -1 downto 0 do
TreeView1.Items[i].Delete;
end;
のようにノードを解放すれば
NewItem := TTreeItem.Create;
で得たメモリは解放されるのでしょうか?
0705デフォルトの名無しさんNGNG
>のようにノードを解放すれば
>NewItem := TTreeItem.Create;
>で得たメモリは解放されるのでしょうか?

開放されない。ノードを削除する前に
TTreeItem(Node.Data).Free を実行しないとダメ。
だって、TTreeNode.Data は Pointer であって、それに
何を格納しているか、TreeNode 自身は知らないわけですし。
0706デフォルトの名無しさんNGNG
>TTreeItem(Node.Data).Free を実行しないとダメ。

実際の >>704 のコードでは、

TreeView1.Items[i].Delete;

の前に

TTreeItem(TreeView1.Items[i].Data).Free;

を実行します。
0707デフォルトの名無しさんNGNG
706です。
あぁ、レベルの違いがあって削除するのはめんどくさいね。

TreeViewの各ノードのDataにAddするときに、別にリストとして保持しておけばいいよ。
TListを使えば純粋にリストとして保持できるし、TObjectListを使えば自動的に
メモリを解放することもできる。
0708696NGNG
>>705>>706>>707
なるほど、そういった方法もあるんですね。
TObjectListを使ってもう一回書いてみます。
ありがとございます!
0709ねこまNGNG
OnDeletion
0710デフォルトの名無しさんNGNG
Form1とForm2と作成。
Form1がメインフォームね。
Form1とForm2と両方とも開いている状態で
タイマーでも通信でも何でも良いんだけど、
非ビジュアルな(?)方法でForm1からForm2.Closeするようにコーディング。
普通に動かすとForm2.CloseでちゃんとForm2が閉じるんだけど、
アプリケーションを最小化した状態でForm2.Closeするとなんかおかしい。
タスクバーのアプリケーションをクリックして
最小化を解除すると、Form2が残りっぱなしになってる。
しかも、この生き残りのForm2は×ボタンをクリックしても閉じない。

Form2.Hideでも同様の現象でした。
デバッガーで除いてみるとHide後、Form2.VisibleはFalseになってる。
にもかかわらず、画面上にForm2はちゃんと表示されている。
Delphi(というかWindows)ってこういうもんなの?

ガイシュツだったらスマソ。
0711デフォルトの名無しさんNGNG
>>710
ありがとう。最小化した状態で勝手にクローズはしないと思うけど、覚えておくよ
0712デフォルトの名無しさんNGNG
>>710
激しくガイシュツ。VCL読んでみれ。

あ、あと、Windows固有の現象ではないぜよ。
Kylix2でも再現できるはずだす。
0713デフォルトの名無しさんNGNG
TCoolBarにTToolBarを何個か置くソフトを作っているのですが
TToolBarをD&Dして移動させた後の状態を保存するにはどうすれば
良いのでしょうか?
TToolBarのTop,LeftをINIファイルで保存、読み込みなどはしてみたのですか
うまくいかないです。。
0714 NGNG
プラウザのボタンや、テキストボックスに文字を入力したりって、
Delphiでプログラムは可能ですか?。

例えば、http://www.google.com/のテキストボックスに
検索したいキーワード(ActiveX DOM取得など)を入力して
ボタンを押すまでの処理を自動化させるには、どうすれば良いでしょうか。

0715デフォルトの名無しさんNGNG
>>714
マルチすんな。クソボケ。
0716714ですNGNG
解決しました。
0717マルチ用レスNGNG
>>714
>プラウザのボタンや、テキストボックスに文字を入力したりって、
>Delphiでプログラムは可能ですか?。
可能かもネ。

>例えば、http://www.google.com/のテキストボックスに
>検索したいキーワード(ActiveX DOM取得など)を入力して
>ボタンを押すまでの処理を自動化させるには、どうすれば良いでしょうか。
努力すればいいです。
0718デフォルトの名無しさんNGNG
>>710
なんで? Close内でReleaseが呼ばれてちゃんと開放されるんじゃないの?
0719デフォルトの名無しさんNGNG
>>718

ん?CloseとReleaseは関係ないのでは?
0720718NGNG
ゴメーン。 caHide になってた。
0721デフォルトの名無しさんNGNG
for i:=0 to hoge do begin
 temp := fuga[i]; ・・・・・

を記述したとき、もし何らかの原因で hoge に負の値が入ってしまった場合、
動作は予測できるものなのでしょうか?

実は、アクセス違反が不定な位置で出現するようになってしまい、一番
疑わしいのがコレなのです。IDEから実行しても何もエラーを吐かなかったので
疑いもしなかったのですが、環境を変えるとピョコピョコ出るんです・・・。
0722デフォルトの名無しさんNGNG
>>721

負なら実行されないはず、どうしても不安ならこうしちゃうとか..w

if hoge >= 0 then
 begin
  for i:=0 to hoge do
   begin
    temp := fuga[i]; ・・・・・
   end;
 end;

これでワナを張っとくと解りやすい鴨。
if hoge < 0 then begin showmessage('hogeが負になってるゾ') end;
0723デフォルトの名無しさんNGNG
>>722
たしかに、最初から 0 to -1 とかにするとコンパイル時にループが削除されますね。
動的に-1を入れても実行されませんでした。ということは、他の部分なんですね・・・。

疑わしい場所ぜんぶに try except を張って、どこで例外が
発生してるかを見るしかないようです。ショボン
(このとき、Delphiの例外か、OSの例外かというのは関係ないのでしょうか?)
0724デフォルトの名無しさんNGNG
>>723
アクセス違反が不定な位置で出るのは、その出た位置ではなく

1、配列境界を越えたりして、スタック等別の領域への爆弾を落とした後
2、解放してしまったオブジェクトにアクセスしてしまった誤爆

とかで、爆弾を落としたり、誤爆を探さないといけませんよ。

だから、例外で捕捉してもみつからない事が多いです
0725デフォルトの名無しさんNGNG
>>724
Σ(・ω・ノ)ノ す、すみません、一度で理解できませんでした・・・。

AccessViolationは、1) 割り当てられていない領域に手を出したとき、
2) あると思ったものが無かったとき、に発生という認識だったのですが、
これが不定に起こるということは・・・自分が確保したメモリ外の領域に書いてしまい、
それが消えてしまった → アクセスしたら何もない、ということ等でしょうか。
こればかりは簡単に検出できないか・・・。

(例外で落ちるとNTがログを吐きますが、これを見てもクラッシュした近辺は
わかっても誤爆した位置はわからないんですよね・・・。)
0726デフォルトの名無しさんNGNG
ログから判る事もあるけど、不定に起こるような場合、そこから調べるよりは
 配列の境界違反あたりから調べてゆく方がいいです。

とりあえず{$R+}から
0727デフォルトの名無しさんNGNG
ありがとうございます。怪しいと思われる場所で試してみます。
(境界違反が毎回発生してくれてれば有り難いのですが・・・。)
0728デフォルトの名無しさんloNGNG
ウィンドウのリサイズを禁止するにはどうすればいいんですか?
初歩的な質問ですみません。
0729デフォルトの名無しさんNGNG
BorderStyle の事? D6/D7なら Constraints で固定しても変更は出来ないけど 
0730デフォルトの名無しさんNGNG
Delphi7でコンパイルしたプログラムがWin98やWinMEだと
正常にプログラムが起動しないらしいのですが、
Win2000やXPだとちゃんと動きます、
当方には既にWin98/MEの環境が無いので検証できないのですが、
このバグ?をメールで知らせてくれた人に協力してもらって
ソース部分を全て削除してEdit,ComboBox,ListBox,TImageが
フォームに張り付いただけのハリボテを作成して、
それでテストしてもらいましたが、
やはり フォームが表示される前にプログラムが落ちるとの事です。
同じプログラム(ハリボテの方)をDelphi5で
コンパイルしたモノはちゃんと起動するみたいなのですが・・・・。

Delphi7でコンパイルしたプログラムはWin98やMEでは動かない
ものなのでしょうか??
0731デフォルトの名無しさんloNGNG
>>729
ありがとうございました!
0732デフォルトの名無しさんNGNG
>>730
そういう時は例えば
http://preview.connectix.com/trial/jp/
こんなの入れて Win98をインストールしたら?
0733お茶はいかがNGNG
文化オリエントのLEADTOOL10をDelphi6pro(アップデート2済み) + Win2000SP2
+ IE6SP2 の環境でLEAD Main Control をActiveX登録したところ、コンポーネン
トパレットには登録されているのにフォームに貼り付けようとすると「vcl60.bpl
のアドレスxxxxxで読み込み違反が起きた...」というエラーが表示され貼り付け
が失敗します。更にもう一度、同じ手順を踏むと、「フィールドメソッド名LEAD1
は既に定義済みです」とエラー表示します。ちなみに、アクロバットリーダーの
ActiveXコントロール等は同じ登録方法ですが問題ありません。OS初期化や
再Delphiインストールもやってみました。VB6SP5では問題無く使用できます。
どなたか解決法をご存知の方いらっしゃればご教授くださいませんか?

0734デフォルトの名無しさんNGNG
ども。
モナーの *やさしい* Delphi質問スレ Ver.9が落ちちゃいましたね。
で、質問が…

IMEの再変換がしたいんですが、いろいろ調べた結果、「MSIME.TLB」がいるようです。
環境がWinXP,OfficeXP,IME2002なので入ってないんですよ、これが。
どこからか手に入れられますかね???
もし違法でもよければアップしてもらうとか(w

よろしくお願いします(MSIME.TLBだけあってもできなかったら悲しい...)
0735デフォルトの名無しさんNGNG
その TLB は VB専用では?
詳しい情報は
http://www.users.gr.jp/ml/archive/delphi/55123.asp
0736デフォルトの名無しさんNGNG
>>735
回答ども。

うーん、VB専用なんですか。
でも、使用しているエディタコンポーネント、TSonEditってやつがMSIME.TLBがあれば
再変換が簡単に実装できるようになってるんです。
でもないことには始まらない…
0737IP記録実験NGNG
IP記録実験
http://qb.2ch.net/test/read.cgi/accuse/1042013605/

1 名前:ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日:03/01/08 17:13 ID:???
そんなわけで、qbサーバでIPの記録実験をはじめましたー。

27 名前:心得をよく読みましょう 投稿日:03/01/08 17:20 ID:yL/kYdMc
SETTING.TXT管轄でないということは全鯖導入を視野に、か?

38 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:22 ID:rLfxQ17l
>>27
鋭いです。

73 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:27 ID:rLfxQ17l
>ところで、IPが抜かれて何か今までと変わることってあるのでしょうか?
・今までより、サーバが重くなる。
・裁判所や警察からの照会があった場合にはIPを提出することがある。
0738725NGNG
>>724 >>726
いま怪しい部分に {$R+} を適用して実験しています。

ですが、かなりの時間動かしても、特に範囲エラー例外などは出てきません。
コレのバイナリを、デバッガのない環境に持っていってもチェックできるのでしょうか?
でしたら、"なぜか例外が出るマシン"の持ち主に送ってみて、ERangeErrorが出るか確認しようと思うのですが・・・。
0739デフォルトの名無しさんNGNG
>>738
それなら配列範囲外ではないのでは?
・ポインタを使っていませんか?
・型変換を使っていませんか?
・スレッドを使っていませんか?
0740デフォルトの名無しさんNGNG
>>730
俺はWIN98SEにDelphi7インストールして開発してるし正常動作してる。
「メールで知らせてくれた人」の環境が腐ってる可能性もあるぞ。
あるいはCLXで作ってるとか。
0741725NGNG
やはり範囲外アクセスではないようです(;´Д`)ナニモ デナイ

>>739
ポインタは使ってません。アタマがついてってないので・・・。
型変換は、数値表示用に IntToStr等が点在しています。
スレッドは意図して使ってはいませんが、別スレッドで動くVCL(というかタイマー)があります。
0742デフォルトの名無しさんNGNG
大麻ってTTimerか?それともマルチメディアタイマか?
後者ならあぼーん。
0743デフォルトの名無しさんNGNG
> スレッドで動くVCL(というかタイマー)があります。
その辺、もっと詳しく。
VCL標準のTTimerは今のところスレッドではない。
VCLが単なるコンポーネントをさしていて、タイマーがマルチメディアタイマーのことなら、
それはマルチスレッドになっているので、注意しなくてはならない。
0744デフォルトの名無しさんNGNG
すまぬ。「スレッド」を「別スレッド」に読み替えてくれ
0745デフォルトの名無しさんNGNG
>>730
D7が出た頃に誰か似たようなことを書いてたよ、
うろ覚えなんで正しくないかもしれんが
コンボかリストか忘れたけどリスト内に文字なし("")があると
落ちるとか落ちないとか.(Win95の話だったかも)
0746725NGNG
>>742-743
あ、使っているのはMMTimerです。(TTimerは精度が悪かったので)

別スレッドで動くとは聞いていまして、一応オブジェクトへのアクセスはMMTimer.OnTimer内から
だけ行うものとそれ以外で分け、ぶつからないように気を付けてはいるのですが・・・。
(あっ、何カ所かOnTimer内でWriteしてそれ以外でReadするのがあったような・・・)
0747デフォルトの名無しさんNGNG
祈念かきーこ

>>ヒロユキタン

いつまでやるですか?
0748デフォルトの名無しさんNGNG
Del7をインストールしてみた。Del5からの移行なんだけど、どうも慣れない。

一番気になるのが、エディタの文字の横の文字間隔がなんだか広くなってること。
フォントのサイズ変えても縦に小さくなっても横幅は変わらず。

これはどっかで変更できるんでしょか?
0749デフォルトの名無しさんNGNG
>>374
ZBsKvw39 みたいな厚顔無恥さも必要だね
0750デフォルトの名無しさんNGNG
D6Personalでメモ帳トラッパー2.33改のソースを改造してビルドしたんだけど、
状況依存型のヘルプがポップアップじゃなくてヘルプのウィンドウの中にできてしまう。
こんなはずじゃなかったんだけど。
0751デフォルトの名無しさんNGNG
>>748
Boldになってんじゃねーの?
0752748NGNG
>751
それはないっす。

実際比べてみれば一目瞭然。右マージンの位置が全然違うから。
それともうちだけ?
0753ななしへたぐらま ◆XcB18Bks.Y NGNG
>>748
Del7は未体験ですがDel6からBoldにしなくても
文字間隔が広いままのようですね.

私の場合は広くなること自体よりも
それによって文字間隔が空くために格好悪いのが気になりました.

『MS ゴシック』や『MS 明朝』ではそれほど気にならなかったのですが
手持ちのヒラギノやダイナフォントだと間延びして気持ち悪かったです.
買うかどうかわからないけどガリでは改善してほしいです.

最近使っている『Osaka - 等幅』(12または9ポイント)は
Del6で試していませんがDel5で予約語だけBoldにして
間延びチェックをした限りでは比較的気になりませんでした.
0754デフォルトの名無しさんNGNG
>買うかどうかわからないけどガリでは改善してほしいです.
ここに書いても意味無いと思うが?
0755デフォルトの名無しさんNGNG
うーん、Del6からだったのね・・・

あのスカスカ感がかなり気持ち悪いけど、しょうがないのか・・・。
ついでに言えばメインメニューのスカスカ感も同時に気になる。

実際の機能や操作には全く関係の無い趣味的な問題だけに
どうしようもないなー
0756デフォルトの名無しさんNGNG
老舗の TurboPower が解散し、Jedi も活動停止。
2003 年は年明けから暗い話ばかりだ...
0757デフォルトの名無しさんNGNG
馬鹿yahooがニュースにしたりするから、
何も知らんような奴が流れ込んで来る
あとZDnetも何かにつけて2chネタばっかり書きすぎ
0758748NGNG
すんません、解決しました。>751のいうとおりでした。

HTMLタグのみBoldになってました。一つでもBoldがあると
全部影響受けるんだね・・・
0759デフォルトの名無しさんNGNG
TToolBarにTBevelやFlatなSpeedButtonを置くと勝手にセパレータの表示に
なっちゃうのはどうすればよろしいでしょか?
0760デフォルトの名無しさんNGNG
でっかいパネル置いてその中でやりくりしれ
0761デフォルトの名無しさんNGNG
>>148
グッジョブ
0762デフォルトの名無しさんNGNG
最近いろんな板のいろんなスレで、わけわかんない番号に
意味不明のレスをつけてるやつがいるんだけど、何?
どっかとまざってんのか?
0763デフォルトの名無しさんNGNG
IP取ってる板

>>148 + >>15(>>150)
0764デフォルトの名無しさんNGNG
>>762
IP記録に反対する荒らしだと思われ。
0765デフォルトの名無しさんNGNG
>>762
既知外がいるんだよ...

http://pc3.2ch.net/test/read.cgi/tech/1029122103/n226-229
ということらしい。
0766デフォルトの名無しさんNGNG
なんか、復活した。

ハングル。
0767ななしへたぐらま ◆XcB18Bks.Y NGNG
>>758
ということはエディタの文字間隔がBoldなしでも大きくなってしまうのは
Del6だけということなのでしょうか.
(それとも私の見間違えだったのでしょうか…)
0768デフォルトの名無しさんNGNG
サンクス

今後は書き込みは無いものとして脳内補完しまつ
0769デフォルトの名無しさんNGNG
>767

どうでしょ?
とりあえず、普段つかわないような項目が実はこっそりBoldになってないか
調べてみたらいいかも
0770デフォルトの名無しさんNGNG
とにかく2ちゃんは人が減るのを一番恐れている。
0771デフォルトの名無しさんNGNG
>>916
YAHOOってめんどくさくない?
0772デフォルトの名無しさんNGNG
弱虫と優しさの協奏曲。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。





















ガンバレオマエラ
0773デフォルトの名無しさんNGNG
TPicture を使えばいいのに……
0774デフォルトの名無しさんNGNG
うさたん ★ひさしぶりにみたの
はあはあなの
0775デフォルトの名無しさんNGNG
>>767
Del2からDel6まで使ってるけど、特に文字間隔に関しては変更なかったと思うよ。
0776デフォルトの名無しさんNGNG
217 名前:ひろゆき ◆3SHRUNYAXA [] 投稿日:03/01/08 17:49 ID:rLfxQ17l
   一定期間でログは消しますです。

249 名前:ひろゆき ◆3SHRUNYAXA [] 投稿日:03/01/08 17:52 ID:rLfxQ17l
   >荒らしとか犯罪のためなの?
   そす。

246 名前:心得をよく読みましょう[] 投稿日:03/01/08 17:52 ID:BH998yxV
   >ひろゆき
   俺のお気に入りのスレとか荒されてるんだがそういうのにも有効?

257 名前:ひろゆき ◆3SHRUNYAXA [] 投稿日:03/01/08 17:53 ID:rLfxQ17l
   
   いずれは。
0777デフォルトの名無しさんNGNG
「アドレスFFFFFFFFに対する読み込み違反」とかいうエラーには、なにか
特別な意味があるのでしょうか?通常では使わないですよね、そんなトコロ・・・。
0778デフォルトの名無しさんNGNG
-1が入っているメモリを、間違えてアドレスと解釈して使ってしまった場合とか?
0779デフォルトの名無しさんNGNG
>>389さん
(笑)
0780デフォルトの名無しさんNGNG
>>720
一般人はどうやってみるんだ?
掲示板といえるのか。
0781デフォルトの名無しさんNGNG
匿名じゃなくなったら2ちゃんねるはただの掲示板じゃないの?
魅力がなくなる ->> 閉鎖
ってことにならなければよいが
0782デフォルトの名無しさんNGNG
勉強。
0783デフォルトの名無しさんNGNG
なんか、取り込中みたいだけど、ちょっと
くだらない質問するけど、いい?

Delphi 6/7 で使える DirectX のヘッダファイルって
どんなのがある? できれば DirectX8あたりの。
DirectSoundが使えるだけでいいんだけどね。
0784デルファイの名無しさんNGNG
>>783
DelphiX付属のでも構わないけれど、JEDIのが一番いいと思う。
DirectX8まで揃ってて、DirectX9は翻訳中らしい。
0785デフォルトの名無しさんNGNG
>>784
Jedi は解散しました
0786783NGNG
どもです。

Delphi-Jediに行こうと思ってたんだけど、
サイトに行けなかった。解散してたのか。

で、結局ロシアのサイトを見つけて、
DirectX9をDL中(贅沢いえないけど、
めちゃ遅い...)。
0787デルファイの名無しさんNGNG
>>785
活動停止じゃなく解散!?
…と思ってサイトへ行ってみたら、消えてる…。

こっちはまだ活動中かな?
http://clootie.narod.ru/delphi/index.html#D3D_SDKs
0788ねこまNGNG
サーバのハードディスククラッシュで delphi-jedi.org に繋がらないだけみたいです.
http://projectjedi.sourceforge.net/
0789デフォルトの名無しさんNGNG
えっと、無知で突っ込みを入れられるのを覚悟で。。

IPの記録が抑止にもなるなら、削除系の板のリモホ表示をやめて
みるのはどうでしょう。
依頼者のホストを削除板以外の板に晒されることもないでしょうし。
0790デフォルトの名無しさんNGNG
<丶`∀´><ウェーハッハッハッハッ

0791デフォルトの名無しさんNGNG
>>741あたりで、例外が捕まらないと喚いていた者です。
NT系では発生せず、9X系だと発生するために、環境を変えてデバッグしてみました。

リアルタイムで数値を表示させたくて、MMTimerの中で数値を型変換してLabelを書き換え
ていたのですが、多分コレではないかと・・・。処理が重くなると(間に合わなくなると?)
無効なポインタ操作が発生していました。

もしかして基本だったですか(;´Д`) 以降、無茶はやめます( ´・ω・`)
むぅ、計算は精度がいるのでMMTimer、表示は普通のTTimerで併用しようかな・・・。
0792デフォルトの名無しさんNGNG
======2==C==H======================================================

         2ちゃんねるのお勧めな話題と
     ネットでの面白い出来事を配送したいと思ってます。。。

===============================読者数: 139038人 発行日:2003/1/10

なにやら、連日メルマガだしてるひろゆきです。

そんなわけで、ログ記録実験ですが、いちいちサーバ指定するのが面倒なので、
全部のサーバに入れてみました。

重くなって落ちたりしてもご愛嬌ってことで。。。

んじゃ!

────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50
────────────────────────────
0793デフォルトの名無しさんNGNG
>>791
MMTimerは別スレッドだよね。
Label書き換え時にちゃんとsyncronizeしてる?
0794TECHNGNG
>>791
 たぶんソレですね。

MMTimerではVCLを直接呼んではいけません。
計算は精度が必要というのは、サンプリング精度ですか?

なお、現在この板は別板の内容をコピペされる荒し中なので
お名欄欄に、何か デフォルトの名無しさん 以外の名前を
入れて頂くと、区別し易くてよいです
0795デフォルトの名無しさんNGNG
>>786
jedi本体は死んでるが、DirectXヘッダ配布してるとこは生きてる。
ttp://www.crazyentertainment.net/
0796791NGNG
>>793
同期はしてませんでした。MMTimer以外から触ってないからいいやと思いまして・・・。

>>794
直接呼んではいけないんですか!これは初めて知りました。
以降、分離させるようにします。アドバイス感謝・・・。・゚・(ノД`)・゚・。
(精度ですが、サンプリングですね。秒間数十回行っています)
0797DelちぅNGNG
別スレッドからVCLにアクセスするにはとにかくsyncronizeしなきゃダメってことで。
0798デフォルトの名無しさんNGNG
ついに全板か

( ´,_ゝ`)プッ
0799TECHNGNG
syncronize の中身は単に Windowsのメッセージ機構を使って
SendMessageして処理させてるだけなので

それなら MMTimer内から PostMessage してラベルを非同期に
描画させた方が軽くなっていいかもしれません。
0800デフォルトの名無しさんNGNG
いままでスクリプト厨で、プログラミングははじめてなんですが、
InifileからreadStringしても2047文字目以降がどうしても読み込めないんですが
何かよい知恵ありますでしょうか。

やってることは

[mojii]
nakami="ごにょごにょと2047文字以上書いてる..."

とinifileに書いてあったとして、
str := IniFile.ReadString('moji' , 'nakami' , '');

と書いてます。strはString型です。
ちなみに2047文字までは普通に読めています。

なんかアドヴァイスおながいします。
0801デフォルトの名無しさんNGNG
うん
0802TECHNGNG
>>800
VCLコンポの ReadString の制限みたいですね

GetPrivateProfileString で直接読んでみては?
http://www.google.co.jp/search?q=GetPrivateProfileString+delphi&lr=lang_ja
0803デフォルトの名無しさんNGNG
IniFileクラスやめて、自分でファイル入出力する。
Windowsのiniファイルは制限あったり、キャッシュされたり、くせが多すぎ。
まじれす。
0804デフォルトの名無しさんNGNG
>>それなら MMTimer内から PostMessage してラベルを非同期に

MMTimer使う意味がなくなるでしょ。すなおに Sychronize をつかったほうが
いくぶんまし。
0805TECHNGNG
>>804
ああ、言ってる意味は、MMTimerで測定はする。 結果はFIFOか配列に記録だけする
それとは別に表示が必要なら その
必要な項目が出来た時に、PostMessage を投げて表示させるという事です。

単に表示を定期的に更新するなら、MMTimerとは別にTTimer使えばいい
0806TECHNGNG
どうして MMTimerで Sychronize 使わない方がいいかというと、
メインスレッドが重い処理をしている場合、Sychronize だと結果が返ってくるのが非常に遅れます。
その間に次のMMTimerの時間が来た場合、
 1、多重割り込みになる
 2、次のMMTimerが遅延される
のどちらかとなるわけで、どちらも好ましくない結果となります
0807デフォルトの名無しさんNGNG
Sychronize は即座に処理させるのじゃなく
メインスレッドを メッセージループの個所まで動かして
それから処理して返ってくる。 
0808800NGNG
さっそくの返答ありがとうございます。

>>802,803
やっぱり何かの制限に引っかかってましたか。
僕の探し方が悪いのか、ここらへんヘルプでも見つからなかったんで
途方にくれていました。
「delphi readstring 文字数」とかでググっても見つからなかったし…

直接ファイルの読み書きも考えていたんですが、具体的にINIファイルの
形式でできるようにする方法もまだ思い浮かぶレベルではなく、
いい方法教えていただいてありがとうございました。
0809デフォルトの名無しさんNGNG
さよなら2ちゃんねる
0810デフォルトの名無しさんNGNG
>>808
Delphiの良い所は、Pro版だと、vclのソースが付いてる。
メソッドの中のソースを読んでも良いし、デバッガで中に入っても良いし。

えー、クラスライブラリのコード読むのー?とか思うかもしれんが、
SDKなんかのサンプルコードが、クラスのメソッドやプロパティとして、
綺麗にまとめれられてる感じ。
実際の動作をDelでポトペタして、中身のソースコードを追いかける、これ最強。
後、メソッドのオーバーライドするには、クラスライブラリののソース読んどくのが間違い無いし。
0811デフォルトの名無しさんNGNG
ついでに書いとくと、VCLの中身に入っていくと、
最後、Win32APIコールまで辿り着ける。ので、原因不明なんてことはまずない。
このへんもコンパイラ言語Delマンセー。
0812デフォルトの名無しさんNGNG
Delphiとjavaはどう違うの?
日曜プログラムにはどちらが向きますか?
0813デフォルトの名無しさんNGNG
Windows限定ならDelphi最強だろ。
フリーウェアやシェアウェアもDel多いし。
0814デフォルトの名無しさんNGNG
>>813
Windows限定か。
ならjavaしかありませんな。

ありがとう。
0815デフォルトの名無しさんNGNG
http://qb.2ch.net/test/read.cgi/accuse/1042020193/

前スレ
http://news2.2ch.net/test/read.cgi/newsplus/1042017485/
0816791NGNG
>>806
ありがとうございます、非常に参考になりました。
表示専門のTTimerを置いて、VCLへはそこからアクセスするようにします。

別スレッドでも、MMTimer内で計算結果を書いて、TTimer内でそれを取り出して
Labelのcaptionに貼るだけの場合は、特に同期は考えなくていいですか?
0817TECHNGNG
>>816
同期は MMTimerの目的から考えて使わない方がいいです。

スレッドはCPU命令の間には割り込めませんから 1命令で書き込みが
済むような場合は同期の必要ありません。
 たとえば Integer/浮動小数点などは不要

構造体や文字列の場合は 、FIFO配列を用意しておいて、そこに書いた
後、更新番号を渡すような方式で処理すると良いでしょう
0818TECHNGNG
あっと、
MMTimerは別スレッドといっても、普通はその処理が終るまでメインスレッドに
切り替わったりはしないはずなので、 文字列作って渡しても大丈夫かもしれません。
というか、たぶん大丈夫です。
0819デフォルトの名無しさんNGNG
>普通はその処理が終るまでメインスレッドに
>切り替わったりはしないはずなので、 文字列作って渡しても大丈夫かもしれません。
>というか、たぶん大丈夫です。

嘘はいけません。
0820デフォルトの名無しさんNGNG
TListViewコンポーネントのReport表示で
アイテムの順番を入れ替えるにはどうしたらいいのでしょうか?
だれか教えてください。
0821デフォルトの名無しさんNGNG
delete&insert
0822820NGNG
>>821
できました。
ありがとうございました。
0823TECHNGNG
ああ、そうか文字列のサイズが変更されると問題が出るかも
0824TECHNGNG
いや違うか、

メインスレッドで その文字列を読んでる間に、MMTimer割り込みがかかった場合
 1、ポインタが書き換わる
    問題ない、古いポインタの情報は残ってる

 2、文字列が書き換わる
    2バイト文字が混じってると問題、
    数字なら一時的に混じって表示される=常に起きると問題

 3、サイズが書き換わる
    文字列が書き換わるのと同種の問題

だから、やっぱり FIFOとか配列をリング状に使って渡す方がいいな
まあ、文字列じゃなく、数値で渡せばめんどくさい事しなくてもいいから楽か
0825デフォルトの名無しさんNGNG
427 名前:心得をよく読みましょう 投稿日:03/01/10 20:34 ID:Pp49I/sC
いっそのこと辞めればいいのに
儲かってるのか? そこまで裁判までやって続ける
意図が理解できん

433 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/10 20:36 ID:jWxHxvti
IP記録してれば、荒らしの使ったホストも規制しやすかったりして。

ゲームすかねぇ。

477 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/10 20:46 ID:jWxHxvti
ログそのものをCDROM化したりDVD化したりして出版する話が
何度かでたことがありますが、
ログを出版してしまうと、全責任を出版者が負わなければいけないので、
潰れる気のある出版社ぐらいでないと出せないです。
0826ななしへたぐらま ◆XcB18Bks.Y NGNG
>>800 >802-803
Del4以降ならTIniFileの代わりにTMemIniFileを使うと良いかも.
TIniFileと違いWindowsのINIファイル処理APIを使わずに読み書きしていますが
こちらは2047バイトの制限はないようです.

0827デフォルトの名無しさんNGNG
288 :ひろゆき ◆3SHRUNYAXA :03/01/08 17:56 ID:rLfxQ17l
>厨房板は本当に閉鎖なのか?
初耳。
0828デフォルトの名無しさんNGNG
いいかげんうぜーなぁ・・・。
0829デフォルトの名無しさんNGNG
>>828
ちゃっちゃと削除依頼出すべし。俺はこいつらに嫌気が差して自作板を捨てた。
0830デフォルトの名無しさんNGNG
>800
TStringList.LoadFromFile/SaveToFileで別ファイルに保存。

.iniファイルにあまり大量のデータを保存するのはあまり好きではない。
0831デフォルトの名無しさんNGNG
それがTMemIniFileだろ
0832デフォルトの名無しさんNGNG
gg
0833デフォルトの名無しさんNGNG
ガンダム
0834デフォルトの名無しさんNGNG
一定精度以上で(少なくともTTimer以上)、しかも遅延を考慮して
Windowに描画とか、VCLの更新とかを行う場合、
MMTimerは事実上使えないということでよいですか?

解決策は結局、メインスレッドのOnIdleで自力で時間待ちですか?
0835デフォルトの名無しさんNGNG
はっはっは!よう、俺のねぐらどこ?
0836デフォルトの名無しさんNGNG


2ちゃん早く潰れろよ(藁
0837デフォルトの名無しさんNGNG
>>Windowに描画とか、VCLの更新とかを行う場合、
>>MMTimerは事実上使えないということでよいですか?

描画の更新とかスレッドセーフじゃないVCLの更新は本来メインスレッドで
おこなうものです。ウィンドウズのようなマルチスレッドでメッセージベースの
OSなら、このような機能を別スレッドにして正確に時間間隔をはかっても
あまり意義を見出せない。なぜ、MMTimer を使うほど精度が必要なのか、そっち
のほうが興味があるんだが。
0838デフォルトの名無しさんNGNG
2ちゃんねるは生まれ変わります
0839デフォルトの名無しさんNGNG
じゃぁどうやって書き込んだ人に連絡をとるんですかね?
0840デフォルトの名無しさんNGNG
gambleやったんだったらnews3をおまけに
やってくれるのが親切というものだと・・・。
0841デフォルトの名無しさんNGNG
サブスレッドでビットマップ描いてメインスレッドでBitBltすれ
0842TECHNGNG
>>834
名前欄に何か書いてくれないとイチイチ読まないといけないのでツライです

Windowに描画とかを 別スレッドや MMTimerでする意味があります?
MMTimerではデータのサンプリングや送受だけをして
描画とは切り離す設計にするのが普通だと思います


メインスレッドの OnIdleを使う方法はTTimer程度の精度しか得られません。
やはりMMTimerの方が正確です
0843デルファイの名無しさんNGNG
↑って、この名前は気付いて貰ってるのだろうか?(w

MMTimer使って、なおかつ手っ取り早い同期方法は、
適当なウィンドウ(Application.Handleとか)にSendMessageCallbackで
WM_GETTEXTLENGTHみたいなどうでもいいメッセージを送りつけて、
一緒に呼ばれるコールバック関数中で描画とかをすること。
0844TECHNGNG
>>843
なるほど、巧い手ですね。

 RegisterWindowMessage でメッセージID貰うと WinProcで自前でディスパッチ
 しなければいけなくなるし、
 空いてそうなID使っちゃうと 将来の Delphiのバージョンアップや 他のコンポと
 との組み合わせで問題出る可能性に怯えるわけで
0845TECHNGNG
それから、あんまり考えないで書いた事をチョット反省。

MMTimerはメインスレッドとは別スレッドだが TThredではないので
Synchronize メソッドは実際には呼べないです。
0846デフォルトの名無しさんNGNG
質問します。

メモリを確保するAPIってありますか?
0847TECHNGNG
>>846
Windows だよね? なら
http://www.google.co.jp/search?q=HeapCreate+GlobalAlloc+VirtualAlloc

ところで
Win32API 質問箱 Build8
http://pc3.2ch.net/test/read.cgi/tech/1040964626/
と誤爆?

0848山崎渉NGNG
(^^)
0849デフォルトの名無しさんNGNG
人を人と思わないコイツらの死に様は悲惨だろうな
0850HOGENGNG
ゲーム作ってるのもあってサポート用のツールで高い精度のタイマーがいるんですわ。

> メインスレッドの OnIdleを使う方法はTTimer程度の精度しか得られません。
実際に調べました?
そんなことはないです。

で、まあ、結局メインスレッドで一定精度を得るならOnIdleが楽かなと。
0851HOGENGNG
>>845
あー、そうですね。
どちらにせよ、そもそもMMTimerではSyncronizeが使えないので
同期を取る必要があるとつらいですね。
0852デフォルトの名無しさんNGNG
>>850
精度の意味が違うのでは?

他のプロセスが動いてる時の OnIdleと TTimerは精度が同じ。
プロセスがリソースを独占可能な時は OnIdle>TTimer
ただしTTimerも 分解能を合わせれば精度は同じ
0853デフォルトの名無しさんNGNG
>プロセスがリソースを独占可能な時は
ああ、そのことです。

そいや、TTimerの精度って上げられたっけ?
timeBeginPeriodでつか?
0854デフォルトの名無しさんNGNG
確か Windowsタイマーの分解能は整数値じゃないから、分解能を正しく合わせるのは無理なんじゃないかな
0855TECHNGNG
>>850
なるほど、そういう使い方なら OnIdleでやればいいのでしょう。
でもCPU占有率100%になりそうな勢いですね。

timeBeginPeriod は MMTimer の精度では?
0856デフォルトの名無しさんNGNG
PageControlで「全て閉じる」のようなことをやりたいのですが、こうやると
「リストのインデックスが範囲をこえています」とエラーが出ます。
どこが間違ってるのでしょうか?
var
i: integer;
ClosePage: TTabSheet;
begin
for i := 0 to PageControl.PageCount -1 do
begin
ClosePage := TTabSheet(PageControl.Pages[i]);
ClosePage.Free;
end;
end;
0857デフォルトの名無しさんNGNG
>>851
MUTEXとかセマフォとか。手はいくらでもある。
0858Delフサギコ ◆A6VzDeLphI NGNG
  ∧,,∧  誰もがはまる罠です。
 ミ,,゚Д゚彡   i=0で0番目のページを削除したとたん、
 ミつ[|lllll]).   もとの1番目が0番目に変わるので
〜ミ   ミ     次のループでi=1で削除すると
        元々の2番目のページが削除され…

こういうときは
for i:=PageCount-1 down to 0
で、ループまわして最後から削除っす。
0859デフォルトの名無しさんNGNG
>>856
例えば、最初に A B C D E の5つのページがあるとして……
Pages[0]を削除 → B C D E
Pages[1]を削除 → B D E
Pages[2]を削除 → B D
Pages[3]を削除 → もうそんなページねぇよウワァァァン
0860デフォルトの名無しさんNGNG
>>858
あー、だから半分まで閉じるとエラーになるんですね。
助かりました、さんくすです。
0861デフォルトの名無しさんNGNG
>>859さんもどうもです。
0862デフォルトの名無しさんNGNG
var
i: integer;
begin
for i := 0 to PageControl.PageCount -1 do
PageControl.Pages[0].free;
end;

これで(・∀・)イイ!!とおもわれ
0863デフォルトの名無しさんNGNG
>>862
融通きかなそうだな(w
0864デフォルトの名無しさんNGNG
どっちかと言えば↓が好きかな
while PageControl1.PageCount > 0 do PageControl1.Pages[0].Free
0865カイNGNG
おんなじだけど
with PageControl1 do while PageCount > 0 do Pages[0].Free
0866デフォルトの名無しさんNGNG
>>855
ゲームとかそういう類のは組んだことはないでつか?

> でもCPU占有率100%になりそうな勢いですね。
それは組み方によります。
FPS固定なら、余った分Sleep(Sleepは精度が悪いので工夫がいるが)するとか、
OnIdleを早く抜けて処理を返すとか。
FPS非固定なら100%でぶん回すこともあるでしょう。

>timeBeginPeriod は MMTimer の精度では?
ですよねえ。標準タイマーは精度劇悪だったはずなので。

>>857
なるほど。
0867TECHNGNG
>>866 じゃまとめましょう
□TTimerの分解能は 9x系列で1/30
  NT系列 2000/XP では1/100程度
  TTimerはメッセージを貰ってメインスレッドで実行される

□MMTimerの分解能は timeBeginPeriod で決まる
  MMTimerはメインスレッドとは別の特殊なスレッド。よって、
  VCLコンポを呼び出してはいけない。また、
  一般的にマルチメディア系のコールバック中で悪さするとOS
  を巻き込んでしまう場合が出易いので注意
  VCLをMMTimerをキッカケにして動かす場合は
    PostMessage/ SendMessageCallbackを使う
0868デフォルトの名無しさんNGNG
>>867
単位もまともに書けん奴が精度を語るか。
0869デフォルトの名無しさんNGNG
>>868
何の話?
0870デフォルトの名無しさんNGNG
>>869
「1/30」「1/100」ってなに?という話だと思う。
0871デフォルトの名無しさんNGNG
>>870
ああ、

TTimerの設定分解能は1ミリ秒だが 98系列ではその1/30の実分解能しかない

って事だろ。 
あそこに分解能が1/30秒と書けば正しくないし、まあもっと上手にまとめられる
というのなら、まとめてやれよ。
0872デフォルトの名無しさんNGNG
>>871
98系列はもっと良くなかったか?
0873デフォルトの名無しさんNGNG
>>872
PC9821タイマのこと?
0874デフォルトの名無しさんNGNG
perlでの
@a = split(/hoge/, $str);
みたいのをDelphiでやるにはどうしたらいいですか?
0875デフォルトの名無しさんNGNG
モナーの *やさしい* Delphi質問スレ
をまだ見てませんでした。見て分からなかったらまた来ます。すみません。
0876デフォルトの名無しさんNGNG
>>874
正規表現が使いたいという意味なら
ttp://homepage1.nifty.com/bmonkey/delphi/delphi.html
とかを使うといい

単に文字列で検索して分割したいという事なら
http://www.geocities.co.jp/SiliconValley-Oakland/8522/data/uSpliter.txt
を使って

TEdit 2つ TMemo1つを貼り付け
Edit1に 分割前の文字列 Edit2に分割キーワード

with TStringSpliter.Create(Edit1.Text) do try
while not isEOF do Memo1.Lines.Add(GetSplitStr(Edit2.Text));
finally free;end;

でメモに分割結果が出る
0877デフォルトの名無しさんNGNG
>>876見て出来るようになりました。ありがとうございました。
0878デフォルトの名無しさんNGNG
他のフォーム(Form2)からForm1上にあるListViewに
アイテムを追加しようと下のように書いたのですが
<<のところでEAccessViolationエラーが出てしまいます。
同じようなのをForm1に書くとうまくいくのですが…
他のフォームからだとダメなのでしょうか?
どなたか良い方法を知ってる方おられましたら
教えて頂けないでしょうか?

procedure TForm2.Button1Click(Sender: TObject);
var
ListItem : TListItem;
begin
ListItem := Form1.ListView1.Items.Add;  <<
ListItem.Caption := Button1.Caption;
ListItem.SubItems.Add(Button1.Caption);
end;
0879デルファイの名無しさんNGNG
>>878
まず、どこで例外が起きているのかを突き止めないと、なんとも。

//↓チェック用のコードを挿入してみるとか
Assert(Form1 <> nil);
Assert(Form1.ListView1 <> nil);
...

nil以外の値が入っていても、既に解放されている等して不正なポインタの場合が有り、
その時は中身を参照するとエラーになるので、そちらも注意。

勘で書けば、多分、TForm1をTForm1.Createで作成した時
Form1変数に代入してないとか、その辺とは思うけど。
0880デフォルトの名無しさんNGNG
>>878
Form1,Form2の関係を書いた方が。
0881878NGNG
>>879
>>880

>勘で書けば、多分、TForm1をTForm1.Createで作成した時
>Form1変数に代入してないとか、その辺とは思うけど。
873さん、これモロビンゴっす。。
var
Dlg: TForm1;

Dlg := TForm1.Create(Self);
てな感じでやってました。。
言われないと全く気づかなかったと思います。
ありがとうございました!
0882デフォルトの名無しさんNGNG
>>873
当然98x1のことだ。他にないだろ。
0883デフォルトの名無しさんNGNG
>>882
9801には高解像度タイマ付いてないが。
0884デフォルトの名無しさんNGNG
TImageで画像があるかどうかを取得したいのですが、どうすれば出来ますか?
0885デフォルトの名無しさんNGNG
>>884
試して無いけど、Pictureがnilかどうかで分からないかな?
0886デフォルトの名無しさんNGNG
TBitmapに、IsEmptyだか、プロパティねぇ?
クソレススマソ
0887デフォルトの名無しさんNGNG
ファイルに保存しないで、マイクからの入力データをLAN無いで
転送して別のPCのスピーカーから再生させたいのだが、
そもそもマイクからリアルタイムに音声が取り出せない、
なにか良い方法はありませんか?
0888デフォルトの名無しさんNGNG
DirectSoundCapture
0889デフォルトの名無しさんNGNG
>>888
ありがとう試してみます
0890ななしへたぐらま ◆XcB18Bks.Y NGNG
>>879
素朴な疑問ですがどうしてブレークポイントを使わないのでしょうか?

>>884
Image1: TImage; だとすると
Image1.Picture.Graphic = nil だと空みたい.

空にするときはImage1.Picture := nil;
または Image1.Picture.Assign(nil); なのでややこしいですが.
0891デフォルトの名無しさんNGNG
>>890
>空にするときはImage1.Picture := nil;

メモリリークしない?
0892デフォルトの名無しさんNGNG
絶対にしない
0893デフォルトの名無しさんNGNG
>>892
write用のメソッド定義されてるの?
0894デフォルトの名無しさんNGNG
>>893
ソース見ろよ
0895ななしへたぐらま ◆XcB18Bks.Y NGNG
>>891-893
今は載っているかわかりませんが初期のDelphiの説明書には
nilを代入してグラフィックを空にする説明が載っていたと記憶しています.
私は気持ち悪いので(笑)Assignを使っていましたが.

>>893
その通りです.内部でTPictureのAssignメソッドを呼び出しています.
そのメソッドは引数がnilの時に内部のGraphicを解放してnilを代入し,
イベントハンドラがあればそれを呼び出しています.

>>894
ライブラリのソースはプロ版以上でないと見られませんからね.
逆にプロ版以上の方は私の説明よりソースを見るのが吉かと思います.
プロパティ宣言のread/writeが何を意味するか理解していれば
十分理解できるコードではないかと思います.
0896デフォルトの名無しさんNGNG
>>895
勉強になりました。どもです。

>>894
Del6 PersonalとDel3.1 Standerdしか持ってないんで。スマソ。
0897675NGNG
ヨーダは緑色さ!
0898デフォルトの名無しさんNGNG
そのヨーダな
0899デフォルトの名無しさんNGNG
>>898
100点!
0900デフォルトの名無しさんNGNG
D7にて、TCustomComboBoxから独自のコンボボックスコンポを作ろうとしているのですが、
設計時にオブジェクトインスペクタのプロパティに

| Items | (TStrings) […] | という欄があって [・・・]ボタンを押すと
簡易エディタのようなダイアログが表示されますよね?
あれは何処で実行されているのでしょうか?

やりたい事は、設計時に[・・・]で文字列が入力された後で値のチェックを
かけたいのですが、それらしき部分が見当たらないのです。(涙)
0901組込もしまっせNGNG
>>900
前半の質問は、プロパティエディタの設定でされてる。
自作のエディタを作りたいなら、 ヘルプの
コンポーネント開発者ガイド->コンポーネントを設計時に利用出来るようにする->プロパティエディタの追加
からを見るといい


後半は・・・・もしかしてSetItems メソッドを定義してないの?
SetItemsが呼ばれた時の値で、チェックをかければいい
チェックをかけて値が変更されてたら 
たしか、 GetParentForm(Self).Designer.Modified; みたいな感じだったと思う
0902デフォルトの名無しさんNGNG
MDIアプリで、起動時に引数を受け取る方法ってありますか?
起動済みで受け取る方法は分かったんですが…。
0903デフォルトの名無しさんNGNG
>>902
ParamStr(i :integer);
0904デフォルトの名無しさんNGNG
>>903
for i := 1 to ParmCount -1 do
begin
if Pos('http://', ParamStr(i)) > 0 then
CreateMDIChild(ParamStr(i));
end;

タブブラウザっぽいのを作ってるのですが、こうで良いんでしょうか?
0905デフォルトの名無しさんNGNG
ParmCount → ParamCount でした
0906900NGNG
>>901
SetItemsでチェックするようにしたら、なんとかなりました。
あと、[プロパティエディタの追加]を読んで見て、
独自のエディタも作れそうな気になってきました、実力は無いのですが
なんとか頑張ってみます。
ありがとうございました。
0907デフォルトの名無しさんNGNG
>>904
ブラウザはhttp://を省略しても補完してくれるからそれは良くないだろう。
用意したコマンドラインオプション以外の文字列があったらURLとして開くとした方が良いと思われる。
0908..NGNG
DelWiki, なくなっちゃったの?

0909デフォルトの名無しさんNGNG
>>908
一緒に置いていたエロ画像が原因で削除されたらしい。
0910デフォルトの名無しさんNGNG
やっぱりDelやBCBでDirextXはだめですか?
0911デフォルトの名無しさんNGNG
>>910
そりゃ発表されたばかりのバージョン使いたいなら苦労もあるだろうけど
ひと昔前のを拾ってゆくなら何の問題もないよ
0912 ◆qZ/VDjzu96 NGNG
>>908
広告貼り忘れで消されてました。
たぶん復活したと思います。お騒がせしました。
0913デフォルトの名無しさんNGNG
SJISに対応したPosって無いんでしょうか?

Pos('\','表')がちゃんと0になるような。
0914デフォルトの名無しさんNGNG
 
0915デフォルトの名無しさんNGNG
AnsiPos
0916デフォルトの名無しさんNGNG
TStringGrid上で常にヒントのポップアップを表示しておきたいのですが方法はありますか?
尚且つマウスポインタの位置が別のセル上に移動したときは、即ヒントの文字列を更新したいのです。
0917組込もしまっせNGNG
>>916
それは Popup ヒントでなければいけないの?
普通は TStatusBar を使って、StatusBar.AutoHint:=True; にすると思うのだけど
0918デフォルトの名無しさんNGNG
>>916
ポップアップヒントに似せたウィンドウを一つ作成して、
OnEnterで表示、OnExitで隠蔽、OnSelectCellで内容出力したらどうかと。
0919デフォルトの名無しさんNGNG
>>917>>918
おまいら答えになってないよ。

>>916
TApplication.OnShowHintイベントでTHintInfoのReshowTimeoutを適当(500)に設定し
TStringGridのOnMouseMoveイベントでHintプロパティを変えればいけるだろ。
ヒントの位置も変えたければTHintInfo.CursorPos:=Mouse.CursorPosとやればOKかな!?
0920組込もしまっせNGNG
>>919
なるほど、0.5秒毎にReShowするから、自動的にHideしないって事ですね
ほんの少しチラツキが出る以外は巧いアイデアかも
0921山崎渉NGNG
(^^)
0922デフォルトの名無しさんNGNG
>>919
それではその機能を組み込んだコンポーネントを作る場合どうするか教えてください。
0923デフォルトの名無しさんNGNG
>>916
ttp://www.din.or.jp/~egawa-n/delphi/tips/grid_hint.html

>>920
>>916の方法では無理。ていうかやって出来ない事はないが、やってはいけない事。
グローバル変数のメソッドポインタをコンポーネント内で書き換えると
アプリケーションが意図しない動作するかもしれない。
0924デフォルトの名無しさんNGNG
potatoのisoはftpで見つけたのですが、woodyのisoイメージを
発見できません、何処から落とせば良いのでしょうか?
0925デフォルトの名無しさんNGNG
Debian と Delphi って似てるか?
0926デフォルトの名無しさんNGNG
>>924 jigdo
>>925 (^^;
0927924NGNG
ごめんなさい、誤爆してたみたいです。
>>925
なぜか間違ってしまいました。(汗
>>926
誤爆にお返事頂いて申し訳ありません。
jigdoで作れるのですね、ありがとうございました。
0928デフォルトの名無しさんNGNG
DelihelとDelphiは似ている

0929デフォルトの名無しさんNGNG
ビジュアルベーシックとベンチャービジネスは似てる
0930デフォルトの名無しさんNGNG
Cとしぃは似ている
0931デフォルトの名無しさんNGNG
Delphiとは関係ないかもしれないのでつが。

マウスのホイールをクリックしたときに、コントロールによっては
自動スクロールする場合がありますが、あれってアプリ側で処理
を書いているんでしょうか?
0932デフォルトの名無しさんNGNG
コントロールの種類によって変わる。
0933デフォルトの名無しさんNGNG
誰がコードを書くか。という問題なんだけどね。

1. コントロールが他人の書いたものならそれにまかせる。例:Windows 標準コントロール
2. 標準の動作を変えたり、ホイールメッセージを処理しないコントロールの場合
自分で書く。多くの場合すべてを書く必用はなく、あたかもスクロールバーを制御している
用に見せかければ良し。

3. Logitech とかのマウスドライバだと、WM_MOUSEWHEEL を処理しないアプリケーションに対し
マウスドライバ側でスクロールメッセージに変換してくれる。こういった環境ではアプリ側で
何もしなくてもホイールが使える。

0934デフォルトの名無しさんNGNG
>>932
たとえばTCustomControlから自前でコンポーネントを
起こす際に、どう実現したらいいものかなーと……

ていうか自動スクロール自体は、別にどうってことはなくて
ホイールクリックしたときに出る、「○と▲と●のアレ」を
どこから持ってくればいいのかよくわからないです。あとカー
ソルも。

0935デフォルトの名無しさんNGNG
>>934
すまんです。説明足りなかったです。

WM_MOUSEWHEELはもちろん受け取って処理するのですが
ホイールをクリックしたときによく出る変なマークはどこから
取ればいいのか知りたいのです。

秀丸やDelphiのコードエディタなんかも同じマークが出るみたい
なんで、それぞれが自前で持っているわけでもなさそうな感じ
だし……。

よくわから。
0936デフォルトの名無しさんNGNG
TControlにはOnMouseWheelというPublicイベントが存在するのだが、
なぜか下位のTListBoxなどには継承されていない。
0937デフォルトの名無しさんNGNG
>>935それはアプリケーション毎に用意する物
ホイールクリック=中ボタンを押された状態と同じ事です。

どのアプリでも出るのならば、マウスドライバ自体が特殊なのかもしれない。
0938デフォルトの名無しさんNGNG
>>937
どうもUSER32.DLLかcomctl32.dllあたりにそれっぽいカーソルが
収められているみたいです。

それを適宜取得して、表示は自前で……という感じか。
0939デフォルトの名無しさんNGNG
'アドレス 00000009 でアドレス 70046913 に対する書き込み違反がおきました。'
とか見ても、具体的に何がまずいのか、さっぱり解らないのですが、
こういった情報からエラーの原因を知る事は出来るのでしょうか?
0940デフォルトの名無しさんNGNG
>>939
検索→シンボルを調べる
0941デフォルトの名無しさんNGNG
>940
ありがとうです。
しかし残念ながら、personal版にはそのメニューは無いようです。
やっぱ本格的にやろうとすると、Pro版が必要なのかしらん。
0942デフォルトの名無しさんNGNG
Personal には無かったっけ?

Wiki に書かなきゃ...
以下の説明で、わからない場所が有ったら突っ込みを。

GP/AV が出たら CPU ウィンドウを開き、呼び出し履歴とスタックポインタを探って
問題を起こしているポイントを見つける。

>'アドレス 00000009 (1) でアドレス 70046913 (2) に対する書き込み違反がおきました。'

アドレス(1) はコードのアドレスが出てくる場所で、これが $0009 ってことはありえない。
存在しないコードを実行することはできないから、どこからか $0009 にジャンプしてきて
そこで例外を起こした。と。

マスターポインタ + $0009 に何かのメソッド/関数がある。というコードで、マスターポインタが
0(Nil) だったのだろう。

Delphi (をふくむ多くのコンパイラ)ではルーチンをまたぐ Jump はほとんど生成されないので
call で飛んできていると思われるから、スタックペーンの冒頭のアドレスから逆アセンブル。
そこ、ないしはそこから1〜2段さかのぼったところに鍵がある。

0943939NGNG
>942
説明ありがとです。
大まかな意味は解るんですが、
CPUウィンドウで、 mov eax, とか色々書かれているのを見ても、
アセンブラ(?)は解らないので、さっぱりです。
ソースの中の、エラーの原因となる位置を特定できたらいいなぁ。
と思ったんですが、
アセンブラを勉強しないと、(仮にPro版を持っていたとしても)
こういう情報からエラーの原因を特定する事は出来ないんですか?
0944≒492NGNG
CPUウィンドウのスタック欄で、アドレスらしい数字を見つけて
「エラーの検索」とか関数名に@つけて表示させてみるとかで、
アセンブラわからなくても大体の位置は特定できるでしょ。
0945939NGNG
>関数名に@つけて表示させてみる
こんな事も出来るなんて知りませんでした。
ちゃんと使い方を覚えれば、詳しく調べられるんですね。
ありがとうです。
0946デフォルトの名無しさんNGNG
すいません。delphiで.lnkファイルのリンク先を調べるにはどうすればいいんでしょうか
0947 NGNG
>>946
検索すれば見つかる。delphiに限定しないで検索してみるがヨロシ。
0948デフォルトの名無しさんNGNG
>>947
だいぶ探してなんとかdelphiのも見つけました。うまくいってます。ありがとうございました。
0949デフォルトの名無しさんNGNG
>>947
あんたのせいでCOMに興味持って夜更かししてしまいました。眠い。
0950デフォルトの名無しさんNGNG
PopupMenuが閉じる時に流れるMessageって無いですか?
0951デフォルトの名無しさんNGNG
>>950
「このメニューは終了しました」
0952ねこまNGNG
PopupList.Window の WindowProc を置き換えれば WM_CLOSE が来ないかなぁ?
試してないけど.
0953デフォルトの名無しさんNGNG
>>952
>WM_CLOSE

それ≒終了するとき

だと思われ。
0954sageNGNG
ShellListViewでクリックしたファイル(フォルダ)のファイル名を取得したいのですがどのようにすればよいでしょうか?

if (ShellListView1.Selected <> nil) then
begin
ShowMessage(ShellListView1.Selected.Caption);
end;

とやってみましたが、ブランクが表示されます。
0955ねこまNGNG
WM_CLOSE じゃなくて WM_EXITMENULOOP
0956デフォルトの名無しさんNGNG
>>950
WM_MENUSELECT
0957950NGNG
>951-956
どうやらWM_MENUSELECTで自分のイベントを起こしたいタイミングに
イベントを起こせそうです。
ありがとうございます。
0958デフォルトの名無しさんNGNG
>>954
 Demos のは ソースを読んでガンバレって事だから

 ShellListView1.SelectedFolder.PathName が該当のものじゃないかな

0959デフォルトの名無しさんNGNG
DemosのShell系はいまいちだねえ・・・
必ずHDDアクセスは起こるし、ShellTreeViewには共有のオーバーレイイメージが
表示されるのにListViewには表示されないし、TreeViewにもショートカットのイメージは表示されないし、
ListViewにパスをセットできないし、どれも変数の開放忘れがあるし。

結局ちょこちょこ自分でいじって別パッケージにしちゃってるよ。
0960デフォルトの名無しさんNGNG
>>959
一体いつのバージョンを使っているの?
BDN にアップデートがあがっているんだけど。
0961デフォルトの名無しさんNGNG
Del7付属の奴。
BDN、登録してないんだよねえ
0962デフォルトの名無しさんNGNG
>>961
簡単な英語が読めれば、誰でも登録できるけど?
...割れ物使いかい?
0963デフォルトの名無しさんNGNG
あの登録と割れと、何が関係するんだ?

で、登録してきたけど見つからないんだけど。どこ見ればいいの?
0964デフォルトの名無しさんNGNG
たびたびスマンね。
MLの過去ログでパス貼ってたので見つけられたよ。
で、見てみたけど俺が上記した問題はほとんど解決されてないようなのだが。

あんたインストールしてみて全部試してみた上で言ってる?
あんまり無責任な発言するもんじゃないよ。
0965デフォルトの名無しさんNGNG
サンプルは英語サイトから拾ってこいとか
ライブラリはフリーの使えとかやる気のない処理系ですな。
0966デフォルトの名無しさんNGNG
処理系?
0967954NGNG
>>958
フルパス
ShellListView1.SelectedFolder.PathName;
ファイル名
ShellListView1.SelectedFolder.DisplayName;

でした。
ありがとうございます。

>>959,960
フォルダーの情報を取得したいのですが、
ShellListViewはやめたほうがよいのでしょうか?

>>960
BDNてなんですか?

たびたびですいませんがお願いします。

環境は、
Del6Ent Build 6.163
Windows2000 SP3
会社であまっていたので、
入れてもらいました。
0968デフォルトの名無しさんNGNG
BDN=Borland Developer Network

ShellListView、別に使えるよ。
ただ、不十分なところもちょっとあるって程度で。
0969デフォルトの名無しさんNGNG
initialization時に今、実行時なのか設計時なのか
区別する方法ってありますか?
0970デフォルトの名無しさんNGNG
>>969 TComponent のインスタンスを作成したらどうだろ?

いつもの事だけど、このスレの次スレはどうするの?
俺のプロバイダだと最近建てられない。串探すのメンドクサイから
0971デルファイの名無しさんNGNG
GetModuleFileName(0)がDelphi32.exeなら設計時、どう?

…でもこれだと、IDE拡張に使ったときも設計時と見なされてしまうので、
ユニットを分けて、設計時用パッケージを別に作った方がいいかも。
0972デフォルトの名無しさんNGNG
  ,,,,,,,,,,,,,,,∧,,∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
〜′,,,,,,,,,,ミ,,゚Д゚彡<  次スレhttp://pc2.2ch.net/test/read.cgi/tech/1045813143/l50
 UU"""" U U    \_________
0973969NGNG
>>970
>>971
どもです。
ComponentStateみたいな状態はないんですか・・・
設計時のinitializationの時にファイルOPENしてて
実行時にまた同じファイルOPENしてエラーが出てしまうので
なんとかしたかったのですが・・・
0974デフォルトの名無しさんNGNG
>972
アホが・・・
0975デフォルトの名無しさんNGNG
>>974
毎回いるよな、こういう香具師。
0976デフォルトの名無しさんNGNG
Delphi相談室その9早く立ててくれよ。
0977デフォルトの名無しさんNGNG
漏れ的にC#は一押しなんだけど。
C++は魅力的だが、肥大化しすぎ&精通してる奴が少なすぎ
Javaは言語的に萌えない&マニアックな操作が出来ない
どうよ
0978デフォルトの名無しさんNGNG
C#はCOMベースで動きますので、C++のように単体では動けません。
と理解してるんだけど、JAVAならできるけど、C#はコンソールアプリ作れるの?
0979デフォルトの名無しさんNGNG
出来るよ。*.exe になる。その exe が単体で動くかどうかは知らんが。
0980デフォルトの名無しさんNGNG
C#ってのは言語名なわけ?
じゃー21世紀最初の(製品化された)言語カナー?
0981デフォルトの名無しさんNGNG
人類がMSに付いていく限り永遠に新しい言語を覚えさせられそうだな。
0982デフォルトの名無しさんNGNG
というか、俺、オブジェクト指向勉強し始めなんですが
Java,VC++,C#.netからC#選んで勉強することにしますた。
0983デフォルトの名無しさんNGNG
C#はDelphi8のことですが何か?
0984デフォルトの名無しさんNGNG
Delphi8はあまりはやらないと思います。。
C#があれだけ浸透しているのに、Delphiに乗り換える理由がわからないです。
もちろん、双方の良さ悪さありますけど。
0985デフォルトの名無しさんNGNG
某のやりたいことは、囲い込みだよね。
私企業なんだし、それはそれでいいと思うよ。
でも、ネットワークは本質的に「囲い込めない」でしょ。
単純に言って、.NETの人たちが使うことはないっしょ。
結局、Delphi8ってのも、某の土俵内なんだから、新Delphiってことだよね。
旧Delphi程度にははやり、それ以上にはならない、つのが結論だっぺ。
0986デフォルトの名無しさんNGNG
流行らなかったら 流行らせるまで1年くらいはガンバルでしょうね、某は。
でも Delphi1の時の勢いは感じられない。
0987デフォルトの名無しさんNGNG
C#のパフォーマンスってどうなの?
なんかイメージ的には相当遅くなってそうなんだけど・・・
0988デフォルトの名無しさんNGNG
Javaがウンコとすると、C#は神。
0989デフォルトの名無しさんNGNG
C#には構造体があるのか。
メモリ使用量もガベコレ頻度も減って一石三鳥だな。
Javaだとなるべく、Pointみたいなプリミティブ型にクラスはなるべく使わないようにしてきたけど、
C#だとそんなくだらない努力はしなくてもいいのね。

C#マンセー
0990デフォルトの名無しさんNGNG
C#の構造体の本質は
Javaだとint,float,stringなどに限られていたプリミティブ型を自由に定義できるということ。
またそのインスタンスをインラインに持ち、スタック上におけるということ。

これはパフォーマンスクリティカルな部分においても、
可読性と速度を両立できるという大きなメリットをもたらす。
0991デフォルトの名無しさんNGNG
っていうかC#はそんなに遅くねーって。
体感速度は、メモリを多めに食うクルーソーCPUを載せているって感じか。
Javaと違って、言語仕様上の制限は少ない(構造体、関数ポインタ、ポインタもある)から
実質ネイティブコンパイルと同等のパフォーマンスは得られる。
0992デフォルトの名無しさんNGNG
Javaが遅い理由の一つに、クラスロード、メソッド実行のたびに入る
コードの安全を確かめるための大規模な検証作業があるが、
C#の場合、暗号化と公開鍵の仕組みによって外部からの改変を防ぐことでコードの安全性を保障している。
だからJavaのアプリケーションみたいに起動が糞重いなんてことはない。
0993デフォルトの名無しさんNGNG
5
0994デフォルトの名無しさんNGNG
510
0995デフォルトの名無しさんNGNG
次スレを・・・
0996デフォルトの名無しさんNGNG
OLE OLE2 COM OCX ActiveX 確か今の形になったのが5〜7年くらい前じゃないかな
Javaの対抗にActiveX打ち出して JavaをActiveXと融合させえてゴチャゴチャに
かき乱して、結局JavaやJavaアプレットとかクライアントから追い出してしまった
0997デフォルトの名無しさんNGNG
すびばせん。
しかたないから C#もちょっとだけ勉強しようかと思っているんですが、
C++みたいに昔の仕様を引きずっていたり、VCみたいに16bit→32bitの
仕様を引きずっていたりしない?
言語仕様が整理されていて勉強しやすければいいなーと思ってるんですが。
0998デフォルトの名無しさんNGNG
現時点では最高のオブジェクト指向言語であり、コンポーネント指向言語。
過去に縛られることなく、C++,Javaの良い点を取り入れつつ、
プロパティ、イベント、アトリビュートなどコンポーネント指向のための要素が追加されている。

JavaとC#の比較

Java
・プリミティブ型はオブジェクトではない。
・ストリング型だけ例外的に特殊な演算子が使える
・プリミティブ型は参照できない
・byte配列からfloat型に変換など、Java言語では決して書けない処理がある。
・setXXX/getXXXなどカプセル化するために無駄なコードが大量に増える。
・コールバックを使うためにはインナークラスを大量に使うか、インターフェイスを大量にインプリメントする必要がある
・プリミティブ型は固定されている。

C#
・プリミティブ型もすべてオブジェクトである。(ボクシング/アンボクシングの導入)
・演算子は自由にオーバーライドできる。
・プリミティブ型もrefを付けることで参照できる
・unsafeコードでポインタの使用を許しているので、矛盾なく書ける。
・プロパティの概念によってメンバ変数に直接アクセスしつつ、値操作をフィルタリングできる。
・イベントとデリゲートの概念によって最小限のコードでコールバックを実現できる
・構造体を使うことで、自由にプリミティブ型を宣言できる。

このようにJavaは一貫性がなく矛盾の多い仕様なのに対し、C#は非常に洗練された言語仕様になっている。
0999デフォルトの名無しさんNGNG
C#の優位性

・すべての要素はオブジェクトである。

C#の場合、ハッシュ、リストなどのコレクションはライブラリで用意さえている。
しかもintだろうが、floatだろうが、クラスだろう、構造体だろうが何でも一つのコレクションの中に入れられる。

・リフレクションによる動的型解析

自動XmlシリアライズなどはC++には絶対に書けない。
(やるなら余計なコードを追加するか、ソースコードを解析してシリアライズコードを自動生成するかどっちか)

・動的コード生成、動的バインディング

言語仕様内で可能

・ガベージコレクションによる自動メモリ管理

C++ではshared_ptrを使っても循環参照時に破綻するが、
Mark&Sweep方式のGCによって完全に安全なメモリ管理が実現される。
1000デフォルトの名無しさんNGNG
ばかだなあ、みんな。

C#の優位性はあきらかだろ。「MSが押してる」だーよ。
これで決まり。逆らってるヤツは、お払い箱。
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。