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


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

くだすれDelphi(超初心者用)その48



1 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 00:50:40 ]
Delphi(デルファイ)について、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を
勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが
お礼はDelphiの布教と初心者の救済をお願いします。

<前スレ>
くだすれDelphi(超初心者用)その47
pc11.2ch.net/test/read.cgi/tech/1214292265/

<過去スレ>
DelWiki避難所(Delphi 関連の過去スレッド)
delwiki.info/?%E3%83%AA%E3%83%B3%E3%82%AF%2F%E3%82%B3%E3%83%9F%E3%83%A5%E3%83%8B%E3%83%86%E3%82%A3%2FDelphi%20%E9%96%A2%E9%80%A3%E3%81%AE%E9%81%8E%E5%8E%BB%E3%82%B9%E3%83%AC%E3%83%83%E3%83%89

12 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 17:46:20 ]
>>10
ごめんヘルプ見ても理解不能
アクションバンドとか出てきたし
3行でいいから特徴をおせーてプリーズ

13 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 17:59:27 ]
>>12
タイトル見ようぜ
> 新しいアクション機能(Professional 版および Enterprise 版)

14 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 18:42:41 ]
>>13
それはわかっとる
Personalで使えないからどんなもんか知る術がない

15 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 18:43:20 ]
>>13
それはわかっとる
Personalで使えないからどんなもんか知る術がない

16 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 18:44:17 ]
どうあがいても使えないものを必死に使いこなそうとする男の人って・・・

17 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 18:46:56 ]
いや使えないことはわかっとるがな
どんなもんかちょっと聞いてみただけやがな
ちょっと3行で教えてーなプリーズ?

18 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 22:47:07 ]
>>9
Office2000形式のメニューとか作れるんじゃなかったか。
Actionをドラッグ&ドロップして。

19 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 22:51:52 ]
>>5
昔はCで書かれてたのかぁ
無料のTurboDelphiインストールしようとしたら、.NetとかJ#とかMSですら使ってない
ような物を入れさせられて嫌だったなぁw
ちゃんと全部Delphiで書いて貰いたいものだ

20 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 22:54:36 ]
>>19
> 昔はCで書かれてたのかぁ

Delphiは最初からDelphi製でしょ。

> 無料のTurboDelphiインストール

今はそうでも無いよ。



21 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 22:56:42 ]
「今は」ってどういう意味?
Delphi2009が.NETいらなくなってってこと?
それがどうTurboDelphiに掛かってるのか良く分からない

22 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 22:58:35 ]
>>20
あ、そういう事ね
自分でアプリ作るときにUIだけDelで作って、処理はCで書いてたって意味かな?

23 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 23:02:50 ]
>>17
使った事ないんであれだけど、動的UI作れるんじゃないのかな?
D&Dでメニューやツールバーを動的に構築できるとかいう話かなと、わからんけど

24 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 23:16:02 ]
>>21
> Delphi2009が.NETいらなくなってってこと?

.NET SDKはほぼ100%要らない。
ヘルプビューワーのみ。ドキュメントのインストールも無し。
.NET ランタイムは要る。

25 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 23:32:52 ]
>>24
で、「無料」のTurboDelphiへの批判レスにはそれが妥当だと思ったわけだね

26 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 00:08:27 ]
話しかみ合ってる?

27 名前:ななしへたぐらま ◆XcB18Bks.Y mailto:sage [2008/11/04(火) 17:45:15 ]
データベースに関する質問です。
画像を格納できるテーブルを作成・編集するアプリを開発中なのですが
クライアントの要望で音声も格納できるようにしようとしています。

しかし音声にはDBImageコンポみたいなコンポがありません。
ググってもTorryをみてもそれっぽいコンポを見つけらなかったのですが
何か良いコンポはありますでしょうか。


28 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 19:49:25 ]
バイナリーで保存するんじゃねーの。

29 名前:ななしへたぐらま ◆XcB18Bks.Y mailto:sage [2008/11/04(火) 21:42:32 ]
やはり自前で実装ですかね。
DBWaveコンポ(仮称)つくってみます。


30 名前:デフォルトの名無しさん mailto:sage [2008/11/04(火) 23:54:23 ]
SQliteでバイナリも保存できるんじゃね?



31 名前:デフォルトの名無しさん mailto:sage [2008/11/05(水) 16:24:46 ]
>>27はDB awareなコンポーネントないか聞いてるのにバイナリだの
なんだの見当違いなこと言ってる秋の夕暮れ


32 名前:デフォルトの名無しさん mailto:sage [2008/11/05(水) 22:47:04 ]
「じゃね」使いはアホ。

33 名前:デフォルトの名無しさん mailto:sage [2008/11/06(木) 06:03:05 ]
俺Jane使ってるよ
使いやすくてオススメ!

34 名前:デフォルトの名無しさん [2008/11/06(木) 10:42:06 ]
既存のデータの入ってる実際に使っているテーブルに
新たにフィールドを追加する必要がでてきました。
TTableで

フィールドA
フィールドB

があるテーブルに
「フィールドCがなければフィールドCを追加」
という処理をしたいんですがどのようにすればいいんでしょうか?

TQueryのSQLを使ってALTER TABLE ... ADD ...すればフィールドは追加できますが「フィールドCがなければ」という処理をどう書いていいかわかりません。
Table.FindField('フィールドC') = nil
で調べれるのかとも思ったのですが、これはTFieldがあるかどうかを調べるだけで、データベース内にフィールドがあるかまでは調べてくれません。

いったんテーブルを削除して作り直せば簡単には出来ますが
レコードは残したままでやりたいのです。
何かいい方法はありますでしょうか?

35 名前:デフォルトの名無しさん mailto:sage [2008/11/06(木) 11:44:59 ]
TableXXX.FieldDefs.IndexOf('フィールドC') < 0

36 名前:デフォルトの名無しさん [2008/11/06(木) 12:13:11 ]
引継ぎもなく、古いDelphiの修正しろといわれたのですが、
実行してみようとすると
wwDataInspector, wwrcdpnl, wwdblook,TwwDBLookupCombo
などがないと言われます。

これらはどういうコンポーネントを入れればいいのでしょうか?
Delphi2006をいれたのですが、元のプロジェクトはどのバージョンか不明です。



37 名前:デフォルトの名無しさん mailto:sage [2008/11/06(木) 12:14:05 ]
Explorer終了すると

---------------------------
Error
---------------------------
Runtime error 217 at 019CF57D
---------------------------
OK
---------------------------

とかいうエラーが出るんだけど常駐しているDelphi製アプリと関係ある?

38 名前:デフォルトの名無しさん mailto:sage [2008/11/06(木) 12:19:26 ]
>>36
そのくらいググレカス

39 名前:デフォルトの名無しさん mailto:sage [2008/11/06(木) 22:25:47 ]
>>37
Explorer終了ってつまりシャットダウンとかログアウトだよな

40 名前:デフォルトの名無しさん mailto:sage [2008/11/07(金) 01:23:44 ]
>>34
Firebird / Interbaseならrdb$relations
Oracleならuser_tab_columns
を検索

ほかのDBはシラネ



41 名前:36 [2008/11/07(金) 12:25:08 ]
>>38
いやまじググッてもでなくて。

DelphiてVerごとの上位互換とか結構高いんですか?

42 名前:デフォルトの名無しさん mailto:sage [2008/11/07(金) 12:26:40 ]
検索して出てこないなら内部で作ったコンポなんじゃないの。
CDだかPCだかを全grepしてみたら。

43 名前:デフォルトの名無しさん mailto:sage [2008/11/07(金) 14:48:46 ]
>>41
wwと接頭辞付いてるところ見るとInfoPowerのコンポーネントかな。
ttp://www.woll2woll.com/index.html


44 名前:デフォルトの名無しさん [2008/11/07(金) 15:06:01 ]
質問です。

procedure EdiToolCdExit(Sender: TObject);
begin
if ( ( BitBtnEnd.Focused   = False ) and
( BitBtnCancel.Focused = False ) and
( RadGrpKey1.Focused = False ) and
begin
//キー部の入力チェックを行う
if ( LFncKeyCheck ) then
begin
LProUseToolTblCtrl;
end;
end;
end;

このようなExitイベントがあり、特定のボタン(終了、取り消しなど)を
押下された時には入力チェックを行わないようにしています。
ですがBitBtnEndとBitBtnCancel.押下時は入力チェックが走らないで正常に動作するのですが
RadGrpKey1を押下時はなぜか入力チェックが走ってしまいます。
どなたか分かりますでしょうか?
ちなみにRadGrpKey1はRadioGroupです。

45 名前:デフォルトの名無しさん mailto:sage [2008/11/07(金) 15:09:30 ]
>>44
なんか色々とおかしいぞ・・・

46 名前:デフォルトの名無しさん mailto:sage [2008/11/07(金) 15:21:17 ]
つーかなんのためにsender持ってんだ

47 名前:デフォルトの名無しさん [2008/11/07(金) 15:46:51 ]
endが変な位置に行ったのはコピペしたからですwすいません。
Sender使ってif(Sender <> RadGrpKey1)then
を追加してみたけどだめでした。。。


48 名前:デフォルトの名無しさん [2008/11/07(金) 18:41:41 ]
DELPHI6での
コンポーネントとパッケージとパレットの関係を教えてください。
DELPHIは拡張子が多すぎて初心者の方は混乱しませんか?

49 名前:デフォルトの名無しさん mailto:sage [2008/11/07(金) 22:57:21 ]
>>44
RadioGroupの場合、フォーカス持ってるのは中のRadioButtonだから。
ActiveControl is TRadioButtonかどうか見て、さらにそのParentを調べるか
RadioGroupのOnEnterとOnExitでフラグ立てるかお好きな方で。

50 名前:デフォルトの名無しさん mailto:sage [2008/11/08(土) 04:46:04 ]
ちょいと教えて欲しいんですが、Captionを欧文フォントにして
全角(漢字とか)入れると急激に重くなるのはどういうことでしょうか。
これをC++Builderで書くと、ほんの少し軽くなる。
これってDelphiが悪いのか、WINDOWSが悪いのか
良くわからないんですけど、誰か知ってたらお願いします。



51 名前:デフォルトの名無しさん mailto:sage [2008/11/08(土) 08:40:35 ]
Delphi/C++Builderのバージョン、OSを明示すべし。

52 名前:41 [2008/11/08(土) 09:29:32 ]
>>43
ありがとうございます。
DelphiってBorlandしかコンパイラーとか作ってないのかと思ってましたが、
別のIDEとかもあるんですね。
しかし、前任者はなぜこれを使ってたのか。。



53 名前:ななしへ(ry ◆XcB18Bks.Y mailto:sage [2008/11/08(土) 09:38:43 ]
>>50
OpenTypeの欧文フォントで文字セットを日本語にすると
日本語の文字が出てくるたびに
あらかじめ関連づけられた日本語フォントファイルからフォントを持ってくるという
面倒なことをやっていますのでガクッと重くなるのかもしれません。
(駅の売店でものを売るときに奥の棚から商品を引っ張り出すような感じでは?)

BCBが若干軽いのはBCB未経験ゆえにわかりませんが
DelphiとBCBとでは文字列処理の実装が異なるとすれば影響するかもです。


54 名前:デフォルトの名無しさん mailto:sage [2008/11/08(土) 12:56:18 ]
>>19
今思えばJ#使ってるのってヘジたんのせいだったんだな

55 名前:デフォルトの名無しさん mailto:sage [2008/11/08(土) 18:38:22 ]
JBuilder こコードを流用しただけだろ

56 名前:デフォルトの名無しさん mailto:sage [2008/11/08(土) 18:39:06 ]
× JBuilder こコードを流用しただけだろ
○ JBuilder のコードを流用しただけだろ

57 名前:デフォルトの名無しさん mailto:sage [2008/11/08(土) 19:31:15 ]
ヘジは、J#開発者だが、
そのころにはすでにBorland去ってるからなあ
Delphi2の開発時にMSにいっちゃったんだっけか

58 名前:デフォルトの名無しさん mailto:sage [2008/11/08(土) 20:13:15 ]
delphi2009のことについてききたいんだが
活発なスレどこ?

59 名前:デフォルトの名無しさん mailto:sage [2008/11/08(土) 20:19:52 ]
そんなものない
ML池

60 名前:デフォルトの名無しさん mailto:sage [2008/11/08(土) 20:33:23 ]
欧文フォントで文字セットを日本語にすると、フォントマッパによって
フォントフェイス名より文字セットの方が優先されると思うから、
実体化で指定したフォントと異なるフォントが大抵選択されていると思うが。




61 名前:デフォルトの名無しさん mailto:sage [2008/11/08(土) 20:40:08 ]
だから?

62 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 06:36:37 ]
>>58
【Embarcadero】CodeGearオッチャ その12
pc11.2ch.net/test/read.cgi/tech/1221142134/

63 名前:Delフサギコ ◆A6VzDeLphI mailto:sage [2008/11/09(日) 18:58:30 ]
    ∧ ∧  いまさらながら、
    ミ ゚Д゚彡 BDEの使い方について
  〜ミ,,,,uuミ   ききたいのですが。。。
詳しく知っている人いらっしゃるでしょうか....

環境はD2007と付属のInterbaseを使いたいのですけれども
うまく接続できません。

コンパネのBDE Administratorを起動すると

databaseとして
  dBASE Files
  DBDEMOS
  Excel Files
  GlobalCar
  IBLocal
  MS Access Database
  Visio Database Sample

とあるのですが(初期状態?)
これ、それぞれ、どうやって接続すればいいんでしょうか。


64 名前:Delフサギコ ◆A6VzDeLphI mailto:sage [2008/11/09(日) 19:06:46 ]
IBLocalはどうやら
ユーザー名:SYSDBA
パスワード:masterkey
らしいのですが(ネットで調べると)

データベース エンジン エラー
IDAPI サービスライブラリをロードできません。
ファイル:SQLINT32.DLL
エリアス:IBLocal

と、表示されて接続できません。

BDEのエリアス設定方法、特にInterbaseやら
paradoxやら、ExcelFilesやらが、わかったらうれしいかなと
思ってます。

    ∧ ∧ オシエテ.... 
    ミ ゚Д゚彡
  〜ミ,,,,uuミ


65 名前:Delフサギコ ◆A6VzDeLphI mailto:sage [2008/11/09(日) 21:49:31 ]
誰もいないからいまのうち。
          _____________
   .∧,,∧  /
@'"ミ,,゚Д゚ミ < どんどん質問してしまうぞ。
 UU''UU   \___________

世界のすべてのDelphi質問を俺の質問だけで埋めてシマヘ

IB2007付属のIBConsole2007ならつながったんだけど
DEKOさんのIBConsole、Firebird対応版で
D2007Pro付属のIB2007に対して接続するには
どうしたらいいんじゃろーか。

ローカルのInterbaseとしては
インスタンスがgds_dbという名前で存在するんですが
それを設定するのがどこにあるのかしらと。。。


66 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 22:23:15 ]
>63
なぜIBにつなぐのにBDEなの?IBXなりdbExpressでいいじゃない。

67 名前:Delフサギコ ◆A6VzDeLphI mailto:sage [2008/11/09(日) 23:05:03 ]

    ∧ ∧  比較をしたいんです。
    ミ ゚Д゚彡
  〜ミ,,,,uuミ

しっかし、DB系の技術はわけわかですね。

dbExpressで接続しようとしてもなっかなかうまくいかない。

みつけた文章がこれ。

www.borland.com/resources/jp/pdf/products/delphi/delphi_bde_to_dbexpress_jp.pdf

プロバイド/リゾルブアーキテクチャ…
なにこの奇天烈な用語は。


68 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 23:28:55 ]
ん〜D2007ではBDEはParadox/dbase用に残されている、という状況だったはずなんで。
今試してみたけどうまく繋がらんね(XPSP3+D2007+IB7.1)。

69 名前:Delフサギコ ◆A6VzDeLphI mailto:sage [2008/11/10(月) 00:19:28 ]
上記のURLの
Borland Database EngineアプリケーションのdbExpress への移行

    ∧,,∧  なんて読みにくい
   ,,ミxдxミ  くず文章だ....
  .とミ,,,,,U,,U   頭イタイ...

このサンプル見て、サンプル通りに物を作れるとおもっておんのか....

サンプル構築手順と説明文書が
合わさって書いてあって、ものすごい読みにくい。
せっかくのdbExpressが台無しだな…

>>68さん
調べてくださってありがとうございます。


70 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 19:50:13 ]
Delphi7 ProでBuild 4.453ってちゃんとパッチが当たってる状態ですか?
使っている人いたら最新のビルド番号教えてください。



71 名前:68 mailto:sage [2008/11/10(月) 20:52:16 ]
>69
DEKOさんがお答えくださってるようなのでそちらへドゾ。

72 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 16:14:35 ]
Delphiにて、ハッシュテーブル的(Dictionary的な)クラスはありませんでしょうか?

THashedStringList というのを見つけたのですが、ヘルプを呼んでもイマイチ使い方がわかりません。

TStringListと同様につかえる、という記述をネットで拝見したのですが、
文字列をキーにして、文字列を得たい場合、

 Hash.Values["Hoge"] := "Value of Hoge";

のような感じで、使ってよいものなのでしょうか?

73 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 17:17:51 ]
PopupMenuとその中のitemを動的生成した場合って、PopupMenuを解放すれば
中のアイテムも解放されるんでしょうか?
それとも個別にfree?

74 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 19:05:51 ]
>>72
文字列をシングルクオートで括ってるならいいと思うよ

>>73
ソースを読めば分かるとおり、解放される

75 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 20:18:27 ]
>>73
やってみればわかるだろw

76 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 20:28:40 ]
以下のinterfaceを使ったコードにおいて、メモリーリークが発生するのですが、対処法はありませんでしょうか?
こちらのdSpec delphixtreme.com/wordpress/?p=15 で同様のコードがありどうしたものかと困っております。

program circular_reference;
{$APPTYPE CONSOLE}
uses SysUtils, Classes;
type
  ITest = interface
    ['{38C68C6A-7CBD-42FE-9249-0ED869119A29}']
    procedure Foo;
  end;

  TTest = class;
  TSubTest = class
    FTest: ITest;
  public
    constructor Create(NewTest: ITest);
    destructor Destroy; override;
  end;

  TTest = class(TInterfacedObject, ITest)
    FSubTest: TSubTest;
  public
    constructor Create;
    destructor Destroy; override;
    procedure Foo;
  end;

procedure CallFoo(Test: ITest);
begin
  if Assigned(Test) then Test.Foo;
end;

77 名前:>>76 続き mailto:sage [2008/11/12(水) 20:29:13 ]
{ TSubTest }
constructor TSubTest.Create(NewTest: ITest);
begin
  FTest := NewTest;
  CallFoo(FTest);
end;

destructor TSubTest.Destroy;
begin
  inherited;
end;

{ TTest }
constructor TTest.Create;
begin
  inherited;
  FSubTest := TSubTest.Create(Self);
end;

destructor TTest.Destroy;
begin
  FreeAndNil(FSubTest);
  inherited;
end;

procedure TTest.Foo;
begin
  Writeln('TTest.Foo!!');
end;


78 名前:>>76 続き [2008/11/12(水) 20:31:35 ]
procedure Main();
var Test: ITest;
begin
  Test := TTest.Create;
  CallFoo(Test);
end;
begin
  ReportMemoryLeaksOnShutdown := True;
  Main;
//  Writeln('push ENTER key to end!!'); Readln;
end.

--------------------
で終わりです。

TSubTest.FTestをTTestにし、TSubTest.Create(NewTest: TTest)にした場合は大丈夫のようなのですが、
どうようの入れ子構造にし、TSubSubTestが、ITestを持っていると駄目?なようです。

79 名前:76 mailto:sage [2008/11/12(水) 21:00:52 ]
なんとなく、わかてきた・・・
Delphiのinterfaceが参照カウンタ実装でGCがないので、interfaceを循環参照にするとメモリーリークを起こす、
という奴でしょうか?

TTestのフィールドにTSubTestを持たせないようにすれば、いけそうな気がしてきました。

弄ってみたいと思います。
何か助言あればぜひお願いします

80 名前:デフォルトの名無しさん [2008/11/12(水) 21:05:27 ]
バッチファイルで処理していたことをDelphiのボタンを押した際に処理する
ようにする場合、以下の文はどのように書くのでしょうか?

AAA remove root\BBB
AAA install BBB.inf root\BBB

どなたか力を貸して下さい。
よろしくお願いします。



81 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 21:27:19 ]
>>80
調べる気もないなら使うな

82 名前:デフォルトの名無しさん [2008/11/12(水) 22:00:49 ]
>>81
調べてみたのですが分かりませんでした。
バッチファイルの操作でしたら
WinExec('AAAt.bat',SW_SHOW);
で可能でしたがバッチファイルの中身を操作することが出来ませんでした。


83 名前:デフォルトの名無しさん [2008/11/12(水) 22:37:06 ]
>>82
Tmemo.loadfromfile(aaa.bat)

84 名前:デフォルトの名無しさん [2008/11/12(水) 23:01:10 ]
そもそも以下の様なドライバのインストールはDelphiで可能なのでしょうか?
AAA install BBB.inf root\BBB

>>83
すいません!未熟なので内容が伝わりません。

85 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 23:03:14 ]
>>83見たいな奴のソースとか読みたくねえ

86 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 23:33:02 ]
>>75
それが判る初心者なら質問しませんって・・・
次いでと言ってはなんですがどうやったら判るんです?
解放されてるかどうかの判定。

87 名前:超初心者 [2008/11/12(水) 23:38:50 ]
Delphiでビンゴゲームを作ろうと思っているのですが、1〜80のランダムな数を1回ずつだけ表示させるやり方がわかりません
Random()だと同じ数が出てきてしまうので…
超低レベルな質問なんでしょうが調べてみても良く分からなかったので勇気を持って書き込んでみました
Delphi使いの皆様、どうかご教授ください。お願いします

88 名前:デフォルトの名無しさん mailto:sage [2008/11/12(水) 23:43:00 ]
stringlistに1-80入れて
行をシャッフルして上から見てけば?

89 名前:Delフサギコ ◆A6VzDeLphI mailto:sage [2008/11/12(水) 23:57:00 ]
    ∧ ∧  >>68さん
    ミ,,。_。彡  >>DEKOさん
  〜ミ,,,,uuミ
ありがとです

90 名前:Delフサギコ ◆A6VzDeLphI mailto:sage [2008/11/13(木) 00:09:24 ]
   ∧,,∧    / ̄
\,,,,ミ,,゚Д゚彡 < しつもんす!
⊂,,,,,,,,,つつ.    \_

配列定数初期化は、ここにあるようにかっこよくかけるんだけど
delfusa.main.jp/delfusafloor/opensource/emeditorplugin/20070830170942/Product/DelphiCommentDelete/DelphiCommentDelete.dpr.txt
braceTable: array[TBraceType] of TBraceInfo = (
(beginMark: ''''; endMark: ''''; remove: false),
(beginMark: '{$'; endMark: '}'; remove: false),
(ry

動的配列の初期化は下記の風にしかかけないのかな。
var
braceTable: TBraceTable;
begin
SetLength(braceTable, 5);
with braceTable[0] do
begin beginMark := ''''; endmark := ''''; remove := False; end;
with braceTable[1] do
begin beginMark := '{$'; endmark := '}'; remove := False; end;
with braceTable[2] do
begin beginMark := '{'; endmark := '}'; remove := True; end;
(ry

なんだか、配列定数風にかけたらかっこいいと思うんだけど方法ない?

動的配列に配列定数をほりこむとかでもいいから、なんかきれいな記述方法があればオシエテくで。




91 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 01:09:09 ]
ActiveXコントロールを「スクリプトを実行しても安全だとマークする」
homepage3.nifty.com/LILILIN/HOWTO/activex_safe.htm

Delphiで作ったActiveXに同様の措置をしたいのですが、どうすればいいかわかりませんか?
Del2007を使ってます。

92 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 04:45:02 ]
>>86
FastMMとか

>>90
俺は綺麗な方法なんて知らんので関数作るな

procedure SetBraceInfo(var Brace: array of TBraceInfo; beginMark, endMark: String; remove: Boolean);
var
I: Integer;
begin
for I := Low(Brace) to High(Brace) do
begin
Brace[I].beginMark := beginMark;
Brace[I].endMark := endMark;
Brace[I].remove := remove;
end;
end;

93 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 08:51:51 ]
自分ならTBraceTableをTBraceInfoを保持するTObjectList/array ofベースのgenericなコンテナにして

TBraceInfo = record or object
public
  constructor Init(beginMark, endMark: String; remove: Boolean);
end

function BraceInfo(beginMark, endMark: String; remove: Boolean): TBraceInfo;
begin
  Result.Init(beginMark, endMark, remove);
end;

braceTable[0] := BraceInfo('''', '''', False);
braceTable.Add(BraceInfo('''', '''', False));
braceTable[1].Init('{$', '}', False);
braceTable.Add('{', '}', True);

なんて書けるようにするな。どこまで書きやすくするかは利用頻度次第。
Delphiの定数表記は貧弱だからあまりがんばる余地がない。

94 名前:ななしへたぐらま ◆XcB18Bks.Y mailto:sage [2008/11/13(木) 18:14:12 ]
>>76-79
条件がよく分からないのですが別のオブジェクトに所有されるときに参照カウントが0になって勝手に解放されてしまうようですね。
手っ取り早い解決法は参照カウントが無効なクラスを用意してTInterfacedObjectの代わりに使うことです。

// 参照カウントを無視するインターフェイスクラス(TObject版)※TInterfacedObjectのコピペ改造
TNoRefCountInterfacedObject = class(TObject, IUnknown)
protected
 function _AddRef: Integer; stdcall;
 function _Release: Integer; stdcall;
public
 function QueryInterface(const IID: TGUID; out Obj): HResult; virtual; stdcall;
end;

function TNoRefCountInterfacedObject.QueryInterface(const IID: TGUID;
 out Obj): HResult;
const
 E_NOINTERFACE = HResult($80004002);
begin
 if GetInterface(IID, Obj) then Result := 0 else Result := E_NOINTERFACE;
end;

function TNoRefCountInterfacedObject._AddRef: Integer;
begin
 Result := -1; // これで参照カウントが無効になるらしい
end;

function TNoRefCountInterfacedObject._Release: Integer;
begin
 Result := -1; // これで参照カウントが無効になるらしい
end;

95 名前:ななしへたぐらま ◆XcB18Bks.Y mailto:sage [2008/11/13(木) 18:41:43 ]
>>90
レコード型変数は直接代入できますので配列定数からコピペする場合は

const cBraceTable: array[TBraceType] of TBraceInfo = (ry

var e: TBraceType;

SetLength(BraceTable, Length(cBraceTable));
for e := Low(TBraceType) to High(TBraceType) do
 BraceTable[ord(e)] := cBraceTable[e];

…くらいにはできそうです(一応テスト済み)。


96 名前:76 mailto:sage [2008/11/13(木) 19:41:55 ]
>>94
勝手に開放される側の話じゃなく、開放されないっていう話なのですが・・・('A`)

>>94の方法はDelWikiにある奴ですよね

97 名前:ななしへたぐらま ◆XcB18Bks.Y mailto:sage [2008/11/13(木) 22:52:12 ]
>>96
なるほどそれは失礼しました。
TSubTest.DestroyでFreeAndNil(FTest)(自分で解放する)では駄目ですか?
せっかくの自動解放システムを捨てるのももったいない話ですが…

>>94はDelWikiを見る前からやっていましたが
もし知っていたら余計な苦労をしなくて済みましたね。


98 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 23:00:29 ]
TMemoに読み込んだファイルの内容を操作したいんだけど
行を指定するのはMemo1.Lines[i]といった形でできる。
では行の中のさらに文字の部分を指定するのはどうすればいいんでしょうか?



99 名前:Delフサギコ ◆A6VzDeLphI mailto:sage [2008/11/13(木) 23:58:29 ]
    ∧,,∧   >>92さん
    ミ,,゚Д゚,彡  ありがと....
   ミ(旦⊂ ミ  
    (~,,(~,,,ミ@   でも、そのコード、動かんがな...

>>93さんもありがと。
>TObjectList/array ofベースの
いや、そこまでは。。。

>Delphiの定数表記は貧弱だからあまりがんばる余地がない。
そのようですね。

とりあえずBlogに書いてみたので、この程度の使い道っす。

>>DEKOさん
内緒ですし、あと、猫の耳が
Λ∧
ラムダになってます。
耳は"および"のほうがカワイイですよ。
MSPゴシックだとわかりませんが。明朝だとわかる思います。



100 名前:Delフサギコ ◆A6VzDeLphI mailto:sage [2008/11/14(金) 00:02:20 ]
>>98さん
    ∧,,∧   こんな感じかしら
    ミ゚Д゚,,彡 
   ミ(旦⊂ ミ  操作なので。
    (~,,(~,,,ミ〜   
これ動かして慣れてみてください。

procedure TForm6.Button1Click(Sender: TObject);
var
 i: Integer;
 j: Integer;
 s: String;
begin
 for i := 0 to Memo1.Lines.Count - 1 do
 begin
  s := Memo1.Lines.Strings[i];
  for j := 1 to Length(s) do
  begin
   s[j] := '*';

//読み出しだけならこんな書き方もできたり。
// s := s + Memo1.Lines[i][j];

  end;
  Memo1.Lines[i] := s;
 end;
end;




101 名前:98 mailto:sage [2008/11/14(金) 00:32:08 ]
>>100
助かりました。
ありがとうございます!
おかげで色々と操作ができまして懸念が1つ解消されました。

102 名前:87 [2008/11/14(金) 09:25:46 ]
>>88
ご回答ありがとうございます。やってみます

103 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 11:16:40 ]
>102
えぇ、
普通にRandomで、出てきた数字を覚えておいて重複したら却下すれば良いだけじゃないの?


104 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 11:19:55 ]
>>103
時間の無駄。

105 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 11:32:56 ]
ざくっと書いて見た。

procedure TMainForm.Button1Click(Sender: TObject)
var
o: array[0..79]of Boolean;
i, n: Integer;
function AllOut: Boolean;
var
i: Integer;
begin
result := false;
for i := 0 to 79 do
if( not( o[i] ) )then exit;
result := true;
end;
begin
for i := 0 to 79 do
o[i] := false;

while( not( AllOut ) )do
begin
n := Random( 80 );
if( not( o[n] ) )then
begin
o[n] := true;
// ここに新たに数字が出たときの処理
end;
end;
end;



106 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 16:28:47 ]
この流れちょっと前にも見たな

107 名前:76 mailto:sage [2008/11/14(金) 18:45:47 ]
>>97
つきあってくれてありがとう。質問者側じゃないようなレスしてスマソ

ReportMemoryLeaksOnShutdown の出力結果張り忘れてました。
はっときます。


つまり、両方(TTestとTSubTest)のDestroyが呼ばれてないんです。

どちらかの開放の責任を循環参照の外側に出せば、開放されるはずなので、
いろいろ弄繰り回して試してみたいと思います。

108 名前:76 mailto:sage [2008/11/14(金) 18:48:23 ]
出力結果張る前に投稿しちゃった・・・
以下は、>>76-79 の ReportMemoryLeaksOnShutdown の出力結果です。

---------------------------
Unexpected Memory Leak
---------------------------
An unexpected memory leak has occurred. The unexpected small block leaks are:



1 - 12 bytes: TSubTest x 1

13 - 20 bytes: TTest x 1


---------------------------
OK
---------------------------

109 名前:76 mailto:sage [2008/11/14(金) 18:51:32 ]
Delphi2009をお持ちの方にお聞きしたいのですが、
こちらの記事にて、

Delphi 2009で追加された3つの便利な機能をコードで検証 − TechTargetジャパン
techtarget.itmedia.co.jp/tt/news/0811/11/news02.html

> 注4.関数内関数を匿名関数型の変数に代入することもできる。

とあるのですが、これは本当でしようか?

今までは関数内関数の参照は取得できず、
以下のサイトのようなテクニックで無理やり実現していました。

λ with INNER FUNCTION
hp.vector.co.jp/authors/VA028375/delphi/delphipascal_xx_lambda.html

もし、「関数内関数を匿名関数型の変数に代入」ができると、
さらなる可能性が広がるのですが・・・

110 名前:109 mailto:sage [2008/11/14(金) 18:52:16 ]
名前欄消し忘れたorz 76と関連性はないです。



111 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 18:58:02 ]
それが2009の拡張なんだろ

112 名前:デフォルトの名無しさん mailto:sage [2008/11/14(金) 19:46:00 ]
>>106
procedure Main();
var Test: ITest;
begin
  Test := TTest.Create;
  CallFoo(Test);
end;
Test変数がスコープ外れた後、参照カウンタが-1されるが、まだ、TTestクラスのインスタンスは
自身の内部変数FSubTestによって参照されているので、参照カウンタ1のまま、TTest.Destroyが永遠に呼ばれず
メモリリーク。







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

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

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