Delphi相談室その8
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
NGNG・もっと易しい、優しくな雰囲気がよければこちらに
モナーの *やさしい* 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デフォルトの名無しさん
NGNGAPIで直接な漢な人はこちら
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デフォルトの名無しさん
NGNGDelphi相談室その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デフォルトの名無しさん
NGNGhttp://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デフォルトの名無しさん
NGNGQ D6パーソナルにアクションマネージャーは?
A ありません
Q D7Proヘルプアップデートしたらハイパーリンク無くて使い難い
A D7Extヘルプを一緒に落としてコッソリ使いましょう
00064
NGNG0007デフォルトの名無しさん
NGNG統一の話はどうなったんだろ。
0008デフォルトの名無しさん
NGNGそれにしてもDelphiって本当に糞言語だな
0009デフォルトの名無しさん
NGNGあのーここDelphiスレですが・・・
0010デフォルトの名無しさん
NGNG2chのシステムとして、使わないスレは勝手に下がる
のだから、不要なら使わなければいいだけでは?
0011デフォルトの名無しさん
NGNG>A D7Extヘルプを一緒に落としてコッソリ使いましょう
D7 Ent(erprise) の間違いだな?
0012デフォルトの名無しさん
NGNGおおっ、君には見えたのか
0013デフォルトの名無しさん
NGNG構造体配列定数の定義
type THoge = record a:string;b:string; end;
const AHoge:array[0..2] of THoge=(
(a:'こう' ; b : 'いう'),
(a:'ふう' ; b : 'に'),
(a:'構造体メンバ目' ; b : 'が必要'));
0014デフォルトの名無しさん
NGNGApplication.OnIdle で暇なときに描画関数を呼び出し、というのをやっています。
が、このOnIdleというのはCPUに余裕があるときに発生すると聞いたのですが、
完全に暇なときなのでしょうか、それとも100%以外という意味なんでしょうか。
もし前者なら、描画できる余裕が少しあるのに描画できない、後者なら
描画を始めた時点で100%に達してしまい、終わるまで次が描けない → 描くのに1/30秒
以上かかるときに描画が等間隔にならない、と考えたのですが・・・。
理想は、通常は30fpsで描画して、維持できなくなったら徐々にfpsを減らしていく、
という形なのですが、いいアイデアは無いモノでしょうか。
0015デフォルトの名無しさん
NGNG0016デフォルトの名無しさん
NGNG18fps(55ms間隔)でよければOnTimerイベント内で処理するのがいいよ。
呼べなきゃ呼べるようになったときに呼んでくれるから。
OnIdleはそういう目的では使わないよ。
というか素直にDirec(略
0017デフォルトの名無しさん
NGNG「CPUに余裕があるとき」じゃなくて何の処理もしてないとき。
これはwindows全体の話ではなく、あなたのプログラムが何の処理もしてないときに呼び出される。
(つまり、メッセージループに入っていて、かつ処理するべきメッセージがないとき)
CPUの負荷はあまり関係ない。
0018デフォルトの名無しさん
NGNGOnIdleは他のジョブが動いていても時間が来たら呼ばれる筈
ホントに時間が空いてるかどうかは
パフォーマンス データを取得して調べてみるしかないのでは?
ヘッダ情報は
http://www.ez-delphi.com/sources/PDH.htm
0019デフォルトの名無しさん
NGNGだから後者かな。
俺はゲームの経験はないんだけれども、fpsを気にするようなゲームでは、
メインループは独自に書いたほうがいいと思う。こんな感じ?↓
while GameIsOn() do
begin
if PeekMessage(...) <> 0 then ProcessMessages(...)<-もしVCLにウィンドウメッセージを処理させたいなら。
<描画とか、時間測ってsleepとかで調節したり...>
end;
0020デフォルトの名無しさん
NGNGwhile True do
begin
now := GetMilliSecond;
calc;
if realtime < processtime then
render
else
NanoSleep(調整);
Inc(processtime, GetMilliSecond - now);
Inc(realtime, 33);
end;
002114
NGNGOnIdleは自分が何もしていないときに呼ばれるんですね。
ゲームといってもシミュレーションに近いので、数値計算は一定時間おきに行って(MMTimer使ってます)
計算結果をボンボン放り込んで、描画はそれを取り出しながら維持できる最大のfpsで行いたい、って感じですね。
うーん、やっぱりOnIdleは使うべきではないのかな・・・。
(負荷が増えると描画間隔が不定になるので、見てて気になるんです)
>>20
参考になります。
えっと、描画が終わるまでsleepして最大33ms間隔で描き続ける・・・でしょうか。
sleepは使ったことがないんですが、全体が止まってしまうということはありませんか?
(すみません、スレッドとか扱ったことがなく、よく解らなくて・・・(´・ω・`))
0022デフォルトの名無しさん
NGNG0023デフォルトの名無しさん
NGNGマルチスレッドを意識しないで使うとバグの温床になります。
つか、最近それでハマった・・・・・・。
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ループだろうが文字列によるインデクシングだろうが何でもできる。
0026デフォルトの名無しさん
NGNGDelphiでどうやれば使えるようになるのか知りたいのですが。。。
0029デフォルトの名無しさん
NGNGファイルに書き出すのが面倒
003026
NGNGう〜ん、試してみたんですけどAcitiveXの取り込み->コンパイルで
エラーが発生してコンパイルできないんですよ。
でも、MapDKを使用して製品を開発している会社の紹介では、
Delphiを使っているというところもあるみたいだし。
0033デフォルトの名無しさん
NGNG速度いらないなら行全体を文字列として保持すればいいし
速度最優先なら一命令一クラス割り当てて
文字列を適切な型(アドレス・レジスタ等)にキャストしてセットすればいい。
文字列配列はその中間だけど列挙型がない方が柔軟な記述ができるから
type TOpFld = array of string;
でいいんじゃないの。
0035デフォルトの名無しさん
NGNGローカライズした/する気のある奴いない?
自分でもソース手に入れて少し弄ってみたんだが、
どうも怪しげな文字化けが発生するので困ってるのよ。
0036デフォルトの名無しさん
NGNG面白そうだね。
ただ、古いTPスタイルのコードみたいだから
Delphiスタイルに変更してしまいたいな。
それからGUI付けたい。
0037デフォルトの名無しさん
NGNGこういうのを若い人にやって貰いたいな。特にフサギコに。
0038デフォルトの名無しさん
NGNGDIpasdoc(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がちょっと気になる・・・mmtimerだけ論理的に別空間で動いてるってこと?
特に意識せずに使ってるけど、なんか覚えておかないとまずいのかな・・・。
0040デフォルトの名無しさん
NGNG何が問題かというと、たとえばあるポインタがnilかどうかチェックしてからそのポインタを
逆参照するようなプログラムで、nilチェックしてから逆参照するまでの間に別なスレッドが
そのポインタをnilにしてしまうとバグるとかそういう話。
TThreadの使い方、特にSynchronizeメソッドあたりの使い方を勉強しる。
0041デフォルトの名無しさん
NGNGDIpasdocにそのソースを入れてコンパイルしなおしたんだけど
特に今の所日本語が通らない事はないみたいだけど?
0042デフォルトの名無しさん
NGNG今日何に食べる?
ナポリタンナポリタンナポリタン〜
イタリアンね
みたいな会話がある…
どうみても
( ゚∀゚ )ぱいそんぱいそんぱいそ〜〜ん
のパクリだ…
0043デフォルトの名無しさん
NGNG何かいい方法はないでしょうか?
どーもごちゃごちゃして汚くなるのと、メモリ管理が参照カウント方式になるのが
わけわからんのです。
ためしに_AddRefと_Releaseを単に-1を返すようにoverrideしてみたんですが、
それはそれで間違っているような気がします。
var
ti : IHoge;
begin
ti := SampleClass.Create;
だったらti.Freeできないですし。
Javaだったらgcがあるからかまわないわけですが、どうやるのがDelphi的に正しいのかなぁ。
0044デフォルトの名無しさん
NGNGDelでは自前のクラスにinterface使った事ないよ。
0045デフォルトの名無しさん
NGNG意味不明でスマソ。
004635=38
NGNG食らいまくっているらしく。
・コメント中に2バイト目が{}がくる文字(”ボ”や”マ”)が
現れた場合はパースに失敗する
・2バイト目に@がくる文字(”ァ”)の後にlink等と書くと
タグであると誤認識する&文字化けする
StrByteType チェックを噛ましまくって暫定解決できた
版を作ったので、GUIとセットでソース置き場に上げときます。
しかしキモの部分に手を加えているのでエンバグ/デグレ
(特に既存他言語の処理で不具合)が起きている可能性が
極めて高いので御用心を。
0047デフォルトの名無しさん
NGNG多重継承みたいなことが必要になったときにはどうしてます?
そのような事態にならんように設計で回避ですか?
0048デフォルトの名無しさん
NGNG1. 自分でprocedureを作って、Formの上の部品にアクセスしたいとき、
Form1.label1 とか絶対指定しないとエラーになるのですが、要するにそのprocedureが
Form1を継承していないということなのでしょうか?何処かに指定がいるんでしょうか。
2. フォームの上に動的にimage1を配置したいのですが、それを見越して
Form1.image1... というのをソースに書くと、そんなモン無いぞとエラーになります。
が、image1とだけ書くとコンパイルが通ります。何故なんでしょうか?
0049デフォルトの名無しさん
NGNG>1.
継承しているかどうかということではなくって
Form1を省けるのはTForm1自身のメソッドのみ。
>2.
いろいろ方法はあるけど
TForm1のprivate部分に
image1: TImage;
と書いておけばいいよ。で、FormCreateか何かで
image1 := TImage.Create(Self);
image1.Parent := Self;
としておく。
>image1とだけ書くとコンパイルが通ります。
これは別の何かを参照しているのでバグっぽいかも。
コンパイルが通るのはたまたま・偶然。
0050デフォルトの名無しさん
NGNG誰でも通る道っぽいので、気持ちはわからんでもない
1.クラスは「型」。例えばおかしのクッキー型のように
TForm1という型でForm1と同じFormをぽんぽん作れるの。
ぽんぽん作ったクッキーはそっくりでその全てにLabel1があって、
例えばLabel1と書いてもDelphiはTForm1という型で作った
どのクッキーのLabel1の事を云っているのかわからない。
よって Form1.label1 と指定しなければならない
2.まずソースを見る。TForm1という型には image1 は
存在しない筈。存在しないものを指定すればエラーになる道理です。
image1 でエラーにならない理由だが、
手続き/関数のローカル変数として宣言してないか?
ローカル変数はその名の通り特定地域内(たとえば関数内)専用の変数。
要は〜.〜の形式ではアクセスできないわけ。
詳細はHELPのスコープの項をみてくれい
0051デルファイの名無しさん
NGNGそれでいいんじゃないですかね。
クラスとしての参照も保存しておいて、そっちで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おお、修正が早いね。
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デフォルトの名無しさん
NGNG0054デフォルトの名無しさん
NGNG0055デフォルトの名無しさん
NGNGありがとうございます。
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デフォルトの名無しさん
NGNGTTimerと同じ使い方をすると原因不明の挙動で悩むことになる。
例えば、よくやるのがVCLのコンポーネントなんかにアクセスしてたりする場合。
基本的にはマルチスレッドプログラミングを適用すればよいので、
同タイトルのスレッドか、書籍やwebを見ればよいと思われ。
俺もデバッガのスレッドウインドウ見てて最近気づいた(駄目ジャン
0057デフォルトの名無しさん
NGNG0058デフォルトの名無しさん
NGNGそうだね。クラス、メソッド、フィールド、継承、self などを
しっかり勉強した方が、ここで対症療法を繰り返すより、
かえって上達への近道だと思われ。ヘルプを読むだけでも
いい
0059デフォルトの名無しさん
NGNGCreateProcessパラメータ多くて面倒すぎ・・・
ただdirとかコマンドラインから実行したいだけなのに。
ウワァァァンヽ(`Д´)ノ
0060デフォルトの名無しさん
NGNG推奨されないらしいけど。
cmd /c dirでできるね。
しかし微妙に思ったとおりの動作にならない。
コマンドラインアプリケーション作って、 cmd /c pauseってやったら
最後にEnter押すまで終了しないのが理想なのだが。
006150
NGNGでも>>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デフォルトの名無しさん
NGNGbegin
clipboard.SetTextBuf(Pchar('a'));
end;
とやるのと、
Clipboard.Astext := 'a';
とやるのではどっちが良いのでしょうか?
0063デフォルトの名無しさん
NGNG0064デフォルトの名無しさん
NGNG0065デフォルトの名無しさん
NGNG0066Delフサギコ ◆A6VzDeLphI
NGNGミ,,゚Д゚ミつ TClipボドのインスタンス生成イクナイ
たぶん
0067デフォルトの名無しさん
NGNG利用するだけなら、後者だな。
後者も後者で遅延生成されてるんだな。
proxyパターン?
0068Delフサギコ ◆A6VzDeLphI
NGNGミ,,゚Д゚ミ シングル�dではなかったかと。
ClipbrdユニットClipboard関数みたらわかるです。
0069デフォルトの名無しさん
NGNGなんで結果が1になる?
0070デフォルトの名無しさん
NGNG型のビット長の余りだけシフトするからあってるよ。
「1」とだけ書くとintegerだから32ビットシフトは
0ビットシフトと同じ。
1 shl 32 = 1 shl 0 = 1
1 shl 33 = 1 shl 1 = 2
0072デフォルトの名無しさん
NGNG007369
NGNG>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ヘルプをそこまで読んだなら、なぜその後を読まない?
007569
NGNG0076デフォルトの名無しさん
NGNGげ、D5かぁ。確かに書いてないな。すまん。
0077デフォルトの名無しさん
NGNGかんたんに、
Delphi勉強できるHPや書籍ってありませんか?
0078デフォルトの名無しさん
NGNG中級なら基本は付属のマニュアル等で十分だと思うがダメ?
0080デフォルトの名無しさん
NGNGPersonalか・・・ヘルプもほぼ付属マニュアルと同じなんだけどな。
とりあえずとっかかりに
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,ミ ゚Д゚彡 C++/VBとDelとの対応表が載ってた
ミ ∪ と思うです。
ミ〜,, ミ
∪ ∪ かなり詳細だったはづ
0083デフォルトの名無しさん
NGNG言い訳にしてるだけか?
0084デフォルトの名無しさん
NGNG何月号だったかは忘れたが、割とページを割いていて分かりやすかった
0085デフォルトの名無しさん
NGNG何か問題でも?
0086ななしへたぐらま ◆XcB18Bks.Y
NGNGなるほど〜.
実は最近インターフェイスを使い始めていて,
終了時にソースで追えないところでアクセス違反が出ていたので
どうしたものかと思っていましたが….
0087デフォルトの名無しさん
NGNG008877
NGNG何か適当に作ってみて、慣れて見ます。
今日は忙しくて本屋いけなかったので、
次行った時にでも、D6プログラバイブル 見てみます。
ありがとうございました。
0089デフォルトの名無しさん
NGNG参照カウント方式にメモリ管理を任せれば、メモリーリークと無縁の世界になれる?
VCL系のオブジェクトはFreeしなきゃいけないから混乱しちゃうか。
0090デフォルトの名無しさん
NGNG・Create/Free
・TComponentの親が子を開放
・Interfaceのリファレンスカウンタ
なんだかねぇ・・・
0091デフォルトの名無しさん
NGNG0092デフォルトの名無しさん
NGNGすみません、超浅漬けで申し訳ないんですが勉強してきました。・゚・(ノД`)・゚・。
理論だけ見ても全く実感沸かないですね・・・実際に自分で書いて試してみます。
Formのメンバ、Unitの変数、スコープの認識がかなり曖昧デシタ・・・。
0093デフォルトの名無しさん
NGNG(shared_ptrなんかは若干使いやすいけど)
いっそGC欲しいとも思わんでもないなぁ
0094デフォルトの名無しさん
NGNGst:=Tstringlist.Create(Form1);
というような感じでクリエイトすれば Free しなくても
Form1の終了時に勝手にメモリ解放してくれますか?
0095デフォルトの名無しさん
NGNGTComponentの派生クラスならそうだが
残念ながらTStringListにはOwnerはありませんにょ。
0096デフォルトの名無しさん
NGNGTStringListはコンポーネント継承ではないので、その管理機構を持っていません。
TObjectTray = class(TComponent)
public;
constructor Create(Parent:TComponent);
destructor Destroy:
function CreateStringList:TStringList;
end;
みたいなインターフェースで作るしかないかも
0097デフォルトの名無しさん
NGNG勉強し直してくるにゅ
0098デフォルトの名無しさん
NGNGTmenuItem などはオーナーを TmainMenuにしておくと個別に解放する必要は無いわけですね。
0099デフォルトの名無しさん
NGNGTmenuItem などはオーナーを TmainMenuにしておくと個別に解放する必要は無いわけですね。
0100デフォルトの名無しさん
NGNGクソしてくる
0101デフォルトの名無しさん
NGNG0102デフォルトの名無しさん
NGNGまぁ大体分かったと思うので精進してくれぃ。
0103デフォルトの名無しさん
NGNGストリーム再生できるMP3プレイヤコンポーネントに渡す方法は
無いでしょうか?
procedure OpenStream(Stream: TStream; StreamType: TMP3StreamType);
で、渡せるみたいなのですが、サンプルコードではClientSocketから、
stream := TWinSocketStream.Create(ClientSocket.Socket, 2000);
として、Streamを取り込んでいました。
これと同じ事をNMHTTP等から出来ないものでしょうか。
0104デフォルトの名無しさん
NGNG0105Delフサギコ ◆A6VzDeLphI
NGNGミ ゙''゙゙゙つ
ミ∧,,∧ 以前教えてもらった
ミ,,゚Д゚彡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デフォルトの名無しさん
NGNGprocedure 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デフォルトの名無しさん
NGNGTTest = 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デフォルトの名無しさん
NGNGDestroy には、ふつう後始末をするコードを書く、そして、override
できない Free から間接的に呼ばれて実行される。後始末は上位クラス
についても実行されるべきなので、継承の過程でえんえんと下位クラスで
override されていくべきだと思う。これに対して、コンストラクタには
普通、初期化のコードを書くので、下位クラスで新たにパラメータを
もつ TComponent.Create(AOwner: TComponent); みたいに新たに定義して
もかまわないし、そうすべきなのでは。
0110デフォルトの名無しさん
NGNGオブジェクトを作るときはクラス名を指定してコンストラクターを呼び出す。
inst := TClass.Create;
オブジェクトを削除するときはインスタンスを指定する。
inst.Free
削除のときinstは基底クラスの変数を使うときがあるので仮想関数になっています。
TDerive = class(TBase)
var base: TBase;
base := TDerive.Create;
base.Free; <--- ここではTDeriveのデストラクタが呼び出される。
0111デフォルトの名無しさん
NGNGTObject.Destroy
TObject.Free
ヘルプ読んだか?
0112Delフサギコ ◆A6VzDeLphI
NGNGミ,,゚Д゚彡 読んでようやくわかったからなあ・・・
ミつ[|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読みたいんだけど手に入らないんよ
0116デフォルトの名無しさん
NGNG>この本は復刊交渉を開始しています
http://www.fukkan.com/vote.php3?no=4407
0117デフォルトの名無しさん
NGNGPersonalやPoに添付してくれないかなぁ
今添付してあるのはPDFでいいよ
簡単なクラスを作って
XX.Freeの部分からF7でトレースして動きを見れば
なるほどと思うよ
0118デフォルトの名無しさん
NGNGここで話題にされているのか。
デフォルトですべてのメソッドは Virtual。ってのが正統派 OOL。
それだと速度とかが稼げないから non-virtual を指定できるようになったのが
C++ を筆頭とする OOL。
だから"必ず override 指令を追加" ってことで十分なんだけど。
で、混乱の元は「なぜデストラクタは仮想なの」ではなく「なぜコンストラクタは仮想でないの」
なのだと思うが?
0119ねこま
NGNG>なのだと思うが?
TObject はオブジェクトの頂点です.つまり,この上には何もいないので
override する必要がありません.
こんな説明でよろしいかと
0120デフォルトの名無しさん
NGNG全然よろしくないって
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コンストラクタが仮想ってことは生成したいオブジェクトが実行時にしかわからんということだよね?
どーゆー意味があるんじゃあ
0124デフォルトの名無しさん
NGNGTMyClass = 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じゃあデストラクタはって言われるな
0127Delフサギコ ◆A6VzDeLphI
NGNG∧,,∧ / 見逃してたんだけど、ここみると、
ミ,,゚Д゚彡< .NET版は
ミ つ�I) \ 今のところすべてのコンストラクタが
仮想コンストラクタになっている
とか、、、、
0128デルファイの名無しさん
NGNGスペルミスした時のことを考えてみてください。
0129デフォルトの名無しさん
NGNG違う。ひょっとして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どうだろうな。VCLの中ではそれなりに意味のある使われ方してるらしいし。
0132デフォルトの名無しさん
NGNG0133デフォルトの名無しさん
NGNG誰か DelWiki に、トピック作れや。
0134デフォルトの名無しさん
NGNG0135デフォルトの名無しさん
NGNGなんて書いてあるので、深く考えずに使う奴が多数かも。
0136デフォルトの名無しさん
NGNG逆にdynamicを廃止するとVCLのメモリ使用量が増大すると何度言わせれば・・・
0137デフォルトの名無しさん
NGNG0138デフォルトの名無しさん
NGNG当然virtualを多用すれば vmtが巨大になる。
Dynamic System.GetDynaMethodを見ると、継承された dynamic method index
だけのテーブルを作り、vmtにはそのテーブルだけを登録する。
呼び出す都度、indexがあるかどうかみつかるまで順検索する。
無ければさらに親も順検索する
0139デフォルトの名無しさん
NGNG防ぐためじゃないの。
0140デフォルトの名無しさん
NGNGとすると、フリーズするときがあります。これは、↓の
http://www.borland.co.jp/delphi/devsupport/d6issues.html
Windows XP における不安定な動作について
と解釈していいのでしょうか?
また、その際、互換モードの適当なOSでおすすめはありますか?
0141デフォルトの名無しさん
NGNGhttp://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つか試せよ。
0145デフォルトの名無しさん
NGNG0146デフォルトの名無しさん
NGNGたとえば?
既知の問題は片付いていると思うけど。
0147デフォルトの名無しさん
NGNGoverwriteなら上書きだけど。。。
0148970
NGNG同じユニットで定義した
親子クラスがあるとします。
子クラスのすべてのメソッドから親クラスのprivate,protected
が呼び出せるのはいかがと思いますが。
皆さんは不自由していませんか?
0149デフォルトの名無しさん
NGNGぜんぜん。かえって便利。
ユーザサイドは関係なく、プログラマサイドの問題だから
呼び<だせる>ことに不自由するって感覚が理解できない
0151デフォルトの名無しさん
NGNG0152デフォルトの名無しさん
NGNG何が厳しいのか書いて。
0154デフォルトの名無しさん
NGNG関連するクラス間ではデータのやり取りが他のクラスと比べて頻繁に行われる。
データのやり取りをする為にはプロパティ・アクセスメソッドを公開しなければならない。
特定のクラスにのみ公開する場合でもpublicにすると
全てのクラスからアクセスできてしまうので都合が悪い。
このような場合同一ユニット内で相手のクラスの中を
直接参照することで無駄なアクセサの公開を避けることができる。
0155デフォルトの名無しさん
NGNG同じユニット内で定義されてる関数やクラスはみんなお友達って事で
0156デフォルトの名無しさん
NGNGなんでprivateが呼び出せるんじゃーと叫んだことがあった。
main部とクラス定義を同じファイルに書いてたときに。
0157デフォルトの名無しさん
NGNG0158デフォルトの名無しさん
NGNG0159148です
NGNGすみませんです。
>>でもほかのユニットになると厳しくなるのです
ではなく
ユニットが異なると普通(マニュアル)の規則が適用される。
です。
あと、クラス参照プロパティ参照があぶないです。
0160デフォルトの名無しさん
NGNG仕様を理解した上で慣れるしかないよ。
まさか一クラス一ユニットにするわけにもいかないだろ。
0162デフォルトの名無しさん
NGNGあるよ。
今は知ってます。auto friendも。
ちょっとしたコンソールプログラム作って挙動を試すときが多いので、
auto friendはそのときは邪魔だったりする。
0163148です
NGNGだけどPascal or Algol は好きだ。
0164デフォルトの名無しさん
NGNGかつ、friend が存在しないと困る局面も知っていると思う。
Delphi でもそういうこと。
0165デフォルトの名無しさん
NGNG0166デフォルトの名無しさん
NGNG0167デフォルトの名無しさん
NGNG0168148です
NGNGでもファイルスコープでfriendとおなじにするとい
うのはいかがなものかと思われます。
------
わたしはpascal好きです
0169デフォルトの名無しさん
NGNGcout << someVariable;
とかもつかわないのか。
0170デフォルトの名無しさん
NGNG屁理屈はやめたほうがいいよ。
cout << someVariable; なんてfriendと関係ない話を出すなんてね。
0171デフォルトの名無しさん
NGNGC#でもより明示的に取り入れられてるし。
0172148です
NGNG私が考えているのは他人の実装を考えたくないからなんです。
つまり、ひとつのファイルの中で完結したい。
0173デフォルトの名無しさん
NGNGなんですか。これ?
http://pc3.2ch.net/test/read.cgi/tech/1037987061/908-
0174148です
NGNG悲しいことです。さよおなら..
0175デフォルトの名無しさん
NGNG0176デフォルトの名無しさん
NGNG0177デフォルトの名無しさん
NGNGみんなもわかってあげなければにほんのあしたはないのだ。
0178デフォルトの名無しさん
NGNG0179デフォルトの名無しさん
NGNGこのとき、窓の外の風景をCreateしてから窓枠をCreateし、Transparent指定すると
ちょうど風景が透けてイイ感じになりますよね。
が、風景を更新しようとすると窓枠のほうが奥に行ってしまう・・・。
ここで、重ねる順番(Zオーダーってヤツでしょうか)について疑問が出たのですが、
Createした順番に重なっていくような印象なのですが、明示することはできるのでしょうか?
0180デフォルトの名無しさん
NGNGそういう場合は自前で描画する方を選ぶもんだと思う
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リファレンスだけ?
0183デフォルトの名無しさん
NGNG2.分厚い解説書の文法の章を全部読む
3.リファレンスを全部読む
これで完璧
0184デフォルトの名無しさん
NGNGコードを一行も書かないんだね
0185デフォルトの名無しさん
NGNGDelphi言語・・・と揚げ足を取ってみる。
0186デフォルトの名無しさん
NGNG言語自体はリファレンスだけ。
0187デフォルトの名無しさん
NGNGコンポーネント内で描画させようとすると手前にボーンとなるんですよ(;´Д`)
自分でやるしかないのかな・・・。
0188デフォルトの名無しさん
NGNGそれは駄目
0189デフォルトの名無しさん
NGNGこれは一時的なことなのでしょうか?
ttp://www.borland.co.jp/delphi/personal/
0190デフォルトの名無しさん
NGNGメール出さないと気づいてくれないのかも。
0191デフォルトの名無しさん
NGNGTurbo Pascalとの差分のみ、ヘルプとリファレンスから。
Turbo PascalはPascal原典とA+D=PとTurbo Pascal本多数。
0192デフォルトの名無しさん
NGNGTAviimageとゆーモノでつ・・・。。・゚・(ノД`)・゚・。
0193デフォルトの名無しさん
NGNGなんだか分からないが、TImage 系なら、描画しようとしたとき
ポーンと手前に来るんじゃなくて、たんにCanvasにアクセスしたので
不透明なビットマップができるだけじゃないの。
0194デフォルトの名無しさん
NGNGライブラリ依存とか面倒になって、モジュール単位に閉じる方が楽だから
だんだんと関数ポインタと構造体ポインタを使いまくるコードになってきた。
これでいいのかな?
まあ、一人でやってるからいいんだけど、他人が見たら嫌だろうなあ
0195デフォルトの名無しさん
NGNG0196デフォルトの名無しさん
NGNGCALC.EXEを起動したいんですけど、
どうすればいいですか?
0197デフォルトの名無しさん
NGNG0198デフォルトの名無しさん
NGNG描画メソッドを見ると、Canvas.Drawで描画していました。
ということは、奥をDrawすると手前のTransparent越しに見えてたものが
不透明になってしまうってことなのかな・・・。
コントロールの順番は不変で、透過してたら見え方はずっとそのままって
観念だったので混乱してまつ...(汗
0199524
NGNG0200デフォルトの名無しさん
NGNGしばらくお待ちください...
接続完了!!...
相談中...
0201デフォルトの名無しさん
NGNG0202デフォルトの名無しさん
NGNGフォームやパネルが再描画が必要になれば、その上のコントロールが描画される
その時の順番が、たぶんキミが言ってるZオーダ
で、それぞれのコントロールに直接描画しろと命令を送ると、当然そのZオーダは無視されてしまう。
だから、そういうふうにしたい場合は
1、フォームやパネルをDoubleBufferd:=true;にしておいて、
それぞれのコントロールにではなくフォームにInvalidateを送る
2、上のTransparentに設定した窓枠からリージョンを取り出して
リージョンでクリップして描画させる
どちらかの戦略を取レ
0204デフォルトの名無しさん
NGNGなるほど・・・
1はちょっと頭不足で理解が追いつかないので、2で。
1) 透明指定した部分を取り出して保存し
2) その部分だけに描画をかける
ってことですね。サンプルを探しながら挑戦してみます。
0205デフォルトの名無しさん
NGNG簡単にグラフや、散布図を書けるコンポーネントを色々探しているのですが、
なかなかこれといったものが見つかりません。
そこで、皆さんにお勧めのグラフ用のコンポーネントをお聞きしたいのですが。
0206Delフサギコ ◆A6VzDeLphI
NGNG0207デフォルトの名無しさん
NGNGちょっと分からなかったので・・・
0208Delフサギコ ◆A6VzDeLphI
NGNG0209デフォルトの名無しさん
NGNGと ) | |
Y /ノ 人
/ ) < >__Λ∩
_/し' //. Vミ,゚Д゚ミ/
(_フ彡 /
0210デフォルトの名無しさん
NGNGお金出しても良いなら TChartPro (http://www.teemach.com)
0211デフォルトの名無しさん
NGNGC++のヘッダをDelphiにコンバートしてるのですが、
typedef structの構造体にメンバ関数が入ってまして、
それをDelphiのrecord型に入れられるのでしょうか?
できましたら、サンプルなどをいただけたらありがたいです。
0212デフォルトの名無しさん
NGNG> こんにちは。
こんばんわ。
0213デフォルトの名無しさん
NGNG戸田>>>>>>>>>>>>>>>>>>>>>>フサ
0214デフォルトの名無しさん
NGNGスタックなobjectかヒープなclassに置き換え。
recordでは無理。
0215デフォルトの名無しさん
NGNGそれは、TObjectから新しいクラスを派生させて、そこに
メンバ関数を記述するということですか?
0216デフォルトの名無しさん
NGNGtype
Hoge = object
:
edn;
0217デフォルトの名無しさん
NGNGメンバ関数が入ってるという構造体を見せて
c++ の場合 typedef しなくても構造体は自動的にtypedefされるので
もしかして メンバ関数ではなくて 単なる関数ポインタでないの?
0218デフォルトの名無しさん
NGNGヒントありがとうございます。ヘルプと格闘してみます。
>>217
こんな感じです。
typedef struct {
void*(*get_ycp_ofs)( void *editp,int n,int ofs );
void*(*get_ycp)( void *editp,int n );
intreserve[6];
} EXFUNC;
0219デフォルトの名無しさん
NGNGGetBitmap(n, hoge) して、hogeがnilかどうかを見るしかないのかな・・・。
0220デフォルトの名無しさん
NGNG0221デフォルトの名無しさん
NGNGそれは関数ポインタ
0222質問者
NGNG詳細:
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デフォルトの名無しさん
NGNGhttp://science.2ch.net/test/read.cgi/future/1022864257/l100
0224デフォルトの名無しさん
NGNGXP対応のバージョンをつかうか、OSを換える
0225デフォルトの名無しさん
NGNG0226デフォルトの名無しさん
NGNGつい最近、どこかで似たような質問を見かけたんだが...
0227デフォルトの名無しさん
NGNGD7 でも同様。
0228デフォルトの名無しさん
NGNG0229デフォルトの名無しさん
NGNGtype 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今回は関数ポインタだから関係ないけど、
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デフォルトの名無しさん
NGNG0233デフォルトの名無しさん
NGNG0234デフォルトの名無しさん
NGNGバイナリエディタ用コンポーネントは標準ではありません。
0235デフォルトの名無しさん
NGNGじゃぁ、無理ってこと?
0236デフォルトの名無しさん
NGNGttp://www.nx.sakura.ne.jp/~elysium/software/pwtr/
0237デフォルトの名無しさん
NGNG0238デフォルトの名無しさん
NGNG0239デフォルトの名無しさん
NGNG○○って作れるの?という問いの答えは
作れるけどお前じゃ無理、と決まってます。
0240デフォルトの名無しさん
NGNGってたのは「プログラミング Windows」の Charles Petzold だっけ
0241デフォルトの名無しさん
NGNGだったかな?
俺はマンデルブロ集合を描くプログラムが定番だったな。
0242デフォルトの名無しさん
NGNGバイナリエディタを作ることが目的なら、自分で作ることを考えては?
少なくとも Delphi IDE と同じ程度のものを作ることは可能です。
バイナリエディタを使いたいのが目的なら、バイナリエディットに特化したコンポーネントを
入手し、使うことができます。
http://www.woodybells.com/binedit/
こんなのはどうですか?
バイナリエディタは他のことをやるための道具だ。というのであれば
市販品/シェアウェア/フリーソフトを探してもよいでしょう。
>>236 さんの提示した製品でもよかろう。
0243デフォルトの名無しさん
NGNG0244デフォルトの名無しさん
NGNGふーん。そうなんだ。
0245デフォルトの名無しさん
NGNGなぜでしょう。
0246デフォルトの名無しさん
NGNG0248245
NGNGVCLをだますのにかなり使っていました。
最近、これではいかんと思うようになりました。
0249デフォルトの名無しさん
NGNGWin32 アプリケーションには Java/.NET などのようにメモリセキュリティはないんだから、
メモリアドレスさえ取得できれば読み書きは可能。つーか、そうしてもらわないと困る。
0250デフォルトの名無しさん
NGNGもちっと調べてみるけど、MFC/VC6 でも怪しい動きをする。
調査が必要だ
0251デフォルトの名無しさん
NGNG完全にランダムで決定させる方法はありますか?
0252デフォルトの名無しさん
NGNG0253デフォルトの名無しさん
NGNGありがとうございました!m(_ _)m
0254デフォルトの名無しさん
NGNG0255デフォルトの名無しさん
NGNG適当にbinフォルダにあるコンポーネントをインストールしたら面白いよ。
確かメモリダンプコンポーネントがどこかにある筈
0256デフォルトの名無しさん
NGNGTFileStreamあたりを見るとよい。
TStream系が使えるようになるとだいぶ技術の幅が広がるよ。
0257デフォルトの名無しさん
NGNGABC = (['A', 'B', 'C']);
この ABC の要素数である3を得るにはどうしたらいいでしょうか?
0258デフォルトの名無しさん
NGNGこの括弧て意味ある?
0259257
NGNGs: string;
if (s[i] in ABC) then
raise Exception.Create(ABC + 'が入ってます');
0260257
NGNG○に入ってます
0261デフォルトの名無しさん
NGNG0262デフォルトの名無しさん
NGNG値を取得することはできません。
変数に代入するか、または型付定数、初期化済み変数を使うか。
0263デフォルトの名無しさん
NGNGその用法でなぜ要素数が欲しい?
sの文字数分そうやってチェックするだけだろ?
つまり、集合型の要素の最大数の求め方は俺にはわからん訳だが.
0264ちょっと遅いけど
NGNGif (Pos(s[i], ABC) > 0) then
raise Exception.Create(ABC + 'が入ってます');
0265デフォルトの名無しさん
NGNGどちらにしろ、要素数は必用ないな。
0266257
NGNGconst
_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 なんていやん
0267257
NGNG○SetLength(s, Length(_INVALIDCHARFILENAME));
0268デフォルトの名無しさん
NGNG_INVALIDCHARFILENAME = ['\', '/', ':', ',', ';', '*', '?', '"', '<', '>', '|', '+'];
_INVALIDCHARFILENAMEのメモリイメージを理解すれば自動で文字列化なんて無茶なことは言わなくなるよ。無難に(Ansi)Pos方式にしとけ。
if (Name[i] in _INVALIDCHARFILENAME) then
Nameにsjisが混入することも考慮しとけ。
0269257
NGNG何を読めばイメージが掴めるでしょうか?
>Nameにsjisが混入することも考慮しとけ。
気づきませんでした。ありがとうございます。
0270デフォルトの名無しさん
NGNGそんなことで一日悩んだわけじゃないだろうけど、時間の無駄っぽい
0271デフォルトの名無しさん
NGNGその使い方なら逆に
INVALIDCHARFILENAMEStr='\/:, , ;*?"<>|+';
と文字列にしてそれを集合型にするのがいいのじゃないの?
0272デフォルトの名無しさん
NGNGconst _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デフォルトの名無しさん
NGNGhttp://lounge.dip.jp/pl/upb/data/test.png
こんなエラーが出ます。
何がまずいのでしょうか?
コードは何も書いてません。
Del6 XPHomeSP1
0274デフォルトの名無しさん
NGNG0275デフォルトの名無しさん
NGNGフォームをテキストで表示して、確認してみ
0276デフォルトの名無しさん
NGNGIndy9では HTTP.Requrst.ProxyPortとか、HTTP.Requrst.ProxyServerは
HTTP.ProxyParam.ProxyPort、HTTP.ProxyServerに変更になっている
はず。
サンプルプログラムは、この辺を直してやらないとコンパイルできない
けど、コードは書いてないんだよね。
もしかすると Indy8がうまくアンインストールされてないんじゃない?
Windows\system32フォルダに Indy8のindy60.bplが残ってるとか。
0277デフォルトの名無しさん
NGNG一応壊れてはないみたいです。
>>276
とりあえずindy60.bplで検索するとC:\Program Files\Borland\Delphi6\Binにありましたが、
それを開いてみるとちゃんとパスは全てC:\Program Files\Indy\Sourceになっていました。
0278デフォルトの名無しさん
NGNG"コードは何も書いてません" ってのは、新規プロジェクトの
フォームにIdHttpをのせて実行したら、上記のエラーが出るという事?
デバッグで追い掛けてどのタイミング/どの行で例外が発生するか
わからない?
0279ねこま
NGNG設計時にそのフォームを開けば,無くなったプロパティを検出して修正を促してきます.
0280デフォルトの名無しさん
NGNGコードを書きたいのですが・・・。(処理終了→自動終了するアプリと一緒にWindowsも終了させたいという魂胆です)
シャットダウンは標準APIでいいとして、
1) 特定プロセスに割り当てられたアドレスを知る方法
2) それが生きているかを調べる方法
があったら教えてください。(ノД`)
0282デフォルトの名無しさん
NGNGいちいち理由を選ばないといけないのよ。(ハードウェアメンテナンスとか)
まあサーバだし、うちで3ヶ月立ち上げっぱなしで、とくに不具合ないからいんだけど。
0283デフォルトの名無しさん
NGNGfunction 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>bmp:=TBitmap.Create;
>bmp:=AAA(bmp);
なぜコンストラクタを実行する必要があるの?
0286デフォルトの名無しさん
NGNG�A実行ファイルを引数つきで実行する。
にはどういう関数を使えばいいですか?
0287デフォルトの名無しさん
NGNG○283
0288デフォルトの名無しさん
NGNG0289デフォルトの名無しさん
NGNG�@ FindFirst() と FindNext() ヘルプの例を参照
�A ShellExecute() or CreateProcess() or WinExec() API →google
0290デフォルトの名無しさん
NGNGスマソ
>>289
ありがとうございました
0291デフォルトの名無しさん
NGNGごめん、まちがい、Free できない
0292デフォルトの名無しさん
NGNGbmp:=TBitmap.Create;
bmp:=AAA(bmp); ← ここで上の行で作った TBitmap オブジェクトが行方不明
bmp:=AAA(bmp); ← ここで上の行で作った TBitmap オブジェクトが行方不明
bmp:=AAA(bmp); ← ここで上の行で作った TBitmap オブジェクトが行方不明
bmp.free; ← ここで上の行で作ったTBitmapだけが解放される
0293デフォルトの名無しさん
NGNG3つのオブジェクトが行方不明になる
0294デフォルトの名無しさん
NGNG関数を書き直して
function AAA(pBmp:TBitmap):TBitmap;
begin
result:=TBitmap.Create;
【処理】
result.Free; ← これを実行すると返値がタコになるでしょ!
end;
0295283
NGNG>>284
>そもそも function AAA(pBmp:TBitmap):TBitmap; こんな形の関数が必要なのか
この関数はアルファブレンドしたり、エフェクト処理とかをする関数なので
処理済bmpが帰ってきた方が便利かと思いまして、利便性だけ考えて関数に
しただけなんですが、ここらが間違っているのでしょうか・・・。
>>285
>オブジェクト参照というものが分かってない
ごめんなさい、全く判っていません。
かなりアホなんで勉強して出直してきます。m(。。)m
0296283
NGNGやっぱり駄目ですかBitmapで渡さない方向で
練り直します。ありがとうございました。
>>294
>これを実行すると返値がタコになるでしょ!
Free出来ないのでは、戻り値と言うか、たぶん、予想ですが、
戻そうとしている値があった場所を記憶していた値、
ポインタがfreeされて迷子になるだと認識しているのですが。
0297デフォルトの名無しさん
NGNGそういう考え方をするのは理解できる。でも、関数のなかでコンストラクタを
実行するのは、非常に危険だと思う。
function AAA(pBmp:TBitmap):TBitmap;
の形ではなく
procedure AAA(pBMP:TBitmap);
の形にして、渡した pBMP を加工するとよいと思う。呼び出し側で、加工まえの
画像を保持する必要があるときは、コピーをつくってからこの関数を呼ぶように
する。オブジェクトを参照する変数は、たとえば上の引数 pBMP などは、オブジェクト
自身を保持しているのではなく、それを指すポインタである、ということを理解する
必要がある。だから、引数の pBMP を加工しても、その結果は呼び出し側にそのまま
反映される。通常の参照渡し var の場合と同じ。オブジェクトを渡す場合は、var を
つけない方がよい。それ自体が参照なので。
0298デフォルトの名無しさん
NGNGコピーの作り方の例
copyBMP := TBitmap.Create;
copyBMP.Assign(originalBMP);
0299283
NGNG加工した画像は、戻り値で戻さないと駄目だ、
と思い込んでいたのが間違いって事ですね。
勉強になりました。ありがとうございました。
0300デフォルトの名無しさん
NGNG時と場合によるけどね
Singletonの実装では常套手段だし
0301デフォルトの名無しさん
NGNG283のは駄目だと思うけど、通常は関数内でコンストラクタ実行してもいいんじゃないの?
0302301
NGNG0303名無しさん
NGNG0304デフォルトの名無しさん
NGNGそうだね。文法的に駄目という意味ではなく、関数をブラックボックスと見なすとき
そのユーザに対して、この返値のオブジェクトは使用後必ず Free してください、
という注釈が必要になるでしょう。そのことが関数自体で完結していないので危険
だと思う。
>> Singletonの実装では常套手段だし
この場合は、むしろ呼び出し側では通常 Free は実行してはいけない、場合なのでは?
0305デフォルトの名無しさん
NGNG0306猛ランド
NGNG数が増えたのはいいけど、イマイチわかりにくいな。
サンプルもDL汁じゃ寂しいよ、Indyはフリーとはいえ
日本語サイトも無いしなんとかしてよ某!
0307デフォルトの名無しさん
NGNG確かにIndyコンポが多いのは嬉しいけど使わないのも多いな。
TCP関連とかスレッド対応になってるし、一昔前より理解するのは難しいのかな?
>>303とか、IdTCP*使ったら作れるんじゃないかな。
0308デフォルトの名無しさん
NGNG俺時々やるなぁ、インスタンス生成して返す関数。
絶対に開放を忘れないように、それとはっきりわかる関数名付けるけど。
TGraphicCreate(filename:sring): TGraphic;
とかで、画像フォーマットに合わせたインスタンスで、なおかつファイルを読み込んで
オープンするとか。
もちろんファイルオープンに失敗したら、関数内でインスタンスは破棄して例外を関数外に
投げるようにしてる。
0309デフォルトの名無しさん
NGNGなるほどね。ユーザが呼び出し側コード内で、コンストラクタとデストラクタの
呼び出し回数を数えられるような感じだといいかもね。ところで
TGraphicCreate(filename:sring): TGraphic;
この関数なかなか便利そう! コードさらすつもりない?
0310デフォルトの名無しさん
NGNGvar
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デフォルトの名無しさん
NGNG0312デフォルトの名無しさん
NGNGありがとう。使ってみる。
0313ねこま
NGNG0314デフォルトの名無しさん
NGNGDelphiってタダで使えるんですか?
なんか、どっかからダウンロードできるって聞いたんですけど。
0315デフォルトの名無しさん
NGNG0316デフォルトの名無しさん
NGNG0317デフォルトの名無しさん
NGNGありがとうございました。
0318デフォルトの名無しさん
NGNG0319デフォルトの名無しさん
NGNG0320デフォルトの名無しさん
NGNG0321デフォルトの名無しさん
NGNGまじっすか〜7の値段見たらパソ版で10000したんだけど、
多分これも無理って事はプロ版買わなきゃなんないんですよね〜68000円て無理だ(藁
0322名無しさん@303
NGNG0323デフォルトの名無しさん
NGNGFreeした後、必ずnilするクセをつけろ!
FreeAndNil(Result); しる!
0324デフォルトの名無しさん
NGNG>Freeした後、必ずnilするクセをつけろ!
だめな例に教訓たれても・・・
0325デフォルトの名無しさん
NGNGじゃあ、これで・・・
Freeした後、必ずnilするクセをつけろ!
FreeAndNil しる!
0326デフォルトの名無しさん
NGNG1) D6パソをタダで入手。
2) 小銭貯金を始めると同時にD6パソで修行開始。
3) 金払ってくれるヤツがいる様なソフトを作れようになるのより\68000貯まる方が早い。
6) Pro版を買って小銭貯金の投資を回収。(←これが困難)
※ 速攻で売れるようなソフトがすぐに作れるようになれるような才能溢れるキミはガタガタ言わずにPro版買え!
0327デフォルトの名無しさん
NGNGproでもD7でもD8でも買ったらいいんじゃないのか?
最低でもD6パソを普通に使いこなせないと、
売れるようなソフトなんて組めないだろ?
0328デフォルトの名無しさん
NGNG一般保護ダイアログが出てしまって、インストールできませんでした。
borlandとvectorの所から4回程ダウンロードし直して試したんですが、
全て駄目でした。環境はWindows98SEです。
ちなみにアップデートモジュールの方をダウンロードしてきて実行
するとちゃんとセットアップが実行される(本体居れてないので失敗
しますが)ので、Delphi6Personalのexe本体が壊れてる可能性が
高いと思うんですが、そういう情報はないでしょうか?
0329デフォルトの名無しさん
NGNGインストール後の Delphi IDE が吹き飛ぶの?
インストーラーが落ちるのなら Windows Installer の問題だろうから、
IE の最新版でもインストールしてみたらどうだろうか?
IDE が起動時に吹き飛ぶ場合は... なんだろうね。聞いたことが無いけど。
OS に変な/変わったモジュール入れていませんか?
0330デフォルトの名無しさん
NGNG0331328
NGNGセットアップに関係する様なダイアログは出ません。
以下はエクスプローラーから
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
0332328
NGNGバージョン情報タブを選択すると同じ様に落ちます。
↑を見ても判る通り、落ちるときは起動したシェル毎落ちてしまいます。
0333328
NGNGしいて言うならCD革命です。
他のEXEは問題なく実行できるのに。
0334デフォルトの名無しさん
NGNGCD革命
0335デフォルトの名無しさん
NGNG有名どころだと鷹月ぐみなのとことか
0336328
NGNGConfigSafeという、パソコンにプリインストールされていたソフトでした。
(セットアップ前の状態を保存するソフト)
これをアンインストールしてBorlandDelphiPersonalEditionJP.exeを
実行したら正常にダイアログが表示されました。
0337デフォルトの名無しさん
NGNGつまりDel厨はライセンス違反野郎ばかりってわけだね。
0338デフォルトの名無しさん
NGNGそのインストールファイルを Explzhなどで開いて解凍。
そしてその解凍されたファイル群のなかのsetup.exeを
実行すればインストールできると思われ。
InstallShieldで作成されたインストールファイルを、Win9x
でプロパティ表示すると落ちる問題と同じと思う。
漏れも別のソフトのインストールで遭遇した。
0339デフォルトの名無しさん
NGNG「VC++で作りますた!」と答えるのに中身はdel。
同人ゲーム界のスタンダード(藁
0340デフォルトの名無しさん
NGNG0341デフォルトの名無しさん
NGNG0342デフォルトの名無しさん
NGNGhttp://www.campus.ne.jp/~ishigami/
違反者の癖に「同人ソフトで儲ける事について」なんてコンテンツがあるよ(w
http://www.campus.ne.jp/~ishigami/CREATION/COLUMN/DOUJIN.htm
0343デフォルトの名無しさん
NGNG0344デフォルトの名無しさん
NGNG↓
>>同人活動というのは扱い上「非営利」であり
↓
利益が出ていなければ商用に該当しない
↓
>>ちなみに私の同人活動の儲けは、ほぼ現状赤黒ゼロです
del厨毒電波
0345デフォルトの名無しさん
NGNG違いのわかる漏れは使い分けてます
0346デフォルトの名無しさん
NGNGそうです。どのタイミングで発生するかはちょっとわかりませんでした。
>>279
フォームはずっと表示してます。(意味取り違えてる?)
0347デフォルトの名無しさん
NGNGなぜVC++なんかを使っているのかと
0348デフォルトの名無しさん
NGNGbegin
CurrentFile := OpenDialog.FileName;
FileName := ;
end;
こうやったときに、FileNameにフルパスではなくただそれのファイル名を代入したいのですが、
どうすれば出来ますか?
0349デフォルトの名無しさん
NGNGExtractFileName
0350デフォルトの名無しさん
NGNGあ、そうでした。何か前にそんなのをみたような気がしてたんで…。さんくすです。
0351デフォルトの名無しさん
NGNGPageControlよりリソース消費が少ないからそっちの方がいいと思うんですけど。
0352デフォルトの名無しさん
NGNG0353デフォルトの名無しさん
NGNGOnChangeに何を書けば良いのかさっぱり。
そこをどうか教えてくださいませんか?
0354デフォルトの名無しさん
NGNG0355デフォルトの名無しさん
NGNGTabControl.Tabs.AddObjectとか
TabControl.IndexOfTabAtとか
TabControl.Tabs.Objectsとか
TabControl.Tabs.IndexOfObjectとか
を上手く使えば出来る。
0356デフォルトの名無しさん
NGNG出来ますか、出来ませんかって聞いてどーしよってんだろう?
0357デフォルトの名無しさん
NGNG0358デフォルトの名無しさん
NGNG0359デフォルトの名無しさん
NGNGしか聞いていないので、たとえ答えをズバリ教えてもらってもお礼を言いません
「そこまで聞いてねーけど勝手に答えた」って感じ
0360デフォルトの名無しさん
NGNGbmp := 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これだけでは PixelFormat が pfDevices のままなのでダメです.
0362デフォルトの名無しさん
NGNGたとえばWinExec('copy file1 file2',SW_SHOWNORMAL);
でfile1が存在しなかったとき、カスタムのメッセージボックスにエラーを表示したいのですが。
0363デフォルトの名無しさん
NGNGパイプ。
0364Delフサギコ ◆A6VzDeLphI
NGNG∧ ∧ DelでC/Sシステムを作るとき
ミ ゚Д゚彡 何を使うと、いいのでしょうか。..
〜ミ,,,,uuミ
VBでWinSockを使ってて、
なかなか便利なので、Delでも同じ事したいです
0365デフォルトの名無しさん
NGNG通信プロトコルレベルを作りこむ気か?
0366デフォルトの名無しさん
NGNGVB 使いつづけたら? >> VBフサギコ
0367360
NGNGではどうすればいいのでしょう?
bmp.PixelFormat:=pf1bit; を bmp.Monochrome:=True; の
前に入れた場合、Canvas.TextOut で文字をどう描けば良いでしょうか?
後に入れた場合、出来てるのは いわゆるモノクロビットマップではなく
パレット付きの2色のビットマップが出来ています。
(SaveToFileしてペイントブラシで見ると色付き文字になってる)
0368360
NGNGhttp://www.google.co.jp/search?q=DuplicateHandle+Delphi&lr=lang_ja
>>364
C/Sというとデータベースの応用しか思いつきません
BDEでも小規模なら十分使えた(遅いけど)と思います
0369デフォルトの名無しさん
NGNGということではないかな?
DCOM 使えば?
0370360
NGNG検索して
http://www.users.gr.jp/ml/archive/delphi/42732.asp
を見つけました。
pf1bit=1bit DIB(2色カラーパレット付)で Monochrome=True が 1bit DDB (モノクロビットマップ)で
DDBだと直接メモリイメージを操作出来ないという感じなのかな?
そして作成直後に pf1bitを設定すると変な色パレットが付いてるのでTextOutとかが巧くゆかないと
0371デフォルトの名無しさん
NGNG>このビットマップの0,1の反転したくて
DIBのモノクロビットマップはパレットがあるんで、色データではなく
パレットの色を入れ替えるだけで反転するよ
0372ねこま
NGNG私もそれがベストな方法だと思います
しかし Bitmap.Palette := CreatePalette(...) だと反転できないみたいです.
パレット 0 が clBlack 固定なのかな?
TBitmap を欺いて SetDIBColorTable すればできるけど.
0373デフォルトの名無しさん
NGNGうーん、TBitmap ではどうだかしらないんですが、すくなくとも普通の DIB なら
ゼロが黒固定ということはないです。
0374ねこま
NGNG変な色パレットなんて付かないと思うんですけど……
うちでは黒白の2値パレットになります.
DDB->DIB ってビデオカードに影響されるんでしょうか?
0375デフォルトの名無しさん
NGNG0376Delフサギコ ◆A6VzDeLphI
NGNG∧,,∧ /
ミ;゚Д゚彡< あうあうあ・・・・
ミつ つ \
〜ミ ,, ミ.  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
∪ ∪ >>369さん
イエス
0377360
NGNG>>372 そこらへんが色々判らないですね
>>374 その時の状態というか直前のパレットの状態によって違う様子
http://www.users.gr.jp/ml/archive/delphi/42732.asp
によると、Width Height=0 で変になるという事だから そういう事じゃないでしょうか
>>375 モノクロビットマップは DDB といってもWindows依存なだけでは?
0378デフォルトの名無しさん
NGNGIndy はだめ?
0379デフォルトの名無しさん
NGNGDBサーバに接続するだけじゃ駄目なの?
それともP2Pみたいなシステムって事?興味あるので詳しく解説希望
0380デフォルトの名無しさん
NGNGそのソフトの入力画面が表示されている間だけは他のソフトの制御を出来なく
したいのですが、良い方法は無いでしょうか。
いつもは普通のソフトだけど、ある瞬間だけスクリーンセーバーとして偽装する
ことができればやりやすいと思うんだけどなかなかうまくいかないもんで。
0381ねこま
NGNG0382デフォルトの名無しさん
NGNGこのページ、i-mode N503iで表示されません。
P504i では表示されるのですが、
表示させる方法をお分かりの人がいたら、教えてください。
サーバー構成は、Apache+SSL(Apache1.3.27 OpenSSL0.9.6g) です。
0383デフォルトの名無しさん
NGNGレスどうも。
スクリーンセーバーは今あるヤツをそのまま使いたいので
スクリーンセーバーとは別に作りたいのですよ。
0384デフォルトの名無しさん
NGNGそのソフト、ものすごく使いたくないけど、
キー入力を完全に無効にしたらどう?
0385デフォルトの名無しさん
NGNG0386デフォルトの名無しさん
NGNGヘルプアップデートしても?
うちのは英語出てこないけど?
0387デフォルトの名無しさん
NGNGTRichEdit とか英語じゃない?
7はまだヘルプアップデート出てないし…。
0388ねこま
NGNG>スクリーンセーバーとは別に作りたいのですよ。
時間が来たら一時的に入力を促すだけのスクリーンセーバーを起動して,
終わったらあなたのお気に入りのスクリーンセーバーに戻せば良い.
他にアイデアは無いです.
0389デフォルトの名無しさん
NGNGこれは違うの?
ttp://www.borland.co.jp/delphi/del7docup.html
0390デフォルトの名無しさん
NGNG0391デフォルトの名無しさん
NGNG「スクリーンセイバーの作り方 delphi」を検索して、他のアプリを隠す部分だけ真似すりゃ
いいんじゃないでせうかね。
0392Delフサギコ ◆A6VzDeLphI
NGNGミ,,゚Д゚ミ インヂーの何を使えばヨロシコですか?
>>379さん
DBは使わないのです
鯖も蔵も自作アプリで単に通信したいだけなんすが。
P2Pってのは違うと思われ(ヨクワカ)
0393デフォルトの名無しさん
NGNG単に通信したいだけなら WinSockレベルで書いてもしれてるでしょ
LAN内だけなら
メールスロットなんてのもあるし
数秒レベルの遅延が許されてるなら共有ファイルを決めて
共有ファイルを通してメッセージ交換すれば? 簡単だし
Win9xを無視するなら名前付パイプでやりとりとか
0394デフォルトの名無しさん
NGNGSOAP/Web service なんかどうなの?
0395デフォルトの名無しさん
NGNGつかVBもDCOM使えたような…というよりDelphiより得意なんじゃないか?
0397デフォルトの名無しさん
NGNG>なかなか便利なので、Delでも同じ事したいです
ここにつっこむ人はいないの?
0398デフォルトの名無しさん
NGNG0399Delフサギコ ◆A6VzDeLphI
NGNG∧,,∧___ /なでか、微妙に煽られてる
/ミ゚Д゚*ミ/\< 希ガスる...
/| ̄∪∪ ̄|\/ \_____
|____|/
レスありがとです
>>393さん
WinSockスレベルのしれてる度がどれだけシレってるのかが
よくわかなのです。
スロットはしたことありません。共有ファイルは簡単しょうっすね
名前尽きパイプも吸った事無く、よくわかですた。
>>394さん
そこには逝きたいでつが、大げさすぎる肝汁ですが。
>>395さん
VBは使って使って使ってガンバッテモ鬱になる言語ですが、何か.
DCOMはみかかDOMOCOみたいなので、嫌いなのはともかく
やったー事ないのでよくわかです。
>>396さん
なんとかなりそうでし。クスコクスコクスコ
>>397さん
突っ込みどころ満載ですが、何か?
>>398さん
後ろの方が、VBでやって簡単にLAN内の2台で通信できてたので
「おや、まあ、デルファイさんでも簡単ですかねえ」
と思いましたが。
0400勝手にMailSlot講座
NGNGまずは、標準のメールスロットに送信をしてみましょう
フォームに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講座
NGNG1、ローカルにハンドル型変数を定義する
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講座
NGNG1、必ず届くとは限らない=届いたかどうかはそれだけでは判らない
2、複数届く場合もある
3、ドメインを設定してなければ \\*\ が使えない=相手名を設定しなければいけない=結局WinSockAPIが必要かも
4、1回の送信バイト数には制限がある
0403デフォルトの名無しさん
NGNGスレッド作る方法何か無いでしょうか?
(もしくは、なるべくサイズが大きくならない方法)
あるソフトのプラグイン作ってるんですが、
なるべく軽く済ませるためにClassesは使いたくないのです。
0404403
NGNGSystem の BeginThread でやりまつ。
0405デフォルトの名無しさん
NGNGのBBS_NONAME_NAMEの部分を取り出したいのですが、どうすれば出来ますか?
一応SETTING.TXTをダウンして保存するところまでは出来たんですが、取り出す方法が分からず…
Iniと似てるのでReadStringで取り出せるかな、とも思ったのですが、セクションがないしどうにも出来なくて。
0406Delフサギコ ◆A6VzDeLphI
NGNG∧,,∧ / StringListに入れて
_ ミ,,゚Д゚彡_< Valuesで取り出せるよ
.=| |==U==U=| |= \
| |@ミ ミ .| |  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| | ∪''∪ | | NamesとValuesをチェックっす
| | | |
0407Delフサギコ ◆A6VzDeLphI
NGNG∧,,∧ /
_ ミ,,゚Д゚彡 _< ネットワク関係でレスくれた人サンクスコ
.=| |==U=U==| |= \メルスロソース、ありがとん
| | .ミ ミ | |
| |ノ∪''∪. | | Indyでやってみてソース書いてから
| | | | レスろうかと思ってたけど、禿忙しいので
かけそうにないです
今日も出勤…もうぬるぽ…
0408デフォルトの名無しさん
NGNGおお、出来ました!さんくすです!
0409デフォルトの名無しさん
NGNG今までも OpenJaneDoe 使ってもらわせてましたけど
今回のクッキーの件でふと興味を持ち
http://www.geocities.co.jp/Milano-Killer/8366/CompOJ.html
を参考に Delphi をインストールしてみますた。
んでスレ見て問題の部分を SPID を PON に
したりしてコンパイルしてみましたが
[致命的エラー] Jane2ch.dpr(1): ファイル 'System.pas' が見つかりません
て出ます。これはどういうことでしょか。
0410409
NGNG0411デフォルトの名無しさん
NGNG0412デフォルトの名無しさん
NGNGおいおい、それでは教えて厨失格というものだ。
0413Delフサギコ ◆A6VzDeLphI
NGNG∧,,∧ /
ミ*゚Д゚,,ミ < よっしゃ、ばれてない!
ミ つ つ \_____
@ミ ミ
(ノ'''''∪ (ヒミシ)
0414デフォルトの名無しさん
NGNG0415デフォルトの名無しさん
NGNG0416デフォルトの名無しさん
NGNG0417415
NGNGそれくらい検索すれ (`Д´)
0418デフォルトの名無しさん
NGNG0419デフォルトの名無しさん
NGNG0420デフォルトの名無しさん
NGNG0421デフォルトの名無しさん
NGNGStep2へ進むためのメールが来ません。
ISPとhotmail両方試したけど両方音沙汰無し。
時間がかかるものなんでしょうか?それとも休止中?
0422421
NGNG0423デフォルトの名無しさん
NGNGとることはできないのでしょうか?
こんな感じで・・・
procedure FuncName( param1, param2, param3 ・・・ :String );
無理ならデフォルトパラメータでやることにしまつ。
0424デフォルトの名無しさん
NGNG外国でリメイクしてヒットした戦隊モノ
0425デフォルトの名無しさん
NGNG>>423 Format のような引数指定ではどうかな?
0426423
NGNGさんくすです。解決しますた。
後の人の為に。
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デフォルトの名無しさん
NGNG0429デフォルトの名無しさん
NGNG0430デフォルトの名無しさん
NGNG>428
「オープン配列コンストラクタは、集合構成子と同じように、
式をカンマで区切って全体を大カッコで囲んだものです。」
だそうだ、ヘルプによると.
0431デフォルトの名無しさん
NGNG0432デフォルトの名無しさん
NGNG0433デフォルトの名無しさん
NGNG0434デフォルトの名無しさん
NGNG0435デフォルトの名無しさん
NGNG0436デフォルトの名無しさん
NGNG0437デフォルトの名無しさん
NGNGなんか気持ち悪い
0438デフォルトの名無しさん
NGNG0439デフォルトの名無しさん
NGNGLog4J のようなロギングライブラリで定評があるのって何?
0440デフォルトの名無しさん
NGNG戻ってきますた。あー落ち着く。単にスキルがしょぼいだけだが。
0441デフォルトの名無しさん
NGNG0442デフォルトの名無しさん
NGNG0443デフォルトの名無しさん
NGNG0444デフォルトの名無しさん
NGNG親子関係がよくわかっていません。Form1を閉じると、上に載っているimageも自動で消滅させるには
Ownerを設定するだけでいいのでしょうか?
0445デフォルトの名無しさん
NGNGあとParentも調べとけ
あとメモリリーク検出するユニットも使っとけ
0446ねこま
NGNGParent 大石内蔵助
Child 大石主税
0447デフォルトの名無しさん
NGNGTBitmapはそうじゃない。TPersistent継承だからストリーム入力機能は
あるから、コンポーネントのプロパティにすれば dfm に保存は勝手にやってくれるが
生成、解放は別に管理が必要
0448デフォルトの名無しさん
NGNG0449デフォルトの名無しさん
NGNGTScrollBoxにTImageをのせる
0450デフォルトの名無しさん
NGNGやっぱそれしかないんですか…さんくすです。
0451デフォルトの名無しさん
NGNG>やっぱそれしかないんですか
TScrollBox は、もっぱらそのような目的で使用される。
TImage は TWinControl の派生クラスではないので、それ単体で
スクロールバーをもつことはできません。
0452デフォルトの名無しさん
NGNGなるほろ。色々と参考になりました。
0453ねこま
NGNG私もこの方法がお手軽で良いと思っていましたが,
画像ビュワとか作ってみると,拡大で限界が見えてくるんですよ.
コントロールのサイズを果てしなく大きくできないし
どんどん描画が遅くなるし
>やっぱそれしかないんですか…さんくすです。
それしかないわけではなくて,一番簡単な方法という事ですね.
不満があるなら TImage は諦めて,イメージの表示サイズにあわせて
自分でスクロールバーを制御する事が必要となります.
0454デフォルトの名無しさん
NGNGアニメ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デフォルトの名無しさん
NGNG0456デフォルトの名無しさん
NGNG0457デフォルトの名無しさん
NGNGform1をShowmodalします。で、form1で処理をいろいろ行い、form1のonCloseで
unit1が作ったオブジェクトをFreeし、form2側では form1.showmodal の次に form1.Free を書きました。
が、form1を閉じると「読み込み違反が起きました」が山のように出ます。
なにか間違ってるのでしょうか・・・。
0458デフォルトの名無しさん
NGNG0459デフォルトの名無しさん
NGNGあ、なるほど。ヘルプ見て気付きました。
あと、Form1 := Tform1.create(Application); とかやっておけば、メインフォームを閉じたときに
form1も掃除できるのでは?と思ったのですが、どうでしょうか。
Memcheckには反応せず、LeakCheckerには反応したのでちょっと不安で(;´Д`)
0461デフォルトの名無しさん
NGNGForm1がメインフォーム=アプリと同じ寿命なら最初から自動生成しとけ。
0462デフォルトの名無しさん
NGNG0463デフォルトの名無しさん
NGNG例外情報を渡すためのクラスとしてIDispatchインターフェースとExceptionクラスを継承したクラスを作成し、
例外発生時にはそのインスタンスを作成およびraiseして、クライアントアプリケーション側では、
そのインターフェースからエラー情報を取得するようにしたかったのですが、
クライアント側で発生する例外はただのExceptionになっています。
例外オブジェクトはActiveXとアプリケーションの間を飛び越えられてないようです。
ActiveXでエラー情報を渡す方法ってどのような方法がありますか?
0464デフォルトの名無しさん
NGNGえーと、どのスレで回答すればいいのかな?
他のスレでは、もうコメントついているのかな?
0465デフォルトの名無しさん
NGNG>クライアント側で発生する例外はただのExceptionになっています。
EOleException じゃない?
0466デフォルトの名無しさん
NGNGPageControlのタブ名の代わりに縮小した画像を表示したいのですがどうすれば出来ますか?
0467デフォルトの名無しさん
NGNGマルチポストは確実にあなたを破壊します。
0468デフォルトの名無しさん
NGNGオートメーションサーバでクライアントからインターフェースを
受け取りたいのですが、下記のようにやってみたら
「EOleException'エラーを特定できません'」という例外がでてしまいます。
何かアドバイスを頂けると嬉しいです。
・サーバ側のタイプライブラリでIAgentを定義
・クライアント側で IAgnetを実装したクラスTMyAgent (TInterfacedObjectから派生)を作る
・クライアント側で
begin
FServer := CoServer.Create;
FServer.ShowStatus; // ← 普通のメソッドは呼べる
FServer.AddAgent(TMyAgent.Create as IAgent); // ← ここで例外
end;
0469デフォルトの名無しさん
NGNGそういうちょっと高度な質問は ML にした方が質の高い回答が得られると思うぞ。
0470デフォルトの名無しさん
NGNG>FServer.AddAgent(TMyAgent.Create as IAgent);
これだと、どの場所が問題か判らないから3行に変更してみたら?
FMyAgent:=TMyAgent.Create;
IMyAgent:=FMyAgent;
FServer.AddAgen(IMyAgent);
0471468
NGNG>FServer.AddAgen(IMyAgent);
ここで例外がでました。
試しにデバッグ版DCUを使ってみたところ、(これが原因かどうか分かりませんが)
MyAgentがQueryInterfaceでIStdMarshalInfoを要求されてE_NOINTERFACEに
なっているみたいです。
うーん、わけ分かんない(-_-;;
>>469
確かにそう鴨。
てゆーかML入れよ>漏れ
0472デフォルトの名無しさん
NGNGそしたらサーバ側で AddAgent にブレークポイント仕掛けてみたら?
0473468
NGNG0474デフォルトの名無しさん
NGNGじゃ クライアント側でブレークポイント仕掛けて CPU 窓を開いて ステップ実行したら?
というか まずAddAgent の定義を晒してみたら?
0475デフォルトの名無しさん
NGNG全然関係ない事で盛り上がっていて返事が無いので、
こちらで質問します。
BCBスレによるとTRichEditとTMemoを同じ行間にする事は無理らしいのですが、
1つのTMemoコンポーネント内に
二色以上の文字列を表示させる事はできますか?
できるならばどのようにすればいいのでしょうか?
できないならば、選択して普通のテキストとしてコピーできる
TMemoと同じ行間で、2色以上の文字を表示できるようにするには、
どのような方法をとるのが一般的でしょうか?
プログラム側で文字列と色は書き込むので、
ユーザーにとってはReadOnlyで構いません。
0476デフォルトの名無しさん
NGNGそのようなことができるエディタ用コンポーネントはたくさんあるし、
それを使ったらよいと思う。なぜ、TMemo と同じ行間にこだわるのか
謎です。
0477デフォルトの名無しさん
NGNGありがとうございます。エディタ用コンポーネントは大きい物ばかりなので
サイズが大きかったりシェアウェアだったりするので敬遠していました。
TRichEditだとWin98とWin2000で行間が変わって
Win2000だと行間が異様に広すぎて情報が表示しきれないのです。
0478デフォルトの名無しさん
NGNGTRichEditでフォントを調整してもダメなのですか?
0479デフォルトの名無しさん
NGNGその項目にあわせた情報を文字列として生成して
Tipヘルプとして表示したいのですがどうやればいいですか?
0480デフォルトの名無しさん
NGNG0481デフォルトの名無しさん
NGNG0482デフォルトの名無しさん
NGNGTThreadで複数のスレッドを作って、それらのスレッドから同じグローバル変数(Integer型)にアクセスしています。
このグローバル変数を参照・代入するときに同期処理をしなかった場合、つまり複数のスレッドから同時にアクセスした場合に、どの程度の不具合が出るのでしょうか?
計算結果がおかしくなるだけで済むのか、それともメモリ違反が起きてアプリケーションごと停止してしまうのか、エラーの程度を知りたいです。
詳しい方、お願いします。
0483デフォルトの名無しさん
NGNGと思う。マルチCPUでもなければ「同時に」アクセスする、という事態はない。
0484デフォルトの名無しさん
NGNGマジ?
0485デフォルトの名無しさん
NGNG0486デフォルトの名無しさん
NGNG確かに、D7のTMenuItemのヘルプには
| ヒントテキストは,ヘルプヒントが有効な場合
| (つまり,フォームおよびアプリケーションの ShowHint プロパティが
| true の場合)に,ユーザーがメニュー項目の上でマウスポインタを止めた
| ときにヘルプヒントウィンドウに表示されます。
とあるけど、全然表示されませんね。
バグかな?それとも、WindowsXPだから?
0488デフォルトの名無しさん
NGNGスレッド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デフォルトの名無しさん
NGNG0490デフォルトの名無しさん
NGNGレスありがとうございます。
Integer型への単純な代入・参照ぐらいでは、変な計算結果になることはあっても致命的なエラーは起こらないということですね。
重ねて質問なのですが、同じようなケースで、複数のスレッドからInt64型やAnsiString型のグローバル変数を参照・代入したときや、インクリメントの処理(x:=x+1)などを行った場合はどうなるのでしょうか?
482のケースと同じと考えていいんでしょうか。
どなたかご存知の方がいらしたらお願いします。
0491デフォルトの名無しさん
NGNG>>488と同じような事をした場合
$11111111 と $22222222 を 交互に書き込んだら
$11111111 と $22222222 以外に $11112222 や $222211111が読める場合がマレに出て来る。
AnsiStringについては2つのスレッドが 単なる代入をするだけなら 参照を書き換えるだけだから問題
ないだろあうが、
str:=str+"1"
str:=str+"2"
のような感じで相互に書き換えるとメモリ管理が変になるかもしれない
0492デフォルトの名無しさん
NGNGthreadvar ってどういう時に使うのでしょうか?
0493デフォルトの名無しさん
NGNG違うんじゃないか、と考える根拠はなに?
そもそもなにやりたいの?
0494デフォルトの名無しさん
NGNGおつ、断言してるね。
0495デフォルトの名無しさん
NGNGもと質問ではエラーの程度が知りたいみたいよ。内容がどうなるかについては
興味ないみたい。というか、そもそもどうなるかわからんし
0496デフォルトの名無しさん
NGNG0497デフォルトの名無しさん
NGNG>>493
>>違うんじゃないか、と考える根拠はなに?
>>そもそもなにやりたいの?
説明が足りなくてすいません。
質問した理由は、マルチスレッドのサンプルを見てみると同期処理をしなければいけない場合としなくてもいいケースがあるらしく、その辺の基準を知りたかったからです。
Int64について聞いたのは、Int64は32bitCPUでは1度に処理できないと思うので、複数に分けられた処理が重なるとどうなるか、
AnsiStringは、文字列を代入するときなど内部的にメモリ操作なんかをしてそうなので、その処理が重なるとどうなるか、
インクリメントについて聞いたのは、インクリメントは参照と代入をしますから、その処理が重なるとどうなるか
というのがそれぞれ気になったので質問しました。
>>491
ということは、Int64については、Pascalのコード上では別々に実行されても、アセンブラのレベルでは処理が混ざってしまうケースがあるってことですね。
で、それでも致命的なエラーにはならないと。
0498デフォルトの名無しさん
NGNGそういう値はTThread継承してフィールドとして保持するからあまり使われない。
AnsiStringや動的配列は内部で関数コールしてるからスレッドセーフじゃないかも。
0499デフォルトの名無しさん
NGNG○単ワードで完結したデータを 多他方が読むだけの場合
例えば片方が読むだけの処理で片方が読んで書く処理はOK
複数ワードのデータの場合は片方が書くタイミングによって
は正しく送れない
基本的にそれ以外は同期処理が必要
ただ、同期処理といっても自前で簡単に出来る場合もある。
1、複数ワードのデータ、例えば文字列をスレッド間で渡す場合は、
文字列の領域を読むスレッドが
完全に読める一定時間確保しておいてそのポインタを渡せばよい
2、セマファのように相互に書き換える旗を実装する場合は
x86ならXCHG命令を使う
3、複数スレッドでカウンタを実装する場合はアセンブラのinc命令を使う
これを巧く組み合わせればOSの同期処理を使わなくても大丈夫
0500デフォルトの名無しさん
NGNG同期処理をさぼりたい理由って何だろうか。しなくてもよいことは
しない方がよいことは分かるが
0501デフォルトの名無しさん
NGNGのになんでめんどくさいことしなきゃならんの。速度クリティカルならまぁ
わかる
0502デフォルトの名無しさん
NGNGマルチスレッド使いこなすには同期処理しなくてよい場面をどれだけ作れるかって事
じゃないかなと思ってたんだが・・・・
まあ、無理やり理由つけると、OSの同期処理を使ってしまうとKylix<->Delphi移行なん
て時に不便かな・・・程度かな
Synchronize は Windowsメッセージを使って、メインスレッドにやらせてる訳で
よく判らんけど結構重い処理だと思うよ。
たまに呼び出すならいいけど、例えば、処理の進展状況を報告する程度の事なら
integer のグローバル変数を介して非同期にやりとりした方がいいでしょ
0503デフォルトの名無しさん
NGNG0504デフォルトの名無しさん
NGNGGetSysColorの呼出個所にパッチをあてておいてWM_SYSCOLORCHANGE を送るとか・・・無理かな
0505503
NGNGそれはTEditコンポーネントを改造するという事ですか?
ごめんなさい、良く分かりません(^^;
0506デフォルトの名無しさん
NGNGいや、たぶん出来ないだろうって事だろ
0507503
NGNG0508デフォルトの名無しさん
NGNGできるかもしれないが、超めんどくさいことをしなけりゃならん、と
思う。これでどう。
0509デフォルトの名無しさん
NGNGBrushCopyかなんかで色を置換するのは駄目?ちらつくか。
0510デフォルトの名無しさん
NGNG1)TEdit はウィンドウズのエディットコントロールのラッパー
2)その各部の色(背景色以外)はシステムカラーで決まってる(?)
3)システムカラーを変更するとできるだろう。たぶん(藁
4)でもその結果、すべてのエディタに影響が及ぶ
5)これを回避するために・・・・よくわからんが、めんどくさいことをしなければならないだろう
ま、標準コントロールの色をいじりたがるのは初心者だけだね。
0511503
NGNGよーするに有効な手段はないからてめえでコンポーネント作れ
で、よろしいか?
0512デフォルトの名無しさん
NGNGなんで逆切れしてるの。
選択色を変更しなけりゃできない機能ってどんなことだい?
わざわざコンポーネントを一から作る価値に見合う機能なんだろうね?
0513デフォルトの名無しさん
NGNG凶器の沙汰。
0514デフォルトの名無しさん
NGNG「沙」は砂、「汰」は選び分ける
水中でゆすって、砂を捨て米や砂金を選び分ける意
0515504
NGNGそういうレベルならモナーに聞いて欲しかったな。
挑戦的な質問に聞こえたからああいう答え方になったけど、
TEditコンポーネントを改造というかその延長では出来ないと思うよ
だから、TRichEditで頑張った方がいいと思うよ
0516デフォルトの名無しさん
NGNG程度しかないのに、コンパイルすると4MB近くになってしまいました。
今までは、せいぜいバイナリは1.5倍〜2倍程度だったのですが、今回だけ異様です。
この妙なサイズはどこから来るのでしょう?
(外部リソースは全て動的にアクセスしているので、exeが巨大化する理由がわからないんです)
0517デフォルトの名無しさん
NGNG0518デフォルトの名無しさん
NGNG0519デフォルトの名無しさん
NGNGつか、スルーされた時点で、からかいに来たのかと疑ってる。
0520デフォルトの名無しさん
NGNGやってみてから言ってよね。
0521503
NGNG>>519
その方法を詳しく教えて頂けませんか?
0522デフォルトの名無しさん
NGNG0523デフォルトの名無しさん
NGNGいい質問だね。きっと、519は具体的に答えてくれるよ。
0525デフォルトの名無しさん
NGNG0526503
NGNG>>511
これは偽者です。
レスが遅れまして申し訳ございません。
>>512
フォームのデザインの関係で見栄えがちょっと悪かったので
変更できるのかな〜と・・・
>>513
改造でも狂気の沙汰ですか?
>>515
私のレベルがスレと合ってなかったみたいっすね(^^;
もっと簡単に出来るのかと思ってたけど、かなり難しいようですね。
どうりでググっても見つからない分けだ。
0527デフォルトの名無しさん
NGNGというのが一番的確な回答
0528デフォルトの名無しさん
NGNG0530デフォルトの名無しさん
NGNG515さんも答えてるけど、TEditの改造で簡単にできるとは思えないよ
0531デフォルトの名無しさん
NGNG後から標準の選択色で塗られているピクセルだけ塗り替えるって事。
BrushCopyってのは、ヘルプの文面があれだけど、要するに透明色つき描画なんで、
ダブルバッファリングで得たコントロールのイメージBitmapから、
標準の選択色を透明色にして…云々。
書いてて、DIBでポインタアクセスの方が手っ取り早い気もしてきた。
まあ手段は何でもよくて、最悪GetPixel/SetPixelで1ピクセルずつ調べても、
面積にもよるけど最近のCPUならそんなに遅くならない気もする。
0532デフォルトの名無しさん
NGNG標準コントロールは、WM_PAINTのWPARAMにDC送ると、
画面じゃなくそっちに描いてくれるので、ダブルバッファリングは割と楽。
0534デフォルトの名無しさん
NGNG>>面積にもよるけど最近のCPUならそんなに遅くならない気もする。
おう、すごく現実的な回答だけど、こんなのでは実装したくなくなるねぇー
0535デフォルトの名無しさん
NGNGへたれ。
0536デフォルトの名無しさん
NGNG0537デフォルトの名無しさん
NGNGそれは認める。いろいろ勉強になった。ありがとう。
0538デフォルトの名無しさん
NGNG0539デフォルトの名無しさん
NGNG537 です。実用的かどうかはともかく、実際、わたしならできるように思います。
うぬぼれでなく。
0540503 ◆eRDUfXaGp2
NGNGBrushCopyって便利そうですね。
コンポーネント単位で描きなおすんじゃなくて、
画面の標準色の有り無しを調べて塗り直すんですね。
よっしゃ、諦めよう・・・・。
0541デフォルトの名無しさん
NGNG0542504
NGNGああなるほど、今実験したら
type TMyEdit=class(TEdit)
procedure WMPaint(var Message: TWMPaint); message WM_PAINT;
end;
でちゃんとWMPaintも呼ばれるし、 これなら簡単ですね
0543デフォルトの名無しさん
NGNGそう。あと、選択部分の矩形領域をどうやってもとめるのか、を
解決できれば、できそう。GetPixel はできればやりたくないです。
0544504
NGNGも必要かな。でもたいした事じゃないか
0545デフォルトの名無しさん
NGNG別に求める必要は無くて、使いたい色で一面に塗られたもうひとつのメモリビットマップに、
標準選択色を透明色ということにして色抜きコピーしてやれば解決。メモリの無駄とも言う。
全部調べるにしてもDIBでポインタアクセスした方がGetPixelより圧倒的に速いし。
0546デフォルトの名無しさん
NGNG1) EM_GETSEL を送って、選択領域の最初と最後の文字インデックスを求める
2) EM_POSFROMCHAR で選択領域の最初と最後の文字の論理座標を求める
3) 2) で求めた座標の最初と最後のところの近辺を GetPixel で調べて
矩形の四点を求める。うーむ、左上と右下の2点で十分だね。
一行エディットだとこれでいいと思う。
0547デフォルトの名無しさん
NGNGこれの具体的な説明を教えて。
0548デフォルトの名無しさん
NGNGで、例えば、白地にひとつ青い矩形が書かれた画像があって、青を赤にしたいとする。
真っ赤な画像を別に用意して、そこへ、元の画像を青=透明でコピーすると、白地に赤い矩形になる。
こんな説明でいい?
0549デフォルトの名無しさん
NGNG>うぬぼれでなく。
「人に頼れば」出来ると言う事だったらしい。プ
0550デフォルトの名無しさん
NGNG分かると思う。帰宅したらやってみる。ありがとう。
0551デフォルトの名無しさん
NGNGいや、GetPixel や ScanLine を使えばできることはできる。もっと効率よく
ということさ。
0552デフォルトの名無しさん
NGNG0553デフォルトの名無しさん
NGNGusesしてるユニットは?
0554デフォルトの名無しさん
NGNG0555ななしへたぐらま ◆XcB18Bks.Y
NGNGもしかしたら…ですが,『プロジェクトオプション』 - 『リンカ』の
『TD32デバッグ情報を含める』にチェックが入っていませんか?
0556デフォルトの名無しさん
NGNG0557デフォルトの名無しさん
NGNGバカはしゃべるなよ。
0558デフォルトの名無しさん
NGNG.NETなら簡単なんですか?
0559デフォルトの名無しさん
NGNG0560デフォルトの名無しさん
NGNGアフォかそれが出来ないこととOOPLの限界とは関係ないだろ。
素人はでてくんな。バカ。
0561デフォルトの名無しさん
NGNG0562デフォルトの名無しさん
NGNG0563デフォルトの名無しさん
NGNGところで俺はGooTaのワンタンはおいしいと思うんだ。
0564デフォルトの名無しさん
NGNG0565504
NGNGもともとのWinコントロールにその機能が無いのに無理でしょ。
DelphiやネイテブのWinアプリだと最悪 DLL呼出部を検索してそこにパッチをあてる
という方法が使えるわけだけど、.NET だとそれも使えない訳で
0566504
NGNG試しにオーナ描画で
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本題と関係ないけど、EndPaintもinheritedも無いような、気のせい?
0569デフォルトの名無しさん
NGNG>>526 フォームのデザインの関係で見栄えがちょっと悪かったので
>変更できるのかな〜と・・・
のような厨房質問への回答としてはむなしいね。「労多くして功少なし」
0570デフォルトの名無しさん
NGNG0571デフォルトの名無しさん
NGNGで、APIプログラミングとOOPLに何の関係が?
0572デフォルトの名無しさん
NGNGC# でのサンプルを提示してくれるかな?
無理だろうけど。
0573デフォルトの名無しさん
NGNG0574デフォルトの名無しさん
NGNGいーでしょ。おまえが管理しているわけではないんだから黙っていろ。
コードを提示できるならすばらしいことなんだし。
0575デフォルトの名無しさん
NGNGおっ、OOPLの意味もわからん馬鹿がきたか。>>570 は書き込みとしても意味不明
だと理解できないのか。厨房は寝る時間だぞ。
0576デフォルトの名無しさん
NGNG0577デフォルトの名無しさん
NGNG0578デフォルトの名無しさん
NGNGバカに対して、吉外のようにわめくあなたもすばらしい。
そろそろ帰りな。
0579↑典型例(´∀`)
NGNG0580デフォルトの名無しさん
NGNG.NETのでしょ?
使ってないもので、しかも、試作品のパッチもらっても困るよな。
無料でD8が送られて来たら大歓迎だが(笑
0581デフォルトの名無しさん
NGNG0582デフォルトの名無しさん
NGNG0583デフォルトの名無しさん
NGNG実はImageとフォームの大きさを同じにしたいのですが、
SetBounds(Left, Top, Image.Width, Image.Height + GetSystemMetrics(SM_CYCAPTION));
こうやるとボーダー(?)分幅や高さが足りなくなってしまいます。
こういう場合どうするのが一番良いんでしょうか?
0584デフォルトの名無しさん
NGNG0585デフォルトの名無しさん
NGNGつーか、「フォーム全面にイメージを載っける=見た目、イメージだけ状態」
にしたいってことでは?もしかして。
0586デフォルトの名無しさん
NGNGあ、それでした。さんくすです。
>>585
いや、そうではないです。
0587デフォルトの名無しさん
NGNG0588デフォルトの名無しさん
NGNGできないのでしょうか?
0589Delフサギコ ◆A6VzDeLphI
NGNG∧,,∧∩ /
ミ,,゚Д゚彡 < あけ、おめ
(ミ ミ \____________
〜ミ ミ
∪''∪外部エディタではないが、
メニューでエディタを切り替えられる方法
[ツール][ツールの設定]を選びませう
[プログラム]
エディタの指定
C:\Program Files\EmEditor3\EMEDITOR.EXE
[実行時引数]
普通にファイルを引数として渡す
$EDNAME
EmEditorの場合、行番号も引数に渡すことが可能
/l $ROW $EDNAME
一度、Delphiでファイルを保存してから
EmEditorでファイルを開く方法
$SAVE /l $ROW $EDNAME
同様に、編集中ファイルのフォルダを開くと
実行ファイルのフォルダを開くを
作っておくと、かなり便利。
0590デフォルトの名無しさん
NGNG0592デフォルトの名無しさん
NGNG0594デフォルトの名無しさん
NGNGMSも最初はフリーカーソルだったのに、ラインエディタあたりから変わった。
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
NGNG0597Delフサギコ ◆A6VzDeLphI
NGNGミ,,゚Д゚ミy━~~
U ミ
俺もマンセですけどね。
フリカ拒絶派も取り込まないと
ガリレが生き残る道は…
単にフリカON/OFFスイチがあればいいだけなのに
無いだけで、IDEくそ呼ばわりですから....
0598592
NGNG俺にゆーな。試したんなら直してくれよ。
>あと、コードテンプレートを指定エディタで開くのも
>いれておくと、楽に編集できますです。
こっちは載ってるよ。
0599Delフサギコ ◆A6VzDeLphI
NGNGミ,,゚Д゚彡
ミつ[|lllll]).
〜ミ ミ
∪''∪ コードテンプレの記述はありました。
WZの他にEmとか秀の設定があるといいかも。
あと、編集前に$SAVEは入れた方がいいかと。
0600デフォルトの名無しさん
NGNGヘルプ、読め。最低限の礼儀だ。
0601デフォルトの名無しさん
NGNGフリーカーソルに慣れて欲しいからかもしれないね。
フリーカーソルの方が便利だから。
非フリーカーソルで、コメント2を追加したい場合はどうするの?
Line1; // コメント1
Line2;
↓
Line1; // コメント1
Line2; // コメント2
0602デフォルトの名無しさん
NGNG0603デフォルトの名無しさん
NGNGLine1;の後ろ全選択してコピペ
0604デフォルトの名無しさん
NGNGフリーカーソルの方が面倒では?
Line1; // コメント1|←カーソル
Line2;
↓
Line1; // コメント1
Line2; |←カーソル
↓
Line1; // コメント1
Line2;|←カーソル(BS連打)
↓
Line1; // コメント1
Line2; // コメント2|←カーソル
0605デフォルトの名無しさん
NGNG0606デフォルトの名無しさん
NGNGLine1; // コメント1
Line2;
Line1; // コメント1|←カーソル
Line2;
↓
Line1; // |コメント1 Ctrl+← で "コ"に移動
Line2;
↓
Line1; |// コメント1 ←を3回押す
Line2;
↓
Line1; // コメント1 ↓を押してコメントを書き始める
Line2; //
>>603
Line1とLine2の長さが違う場合はどうするのですか?
0607デフォルトの名無しさん
NGNG非フリーカーソルの場合、
Line1; // コメント1|←カーソル
Line2;
↓(↓カーソル押)
Line1; // コメント1
Line2;|←カーソル
↓
Line1; // コメント1
Line2; // コメント2|←カーソル
0608デフォルトの名無しさん
NGNG0609デフォルトの名無しさん
NGNGじゃ、常に ; の二文字後からコメントが始まるの?
// を縦にそろえたりはしない?
AA;
AAAAA;
AAAAAAAAA;
AAAAAAAAAAAAA;
↓
AA; // コメント
AAAAA; // コメントの続き
AAAAAAAAA; // コメントの続きの続き
AAAAAAAAAAAAA; // 等など
0610デフォルトの名無しさん
NGNGhttp://yahooo.s2.x-beat.com/linkvp/linkvp.html
0611デフォルトの名無しさん
NGNG矩形選択時だけフリカになるだろ。
TeraPadとかほとんどのエディタがそういう手法だが?
0612デフォルトの名無しさん
NGNGボックス選択とカーソルモードは直接的な関係はないと思われ。
0613デフォルトの名無しさん
NGNG>フリカ
通ぶって 略語作って 赤っ恥
0614デフォルトの名無しさん
NGNG行末で→を押すと次の行に移動する事?
リターンキーは使わないのかな…。
0615デフォルトの名無しさん
NGNG0616デフォルトの名無しさん
NGNG他の人も使ってるけど見えないのかなw
0617デフォルトの名無しさん
NGNGEnterしたら改行入っちゃうじゃん。
0618デフォルトの名無しさん
NGNG0619デフォルトの名無しさん
NGNG上書きモードで使うので大丈夫です。
0620デフォルトの名無しさん
NGNG0621デフォルトの名無しさん
NGNG0622デフォルトの名無しさん
NGNG結 局 慣 れ
0623デフォルトの名無しさん
NGNGこれ嫌。
0624デフォルトの名無しさん
NGNG0625デフォルトの名無しさん
NGNG0626デフォルトの名無しさん
NGNG0627デフォルトの名無しさん
NGNG0628デフォルトの名無しさん
NGNG0629デフォルトの名無しさん
NGNG0630デフォルトの名無しさん
NGNG0631デフォルトの名無しさん
NGNGンナバカナ
0632デフォルトの名無しさん
NGNGImage.Picture.LoadFromStreamとやろうとしても未定義の識別子と怒られてしまいます。
ヘルプ見てもやっぱりあるようなのですが…何か勘違いしてます?
0633デフォルトの名無しさん
NGNG0634デフォルトの名無しさん
NGNG0635デフォルトの名無しさん
NGNGヘルプ確認してみ。
0636デフォルトの名無しさん
NGNGTPicture参照
LoadFromStream メソッドは,Stream から画像を読み出します。
procedure LoadFromStream(Stream: TStream);
説明
LoadFromStream を使うと,TStream オブジェクトから画像を読み出すことができます。作成される TGraphic クラスは,ストリームに格納されているデータの型によって指定されます。
ストリーム内のデータは,別の TPicture オブジェクトまたは TGraphic の下位オブジェクトの SaveToStream メソッドへの呼び出しによって書き込まれたものです。
0637デフォルトの名無しさん
NGNG0638デフォルトの名無しさん
NGNGなんかImage.Picture.Graphic.LoadFromStream(StringStream);だとエラーが出るんで使えるのかと思ってました。
0639638
NGNGだと大丈夫なんですが、
Image.Picture.Graphic.LoadFromFile('test.jpg');
だとエラーが出てしまいます。
これって何が原因なんでしょうか?
0640デフォルトの名無しさん
NGNG何のエラーが出るの?
0641デフォルトの名無しさん
NGNG0642カラス
NGNG0643デフォルトの名無しさん
NGNG改行に成らないときがあるのですが
どうしたら元に(改行するように)戻るのでしょうか?
0644デフォルトの名無しさん
NGNG0646デフォルトの名無しさん
NGNG実はBitmapとJPEGの両方を対応したいのですが、
Image.Picture.Graphic := TJPEGImage.Create;
とやるとBitmapが読めなくなってしまいます。
本当は自動的にグラフィックデータのフォーマットを判別するTPictureを使いたいのですが、
TPictureにはLoadFromStreamないようなので困っています。
0647デフォルトの名無しさん
NGNG0648デフォルトの名無しさん
NGNG君の考えている方法とは違うけど、俺ならこうする。
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カラス
NGNG0650デフォルトの名無しさん
NGNG0651デフォルトの名無しさん
NGNG無い。
0652デフォルトの名無しさん
NGNGTCard = class 〜〜 end;
TEventCard = class(TCard) 〜〜 end;
THappenCard = class(TCard) 〜〜 end;
というTCardを基底にした2種類のクラスがあり、
この2種類のどちらも格納できる配列を作成したいのですが、
その場合、Array of TCard とすれば問題ないのでしょうか?
もし、その配列に TEventCard を TCard に型キャストして代入したとすると、
TEventCard で拡張したフィールド変数などの情報は保持されるのでしょうか?
0653デフォルトの名無しさん
NGNG0654デフォルトの名無しさん
NGNG問題ないです。キャストが必要なのは値を取り出す場合のみです。保持されます。
0655デフォルトの名無しさん
NGNG良くわかりました。
素早い御回答ありがとうございます。
06561000
NGNG0657993
NGNGTForm.OnCloseQuery で分岐処理をしていて、TForm.Close メソッドを呼び出しても
必ずしも Form が閉じられるとは限らない場合、当該 Form が閉じられたかどうか
確認するにはどうすればいいのでしょうか。
0658デフォルトの名無しさん
NGNG>>657
Form.Visible
0659デフォルトの名無しさん
NGNG0660Delフサギコ ◆A6VzDeLphI
NGNG∧,,∧ カスタマイズダイアログで
ミ,,゚Д゚彡 ActionMainMenuBar
ミ つ旦)~~ に"戻る"を押すと
〜と,,,~),,~) MainMenuが消えますね。なぜかしら。
あと、ヒントのショートカット表示の動作が変かな?
ちょっともてあそべば、使えるものに
なるような気がするような、しないような。
とりあえず、ここのサンプルは勉強になるでしょう。
http://homepages.borland.com/strefethen/info/ABExpressTutorial.htm
いろいろ触ったけど
MainMenuBarだけカスタマイズOFF
という動作は出来ないみたい。
MainMenuだけは違うクラスを使った方がいいかもね。
(DelphiIDEもMenuは違うもの使っているみたいだし)
ツールバーカスタマイズに関してはそれなりに使えそうな手ごたえでした。
0661675
NGNGTForm.OnClose で Action := caHide にしている場合には、Visible で
判定できそうですが Action := caFree にしている時はどうなんでしょう。
おそらく Form のメンバにアクセスしない方がいいとおもうので、
外部にフラグを用意して OnClose でセットするくらいしかないのでしょうか?
0662デフォルトの名無しさん
NGNG0663デフォルトの名無しさん
NGNGShowModalではなくShowしてるんならフラグしかないね。
>>662
nil
0665Delフサギコ ◆A6VzDeLphI
NGNG/ ̄ \ いろいろ試したけど
0⌒> ヽ [Tools][customize]
⊂ニニニ⊃ のメニュー部分だけ変更させたくない
ミ,,゚Д゚,彡 って動作は出来ないみたい…
ミ,つ酒O
と,,,~),,~)
なんとなく、なのですが
ActMainMenuは使いにくい
オブジェクトツリーがないとオブジェクト選択も難しいっす。
0666デフォルトの名無しさん
NGNGがんばって作ってみます
0667デフォルトの名無しさん
NGNG季節外れだな。
0668ComboBox1
NGNGComboBoxのイベントは OnClose → OnChange の順で起きる
のですが、OnCloseの時点で選択肢に変化があったかどうかを認識し、
それにより動作を変えたいです。
これを実現するにはどうしたらよいでしょうか。
0669650
NGNGWebを参照するプログラムを作っているのですが、どうしてもHTTPのステータス情報が
必要なのです。
WinInetで作成する方法も考えたのですが、TWebBrowserを使用するほうがはるかに
簡単なのです。(Httpステータスコードさえ解決すれば、すべて解決するのです。)
誰かTWebBrowserでHttpのステータスコードを取得する方法を見つけてください。
0670デフォルトの名無しさん
NGNG'String' と 'Cardinal' には互換性がありません
'TStrings' と 'Cardinal' には互換性がありません
が出てくるんですが、どうやって互換性があるようにすればよいでしょうか
0671て。 ◆qnISHi2Po.
NGNGMojirets → String Mojiretsus → TStrings Tsuka → Cardinal として
Mojiretsu := Format('%d', [Tsuka]);
Mojiretsus.Text := Format('%d', [Tsuka]);
Tsuka := StrToInt(Mojiretsu);
Tsuka := StrToInt(Mojiretsus.Text);
0672デフォルトの名無しさん
NGNGここで答えが出ないなら
IEコンポーネントを使い倒すスレ
http://pc3.2ch.net/test/read.cgi/tech/982930049/
0673デフォルトの名無しさん
NGNGこんな奴がプログラミングすんな
マジで
0674デフォルトの名無しさん
NGNGDelphi6のバックアップはどうすればいいの?
Borland\以下のファイルとレジストリコピーして
OSとDelの再インストールが終わったらまた上書きすればいい?
067520歳男
NGNG二年で350万hitした。一度やってみなよ。
初回のみだけど、1枚以上のオパーイ画像晒せば4000hitくらいカウンタ回る。
転用されるだけされて警告せずにアク禁することもできるし、裁判で白か黒に
思い切って訴えてしまえば50パーセントで神になる。
カッコ良きゃオフラインでセクースすればいいだけ。暇つぶしになる。
ビデオはめ撮りとかスカトロとか色々あるのでマジでお勧め。
0676デフォルトの名無しさん
NGNG20歳にもなってこんなレベルの人間もいるのか...。
0677670
NGNGサンスク
自分はまだ入った事のない領域だ(?)
0678デフォルトの名無しさん
NGNGもっと面白く改良しろバカ。
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デフォルトの名無しさん
NGNG0681デフォルトの名無しさん
NGNG0682デフォルトの名無しさん
NGNG0683て。 ◆qnISHi2Po.
NGNGあ できた ありがと
と思ったら一番前にいるのにアクティブにならん タイトルバーがグレイだ Why!?
SetActiveWindow(Form1.Handle); ってしても
Form1.Activate; ってしてもだめだ どちて?
0684デフォルトの名無しさん
NGNG0686デフォルトの名無しさん
NGNG0687て。 ◆qnISHi2Po.
NGNGfunction 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デフォルトの名無しさん
NGNG0689デフォルトの名無しさん
NGNGA ありません
↑これって、字数の関係で>>1に書けなかったのかもしれないけど
>>1に書くべきでは…
最近は無いか…。この質問。
0690デフォルトの名無しさん
NGNG0691デフォルトの名無しさん
NGNG200 とか 404 とかだろ
0692デフォルトの名無しさん
NGNG403 とか 501 とかだよ
0693668
NGNGコンボボックスを開くときにitemindexの値を変数に取得しておき、
OnCloseUpイベントでitemindexに変化があったかどうかを比較
することで変化の有無に応じて動作を変えることに成功しました。(^^;
0694デフォルトの名無しさん
NGNGあの内容でわかったのか?
0695688
NGNGTWebBrowserってIEコンポーネントをつかうのれすね。
最初の HTTP/1.0 302 Found が欲しいと。
0696デフォルトの名無しさん
NGNG下のようなサンプルプログラムを書いてみたのですが
これだと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の続き
NGNGvar
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の続き
NGNGprocedure TTreeItem.SetData(const Value: String);
begin
FData := Value;
end;
procedure TTreeItem.SetTitle(const Value: String);
begin
FTitle := Value;
end;
0699デフォルトの名無しさん
NGNGしてしまったものに
Memo2.Lines.Add(TTreeItem(Node.Data).Data);
でアクセスするからでしょ
Node.Data に格納されるのは参照だけ。本体を free しちゃだめでしょ
0700デフォルトの名無しさん
NGNGAssigned(Node.Data) and (TObject(Node.Data) is TTreeItem)もチェックしたら。
0701696
NGNG>>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デフォルトの名無しさん
NGNGTreeView1.Items.AddObject(nil, NewItem.Title, @NewItem);
で、@NewItem じゃなくて pointer(NewItem) じゃないかと思ふ
0703696
NGNGあ、うまくいきました。
pointerにキャストと@ 演算子は違うものが
入るんですね。。中身を調べてみたら違ってました。
そこら辺また勉強しなおします。
>>702さんみなさんありがとうございました。
0704696
NGNG>>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実際の >>704 のコードでは、
TreeView1.Items[i].Delete;
の前に
TTreeItem(TreeView1.Items[i].Data).Free;
を実行します。
0707デフォルトの名無しさん
NGNGあぁ、レベルの違いがあって削除するのはめんどくさいね。
TreeViewの各ノードのDataにAddするときに、別にリストとして保持しておけばいいよ。
TListを使えば純粋にリストとして保持できるし、TObjectListを使えば自動的に
メモリを解放することもできる。
0709ねこま
NGNG0710デフォルトの名無しさん
NGNGForm1がメインフォームね。
Form1とForm2と両方とも開いている状態で
タイマーでも通信でも何でも良いんだけど、
非ビジュアルな(?)方法でForm1からForm2.Closeするようにコーディング。
普通に動かすとForm2.CloseでちゃんとForm2が閉じるんだけど、
アプリケーションを最小化した状態でForm2.Closeするとなんかおかしい。
タスクバーのアプリケーションをクリックして
最小化を解除すると、Form2が残りっぱなしになってる。
しかも、この生き残りのForm2は×ボタンをクリックしても閉じない。
Form2.Hideでも同様の現象でした。
デバッガーで除いてみるとHide後、Form2.VisibleはFalseになってる。
にもかかわらず、画面上にForm2はちゃんと表示されている。
Delphi(というかWindows)ってこういうもんなの?
ガイシュツだったらスマソ。
0711デフォルトの名無しさん
NGNGありがとう。最小化した状態で勝手にクローズはしないと思うけど、覚えておくよ
0712デフォルトの名無しさん
NGNG激しくガイシュツ。VCL読んでみれ。
あ、あと、Windows固有の現象ではないぜよ。
Kylix2でも再現できるはずだす。
0713デフォルトの名無しさん
NGNGTToolBarをD&Dして移動させた後の状態を保存するにはどうすれば
良いのでしょうか?
TToolBarのTop,LeftをINIファイルで保存、読み込みなどはしてみたのですか
うまくいかないです。。
0714
NGNGDelphiでプログラムは可能ですか?。
例えば、http://www.google.com/のテキストボックスに
検索したいキーワード(ActiveX DOM取得など)を入力して
ボタンを押すまでの処理を自動化させるには、どうすれば良いでしょうか。
0715デフォルトの名無しさん
NGNGマルチすんな。クソボケ。
0716714です
NGNG0717マルチ用レス
NGNG>プラウザのボタンや、テキストボックスに文字を入力したりって、
>Delphiでプログラムは可能ですか?。
可能かもネ。
>例えば、http://www.google.com/のテキストボックスに
>検索したいキーワード(ActiveX DOM取得など)を入力して
>ボタンを押すまでの処理を自動化させるには、どうすれば良いでしょうか。
努力すればいいです。
0718デフォルトの名無しさん
NGNGなんで? Close内でReleaseが呼ばれてちゃんと開放されるんじゃないの?
0719デフォルトの名無しさん
NGNGん?CloseとReleaseは関係ないのでは?
0720718
NGNG0721デフォルトの名無しさん
NGNGtemp := fuga[i]; ・・・・・
を記述したとき、もし何らかの原因で hoge に負の値が入ってしまった場合、
動作は予測できるものなのでしょうか?
実は、アクセス違反が不定な位置で出現するようになってしまい、一番
疑わしいのがコレなのです。IDEから実行しても何もエラーを吐かなかったので
疑いもしなかったのですが、環境を変えるとピョコピョコ出るんです・・・。
0722デフォルトの名無しさん
NGNG負なら実行されないはず、どうしても不安ならこうしちゃうとか..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たしかに、最初から 0 to -1 とかにするとコンパイル時にループが削除されますね。
動的に-1を入れても実行されませんでした。ということは、他の部分なんですね・・・。
疑わしい場所ぜんぶに try except を張って、どこで例外が
発生してるかを見るしかないようです。ショボン
(このとき、Delphiの例外か、OSの例外かというのは関係ないのでしょうか?)
0724デフォルトの名無しさん
NGNGアクセス違反が不定な位置で出るのは、その出た位置ではなく
1、配列境界を越えたりして、スタック等別の領域への爆弾を落とした後
2、解放してしまったオブジェクトにアクセスしてしまった誤爆
とかで、爆弾を落としたり、誤爆を探さないといけませんよ。
だから、例外で捕捉してもみつからない事が多いです
0725デフォルトの名無しさん
NGNGΣ(・ω・ノ)ノ す、すみません、一度で理解できませんでした・・・。
AccessViolationは、1) 割り当てられていない領域に手を出したとき、
2) あると思ったものが無かったとき、に発生という認識だったのですが、
これが不定に起こるということは・・・自分が確保したメモリ外の領域に書いてしまい、
それが消えてしまった → アクセスしたら何もない、ということ等でしょうか。
こればかりは簡単に検出できないか・・・。
(例外で落ちるとNTがログを吐きますが、これを見てもクラッシュした近辺は
わかっても誤爆した位置はわからないんですよね・・・。)
0726デフォルトの名無しさん
NGNG配列の境界違反あたりから調べてゆく方がいいです。
とりあえず{$R+}から
0727デフォルトの名無しさん
NGNG(境界違反が毎回発生してくれてれば有り難いのですが・・・。)
0728デフォルトの名無しさんlo
NGNG初歩的な質問ですみません。
0729デフォルトの名無しさん
NGNG0730デフォルトの名無しさん
NGNG正常にプログラムが起動しないらしいのですが、
Win2000やXPだとちゃんと動きます、
当方には既にWin98/MEの環境が無いので検証できないのですが、
このバグ?をメールで知らせてくれた人に協力してもらって
ソース部分を全て削除してEdit,ComboBox,ListBox,TImageが
フォームに張り付いただけのハリボテを作成して、
それでテストしてもらいましたが、
やはり フォームが表示される前にプログラムが落ちるとの事です。
同じプログラム(ハリボテの方)をDelphi5で
コンパイルしたモノはちゃんと起動するみたいなのですが・・・・。
Delphi7でコンパイルしたプログラムはWin98やMEでは動かない
ものなのでしょうか??
0731デフォルトの名無しさんlo
NGNGありがとうございました!
0732デフォルトの名無しさん
NGNGそういう時は例えば
http://preview.connectix.com/trial/jp/
こんなの入れて Win98をインストールしたら?
0733お茶はいかが
NGNG+ 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詳しい情報は
http://www.users.gr.jp/ml/archive/delphi/55123.asp
0736デフォルトの名無しさん
NGNG回答ども。
うーん、VB専用なんですか。
でも、使用しているエディタコンポーネント、TSonEditってやつがMSIME.TLBがあれば
再変換が簡単に実装できるようになってるんです。
でもないことには始まらない…
0737IP記録実験
NGNGhttp://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を提出することがある。
0738725
NGNGいま怪しい部分に {$R+} を適用して実験しています。
ですが、かなりの時間動かしても、特に範囲エラー例外などは出てきません。
コレのバイナリを、デバッガのない環境に持っていってもチェックできるのでしょうか?
でしたら、"なぜか例外が出るマシン"の持ち主に送ってみて、ERangeErrorが出るか確認しようと思うのですが・・・。
0739デフォルトの名無しさん
NGNGそれなら配列範囲外ではないのでは?
・ポインタを使っていませんか?
・型変換を使っていませんか?
・スレッドを使っていませんか?
0740デフォルトの名無しさん
NGNG俺はWIN98SEにDelphi7インストールして開発してるし正常動作してる。
「メールで知らせてくれた人」の環境が腐ってる可能性もあるぞ。
あるいはCLXで作ってるとか。
0741725
NGNG>>739
ポインタは使ってません。アタマがついてってないので・・・。
型変換は、数値表示用に IntToStr等が点在しています。
スレッドは意図して使ってはいませんが、別スレッドで動くVCL(というかタイマー)があります。
0742デフォルトの名無しさん
NGNG後者ならあぼーん。
0743デフォルトの名無しさん
NGNGその辺、もっと詳しく。
VCL標準のTTimerは今のところスレッドではない。
VCLが単なるコンポーネントをさしていて、タイマーがマルチメディアタイマーのことなら、
それはマルチスレッドになっているので、注意しなくてはならない。
0744デフォルトの名無しさん
NGNG0745デフォルトの名無しさん
NGNGD7が出た頃に誰か似たようなことを書いてたよ、
うろ覚えなんで正しくないかもしれんが
コンボかリストか忘れたけどリスト内に文字なし("")があると
落ちるとか落ちないとか.(Win95の話だったかも)
0746725
NGNGあ、使っているのはMMTimerです。(TTimerは精度が悪かったので)
別スレッドで動くとは聞いていまして、一応オブジェクトへのアクセスはMMTimer.OnTimer内から
だけ行うものとそれ以外で分け、ぶつからないように気を付けてはいるのですが・・・。
(あっ、何カ所かOnTimer内でWriteしてそれ以外でReadするのがあったような・・・)
0747デフォルトの名無しさん
NGNG>>ヒロユキタン
いつまでやるですか?
0748デフォルトの名無しさん
NGNG一番気になるのが、エディタの文字の横の文字間隔がなんだか広くなってること。
フォントのサイズ変えても縦に小さくなっても横幅は変わらず。
これはどっかで変更できるんでしょか?
0749デフォルトの名無しさん
NGNGZBsKvw39 みたいな厚顔無恥さも必要だね
0750デフォルトの名無しさん
NGNG状況依存型のヘルプがポップアップじゃなくてヘルプのウィンドウの中にできてしまう。
こんなはずじゃなかったんだけど。
0751デフォルトの名無しさん
NGNGBoldになってんじゃねーの?
0752748
NGNGそれはないっす。
実際比べてみれば一目瞭然。右マージンの位置が全然違うから。
それともうちだけ?
0753ななしへたぐらま ◆XcB18Bks.Y
NGNGDel7は未体験ですがDel6からBoldにしなくても
文字間隔が広いままのようですね.
私の場合は広くなること自体よりも
それによって文字間隔が空くために格好悪いのが気になりました.
『MS ゴシック』や『MS 明朝』ではそれほど気にならなかったのですが
手持ちのヒラギノやダイナフォントだと間延びして気持ち悪かったです.
買うかどうかわからないけどガリでは改善してほしいです.
最近使っている『Osaka - 等幅』(12または9ポイント)は
Del6で試していませんがDel5で予約語だけBoldにして
間延びチェックをした限りでは比較的気になりませんでした.
0754デフォルトの名無しさん
NGNGここに書いても意味無いと思うが?
0755デフォルトの名無しさん
NGNGあのスカスカ感がかなり気持ち悪いけど、しょうがないのか・・・。
ついでに言えばメインメニューのスカスカ感も同時に気になる。
実際の機能や操作には全く関係の無い趣味的な問題だけに
どうしようもないなー
0756デフォルトの名無しさん
NGNG2003 年は年明けから暗い話ばかりだ...
0757デフォルトの名無しさん
NGNG何も知らんような奴が流れ込んで来る
あとZDnetも何かにつけて2chネタばっかり書きすぎ
0758748
NGNGHTMLタグのみBoldになってました。一つでもBoldがあると
全部影響受けるんだね・・・
0759デフォルトの名無しさん
NGNGなっちゃうのはどうすればよろしいでしょか?
0760デフォルトの名無しさん
NGNG0761デフォルトの名無しさん
NGNGグッジョブ
0762デフォルトの名無しさん
NGNG意味不明のレスをつけてるやつがいるんだけど、何?
どっかとまざってんのか?
0763デフォルトの名無しさん
NGNG>>148 + >>15(>>150)
0764デフォルトの名無しさん
NGNGIP記録に反対する荒らしだと思われ。
0765デフォルトの名無しさん
NGNG既知外がいるんだよ...
http://pc3.2ch.net/test/read.cgi/tech/1029122103/n226-229
ということらしい。
0766デフォルトの名無しさん
NGNGハングル。
0767ななしへたぐらま ◆XcB18Bks.Y
NGNGということはエディタの文字間隔がBoldなしでも大きくなってしまうのは
Del6だけということなのでしょうか.
(それとも私の見間違えだったのでしょうか…)
0768デフォルトの名無しさん
NGNG今後は書き込みは無いものとして脳内補完しまつ
0769デフォルトの名無しさん
NGNGどうでしょ?
とりあえず、普段つかわないような項目が実はこっそりBoldになってないか
調べてみたらいいかも
0770デフォルトの名無しさん
NGNG0771デフォルトの名無しさん
NGNGYAHOOってめんどくさくない?
0772デフォルトの名無しさん
NGNGガンバレオマエラ
0773デフォルトの名無しさん
NGNG0774デフォルトの名無しさん
NGNGはあはあなの
0775デフォルトの名無しさん
NGNGDel2からDel6まで使ってるけど、特に文字間隔に関しては変更なかったと思うよ。
0776デフォルトの名無しさん
NGNG一定期間でログは消しますです。
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特別な意味があるのでしょうか?通常では使わないですよね、そんなトコロ・・・。
0778デフォルトの名無しさん
NGNG0779デフォルトの名無しさん
NGNG(笑)
0780デフォルトの名無しさん
NGNG一般人はどうやってみるんだ?
掲示板といえるのか。
0781デフォルトの名無しさん
NGNG魅力がなくなる ->> 閉鎖
ってことにならなければよいが
0782デフォルトの名無しさん
NGNG0783デフォルトの名無しさん
NGNGくだらない質問するけど、いい?
Delphi 6/7 で使える DirectX のヘッダファイルって
どんなのがある? できれば DirectX8あたりの。
DirectSoundが使えるだけでいいんだけどね。
0784デルファイの名無しさん
NGNGDelphiX付属のでも構わないけれど、JEDIのが一番いいと思う。
DirectX8まで揃ってて、DirectX9は翻訳中らしい。
0785デフォルトの名無しさん
NGNGJedi は解散しました
0786783
NGNGDelphi-Jediに行こうと思ってたんだけど、
サイトに行けなかった。解散してたのか。
で、結局ロシアのサイトを見つけて、
DirectX9をDL中(贅沢いえないけど、
めちゃ遅い...)。
0787デルファイの名無しさん
NGNG活動停止じゃなく解散!?
…と思ってサイトへ行ってみたら、消えてる…。
こっちはまだ活動中かな?
http://clootie.narod.ru/delphi/index.html#D3D_SDKs
0788ねこま
NGNGhttp://projectjedi.sourceforge.net/
0789デフォルトの名無しさん
NGNGIPの記録が抑止にもなるなら、削除系の板のリモホ表示をやめて
みるのはどうでしょう。
依頼者のホストを削除板以外の板に晒されることもないでしょうし。
0790デフォルトの名無しさん
NGNG0791デフォルトの名無しさん
NGNGNT系では発生せず、9X系だと発生するために、環境を変えてデバッグしてみました。
リアルタイムで数値を表示させたくて、MMTimerの中で数値を型変換してLabelを書き換え
ていたのですが、多分コレではないかと・・・。処理が重くなると(間に合わなくなると?)
無効なポインタ操作が発生していました。
もしかして基本だったですか(;´Д`) 以降、無茶はやめます( ´・ω・`)
むぅ、計算は精度がいるのでMMTimer、表示は普通のTTimerで併用しようかな・・・。
0792デフォルトの名無しさん
NGNG2ちゃんねるのお勧めな話題と
ネットでの面白い出来事を配送したいと思ってます。。。
===============================読者数: 139038人 発行日:2003/1/10
なにやら、連日メルマガだしてるひろゆきです。
そんなわけで、ログ記録実験ですが、いちいちサーバ指定するのが面倒なので、
全部のサーバに入れてみました。
重くなって落ちたりしてもご愛嬌ってことで。。。
んじゃ!
────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50
────────────────────────────
0793デフォルトの名無しさん
NGNGMMTimerは別スレッドだよね。
Label書き換え時にちゃんとsyncronizeしてる?
0794TECH
NGNGたぶんソレですね。
MMTimerではVCLを直接呼んではいけません。
計算は精度が必要というのは、サンプリング精度ですか?
なお、現在この板は別板の内容をコピペされる荒し中なので
お名欄欄に、何か デフォルトの名無しさん 以外の名前を
入れて頂くと、区別し易くてよいです
0795デフォルトの名無しさん
NGNGjedi本体は死んでるが、DirectXヘッダ配布してるとこは生きてる。
ttp://www.crazyentertainment.net/
0796791
NGNG同期はしてませんでした。MMTimer以外から触ってないからいいやと思いまして・・・。
>>794
直接呼んではいけないんですか!これは初めて知りました。
以降、分離させるようにします。アドバイス感謝・・・。・゚・(ノД`)・゚・。
(精度ですが、サンプリングですね。秒間数十回行っています)
0797Delちぅ
NGNG0798デフォルトの名無しさん
NGNG( ´,_ゝ`)プッ
0799TECH
NGNGSendMessageして処理させてるだけなので
それなら MMTimer内から PostMessage してラベルを非同期に
描画させた方が軽くなっていいかもしれません。
0800デフォルトの名無しさん
NGNGInifileからreadStringしても2047文字目以降がどうしても読み込めないんですが
何かよい知恵ありますでしょうか。
やってることは
[mojii]
nakami="ごにょごにょと2047文字以上書いてる..."
とinifileに書いてあったとして、
str := IniFile.ReadString('moji' , 'nakami' , '');
と書いてます。strはString型です。
ちなみに2047文字までは普通に読めています。
なんかアドヴァイスおながいします。
0801デフォルトの名無しさん
NGNG0802TECH
NGNGVCLコンポの ReadString の制限みたいですね
GetPrivateProfileString で直接読んでみては?
http://www.google.co.jp/search?q=GetPrivateProfileString+delphi&lr=lang_ja
0803デフォルトの名無しさん
NGNGWindowsのiniファイルは制限あったり、キャッシュされたり、くせが多すぎ。
まじれす。
0804デフォルトの名無しさん
NGNGMMTimer使う意味がなくなるでしょ。すなおに Sychronize をつかったほうが
いくぶんまし。
0805TECH
NGNGああ、言ってる意味は、MMTimerで測定はする。 結果はFIFOか配列に記録だけする
それとは別に表示が必要なら その
必要な項目が出来た時に、PostMessage を投げて表示させるという事です。
単に表示を定期的に更新するなら、MMTimerとは別にTTimer使えばいい
0806TECH
NGNGメインスレッドが重い処理をしている場合、Sychronize だと結果が返ってくるのが非常に遅れます。
その間に次のMMTimerの時間が来た場合、
1、多重割り込みになる
2、次のMMTimerが遅延される
のどちらかとなるわけで、どちらも好ましくない結果となります
0807デフォルトの名無しさん
NGNGメインスレッドを メッセージループの個所まで動かして
それから処理して返ってくる。
0808800
NGNG>>802,803
やっぱり何かの制限に引っかかってましたか。
僕の探し方が悪いのか、ここらへんヘルプでも見つからなかったんで
途方にくれていました。
「delphi readstring 文字数」とかでググっても見つからなかったし…
直接ファイルの読み書きも考えていたんですが、具体的にINIファイルの
形式でできるようにする方法もまだ思い浮かぶレベルではなく、
いい方法教えていただいてありがとうございました。
0809デフォルトの名無しさん
NGNG0810デフォルトの名無しさん
NGNGDelphiの良い所は、Pro版だと、vclのソースが付いてる。
メソッドの中のソースを読んでも良いし、デバッガで中に入っても良いし。
えー、クラスライブラリのコード読むのー?とか思うかもしれんが、
SDKなんかのサンプルコードが、クラスのメソッドやプロパティとして、
綺麗にまとめれられてる感じ。
実際の動作をDelでポトペタして、中身のソースコードを追いかける、これ最強。
後、メソッドのオーバーライドするには、クラスライブラリののソース読んどくのが間違い無いし。
0811デフォルトの名無しさん
NGNG最後、Win32APIコールまで辿り着ける。ので、原因不明なんてことはまずない。
このへんもコンパイラ言語Delマンセー。
0812デフォルトの名無しさん
NGNG日曜プログラムにはどちらが向きますか?
0813デフォルトの名無しさん
NGNGフリーウェアやシェアウェアもDel多いし。
0814デフォルトの名無しさん
NGNGWindows限定か。
ならjavaしかありませんな。
ありがとう。
0815デフォルトの名無しさん
NGNG前スレ
http://news2.2ch.net/test/read.cgi/newsplus/1042017485/
0816791
NGNGありがとうございます、非常に参考になりました。
表示専門のTTimerを置いて、VCLへはそこからアクセスするようにします。
別スレッドでも、MMTimer内で計算結果を書いて、TTimer内でそれを取り出して
Labelのcaptionに貼るだけの場合は、特に同期は考えなくていいですか?
0817TECH
NGNG同期は MMTimerの目的から考えて使わない方がいいです。
スレッドはCPU命令の間には割り込めませんから 1命令で書き込みが
済むような場合は同期の必要ありません。
たとえば Integer/浮動小数点などは不要
構造体や文字列の場合は 、FIFO配列を用意しておいて、そこに書いた
後、更新番号を渡すような方式で処理すると良いでしょう
0818TECH
NGNGMMTimerは別スレッドといっても、普通はその処理が終るまでメインスレッドに
切り替わったりはしないはずなので、 文字列作って渡しても大丈夫かもしれません。
というか、たぶん大丈夫です。
0819デフォルトの名無しさん
NGNG>切り替わったりはしないはずなので、 文字列作って渡しても大丈夫かもしれません。
>というか、たぶん大丈夫です。
嘘はいけません。
0820デフォルトの名無しさん
NGNGアイテムの順番を入れ替えるにはどうしたらいいのでしょうか?
だれか教えてください。
0821デフォルトの名無しさん
NGNG0823TECH
NGNG0824TECH
NGNGメインスレッドで その文字列を読んでる間に、MMTimer割り込みがかかった場合
1、ポインタが書き換わる
問題ない、古いポインタの情報は残ってる
2、文字列が書き換わる
2バイト文字が混じってると問題、
数字なら一時的に混じって表示される=常に起きると問題
3、サイズが書き換わる
文字列が書き換わるのと同種の問題
だから、やっぱり FIFOとか配列をリング状に使って渡す方がいいな
まあ、文字列じゃなく、数値で渡せばめんどくさい事しなくてもいいから楽か
0825デフォルトの名無しさん
NGNGいっそのこと辞めればいいのに
儲かってるのか? そこまで裁判までやって続ける
意図が理解できん
433 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/10 20:36 ID:jWxHxvti
IP記録してれば、荒らしの使ったホストも規制しやすかったりして。
ゲームすかねぇ。
477 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/10 20:46 ID:jWxHxvti
ログそのものをCDROM化したりDVD化したりして出版する話が
何度かでたことがありますが、
ログを出版してしまうと、全責任を出版者が負わなければいけないので、
潰れる気のある出版社ぐらいでないと出せないです。
0826ななしへたぐらま ◆XcB18Bks.Y
NGNGDel4以降ならTIniFileの代わりにTMemIniFileを使うと良いかも.
TIniFileと違いWindowsのINIファイル処理APIを使わずに読み書きしていますが
こちらは2047バイトの制限はないようです.
0827デフォルトの名無しさん
NGNG>厨房板は本当に閉鎖なのか?
初耳。
0828デフォルトの名無しさん
NGNG0829デフォルトの名無しさん
NGNGちゃっちゃと削除依頼出すべし。俺はこいつらに嫌気が差して自作板を捨てた。
0830デフォルトの名無しさん
NGNGTStringList.LoadFromFile/SaveToFileで別ファイルに保存。
.iniファイルにあまり大量のデータを保存するのはあまり好きではない。
0831デフォルトの名無しさん
NGNG0832デフォルトの名無しさん
NGNG0833デフォルトの名無しさん
NGNG0834デフォルトの名無しさん
NGNGWindowに描画とか、VCLの更新とかを行う場合、
MMTimerは事実上使えないということでよいですか?
解決策は結局、メインスレッドのOnIdleで自力で時間待ちですか?
0835デフォルトの名無しさん
NGNG0836デフォルトの名無しさん
NGNG2ちゃん早く潰れろよ(藁
0837デフォルトの名無しさん
NGNG>>MMTimerは事実上使えないということでよいですか?
描画の更新とかスレッドセーフじゃないVCLの更新は本来メインスレッドで
おこなうものです。ウィンドウズのようなマルチスレッドでメッセージベースの
OSなら、このような機能を別スレッドにして正確に時間間隔をはかっても
あまり意義を見出せない。なぜ、MMTimer を使うほど精度が必要なのか、そっち
のほうが興味があるんだが。
0838デフォルトの名無しさん
NGNG0839デフォルトの名無しさん
NGNG0840デフォルトの名無しさん
NGNGやってくれるのが親切というものだと・・・。
0841デフォルトの名無しさん
NGNG0842TECH
NGNG名前欄に何か書いてくれないとイチイチ読まないといけないのでツライです
Windowに描画とかを 別スレッドや MMTimerでする意味があります?
MMTimerではデータのサンプリングや送受だけをして
描画とは切り離す設計にするのが普通だと思います
メインスレッドの OnIdleを使う方法はTTimer程度の精度しか得られません。
やはりMMTimerの方が正確です
0843デルファイの名無しさん
NGNGMMTimer使って、なおかつ手っ取り早い同期方法は、
適当なウィンドウ(Application.Handleとか)にSendMessageCallbackで
WM_GETTEXTLENGTHみたいなどうでもいいメッセージを送りつけて、
一緒に呼ばれるコールバック関数中で描画とかをすること。
0844TECH
NGNGなるほど、巧い手ですね。
RegisterWindowMessage でメッセージID貰うと WinProcで自前でディスパッチ
しなければいけなくなるし、
空いてそうなID使っちゃうと 将来の Delphiのバージョンアップや 他のコンポと
との組み合わせで問題出る可能性に怯えるわけで
0845TECH
NGNGMMTimerはメインスレッドとは別スレッドだが TThredではないので
Synchronize メソッドは実際には呼べないです。
0846デフォルトの名無しさん
NGNGメモリを確保するAPIってありますか?
0847TECH
NGNGWindows だよね? なら
http://www.google.co.jp/search?q=HeapCreate+GlobalAlloc+VirtualAlloc
ところで
Win32API 質問箱 Build8
http://pc3.2ch.net/test/read.cgi/tech/1040964626/
と誤爆?
0848山崎渉
NGNG0849デフォルトの名無しさん
NGNG0850HOGE
NGNG> メインスレッドの OnIdleを使う方法はTTimer程度の精度しか得られません。
実際に調べました?
そんなことはないです。
で、まあ、結局メインスレッドで一定精度を得るならOnIdleが楽かなと。
0852デフォルトの名無しさん
NGNG精度の意味が違うのでは?
他のプロセスが動いてる時の OnIdleと TTimerは精度が同じ。
プロセスがリソースを独占可能な時は OnIdle>TTimer
ただしTTimerも 分解能を合わせれば精度は同じ
0853デフォルトの名無しさん
NGNGああ、そのことです。
そいや、TTimerの精度って上げられたっけ?
timeBeginPeriodでつか?
0854デフォルトの名無しさん
NGNG0855TECH
NGNGなるほど、そういう使い方なら OnIdleでやればいいのでしょう。
でもCPU占有率100%になりそうな勢いですね。
timeBeginPeriod は MMTimer の精度では?
0856デフォルトの名無しさん
NGNG「リストのインデックスが範囲をこえています」とエラーが出ます。
どこが間違ってるのでしょうか?
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デフォルトの名無しさん
NGNGMUTEXとかセマフォとか。手はいくらでもある。
0858Delフサギコ ◆A6VzDeLphI
NGNGミ,,゚Д゚彡 i=0で0番目のページを削除したとたん、
ミつ[|lllll]). もとの1番目が0番目に変わるので
〜ミ ミ 次のループでi=1で削除すると
元々の2番目のページが削除され…
こういうときは
for i:=PageCount-1 down to 0
で、ループまわして最後から削除っす。
0859デフォルトの名無しさん
NGNG例えば、最初に 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あー、だから半分まで閉じるとエラーになるんですね。
助かりました、さんくすです。
0861デフォルトの名無しさん
NGNG0862デフォルトの名無しさん
NGNGi: integer;
begin
for i := 0 to PageControl.PageCount -1 do
PageControl.Pages[0].free;
end;
これで(・∀・)イイ!!とおもわれ
0863デフォルトの名無しさん
NGNG融通きかなそうだな(w
0864デフォルトの名無しさん
NGNGwhile PageControl1.PageCount > 0 do PageControl1.Pages[0].Free
0865カイ
NGNGwith PageControl1 do while PageCount > 0 do Pages[0].Free
0866デフォルトの名無しさん
NGNGゲームとかそういう類のは組んだことはないでつか?
> でもCPU占有率100%になりそうな勢いですね。
それは組み方によります。
FPS固定なら、余った分Sleep(Sleepは精度が悪いので工夫がいるが)するとか、
OnIdleを早く抜けて処理を返すとか。
FPS非固定なら100%でぶん回すこともあるでしょう。
>timeBeginPeriod は MMTimer の精度では?
ですよねえ。標準タイマーは精度劇悪だったはずなので。
>>857
なるほど。
0867TECH
NGNG□TTimerの分解能は 9x系列で1/30
NT系列 2000/XP では1/100程度
TTimerはメッセージを貰ってメインスレッドで実行される
□MMTimerの分解能は timeBeginPeriod で決まる
MMTimerはメインスレッドとは別の特殊なスレッド。よって、
VCLコンポを呼び出してはいけない。また、
一般的にマルチメディア系のコールバック中で悪さするとOS
を巻き込んでしまう場合が出易いので注意
VCLをMMTimerをキッカケにして動かす場合は
PostMessage/ SendMessageCallbackを使う
0868デフォルトの名無しさん
NGNG単位もまともに書けん奴が精度を語るか。
0869デフォルトの名無しさん
NGNG何の話?
0870デフォルトの名無しさん
NGNG「1/30」「1/100」ってなに?という話だと思う。
0871デフォルトの名無しさん
NGNGああ、
TTimerの設定分解能は1ミリ秒だが 98系列ではその1/30の実分解能しかない
って事だろ。
あそこに分解能が1/30秒と書けば正しくないし、まあもっと上手にまとめられる
というのなら、まとめてやれよ。
0872デフォルトの名無しさん
NGNG98系列はもっと良くなかったか?
0873デフォルトの名無しさん
NGNGPC9821タイマのこと?
0874デフォルトの名無しさん
NGNG@a = split(/hoge/, $str);
みたいのをDelphiでやるにはどうしたらいいですか?
0875デフォルトの名無しさん
NGNGをまだ見てませんでした。見て分からなかったらまた来ます。すみません。
0876デフォルトの名無しさん
NGNG正規表現が使いたいという意味なら
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デフォルトの名無しさん
NGNG0878デフォルトの名無しさん
NGNGアイテムを追加しようと下のように書いたのですが
<<のところで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まず、どこで例外が起きているのかを突き止めないと、なんとも。
//↓チェック用のコードを挿入してみるとか
Assert(Form1 <> nil);
Assert(Form1.ListView1 <> nil);
...
nil以外の値が入っていても、既に解放されている等して不正なポインタの場合が有り、
その時は中身を参照するとエラーになるので、そちらも注意。
勘で書けば、多分、TForm1をTForm1.Createで作成した時
Form1変数に代入してないとか、その辺とは思うけど。
0880デフォルトの名無しさん
NGNGForm1,Form2の関係を書いた方が。
0881878
NGNG>>880
>勘で書けば、多分、TForm1をTForm1.Createで作成した時
>Form1変数に代入してないとか、その辺とは思うけど。
873さん、これモロビンゴっす。。
var
Dlg: TForm1;
Dlg := TForm1.Create(Self);
てな感じでやってました。。
言われないと全く気づかなかったと思います。
ありがとうございました!
0882デフォルトの名無しさん
NGNG当然98x1のことだ。他にないだろ。
0883デフォルトの名無しさん
NGNG9801には高解像度タイマ付いてないが。
0884デフォルトの名無しさん
NGNG0885デフォルトの名無しさん
NGNG試して無いけど、Pictureがnilかどうかで分からないかな?
0886デフォルトの名無しさん
NGNGクソレススマソ
0887デフォルトの名無しさん
NGNG転送して別のPCのスピーカーから再生させたいのだが、
そもそもマイクからリアルタイムに音声が取り出せない、
なにか良い方法はありませんか?
0888デフォルトの名無しさん
NGNG0889デフォルトの名無しさん
NGNGありがとう試してみます
0890ななしへたぐらま ◆XcB18Bks.Y
NGNG素朴な疑問ですがどうしてブレークポイントを使わないのでしょうか?
>>884
Image1: TImage; だとすると
Image1.Picture.Graphic = nil だと空みたい.
空にするときはImage1.Picture := nil;
または Image1.Picture.Assign(nil); なのでややこしいですが.
0891デフォルトの名無しさん
NGNG>空にするときはImage1.Picture := nil;
メモリリークしない?
0892デフォルトの名無しさん
NGNG0893デフォルトの名無しさん
NGNGwrite用のメソッド定義されてるの?
0894デフォルトの名無しさん
NGNGソース見ろよ
0895ななしへたぐらま ◆XcB18Bks.Y
NGNG今は載っているかわかりませんが初期のDelphiの説明書には
nilを代入してグラフィックを空にする説明が載っていたと記憶しています.
私は気持ち悪いので(笑)Assignを使っていましたが.
>>893
その通りです.内部でTPictureのAssignメソッドを呼び出しています.
そのメソッドは引数がnilの時に内部のGraphicを解放してnilを代入し,
イベントハンドラがあればそれを呼び出しています.
>>894
ライブラリのソースはプロ版以上でないと見られませんからね.
逆にプロ版以上の方は私の説明よりソースを見るのが吉かと思います.
プロパティ宣言のread/writeが何を意味するか理解していれば
十分理解できるコードではないかと思います.
0896デフォルトの名無しさん
NGNG勉強になりました。どもです。
>>894
Del6 PersonalとDel3.1 Standerdしか持ってないんで。スマソ。
0897675
NGNG0898デフォルトの名無しさん
NGNG0899デフォルトの名無しさん
NGNG100点!
0900デフォルトの名無しさん
NGNG設計時にオブジェクトインスペクタのプロパティに
| Items | (TStrings) […] | という欄があって [・・・]ボタンを押すと
簡易エディタのようなダイアログが表示されますよね?
あれは何処で実行されているのでしょうか?
やりたい事は、設計時に[・・・]で文字列が入力された後で値のチェックを
かけたいのですが、それらしき部分が見当たらないのです。(涙)
0901組込もしまっせ
NGNG前半の質問は、プロパティエディタの設定でされてる。
自作のエディタを作りたいなら、 ヘルプの
コンポーネント開発者ガイド->コンポーネントを設計時に利用出来るようにする->プロパティエディタの追加
からを見るといい
後半は・・・・もしかしてSetItems メソッドを定義してないの?
SetItemsが呼ばれた時の値で、チェックをかければいい
チェックをかけて値が変更されてたら
たしか、 GetParentForm(Self).Designer.Modified; みたいな感じだったと思う
0902デフォルトの名無しさん
NGNG起動済みで受け取る方法は分かったんですが…。
0903デフォルトの名無しさん
NGNGParamStr(i :integer);
0904デフォルトの名無しさん
NGNGfor i := 1 to ParmCount -1 do
begin
if Pos('http://', ParamStr(i)) > 0 then
CreateMDIChild(ParamStr(i));
end;
タブブラウザっぽいのを作ってるのですが、こうで良いんでしょうか?
0905デフォルトの名無しさん
NGNG0906900
NGNGSetItemsでチェックするようにしたら、なんとかなりました。
あと、[プロパティエディタの追加]を読んで見て、
独自のエディタも作れそうな気になってきました、実力は無いのですが
なんとか頑張ってみます。
ありがとうございました。
0907デフォルトの名無しさん
NGNGブラウザはhttp://を省略しても補完してくれるからそれは良くないだろう。
用意したコマンドラインオプション以外の文字列があったらURLとして開くとした方が良いと思われる。
0908..
NGNG0909デフォルトの名無しさん
NGNG一緒に置いていたエロ画像が原因で削除されたらしい。
0910デフォルトの名無しさん
NGNG0911デフォルトの名無しさん
NGNGそりゃ発表されたばかりのバージョン使いたいなら苦労もあるだろうけど
ひと昔前のを拾ってゆくなら何の問題もないよ
広告貼り忘れで消されてました。
たぶん復活したと思います。お騒がせしました。
0913デフォルトの名無しさん
NGNGPos('\','表')がちゃんと0になるような。
0914デフォルトの名無しさん
NGNG0915デフォルトの名無しさん
NGNG0916デフォルトの名無しさん
NGNG尚且つマウスポインタの位置が別のセル上に移動したときは、即ヒントの文字列を更新したいのです。
0917組込もしまっせ
NGNGそれは Popup ヒントでなければいけないの?
普通は TStatusBar を使って、StatusBar.AutoHint:=True; にすると思うのだけど
0918デフォルトの名無しさん
NGNGポップアップヒントに似せたウィンドウを一つ作成して、
OnEnterで表示、OnExitで隠蔽、OnSelectCellで内容出力したらどうかと。
0919デフォルトの名無しさん
NGNGおまいら答えになってないよ。
>>916
TApplication.OnShowHintイベントでTHintInfoのReshowTimeoutを適当(500)に設定し
TStringGridのOnMouseMoveイベントでHintプロパティを変えればいけるだろ。
ヒントの位置も変えたければTHintInfo.CursorPos:=Mouse.CursorPosとやればOKかな!?
0921山崎渉
NGNG0922デフォルトの名無しさん
NGNGそれではその機能を組み込んだコンポーネントを作る場合どうするか教えてください。
0923デフォルトの名無しさん
NGNGttp://www.din.or.jp/~egawa-n/delphi/tips/grid_hint.html
>>920
>>916の方法では無理。ていうかやって出来ない事はないが、やってはいけない事。
グローバル変数のメソッドポインタをコンポーネント内で書き換えると
アプリケーションが意図しない動作するかもしれない。
0924デフォルトの名無しさん
NGNG発見できません、何処から落とせば良いのでしょうか?
0925デフォルトの名無しさん
NGNG0926デフォルトの名無しさん
NGNG>>925 (^^;
0927924
NGNG>>925
なぜか間違ってしまいました。(汗
>>926
誤爆にお返事頂いて申し訳ありません。
jigdoで作れるのですね、ありがとうございました。
0928デフォルトの名無しさん
NGNG0929デフォルトの名無しさん
NGNG0930デフォルトの名無しさん
NGNG0931デフォルトの名無しさん
NGNGマウスのホイールをクリックしたときに、コントロールによっては
自動スクロールする場合がありますが、あれってアプリ側で処理
を書いているんでしょうか?
0932デフォルトの名無しさん
NGNG0933デフォルトの名無しさん
NGNG1. コントロールが他人の書いたものならそれにまかせる。例:Windows 標準コントロール
2. 標準の動作を変えたり、ホイールメッセージを処理しないコントロールの場合
自分で書く。多くの場合すべてを書く必用はなく、あたかもスクロールバーを制御している
用に見せかければ良し。
3. Logitech とかのマウスドライバだと、WM_MOUSEWHEEL を処理しないアプリケーションに対し
マウスドライバ側でスクロールメッセージに変換してくれる。こういった環境ではアプリ側で
何もしなくてもホイールが使える。
0934デフォルトの名無しさん
NGNGたとえばTCustomControlから自前でコンポーネントを
起こす際に、どう実現したらいいものかなーと……
ていうか自動スクロール自体は、別にどうってことはなくて
ホイールクリックしたときに出る、「○と▲と●のアレ」を
どこから持ってくればいいのかよくわからないです。あとカー
ソルも。
0935デフォルトの名無しさん
NGNGすまんです。説明足りなかったです。
WM_MOUSEWHEELはもちろん受け取って処理するのですが
ホイールをクリックしたときによく出る変なマークはどこから
取ればいいのか知りたいのです。
秀丸やDelphiのコードエディタなんかも同じマークが出るみたい
なんで、それぞれが自前で持っているわけでもなさそうな感じ
だし……。
よくわから。
0936デフォルトの名無しさん
NGNGなぜか下位のTListBoxなどには継承されていない。
0937デフォルトの名無しさん
NGNGホイールクリック=中ボタンを押された状態と同じ事です。
どのアプリでも出るのならば、マウスドライバ自体が特殊なのかもしれない。
0938デフォルトの名無しさん
NGNGどうもUSER32.DLLかcomctl32.dllあたりにそれっぽいカーソルが
収められているみたいです。
それを適宜取得して、表示は自前で……という感じか。
0939デフォルトの名無しさん
NGNGとか見ても、具体的に何がまずいのか、さっぱり解らないのですが、
こういった情報からエラーの原因を知る事は出来るのでしょうか?
0940デフォルトの名無しさん
NGNG検索→シンボルを調べる
0941デフォルトの名無しさん
NGNGありがとうです。
しかし残念ながら、personal版にはそのメニューは無いようです。
やっぱ本格的にやろうとすると、Pro版が必要なのかしらん。
0942デフォルトの名無しさん
NGNGWiki に書かなきゃ...
以下の説明で、わからない場所が有ったら突っ込みを。
GP/AV が出たら CPU ウィンドウを開き、呼び出し履歴とスタックポインタを探って
問題を起こしているポイントを見つける。
>'アドレス 00000009 (1) でアドレス 70046913 (2) に対する書き込み違反がおきました。'
アドレス(1) はコードのアドレスが出てくる場所で、これが $0009 ってことはありえない。
存在しないコードを実行することはできないから、どこからか $0009 にジャンプしてきて
そこで例外を起こした。と。
マスターポインタ + $0009 に何かのメソッド/関数がある。というコードで、マスターポインタが
0(Nil) だったのだろう。
Delphi (をふくむ多くのコンパイラ)ではルーチンをまたぐ Jump はほとんど生成されないので
call で飛んできていると思われるから、スタックペーンの冒頭のアドレスから逆アセンブル。
そこ、ないしはそこから1〜2段さかのぼったところに鍵がある。
0943939
NGNG説明ありがとです。
大まかな意味は解るんですが、
CPUウィンドウで、 mov eax, とか色々書かれているのを見ても、
アセンブラ(?)は解らないので、さっぱりです。
ソースの中の、エラーの原因となる位置を特定できたらいいなぁ。
と思ったんですが、
アセンブラを勉強しないと、(仮にPro版を持っていたとしても)
こういう情報からエラーの原因を特定する事は出来ないんですか?
0944≒492
NGNG「エラーの検索」とか関数名に@つけて表示させてみるとかで、
アセンブラわからなくても大体の位置は特定できるでしょ。
0945939
NGNGこんな事も出来るなんて知りませんでした。
ちゃんと使い方を覚えれば、詳しく調べられるんですね。
ありがとうです。
0946デフォルトの名無しさん
NGNG検索すれば見つかる。delphiに限定しないで検索してみるがヨロシ。
0948デフォルトの名無しさん
NGNGだいぶ探してなんとかdelphiのも見つけました。うまくいってます。ありがとうございました。
0949デフォルトの名無しさん
NGNGあんたのせいでCOMに興味持って夜更かししてしまいました。眠い。
0950デフォルトの名無しさん
NGNG0951デフォルトの名無しさん
NGNG「このメニューは終了しました」
0952ねこま
NGNG試してないけど.
0953デフォルトの名無しさん
NGNG>WM_CLOSE
それ≒終了するとき
だと思われ。
0954sage
NGNGif (ShellListView1.Selected <> nil) then
begin
ShowMessage(ShellListView1.Selected.Caption);
end;
とやってみましたが、ブランクが表示されます。
0955ねこま
NGNG0956デフォルトの名無しさん
NGNGWM_MENUSELECT
0957950
NGNGどうやらWM_MENUSELECTで自分のイベントを起こしたいタイミングに
イベントを起こせそうです。
ありがとうございます。
0958デフォルトの名無しさん
NGNGDemos のは ソースを読んでガンバレって事だから
ShellListView1.SelectedFolder.PathName が該当のものじゃないかな
0959デフォルトの名無しさん
NGNG必ずHDDアクセスは起こるし、ShellTreeViewには共有のオーバーレイイメージが
表示されるのにListViewには表示されないし、TreeViewにもショートカットのイメージは表示されないし、
ListViewにパスをセットできないし、どれも変数の開放忘れがあるし。
結局ちょこちょこ自分でいじって別パッケージにしちゃってるよ。
0960デフォルトの名無しさん
NGNG一体いつのバージョンを使っているの?
BDN にアップデートがあがっているんだけど。
0961デフォルトの名無しさん
NGNGBDN、登録してないんだよねえ
0962デフォルトの名無しさん
NGNG簡単な英語が読めれば、誰でも登録できるけど?
...割れ物使いかい?
0963デフォルトの名無しさん
NGNGで、登録してきたけど見つからないんだけど。どこ見ればいいの?
0964デフォルトの名無しさん
NGNGMLの過去ログでパス貼ってたので見つけられたよ。
で、見てみたけど俺が上記した問題はほとんど解決されてないようなのだが。
あんたインストールしてみて全部試してみた上で言ってる?
あんまり無責任な発言するもんじゃないよ。
0965デフォルトの名無しさん
NGNGライブラリはフリーの使えとかやる気のない処理系ですな。
0966デフォルトの名無しさん
NGNG0967954
NGNGフルパス
ShellListView1.SelectedFolder.PathName;
ファイル名
ShellListView1.SelectedFolder.DisplayName;
でした。
ありがとうございます。
>>959,960
フォルダーの情報を取得したいのですが、
ShellListViewはやめたほうがよいのでしょうか?
>>960
BDNてなんですか?
たびたびですいませんがお願いします。
環境は、
Del6Ent Build 6.163
Windows2000 SP3
会社であまっていたので、
入れてもらいました。
0968デフォルトの名無しさん
NGNGShellListView、別に使えるよ。
ただ、不十分なところもちょっとあるって程度で。
0969デフォルトの名無しさん
NGNG区別する方法ってありますか?
0970デフォルトの名無しさん
NGNGいつもの事だけど、このスレの次スレはどうするの?
俺のプロバイダだと最近建てられない。串探すのメンドクサイから
0971デルファイの名無しさん
NGNG…でもこれだと、IDE拡張に使ったときも設計時と見なされてしまうので、
ユニットを分けて、設計時用パッケージを別に作った方がいいかも。
0972デフォルトの名無しさん
NGNG〜′,,,,,,,,,,ミ,,゚Д゚彡< 次スレhttp://pc2.2ch.net/test/read.cgi/tech/1045813143/l50
UU"""" U U \_________
0973969
NGNG>>971
どもです。
ComponentStateみたいな状態はないんですか・・・
設計時のinitializationの時にファイルOPENしてて
実行時にまた同じファイルOPENしてエラーが出てしまうので
なんとかしたかったのですが・・・
0974デフォルトの名無しさん
NGNGアホが・・・
0975デフォルトの名無しさん
NGNG毎回いるよな、こういう香具師。
0976デフォルトの名無しさん
NGNG0977デフォルトの名無しさん
NGNGC++は魅力的だが、肥大化しすぎ&精通してる奴が少なすぎ
Javaは言語的に萌えない&マニアックな操作が出来ない
どうよ
0978デフォルトの名無しさん
NGNGと理解してるんだけど、JAVAならできるけど、C#はコンソールアプリ作れるの?
0979デフォルトの名無しさん
NGNG0980デフォルトの名無しさん
NGNGじゃー21世紀最初の(製品化された)言語カナー?
0981デフォルトの名無しさん
NGNG0982デフォルトの名無しさん
NGNGJava,VC++,C#.netからC#選んで勉強することにしますた。
0983デフォルトの名無しさん
NGNG0984デフォルトの名無しさん
NGNGC#があれだけ浸透しているのに、Delphiに乗り換える理由がわからないです。
もちろん、双方の良さ悪さありますけど。
0985デフォルトの名無しさん
NGNG私企業なんだし、それはそれでいいと思うよ。
でも、ネットワークは本質的に「囲い込めない」でしょ。
単純に言って、.NETの人たちが使うことはないっしょ。
結局、Delphi8ってのも、某の土俵内なんだから、新Delphiってことだよね。
旧Delphi程度にははやり、それ以上にはならない、つのが結論だっぺ。
0986デフォルトの名無しさん
NGNGでも Delphi1の時の勢いは感じられない。
0987デフォルトの名無しさん
NGNGなんかイメージ的には相当遅くなってそうなんだけど・・・
0988デフォルトの名無しさん
NGNG0989デフォルトの名無しさん
NGNGメモリ使用量もガベコレ頻度も減って一石三鳥だな。
Javaだとなるべく、Pointみたいなプリミティブ型にクラスはなるべく使わないようにしてきたけど、
C#だとそんなくだらない努力はしなくてもいいのね。
C#マンセー
0990デフォルトの名無しさん
NGNGJavaだとint,float,stringなどに限られていたプリミティブ型を自由に定義できるということ。
またそのインスタンスをインラインに持ち、スタック上におけるということ。
これはパフォーマンスクリティカルな部分においても、
可読性と速度を両立できるという大きなメリットをもたらす。
0991デフォルトの名無しさん
NGNG体感速度は、メモリを多めに食うクルーソーCPUを載せているって感じか。
Javaと違って、言語仕様上の制限は少ない(構造体、関数ポインタ、ポインタもある)から
実質ネイティブコンパイルと同等のパフォーマンスは得られる。
0992デフォルトの名無しさん
NGNGコードの安全を確かめるための大規模な検証作業があるが、
C#の場合、暗号化と公開鍵の仕組みによって外部からの改変を防ぐことでコードの安全性を保障している。
だからJavaのアプリケーションみたいに起動が糞重いなんてことはない。
0993デフォルトの名無しさん
NGNG0994デフォルトの名無しさん
NGNG0995デフォルトの名無しさん
NGNG0996デフォルトの名無しさん
NGNGJavaの対抗に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#の場合、ハッシュ、リストなどのコレクションはライブラリで用意さえている。
しかもintだろうが、floatだろうが、クラスだろう、構造体だろうが何でも一つのコレクションの中に入れられる。
・リフレクションによる動的型解析
自動XmlシリアライズなどはC++には絶対に書けない。
(やるなら余計なコードを追加するか、ソースコードを解析してシリアライズコードを自動生成するかどっちか)
・動的コード生成、動的バインディング
言語仕様内で可能
・ガベージコレクションによる自動メモリ管理
C++ではshared_ptrを使っても循環参照時に破綻するが、
Mark&Sweep方式のGCによって完全に安全なメモリ管理が実現される。
1000デフォルトの名無しさん
NGNGC#の優位性はあきらかだろ。「MSが押してる」だーよ。
これで決まり。逆らってるヤツは、お払い箱。
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。