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

Delphi相談室その5

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

■前スレ
Delphi相談室その4
http://pc.2ch.net/test/read.cgi/tech/1018211735/

■気楽な雰囲気がよければこちら
モナーの *やさしい* Delphi質問スレ Ver.7
http://pc.2ch.net/test/read.cgi/tech/1021201697/

■C#も含む話題はこちらに
C# 仲良し Delphi Round 2
http://pc.2ch.net/test/read.cgi/tech/1022662451/

つづく >>2-3 あたり
0002デフォルトの名無しさんNGNG
■Delphi関連スレ
ミ,,゚Д゚彡フサギコのフサフサDelphi談話室�B
http://pc.2ch.net/test/read.cgi/tech/1021554929/
★クライアントサイド最強の Delphi に物申す★
http://pc.2ch.net/test/read.cgi/tech/1001442200/
Delphiで小さな実行ファイルを作ろう
http://pc.2ch.net/test/read.cgi/tech/1009080085/

■過去スレ
Delphi相談室その4
http://pc.2ch.net/test/read.cgi/tech/1018211735/
Delphi相談室その3
http://pc.2ch.net/test/read.cgi/tech/1010153466/
Delphi相談室その2
http://pc.2ch.net/tech/kako/995/995950803.html
Delphi相談室
http://piza.2ch.net/tech/kako/971/971261573.html
0003デフォルトの名無しさんNGNG
不要なusesを探す簡単な方法として
uses 節から 1つづつ取り外してはコンパイルしてみてエラーが出るかどうかという方法を使おうと思います
標準出力を得る為に無名パイプが必要になるので、
検索した所、サンプルコードはみつけました。
そこで、無名パイプ クラスを作ろうかと思います。

 既に誰か作って公開してあるのなら無駄なので、ご存知なら教えて下さい
0004デフォルトの名無しさんNGNG
>>3
だからその方法は駄目だって。
usesから必要なユニット外してもコンパイルエラーでないことがある。
0005デフォルトの名無しさんNGNG
>>4
なんで出ないの?
0006デフォルトの名無しさんNGNG
>>4
自分もこの方法をよく使うもんで、どういった状況でそうなるのか気になる。
よければ教えて欲しいかも。あと、再構築とかだったらどうだろ?
0007デフォルトの名無しさんNGNG
ミ,,゚Д゚彡フサギコのフサフサDelphi談話室�B
http://pc.2ch.net/test/read.cgi/tech/1021554929/

このスレに同じ話題がある
0008デフォルトの名無しさんNGNG
>>7
そのスレの148だな。なるほど。
00096NGNG
そういえば、前に自分もVCL標準クラスと同名のクラスでラップさせてたっけ。
褒められたもんじゃないけど、バグ対策だったか何かで・・・。
この場合、usesからユニットはずしてもコンパイルが通るね。サンクス >>7-8
0010デフォルトの名無しさんNGNG
>>4
再構築ぐらいせえよ
0011デフォルトの名無しさんNGNG
>10
( ´,_ゝ`)プッ
0012デフォルトの名無しさんNGNG
今エディタを作っているのですが、Undo・Redoを実装するために
先入れ後出し配列を使おうと思います。
で、Stringを格納するクラスを作ろうと思うのですが、Contnrユニットにあるクラスを継承させるか、
TStringsList周辺のクラスから継承させるべきか迷っています。
どちらから継承させるのがベストでしょうか?
0013デフォルトの名無しさんNGNG
>>12

TObject から。マジレスだよ
0014デフォルトの名無しさんNGNG
>>12 作る必要なし。*後入れ先出しなら* TObjectQueue でいいじゃん
Redoの実装には Queue を2本用意するか、
循環リストを用意する必要があると思われ。
循環リスト作るならTObjectListでリングバッファとかな。
0015デフォルトの名無しさんNGNG
>>12>>14
>*後入れ先出しなら* TObjectQueue でいいじゃん
後入れ先出し(LIFO)はQueueじゃなくてStackですが・・・
001614NGNG
イヤン
吊ってくる。
0017デフォルトの名無しさんNGNG
じゃ、TObjectStack使っとけ。
0018デフォルトの名無しさんNGNG
やっぱりTObjectStackですか
ありがとうございます

循環リストと後出しリスト2本、どっちが実行効率が良いでしょうか?
後出し2本だとUndo・Redoするたびにリストに追加/消すを行うことになるから、
やっぱりリング作ったほうがいいですかねぇ…
0019デフォルトの名無しさんNGNG
リストの伸長に伴う再割当てのコストを考えると循環リストかね。
TObjectStack って事前に割当量を設定できないっぽいから。
どうせなら循環リストクラスを作って公開しておくれ >>12
用途を考えるとどこかに公開されてそうだが、見た記憶がない、、
作るなら13の言う通り内部に動的配列を抱えた TObject 継承かね。
基底クラスはPointerで扱ってTObject用に継承したのを用意する、と。
利用中にリングサイズを変更できる仕様でタノム
あとTOrderedListクラスと使用感が近いと好感度が高いかも。
0020デフォルトの名無しさんNGNG
>>19
>リストの伸長に伴う再割当てのコストを考えると循環リストかね。
>TObjectStack って事前に割当量を設定できないっぽいから。

TObjectStackやTObjectQueueは配列とは根本的に異なるデータ構造を
しています。だから割当量を設定できないのも当然、再割当てのコストは
どのような状況でもほぼ一定です。

あと循環リストならTObjectQueueで代用可能じゃないかな?
00213NGNG
無名パイプで標準出力を取る事は出来るようになりました。
(結構難しかったです。 最初取り出した後、スレッドが終了できなくて困った)

ただ、パイプで出力を拾わなくても、終了コードが 0か1かで判定出来る
という事が判ってガックリです。
0022名無し~3.EXENGNG
前スレでタスクバーから表示が消せないと書いたものです。
前スレ936さんに教えていただいた
SetWindowLong(Application.Handle, GWL_EXSTYLE,
GetWindowLong(Application.Handle, GWL_EXSTYLE) or WS_EX_TOOLWINDOW);
この方法では、最小化時にスタートボタンの上にタイトルバーだけ残るといった症状が表れてしまいました。

ShowWindow(Application.Handle,SW_HIDE);
これでは全く変化が無く、

RichEdit1.Lines.Assign( Memo1.Lines);
これだと実行時にWindowまで現れません。

Delphi Personalだからなのか、
OSがWin2kということで起こるのでしょうか?
どうかタスクバーから表示を消す良い方法を教えてください・・
0023デフォルトの名無しさんNGNG
>>22
TIconHideってコンポーネントがそのものズバリなものだからソース見てみたら?
002422NGNG
>>23
ソース内にTiconありませんでした・・
0025Delフサギコ ◆zE1iiRdQ NGNG
program Project1;

uses
 Windows,
 Forms,
 Unit1 in 'Unit1.pas' {Form1};

{$R *.res}

begin
 ShowWindow(Application.Handle,SW_SHOW);

 Application.Initialize;
 Application.CreateForm(TForm1, Form1);
 Application.Run;
end.
              _____________
  ,,,,,,,,,,,,,,,,∧,,∧   /
〜′,,,,,,,,,,ミ,,゚Д゚彡 < ゴルァ?
  UU"""" U U    \_______________
0026デフォルトの名無しさんNGNG
>>25
ぶらくら?
002722NGNG
すみません、書きミスってました。

RichEdit1.Lines.Assign( Memo1.Lines);

→ Application.ShowMainForm := False;
0028デフォルトの名無しさんNGNG
>>25 ShowWindow(Application.Handle,SW_SHOW);

なんの意味があるの?
0029デフォルトの名無しさんNGNG
>>22

Becky! みたいに最小化するとタスクバーから見えなくするには

type
TForm1 = class(TForm)
ComboBox1: TComboBox;
Timer1: TTimer;
procedure FormCreate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private 宣言 }
public
procedure AppMinimize(Sender: TObject);
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.AppMinimize(Sender: TObject);
begin
ShowWindow(Application.Handle,SW_HIDE);
Timer1.Enabled := true;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Application.OnMinimize := AppMinimize;
Timer1.Enabled := false;
Timer1.Interval := 5000;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
Timer1.Enabled := false;
ShowWindow(Application.Handle,SW_SHOW);
Application.Restore;
end;
003022NGNG
>>29
ありがとうございます。
でもShowWindow(Application.Handle,SW_HIDE);
が利かないんですよね。
一体何故なんだろう・・
0031ビル・デイツNGNG
デルファイ5。
フォーム1のボタンをくりくするとフォーム2を呼び出す。
このとき、フォーム2が表示されている間、フォーム1は最小化若しくは操作不能状態にする。
フォーム2を終了させると、フォーム1を元のサイズに戻し、若しくは操作可能状態にする。

というのは、どうすればいいのですか?

ちなみに、フォーム1のボタンに

form2.show;
form1.enabled := false;

フォーム2のボタンに

form1.enabled := true;
form2.close;

とかやってみたけど、だめだった。
0032デフォルトの名無しさんNGNG
>>31
フォーム2.ShowModal;
0033デフォルトの名無しさんNGNG
>>31
↓が常套手段だと思う

// Form2を開くメソッド
TForm1.OpenForm2;
begin
 Form2:=TForm2.Create(Self);
 Minimize;
 Form2.Execute;
Normalize;
 Form2.Release;
end;

procedure TForm2.Execute; // publicメソッド
begin
 ShowModal;
end;

Form2は自動作成しないでおくこと
0034デフォルトの名無しさんNGNG
×Normalize;
× Form2.Release;
○ Form2.Release;
○ Normalize;
だったかな
0035デフォルトの名無しさんNGNG
>>30
いったい、どうしたいのかわからない。
タスクバーに表示しないようにして、さらに最小化時にアイコン化
しないようにしたら、完全に消えてしまうような気がするが・・・。
どうやって復帰させるの?

どういうアプリなのか、複数のフォームがあるのか、それとも
タスクトレイにアイコンがあるのかもわからんし。
そうやって情報を小出しにされると答える側も萎えると思うんだが。
003622NGNG
>>35
すみません。
ランチャーを作っていて、タスクトレイに常駐させたいのです。
タスクトレイにアイコンを表示してあって、
現在そこから最小化、元に戻すはできます。
そこでタスクバーにも表示されると邪魔なので消したいのですが、
上記の通り何故か表示されたり、
表示されなくても最小化時にタイトルバーだけ残ってしまったりと、
おかしな現象が起きているのです。
0037デフォルトの名無しさんNGNG
>>35
22は「教えてクン養成マニュアル」の実践者なのでしょう
こういう場合、放置が正しい扱い方かと思われ
003837NGNG
>>36
分かったよ・・・ごめんね
003922NGNG
>>37
嫌がらせはやめてもらえませんか?
私は自分なりにかなり調べたつもりです。
前スレと本スレにも書いてある通り
一般にタスクバーから消去する方法は試しています。
あなたが分からなくて暇だからと余計なことを書き込まないで下さい。
私は真剣にプログラミングについて勉強したいのです。

これ以上は荒しと同等と思われては嫌なので、
私の質問に対して答えてくださる方へのレスしか書き込みません。

原因や解決策がわかる方、どうかよろしくお願いします。
0040デフォルトの名無しさんNGNG
つーか、トリップ付けろ。もしくは諦めろ。
0041デフォルトの名無しさんNGNG
>>22
これじゃだめなのか?

type
   TForm1 = class(TForm)
      ApplicationEvents1: TApplicationEvents;
      procedure ApplicationEvents1Minimize(Sender: TObject);
   private
      { Private 宣言 }
   public
      { Public 宣言 }
   end;

var
   Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.ApplicationEvents1Minimize(Sender: TObject);
begin
   Hide;
end;

end.
004241NGNG
タスクバーから消すのは

program Project1;

uses
   Forms, Windows,
   Unit1 in 'Unit1.pas' {Form1};

{$R *.res}

begin
   SetWindowLong(Application.Handle, GWL_EXSTYLE,
      GetWindowLong(Application.Handle, GWL_EXSTYLE) or WS_EX_TOOLWINDOW);
   Application.Initialize;
   Application.CreateForm(TForm1, Form1);
   Application.Run;
end.
004322NGNG
>>41
だめっぽいです。
タスクバーにもでてきます。
でも2日も経って似たような症状の人の書き込みも無いので、
私の環境だけの特殊な症状なのでしょうか?
一度OSごと再インストールした方がいいのかな・・
004422NGNG
>>42
これではタスクバーからは消えるんですが、
最小化時Windowのタイトルバーだけ残ってしまいます。

>>41さんありがとうございます。
どうしてうちだけムリなんでしょう・・・
0045デフォルトの名無しさんNGNG
>>41と>>42の両方やってる?
004641NGNG
>>43
>>44
TForm1.Hide; で消えてたタスクバーに現れるって事?
それともTForm1.Hide; でフォームが消えないって事?

どっちにしても謎だな。これ以上はわからん。スマンな。
004722NGNG
さっき気付いてやってみました。
どうもありがとうございます。
できました。
>>41さん、ほんとありがとうございます
ご迷惑をおかけしましたm(__)m
0048デフォルトの名無しさんNGNG
なんでトリップ付けないの?荒し?>>22
004941NGNG
>>47
両方やってなかっただけなのか。
そう書いとくべきだったか。スマンな。
まあ、うまくいってなにより。

ちなみに>>36の
> 表示されなくても最小化時にタイトルバーだけ残ってしまったりと、
> おかしな現象が起きているのです。
は、おかしな現象でもなんでもない正常な動作だよ。

Delphiはサイズ0のアプリケーションウィンドウ(タスクバーに表示されるのはコレ)
があって、すべてのフォームはそのアプリケーションウィンドウに所有された
ウィンドウであることを覚えとくといいかもね。
005022NGNG
>>41
ご教授どうもありがとうございます。
> Delphiはサイズ0のアプリケーションウィンドウがあって
これは知りませんでした。
まだまだ奥が深いですね。
もっと勉強してきます!
ホントにありがとうございました。
0051デフォルトの名無しさんNGNG
>>50 まだまだ奥が深いですね。

アプリケーションウィンドウの存在は、奥が深い、というより
VCL 実装上の理由によるので、欠点だと思っている人の方が
多いのだよ。
0052デフォルトの名無しさんNGNG
>>22 の問題は FAQ なので、だれかが書いていたように、たんにソースつきの
コンポーネントをDLして解析するだけでは? 22 の Application ウィンドウ
の動作はどこか変なので、それを解明した方が根本的な解決につながると思ふ

0053ビル・デイツNGNG
>32

あ、そうか〜。

さんきゅです。
0054ビル・デイツNGNG
>33

いまいちよく分からないんですけど、このコードは、正しいんですか?

minimizeとかnormalizeだけの行が、エラーになるんですけど。
0055デフォルトの名無しさんNGNG
normalize -> restore
じゃないかなー
0056デフォルトの名無しさんNGNG
今日、エーアイ出版の本を買った。
30ページに「ディスクトップ」の文字を発見して、愕然とする。
今の版では直ってるだろうか?
0057デフォルトの名無しさんNGNG
30ページに「150円引き」の文字を発見して、ぶちきれる。
0058デフォルトの名無しさんNGNG
えーと、MainFormを非表示にするとタスクバーの表示が
消えてしまうのって回避する方法ってありますか?

MainFormと別のフォームを、一度に片方しか表示しないで
切り替えたいんだけど、途中でタスクバーの表示が点滅してしまい、
他にタスクバーに表示があると一番右端に動いてしまいます。

procedure TForm1.Button1Click(Sender TObject);
begin
 Hide;
 Form2 := TForm2.Create(Application);
 try
  Form2.ShowModal;
 finally
  Form2.Release;
  Show;
 end;
end;

こんな感じです.

これテストしてて気が付いたけど、もともとFormのVisibleをプロパティエディタで
Trueにしとくと、ShowModalって使えなくなるんですね・・・
0059もういないんじゃねーの? ◆gnutn99c NGNG
まぁ、トリップ付けないから、こーなるわな(藁
0060デフォルトの名無しさんNGNG
>>58
   (゚д゚)  Form2のOnActivate(OnShowだとタスクバーがちらつく)でForm1を消して、
  ~(  )− Form2のOnCloseでForm1を表示しる!
  / >
0061デフォルトの名無しさんNGNG
>>60
ネタは放置しる!
0062デフォルトの名無しさんNGNG
ネタなの?
0063Delフサギコ ◆zE1iiRdQ NGNG
           _____________
  ∧,,∧    /
  ミ,,゚Д゚彡 < VCLのForm挙動にこだわるのは
  ,;゙  ミ     \_茨の道だよ。
 ミ.  ミ
/゛゛゛゛

http://homepage1.nifty.com/wizman/component/neosdi/index.html
これを使うと、なかなか改善されて鬱が解消されるかも。
0064デフォルトの名無しさんNGNG
>60
できたー!ものすごくありがとう!誰だネタって言ってるのは.
しかし、あっさりできてちょっと鬱・・・俺の2時間・・・

>63
頂いたので、研究してみます
0065デフォルトの名無しさんNGNG
C,C++でいうdoxygenのような
ObjectPascalで使えるドキュメント自動生成ツールはないでしょうか?
006665NGNG
age忘れました。
0067デフォルトの名無しさんNGNG
ML入れ
0068デフォルトの名無しさんNGNG
>>65
無いです。Delphiなんて業務じゃ使えないので。
0069デフォルトの名無しさんNGNG
>>68
上司が無能だとお互い苦労するね、VBで組んだ方がいいシステム組めるとかって
錯覚してる奴多いよね、自分の能力がVBにマッチしてるだけなのにさ。
しかも、効率効率と五月蝿い上司ほど、VBが好きなのは笑える、効率重視ならDelphi使う
のが普通だろうに。まぁC#って選択もこれからはあるかもしれないけど、まだ安定性とか
未知な部分が多いからDelphiを使いたいよね。
007069NGNG
読み直してみたら、なんか俺誤解してる?

68は煽りなのかな(?_?;
0071デフォルトの名無しさんNGNG
別に業務で使うわけじゃなくても、
doxygenやjavadocみたいにクラス階層や依存関係をビジュアルに出力してくれるツールは
便利だと思うが。
特にしばらくほったらかしにしといたコードを読む場合や他人が書いたコードを読む場合とか。
0072デフォルトの名無しさんNGNG
>>65 無料のものを探してるの? 
有料なら
"ドキュメント自動生成 Delphi"で検索すれば出るでしょ
日本でDelphiのみのものが2つ、幾つか対応してるのも
0073デフォルトの名無しさんNGNG
>>72
無料の物を探しています。
0074デフォルトの名無しさんNGNG
>>73
じゃあ国内はこの程度かな

http://www2.big.or.jp/~osamu/
Unit Reporter非営利目的の使用はフリー

http://www.cyberware.co.jp
フリーウェアのVer 1.2では、Word未対応、グローバル変数、関数対象外

0075デフォルトの名無しさんNGNG
>>74
両方使ってみたのですが全く使い物になりませんでした。
Unit ReporterはBDEが初期化できないというエラーが出て動かない。
D/Scribeは印刷プレビューしようとするとメモリを食い尽くしてしまってプレビューできない。
国内じゃなくてもいいので有名どころのツールは何か無いでしょうか?
0076デフォルトの名無しさんNGNG
それとD/Scribeは印刷専用のようだったので、
できればHTMLやRTF等で結果が出力できればいいのですが…
0077デフォルトの名無しさんNGNG
DocBuilderというのを海外で見つけたので使ってみましたが、
HTML出力は出来ましたが依存関係やクラス階層等を出力してくれないのと、
出力するHTMLがdoxygenに比べて気が利いていない感じです。
doxygenのdelphi対応版とか誰か作っていればいいんですが…
0078デフォルトの名無しさんNGNG
>>77
自分でやってみたら?
0079デフォルトの名無しさんNGNG
>>78
私にはそういう高度な事はできそうにないので…
0080デフォルトの名無しさんNGNG
>>75
 BDEが初期化出来ないって、もしかしてD6パーソナル?
D/Scribeも自分の所では問題無かったし

海外版は自分で試してみて・・評価は教えてね
http://www.torry.net/tools_documentation.htm
0081デフォルトの名無しさんNGNG
>>65
http://www.google.com
0082デフォルトの名無しさんNGNG
>>80
Del6パーソナルです。
D/Scribeはこちらの環境ではプレビュー時にいくら待っても
プレビューしてくれなくてメモリだけどんどん食っていって
400MB位持っていかれたところで強制終了しました。

それとページ紹介ありがとうございます。
フリーのものを2つとも試してみましたが、
DelphiDoc v.2.0 …見た目はそれなりに良いが
依存関係や呼び出し関係等が出力できない
dpd3…印刷専用
という感じでした。

>>81
もう調べました。
DocBuilderもgoogleでみつけたものですし。
0083デフォルトの名無しさんNGNG
rjPasDocはダメ?
http://www.zeitungsjunge.de/delphi/rjPasDoc/Index.htm
0084デフォルトの名無しさんNGNG
>>54
 minimize→WindowState:=wsMinimized;
 normalize→WindowState:=wsNormal;
と読み替えておくんなせい
0085デフォルトの名無しさんNGNG
おい、Delphi相談室その4より下がってるぞ!!
0086デフォルトの名無しさんNGNG
あげてみた
0087Delフサギコ ◆zE1iiRdQ NGNG
質問してみた。
________
|          .|
|  教えて!   .|
|_______|
∧,,∧||
ミ*゚Д゚||
〃 ⊃||

教えてくださいませ。
今更なんですが、コンストラクタとか
オブジェクトの生成についての質問っす。

引数付きコンストラクタを実装して
その引数の条件によってはそのオブジェクトを生成したくない

というものを作りたいとします。

例えば、
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1021888173&res=10
ここのTShortcutFile

constructor TShortcutFile.Create(FileName: TFileName);
begin
if not FileExists(ChangeFileExt(FileName,'.lnk')) then
raise Exception.Create('ファイルが存在しません');

inherited Create;

ShellLink := CreateComObject(CLSID_ShellLink) As IShellLink;
try
OleCheck(ShellLink.QueryInterface(IPersistFile,PersistFile));
くコ:彡 イカ略

こんな実装をしてます。
0088Delフサギコ ◆zE1iiRdQ NGNG
で、使うときには
ShortcutFile1 := TShortcutFile.Create('C:\無題.lnk');
 try
  処理
 finally
  ShortcutFile1.Free;
 end;

こんな風にしているのですが...
これって、ちゃんと正しく動作しているんでしょうか?

今ひとつ不安なんでございます。

コンストラクタをキャンセルする
正しい書き方があるのなら、教えてくださいな。

            ___________
    ∧,,∧    /
  _ ミ,,゚Д゚彡_< これで大丈夫なん?
.=| |=U=U=| |= \
 | | .ミ   ミ | |    ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 | |ノ∪''∪. | |
 | |      | |
0089デフォルトの名無しさんNGNG
>>83
コンパイルでエラー出まくって試す事さえできませんでした。
0090デフォルトの名無しさんNGNG
>>88
大丈夫。例外がでたらtryにすら到達せず、外側に飛んでいきますな。
0091デフォルトの名無しさんNGNG
コンストラクタ内でのエラーは例外投げるのが常套句。
なぜかDelではあまり見ないが。
0092デフォルトの名無しさんNGNG
Delphi 6 の Personal/Professional に Excel みたいな表を表示できる
コンポーネントはありますか? フリーなコンポーネントでもかまいません。

で、もし、あるとした場合ですが…

セルにチェックボックスみたいなのをつけることはできますか?


よろしくお願いします。
0093無責任だがNGNG
Delphiのヘルプでコンストラクタについて
>コンストラクタの実行中に例外が生成された場合,Destroy デストラクタが
>自動的に呼び出されて未完成のオブジェクトが廃棄されます。

とあります。では、例外を使わずに、自前で解放する方法は無いかという事ですが
残念ながら良い方法はありません。

コンストラクタ内で free してしまっても
帰り値はfreeする前に一時的に生成されたアドレスが帰ってしまいます。
ではそれを無理やりnilにする方法は無いかという事になります。
例えば self:=0; としてしまうとどうでしょう?
そうすると、AfterConstructionという仮想関数の呼び出しが失敗します

無理やりの方法として調べた範囲内では
procedure AfterConstruction;override;
 とコンストラクタ呼び出し後の処理を継承して、この中でfreeした上で
asm
 mov esi,0
end;
とやれば、なんとか誤魔化せそうですが・・・・・ とりあえず例外使いましょう

例外でIDEが止まるの嫌なら Abortを使うとよいでしょう
0094無責任だがNGNG
ただ>>87のような例の場合は コンストラクタをpublicにしないで

function ShortcutFileCreater(FileName: TFileName):TShortcutFile;

と関数で作成させるという方法も考えられます。
帰り値が nil なら作成出来ないと判断する訳です

もし、このオブジェクト生成作業に多様性を持ち込みたい場合はクラスメソッドにする方法もあります
0095Delフサギコ ◆zE1iiRdQ NGNG
            _____________
   ∧,,∧    /
  _ ミ,,゚Д゚彡 _< これでステップアップ!
.=| |=U===U=| |= \
 | | .ミ   ミ | |     ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 | |ノ∪''∪. | |
 | |      | |

確認なんですが
begin
 処理A

 ShortcutFile1 := TShortcutFile.Create('C:\無題.lnk');
 try
  処理B
 finally
  ShortcutFile1.Free;
 end;

 処理C
end;

この状態でTShortcutFile.Createで例外が発生すると
処理Cは動作しないですよね。
0096Delフサギコ ◆zE1iiRdQ NGNG
                _____
      ∧,,∧___   /
    /ミ,,゚Д゚ミ/\<  あってる?
  /| ̄∪∪ ̄|\/ \_____
    |____|/

コンストラクタで例外が発生しても
処理Cを動作せせるためには

begin
 処理A

 try
  ShortcutFile1 := TShortcutFile.Create('C:\無題.lnk');
  try
   処理B
  finally
   ShortcutFile1.Free;
  end;
 except
  on Exception do
 end;

 処理C
end;

こんなのや

begin
 処理A

 try
  ShortcutFile1 := TShortcutFile.Create('C:\無題.lnk');
  try
   処理B
  finally
   ShortcutFile1.Free;
  end;
 finally
  処理C
 end;

end;

こんな風にするのでいいのでしょうか。
0097無責任だがNGNG
クラスメソッドにする場合、

TShortcutFile = class
private
constructor Create(FileName: TFileName); //ホントのコンストラクタ は隠してしまいます

public
class function CheckCreate(FileName: TFileName):TShortcutFile ;
begin
if not FileExists(ChangeFileExt(FileName,'.lnk')) then result:=nil
else Result:=Self.Create(FileName);

と作成出来ない場合は nil を返してしまいます。
使う時には

ShortcutFile1 := TShortcutFile.CheckCreate('C:\無題.lnk');
if ShortcutFile1<>nil then with ShortcutFile1 try
 処理
finally Free end;

と使うので、使う時の外見上は>>93で無理やりnilを返すコンストラクタと区別はつきません
0098無責任だがNGNG
>>95-96
 もちろんそれも正解です。
 しかし、コンストラクタで例外を出さないですむ関数やクラスメソッドの実装も
 追加しておくとより親切かもしれません。
0099デフォルトの名無しさんNGNG
if foo <> nil then ...
が嫌だから例外投げるんだし
一つの機能を複数の方法で提供するのは混乱の元だ。
0100デフォルトの名無しさんNGNG
>一つの機能を複数の方法で提供するのは混乱の元だ。

 なぜ? 色々な切り口を提供出来る方が混乱が少ないと思う
 実際 VCLでも同じ機能を実現する方法を複数用意してるでしょ?
 たとえば ShowとVisibl とか フォーカスの設定とか

>>96の場合は例外をネストして判り難くするより、 条件判断で処理
 した方がスマートでしょう?
0101デフォルトの名無しさんNGNG
>>99
はげどう
使う方も保守するほうも。
0102Delフサギコ ◆zE1iiRdQ NGNG
             __________
   ∧,,∧      /
  ミ,,゚Д゚彡  < かしこくなりました。サンクスコ
  ミ つ且~~   \___________
〜ミ,,,,,, ,,ミ

>>98
そっすか、正解でよかったです。
親切というよりかは>>95-96のコードは
美しくなさすぎなんで、
なんとかきれいになる、関数&クラスメソッドの方を
フサは使おうと思いますです。

>>100に俺は同意っす。
>>96がもっとスマートに書けるならともかく
書くの面倒だから、代替手段があってもいいのではないかしら?
0103無責任だがNGNG
>>99
それはまあ、混乱すると思うならそれでいいと思うよ。
ただ、メモリが足りなくてもコンストラクタで例外が投げられてしまう。
だから例外は出来るだけリソース不足に統一した方がいいとも思うよ

こういう方法を使うと、使う方では例外を場合別けしなければいけなくなるわけで
それは複雑さを増してしまうという見方もあるんじゃないの?

と書こいてたら >>102 のレス・・・

元のソースを見るとTShortcutFileのコンストラクタとしてファイル名を引数
に取るからこういう問題が出るわけで、
 コンストラクタでは CreateComObject までにしておいて
function LoadShortCut(ファイル名):boolean;
function SaveShortCut(ファイル名):boolean;
 とメソッドを別に用意したほうがいいんじゃないの?
0104Delフサギコ ◆zE1iiRdQ NGNG

    ∧,,∧  
   ミ,,゚Д゚彡
    ミ つ旦)~~
  〜と,,,~),,~) 

>元のソースを見るとTShortcutFileのコンストラクタとしてファイル名を引数
>に取るからこういう問題が出るわけで、

TShortcutFileは一例としてなんですが、
そもそもCreateで例外発生させるコードは
よろしこないですかねー。

> とメソッドを別に用意したほうがいいんじゃないの?
そういえば、TIconとかTPictureとかTFileStreameもそんな感じかな。
でも、TIniFileはそんな感じじゃないかも?...
0105無責任だがNGNG
TIniFile は Createでは ファイル名を保存してるだけですよ。

その真似をするなら、
constructor TShortcutFile.Create ではファイルがあれば読み込みまでして
そのファイルが無くても例外にしない戦略の方がいいんじゃないの?

0106無責任だがNGNG
あ! Createで例外発生させるのがダメというんじゃなくて、
(それは言語の機能だから好きにしたらいいんだけど)

コンストラクタでの例外はリソース不足とかに絞った方が使い易い事が多いというだけです。
0107デフォルトの名無しさんNGNG
>>92
コーディングが苦でなければ、StringGridで実現できます。

簡単な方法として、StringGridの該当セルの上にチェックボックスを乗せて、
セルの中にチェックボックスがあるかのように見せかけるのが一般的ではないでしょうか。


コーディングが苦でしたら、フリーなコンポを使うことになります。

http://home1.infonia.ne.jp/~delphian/delphi/
この中から希望する機能が実現できそうなのを探して下さい。

D6パソにはありませんが、DBと連携させるならDBGridを使うことである程度は貴方の望んだ結果が
得られるかもしれません。
0108デフォルトの名無しさんNGNG
>>97
スマートなクラスメソッド版のエラー処理ってこんな感じ?
>>96のはユーザーへのある程度のエラー原因の通知処理も含まれてるんだけど
どこがスマートじゃないんだろ。

ShortcutFile1 := TShortcutFile.CheckCreate('C:\無題.lnk');
if not Assigned(ShortcutFile1) then
begin
 ShowMessage('ショートカットファイル(名前は失念)を開けませんでした、
  原因は不明です。なにしろお馬鹿なTShortcutFile.CheckCreateメソッド
  がエラーの原因やファイル名を全て捨ててしまったからです。一番考え
  られるのは指定したファイル(ファイル名はわかりますか?)が存在しない
  ことですが、他にもアクセス拒否やメモリ不足、内部エラーなどあらゆる
  原因が考えられますのでがんばって原因を究明して下さい(藁');
 Abone;
end;
0109デフォルトの名無しさんNGNG
>>108 そのエラーメッセージは間違っているみたいだよ
CheckCreateはファイルが無い時にだけnilを返し、そうでない場合はCreateを呼ぶんでしょ?
という事はメモリ不足やCOM生成失敗は例外が出るんでしょ?

だから、ショートカットファイルがありません とだけメッセージを出すべし
0110デフォルトの名無しさんNGNG
>>108 バーヤバーヤ
0111デフォルトの名無しさんNGNG
>>108
そういう細かいエラーメッセージはShowMessageに直接書かずに、
例外使って Exception.Message で処理した方が綺麗だと思う。

try
 ShortcutFile1 := TShortcutFile.Create('C:\無題.lnk');
 try
  処理
 finally
  ShortcutFile1.Free;
 end;
except
 on E:Exception do ShowMessage(E.Message);
end;

try .. finally .. end と try .. except .. end は根本的に用途が異なるので
入れ子になっても特に汚い記述だとは感じないが。。
0112デフォルトの名無しさんNGNG
>>108は皮肉ってあのメッセージにしたんだろ。
見当違いだったけどナー
0113デフォルトの名無しさんNGNG
raise
0114無責任だがNGNG
うーん・・・掲示板で真意を伝えるのは難しいね。

だから、別に例外で伝えても悪い訳じゃないって言ってるのに・・・

ただ今回は、Createの引数のファイルが無くても TShortCutFileの
機能に支障はないわけで、逆にSaveShortCutFileが無いのが不思議なくらい。

で、最初の書き込み付近では、それを細かく見ていなかったけど、
他のVCLの実装と比較しても、ファイルが無いから即例外にするのはマズイな
と思った。 
なぜかというと、そのファイルが無かったらXXしたいという事は多い筈。
そして、この場合、ファイルが無いという例外のほかに、COMが作成出来なかった
場合の例外とかメモリが足りないような例外も飛んで来るから、ここで例外を
捕捉したら、場合別けして例外を投げ直す必要がある。

というような趣旨ね
0115デフォルトの名無しさんNGNG
>>114
TFileStreamはCreateでopenできないと例外が飛ぶし
ほかもいろいろVCLで例外が飛ぶコンストラクタを持つクラスあるような。
0116よく解らなくなってきたNGNG
アンケートにご協力を
1.コンストラクタ内で例外を生成して失敗を伝える。
2.リソース不足以外で例外を生成する。
3.コンストラクタ(相当のメソッド)がnilを返す。
4.エラーの種別によってnilを返すまたは例外を生成する。
5.スマート>>>>>>>>>>>>シンプル

私は
◎、○、×、×、△?
0117デフォルトの名無しさんNGNG
1. ○ つーかそれ以外の方法で例外を伝えられてもなぁ。
    コンストラクタに変数引数でも付けるのか?
    それでも使えないインスタンスをいちいちFreeするより、例外の方がいいのでわ。
2. ○ こんな例ならいくらでもある。
    リソース不足以外で例外を使うべきではない、という考えの方が不自然。
3,4. × コンストラクタがnilを返すなんて、ObjectPascalの仕様から外れすぎ。
    最初からそういう仕様ならともかく、今になってそういう異端なことをしないでほしい。
5.  質問の意図がわからない。
0118無責任だがNGNG
私は
1.○コンストラクタ内で例外を生成して失敗を伝えるしかありません。
2.○リソース不足以外で例外を生成しても問題ありません。
3.×コンストラクタがnilを返してはダメです
4.?エラーの種別によってnilを返すまたは例外を生成するのは普通では?
5?.コードは出来るだけ簡単であるべきです

0119無責任だがNGNG
そもそも >>93でミスリードしてしまったのかな

言いたかった事は、
1)コンストラクタで例外を投げたら必ずFreeされる事
2)コンストラクタでnilを返す方法は無い事
3)だからコンストラクタでエラーなら例外を投げるべき

その上で、
 例外を投げてしまうと都合の悪い場合もあるなら 使い易いように
 関数でラップしておく方法もあるよという意見を追加したつもり
0120デフォルトの名無しさんNGNG
自分流は、コンストラクタで例外を投げる。
メモリ不足だろうがファイルが無い(とか作れない)からだろうが、
いずれにしろ実行を継続できないから処理を中断しなきゃならないわけで。
結局のところユーザにエラーメッセージを示すということに違いはない。
エラーの内容によって処理を分けることってあんまし無さそうだけどなぁ。
あるかもしれんけど、そんときは例外クラスによって補足し分けるしか。

>>108
ファイル名は例外オブジェクトに保存しとけばいいだろ・・・と思いつつも、
VCLの例外クラスはそんな付加情報は持ってない模様。わろし。

>>109
ファイルは存在するけど読み取りアクセス権がないとか、ファイル形式が違うとかかも知れない。
戻り値 nil だけじゃ原因がわからん。

>>114
場合分けして投げ直すというのは解らん。
例えば EFOpenError だけ補足すればいいんじゃ?
0121120NGNG
そうそう、コンストラクタでファイル名を指定しようが
LoadFromFile メソッドを別に作ってロードしようがどっちでも構わんけど、
nil を返すより例外を投げる方が良いってのが自分の主張なんで。そこんとこよろしく。
0122よく解らなくなってきた=116NGNG
補足です。つーか説明端折り過ぎました。スマヌ。
3.これはclass function TMyClass.GetObject: TMyClassなどで
間接的に生成する場合も含みます。
4.これは3に○をつけた人のへの質問で、一つのコンストラクタTMyClass.Createの内部で発生したエラーの種別によってnilを返したり例外を返したりするということです。
constructor TMyClassCreate;
begin
 if foo then Result := nil // このコードは嘘です
 else bar then raise EMyClass.Create;
 // 成功
end;
5.これはおまけの質問でVisible, Showのように
一つの機能を複数の手段でアクセスできるようにすることを
ここではスマートと呼んでいます。要するに字面の見栄えの話です。
perl vs pythonの価値観といえば通じるでしょうか。
0123無責任だがNGNG
やっぱり判ってもらえないようだから、こう書くべきだったというのを書くね
元ソース
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1021888173&res=10

自分の考えた方のクラス定義

type
 TShowCommand = (scNormalWindow, scMinimize, scMaxmize, scUnknown);
 TShortcutFile = class(TObject)
 private
  ShellLink:IShellLinkA;
  function GetHotKey: Word;
  function GetLinkFileName: TFileName;
  function GetShowCommand: TShowCommand;
  function GetWorkFolder: TFileName;
  procedure PutLinkFileName(const Value: TFileName);
  procedure PutWorkFolder(const Value: TFileName);
  procedure SetHotKey(const Value: Word);
  procedure SetShowCommand(const Value: TShowCommand);
  function GetArguments: string;
  function GetDescription: string;
  function GetIconLocation: string;
  procedure SetArguments(const Value: string);
  procedure SetDescription(const Value: string);
  procedure SetIconLocation(const Value: string);
 protected
 public
  function LoadShortcutFile(FileName: WideString):boolean;
  function SaveShortcutFile(FileName: WideString):boolean;
  constructor Create;
  destructor Destroy; override;
 published
  property LinkFileName:TFileName read GetLinkFileName write PutLinkFileName;
  property WorkFolder: TFileName read GetWorkFolder write PutWorkFolder;
  property HotKey: Word read GetHotKey write SetHotKey;
  property ShowCommand: TShowCommand read GetShowCommand write SetShowCommand;
  property Arguments  :string read GetArguments  Write SetArguments;
  property Description :string read GetDescription Write SetDescription;
  property IconLocation:string read GetIconLocation Write SetIconLocation;
 end;
0124無責任だがNGNG
constructor TShortcutFile.Create;
begin ShellLink := CreateComObject(CLSID_ShellLink) As IShellLinkA;
end;
function TShortcutFile.LoadShortcutFile(FileName: WideString): boolean;
begin
Result := FileExists(ChangeFileExt(FileName,'.lnk'));
if not Result then exit;
  with ShellLink as IPersistFile do
  OleCheck( Load(PWideChar(FileName),0));
end;
function TShortcutFile.SaveShortcutFile(FileName: WideString): boolean;
begin
with ShellLink as IPersistFile do
 Result:= 0=
 Save(PWChar(FileName),False);
end;
function  TShortcutFile.GetHotKey: Word;
begin OleCheck(ShellLink.GetHotKey(Result));
end;
procedure TShortcutFile.SetHotKey(const Value: Word);
begin OleCheck(ShellLink.SetHotKey(Value));
end;
function TShortcutFile.GetLinkFileName: TFileName;
var pfd:WIN32_FIND_DATA ;
begin
SetLength(Result,MAX_PATH);
 OleCheck(ShellLink.GetPath(PChar(Result),Length(Result),pfd,SLGP_SHORTPATH));
Result:=PChar(Result);
end;
procedure   TShortcutFile.PutLinkFileName(const Value: TFileName);
begin OleCheck( ShellLink.SetPath(PChar( Value )) );
end;
function TShortcutFile.GetShowCommand: TShowCommand;
var ShowCmd:Integer;
begin
  OleCheck(ShellLink.GetShowCmd(ShowCmd));
  case ShowCmd of
   1: Result := scNormalWindow;
   7: Result := scMinimize;
   3: Result := scMaxmize;
  else   Result := scUnknown;
  end;
end;
procedure TShortcutFile.SetShowCommand(const Value: TShowCommand);
var ShowCmd:Integer;
begin ShowCmd:=0;
case Value of
  scNormalWindow :ShowCmd:=1;
  scMinimize   :ShowCmd:=7;
  scMaxmize   :ShowCmd:=3;
 end;  OleCheck( ShellLink.SetShowCmd(ShowCmd) );
end;
0125無責任だがNGNG
function TShortcutFile.GetWorkFolder: TFileName;
begin
SetLength(Result,MAX_PATH);
OleCheck(ShellLink.GetWorkingDirectory(PChar(Result),Length(Result)));
Result:=PChar(Result);
end;
procedure TShortcutFile.PutWorkFolder(const Value: TFileName);
begin OleCheck(ShellLink.SetWorkingDirectory(PChar(Value)) );
end;
function TShortcutFile.GetArguments: string;
begin
SetLength(Result,MAX_PATH);
OleCheck(ShellLink.GetArguments(PChar(Result),Length(Result)));
Result:=PChar(Result);
end;
procedure TShortcutFile.SetArguments(const Value: string);
begin OleCheck(ShellLink.SetArguments(PChar(Value)) );
end;
function TShortcutFile.GetDescription: string;
begin
SetLength(Result,MAX_PATH);
OleCheck(  ShellLink.GetDescription(PChar(Result),Length(Result)));
Result:=PChar(Result);
end;
procedure TShortcutFile.SetDescription(const Value: string);
begin OleCheck(ShellLink.SetDescription(PChar(Value)) );
end;
function TShortcutFile.GetIconLocation: string;
var idx:Integer;
begin
SetLength(Result,MAX_PATH);
OleCheck(ShellLink.GetIconLocation(PChar(Result),Length(Result),idx));
Result:=PChar(Result);
end;
procedure  TShortcutFile.SetIconLocation(const Value: string);
begin OleCheck(ShellLink.SetIconLocation(PChar(Value),0) );
end;
0126無責任だがNGNG
>>120
つまり、そもそも >>87のコードは既に CreateComObject が失敗すれば例外を出す
それなのに、わざわざ FileExists でチェックして例外を出して良いのかと聞くと
いう事は、 FileExists を特別視しているということ、つまりファイルが無ければ特殊な
事をしたい様子。 それならこういう方法もあるという説明をしてきたつもりであって
例外を投げるなという事ではないのだと
 だから、
>ファイルは存在するけど読み取りアクセス権がないとか、ファイル形式が違うとかかも知れない。
>戻り値 nil だけじゃ原因がわからん
 FileExistsがfalseを返す時だけ nil を返すというコートを示したのであって
 それは失敗だという意味ではない。ファイル形式が違うとかアクセス権の問題とは別という事
つまり>>87は
 成功、失敗のほかに、引数のファイルが無いという3つの状態を返したかったのだと考えたから
 nilを渡す方法で3つの状態を返せるよと解説してきたつもり。

で、どうしてコンストラクタで3つの状態を返したいような事になったのかというと、プロパティを
コンストラクタで全部読み出して、プロパティはその静的な値を読むだけになっているから、
つまりCreateShortcutFile という関数を作っているけど、ReadShortCutFileで全部読み出せば
いいわけで、クラスにする必要が無いというか、クラス設計を見直した方がいいと
0127デフォルトの名無しさんNGNG
Σ(゚Д゚ )y-~~ ナンダコリャ
0128Delフサギコ ◆zE1iiRdQ NGNG
  ∧,,∧
Σミ ゚Д゚ミy-~~ ヨクワカンネー

誰かショートカットファイルをもっと
楽に使えるようにラプしてクレ
0129無責任だがNGNG
え? >>123-125 でダメ?

ショートカットを 作る時の例

with TShortcutFile.Create do begin
  LinkFileName:=Application.ExeName;
  SaveShortcutFile(path+'MyApp.lnk');
end;


ショートカットを読むのは
with TShortcutFile.Create do begin
 LoadShortcutFile(path+'MyApp.lnk');
  Caption:=LinkFileName
end;

これ以上どう簡単にしろと?
0130デフォルトの名無しさんNGNG
長ソース×3ベタ貼り+長文のコンボくらって、読む以前に

Σ(゚Д゚ )y-~~
  ∧,,∧
Σミ ゚Д゚ミy-~~

ってなったんじゃねーの?
0131無責任だがNGNG
>>130
 なるほどね。 でもコッチも
 http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1021888173&res=10
 このコード読ませられたんだからお互い様だと思うんだが?

やっと ShortCutFileExists がやってるらしい事が判ってきた
 たぶんTFileListがファイル一覧を取るのだろうと思うから

function ShortCutFileExists(FolderName, ExeFileName: String): String;
var F: TSearchRec;
begin
 ExeFileName:=ExpandFileName(ExeFileName);
 //フォルダ名の最後が\で無ければ追加
 if copy(FolderName,Length(FolderName),1)<>'\' then FolderName:=FolderName+'\';
 with TShortcutFile.Create do try
  if FindFirst(FolderName+'*.lnk',faAnyFile,F)=0 then repeat
   result:= FolderName+F.Name;
   try
    LoadShortcutFile(result);
    Writeln(LinkFileName);
   if AnsiSameText( ExpandFileName(LinkFileName),ExeFileName) then Exit;
   except end;
  until FindNext(F)<>0;
 finally Free; end;
 Result := '';
end;

こんな感じの事をやってるんだと思う。 
0132デフォルトの名無しさんNGNG
どうでもいいけど、デバッグしてるときに例外が出ると毎回止まるから
例外を使うのを妙に避けたがる人が多いような気がするんだが。

確かにちゃんと例外処理も書いてるのに、 StrToInt とかで例外を出され
ると禿げしく面倒なんだよな。

できればコンパイラ指令とかで、
「もうここはデバッグは終了したから、この部分を実行中に発生した
例外をデバッガは捕捉しなくてもいいよ〜」
みたいな機能があればいいんだが、そういうのって難しいのかな。
おしえて、エラい人。
0133エライ人NGNG
>>132
貴様は「VB以外使っちゃダメ〜の刑」に処す!
はい次!
0134無責任だがNGNG
>>132
 確かにデバッガオプションを動的に変更出来たら便利だね
  けど今日は疲れたからもう調べるのはいいや・・・

あと確かに StrToIntとかだと自分も 例外を使わずにValで検出する
それは例外を使わない方が少しだけ高速かもしれないとか期待してるからかも
0135デフォルトの名無しさんNGNG
>>134  自分も ユーザ入力のチェックみたいな場面では Valだな それはやっぱり
例外でデバッカが止まるのが嫌ってのが大きい

でValで検出して abort投げたりして
0136無責任だがNGNG
あ >>131 で Writeln はデバックの為に入れたのが残ってるだけだから

それから、もし、TFileListがサブディレクトリも掘ってゆく仕様なら

ShortCutFileExists を再帰的に呼び出す必要がある
 最初のループが終った後、Result:=''の直前に

if FindFirst(FolderName+'*.*',faDirectory,F)=0 then repeat
    Result:=ShortCutFileExists(FolderName+F.name , ExeFileName);
   if Result<>'' then exit;
  until FindNext(F)<>0;
  result:='';
end;

と3行追加すればいい。
0137デフォルトの名無しさんNGNG
>>134-135
例えば、正の整数をEditから受け取りたいときに、

try
 n := StrToIntDef(Edit1.Text,0);
 if n <= 0 then raise Exception.Create('正の整数を記入してください。');
 その後の処理
except
 on E:Exception do ShowMessage(E.Message);
end;

みたいに、かなり気軽に例外を使ってる人って、もしかして少数派?
「処理を中断するような場合は例外を使う」というポリシーでソース
書いてるんで・・・
0138Delフサギコ ◆zE1iiRdQ NGNG
  ∧,,∧  ソース貼ってるの見えなかった...
Σミ ゚Д゚ミy-~~            疲れすぎだYO
  さんくすこ、明日でも検証してみる。

 死後吐agaりが12:00だと
 フサはストレス氏しそうだゴルァ

例外を消すコンパイラ指令はないはず。
ブレークポイントで前後を挟むとヨシ。

>>137
少数派だと重います。
デバッガでとまるとヤだもん。
0139デフォルトの名無しさんNGNG
複数のファイルを1つにまとめたいのですがどうしたら良いのでしょうか?
フォーマットは以下の通りです。
(図解)
http://www68.dns.ne.jp/~bbs2/upload3/helen/OB00012183.zip

----------------------------------------------------
・ファイルヘッダ                  (8)
・含まれるファイル数               (4) ファイルの数分つづく
▼ファイル情報
・ファイル名                    (32) ファイルの数分つづく
・ファイルのサイズ                (4) ファイルの数分つづく
・結合ファイルの先頭から
 目的のファイルのデータまでのオフセット  (4) ファイルの数分つづく
・ファイルデータ そのものズバリのファイルの中身ナカミ (不定)
----------------------------------------------------
※含まれるファイルの数は固定じゃ無いです
0140デフォルトの名無しさんNGNG
>>139
どうしろ、といわれてもな。
とりあえずTFileStream使うとよさげ、とだけ言っとく。
Seekとか駆使してガムバレ。
0141デフォルトの名無しさんNGNG
>>139
全然わからないけどこんな感じじゃ無いのかな?


Var
  FS : TFileStream;
  Buf1 : Longint;
  Buf2 : Boolean;
  Buf3 : Array [ 0..255 ] Of Char;
Begin
  FS := TFileStream.Create( 'C:\Temp\Test.Bin' , FmOpenRead );  Test.Binを読み出しモードで開きます
  ShowMessage ( InttoStr ( Fs.Size ) );  ファイルサイズを表示します
  FS.Read (Buf1, SizeOf ( Longint ) );  Buf1にLongint型のサイズ分だけデータを読み出します
  FS.Read (Buf2, SizeOf ( Boolean) );  Buf2にBoolean型のサイズ分だけデータを読み出します
  FS.Read (Buf3[0], 256 );    Char型配列Buf3に256バイトのデータを読み出します
  FS.Free;    オブジェクトのインスタンスを解放します ( 同時にファイルは閉じられます )
End;

転載元
http://member.nifty.ne.jp/deepforest/delfromv.htm
0142デフォルトの名無しさんNGNG
>>138
> 例外を消すコンパイラ指令はないはず。
> ブレークポイントで前後を挟むとヨシ。

ブレークポイントでこういう事もできるのですね。(既に「ブレーク」ポイントじゃ無い気が)
しかしブレークポイントが保存されず、プロジェクトを開き直すと水の泡。
デスクトップの保存設定をONにしたら保存されましたけど窓のサイズとかまで保存されるのが嫌。
デバッグ関連の設定だけ保存する方法は無いかな…。

コメントを読む限りDebugHook変数が近い気がしたのですが、
試しに0とか2とか代入しても何も変わりませんし、何でしょうこれ。
0143デフォルトの名無しさんNGNG
>>142
 {$D-}
 i := StrToInt(s);
 {$D+}
とかやると、{$D-}から{$D+}の間をサブルーチンも含めて実行中に発生
した例外はデバッガは無視する、とかいう機能が欲しいです。
ちなみに{$D}はすでに別の用途で定義済みだけど・・・

0144デフォルトの名無しさんNGNG
>>143
例えばこうネストすると、*で発生した例外の扱いはどうなります?

procedure A;
begin
 {$D-}
 i := StrToInt(s);
 {$D+}
 j := StrToInt(t) {*}
end;

begin
 {$D-}
 A
 {$D+}
end.

…指令が実行文として変数を増減させなければならなくなる気が。
0145デフォルトの名無しさんNGNG
StrIntDefだと例外飛ばさない。
また、デバッガオプションでEConvertErrorとかで止まらないよう設定しとけばいい。
0146デフォルトの名無しさんNGNG
StrToIntDefだ
0147デフォルトの名無しさんNGNG
>>145
例外を出したくないんじゃなくて、例外が出ても許容範囲内なら
デバッガに感知されたくないんですけど。
で、いつもEConvertErrorを無視してもらっても困る。
明らかにデバッグ済みの部分だけ無視してもらいたい。

やっぱ無理そうですね・・・
0148デフォルトの名無しさんNGNG
>>147
ここで議論してる時間で自分が気に入るような変換関数を
つくったほうがいいのではないかと。
0149デフォルトの名無しさんNGNG
ガーン━━━━(゚Д゚)━━━━!!!!!!

StrToIntDef等という関数があったのか。

Del2→Del6だったので全然しらなんだ…。
0150デフォルトの名無しさんNGNG
>>139
質問
ファイルのサイズ、4バイト ってそれで足りるのかな?
どんなファイル使うのか分からないけど。
ファイル名ももう少し多い方が。
0151148NGNG
>>148は勘違いなので無視して。
0152デフォルトの名無しさんNGNG
デスクトップの保存をONにして、なおかつ必要な情報(ブレークポイント等のデバッグ設定)だけ
保存させるという事はできないのでしょうか?OpenToolsAPIに詳しい人とかいませんか?
保存のタイミングとファイル名さえ分かれば、後は*.dskから不要な行を消すだけでいけそうなのですが…。

>>148
例外を出さない変換関数、ではなく、例外は駆使したいのですが
それでデバッガがいちいち停止するのは面倒なので、
デバッグ済みの部分に関してはデバッガが例外を検知するかどうかを動的にON/OFFしたい、
という事なのですけど。
0153152NGNG
うわ、微妙なタイミング。>>148さんごめんなさい。(最近こういうすれ違いが多い気がする自分)
0154デフォルトの名無しさんNGNG
>>151が無視されたな
0155デフォルトの名無しさんNGNG
別のアプローチとして、デバッグ中は別の例外を飛ばすとか。
本番用例外はデバッガで止まらないようにして。
0156148NGNG
>>153
こちらこそ、ごめんなさい。
他の話題と混同したものでいいかげんなことを言ってしまいました。
0157無責任だがNGNG
ちょっと見た感じ、

1)実際の例外は systemユニットの procedure _RaiseExcept; が本体で
  構造化例外APIのRaiseExceptionが呼ばれる

2)構造化例外は全てデバッカで一度捕捉されてしまう
  デバッガオプションで EAbort等については無視

3)try は以下の5行のアセンブラ出力に変換される(思ったより例外のコストは低い)
 xor   eax,eax
 push  ebp
 push  exceptのアドレス
 push  dword ptr fs:[eax]
 mov   fs:[eax],esp

4) exceptのアドレスには
system._HandleOnException;
 がある。

だから、やろうと思えば、system.RaiseExcept で
グローバル変数、デバックマスクフラグを用意し
そのフラグ値によってAPIの構造化例外の代わりに自前で例外を処理する
( ebpとfs:[0] を戻してアドレスにジャンプする)

ようにすれば、デバック中に場所によってマスクするような事が可能かも
0158デフォルトの名無しさんNGNG
>>157
あ…同じようなこと考えている(w

RaiseExceptionProcというポインタを通じて例外が発行されている
(System.pasの初期化部でRaiseException APIのアドレスに設定される)ため、
これを独自ルーチンに上書きして例外オブジェクト(ESP + 24)をEAbortインスタンスにすり替え、
無視させることが(手元の実験では)できました。

でもこれをやってしまうと on EXXX do で種類分けして補足できなくなるので157さんの方法に期待。
0159無責任だがNGNG
>>158 そうですか こっちはまだ巧くゆきません
 書換え可能なのは DLL のポインタ部だけなんで

function DllProcChange(new,old:pointer):Pointer;
var p:^Integer;
begin
p:=Pointer(integer(old)+2); //FF25 [xxxxxxxx]
p:=pointer(p^);
Result:=pointer(p^);
p^:=Integer(new);
end;
として
DllProcChange(@NewExcept,@RaiseException);
とやると、 Windows.RaiseException が書き換わってしまうし

@RaiseExceptionから手繰ろうとしても、@が先頭についてるからダメだし
system.pas を書き換えるのは嫌だしで難しいですね
0160デフォルトの名無しさんNGNG
なんか珍妙なことやってるな。
ユニット単位でデバッグする・しないが
簡単に指定できるんだからそれでいいじゃん。
0161デフォルトの名無しさんNGNG
dcc32.exeのコマンドラインオプションで、
-DDEBUG;CUSTOMなどとやって条件定義を追加できますが、
逆に条件定義をコマンドラインオプションで外すにはどういう風にすれば良いのでしょうか?
教えて下さい。
0162139NGNG
突然このような仕様を投げられたので、とまどってました。
>>139の横の数字の単位はバイトです。わかりにくくてすいません。

こんなの
http://www68.dns.ne.jp/~bbs2/upload3/helen/OB00012462.zip

一応読み込んで見たところファイルの容量とかまでは取得できました。
0163デフォルトの名無しさんNGNG
>>139 >>162
いや、別に仕様がわかりにくくて・・・ということじゃなくて、
課題を丸投げしている点に問題があるんですが・・・
0164デフォルトの名無しさんNGNG
>>159
Systemユニットの@付き手続きのアドレスはインラインアセンブラで取れませんか?

mov EAX, offset System.@RaiseExcept

無責任ですが期待してます
0165デフォルトの名無しさんNGNG
SJIS文字列をCR+LF←→\nに変換するロジックを
作ろうとしてるんだけど、どっかに転がってない?
とりあえず↓は見つけたけどCR+LF→\nの際に\nが
入っていた場合の考慮が足りないのでダメだった。
ttp://www.nifty.ne.jp/forum/fdelphi/samples/00355.html

で、作るとしてテストケースは以下で足りてるかレビューキボン
変換前にAdjustLineBreaksを使う事で#10のみ,#13のみの
テストはナシの方向で考えてる。

#13#10 ←→ \n
abc#13#10def ←→ abc\ndef
abc\ndef ←→ abc\\ndef
abc#13#10\n#13#10def ←→ abc\n\\n\ndef
abc\#13#10\def ←→ abc\\\n\\def
#13#10abc ←→ \nabc
abc#13#10 ←→ abc\n
\nabc ←→ \\nabc
abc\n ←→ abc\\n
#13#10#13#10#13#10 ← #13#10\n#13#10
0166デフォルトの名無しさんNGNG
>>165 前スレだったかでやってたよ

 もし見つからなかったら、ここにコード書いてた筈だから探してごらん
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/lounge/index.html
0167デフォルトの名無しさんNGNG
>>165
表n ←→ 表n
(表はSJISで2byte目が \ )

>abc\ndef ←→ abc\\ndef
abc\\ndef ←→ abc\\ndef
じゃないの?
0168無責任だがNGNG
なんか 昔書いたコードで今見たら恥ずかしいんだけど
////////////////////
// \エンコードをする
// \n=$0d$0a
function EncodeStr(const s:string):string;
function IntToHex2(d:integer):string;
 const c:array [0..15] of char ='0123456789ABCDEF';
 begin
  Result:= c[d div 16]+c[ d and 15];
 end;
 var i:integer;
begin
Result:='';
i:=1;
 while i<=length(s) do
  begin
  case s[i]of
  #0..#8,#10..#12,#14..#31,'"','''',',','=':
      Result:=Result+'\x'+IntToHex2(ord(s[i]));
  #9: Result:=Result+'\t';
  #13: begin
    if (i+1 <= length(s)) and (s[i+1]=#10) then
     begin
      inc(i);
      Result:=Result+'\n';
     end else
     begin
      Result:=Result+'\x'+IntToHex2(ord(s[i]));
     end
    end;
  '\': Result:=Result+'\\';
  else begin
    Result:=Result+s[i];
    end;
  end;
   inc(i);
  end;
end;
0169無責任だがNGNG
////////////////////
// \デコードをする
// \n=$0d$0a
function DecodeStr(const s:string):string;
var i:integer;
begin
Result:='';
i:=1;
 while i<=length(s) do
  begin
  if s[i]='\' then
   begin
   inc(i);
   case s[i] of
   'x':
     try
     Result:=Result+ char(StrToInt('$'+s[i+1]+s[i+2])) ;
     inc(i,2);
     except end;
   'b': Result:=Result+#$08;
   'a': Result:=Result+#$07;
   'f': Result:=Result+#$0C;
   'r': Result:=Result+#$0D;
   't': Result:=Result+#$09;
   'v': Result:=Result+#$0B;
   'n': Result:=Result+#13+#10;
   else Result:=Result+s[i];
   end;
   inc(i);
   end else begin
   Result:=Result+s[i];
   inc(i);
   end;
  end;
end;
0170165NGNG
>>166-169
早い&的確な反応ありがとう。
ttp://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1015685238&rm=50
のコードと168-169の両方を検討して気に入った方を使ってみる事にするよ。

>>167
"表" は忘れてたよ、感謝。で、変換仕様の方なんだけど
>>165:abc\ndef ←→ abc\\ndef
>167:abc\\ndef ←→ abc\\ndef
165の変換仕様で良いと思う。で、167のはこうなるかな
abc\\ndef ←→ abc\\\\ndef
何か考慮漏れが漏れてるだろーか
0171165NGNG
>ttp://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1015685238&rm=50
↑は早とちり。相談室3の674で出たAdjustLineBreaks+αの
動きをするコードっぽいので目的とは違ってたよ。
前スレ探したかったけどdat落ちでした。
0172Delフサギコ ◆zE1iiRdQ NGNG
>何か考慮漏れが漏れてるだろーか

まずはテストコードを書くことが漏れている

             __________
   ∧,,∧      /
  ミ,,゚Д゚彡  <  コードで仕様をあらわすといいです
  ミ つ且~~   \___________
〜ミ,,,,,, ,,ミ
0173下手人NGNG
ミ,゚Д゚;;彡.。oO(何でkage.exe最新版だとタブで開こうとするのでしょーか?)
0174デフォルトの名無しさんNGNG
>173
かちゅスレ逝け
0175165NGNG
>>168-169 を2バイト文字対応して、テストコードひっつけてみました。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1023549124
ところで >>168は何故 "=" も\xnn変換する対象なのでせう?
引用符とかカンマはまだ分かるんですが。
0176デフォルトの名無しさんNGNG
【質問】
MP3ファイルを自作ソフトに関連付けして再生させたいのですが、
MP3をダブルクリックしてソフトが起動するとこまでは出来ました
でも再生されません。
ファイル関連付けコンポーネントのプロパティの、

コマンドラインで、あるソフトに対して、このファイルが
”ドラッグ&ドロップされたよ”と通知することは不可能でしょうか?
0177デフォルトの名無しさんNGNG
【補足】
すいません、書き込みミスりました。

ファイル関連付けコンポーネントのプロパティの
”起動時に渡すパラメータ”の部分だと思うのですが…

0178デフォルトの名無しさんNGNG
そのコンポーネントの名前ぐらい挙げなよ

とりあえず、渡された値はParamStr, ParamCountで取れるんじゃないの?
DDEとかその辺のことはしらんが。
0179176NGNG
すいません、こちらのコンポーネントです。

http://home1.infonia.ne.jp/~delphian/delphi/compo/system.html#SY0084
0180デフォルトの名無しさんNGNG
>>176
>MP3ファイルを自作ソフトに関連付けして再生させたいのですが

自作ソフトに関連付けることができたとする。
そのファイルをエクスプローラでダブルクリックする、または
ShellExecute() から関連付けられた実行プログラムを起動する

ということはできてるわけですよね。

でも、その関連づけられた自作ソフトがコマンドラインパラメータを
解釈しないと意味がありません。178 さんのコメントを考慮する必要が
あります。
0181デフォルトの名無しさんNGNG
特定の数字に0付けで4桁固定表示にするにはどうしたら良いですか?

4の場合 0004
12の場合 0012
です。
0182デフォルトの名無しさんNGNG
(1)
IntToStrした結果に
10より小さかったら"000"
100より小さかったら"00"
1000より小さかったら"0"を付ける

(2)
Formatを使う
0183デフォルトの名無しさんNGNG
>>161なんですが分かる方いませんか?
IDEからコンパイルした時は定義有り。
MakeFileからMakeした時は定義無し。
にしたいのですが。
もしかしてDelphiでmake使うような方はおられないのでしょうか?
0184デフォルトの名無しさんNGNG
Format('%.4d' 〜〜〜)
で良いんですかね。
0185デフォルトの名無しさんNGNG
∋oノハヽo∈
 (# `�D´)ノ<つかってたしかめろ! なのれす!
         いちいちきくな!なのれす!
0186デフォルトの名無しさんNGNG
娘ヲタが暴れてるな。
0187モーヲタうざいNGNG
モーヲタうざい
0188デフォルトの名無しさんNGNG
∋oノハヽo∈
 (# `�D´)ノ<うるせーはげ!
0189デフォルトの名無しさんNGNG
>>183
$UNDEF
0190デフォルトの名無しさんNGNG
>>184
Format('%4.4d' 〜〜〜)

>>185
同感だけど、形式文字列のHelpは難解なことで有名だし…
0191デフォルトの名無しさんNGNG
>>189
-$UNDEF ABC
-$UNDEF=ABCと試してみましたが両方とも効果がありませんでした。
0192デフォルトの名無しさんNGNG
>>191
何じゃそりゃ(笑)

IDEのほうのプロジェクトオプションで識別子追加するのは駄目なの?
0193デフォルトの名無しさんNGNG
>>191
いやそうじゃなくて、ソースに
{$IFDEF NOIDE}
{$UNDEF ABC}
{$ENDIF}
て書いておいたら、-DNOIDE で、ABCが定義されなくなるだろ。
0194デフォルトの名無しさんNGNG
質問なんですが、横書きしたテキストを横にスクロールさせるのは何とかできますが、
(新幹線の中で出る、読売新聞ニュース◆ みたいな奴)

横書きにした文字を縦方向にスクロールさせる良い方法ってありませんか?
一行の表示領域で、できるだけウザくない方法で複数行のStringsを出したいのです。
(数秒おきに一行ずつペロっとスクロールするようなのが(・∀・)イイ)
0195デフォルトの名無しさんNGNG
例外を無視させる方法ですけど、
ExceptionClass 変数に代入されているクラス参照の派生クラスにしかIDEは反応しないようです。
従って、適当な例外クラスをでっち上げ代入してやることで無視させることができました。

インラインアセンブラを駆使した努力は何だったんだ…

参考文献: DELPHI IN A NUTSHELL
0196デフォルトの名無しさんNGNG
>>193
そういう事だったのですか。
dcc32 -?で
-$<dir> = Compiler directive
って出てくるのでそういう方法が出来るのかと思いました。
全てのソースファイルに書かなければならないみたいなのが
多少気が進まないのですが、ありがとうございました。
0197ANGNG
>>194
したいことのイメージがあまりよくわかってないんだけど、
一端、裏でイメージ作って、合成してから、描いて見るとかどう?
0198デフォルトの名無しさんNGNG
>>197
スミマセヌ、上手く説明できてないですね・・・。
電車の行先幕みたいな、一行が上下にスライドするモノを実現させたいんです。

試しにいろいろ描画してみます。
0199デフォルトの名無しさんNGNG
(´-`)。o ○ (関連づけて、exe起動させてるけど、読み込んで無かったりして…<MP3)
0200デフォルトの名無しさんNGNG
MSXML4を使いたいんですけど、
ActiveXの取り込みで一覧に"Microsoft XML"らしきものが
出てきません。ひょっとして別の名前がついているとか
そういうことはないのでしょうか?
0201ANGNG
>>198
こんなかんじかな?
フォントと同じ高さの Image1 置いて、ブラシやフォントの色を適当に設定。
Interval を 100 にしたタイマーのイベントに、

with Image1.Canvas do begin
 FillRect(ClientRect);
 TextOut(0,0-T,'1行目');
 TextOut(0,Abs(Font.Height)-T,'2行目');

 Inc(T);
 if T>Abs(Font.Height) then begin
  T := 0;
  Timer1.Enabled := False;
 end;
end;

とか書いてみた。T:Integer はどっか消えないところに置いといて(笑
0202デフォルトの名無しさんNGNG
>>201
あ、TImageのTextoutか!ありがとう、使ってみます!
0203デフォルトの名無しさんNGNG
かちゅ〜しゃエクステンダーって
どういう仕組みなのですか?
ソースが手元に無くてもあんなことできるの?
0204デフォルトの名無しさんNGNG
エクステンダーはビルダー製だよ。
Delphiでも一緒の事出来るけど。
0205デフォルトの名無しさんNGNG
>>203 想像だけど、>>159のようにDLLへのリンクポインタを検索してそこでフックしてるんじゃないかな

0206デフォルトの名無しさんNGNG
VC製だろ
0207デフォルトの名無しさんNGNG
ひまわり製だろ
0208デフォルトの名無しさんNGNG
Delphi6のForm1のイベントで、
OnMouseWheelUP Down の処理内容を例えばButton1Clickとすると、
ボタン1を2回クリックしたことになってしまいます。
これを1回クリックというようにできないでしょうか?
0209デフォルトの名無しさんNGNG
>>208
え?
1回だけど
0210デフォルトの名無しさんNGNG
>>208はホイールを回すときに手が震えて
2回分になってしまうに50ペリカ
0211208NGNG
え、うちだけ?
>>210
そんなわきゃない・・。

なんでなんだろう・・
マウスが悪いのか??
0212208NGNG
自己解決しました。
いや、解決はしてないけど簡単なプログラム作って試してみたところ、
確かに1回でした。
一体何が悪いのかはまだ分かんないけど自分でなんとかしてみます。
スレ汚しすみません・・
0213208NGNG
やっぱおかしいや。
ボタンとメモを用意して、
procedure TForm1.FormCreate(Sender: TObject);
begin
x:=1;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
x:=x+1;
memo1.text:=inttostr(x);
end;

procedure TForm1.FormMouseWheelDown(Sender: TObject; Shift: TShiftState;
MousePos: TPoint; var Handled: Boolean);
begin
Button1Click(Sender);
end;

ってしてホイールまわすと2ずつ増える・・
0214デフォルトの名無しさんNGNG
>>213
バグってるぞ。
ホイールを処理したときは Handled := True; しる!
0215208NGNG
>>214
そんな処理が必要だったのか・・。
Button1Click(Sender);
の下に
Handled:=True;
で治りました!
ありがとうございます!!
0216デフォルトの名無しさんNGNG
>そんな処理が必要だったのか・・。
ヘルプちゃんと読んでないだけ
0217デフォルトの名無しさんNGNG
VBのプロジェクトをDelphiに移植中…
すんげぇめんどくせぇ。
せめて、フォーム情報だけでも自動コンバート
してくれるようなツールがあったりしない?
0218デフォルトの名無しさんNGNG
むしろDelphiのフォームをBCBに‥‥
0219デフォルトの名無しさんNGNG
>>217
VBやっとけ。
0220デフォルトの名無しさんNGNG
>>217

VBで作ってみては?
0221デフォルトの名無しさんNGNG
>>217
Visual Basic to Delphi conversion program
http://codecentral.borland.com/codecentral/ccweb.exe/listing?id=17064
0222デフォルトの名無しさんNGNG
かれこれ15年くらい悩んでいるので、教えてくれ。

フォームからクイックレポートを呼び出す。クイックレポートのデータソースはSQL。
SQLにはパラメタがあり、フォームに配置したリストボックスなどの値をパラメタに渡し、印刷する。

つまり、フォームで「日本」を選択して印刷ボタンを押すと「日本のデータ」が、「韓国」を選択して印刷ボタンを押すと「韓国のデータ」が印刷される、というようなのをやりたいのじゃよ。

0223デフォルトの名無しさんNGNG
>>222はハツカネズミか何かなのだろうか。
0224デフォルトの名無しさんNGNG
222は肝心の質問を書き込む前に天寿が尽きたのか……?

ところで、Delphi6でフォームやフレームを編集すると
ソースのあるディレクトリに.ddpってファイルができちゃうよね。
ダイアグラムなんて使う気ないし、ソースのアーカイブ
作るときに激しく邪魔。
このファイルを作らせないようにするか、dcuみたいに
別のディレクトリに隔離することってできないかな?
0225デフォルトの名無しさんNGNG
ミキサー付aviプレーヤー(のようなもの)を作っています。
 
・多チャンネル(最大4チャンネル程度)のサウンドを別ファイル(wav)から再生
・各チャンネルで独立してボリュームを制御できるようにする
 
必要な機能は以上2点です。いまのところ映像と音声の同期は無視してます。
(十分処理速度が速ければ、ずれが無視できる程度に収まっている?)
 
QuadrupleDの中にあるDDSDを使って実現しようとしているのですが、
「メモリに入りきらない長大なwavファイルの再生」がうまくいきません。
(チュートリアルが中途半端なのもあって・・・)
 
他のコンポーネントを利用する方法でも構いませんので、どなたかご教示お願いいたします。
Delphiのバージョンは5です。
0226222NGNG
スマソ。質問が抜けた。

で、フォームから、クイックレポートのSQLにパラメータを渡す方法がわからないんです。
0227デフォルトの名無しさんNGNG
>>225
 自分はそういうのやるときは低レベルオーディオAPIで
 0.1秒程度のバッファを3つくらい順に回して再生させてる

それでwav ファイルでもサンプリングレートの違いを吸収する為に
acmAPIを使ってる
0228デフォルトの名無しさんNGNG
モナースレで教えてもらえなかったので流れてきました。
Delphiで株のチャート分析&予想をするソフトを作ろうとしています。

色々とネットを検索したらTeeChart?,Tchart等を使う方法やPaintBoxを
使っている人等がいて、何でトライしたら良いのかいまいち良く分かりません。

お薦めの方法、あるいは参考になるサイトやスレがありましたら教えてください。
各方法の利点欠点だけでも結構です。
今まで画像系の処理はした事ないので四苦八苦してます。
出来るだけ、簡単に出来る方法を選びたいです。
最初から高機能は求めてません。

開発環境はD6パソ(自宅)&エンプラ(会社)です。
どうかよろしくおながいします。
0229デフォルトの名無しさんNGNG
>>228










































0230デフォルトの名無しさんNGNG
アプリをXPのビジュアルスタイルに対応させたくて、Webで調べて
Manifestファイルを使うとわかり、とりあえず見た目は対応させれたんだけど.

ListViewが表示されるフォームではどこでもとにかくエラーが出るんです.
なんだか、Del6だとアップデートすればいいみたいだけど、Del5では
どうしようもないんでしょうか?
0231デフォルトの名無しさんNGNG
>>230
取りあえず出てるパッチ適応すれば?
0232デフォルトの名無しさんNGNG
>>225
ActiveXからWindowsMediaPlayer取り込むのは?
0233デフォルトの名無しさんNGNG
>231

UpdatePack1はあててます・・・
0234230NGNG
補足です.

エラーになるのはListViewのViewStyleをvsReportにしてるときです.
どうも、ヘッダ部分の描写をしようとしたときに落ちるっぽいんですけど・・・.

HeaderControlのほうは大丈夫みたいですねー.
0235230NGNG
うーん、一応自己解決したようです.海外サイトで解決策を発見しますた.

ComCtrls内、UpdateColumnの中で

 if FImageIndex <> -1 then
  fmt := fmt or LVCFMT_IMAGE or LVCFMT_COL_HAS_IMAGES;

というところを

 if FImageIndex <> -1 then
  fmt := fmt or LVCFMT_IMAGE or LVCFMT_COL_HAS_IMAGES
 else
  mask := mask and not (LVCF_IMAGE);

とするといいようです.意味はまったくわかってません(;´Д`)

商用アプリでComCtrlsをローカルにコピーして使うのはまずいのかなあ?

0236230NGNG
・・・と思ったら、そういえば実行時パッケージ使うときは
この方法じゃできないんだった.鬱・・・.
0237デフォルトの名無しさんNGNG
>>228
マルチポストかよ、たまんねぇーなぁ、
モナースレで十分にレスが付いてるようだが、
他に何が聞きたいんだ?
0238デフォルトの名無しさんNGNG
>>237
いや、こっちに書き込んだ時はあちらでは何も教えてもらえませんでした。
0239デフォルトの名無しさんNGNG
>>238
ttp://www.nifty.ne.jp/forum/fdelphi/faq/00146.htm
0240デフォルトの名無しさんNGNG
>>239
参考にします。ありがとう。
0241デフォルトの名無しさんNGNG
TLabelとTTimerを使って、分と秒のみのストップウォッチらしき物を作りたいのですが、
TDateTimeを使うと時間の所も表示されてしまいます。
時間部分を隠す方法って無いんですか?
無理だとすると、どういう方法で作るのが一番良いのでしょうか?
教えてください。
0242デフォルトの名無しさんNGNG
>241
DateToStr関数を使ってみたりするとか。
0243241NGNG
すまぬ誤爆だった。

ストップウォッチだったら、
自分で時間計算するのがベストかと。

Timeのインターバルを100にしておくとして、
それまでのカウントを数える数値をCounter:integerとする。
OnTimerが呼ばれるとCounterに1を加算して

Label1.Caption:=Format('%d分:%d秒:%d',[Counter div 600, Counter div 10,Counter]);
みたいな感じで。
0244243NGNG
>243のところ名前ミス242つーことで。
あぅひとりで動揺してしまった...
0245241NGNG
ありがとうございます。
でも、その方法だと、位が上がる時(パラメータの配列の2つ目が60になった時・3つ目が10になった時)
にその位が一0にならないような・・・
0246デフォルトの名無しさんNGNG
>245
はっ...そういえばそうでした。
その場合は、
Label1.Caption:=Format('%d分:%d秒:%d',[Counter div 600, Counter div 10 mod 60,Counter mod 10]);
こうしてみるといけるかも。
0247デフォルトの名無しさんNGNG
FormatDateTime('nn:ss', hoge);

それにしてもDelphiはオブジェクト指向じゃないな。
0248デフォルトの名無しさんNGNG
hoge.FormatString('nn:ss');
0249248NGNG
     ∧_∧∩ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
    ( ´∀`)/< 先生!>>248は無視してください!
 _ / /   /   \___________
\⊂ノ ̄ ̄ ̄ ̄\
 ||\        \
 ||\|| ̄ ̄ ̄ ̄ ̄||
 ||  || ̄ ̄ ̄ ̄ ̄||
    .||          ||
0250241NGNG
>>246
いい感じっす!
でも分の所を常に2桁表示したかったので、以下の様に書いてみましたが、おかしいですよね?w

Inc(Counter);
if Length(IntToStr(Counter div 10 mod 60)) = 1 then
Label1.Caption := Format('%d分0%d秒%d', [Counter div 600, Counter div 10 mod 60, Counter mod 10])
else
Label1.Caption := Format('%d分%d秒%d', [Counter div 600, Counter div 10 mod 60, Counter mod 10]);
0251デフォルトの名無しさんNGNG
%0dってしっとるけ?
Timerって正確じゃないよ。
0252ANGNG
>>241,243
OnTimerって、たぶん、確実に呼び出される保証が無さそうな気がするから、
スタートした段階の時間を覚えておいて、それと現時刻との差で計った方が
いいかも。
0253241NGNG
>>251
形式文字列っていうのは、時間以外はよくわかってないです。
今ヘルプ見たけど、精度指定子っていう物で2桁表示にするんですかね?

>>252
StartTime, StopTime, PassageTime: TDateTime;だとすると、
スタートの時に
StartTime := Time;
ストップの時に
StopTime := Time;
PassageTime := StopTime - StartTime;
Label1.Caption := TimeToStr(PassageTime);
みたいな感じでしょうか?
それだと途中経過が出ないような?
どこかのスレでTTimerは精度が低いからTimeGetTimeを使った方がいいという書き込みは見た記憶がありますが、よくわかりません。
0254デフォルトの名無しさんNGNG
>253
GetTickTimeでもよさそうなきがする。
ところでストップウォッチって精度はいかほどを考えてるの?
0255241NGNG
>>254
特に精度は気にしてないです。
>>241の様な質問や、>>250みたいなコードを書いてる時点で俺はドキュソケテーイなので、
簡単なことからゆっくりやってみたいと思っています。
結局、>>241の答えとしては、
Inc(Counter);//Counter: Integer;
Label1.Caption := Format('%d分%0d秒%d', [Counter div 600, Counter div 10 mod 60, Counter mod 10]);
が最強なんですかね?
秒以下を一桁しか表示しないなら、TDateTimeを使って、IncMilliSecond(Counter)とやってもできる気がしてきましたが・・・(^^;
0256241NGNG
げっ、>>255じゃあ2桁にならないですね。^^;
0257デフォルトの名無しさんNGNG
いいかげんTDateTimeとFormatDateTimeでやればいいじゃん。
0258デフォルトの名無しさんNGNG
>>255

フォームにラベルとボタンを2つ貼って、以下ようにすればどーなのさ。
このまんまじゃ、不都合もあるけど、こんな感じでどーよ。


Button1でスタート Button2でストップ でも、一旦スタートすると終了させる前に button2を押さないと終われない罠


var
 StartDate:int64;

procedure TForm1.Button1Click(Sender: TObject);
  procedure timeLoop;
  var
    wStr:String;
    wTT:TTimeStamp;
  begin

    while StartDate<>0 do
    begin
      wTT.Time:=GetTickCount()-StartDate;
      wStr:=FormatDateTime('nn:ss.zzz',TimeStampToDateTime(wTT));
      Self.Label1.Caption:=wStr;
      Application.ProcessMessages;
    end;

  end;

begin
  
  StartDate:=GetTickCount();
  timeLoop;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  StartDate:=0;
end;
0259241NGNG
>>257
できないっす!・゜・(ノД`)・゜・
var
PassTime: TDateTime;

procedure TForm.Timer1Timer(Sender: TObject); //Interval は 1
begin
IncMilliSecond(PassTime);
Label1.Caption := FormatDateTime('n:ss:zzz', PassTime);
end;

これじゃダメなんすか?

>>258
かなり凄くて感動しましたけど、理解不能です、すいません。
Timerを使わないでできる仕組みとか、ヘルプに載ってないGetTickCount、Button1Clickのヘッダーとbeginの間にまた手続きらしき物があるとか・・・
GetTickCountっていうのはAPI関数っていう物でしょうか?
わからんことだらけです。
0260デフォルトの名無しさんNGNG
>259
GetTickTimeはWin32APIです。
Windowsの起動からの経過時間をmsecで取得するので
Timerのインターバルあたりで、差分を表示すれば
ストップウォッチらしいものができると思います。

私は、楽なので計算や表示の時間を計るときの目安としてこのAPIつかってます。
0261デフォルトの名無しさんNGNG
>>259
>Button1Clickのヘッダーとbeginの間にまた手続きらしき物がある

procedure や function の中に、その手続きや関数内でだけ使える関数を書く事が出来る。

procedure aaaa(xxx);

 procedure aaaa1;
 begin
  処理
 end;

 procedure aaaa2;
 begin
  処理
 end;

var
 i:integer;
begin

 for i:=1 to 10 do aaaa1;
 for i:=1 to 20 do aaaa2;

end;

こんな書き方が出来るようになる。

慣れると便利、特に再帰処理書きやすくなるから絶対に慣れておくべき。

GetTickCountは、D6のヘルプには載ってますが?
経過時間を扱う場合には、引き算1つで差が算出できるので普通使うでしょ、
覚えておいて下さい。
0262241NGNG
>>260
GetTickCountですよね。ありがとうございます。
これ、TDateTimeに代入しても、Integerに代入しても大丈夫なんですね。
具体的に使ってみたかったんですが、

procedure TForm1.Button1Click(Sender: TObject);
var
 T: TDateTime;
begin
 T := GetTickCount();
 ShowMessage(FormatDateTime('hh:nn:ss', T));
end;

これはどこがダメですか?00:00:00と出ます。

>>261
なるほど、ローカルな関数みたいな感じでしょうか、ありがとうございます。
ヘルプに載ってますか?
俺のには載ってないみたいですが・・・。
キーワードで調べても出てきません。
0263デフォルトの名無しさんNGNG
>>262 ダメな理由は TDateTime型は浮動小数点で1日単位のデータだから

だから、割算が必要
例:
 Caption:= FormatDateTime('hh:nn:ss', GetTickCount/(1000*60*60*24) );

---------------------------------------------
 ついでに、それを使わないで整数演算でする場合は

var OldCnt:Cardinal;
procedure TForm1.Button1Click(Sender: TObject);
var NewCnt,dt:Cardinal;
begin
NewCnt:=GetTickCount;
dt:=NewCnt-OldCnt;
Caption:= format('%02d:%02d:%02d.%02d',
  [ dt div(60*60*1000)
  ,(dt div (60*1000)) mod 60
  ,(dt div (1000)) mod 60
  ,(dt div (10)) mod 100]);
OldCnt:=NewCnt;
end;
0264デフォルトの名無しさんNGNG
>>262
あなた他人の話聞いてる(読んでる)?それとも、ちょっと読んで理解できなかったら
読まないようにしてるのかな?

判らない部分があったら Help -> MLログ -> google の順で調べて下さい、でないと、
永久に自分ではプログラム作れませんよ。

因みに、
ローカル宣言についてはヘルプにもマニュアルにも記載してあります。
ヘルプの目次->Object Pascal言語ガイド->手続きと関数->ローカル宣言 でどーぞ。

ヘルプはキーワード検索だけじゃなくて、暇なとき 目次の内容も読んでください、Pascalに
慣れていない人や我流な人(私もだが)にはとても有益な情報が密かに詰まってたりします。
(Delphiのヘルプは印刷物のマニュアルの内容と同じです。)
0265241NGNG
>>263
おおお、できました!
ありがたや、ありがたや。
後半はストップウォッチみたいな物ですか?
やってみたら、2回目以降は、前に押してからの時間が出ます。
1回目は謎な時間が出てしまいますが・・・。^^;

>>259はどこがダメなんでしょうか?
0266デフォルトの名無しさんNGNG
>>265
(n-1回目の時間)−(n回目の時間)

ってやってるだろ?n=0ならどうなる?
プログラム以前に・・・。
0267デフォルトの名無しさんNGNG
プログラミングにも当然ながら、向き不向きがあるのよね
0268225NGNG
亀レスすみません。
その後色々と試したのですが、>>232さんの方法で何とか実現できました。
ありがとうございます。

あまりにも取り込み→利用が簡単で驚きました・・・(;´Д`)
0269デフォルトの名無しさんNGNG
今大学でDelphiを習ってるんですけど
全然分からないんですけど、
どうすれば 皆さんのように分かるようになりますか?
0270デフォルトの名無しさんNGNG
>>269
ヘルプ片手に試行錯誤の連続。
0271デフォルトの名無しさんNGNG
プログラムってさぁ、習うものじゃないよね
0272デフォルトの名無しさんNGNG
>>271
言語(道具)やアルゴリズムやデータ構造(基礎となる部品)を習うことは否定しない。
でも、何を作るか、どう工夫するかは自分の頭で考え体で実行しないとダメでしょう。
0273デフォルトの名無しさんNGNG
>>269
何かを作りたい!という目的を持つ、これ最強。
0274素人NGNG
オレは「分かるように」なってるかどーかは知らんが、
1.○○するツールが作れないかなぁ?
2.そのツール作るにはどーすればいいのかなぁ?
3.ネットで検索してヒントから学ぶ
こーゆー形で理解してきたが…。
よーするに「必要」から、と。後は>>273に同意。
0275デフォルトの名無しさんNGNG
>>何かを作りたい!という目的を持つ、これ最強。

おおむね同意。
ヒトによっては、熱意だけあって、激しいクレクレ君に変身する場合もあるので。
0276241NGNG
>>264
他の人が教えてくれた物は、Helpで調べるとかして、できる限り理解する様に努めています。
手続き・関数のローカル宣言はよくわかりました、ありがとうございます。

>>266
>>263で
Button1を一回押した時点では、OldCntには何も代入されていないから、
NewCntの値、つまりGetTickCountの戻り値がそのままCaptionになるということですよね。
0277デフォルトの名無しさんNGNG
TraceRouteコンポーネントってどこかにありませんかね?
Delphi5 で動くフリーの奴
0278デフォルトの名無しさんNGNG
>>259
IncMilliSecondは手続きではなく、関数ですよ。(Incは手続きだけど)

だから PassTime := IncMilliSecond(PassTime); にしなきゃダメだと思う。

どれくらいの誤差が出るのか、さきほどこの方法で自分でやってみましたけど、
MSecの百の位が秒を刻んでる様に見えるほどの誤差でした。(藁
こんなにTimerって誤差があるのか・・・
0279デフォルトの名無しさんNGNG
>>277
Indy のデモプログラムじゃだめか?
0280デフォルトの名無しさんNGNG
>>278 インターバルタイマは分解能せいぜい1/30秒しかないから
0281デフォルトの名無しさんNGNG
>280
マルチメディアタイマー使えばいいんだと思うけど
やはりGetTickTimeを使うのがいいのかな...
0282デフォルトの名無しさんNGNG
>>281
 GetTickTime って何?

GetTickCountの事なら ストップウオッチの応用なら Now を使えばいいと思うけど?
たしか精度同じ程度でしょ

マルチメディアタイマも単位は msだし、使い難いから
実行時間を計算するような場合はパフォーマンス カウンタを使う方がいいと思う
RDTSC命令を呼ぶか QueryPerformanceCounter を使うか
0283デフォルトの名無しさんNGNG
ストップウォッチの計時にタイマを使うのは、精度を考慮するとダメです。
GetTickCount や Now など時刻を基準として差をとるべきです。

241の問題で残っているのは、単に表示の仕方だけ。
0284デフォルトの名無しさんNGNG
>>283

計時関係の精度について

http://support.microsoft.com/default.aspx?scid=kb;EN-US;q172338

によると

Several timers of differing accuracy are offered by the operating system:

Function Units Resolution
---------------------------------------------------------------------------
Now, Time, Timer seconds 1 second
GetTickCount milliseconds approx. 10 ms
TimeGetTime milliseconds approx. 10 ms
QueryPerformanceCounter QueryPerformanceFrequency same

したがって GetTickCount がもっとも手軽で精度も通常用途では十分だと
思われる。タイマなど時間間隔をつかった計時は、誤差が累積するので
時刻差を利用したほうがよいのは当然。
0285デフォルトの名無しさんNGNG
>GetTickCount
NT系ではデフォルトの精度が10msecなので、
timeBeginPeriod(1);
を忘れるな。
0286デフォルトの名無しさんNGNG
レビュー求ム!

カンタン!Delphiプログラミング―あなたにも作れるWindowsプログラム 日経BPパソコンベストムック
http://www.amazon.co.jp/exec/obidos/ASIN/4822216888/
Delphiパーソナルプログラミング
http://www.amazon.co.jp/exec/obidos/ASIN/4839907161/
Delphi Graphic Secrets―Know‐how & Libraries
http://www.amazon.co.jp/exec/obidos/ASIN/4797319224/
Delphi 6 プログラミングバイブル
http://www.amazon.co.jp/exec/obidos/ASIN/4844316346/
0287デフォルトの名無しさんNGNG
質問です。
時刻と時間の違いに関してですけど、時刻を扱う時はTDateTimeを使えばいいとして、
時間を扱う時はTDateTimeを使っていいのでしょうか?
それとも、カウンターとして整数型の変数を利用した方がいいのでしょうか?
0288デフォルトの名無しさんNGNG
>>287
TDateTime を使ってもよいと思うが、時間間隔を TDateTime に変換する
コストや変換にともなう誤差を考慮すると、わざわざ TDateTime に変換する
意味はないと思うよ。
例えば、GetTickCount で時間差を計時すると、ミリ秒単位での数値が得られ
るわけですから、これを時間、分、秒に換算するのは簡単です。どこにも
TDateTime への変換を考慮する必要はありません。
0289デフォルトの名無しさんNGNG
delphi5を使っているのですが、検索ダイアログや、エディタのタブなんかのフォントサイズが突然変わり、
一旦delphiを再起動すると治る。 ってな症状が出てるの俺だけですか?
0290デフォルトの名無しさんNGNG
>>289
オレもD5sp1ユーザだが、そんな経験はしたことない
0291デフォルトの名無しさんNGNG
テーブルの値を、ボタンを押したら一括して変更するようなのは、どうすればいいんですか?

例えば、ある項目値が全て0のとき、ボタンを押したら全て1にしたいとき、

SQLで
dataset.sql.add('update table1 set yn=1');
とやってみたり、
while not(table1.eof) do
table1.start;
0292デフォルトの名無しさんNGNG
間違って送信しちまったぜ。

テーブルの値を、ボタンを押したら一括して変更するようなのは、どうすればいいんですか?

例えば、ある項目値が全て0のとき、ボタンを押したら全て1にしたいとき、

SQLで
dataset.sql.add('update table1 set yn=1');
とやってみたり、
while not(table1.eof) do
begin
table1.start;
table1.fieldbyname('yn').asinteger := 1;
table1.next;
end;

みたいなことをやってみても、エラーになってしまいます。
0293デフォルトの名無しさんNGNG
table1.start;
table1.fieldbyname('yn').asinteger := 1;
table1.next;
table1.start;
table1.fieldbyname('yn').asinteger := 1;
table1.next;
table1.start;
table1.fieldbyname('yn').asinteger := 1;
table1.next;
0294デフォルトの名無しさんNGNG
>>288
上の方を読んで、精度が必要な時はGetTickCountの差で求めるのかなと思ったのですが、
基本的に時間を使う時はGetTickCountの差で良いってことですかね。
教えてくれてアリガトです。
0295デフォルトの名無しさんNGNG
>>294
GetTickCountが一周して0にもどってもいいように処理してね。
0296デフォルトの名無しさんNGNG
>>289
リソース不足なんでは?
以前Win98で使ってて、リソース不足でフォントが異様に大きくなり、
その製でスクロールバーが馬鹿でかく膨らんだ経験あり。

解決策は、NT系に乗り換えること。
とはいえNT系でも無尽蔵なわけでもないが。
0297デフォルトの名無しさんNGNG
>>294
googleで調べてみるとtimeGetTimeの方が精度いいみたいですね。
0298デフォルトの名無しさんNGNG
>>292
Startなんてメソッドはないよ。Firstです。

Table1.First;
Table1.Edit;
while not Table1.EOF do
begin
Table1.FieldByName('field1').AsInteger := 1;
Table1.Next;
end;
0299デフォルトの名無しさんNGNG
>298

あ、そうですね。うろ覚えでカキコしたもんで、間違えました。コードはちゃんとfirstとやってます。
0300デフォルトの名無しさんNGNG
>>299
とりあえず、どういうエラーか書け。
0301デフォルトの名無しさんNGNG
VCLの勉強をはじめようと思うのですが、
どこか参考になるようなサイト教えてください。
0302デフォルトの名無しさんNGNG
>>301
http://www.ba.wakwak.com/~h-kova/

リンクページなら
http://www.alpha-net.ne.jp/users2/jj3fkc/1000link/main9.htm
0303デフォルトの名無しさんNGNG
げ、リンクがほとんど切れてる。
0304299NGNG
>300

大体こんな感じなんだけどな。

「プロジェクト○○がEDataBaseクラスの例外を生成しました。データセットが編集又は挿入モードではありません。」

0305デフォルトの名無しさんNGNG
>>304
そのままやん。Table1 の宣言の方法などをさらせば識者のご加護が得ら
れるだろう。(俺は、Delphi 使いじゃねーから期待するなよ。)
0306デフォルトの名無しさんNGNG
>299
一回ずつPostしなきゃだめだろ?

with Table1 do
begin
 First;

 while not Eof do
 begin
  Edit;

  FieldByName('Field1').AsInteger := 1;
  
  try
   Post;
  except
   Cancel;
  end;

  Next;
 end;  
 
 FlushBuffers;
end;
0307299NGNG
306産休。すぐに試してみます。

参考のため、今作成中のヤツをあぷします。

まず、データモジュール「dm」にテーブル「tbl1」、データソース「ds1」がある。
ds1のデータセットはtbl1である。
別のフォームで、tbl1を利用する。usesなどはちゃんと処理している。

フォームに、DBControlGridを貼り付け、データソースは「dm.ds1」。AllowDeleteとAllowInsertはFalseにしている。
と、ココまでは問題ないはず。実際、このフォームを実行して、DBControlGridに貼り付けたDBEditなどは編集できる。
次に、フォームにコマンドボタン「btnUpdate」を貼る。で、そのクリック時のプロシージャ。

with dm.tbl1 do
begin
Open;
First;
Edit;
end;
while not(dm.tbl1i.EOF) do
begin
with dm.tbl1 do
begin
FieldByName('ID').AsInteger := 1;
Next;
end;
end;

なんだけど、これが、299のようなエラーになる。
0308299NGNG
うまくいきました。

edit; は、書き込みの度にやらなければならないようですね。場所を変えたら、うまくいきました。

ども、皆さん、ありがとうございました。
0309301NGNG
>>302
ありがとうございます。
参考にさせていただきます。
0310デフォルトの名無しさんNGNG
ちょっとDB周りの処理で苦しんでいます。

UpdateSQLを使用した更新を行っているのですが
更新ボタンを押すと、Query1.ApplyUpdatesを実行するようになっています。
しかし、この時点でアプリを起動したままWindowsをシャットダウンすると
書き込んだはずのデータが消えてしまうんです。

ディレクトリ内に MBファイルが残っているところを見ると
正常に更新ができていないという事なのでしょうか?

ちなみにアプリケーションをきちんと終了した場合は
データはちゃんと書き込まれています。
0311181NGNG
>>310
そもそも何で...
> この時点でアプリを起動したままWindowsをシャットダウンすると
と言う運用するんだ ?
0312デフォルトの名無しさんNGNG
>>311
クライアントがむちゃな操作をするもので…
0313デフォルトの名無しさんNGNG
>>311
まさか Commit してないとか?

 ヘルプより
>データセットを更新する方法としては,個々のデータセットの ApplyUpdates
> メソッドを呼び出すよりは,データベースコンポーネントの ApplyUpdates
>メソッドを呼び出すことをお勧めします。
>データベースコンポーネントの ApplyUpdates メソッドは,
>トランザクションのコミットおよびロールバックを処理するとともに,操作が成功したときにキャッシュをクリアします。
0314...NGNG
Filter文字列に「あ行で始まる名前」をセットするにはどうすればいいのでしょうか?

Dataset.Filter := '''YOMI = '' + ''あ*' or 'YOMI = ''い*' .....以下同じ...''';

みたいなことをやろうとしているのですが、’の数とか訳分からなくなってしまう厨です。

もっといい方法ありますか?
0315デフォルトの名無しさんNGNG
>>314
横一行に書くんじゃなくて段落分けしなされ。
orの部分で改行すべし。
0316デフォルトの名無しさんNGNG
>>312
クライアントを教育しろ
そんな奴らならシャットダウンせずに電源切ってるやつもいるだろ?
0317デフォルトの名無しさんNGNG
>314
 >315 の意見もいいが、漏れ的には配列と、for と、Formatを組み合わせるな。

 配列は 10(50音の行の数)×15(もっとも長くなる「は」行がは、ば、ぱの三種類
×5個)にして、それに50音表を用意しておく。

 あいうえお
 かきくけこがぎぐげご
 さしすせそざじずぜぞ
 たちつてとだぢづでど
 なにぬねの
 はひふへほばびぶべぼぱぴぷぺぽ
 まみむめも
 やゆよ
 らりるれろ
 わをん

 行を指定されたら、配列から一行分の列を順に読みつつ、Format 使って一文字分の
フィルターを作っては追加してく、と。配列の一行分の長さは別にもってりゃいいし。
0318デフォルトの名無しさんNGNG
>315さん、三球!

Table1.Filter :=
'YOMI =' + #39 + 'あ*' + #39 + ' or ' +
'YOMI =' + #39 + 'い*' + #39 + ' or ' +
'YOMI =' + #39 + 'う*' + #39 + ' or ' +
'YOMI =' + #39 + 'え*' + #39 + ' or ' +
'YOMI =' + #39 + 'お*' + #39;

みたいにしたら、うまくいきました。
quotedstr()関数を使ったらもっと簡単みたいですね。
0319デフォルトの名無しさんNGNG
>317さん、

filterは、濁音・半濁音は区別しないようですが、区別させるスイッチか何かあるんですか?

ワシの所では、'は*'だと「は〜」も「ば〜」も「ぱ〜」もヒットしますけど。できれば区別させたいです。
0320TeamB/2ch ◆SE69s0c2 NGNG
ASCII ソートの Index を作成して有効にすればよかったかと。
0321デフォルトの名無しさんNGNG
BMPを白黒ビットマップかどうか見分けるにはどうしたらよいですか?
0322デフォルトの名無しさんNGNG
>321

Pixelformatでみたらどうすか?
それとも1bit以外のBmpで白と黒だけが使われているってことですか?
0323デフォルトの名無しさんNGNG
>>322
あ、そうですね。PixelFormatで見ます。
0324デフォルトの名無しさんNGNG
>>321
Image1.LoadFromFile('ファイル名');
if Application.MessageBox('白黒ですか?', '突然ですが質問です', MB_YESNO or MB_ICONQUESTION) = ID_YES then
//白黒
else
//カラー
0325デフォルトの名無しさんNGNG
>324
文法エラー。
0326デフォルトの名無しさんNGNG
関数とか宣言したあと、なにかショートカットキーを押すと
実際に処理する部分をすぐ書けるように出来たと記憶してるんですが、
なんでしたっけ? 3個ほど一緒に押してたような…。
0327デフォルトの名無しさんNGNG
イヤン!そこは違うってば!
0328デフォルトの名無しさんNGNG
クラス補完 か コード補完 でヘルプを検索して >>326
0329デフォルトの名無しさんNGNG
>>328
さんきう。〔Ctrl〕+〔Shift〕+〔C〕 がそうらしいのだけど、
押しても何もならない。今日、delphi6 personal 入れたばかりで
設定とかはディフォルトのままのはずなのに…。
0330デフォルトの名無しさんNGNG
personalにはないよ
0331デフォルトの名無しさんNGNG
>>330
マジ? なんでこんなものを省略するわけ?
ぼうらんどさんよ、もうね、アフォかバ…(以下略
0332 ◆tare/k3c NGNG
もし初心者ならコード補完なぞ使っちゃいかんよ。
補完しなくてもソラで打てるようにならないと上達しないよ。
0333デルファイの名無しさんNGNG
personalにコード補完まで入れてしまうと、professionalが売れないからでしょう…
データーベースよりもActiveXよりもVCLソースよりも何よりも、
コード補完と[Ctrl]+上下の移動がprofessional最大の価値と僕は思ってます。
0334デフォルトの名無しさんNGNG
>>332
まぁ、初心者かな。N88-BASIC のころからサンデープログラマー(死語)もどきでは
あったんだけどね。つーか、あれでしょ、Delphi に限らないと思うんだけど、
覚える単語っていうかスペルっていうか多すぎ。
これで飯を食っていかなくちゃいけないのならともかく、休みの暇つぶしにやる程度なら、
絶対覚えれないって、、、たぶん (;´Д`)

>>333
なるほど…(w
0335デフォルトの名無しさんNGNG
>休みの暇つぶしにやる程度

こんなもんは上達しようというのが無理。
趣味だって、一所懸命やらなくては物にならんよ。
単語覚えるのは、言語の文法を覚える以前の問題だと思う
0336デフォルトの名無しさんNGNG
>>334
アルファベットの列と見るから覚えられない。
アレは意味のある英単語だ。
0337デフォルトの名無しさんNGNG
>>335 >>336
言いたいことは分かるが、はっきり言って、補完が効くものを全て覚えようという気はない。
限られた時間のなかでの優先順位は 文法>単語 だな。単語をいちいち覚えるくらいなら、
自分の作りたい処理(アルゴリズム? ちょっと大げさか)を考るほうが楽しいし、やりたい。
0338デフォルトの名無しさんNGNG
char 型の文字からAScIIコード得るにはどうすればいいんですか?
Cのような自由さがないからいいんだけど、
なさ過ぎてこまったり・
0339デフォルトの名無しさんNGNG
>>331
買えよ。
0340デフォルトの名無しさんNGNG
>>339
やだね。
0341デフォルトの名無しさんNGNG
>>331
文句たれんなら買えっての。アホ。
0342デフォルトの名無しさんNGNG
>>341
やだね。
0343デフォルトの名無しさんNGNG
>>338
Ord でやんすね。 反対は Chr かな。
文字型は順序型に含まれると。
0344 ◆tare/k3c NGNG
>>338
もし16進数にするならFormatを加味するといいよ。
Format('%2.x', [Ord('a')]);

おまけ
Delphiで16進数は頭に$を付ける。「$1A」とか。
16進数をOrdに戻すには、StrToInt('$' + '1A'); みたいにする。
OrdをCharにするにはChr()を使う。
0345デフォルトの名無しさんNGNG
憶えるも何も、俺は脊髄反射で書けるようになったよ。
考える前に手が動くので、コード補間などいらん。
むしろ勝手にprivate部に置いてくれたり、インデント幅が自分のスタイルと違う(かなり深刻)ので使えん。
0346デフォルトの名無しさんNGNG
データベースについて。

項目がMEMO型の場合、dbgridを使うと、(MEMO)としか表示されませんが、DBMEMOコントロールを使わずに内容を表示する方法はありませんか?

グリッドにアクセスとかエクセルとかみたいに一覧表示をさせたいのです。
0347TeamB/2ch ◆SE69s0c2 NGNG
メモ型のデータは長い文字列になることが多いですから、グリッドのセルに
うまく収まるかなど溢れた場合の対策をきちんと行う必要がありますが

Memo 形フィールドに対応する TMemoField を作成し、
OnGetText で

procedure TForm1.Table1NotesGetText(Sender: TField; var Text: String;
DisplayText: Boolean);
begin
Text := Sender.AsString;
end;

とすればメモの文字列が全部手に入ります。
0348デフォルトの名無しさんNGNG
ファイルを検索中にWindowsについてるaviファイルをAnimationで動かして
'ファイル検索中です...'みたいにして待っててもらおうと思い
実行ファイルと同じフォルダにaviファイルを置いて、Animationにそのパスを
毎回知らせて使ってるのですが、このaviファイルは、実行ファイル内に
取り込むことはできないのでしょうか?宜しくお願いします
0349デフォルトの名無しさんNGNG
>>348
Animate1のcommonAVIをaviFindじゃだめなの?
0350デフォルトの名無しさんNGNG
>>338です。
>>343
 ナルホド。順序型と考えるなら、すごく納得できます。ありがとうございました。
>>334
 16進数の場合も教えてもらってありがとうございます。
 Pascalやってた時使わなかったから、その内またココで聞いてしまったかも!?
0351348NGNG
>>349
!まったくそれで解決しました。有難うございました!
0352デフォルトの名無しさんNGNG
Del6のTDownLoadURLでファイルをダウソしようとするときの
イベントOnDownloadProgressのStatusTextを取り込むには
どうしたらいいんだ?
0353デフォルトの名無しさんNGNG
tEDITのキーボード入力モードについて質問
windows制御でctrl+英数 を押下することで半角カナモードにしている場合
それをdelphiで制御するのどうやるの?
IimeModeは単にIMEだけの制御みたいでできません。
ほとんどの領域はカナ入力である部分だけ英数にしたいのです。
ctrl+英数 なんて使うな!という回答がないよう祈っています。
0354デフォルトの名無しさんNGNG
>>353
大文字小文字、全角半角の織り交ぜ方が素敵です。
0355デフォルトの名無しさんNGNG
何がしたいのか意味がわからん.
ImeModeでなにが足りないの?
0356デフォルトの名無しさんNGNG
最近、方々のBBSや掲示板を見てみると、プログラミングの前に、
日本語勉強しろや、と思ふことしばし。
0357デルファイの名無しさんNGNG
どこでもそうだけどな。
0358デフォルトの名無しさんNGNG
(´-`)。o ○ (>>352みたいな礼儀知らずに答えてあげる心優しい人はいるんかな…?)
0359デフォルトの名無しさんNGNG
(´-`)。o ○ (>>答えてあげたいけど、DLEPHI歴5時間の俺には意味さえわかんない)
0360デフォルトの名無しさんNGNG
>>352
取り込む?マジで意味わかんねーよ!?
オマエStatusTextが何なのかは知ってるか?
フォームにTMemoでも貼り付けて Memo1.Text:=StatusText; とでもしたらどーだ ゴルァ!
0361352NGNG
>>360
ありがとう。TMemoに表示させたらURL(TDownLoadURL.URL)がでてきたよ。
でも、Helpにある「StatusText は,ダウンロードの状態をユーザーに表示」ってこんなものなのかなぁ(´-`)。o ○
0362黒き風NGNG
ストッピング、ゴー!!ストッピング、ゴー!!ストッピング、ゴー!!ストッピング、ゴー!!
ストッピング、ゴー!!ストッピング、ゴー!!ストッピング、ゴー!!ストッピング、ゴー!!
ストッピング、ゴー!!ストッピング、ゴー!!ストッピング、ゴー!!ストッピング、ゴー!!
ストッピング、ゴー!!ストッピング、ゴー!!ストッピング、ゴー!!ストッピング、ゴー!!
ストッピング、ゴー!!ストッピング、ゴー!!ストッピング、ゴー!!ストッピング、ゴー!!
ストッピング、ゴー!!ストッピング、ゴー!!ストッピング、ゴー!!ストッピング、ゴー!!
ストッピング、ゴー!!ストッピング、ゴー!!ストッピング、ゴー!!ストッピング、ゴー!!
ストッピング、ゴー!!ストッピング、ゴー!!ストッピング、ゴー!!ストッピング、ゴー!!
ストッピング、ゴー!!ストッピング、ゴー!!ストッピング、ゴー!!ストッピング、ゴー!!
ストッピング、ゴー!!ストッピング、ゴー!!ストッピング、ゴー!!ストッピング、ゴー!!
ストッピング、ゴー!!ストッピング、ゴー!!ストッピング、ゴー!!ストッピング、ゴー!!
ストッピング、ゴー!!ストッピング、ゴー!!ストッピング、ゴー!!ストッピング、ゴー!!
ストッピング、ゴー!!ストッピング、ゴー!!ストッピング、ゴー!!ストッピング、ゴー!!
ストッピング、ゴー!!ストッピング、ゴー!!ストッピング、ゴー!!ストッピング、ゴー!!
ストッピング、ゴー!!ストッピング、ゴー!!ストッピング、ゴー!!ストッピング、ゴー!!
ストッピング、ゴー!!ストッピング、ゴー!!ストッピング、ゴー!!ストッピング、ゴー!!
ストッピング、ゴー!!ストッピング、ゴー!!ストッピング、ゴー!!ストッピング、ゴー!!
ストッピング、ゴー!!ストッピング、ゴー!!ストッピング、ゴー!!ストッピング、ゴー!!
ストッピング、ゴー!!ストッピング、ゴー!!ストッピング、ゴー!!ストッピング、ゴー!!
ストッピング、ゴー!!ストッピング、ゴー!!ストッピング、ゴー!!ストッピング、ゴー!!
ストッピング、ゴー!!ストッピング、ゴー!!ストッピング、ゴー!!ストッピング、ゴー!!
ストッピング、ゴー!!ストッピング、ゴー!!ストッピング、ゴー!!ストッピング、ゴー!!
ストッピング、ゴー!!ストッピング、ゴー!!ストッピング、ゴー!!ストッピング、ゴー!!
ストッピング、ゴー!!ストッピング、ゴー!!ストッピング、ゴー!!ストッピング、ゴー!!
ストッピング、ゴー!!ストッピング、ゴー!!ストッピング、ゴー!!ストッピング、ゴー!!
ストッピング、ゴー!!ストッピング、ゴー!!ストッピング、ゴー!!ストッピング、ゴー!!
ストッピング、ゴー!!ストッピング、ゴー!!ストッピング、ゴー!!ストッピング、ゴー!!
ストッピング、ゴー!!ストッピング、ゴー!!ストッピング、ゴー!!ストッピング、ゴー!!
ストッピング、ゴー!!ストッピング、ゴー!!ストッピング、ゴー!!ストッピング、ゴー!!
ストッピング、ゴー!!ストッピング、ゴー!!ストッピング、ゴー!!ストッピング、ゴー!!
ストッピング、ゴー!!ストッピング、ゴー!!ストッピング、ゴー!!ストッピング、ゴー!!
ストッピング、ゴー!!ストッピング、ゴー!!ストッピング、ゴー!!ストッピング、ゴー!!


0363デフォルトの名無しさんNGNG
で?
0364デフォルトの名無しさんNGNG
あるか
0365352NGNG
>>360
´▽`)解決したよ。Thanx
0366346NGNG
>347

コメントありがとうございました。実験してみて、また結果等をうぷします。
0367デフォルトの名無しさんNGNG
>>363-364
信長発見!            
0368デフォルトの名無しさんNGNG
で、あるぱ
0369デフォルトの名無しさんNGNG
7月あげ
0370 NGNG
昨日保存したファイル(*.pas, *.dfm)があるですが、
Delphi でまた続きからやろうとしても、
実行(F9)が無効になっていて実行できないんですが、
これは Borland の嫌がらせですか?それとも、
Personal では、保存したらもう二度と使えないという
罠ですか?マジレスお願いします。
0371デフォルトの名無しさんNGNG
>>370
*.dpr開け
0372 NGNG
>>371
レスありがとうございます。
*.dpr はなくて、*.pas と *.dfm しかありません。
もしかして、昨日作ったぶんはあぼーんですか?
0373 NGNG
がんばってあぼーんは回避しました。
0374デフォルトの名無しさんNGNG
>>372
保存してない可能性もあるけど、別の場所に保存した可能性もあるから
HDを *.dpr で検索してみたら?

それでもダメなら 新しいプロジェクト作って その *.pas を開いて
プロジェクトに追加するだけでいいと思うよ(普通は)
0375 NGNG
>>374
レスの入れ違いになりましたが、解決しました。
その後の方法でできました!
アドバイスありがとうございました!
0376デフォルトの名無しさんNGNG
自動保存のチェック入れといた方がいいよ
0377デフォルトの名無しさんNGNG
緊急age
0378625NGNG
3日間以上もカキコがなかったのは、376 読んで脱力したからだと。
0379デフォルトの名無しさんNGNG
>>378

625 は Delフサスレからのです。
0380age manNGNG
別に脱力してないので age
0381デフォルトの名無しさんNGNG
なんか変なスレになってきたねぇ…
0382デフォルトの名無しさんNGNG
あついからねぇ...
0383Delフサギコ ◆zE1iiRdQ NGNG
            __________
          /
    ∧,,∧ <  暑苦しいと?おっしゃる?
    ミロ゜ ,彡  \  
    U  ミ    \
    ミ  @       ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
     U''U
    ̄ ̄ ̄ ̄
0384デフォルトの名無しさんNGNG
            __________
          /
    ∧,,∧ <  暑いので、毛、刈られますた
   ミロ゜ ,|   \
    U  |     \
    |  p       ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
     U-U
    ̄ ̄ ̄ ̄
0385天下統一NGNG
このスレで日本を統一!!
で、あるな。
0386デフォルトの名無しさんNGNG
質問させてください。
ディレクトリ内のファイルを列挙するために
procedure Tekitou(DirPath:string);
var
SearchRec: TSearchRec;
begin
if 0=FindFirst(DirPath+'*.*', faAnyFile, SearchRec) then try
  ・
  ・
  ・
 finally
FindClose(SearchRec);
end;

でいままで列挙してたのですが、今日急に
"cardinalとTSearchRecには互換性がありません" >FindClose(SearchRec)

とでるようになりました 原因は何が考えれるでしょうか?
0387デフォルトの名無しさんNGNG
>if 0=FindFirst(DirPath+'*.*', faAnyFile, SearchRec) then try
「0=FindFirst」?
「0=FindFirst」???
0388デフォルトの名無しさんNGNG
>>386
新しいプロジェクトで最小限のコードでも再現する?
0389デフォルトの名無しさんNGNG
>>386

同名の API と混同されている。
uses 節の Windows と SysUtils の順番に注意
0390デフォルトの名無しさんNGNG
>>387
左辺定数の評価式は基本だろ?知らないのか?
0391387NGNG
>>390
で、あるか。
0392デフォルトの名無しさんNGNG
>>397=387
よかったな。賢くなったぞ。
友達に自慢しれ。
0393デフォルトの名無しさんNGNG
基本なわけねーだろこのアフォ!異端児!
0394デフォルトの名無しさんNGNG
>>390
左辺定数キライ……
0395デフォルトの名無しさんNGNG
Delphiでははじめて見た。
0396デフォルトの名無しさんNGNG
↓=387らしい
0397デフォルトの名無しさんNGNG
>>392
タイムスリッパー発見!397誰?
0398397NGNG
オレだ(藁
0399386NGNG
>>389
同名の API と混同されている。
uses 節の Windows と SysUtils の順番に注意

SysUtil,・・・,Windows になってました
Windowsを先頭に持ってきたら見事直りました。有難うございます

usesにも順番ってあるんですね、まったく知らなかったです
ところで同名の API と混同されている。というのはどういう
意味なのでしょうか?

>>387 左辺定数には特に意味無くつかってます。というかコピペさせてもらったのを
使ってるだけですので..
0400デフォルトの名無しさんNGNG
389ではないが
>>399
SysUtilsで宣言されているDelphiの関数FindFirst, FindCloseと同じ名前のWindowsAPI
がある。これの関数宣言はWindowsユニットにある。

同じ名前の場合は、usesでは後から宣言したほうが有効になったはず(確か)
だから入れ替えたらSysUtilsのほうが使われるようになる。

明示的にユニットを指定して関数を呼ぶこともできる。SysUtils.FindCloseとかWindows.FindCloseというふうに。

間違ってたらスマソ。
0401デフォルトの名無しさんNGNG
へー。初めて知ったよ。ふーん。ちょっと感動。有意義!
0402389NGNG
>>399=386

400 さんの説明どおりです。解決してよかったですね。

ちょっとつけ加えると、

VCLの SysUtils ユニットの FindFirst()、FindNext()、FindClose() は
Windows に宣言されている FindFirstFile()、FindNextFile()、FindClose() API の
ラッパーなんですね。そして、FindClose() だけが名前が同じなんです。コンパイラ
は関数名や変数名、定数名などの識別子を見つけるために、最初に、そのコードが書
かれているユニットの前方を探します。そこで見つからないと、直前の uses 節の
うしろの方のユニットから順番に探します。ですから、uses 節の並びの順番は重要
なんです。Delphi の Object Pascal に名前空間の概念がありませんが、このように
して、各ユニット間での参照の優先順位を設けることによって識別子を解決します。
ほかにも TControl.GetClientRect と GetClientRect API のようにメソッドで同名
のものもあります。400さんが指摘されているように、優先順位が低いユニットの
識別子を使うときは、ユニット名を参照します。
0403386NGNG
なるほど、uses節は全く考えずにどんどん追加してたのですが、いろいろ法則が
あるのですね、問題解決以外にも知らなかったことを教えていただき
非常にためになりました(説明文にも分からない単語がいくつか...w
調べてきます)。有難うございます。
0404デフォルトの名無しさんNGNG
フレーム内のEditのExitイベントに処理を記述して、
そのフレームを貼り付けたフォームの中の同じEditのExitイベントに別の記述を行った場合、
フレーム側で記述してあったイベントの処理が流れないのですが、
これは仕様なのでしょうか?
(あれ?と思いinheritedも書いて見ましたが駄目でした。)
0405404NGNG
ごめんなさい、勘違いしてました。
Frame21.Edit1Exit(Sender);
ってな感じでかくんですね(汗)
0406デフォルトの名無しさんNGNG
Delphi初心者なのですが、>>404-405さんの文面を拝見して思ったのですが、Delphiのフレームを利用する場合に
フレーム自体は、貼り付けたフォームに対してクラスとして扱われないのでしょうか?
クラス内クラス的に定義出来れば、フレーム元を継承してinherited等ですっきり爽やかに書けそうなのですが
Delphiのクラスはクラス内に多段階的にクラス定義(継承?)できないのですか?

# クラス・クラスと書いてますが、まだ勉強始めたばかりでよくクラスについても分っていないのですが・・・。
0407デルファイの名無しさんNGNG
フレームもクラスですよ。
でも、フレームとフレームを貼ったフォームは所有関係になるので継承は関係ないですね。
それと、イベントを上書きした時元が呼ばれないのは、
イベントは(仮想関数では無くて)メソッドポインタ型のプロパティにすぎないからです。
0408デフォルトの名無しさんNGNG
フレーム使わないので知らなかったけど
確かに>>405で書いてるような使い方じゃちょっと使いづらいね。
あ、フレーム内にコード書かないような作りにしちゃえばいいだけか。
0409406NGNG
>>407
なるほど・・・。マジで初心者なんで私にはまだよくわかりませんが(^^; でもなんとなく、イメージできました。
0410デフォルトの名無しさんNGNG
>>407
でもコンパイル時にイベントが上書き定義されてる!って
警告でも出して欲しいとか思ったりするけど。
0411takuoNGNG
かとちんうざい
0412デフォルトの名無しさんNGNG
>>411
2chと勘違いしてる香具師もアレだが、それに反応するのもウザイさね
0413デフォルトの名無しさんNGNG
>>411-412 ん?マ版の方でよろしく
0414デフォルトの名無しさんNGNG
ものすごく基本的なことを聞くようですが、教えてください。
Chr(i) で文字コード i の文字が得られますが、2 バイト文字の文字コードから文字を取得
するにはどのようにすればよいのでしょうか? いろいろ試したり調べたりしたのですが
お手上げです。
0415デフォルトの名無しさんNGNG
function Chr2(lo, hi: Byte): String;
begin
SetLength(Result, 2);
Result[1] := Chr(hi);
Result[2] := Chr(lo);
end;
0416414NGNG
>>415
できました。ありがとうございました。
今までできなかったのはエンディアンを逆にしていたからだったなんて
恥ずかしくて言えません……。
0417デフォルトの名無しさんNGNG
えーと、質問です。
普通オブジェクトのインスタンスをつくるときは、

myobj := TMyObject.Create;
try
//いろいろ
finally
myobj.Free;
end;

って try .. finally を使いますよね。
もし、

for i := 0 to MAX do
myobj[i] := TMyObject.Create;
// いろいろ
for i := 0 to MAX do
myobj[i] := TMyObject.Free;

みたいにオブジェクト配列を作りたい場合、どのタイミングで
try .. finally を使えば良いんでしょうか?
0418デフォルトの名無しさんNGNG
オブジェクトの数が1か多で
生成・廃棄のタイミングは変わらないのでは。
0419デフォルトの名無しさんNGNG
try も finaly もいらないよーん
0420Delphi好き ◆0YAPhEjk NGNG
>>417
こんな手はメンドクサイかもしれませんけど、単純に安心したいやりかたとしては、
for i:=0 to MAX do
 myobj[i]:=nil;
try
 for i:=0 to MAX do
  myobj[i]:=TMyObject.Create;

 // いろいろ
finally
 for i:=0 to MAX do
  if Assigned(myobj[i]) then myobj[i].Free;
end;
とかやっちゃうかもしれません。私の場合。
でも、もっと楽な方法とかありそう?
0421Delフサギコ ◆zE1iiRdQ NGNG
 ミ,,゚Д゚ミつ

 TDateTimeを二つ用意して
 その差分の分を求めるには
 どしたらいいでしょうか?

"+30"分とか"-180"分とかで
表示してみたいのです。
 
 
0422デフォルトの名無しさんNGNG
T1 := Now;
T2 := Now;
TDiff := (T2 - T1);
Label1.Caption := Format( '%d分', [TDiff * MinsPerDay]);

でどお?
0423デルファイの名無しさんNGNG
nilが入っている変数へのFreeは何も起こらないので、if文をひとつ省略できます。
0424デフォルトの名無しさんNGNG
>>423
FreeAndNilを使っても良いのでは?
nilをつっこむ手間もはぶけるはずです。(うろ覚えですが…
0425Delphi好きッ◇0YAPhEjkNGNG
>>424
便利なものを教わりました。有難う御座います。
0426デフォルトの名無しさんNGNG
StringGridのスクロールバーの幅などを、普通のもののようにデータ量に
応じた幅にしたいのですが、良い方法はないでしょうか?
0427デフォルトの名無しさんNGNG
TBitmap.SaveToFileを使ってbmp形式で画像を保存…と、何気なく利用していた
のですがどうやらこの方法で生成されたbmpファイルはPhotoShop等に嫌われる
(ヘッダが解析できない、とエラーが出る)ようです。
で、疑問なのが皆さんはどうやってこれを回避しているのでしょうか。
…やっぱり手作業でbmpファイルを生成ですか?
0428デフォルトの名無しさんNGNG
起動時に [Ctrl]キーが押されているか判定して起動後の動作を変更したいのですが、
どのように実現すれば宜しいでしょうか?
フォームのKeyDownイベントだと常に効いてしまいますし・・・。
0429Delphi好きッ ◆0YAPhEjk NGNG
まぁ、私個人の意見で適当かもしれませんが…。
>>426
ColWidthsプロパティとOnDrawCellイベントを利用して出来そうですがどうでしょう。
面倒かなという気もしますけど…。
>>427
私も先日同様の問題に直面いたしまして。各所ホームページを参照しながら作成しま
した。折角ですし、TBitmapを継承したクラスで実装しては如何でしょう?
>>428
プロジェクトソースでGetKeyStateを利用すれば簡単に実装できますよ。
0430427NGNG
>>429
あぁ…そう言えばそうですね。早速作っておきます。
それがその、回りくどいことにTJEPGImageのbmp版?を作ってました(笑
いやいや、あまり笑えません。ありがとうございます。
0431428 NGNG
>>429
ありがとう!試してみます。
プロジェクトソース側で書けば良かったのかぁ・・・勉強になりました!
0432427NGNG
自己フォローです。
何故に変な形式なのかなぁと久々にTBitmapが吐いたbmpファイルを眺めていた
のですが、よくよく見ると32bit/pixな形式になってました(気付けよ)。
どうやら画面モードが32bitになっているのにつられてそうなったようです。
で、試しに
bitmap.PixelFormat := pf24bit;
とやってみたところ24bit/pixなbitmapが生成されました。
これだとPhotoShop他でも問題なく読めました。
32bit/pixなスタイルがいけないのかどうなのか不明ですが、これでひとまず
大丈夫なようです(いいのかなぁ)。
今後はもう少し熟考してから質問します。失礼しました。
0433デフォルトの名無しさんNGNG
 正直、未だにinterface型が分かりません。
GUID?何じゃそりゃ?って感じです。
 どなたか教えてください・・・。
0434デフォルトの名無しさんNGNG
複数のフォームを静的に生成するアプリなのですが
表示させるフォームが常に一つだけという形にしなくてはなりません
メインフォームを非表示にし、他のフォームだけを表示させたいのですが
SubForm1.Visible := True;
MainForm.Visible := False;
ではだめですし。。。
SubForm1.ShouModal;
だと メインフォームが可視状態ですし。。。
0435デフォルトの名無しさんNGNG
>>434
 .dprファイルで、CreateFormする前に
Application.ShowMainForm := False;
 とすれば?
0436デフォルトの名無しさんNGNG
>>435
ご回答ありがとうございます

起動時はそれで解決できたのですが、
その後、メインフォームを一度表示させてから、
メインフォームが受け取るイベントによって>>434で記述したように
他のフォームと表示・非表示を切り替えたいのです
0437デフォルトの名無しさんNGNG
>>434
 Hide, Showとか使っても・・・同じか
0438デフォルトの名無しさんNGNG
>>436
 ていうか普通に出来るぞ。
どういうイベントで、どういう状況?
0439デフォルトの名無しさんNGNG
>>437
あ!
これ やってみたらできますぃた!!!
Hideじゃだめかと思っていたんですが
Visible := False;
と同じだとばかり思っていましたが、違うみたい。。。
ありがとうございます

参考までに他の手段をご存知でしたら、お教えください
0440デフォルトの名無しさんNGNG
>>438
起動時に
Apprication.ShowMainForm := False;
として メインフォームではないフォームを表示させて、
タイマーきって そのフォームを閉じて、メインフォームを表示させます
その後 メインフォームにあるボタン等のOnClickメソッドで、
他のフォームを表示させて、メインフォームは非表示にする。。。
という部分ができなくて
メインフォームが残ってしまったりして。
0441デフォルトの名無しさんNGNG
ほっしゅほっしゅ
0442デフォルトの名無しさんNGNG
>>439
 いや、同じだぞ・・・。
参考;Forms.pasのソース
procedure TCustomForm.Hide;
begin
Visible := False;
end;
0443Delphi好きッ ◆0YAPhEjk NGNG
>>442
多分、あれじゃないですかね。
MainForm.Visible:=False;
と処理したのではなく、オブジェクトインスペクタで代入した…と。
その場合、Application.ShowMainFormプロパティに触れていなければ強制的に表示
されますんで。違うかな?
0444ななしへた ◆B18Bks.Y NGNG
>>417
リストクラスを作ってしまった方が簡単確実だと思います.

// 手抜きリストクラスの宣言

TMyObjectList = class(TObjectList)
private
function GetItems(index: integer): TMyObject;
public
property Items[index: integer]: TMyObject read GetItems; default;
end;

// 手抜きリストクラスの実装

function TMyObjectList.GetItems(index: integer): TMyObject;
begin
result := inherited Items[index] as TMyObject;
end;

// 使う

myobjs := TMyObjectList.Create;
try
myobjs.OwnObjects := True;
for i := 0 to MAX do
myobjs.Add(TMyObject.Create);
// いろいろ
// 各オブジェクトは myobjs[i] と配列のように表せます(文字列リストと同じ).
finally
myobjs.Free;
end;
0445デフォルトの名無しさんNGNG
「モナーの *やさしい* Delphi質問スレ」は無しってことでしか?
0446デフォルトの名無しさんNGNG
>>445
下のほうにまだ生きてるから保存しる
0447445NGNG
>>446
1000超えてるから、新スレは?ってこと。
保存はしますた。
0448デフォルトの名無しさんNGNG
あのスレの最後のほうに書いてあるように、
ここに統合された。
0449445NGNG
>>448
ですか。では移転age。
0450デフォルトの名無しさんNGNG
WinAPIの検索してる方。こんなページを見つけました。
messageも載ってる様です。

yokohama.cool.ne.jp/chokuto/hsp/index.html
ww2.tiki.ne.jp/~yuarin/toy/api.htm
0451デフォルトの名無しさんNGNG
>>450
下の方の掲示板面白いね。
0452デフォルトの名無しさんNGNG
プログラミング初心者がDelphiを覚えるのに(・∀・)イイ!!書籍って何でしょうか?
というか、本屋に行ってもDelphiの本が少ないんですが。
0453デフォルトの名無しさんNGNG
>>452
最近の Delphi-ML では 日経BPの「カンタンDelphiプログラミング」というのが
初心者向けではいい! ということになっているようです。
0454デフォルトの名無しさんNGNG
>>451
何が面白いの?
0455デフォルトの名無しさんNGNG
Delphiの仕事がありません。どうしたらいいでしょうか?
0456デフォルトの名無しさんNGNG
>>455
仕事ある言語を覚える。言語スレで言うのもなんだが、言語に寄りかかるなよ。
0457デフォルトの名無しさんNGNG
>>453
本屋でちらっと見たんですが、ムックですよね。
無くなる前に購入してみます。
回答ありがとうございました。
0458素人NGNG
>>457
本は少ないやねぇ。でもネット徘徊してれば必要無いよ。
特に最初のうちは。
んで、突っ込んだヤツを考え始めるといろいろ困る。

しかし、delphiマガジンっていまだに見たことないんだけど、伝説上の本か?(^^;。
近所の図書館にLinuxマガジンが入ってるのを見た時は「delphiマガジンも購読してくれよ!」
と思いますた。
0459デフォルトの名無しさんNGNG
Delphiで以前に作ったProjectを開こうと思ったらエラーが出たんですけど、原因と復旧法を教えてください。
Del6(Personal)で、以前に作った時も同じバージョンです。

エラー文

---------------------------
エラー
---------------------------
モジュール 'rtl60.bpl' のアドレス 40009054 でアドレス 00000054 に対する読み込み違反がおきました。.
---------------------------
OK
---------------------------
0460デフォルトの名無しさんNGNG
>>455
自分で企画・提案・計画・仕様書書け!!
0461デフォルトの名無しさんNGNG
>>459
Delphi6の修正RTLダウンロードしてインストールした?
0462459NGNG
>>461
してません。(名前を聞くのも初めてです。・゜・(ノД`)・゜・)
Borlandのページかな?
逝ってきます。
0463TeamB/2ch ◆SE69s0c2 NGNG
>>461
AV アドレスから見て RTL アップデートとは関係ないと思います。
ちょっと追ってみましょう。
0464TeamB/2ch ◆SE69s0c2 NGNG
アドレス間違えていないかな?>>459
また明日...
0465デフォルトの名無しさんNGNG
Memo1.Lines.SaveToFileでMemo1の内容を保存できません。
kakoっていうフォルダを実行ファイルと同じフォルダに置いてます。
どこが悪いですか?

以下、関係する部分です。
var
kakoPath: String;

procedure TfrmMain.FormCreate(Sender: TObject);
begin
kakoPath := IncludeTrailingPathDelimiter(ExtractFileDir(Application.ExeName)) + 'kako\'; //kakoフォルダの場所
end;

procedure TfrmMain.S1Click(Sender: TObject);
var
res: Integer;
begin
res := frmSave.ShowModal;
if res = mrOK then
with frmSave do
Memo1.Lines.SaveToFile(kakoPath + YEdit.Text + '/' + MEdit.Text + '/' + DEdit.Text + '.txt'); //YEdit・MEdit・DEditはfrmSaveに属します
end;
____________________________________________________________________________________________________________________________________________

これより、pasファイルが変わります。
var
frmSave: TfrmSave;

implementation

{$R *.dfm}

procedure TfrmSave.SaveBtnClick(Sender: TObject);
begin
frmSave.ModalResult := mrOK;
end;

procedure TfrmSave.CancelBtnClick(Sender: TObject);
begin
frmSave.ModalResult := mrCancel;
end;
0466デフォルトの名無しさんNGNG
はぁ。歴史的事情でファイル名に / は使えません。

Unix 風ディレクトリセパレーターである / を DOS の
セパレーターである \ と同一視していた時代があったため。

ためしに 期待するファイル名を手で作成してごらん。はねられるから。
0467465NGNG
>>466
おっしゃる通り、 / は使えませんでした。どうもありがとうございました。
0468デフォルトの名無しさんNGNG
というか、Win2kなんかだと/は\の変わりに使える罠。
0469デフォルトの名無しさんNGNG
>>468
W2K でもデフォルトではだめでしょ?
0470Delphi好きッ ◆0YAPhEjk NGNG
>>469
実験で、FindFirstを用いてWin2kで/を使ってみたらうまくいきました。なんか、
設定がしてあるんでしょうか。
0471Delphi好きッ ◆0YAPhEjk NGNG
質問があります。
DLLプロジェクトなんですが、起動時に表示されるフォームを画面上部に画面横幅い
っぱいに表示したいと思っています。(その後は、サイズ調整自由)
この時、フォーム内のコンポーネントには、横幅にあわせて位置が変わるコンポーネ
ントもあります。(AnchorsプロパティでakRightを指定してあります)
実現方法として、OnFormCreateイベント中で、フォームのWidthにScreen.Widthを
代入するという方法をとりました。
ところが、この手で大きさを変えると、AnchorsにakRightを指定したコンポーネン
トが、とてもフォームの右端を基準に調整したとは思えない場所に表示されます。
どなたか、原因、解決策等ご存知でないでしょうか?
0472デフォルトの名無しさんNGNG
実際にテストしたわけではないので確実ではないけれど。
FormCreate はオブジェクトが作成された時点のイベントだから、
OnShow の方がよいと思う。
0473Delphi好きッ ◆0YAPhEjk NGNG
>>472
OnShowを利用したのですが、同様にうまくいきませんでした。
追記)一応場所が動いてはいるのですが、十分に動いていない(予定位置の半分くら
いの位置で止まっている)のです。何が原因なんでしょうか…。
0474Delphi好きッ ◆0YAPhEjk NGNG
すいません。原因が分かりました。
OnCanResizeイベント内で、
if NewWidth<480 then NewWidth:=480;
と、最低幅縛りを入れるとAnchorsプロパティにakRightを指定してもまともな位置に
表示されないようです。原因はわかりませんが…。
とりあえず、どのような解決法がありえるんでしょうか。
0475デフォルトの名無しさんNGNG
>>474
Windowの大きさ制限はフォームのプロパティでやるようにしたらどうですか?
0476Delphi好きッ ◆0YAPhEjk NGNG
>>475
色々やったらうまくいきました。有難う御座います。
(Constraintsプロパティなんて使ったこともありませんでした。多謝)
0477でもどり初心者 ◆KcG2I.hg NGNG
最近、OSを再インストールしたんで、
Delphi6.0Personalも再インストールしようと思ったんですが、
使用許諾コードの取得でまでは完了するんですが、
キャプションが「Delphiの登録」のウィンドウの下の方に
「登録に失敗しました。もう一度試して見てください。」
とでるんですが、何度やっても先に進みません(涙)

捨てメアド取得して1から再インストしないとだめなのかなぁ

ネットで配るんなら、認証もっとゆるくしてくれよぉ
0478素人NGNG
>>477
で、結局どーなったんでしょう?おちおち再インストールも出来ないですなぁ…。

ところで、関係無いですが、英和訳エンジンって便利だけど

○全体的にユニークな確認者(GUID)
○タイプ図書館
○ActiveX図書館
○COMオブジェクト魔法使い

やっぱりまだまだかなぁ(^^;。ところどころで「タイプライブラリ」って
訳せるくせにどうして図書館になるかなぁ?あと「COMオブジェクト魔法使い」が
気に入った。
0479デフォルトの名無しさんNGNG
>>477, >>478
あれは十分ゆるい/ぬるい認証システムだとおもうがなぁ。
使用許諾コードを新しいマシンの上で生成したのだよね?
最悪、Borland に電話してみたら?
0480Delphi好きッ ◆0YAPhEjk NGNG
>>477
私、会社のマシンでDelphi6インストールして、そのままのコードを使って自宅のパソ
コンにもDelphi6インストールしたらうまくいきました。
まぁ、同じWin2ksp2ではありますけど。
0481デフォルトの名無しさんNGNG
別のパソコンで使いたいならレジストリの内容を保存しとけば?
0482でもどり初心者 ◆KcG2I.hg NGNG
結局、一度アンインストールし、別のメアドで登録してキーを取得して
インストールしてうまくいきました。って、うまくいくの当たり前か。

>>479
金払ってないから、サポートに電話するの気が引けるんだよね(汗

認証はMSのアクチに比べると緩々だと思うけど、
せめて、もうちょいわかりやすくメアド登録して、帰ってきたパスを
打ち込むぐらいにして欲しかった。

いや、タダで使わせてもらってるから、大きい声ではいえないんだけど(w

>>481
どのレジストリのキーかわかりますか?
0483TeamB/2ch ◆SE69s0c2 NGNG
Borland の言語製品は複数のマシンへのインストールを許していますし、
Personal 版は無料で公開しているものなのですから、サポートに電話してみても
問題ないと思いますよ。

もちろん、Pro/Ent の不正コピーとかという話だとまた別ですが。
0484デフォルトの名無しさんNGNG
>>482 どのレジストリって・・いかにもなのがあるから自分で見たら?

 それにレジストリ保存しないと色とかの設定で困らないの?
0485デフォルトの名無しさんNGNG
あげ
0486デフォルトの名無しさんNGNG
あげてもあげてもさがっていくなぁ。
せっかく統合したのに談話室の方が人気ある
0487デフォルトの名無しさんNGNG
ただ煽り合いが加熱してるだけでしょ
0488デフォルトの名無しさんNGNG
相談室は隔離施設だから、質問はここで。
0489デフォルトの名無しさんNGNG
bmpファイルをexeに埋め込むことはできないのですか?
exeだけ移動して実行すると「***.bmpは開けません」という
エラーメッセージがでます。
0490デフォルトの名無しさんNGNG
>>489
簡単なのはイメージリストとかvisible:=falseなイメージとか。
リソースに組み込んでもいいけど。
0491デフォルトの名無しさんNGNG
>>490
ありがとうございます。リソースに組み込むのをやってみようと思います。
0492Delフサギコ ◆VzDeLphI NGNG
                     _____________
 彡ミ  | |  ∧,,∧ |__    /
  |ヽ  | | ミ,,゚Д゚ミ/  /  <  世間はぶっそうだなあ
  |ヽ  | | (ミ   ,/__()旦~~ \
  ⊥  |  ̄| ̄|| ̄ ̄ ̄ ̄ ̄|    ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  |__|   ◎ ̄| ̄| ̄ ̄ ̄ ̄ ̄|

ところで、DateTime型を受け付ける
プロパティエディタってないでしょうか?

MilliSecまで設定できる奴がいいです。
自作るのも面倒だし、、、

できればTTimeStampでも同じ動作する
と、うれしいです。
0493デフォルトの名無しさんNGNG
>>492

勘違いかもしれんが

type TDateTime = type Double;

だから、そもそも published にできないのでは?
0494デフォルトの名無しさんNGNG
Del付属のリソースエディタでは
ビットマップやアイコンしか入りませんが、
リソースにバイナリデータを埋め込むにはどうスレば良いのですか?
(アプリケーションで、このデータをまるごとファイルに書き出してのに使います)
0495デフォルトの名無しさんNGNG
>>494

http://www.nifty.ne.jp/forum/fdelphi/samples/00982.html
0496Delフサギコ ◆VzDeLphI NGNG
          ?           _____________
 彡ミ  | |  ∧,,∧ |__    / はて?
  |ヽ  | | ミ,゚Д゚,ミ/  /  <  フサんちではDateTimeも
  |ヽ  | | (ミ   ,/__()旦~~ \ Doubleもインスペクタに出ますよ
  ⊥  |  ̄| ̄|| ̄ ̄ ̄ ̄ ̄|    ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  |__|   ◎ ̄| ̄| ̄ ̄ ̄ ̄ ̄|
0497493NGNG
すまぬ。ヘルプによれば

実数型は,Real48 を除いて published が指定できます。

でした。
0498デフォルトの名無しさんNGNG
>>494-495
リソースに任意のファイルを埋め込む事のみを目的にしたコンポって
作れないのかな?
それとも原理的に無理なの?
あれば便利だと思うんだが。

初級者丸出しな質問ですまそ。
0499デフォルトの名無しさんNGNG
>>498
リソースは、コードがコンパイルされる前にコンパイル済みでなくては
ならないので、コンポーネントにするのは非常にむつかしい。
*.dfm に取り込むなら簡単だけど。以前、ML で議論されていた。
0500498NGNG
>>499
dfmに取り込まれるってことは、実行するとメモリ上に展開されるってことでいいのかな?

つーことは巨大なファイルだとメモリを大量消費するのかな?
0501デフォルトの名無しさんNGNG
そのとおり。それがリソースとの比較では欠点だよね
ところで >>495 のURLの方法では何が不満なの。テキストファイルひとつ
書くだけじゃん。
0502デフォルトの名無しさんNGNG
リソースに入れない方法として

Delphiで小さな実行ファイルを作ろう
http://pc3.2ch.net/test/read.cgi/tech/1009080085/167
のように、初期化のついたバイト配列として埋め込んでおくのはダメ?

リソースに埋め込む方法もこのスレの21にあるよ

0503デフォルトの名無しさんNGNG
>>498
 TImageのようなのを作れば可能と思うよ
 ByteImageプロパティと SaveToFileメソッドだけのコンポーネントね
 ただByteImageプロパティエディタも作らないといけないけど

>>500
 dfmはたしかリソースに入ってるから、ストリームとして読まれるんじゃなかったっけ?
0504デフォルトの名無しさんNGNG
256色以上のビットマップをリソースにするにはどうすればいいのでしょうか?
0505デフォルトの名無しさんNGNG
>>504

確実なのは、BMPのファイルイメージをバイナリリソースにして
おいて、実行時にリソースから読み出したバイナリ列でピクセル
列を作成する方法かな。
0506デフォルトの名無しさんNGNG
最近デバッグ実行を終了する際に、
delphiの反応が無くなるようになって作業にならないんですが(;´Д`)

OSの再インスト時期なのだろうか……
0507デフォルトの名無しさんNGNG
>>506 さあ・・・ 自作コンポが悪さしてるかもしれないし何とも他人には判りません
0508デフォルトの名無しさんNGNG
今、D6でエディタを作ってるんですが、
TMemoやRichEditに改行マーク↓や[EOF]マークを
付けるようにするには、どうしたらよいのでしょう?
0509デフォルトの名無しさんNGNG
>>508
TEditor使え
0510ななしへた(以下略) ◆B18Bks.Y NGNG
>>497
Delphiが出たばかりの頃に出た昔の某Y氏の本に
実数型はpublishedにできないと書いてあったので
しばらくだまされた(^^;ものです.

#まだDelphiをよく理解しないうちに書いたように思える本でしたが
この本のおかげでDel始めてすぐにコンポを作れました.
0511デフォルトの名無しさんNGNG
>>509
TEditorのようなものを自作したいので、
どのようにやるのか方法が知りたいんです。


0512デフォルトの名無しさんNGNG
>>511 TEditor作りたいなら TLabelを参考にした方がよかったり
0513デフォルトの名無しさんNGNG
TLabelとTEditorを参考にしたら出来ました!
ありがとうございました。
0514デフォルトの名無しさんNGNG
>>513
えっ!!!!!!!
0515デフォルトの名無しさんNGNG
>>513

はすごいね。26分で解決だと。
0516デフォルトの名無しさんNGNG
>>515

文末と行末に TLabel を貼ったのか?
0517508NGNG
>>513は別人です。
どなたかヒントか何かいただけませんか?

0518デフォルトの名無しさんNGNG
どうにかして改行やEOFを判定して
PenやCanvasで文字のあとに描くのでは、
0519デフォルトの名無しさんNGNG
フォームAの上にEditを配置して、入力中に[F2]を押すと別のフォームBをポップアップ表示させて
丁度、コンボボックスのリストの高機能版のようなことをさせようとしているのですが、以下の問題が
解決できません。

1.フォームBを表示させるとフォームAからフォーカスが奪われる
2.フォームAにフォーカスが移動するとフォームBが後ろに回って見えない。

何か良い解決策はないでしょうか。
0520デフォルトの名無しさんNGNG
>>519
TForm では無く、TListBox とかの普通のコントロールを動的に生成して
位置あわせしたらどう?
0521デフォルトの名無しさんNGNG
FormのOnpaintイベントじゃなくて、OnCreateでCanvasを扱おうとすると無理ですよね?
それはOnCreateが呼び出されるのがフォームのインスタンスが作成された直後で、フォームが表示される前だから、Canvasは反映されないっていう考え方で合ってますか?
0522デフォルトの名無しさんNGNG
>>520
ちょっと項目が多いのでフレームでなんとかやってみます、有難うございました
0523デフォルトの名無しさんNGNG
>>521
procedure TForm1.FormCreate(Sender: TObject);
begin
  show;
  Self.Canvas.Pen.Color:=clRed;
  Self.Canvas.LineTo(100,100);
end;

やろうと思えば、こんなかんじで show 入れるとできますけど。
0524デフォルトの名無しさんNGNG
>>523
なるほど、勉強になりますた。ありがたや、ありがたや。
0525無責任だがNGNG
>>519 フレームでいいと思うけど フォームでやる方法もあるよ
type
TForm2 = class(TForm)
・・・
procedure CreateParams(var Params: TCreateParams); override; //これを追加
end;

その実装部
procedure TForm2.CreateParams(var Params: TCreateParams);
begin
inherited;
Params.Style:=WS_CHILD;
Params.WndParent:=Form1.Handle; //親をForm1に変更する
end;

フレームと違って、位置合わせはコードでやらないといけない。

でも、フォームにPaintBoxを貼っておいて
procedure TForm1.Button1Click(Sender: TObject);
begin
Form2.BoundsRect:=PaintBox1.BoundsRect;
Form2.show;
end;
と、PaintBoxの範囲にあわせるようにすると楽
0526デフォルトの名無しさんNGNG
ツルーバーについて教えてチョンマゲ
TToolBarのWrapableプロパティをTrueにした状態で、ToolBarのWidthを縮めると
ToolBarが折り返されるんだけど、折り返されたときのイベントって分かりますか?
0527デフォルトの名無しさんNGNG
>>526
ヘルプ♪
0528526NGNG
ゴメンヨゴメンヨ。ツルバーのOnResizeで取れたよ。
全然違うツルバのResizeにブレクポインコ張ってた。テヘ。
0529519NGNG
>>525
なるほど、勉強になりました。
0530デフォルトの名無しさんNGNG
ADVゲームを作ろうと思うのですが、文字を一つずつ表示するようなコンポーネントって
ありませんか?
0531デフォルトの名無しさんNGNG
>>530
あってたまるかと。
0532デフォルトの名無しさんNGNG
Delphian WorldのGraphics&Mulitmediaで探せば?
0533デフォルトの名無しさんNGNG
TListView の vsReport 表示のときに、項目幅を変えさせたく無いんですが、
何かいい方法ありませんか? columns のwidth 設定はちょっと・・・
幅変更のマウス表示すら無くしたいのですが。
0534デフォルトの名無しさんNGNG
>>533
ListView1.ShowColumnHeaders := False;
だったら変更できなくなるけどヘッダが見えなくなるからなあ・・・
そういうスタイル定数やメッセージも見当たらないし。

TStringGridで見せかけるのは?
0535デフォルトの名無しさんNGNG
Kylix3あげ
0536533NGNG
>>534
サンクス。やっぱり無理っぽいので、美しくないけど Width で逝きます。
TStringGrid は跳び選択? が出来ないので使うの辞めました。
あと、書き換え時のデータ初期化がめんどいから。
0537デルファイの名無しさんNGNG
ListView1.ShowColumnHeaders := False にしておいて、
別途THeaderを置いておくとか、駄目ですか?
0538デフォルトの名無しさんNGNG
TListcolumnのMinWidthプロパティは?
ポインタは変わっちゃうけど。
0539デフォルトの名無しさんNGNG
>>533
>TListView の vsReport 表示のときに、項目幅を変えさせたく無いんですが、

LsitView をサブクラス化して、子ウィンドウであるヘッダーコントロール
からのメッセージを処理すると column 幅変更を阻止できます。

  { Private 宣言 }
 public
  OrignalProc:TWndMethod;
  procedure SubClassProc(var Msg:TMessage);
 end;

var
 Form1: TForm1;

implementation

{$R *.DFM}

uses
 Commctrl;

procedure TForm1.FormCreate(Sender: TObject);
begin
 OrignalProc := ListView1.WindowProc;
 ListView1.WindowProc := SubClassProc;
end;

procedure TForm1.SubClassProc(var Msg:TMessage);
begin
 OrignalProc(Msg);
 if Msg.Msg = WM_NOTIFY then
  if pNMHDR(Msg.LParam)^.code = HDN_TRACK then begin
   Msg.Result := 1;
   ListView1.Refresh;
  end;
end;
0540便乗で質問NGNG
TListView の vsReport 表示のときに、横スクロールバーを常に非表示にしたいのですが、
何かいい方法ありませんか?
0541デフォルトの名無しさんNGNG
>>540

サブクラスプロシージャを以下のようにします。そのはかは 539 と同じ

procedure TForm1.SubClassProc(var Msg: TMessage);
begin
 OrignalProc(Msg);
 if Msg.Msg = WM_PAINT then
  ShowScrollBar(ListView1.Handle,SB_HORZ,false);
end;
0542デフォルトの名無しさんNGNG
>>541 の 訂正。垂直スクロールバーがあるときも考慮して

procedure TForm1.SubClassProc(var Msg: TMessage);
begin
 OrignalProc(Msg);
 case Msg.Msg of
  WM_PAINT:ShowScrollBar(ListView1.Handle,SB_HORZ,false);
  WM_VSCROLL:begin
   OrignalProc(Msg);
   ShowScrollBar(ListView1.Handle,SB_HORZ,false);
   ListView1.refresh;
  end
 end;
end;
0543デフォルトの名無しさんNGNG
>>541 の再訂正。 すまぬ

procedure TForm1.SubClassProc(var Msg: TMessage);
begin
 OrignalProc(Msg);
 case Msg.Msg of
  WM_PAINT:ShowScrollBar(ListView1.Handle,SB_HORZ,false);
  WM_VSCROLL:begin
   ShowScrollBar(ListView1.Handle,SB_HORZ,false);
   ListView1.refresh;
  end
 end;
end;
0544デフォルトの名無しさんNGNG
>>541 の再々訂正。すまぬすまぬ。

procedure TForm1.SubClassProc(var Msg: TMessage);
begin
 OrignalProc(Msg);
 case Msg.Msg of
  WM_PAINT:ShowScrollBar(ListView1.Handle,SB_HORZ,false);
  WM_VSCROLL:ListView1.refresh;
 end;
end;
0545デフォルトの名無しさんNGNG
>>531
ある。
0546デフォルトの名無しさんNGNG
GetMemとAllocMemで確保するのって何か違いがあるんでしょうか?
0547デルファイの名無しさんNGNG
好みで使い分けていいと思いますよ。
AllocMemはゼロ初期化がされますけど、どうせ何かのデータを入れるならGetMemで取って個別に代入しても結局同じですし。
0548デフォルトの名無しさんNGNG
メニューの"ファイル(&F)"のFを指定する
プロパティの名前って何がいいですか?
Accelerater? HotKey?
0549デフォルトの名無しさんNGNG
SDKのドキュメントだと"Menu access key"になってるから、accessKeyは?
0550デフォルトの名無しさんNGNG
一太郎のファイル(拡張子jtd)からデータを読み込むことになったのですが、
どのようにしてデータを引っ張ってきて、どのような単位(行単位とか?)で、
引っ張ってこれるのかが、わからなくて。。。
ADOを使用したりしまする?
0551デフォルトの名無しさんNGNG
教えてください。
A,B,Cのユニットがあります。
Aのinterfaceで、列挙型を宣言しています。
 type
  TMyColor = (mcBlue, mcRed);
Bのuses節にAを加えれば、TMyColorを参照できます。
しかし、Cのuses節にBを加えてもAのTMyColorは参照できません。
ここまでは、理解しています。
お聞きしたいのは、これを可能にする方法です。
試しに、Bのinterfaceで
 type
  TMyColor = A.TMyColor;
と宣言してみたのですが、Cで参照すると未定義のエラーになりました。
数珠つなぎにすることは可能なのでしょうか?
0552Delphi好きッ ◆0YAPhEjk NGNG
>>551

unit unit3;
interface
type TMyType = (ltest, ltest2);
---------------------------------------------------------
unit unit2;
interface
uses unit3;
type TMyType = unit3.TMyType;
---------------------------------------------------------
unit unit1;
interface
uses Unit2;
var t : TMyType;

…
こんな感じ?一応コンパイルできましたが…。??
0553550NGNG
すんません。。。
質問の仕方がいけないでしょうか?
こまっちょります。。。。・゚・(ノД`)・゚・。
0554デフォルトの名無しさんNGNG
>>553
一太郎でマクロ使えば?
それとも
obj = CreateObject("JXW.Application")
obj.Visible = true
obj.Documents.Add()
obj.TaroLibrary.Insert("Hello, Ichitaro.")
こんな漢字でやるとか
どっかにコンポがあったような
0555デフォルトの名無しさんNGNG
>>553
それが可能ならJustSystemのサイトで技術情報公開してるはず。
してなかったらアンテナハウスに聞け。
0556デフォルトの名無しさんNGNG
コソーリ

> Subject: [Delphi:69385] 一太郎ファイルのデータ取得
> Date: Thu, 25 Jul 2002 15:46:21 +0900
> From: デフォルトの名無しさん <[email protected]>
>Reply-To: [email protected]
> To: DelphiML <[email protected]>
>X-Mailer: Becky! ver. 2.00.11
0557550NGNG
>>554
一太郎でマクロ。。。調べてみます
記述していただいたコードが既に理解できていない罠。。。
調べます。。。

ありがとうございます

>>555
技術情報。。。そんなに難しいことでしか。。。
どぼぢまじょお。。。

>>556
おおお
それは どっかのTipsでしか?
内容が。。。知りたい。。。
0558デフォルトの名無しさんNGNG
Invokerユニットに含まれてるTInterfaceInvokerってクラスに詳しい人って居ま
せんか?
Webサービスでサービスとして使うクラスはすべてこのメソッドで起動されるみた
いなんですが、implements宣言でInterfaceを他のオブジェクトに委任してると
不正なメモリアクセスが発生してしまいます。
おそらくInterfaceの取り出しなんかせずにメモリマップを決め打ちして実行して
るんだろうと思いますが、それを回避する方法が解りません。
何か良い知恵は無いでしょうか?
0559デフォルトの名無しさんNGNG
テストコードか何かありませんか? >>558
0560558NGNG
>>559

たとえば、

Thogehoge = class(TInvokableClass, Ihogehoge)
 FhogeImpl: Ihogehoge;
public
 constructor Create; override;
 destructor Destroy; override;
 property hogehoge : Ihogehoge read FhogeImpl implements Ihogehoge;
end;

と言うふうにIhogehogeインターフェイスを持つThogehogeというクラスが有った
とします。
インターフェイスの実装はFhogeImplに委任されていて、コンストラクタの実行時
にFhogeImplへインスタンスがセットされ、デストラクタで解放されます。

このクラスをWebサービスとして登録すると、TInterfaceInvokerによって実行さ
れる際にEAccessViolationが発生してしまうのです。
(発生個所:SOAPPasInvユニット114行目)
で、このクラスの実装方法を変えて、

Thogehoge = class(TInvokableClass, Ihogehoge)
 FhogeImpl: Ihogehoge;
public
 constructor Create; override;
 destructor Destroy; override;
 function Hogefunc(const Value: Integer): Integer;
end;

function Hogefunc(const Value: Integer): Integer;
begin
 Result := FhogeImpl.Hogefunc(Value);
end;

という風にメソッド内で委任を行った場合は問題なく実行できます。
で、TInterfaceInvokerがどんな風にHogefuncの呼び出しを行っているのかを調
べようと思ったのですが、TInterfaceInvokerのソースはインターフェイス部しか
無くて私の手におえない状態です。
0561558NGNG
手におえないと思ってたらあっさり解決してしまいました。
そもそもなんでインターフェイス委任がやりたかったかと言うと、Webサービスを
普通に実装してしまうとリクエストのたびにCreateが実行されてしまって永続的
なサービスにならなかったので、Singletonなオブジェクトへ委任してしまおうと
思ったんです。
そこで迂回路を探してたら、ズバリそのものがヘルプにありました。
Delphiヘルプ-「インターネットアプリケーションの開発」-「実装の作成と登録」
を見てみたらオブジェクト提供プロシージャを登録できる事がわかったので、

procedure Createhogehoge(out obj: TObject);
begin
 if Singleton = nil then
 begin
  Singleton := THogehoge.Create;
  { インターフェースへの参照を保存し,解放を防止する }
  SingletonIntf := Singleton as Ihogehoge;
 end;
 obj := Singleton; { グローバルインスタンスを返す }
end;

initialization
 { 起動可能インターフェースの登録 }

 InvRegistry.RegisterInvokableClass(Thogehoge, Createhogehoge);

という風にしてやってWebサービスを単一インスタンスで実行する事が可能になり
ました。
これでDCOMとかCORBAとかの高コストフレームワークに頼らずに、しかも厳密な型
チェックが可能なC/Sシステムが作れそうです。
0562デフォルトの名無しさんNGNG
>>557
> それは どっかのTipsでしか?
> 内容が。。。知りたい。。。

あれ見てMLだとわかんないオマエは・・・ひょっとして、ひょっとすると、
そーか、わかった、やはりな、ふふふ、ははは、はぁーーっはっはっ!!
0563デフォルトの名無しさんNGNG
誰か実装してください。

TProcess = class
public
 procedure Execute;
 procedure Terminate;
 property Executing: Boolean;
published
 property ExeName: String read FExeName write FExeName;
 property Directory: String read FDirectory write FDirectory;
 property Args: TStrings read FArgs write FArgs;
 property Priority: TProcessPriority;

 property UsePipe: Boolean;
 
 property OnExecute;
 property OnExit;
 
 property OnStdOutput;
 property OnErrOutput;
 property OnInput;
end;
0564デフォルトの名無しさんNGNG
>>563
お前、writeln()が溢れかえる結果が見えないか?
0565デフォルトの名無しさんNGNG
>>564
いみふめ
0566デフォルトの名無しさんNGNG
2バイトの文字列、例えば"2F" を 16進数の 2F に対応する1文字、つまり
この場合なら "/" に変換したい。(結局、chr($2F) の結果の文字列)
何か、いい方法はありませんか?
よろしくお願いします。
0567デフォルトの名無しさんNGNG
>>566
if(a = 47) then
b := b + '/';
0568デフォルトの名無しさんNGNG
習得する手間と、言語としての機能の2つのポイントで考えると、
C++とDelphiどっちを勉強したら良いでしょうか。
0569デフォルトの名無しさんNGNG
普通にオヤジ登場
0570デフォルトの名無しさんNGNG
>>569は誤爆。スマソ
0571デフォルトの名無しさんNGNG
>>567
どこから、そんなロジックが出てくるんだ?
冗談で書いてるのか?
0572デフォルトの名無しさんNGNG
>>568
簡単さならIDEが洗練されている(RAD的にね)Delphiの方が簡単。
Delphiは機能的にはC++のサブセットと言えると思う。
だからC++への移行は割と簡単かと。
逆も然りだけどC++書けたらもうDelphiいらんでしょう。
簡単に何かを作りたいときは使うけど。
0573デフォルトの名無しさんNGNG
>566
HexToBin
0574568NGNG
>>572
なるほど。Delphi→C++への移行は楽なんですね。
実の所、現在C++を勉強中なんですが、イマイチ掴めないので、停滞していた所でした。
とりあえず、しばらくDelphiを使ってみて、
機能に不満を感じるようになったらもう一度C++に戻ってみます。
で、教えて君みたいで非常にカンジが悪いと思うのですが、
Delphiの解説サイトでオススメのところとかありますでしょうか?
できれば、現在も更新されている(管理人のやる気が持続している)サイトがいいです。
もし宜しかったら、お願いします。
0575デフォルトの名無しさんNGNG
>>574
知らん。俺はDel3のヘルプとマニュアルだけで覚えた。w
0576デフォルトの名無しさんNGNG
乗換えが楽って書いてあるけど、
デルファイとC++ってそんなに似てるか?
俺はデルファイ専門だからよくわからんのだが……。
0577デフォルトの名無しさんNGNG
>>576
クラスもあればオーバーロードもある。

C++に言って取りあえず覚えなきゃいけない新しい概念。

多重継承
テンプレート
参照

位じゃないの?
0578デフォルトの名無しさんNGNG
まぁ、でも乗りかえるって事は色々と覚えなおさなくちゃならないコトがあるわけで、
ラクな乗りかえってのはありえないわな。
0579デフォルトの名無しさんNGNG
>>577
参照ってDelphiのvarじゃないの?
0580デフォルトの名無しさんNGNG
>>578
まぁね、でも共通の概念が多いから理解は早い。
VBユーザとか大変そうだよ?見てると。
0581デフォルトの名無しさんNGNG
参照はObjectPascalにもvarとかoutとかあるし、
多重継承もinterface+implementsで事実上実現できますし。

テンプレートの他には、C++ではコンストラクタとデストラクタが自動で呼ばれること、とかかな?
でも、それもstringやVariantの解放処理が自動で行われることの延長のようなものですし。

何よりC++Builderの存在が、ふたつの言語が直接リンクできる程度に近いことを証明してくれてるし。
0582デフォルトの名無しさんNGNG
DelphiからC++に乗り換えて(別にDelを使わなくなったわけではないが)、
一番苦労したこと。

それは、C++のソースが読みにくい!

私の体験なんだが、同じ思いをした人はいません?
0583デフォルトの名無しさんNGNG
同じC++でも
C++BuilderとVisualC++ではかなり開発手法が違う罠(本当に罠。
0584デフォルトの名無しさんNGNG
C++はクラスのインスタンスを静的に生成できる。
0585デフォルトの名無しさんNGNG
>>584
あれ、考えようによっちゃ難儀よ?

0586デフォルトの名無しさんNGNG
難儀ならしなければいいのでは。
0587デフォルトの名無しさんNGNG
まぁ、なんだかんだいってもC++の方が性能は上だわな。
俺はDelphiiつかってるけど。
っつーか、別に生産性の悪いC++なんぞつかわんでも、
Delphi使えればもう9割がたやりたいことは出来ると思うんだが。
どうかな?
0588デフォルトの名無しさんNGNG
>>582
コンポーネントはObject Pascalで書けばいいじゃん。
どうせBCBは両方コンパイルできるんだから。
0589デフォルトの名無しさんNGNG
>>587
機能はC++が上
性能はObject Pascalが上
でないかい
0590デフォルトの名無しさんNGNG
>>587
C++Builderに限って言えばDelphiと生産性は同じ様なもんじゃないのか?
STLや既存の大量のライブラリが使える分Builderの方が上かも。
0591デフォルトの名無しさんNGNG
Pascalの魅力は制限が多いことなんだよ。

煽りじゃないよ、念のため。
0592デフォルトの名無しさんNGNG
>>591
おたく、通ですな
0593デフォルトの名無しさんNGNG
C++にできてDELPHIで出来ないこと、
またその反対の例を具体的にあげて貰えないでしょうか。
あんまりないなら暫くはDELPHI parsonalでいこうかと思ってます。
0594デフォルトの名無しさんNGNG
気合いさえあればC++だろうがObject Pascalだろうが出来ない事は無い。
0595デフォルトの名無しさんNGNG
doxygenのような使えるクラス関係解析ツールがObjectPascalには無い。
0596デフォルトの名無しさんNGNG
>>593
俺はあんまり感じないけど。
ま、俺c++使ったこと無いんだけどね(笑
0597デフォルトの名無しさんNGNG
>>589
そりゃ、どーだろ。
単に実装方法の違いだけだろ、ライブラリを使う場合にC++だと簡単に扱えるけど
Delだとちょい手がかかる、もっともDirectX関連のようにC/C++で書いた方が楽な
ものもあるしね。
性能や機能とはちょっと違うと思うけど。
それと、Delphiの欠点はDelphiであるって事かな、C++の場合gccやvcやBCBと色々
とあるけど、DelphiはDelphiでしかないからね、FreePascalもまだ成長しきれてない
しなんとなくもう駄目だろ。
まぁ、折れの場合は、Pascalが好きだからDelphi使ってるってだけで他に理由はないんだが。
0598593NGNG
>>594
早レス、サンキュッ!
じゃあやっぱり、DELPHI+BCCでいってみます。
0599デフォルトの名無しさんNGNG
生産速度的にはどうだろう?Delphiの方がはやくないか?
0600デフォルトの名無しさんNGNG
>>597
そんな深い意味じゃない�C
C++ はテンプレートが使える分、高機能
Object Pascal はコンパイルが桁違いに速い分、高性能
という程度の意味だ�C
0601デフォルトの名無しさんNGNG
>>593
初心者の方ですか?
「手っ取り早くゲームを作るぜっ」という軟派な方ならDelphiをお勧めします。
無料で手に入る高機能RADツールですから。
「プログラムの基礎やアルゴリズムをじっくり勉強していきたい」という硬派な
方なら、やはりDelphiですな。教育用言語、というくらいだから。文法も美しいし。

それ以外の普通の人は、C++をやってください。以上。
0602デフォルトの名無しさんNGNG
>>599
コンパイルはDelphiの方が速いね。
全体的な生産速度で言えば、
C++Builder > Delphi >> VC++じゃない?
(ライブラリの充実度から言って)
0603デフォルトの名無しさんNGNG
書き忘れたけどVC++が低いのはRADじゃないからね。
0604デフォルトの名無しさんNGNG
話が面白い方向に進んできたな。
ほかのDelphiユーザの意見が聞けて面白い。
もっとやってくれ。
0605デフォルトの名無しさんNGNG
Delphiは柔軟な言語だな。
Delphi自体はc++にも決して劣らない能力を持ち、
かつc++に移行したくなったらわりと容易に移行できる。

っつーか、c++とdelphiが似てるってコトなんだろうな(笑
0606デフォルトの名無しさんNGNG
柔軟すぎて逆に困る事が多いのがC++。
ObjectPascalは固い言語。
0607デフォルトの名無しさんNGNG
>>605
経緯は一緒よ?

ALGOL(だっけ?)から派生して無理やりOOPに仕立て上げたって言う。
0608デフォルトの名無しさんNGNG
正直CやC++の言語仕様って、いきあたりばったり、って感じで嫌い。
PascalやObjectPascalって凄く練られてるって感じがして好き。

お前ら、そう思いませんか?
0609デフォルトの名無しさんNGNG
>>608
たしかに。
0610デフォルトの名無しさんNGNG
>>604
ハゲドー
0611デフォルトの名無しさんNGNG
>>608
マゾですね。
0612デフォルトの名無しさんNGNG
MacOS と BeOS の違いみたいな感じでは?
BeOS は消えたけど・・・
0613デフォルトの名無しさんNGNG
C++は無理矢理CをOOPLにしたって感じだからね。
0614デフォルトの名無しさんNGNG
テンプレート乗せたOPが最強です。
0615デフォルトの名無しさんNGNG
ObjectPascalは言語的には悪くないと思うけどBorlandが潰れたらおしまいだからなあ。
0616デフォルトの名無しさんNGNG
>>615
死ぬ前にオープンソースとかに・・・無いか?
0617デフォルトの名無しさんNGNG
>>615
BorlandはM$に潰されそうだしね。
0618デフォルトの名無しさんNGNG
言語的に考えたらC#が最強だと思う。
M$は嫌いだが。
0619デフォルトの名無しさんNGNG
c#ってc++に機能追加しただけじゃないの?
根っこの部分から違ってるの?
0620デフォルトの名無しさんNGNG
javaにしてもC#にしても、なんで新世代言語は、あの汚いC++の言語仕様を
ベースにしようとするのかわからん。
だれかPascalベースの新世代言語を作ってくれ。Pascalと互換性なくても
いいから。
0621デフォルトの名無しさんNGNG
>>619
…
0622デフォルトの名無しさんNGNG
多くの人はbeginとendで区切られたスコープ見るだけで気持ち悪がるからね。
0623デフォルトの名無しさんNGNG
まぁ、俺はDelphiマンセーだよ。
信者が少ないのがネックだが。
0624デフォルトの名無しさんNGNG
>>617
MSはBorland、Apple、Corelを潰せません。
0625デフォルトの名無しさんNGNG
>>616
>死ぬ前にオープンソースとかに・・・無いか?
InterBaseの先例があるよね
(後で商用に戻ってしまったけど FireBird が残った)
0626デフォルトの名無しさんNGNG
俺、ゲームつくりたいんだけど、Delphiで十分かな?
0627デフォルトの名無しさんNGNG
>>626
Delphiで限界感じたら他の言語使えばいいだろ。
0628デフォルトの名無しさんNGNG
>>622
Oracleのストアドも begin〜end なんだけどね〜
DBやる人、少ないのかな?
0629デフォルトの名無しさんNGNG
オープンソースになり、信者のうちのもの好きが色々と他のユーザーの意見とか要望を織り交ぜて新世代言語を作りだし、
C++を打ち破る。
と、妄想してみる
0630デフォルトの名無しさんNGNG
>>628
これから増えるというか今増えてる途中じゃないの?
0631デフォルトの名無しさんNGNG
>>622
確かにねー。別に慣れれば何てこと無いんだが。
あと function や procedure を敬遠する人も多いね。 Integer, Booleanも。
if の後の then や、for の後の do や、でもcaseはPascalの方が上か(つーかCのcaseはまんまgotoだろ)。

ても経験上Pascalの方があまりホームポジション崩さずにコーディングできるから、
あまりC++と比べて打つのに時間がかかる、ということは無いと思う。

>>626
多分十分だろう。
0632デフォルトの名無しさんNGNG
>>631
むしろPASCALのほうが速くコーティングできる。俺は。慣れかもしれんが。
0633デフォルトの名無しさんNGNG
>>630
Oracleは減少傾向かも(哀
0634デフォルトの名無しさんNGNG
Pascalはタッチタイプできることが前提みたいなところはあるかもね
0635デフォルトの名無しさんNGNG
&& って打つより、明らかに and の方が早いしね。
hoge->hage って打つのも、 hoge^.hage のほうが早い。
% より mod が早いし、でも += や *= はあると便利だなぁ…。
0636デフォルトの名無しさんNGNG
追加
<< より shl が早い!
0637デフォルトの名無しさんNGNG
>>574
全くの初めてだったらここなんかどうかな
http://www.h5.dion.ne.jp/~tuyano/DlphTutor/index.html

DELPHIを簡単に使えそうな気にしてくれます
0638デフォルトの名無しさんNGNG
仮にBorlandが潰れてもFreePascalもOOPLじゃないの?
0639デフォルトの名無しさんNGNG
クラスの継承は確実にC++よりObjectPascalの方がバグ出しにくいと思う。
0640デフォルトの名無しさんNGNG
>>639
そのC++の間違えやすい継承を分かりやすくしたのが、
JavaやC#じゃないの?
0641デフォルトの名無しさんNGNG
>>640
JavaやOPやC#じゃ

になるんじゃないの?言語の出現時期から見て。
TurboPascalのOOPL化の方が早かった?
0642デフォルトの名無しさんNGNG
>>639
つーかあらゆる事に関して、ObjectPascalはC++よりバグを出しにくいと思う。
0643デフォルトの名無しさんNGNG
スレ違いな議論がお好きなようで。
0644デフォルトの名無しさんNGNG
盛り上がってる所に水を差すのがお好きなようで。
0645デフォルトの名無しさんNGNG
>>643
仕切り厨の出現は荒れる兆候なんで、漏れは寝ます。
おやすみなさい。
0646デフォルトの名無しさんNGNG
ま、正直よほどヒネクレたつかいかたをしなければ、
大体のことはDelphiで事足りると思うんだがどうよ?
0647デフォルトの名無しさんNGNG
>>646
同意。
VBよりは遙かに自由度が広いと思われ。
0648デフォルトの名無しさんNGNG
Delphiで事足りるのは確か。
Delphiが一番効率がいいかどうかは人次第。
0649デフォルトの名無しさんNGNG
Pascalはツール・ライブラリが少ないのが痛い。
UNIXがPASCALで作られてたらC(++)と(Object)Pascalの立場は逆転してたと思うけど。
0650デフォルトの名無しさんNGNG
>>649
VCLにそれらしきもの無いですか?
0651デフォルトの名無しさんNGNG
>>649
たしかに、それはあるなぁ。
やっぱユーザが少ないのが原因なんだろうけど。
こればっかりはどうしようもないもんなぁ。
0652デフォルトの名無しさんNGNG
>>637
そこ、結構オモシロイ。
0653デフォルトの名無しさんNGNG
みんな寝たのか……。今日は色々と面白かったな。
0654デフォルトの名無しさんNGNG
そろそろ寝ます。おやすみ
0655デフォルトの名無しさんNGNG
>>654
アンタ、3時間もレスを待ってたのか。
やるな。(笑
0656デフォルトの名無しさんNGNG
プログラミングを勉強し始める動機って、人によって色々あるでしょ?
会社で使うアプリを作りたいとか、ゲームを作りたいとか。
そこで質問なんだけど,Delphiを勉強し始めて、
その「動機」になったプログラムを完成させられるようになるまで、
どれくらいかかった?
大体で良いから教えてけれ。
0657デフォルトの名無しさんNGNG
>>656
2日。
0658デフォルトの名無しさんNGNG
>>656
3時間
0659デフォルトの名無しさんNGNG
23'88
0660デフォルトの名無しさんNGNG
>>658
本当だとしたらお前は神
0661デフォルトの名無しさんNGNG
>>660
Hello Worldかもよ
0662デフォルトの名無しさんNGNG
エディットボックスの数字をデータベースの実数項目に代入するには、どうすればいいの?
StrToFloat関数でもTextToFloat関数でもエラーになるんですけど
0663 NGNG
             /http://pc.2ch.net/test/read.cgi/software/1025843952/
             |暇な奴作ってくらさい。
             |
             |操作性等がかちゅ〜に酷似or同じ。
             |スレ立て機能。
             |ソース公開しても、亜種禁止。
             |カチュクロンのログは新形式。今までのかちゅ〜ろぐはコンバーターで変換。
    /  ./\    \_______________________________
  /  ./( ・ ).\       o〇       ヾ!;;;::iii|//"
/_____/ .(´ー`) ,\   ∧∧         |;;;;::iii|/゙
 ̄|| || || ||. |っ¢..|| ̄   (,,  ) ナムナム   |;;;;::iii|
  || || || ||./,,, |ゝ iii~   ⊂  ヾwwwjjrjww!;;;;::iii|jwjjrjww〃
  | ̄ ̄ ̄|~~凸( ̄)凸 .(  ,,)〜 wjwjjrj从jwwjwjjrj从jr

0664 .NGNG
>>663
kaere
0665デフォルトの名無しさんNGNG
>>662
try
 フールド.asString:= Edit1.Text;
except
 例外処理
end;
0666デフォルトの名無しさんNGNG
>>655
1時〜15時=3時間
やるな。(笑
0667658NGNG
>>660
作りたかったツールというのが、
「IE のプロクシ設定を簡単に切り替えられるツール」だった罠。
プログラミングそのものの知識はほとんど必要なかったよ。
0668デフォルトの名無しさんNGNG
     \ 蚊厨はとっとと巣に帰れ!
       ̄V ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
     ,__
    /  ./\
  /  ./( ・ ).\
/_____/ .(#゚Д゚)  .\   ∧∧
 ̄|| || || ||. |っ¢..||   Σ(  ;)>>663
  || || || ||./,,, |ゝ||ii~   ⊂  ヾ
  | ̄ ̄ ̄|~~凸( ̄)凸 .(   )〜
0669デフォルトの名無しさんNGNG
>>667
(´-`).。oO(それ、漏れも作った)
0670ななしNGNG
Delphiって、(つい最近、お遊びで始めたばかりだが)魅力はかなりあるのに、ドキュメント
(オンラインヘルプ)がVBにくらべると、貧弱な気がする。
関数やサブルーチンのうち、コード例の記載があるのが1〜2割。
ヘルプをあてにしないで、書籍やWEBで調べた方がよいのではないかと感じてしまう。
また、API関数の解説は皆無。(仕方ないので、APIビューアーで調べるハメに・・・W)

MSには悪い点が多々あるが、技術情報(MSDN)の量の豊富さだけは某乱土より評価して
よいのではないか?
0671デフォルトの名無しさんNGNG
>>670
誰もMSDNけなしてる奴はいないよ。カコスレ全部読んでもらってもかまわない。
わざわざDelphiスレでMSDNの評価する必要もないし。


コード例が無いと何もできなういと言うのも問題だと思うが。

>(つい最近、お遊びで始めたばかりだが)
語るならもうちょっと勉強した方がいいと思われ。

APIヘルプはちゃんと英語版がついてきてる。CD-ROMには日本語版も。
0672ななしNGNG
>>671

> APIヘルプはちゃんと英語版がついてきてる。CD-ROMには日本語版も。

てゆーことは、製品版を購入せずに、雑誌の付録のPersonal版を使ってるのが、
論外ということか・・・。
0673デフォルトの名無しさんNGNG
>>672
>APIヘルプはちゃんと英語版がついてきてる

後、プラットホームSDKに思いっきりついてくる。
0674デフォルトの名無しさんNGNG
ダウンロードしたPersonalにも入ってますが?
0675ななしNGNG
>>673-674

げげ、確認不足かよ! 煤i ̄□ ̄;

仕事(Access, VBのみ)で使わんから、ちゃんと調べなかった、ってのは
言い訳にならねえよなあ・・・。(逝
0676デフォルトの名無しさんNGNG
>>675
>(つい最近、お遊びで始めたばかりだが)
語るならもうちょっと勉強した方がいいと思われ。

これだからVB厨は・・・とまた評判を下げることになりかねないよ。
0677デフォルトの名無しさんNGNG
>>674
付いてるよ。

PlatformSDKのドキュメントのほうが読みやすいけど。
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
0678ななしNGNG

質問です。

(1) Application.Title プロパティは、IDEのメニューから設定する、固定リテラルで記述する、
  のどちらか。(メニューで設定した時点で、コードが自動生成されるので、実質的におなじ)

(2) 上記のプロパティを変数で(動的に)記述することはできない。

自分なりにいろいろ試した末の結論なんですが、間違ってますか?

[ 環境 ]
Windows 2000 Pro SP2
Delphi 6 Personal
MS Office、Visual Studio 6.0 Enterprise SP5 その他
雑多なソフトいっぱい・・・。(^^;
0679デフォルトの名無しさんNGNG
>>678
2できない?
最悪でもSetWindowText()で。
0680ななしNGNG

API使うのは試してません。(思いつかなかった)

追加質問、失礼。m(_ _)m

(1) FindWindowって、クラス名(第1 Arg)、Window Title(第2 Arg)のどちらか片方を
  指定すればよい(もちろん、両方指定してもよい?)と思うんですが、Delphiアプリ
  の場合、クラス名には何を指定すればよいのでしょう?

(2) 文字列ポインタを渡すAPI引数を省略(VBの場合のvbNullString)する場合、nilで
  よいのでしょうか。
  FindWindowはそれで問題なく動いたのですが、ほんとにそれで正しいのか(コード
  は正しくないのに、たまたま運よく動いただけ、とか?)確信が持てなくて・・・。

0681デフォルトの名無しさんNGNG
>>680
まぁ、Delphiはvarがあるからnil渡せるならそれでいい。
0682ななしNGNG

更に追加質問。(しつこい)

use節に不要なユニットが記述されている場合、

(1) 実行ファイルのサイズやパフォーマンスに影響する。
  確認して、削除(またはコメントアウト)すべし。

(2) コンパイラが最適化してくれるので、問題なし。

どっちが正解ですか?

あ、書いてる途中で気が付いたけど、実行ファイルをCompareすれば、
確認できるのかな?(でも、今、手元に環境がないや・・・)
0683デフォルトの名無しさんNGNG
漏れ的にはC++だろうがPascalだろうが、あんまり気にならないのよ。
精々ドイツ語と英語の違い程度。

だけど、だけど、COBOLだけは・・・中国語くらい違う(泣
0684デフォルトの名無しさんNGNG
>>683
的を射た表現
Lispはまた別だろうね(案外、日本語だったりして)
0685デフォルトの名無しさんNGNG
Delphiはスレッド作れますか?
会社の基本的な方針は VB なんですが…
マルチスレッドが必要なときなどは Java を使っています。
けれど、Javaは開発環境が貧弱なこともありGUIフロントエンドを作るのに
向いているとは思えません。VBと同じような RAD である Delphi で
マルチスレッドができれば、採用したいと思っています。
0686デフォルトの名無しさんNGNG
>>685
自分で必要になったことはないけど
確か「拍子抜けするくらい簡単」だったはず
0687ななしNGNG
>>683

他の言語には、それぞれに熱烈なファンがいますが、COBOLが好きな人間だけは
聞いたためしがありません。(いるのだろうか?)
0688685NGNG
>>686
ありがとうございます。
Personal版をダウンロードして評価してみます。
0689デフォルトの名無しさんNGNG
>>686
最悪でもAPI呼べるでしょう。

VCLがスレッドセーフかどうかは別として。
0690デフォルトの名無しさんNGNG
ボーランドのサイトにスレッドの解説がありました
ちょっと古いですけど
http://www.borland.co.jp/tips/delphi/dh004/index.html
0691デフォルトの名無しさんNGNG
>>685

http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=24672&lngWId=1

VBだけでもマルチスレッドは出来たりする。
つか、マルチスレッドごときで開発方針丸ごと変えるのは愚かでは?
0692ななしNGNG
>>685
googleで検索したら、

ttp://www.wwlnk.com/boheme/delphi/techdoc/dad0010.html

が見つかりました。(参考になるかどうか・・・)
0693デフォルトの名無しさんNGNG
>>683-684
だったらprologは異世界の言葉ですか?
0694デフォルトの名無しさんNGNG
>>693
多分ダンバインはPrologで動いてます。
0695デフォルトの名無しさんNGNG
>678
>(2) 上記のプロパティを変数で(動的に)記述することはできない。

できます。
Application.Title := 'タイトル';

>682
>(1) 実行ファイルのサイズやパフォーマンスに影響する。
>  確認して、削除(またはコメントアウト)すべし。

ユニットによっては、usesしただけで処理が走るものもあり(initializationで)。
不要なユニットは削除するのか吉。


0696デフォルトの名無しさんNGNG
>685
できます。
ただし、VCLはスレッドセーフじゃないので、スレッドからフォームやコンポーネントにアクセスする場合はロックする必要がある。
ヘルプを参照のこと。
0697デフォルトの名無しさんNGNG
ちょっと聞きたいのですが、Delphiでダウンローダ作ってます。
それでIndyコンポーネントのIdHTTPを使ってるのですが、ダウンロード状況やリジューム機能がなくて不便です。
こういう時に使う、いいコンポーネントありますか??
もしくは実装についていいTIPSオナガイしますm(_ _)m
0698デフォルトの名無しさんNGNG
>>697
君がダウンローダ作るのは無理。
0699デフォルトの名無しさんNGNG
>>697
うーん。対象をある特定のエンティティとするか。あるいは任意のエンティティにするか、
によっても 相当変わってくるですよね。

あとは プロトコルを意識せずに既存媒体からダウンロード方向にするか、
トップダウンに あるデータファイルを適用する形にするか。

もしくは 何でも屋を目指さず、システムに解釈しやすい
通信規約を想定して作る、ってのも ありですよね。
#リジュームはここかな。

要は、ダウンロードという動作ひとつとっても、プロトコル体系としてスカスカで、
つまりその概念が出てくる頻度が とっても少ないけど、
基本的な概念、っていうのがあるわけです。
つまりそのプロトコルの意味が分からんとプログラムの意味がさっぱり、
っていう。
そういうのを ぜーんぶ網羅しなければいけない時点で
ダウンローダをDelphiで作るという気力はかなり萎えてしまうものです。
0700デフォルトの名無しさんNGNG
>>699
???????
0701デフォルトの名無しさんNGNG
>>700
ようするにWolfy氏はすごいってことだよ・・・、たぶん。
0702デフォルトの名無しさんNGNG
>>699
リジュームの概念は昔どこかのHPで見たことあります
HTTP/1.1 とか鯖で対応してないと無理とかRange やヘッダうんぬん。。。

いちおうHPを巡回してDLまでできたのですが、Indyコンポ事体バグだらけで使えません(><;
多くは望みませんが404や503が検出でき、DLする容量が随時分かるようにしたいです(全部望んでるかも、、
0703デフォルトの名無しさんNGNG
>>699
    / ̄ ̄ ̄ ̄\     
   (  人_ヽ__ノ)     
    |ミ/  ー◎-◎-)    / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
   (6     (_ _) )  <  おい、出鱈目を言うんじゃない!
  _| ∴ ノ  3 ノ    \_____________
 (__/\_____ノ_____∩___
 / (__))     ))_|__|_E) ̄´
[]_ |  |  どれみ命ヽ
|[] |  |______)
 \_(___)三三三[□]三) 
  /(_)\:::::::::::::::::::::::/  
 |Sofmap|::::::::/:::::::/ 
 (_____);;;;;/;;;;;;;/   
     (___|)_|)
0704デフォルトの名無しさんNGNG
>>697
RFC読んで自分で実装
0705デフォルトの名無しさんNGNG
荒らすつもりはないんですけど、、

なんとかこの壁を乗り越えたい〜〜
ttp://server2047.virtualave.net/mettya/updetannV1_9b5.zip
デタラメといわれたのでソース&EXEうpしますた。
使ってるコンポは、
・Indy、TRegExp、TTaskIcon、TCRCList(Wofly氏)
どれもDelphianやネトからげとしますた。
0706デフォルトの名無しさんNGNG
いや、出鱈目は>>699に言ったんだけど・・・
書いてある内容が文章として意味を成していません。
0707デフォルトの名無しさんNGNG
>706
よく見たら 誤爆ですた、、
0708デフォルトの名無しさんNGNG
>>704
HTTP 1.1日本語版RFC今見たけど(鬱
脳内エラーが発生しました
0709デフォルトの名無しさんNGNG
try
 脳.loadFromFile('HTTP 1.1日本語版RFC');
except
 脳.Text := 'もーだめぽ';
end;
0710708NGNG
脳 := DQN.Create;
try
 脳.loadFromFile('HTTP 1.1日本語版RFC');
showMessage(脳.text); // 出力:(not) Accept-Agent: ja ...逝ってよし
except
 脳.Text := 'もーだめぽ';
end;
0711ななしNGNG
>>695

> できます。
> Application.Title := 'タイトル';

それ、固定リテラルですよね。
その方法は当然試してますが、それだと、(一例ですが)INIファイルやDBから読み込んだ
リテラルを設定することはできないと思いますが・・・。

それと、IDEのメニューでタイトルを設定した場合でもそのコードが自動生成されるよう
なので、「事実上、おなじ」(?)と書いたのですが・・・。

> ユニットによっては、usesしただけで処理が走るものもあり(initializationで)。
> 不要なユニットは削除するのか吉。

感謝。m(_ _)m
(時間があるときに、よく調べてみます)
0712デフォルトの名無しさんNGNG
>>711 何を言ってるか判らないが、
 試してみたらいいじゃない。
 それから、pro以上ならソース読め

procedure TForm1.Button1Click(Sender: TObject);
begin
Application.Title := (Sender as TComponent).Name+FormatDateTime('hh:mm:ss',now);
end;
0713デフォルトの名無しさんNGNG
ああ、 VBから移ってきたんだね。じゃ優しくしなくちゃ・・

ようるするに Application.Title = xx は SetWindowText( Application.窓ハンドル, PChar(xx)); と同等って事

>(1) FindWindowって、クラス名(第1 Arg)、Window Title(第2 Arg)のどちらか片方を
   指定すればよい(もちろん、両方指定してもよい?)と思うんですが、Delphiアプリ
   の場合、クラス名には何を指定すればよいのでしょう?

これは疑問の内容がよく判らない。 Delphiで作ったアプリのクラス名が知りたいの?

0714デフォルトの名無しさんNGNG
>>713
明らかにWindow Classのことだと思われ。
0715デフォルトの名無しさんNGNG
raiseのポップアップって抑制できる方法ってありますか?

>raise ******.Create(++++); 現在こんな感じ
0716デフォルトの名無しさんNGNG
>713-714
Application.Titleに設定するのと同じことをやるなら、クラスはTApplicationでいいんじゃない?
0717デフォルトの名無しさんNGNG
>>715
IDE の中でのデバッガのポップアップの抑制?
デバッガ - 言語例外 - 追加 - 抑制したい例外のクラス名
0718デフォルトの名無しさんNGNG
>>716
DelphiってWindow ClassもTApplicationになってるの?
勉強になった。
0719713NGNG
うん 基本的にWinControlとかも含めてクラス名がそのまま WindowsClassの名前になる仕掛けみたい
 BUTTONとかもGetClassInfoしてサブクラス化してる様子
 だからフォームなんかは TForm1 とか作成した時の名前がそのままWindowClassの名前になるみたい

 ただ、自分のアプリの場合 FindWindowする必要はないので
 他人の作ったアプリだと思うんだけど・・・
0720デフォルトの名無しさんNGNG
>>719
なるほど。
0721デフォルトの名無しさんNGNG
フォームのScaled プロパティはどうしてますか。
Trueだと勝手にデザインが崩される気がするし、
Falseだと解像度やフォントサイズが違うパソコンだと
異常に大きさが変わってしまう。
皆さんの意見を聞かせてください。
0722デフォルトの名無しさんNGNG
香ばしい人がいますな。
0723デフォルトの名無しさんNGNG
>raiseのポップアップ

 raiseしたいけど、誰もキャッチしてくれないと
エラーがポップアップするから嫌って事なら
EAbort 継承を利用するといい
メッセージも不要ならAbortを使えばいい

例:
raise EAbort.Create('メッセージ');

自作の構文処理とかでエラーとかの為に深いスタックから一挙に帰りたい
とかにはこれが重宝するよ。
0724デフォルトの名無しさんNGNG
>>723
?????????
0725デフォルトの名無しさんNGNG
>>724 なにが???なの?
0726デフォルトの名無しさんNGNG
>>702
>Indyコンポ事体バグだらけで使えません(><;
バグってなんですか?
0727デフォルトの名無しさんNGNG
http://sourceforge.net/tracker/?func=browse&group_id=41862&atid=431491

しかし>>702はIndyを使いこなせてないだけに100カノッサ
0728教えてくださいNGNG
iniファイルにデータを保存してます。
任意のセクションを削除したいのですが、
どのように記述したら良いのでしょうか?
0729デフォルトの名無しさんNGNG
>>728
iniファイルに削除って概念はないよ。値を空にすることしかできない。
どうしてもファイルから消したかったら、自前でファイル操作して削除しる。
0730デフォルトの名無しさんNGNG
>>728
TIniFileを使ったことがありますか?
あるならヘルプ隅から隅まで読んだ?
0731デフォルトの名無しさんNGNG
EraseSection メソッドは,INI ファイルのセクション全体を削除します。

procedure EraseSection(const Section: String); override;

説明

EraseSection メソッドを呼び出すと,セクションとそのすべてのキー,
およびデータ値を INI ファイルから削除できます。Section は削除す
る INI ファイルのセクションを指定します。セクションが削除できない
場合には例外が発生します。
0732デフォルトの名無しさんNGNG
>>721
俺の場合、スプラッシュとか以外はScaled=Trueにしてる。
おおきいフォントにした場合とか、Anchorsを使っている場合は変になる場合が
あるけど、Alignで画面を調整すればいい感じだよ。
0733728NGNG
>729,730,731 レスありがとうございます。

TIniFileを使用してread,writeなどは普通に動作するのですが、
>>731のEraseSectionを使ってみてもセクションが削除されません。
例外も発生しません。自前でファイル操作めんどい。と思って質問しました。
ちなみに、DeleteKeyを使用してもエントリが削除されません。
環境はWinXP,Del6(Pro)です。こんな風になってるの俺だけなのかな??
0734デフォルトの名無しさんNGNG
>>733
処理の最後にUpdateFileメソッドやってる?
それより、TMemIniFileのほうが、なにかといいよ。
0735ななしNGNG
>>719

> ただ、自分のアプリの場合 FindWindowする必要はないので
> 他人の作ったアプリだと思うんだけど・・・

ふつうはそうなんですが、VBのTipsでよく出てくる、「二重起動の防止」を
やってる関係で、自アプリをFindWindowしてます。
(返値 <> 0 なら、そのWindowを最前面に表示し、後から起動した方を終了)

取りあえず、動くようになってはいるが・・・。

0736デフォルトの名無しさんNGNG
//昔漏れが作った多重起動防止用ユニット
unit SngPrcs;
interface
uses Windows;

  function IsSecondProcess(const UniqueString:String):Boolean;//二重起動チェック
  procedure ActivatePrevInst(MainFormClass:TClass);//先行プロセスのメインフォームをアクティブにする

implementation

function IsSecondProcess(const UniqueString:String):Boolean;
begin
  
  CreateMutex(NIL,False,pChar(UniqueString) );//みゅーテックスオブジェクトを作成してみる
  Result :=(GetLastError=ERROR_ALREADY_EXISTS);//ミューテックス作成エラーが起きた場合は二重起動とみなす
end;

procedure ActivatePrevInst(MainFormClass:TClass);
var
  Hwnd,HAppWnd:THandle;
begin
  Hwnd := FindWindow(pChar(String(MainFormClass.ClassName)), nil);
  if Bool(Hwnd) then
  begin
    SetForegroundWindow(Hwnd);//メインフォームをアクティブ化
    HAppWnd := GetWindowLong(Hwnd, GWL_HWNDPARENT);//アプリケーションハンドルを取得
    if HAppWnd <> 0 then Hwnd := HAppWnd;
    if IsIconic(Hwnd) then ShowWindow(Hwnd,SW_RESTORE);//アイコン状態なら元に戻す
  end;
end;
{==SAMPLE=======================================================
program Project1;
uses
 Forms,
 SngPrcs in 'SngPrcs.pas',
 wMain in 'wMain.pas' {Main};

const
  UNIQUEID='TEST APPLICATIONS ID';
begin
  if IsSecondProcess(UNIQUEID) then
  begin
    ActivatePrevInst(TMain);//←ここに指定するのはクラス型そのもを指定すること。
    Exit;
  end;
  Application.Initialize;
  Application.CreateForm(TMain, Main);
  Application.Run;
end.

==SAMPLE=======================================================}
0737デフォルトの名無しさんNGNG
>>FindWindowでは完全には防止出来ないそうだ
http://www.nifty.ne.jp/forum/fdelphi/faq/00022.htm
0738ななしNGNG
>>736
私が試行錯誤して書いたのも、ほぼおなじような内容です。
(VBからのパクリですが・・・(^_^;)
0739デフォルトの名無しさんNGNG
二重起動を見つけるのはMutexで
二重起動を見つけたら DDE でメッセージを送るようにしてる

DDEでメッセージの送り方
http://pc3.2ch.net/test/read.cgi/tech/1009080085/38

DDEでメッセージの受信は
http://www.text2music.com/mine/delphi/tips/dde.htm
つまり TDdeServerConvをポトペタするだけ
0740736NGNG
肝心なことを言うのを忘れていたYO!

この例で作ったアプリと同時にDelを使用すると、FindWindowはDelのメインウインドウを拾ってくるのです(w

まあ、漏れの場合、これを一つの会社に納めただけなので、特に気にせずこれで行った。
0741ななしNGNG
>>740

> この例で作ったアプリと同時にDelを使用すると、FindWindowはDelのメインウインドウを拾ってくるのです

FindWindow の第1引数をnilで、第2引数をApplication.Titleにすればよいと思いますが?(^_^;

(「語るならもっと勉強しなさい」とお叱りを受けそうですが・・・)
0742デフォルトの名無しさんNGNG
Canvas.TextOutだと、FontのSizeで文字の大きさが変わりますが、
横長の大きさの文字を描画するにはどうしたらよいでしょうか?
Win32API等でないでしょうか・・・
StretchBltで大きさを変えるのではなく、
文字を描画した時点で横長の文字を描画したいのですが・・・
できないでしょうか・・・
0743デフォルトの名無しさんNGNG
既にあるユニットをActiveX化するにはどうすればいいのでしょう。
ブラウザで数値を入力し、それをDelphiに渡して、
Delphi内で計算した結果を、再びブラウザに返す、
というようなことをやりたいのです。
参考になりそうなURL、文献等、
どなたかご存知でしたらお力を貸してください。
よろしくお願いします。
0744デフォルトの名無しさんNGNG
始めまして。なんか最近面白いサイトが出来たみたいですよ。
キャラクター(笑)とかがタダで持てたり、着替えさしたり・・・・
でも今だけらしいですよ入会無料なのって
詳しくは下記UELをクリックして、確かめて!!
http://www.e-mansion.co.jp/co/ac.html
0745デルファイの名無しさんNGNG
デフォルト以外のプロジェクトソースを持つプロジェクトを作れるようにしようと
OpenToolsAPIに挑戦しているのですが、
IOTAProjectCreator.NewProjectSourceでnil以外(吐きたいソースを保持したIOTAFile実装)を返すと
ルールが指定されていない旨のエラーが出ます。
これは何ですか?それと、回避方法があれば、教えていただけないでしょうか。
0746デルファイの名無しさんNGNG
>>742
APIだけでフォントハンドルを作る時のLOGFONT構造体には、
VCLが対応して無いメンバーが幾つかあって、lfWidthというのもあります。
フォントハンドルを作成し、SelectObjectなりしてやれば、可能な筈。
0747デフォルトの名無しさんNGNG
>>742
文字を回転して表示する例ですが
http://www.borland.co.jp/qanda/delphi/d0009380.html
幅を変えたいならこの例で >>746 さんの言う通り lfWidth


>>743
 それはActiveXというより、CGI化したいのではないでしょうか?
0748742NGNG
>>746>>747
ありがとうございます。無事できました。
わがままですが、文字の横幅を大きくしたり、回転したりすると、アンチエイリアスがかからなくなりますね。
かかるようにできないでしょうか?不可能ですか?
0749デフォルトの名無しさんNGNG
var
i: Int64;
〜
i := 1*1024*1024*1024;

みたいに書くとオーバーフローって怒られるんですが、何故なんでしょう?
0750デフォルトの名無しさんNGNG
>>743
JavaScript でいいじゃん。
0751743NGNG
>>747 >>750
出来ることならそうしてしまいたいんですが、
仕事の都合上どうしてもActiveXにしたいんです。
とはいっても、Delphi自体、触るのは今日で2日目。
前途多難です。
どなたかお力を貸してください。お願いします。
0752デフォルトの名無しさんNGNG
>>743
いたるところで同じ質問をしてますね。Delphi-gig の掲示板にまで
書き込みがあるのは笑えました。
Delphi-ML で回答がついています。そちらをお読みください。
0753デフォルトの名無しさんNGNG
>>749 それでオーバフローで叱られないと思うが・・・

たぶんもう一つ掛算を書き忘れたのだとして、 1000000*1000000 で説明します。

どうしてオーバフローになるかというと、即値は32bitの整数の範囲なら32bitとして解釈されます。
それで、1000000*1000000 は32bit同士の掛算としてコンパイル時に掛算してしまおうとして
32bitの範囲に入らないよ=オーバーフローになるよとエラーが出るわけです。
Delphiのコンパイラは、結果をint64に入れるのだから型はint64だろうなんて推測はしません

回避するには64bitの定数である事をどこかで教えてやればいいのです
 たとえば、 
Int64(1000000)*1000000 とか 片方だけでもint64だと教えてやります

なお、 Int64(1)*1000000*1000000  はOKだけど
1000000*1000000*Int64(1) は駄目です
0754デフォルトの名無しさんNGNG
>>749
begin
i := 1 * 1024 * 1024 * 1024;
Memo1.Lines.Add(IntToStr(i));
end;

で起きませんでしたが。別のところが悪さしてるんでない?
0755デフォルトの名無しさんNGNG
>>749
>>753
VBではFAQですね・・・。
0756743NGNG
>>752
ありがとうございます。
現在そのMLで教えていただいた個所をプリントアウト中です。
(ヘルプの[COM アプリケーションの開発]-[ActiveX コントロールの作成])
VC++で用意していたのに、客先からいきなりDelphiでやってと言われ、
そんなん知らねー、今更言うなー、やったことねーと、
ほとほと困り、だめもとで色んなところに書き込んでいました。
とりあえずこのヘルプを読んで、また出直してきます。
0757デフォルトの名無しさんNGNG
>>756
客をだませるのなら、ActiveX コントロールではなく ActiveX フォームで
アプリ丸ごと ActiveX にしてしまう。という手もあるぞ。
0758デフォルトの名無しさんNGNG
>客先からいきなりDelphiでやってと言われ
へー、客先からDelphiを指定されたという話はあまり聞かないね
その客が奇特なのかこれからそういうケースが増えるのか
0759デフォルトの名無しさんNGNG
つかぬ事をお伺いしますが、Delphi6のエディタを
上下分割又は左右分割させたいの
ですが、ひょっとして出来ないのでしょうか?

別の編集ウインドウを開くでなんとなく似たような事を
していますが便利悪いです。なんとかなりませんか?

キーマクロもあるし、行マークもあるしそこそこ使える
エディタなのに残念。
0760デフォルトの名無しさんNGNG
>>759
できません。
しかし同一のファイルに対して複数のエディタウィンドウを開くことができます。
もちろん片方を編集すると別のウィンドウの内容も更新されます。

エディタ自体タブ付ですから、プロジェクト全体を見るエディタウィンドウと
ここのファイルを眺めるウィンドウを広げておけば十分でしょう。
0761デフォルトの名無しさんNGNG
>>759
分割なんてできなくていいだろ。
そんなことより、
(sss(ssss) と入力して次の ")"を入力した時に
対応する 最初の"("を協調表示してくれた方が
随分便利
0762デフォルトの名無しさんNGNG
>>760-761

外部エディタ使え
0763デフォルトの名無しさんNGNG
>>760-761
emacs使い?
0764デフォルトの名無しさんNGNG
>>761
JBuilderあたり(C++Builderかな)で導入されてるみたい
将来的にDelphiにもつくんじゃないの。

俺はいらんが。
0765デフォルトの名無しさんNGNG
レコード/クラスビルダがホスイ・・・一方通行でええから。
0766デフォルトの名無しさんNGNG
>>765 それってどんなの?
0767ななしNGNG
コードエディタの80文字目に表示されるタテ線を移動できませんか?
0768デフォルトの名無しさんNGNG
>>767
エディタオプションの[右マージンの位置]
0769745NGNG
.....イジイジ
0770デフォルトの名無しさんNGNG
>>769
弊社のサポート窓口までご連絡下さい。
 ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ∧_∧ ニヤニヤ
 ( ・∀・)
 (    )  1インシデント\30,000ダカラナ
 | 某|  
 (__)_)
0771デフォルトの名無しさんNGNG
ウリウリ ( ´∀`)σ)Д`) >>745
0772ななしNGNG
>>768
感謝。m(_ _)m
0773760NGNG
>>763 当たりです
0774デフォルトの名無しさんNGNG
OpenToolsAPIはいいかげんソースのコメントだけじゃなくて
ちゃんとしたドキュメントつけて欲しい。いやマジで。
0775デフォルトの名無しさんNGNG
エディトボックスから値を取得する場合、例えば、数字以外はエラーにするとか、半角カナはエラーにするとかの方法はないの?

更新後か入力後に、いちいち検査するしかないのかな。
0776デフォルトの名無しさんNGNG
>>775
> 更新後か入力後に、いちいち検査するしかないのかな。

最もスマートな方法だと思いますが。
0777デフォルトの名無しさんNGNG
>>775
そもそもその入力文字をキープレスイベントで受け付けなく
すればいいんだよ。
ただ問題は実数や符号付の場合。-123はいいけど123-,12-3,-123-
とか12.3, .23.とかは入力後に検査するしかねーわな。
桁とか決まってればマスクエディットが簡単でいい。
0778デフォルトの名無しさんNGNG
OpenToolsAPIのドキュメントって何処にあるのでしょうか?
0779774 ◆MOg20d0E NGNG
($DELPHI)\source\Toolspai
これが全て。

(registerComponentなど僅かながらヘルプに解説されている
ものもあるが・・・)
0780デフォルトの名無しさんNGNG
>>775
>エディトボックスから値を取得する場合、例えば、数字以外はエラーにするとか、半角カナはエラーにするとかの方法はないの?

数が多いようなら、そういうコンポーネントを作ってしまうと楽。
DelphianWorldから探してきてもいいな。ソースつきの奴
0781デフォルトの名無しさんNGNG
PCのIPを取得するにはどうしたらよいですか?
0782デルファイの名無しさんNGNG
C++Builder6には付いてきているという噂も…→OpenToolsAPIのヘルプ

…結局誰も使ったことが無いようですね。
新規プロジェクトで毎回やっている作業を手抜きしたいってだけで\30,000は絶対嫌だ(w
( リポジトリだと、単なるフォルダコピーで、ファイル名を変えることすらできませんし )
0783774 ◆MOg20d0E NGNG
後はCode Centralに行ってソース付のエキスパートを
ダウンロードして見てみるのが一番手っ取り早いかなあ。
0784デフォルトの名無しさんNGNG
>>782
けど、ToolsAPI 使えるようになると生産性がはるかにあがるよ。
他人が使えない IDE にしてしまって、とっても困ったけど。
0785デフォルトの名無しさんNGNG
みなさんOpenToolsAPIでどんなことやってるんですか?
Experts使ってるんで間接的に恩恵受けていることはわかりますが・・・
0786デフォルトの名無しさんNGNG
>Experts
>GExperts
0787デフォルトの名無しさんNGNG
エディタカスタマイズとか
定型コメント、ソースの入力とか
0788C++使いNGNG
Delphiはclassと名前空間に相当するものはありますか?
あるならやってみようかな。
0789デフォルトの名無しさんNGNG
class は 多重継承は出来ませんがあります
 コンポーネントもクラスなので、C+;が使えるなら
 自分でコンポーネントを作れるようにすぐになるでしょう
 コンポーネントが作れると、結構楽しいです。

 多重継承出来ない代わりに、interface型があります。
 interface型はCOMと非常に相性が良いので、COMサーバ・クライアントは
 C++より簡単に書けます(理屈が判っていればより高度に、判ってなくても
 それなりに)


名前空間は C++と違って unitが名前空間を提供します
 C++と同じように unit名.関数名 というように識別出来ます

 ただし、unit名はプロジェクトで唯一でなければいけません
 またコンポーネント名もIDEに登録する場合名前空間の仕掛けを利用出来ません
 コンパイル速度の維持の為には仕方ないのでしょう
 まあ中途半端という言い方も出来ますが、バランスが良いという言い方も
 出来ます。 
0790デフォルトの名無しさんNGNG
>>788
classも名前空間(ユニット)も両方あるよ。
ただし名前空間は今となってはかなり変。
・ファイル名=名前空間になってしまう(1階層のみ)
・usesは#includeとusingを兼ねたような機能をもつ(名前空間の修飾の省略の禁止が不可能)
0791デフォルトの名無しさんNGNG
>>788
こんなソース読んで判る?
http://www.geocities.co.jp/SiliconValley-Oakland/8522/data/ugikoscr.txt

判らないならあきらめな、俺もあきらめた
0792デフォルトの名無しさんNGNG
C++からならこれが役に立つと思う

CとDelphiの対比データ
http://hp.vector.co.jp/authors/VA014436/prg_memo/delphi/c_d.html
0793デフォルトの名無しさんNGNG
複数のフォームを開いているときに、メインフォームを最小化するとすべてのフォームが
最小化されてしまいます。
また、子フォームをアクティブにすると、メインフォームも前面に出てきてしまいます。
僕の理想は、IEみたいな、ひとつのプロセスだけど、各ウィンドウが独立しているものです。
こういったことは、どのようにすればできるのでしょうか。
0794無責任だがNGNG
>>793 pro以上を持ってるなら Forms.pas の

procedure TCustomForm.WMSysCommand(var Message: TWMSysCommand);

を参照
 つまり最小化=SC_MINIMIZEが送られた来た時に
   Application.MainForm が自分なら、 Application の最小化を行っています

この動作を迂回すればよいでしょう。迂回方法はお好きな方法で
0795でもどり初心者 ◆KcG2I.hg NGNG
抽象的な質問で申し訳ないですが、
DelphiになれててVBAになれて無い人が
Delphi6Pesonalでデータベースアプリ作るのと
AccessVBAでデータベースアプリ作るのどっちが近道と思いますか?

簡単な会社の給与計算や顧客管理をしたいなぁと思ってるんですが…。
ちなみにリレーショナルはあんまり使わなくてもいい程度のDB設計です。
(顧客マスター←売上データ程度です)

AccessのVBAを勉強しようと思うんですが、メインに使ってるのがDelphiで、
言語を二つ使いこなすには頭に余裕無くて…。
クエリーとか簡単なSQLなら、むしりとった衣笠で書けるのですが。

以前はN88、DOS-N88、Quick、VB5とベーシックばかり使ってたんですが、
Delphi4を使ってからはDelphiマンセーになってしまって脳に拒否反応が…。

Delphi6Pro買うのが一番速そうだけど、零細だから予算おりなさそう(涙)

#ちなみに印刷系の会社なので、開発はあくまでおまけ
0796でもどり初心者 ◆KcG2I.hg NGNG
>>795
誤字ハケーン
×Delphi6Pesonal
○Delphi6Personal
0797デフォルトの名無しさんNGNG
>>795
一番早いのは市販パッケージを買うこと
給与計算は年末調整とかいろいろややこしいから買った方が安上がり
顧客管理は件数が少ないのならCsvとかテキストでも十分間に合う
零細なら取引先も多くないカナ?
AccessならVBA使うこともない
おもしろいのはDelphiで自分で作る方
0798デフォルトの名無しさんNGNG
残念だけど、それは AccessVBAでしょう。
もちろん D6Personalでも可な方法はあるし、そっちが速い人もいるだろうけど
そういう人はそういう質問はしないでしょう
D6Proを素直に買った方がいいと思うけどね

それと、personalを会社の仕事に使うのはどうかなあ

0799ななしNGNG
>>798

Personalでは、DBの機能(ADO等)は使用できないはず。
0800デフォルトの名無しさんNGNG
>>795
逝ってよし
Personalで作成したアプリは業務で使用出来ません。
弊社のサイトにある改訂されたライセンス文書を
読みましょう。
 ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ∧_∧
 ( ・∀・)
 (    )  ホウムカンケイノ ケイヒウワノセシタ
 | 某|  トクベツカカクノProfessionalカワセルゾ
 (__)_)
0801でもどり初心者 ◆KcG2I.hg NGNG
すばやいレスども。

ヤパーリAccessで作るのが順当ですか…。
もうちょい修行してみます。

D6per+CSVで強引に作ってしまうってのも
魅力的なんですが(w

あと、Personalのライセンス問題ですが、
去年の8月にサポートに直接メールして聞きました。

転載しちゃいます。

--------自分がボーランドに送ったメール
貴社のサイトに「Delphi 6 Personalは商用・業務目的のアプリケーショ
ン開発にはご利用いただけません」とかかれていますが、Delphi 6
Personalで作成したプログラムをインターネット上で無償で公開するの
はOKなんでしょうか?
また、インターネットでの公開がOKの場合そのプログラムを業務に利
用するのはOKなんでしょうか?

--------ボーランドからの返事
Delphi 6 Personal で開発したアプリケーションによって報酬を得るよう
な場合には使用できません。フリーソフトの開発は可能ですが、シェア
ウェアの開発はできません。開発したアプリケーションで、その開発自体
で報酬を得ることが無い場合には、開発したアプリケーションを社内業務
でご使用いただけます。
0802デフォルトの名無しさんNGNG
>>801
実はライセンスが改訂されているんだな。
 ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ∧_∧ ニヤニヤ
 ( ・∀・)
 (    )  
 | 某|  イチバンシタノ文ナ
 (__)_)

本使用許諾契約の条項に従うことを条件として、お客様は本使用許諾契約に基づき本製品を使用し、個人
使用のみを目的とした著作物を作成する権利を行使することができます。お客様は、本製品または著作物
を、商用、業務用、政府や企業での使用を目的として(以下「商用目的」)、使用することはできません。
本契約の他の条項に従うことを条件として、お客様はご自身の作成した著作物を他人に配布することがで
きますが、直接、間接を問わず、配布や著作物の使用に対する報酬を受け取ることはできません。また、
お客様が他人に配布した著作物は、商用目的で使用してはなりません。
0803デフォルトの名無しさんNGNG
>D6per+CSVで強引に作ってしまうってのも

もし、それをフリーソフトとして出すような事を考えてるならPQCompoを使うといい
 ttp://www.est.hi-ho.ne.jp/takeshi_kanno/

 ただし、DBGridとか便利機能は一切なしだから
0804でもどり初心者 ◆KcG2I.hg NGNG
>>803
そのページまだぱっと見ただけですが、
すごく役立ちそうです。サンクス。

>>802
社内で完結するテキストの処理とか
さっき自分が話題に出した顧客管理とかは
ボーランドが言う所の商用目的になるのか
ならないのかが論点と思います。

で、6のPersonalが出たての時、自分も
「お客様は、本製品または著作物 を、商用、
業務用、政府や企業での使用を目的として
(以下「商用目的」)、使用することはできま
せん。 」
の文章の解釈が気になって、ボーランドに
確認を取りました。(>>801のメール)
おそらく、その部分の規約は大幅改定は
無いと思いますが。

つーわけで、自分はボーランドからのメー
ル(>>801)を根拠に、売り物にしないプロ
グラムならOKと解釈しています。

#えーと、Personalのライセンスの範囲の問
#題ってよく話題にあがる?
#もいっかいボーランドにメールしてみよかな
0805743NGNG
743=756です。
ヘルプ見てもよくわからずに泣きながら戻ってきました。

>>757
> ActiveX フォームでアプリ丸ごと ActiveX にしてしまう。
ヒントありがとうございます。それってどうやるんですか?
まだDelphi3日目で、何が何やらさっぱりです。

>>758
> その客が奇特なのかこれからそういうケースが増えるのか
多分、前者です。
ただ、今後こういうケースが増えても大丈夫なように
これをいい機会にDelphi習得したいです。自信ないけど。

ていうか、そもそも既存のユニットから
ActiveXコントロールって作れるものなんですか。
何も知らず、何もわからないまま手探りでやっていて、
急に不安になってきました…。
0806デフォルトの名無しさんNGNG
>>805 既存のユニットって何?
0807743NGNG
>>806
ええと、その「既存のユニット」の内容ですが、
通信系の処理をやるためにTFormでクラスを作ってます。
これをActiveX化って出来るんですか?
0808デフォルトの名無しさんNGNG
>>807
 TForm継承なら、
IDEにコンポーネントとして登録(つまり Register 手続きを追加)
してから ActiveXコントロールにすれば
0809デフォルトの名無しさんNGNG
TForm継承だと出来ないんじゃない?よく知らないけど
0810Delphi3日目(743)NGNG
>>808
タメになりそうなレス、ありがとうございます!!
でも、実はどうやったらいいのかわかりません。
もしよろしければ、もうすこし手順を詳しく教えていただけないでしょうか。
よろしくお願いします。
0811Delphi3日目(743)NGNG
>>809
うわ、ほんとですか。どうしよー。
そこんとこ詳しく知ってる人、どなたかいませんか。
0812808NGNG
やってみた。
1、既存のフォームの名前を適当につける Form1とかのままだと名前が喧嘩するみたい
  例としてフォーム名をTestForm  クラス名をTTestFormになったとする
2、var TestForm:TTestFormのような部分を消去する
3、 procedure Register ; を設計部に追加
4、実装部に
procedure Register;
begin
RegisterComponents('Samples', [TTestForm]);
end;
5、コンポーネントのインストールで上記フォームをインストールする
6、ActiveXウイザードでVCLクラス名を TTestFormにする
    後は適当に
7、試験する。
    実行->ActiveXサーバの登録して試験するとか サーバー用意済なら
    プロジェクト->Web配布で試験するとか

結果: マズイ

 動くけど、やっぱりフォームとして動く。 意味は試してみれば判る。

>>525 のように 無理やり WS_CHILDすればいけるかも。 自分で試してみて
0813Delphi3日目(743)NGNG
>>812
808さん、ありがとう。めっちゃいい人やー。助かります。
まだ試していないので、また試してから戻ってきます。
本当にありがとう。
0814デフォルトの名無しさんNGNG
どうでも良さそうなことかもしれぬが、
Pro以上使っているヤシで、全部のコンポーネント登録したまま使っているヤシいる?
0815Delphi3日目(743)NGNG
>>812
試してきました。ばっちりです。ありがとうございました。
おっしゃるようにWS_CHILDすると、フォームとして動かなくなりました。
本当にありがとう。さあ、今からこれを仕事に活かさなくっちゃ。
0816808NGNG
>>815
 3日目で あのヒントでそこまで出来るんだから結構やるね。
それなら楽勝だよ
0817Delphi3日目(743)NGNG
すいません、また質問させてください。
今やってる仕事で、Delphiで作ったActiveXと、
Delphiで作った別のプログラムとでやりとりをさせたいんですが、
ActiveXから、別のプログラム中の
TFormで出来た関数を呼び出したい時はどうすればいいんでしょう。
どなたかご存知でしたらお力を貸してください。お願いします。
0818808NGNG
・・・なんじゃそりゃ?

別のプログラムっていうのは、別のプロセスでって事?
TFormで出来た関数ってメソッドの事?
0819デフォルトの名無しさんNGNG
>>817 初めて3日目で、妙に抽象的に書くと他人には何のことやらワケワカです

もっと具体的にやりたい事を書いてみたら?

既に 単体のアプリとして通信(ってTCP/IP)出来てるアプリがあって、それを
ActiveXにしたいんだよね?
0820デフォルトの名無しさんNGNG
>>814
よく使うやつと、自作のコンポ集以外は「その他」ってページを作って集めてる。
使いそうにないコンポを消してしまうとひょっと使う事があった時に便利悪いから。
0821デフォルトの名無しさんNGNG
>>794
ありがとうございます。
がmmmばってみます。
0822デフォルトの名無しさんNGNG
>>817
メソッドポインタを渡してコールバックさせるか、
アプリケーションにオートメーションオブジェクトを仕込む。
0823デフォルトの名無しさんNGNG
DLL化した方が楽だろ。
0824デフォルトの名無しさんNGNG
DLLで解決するならDelphiのソースあるなら usesした方が楽だろうに
0825Delphi4日目(743)NGNG
>>816
808さんがわかりやすく説明してくださったおかげです。
ありがとうございました。

>>818, >>819
すいません、正直私自身よくわからないままやっているので
あいまいな言い方になってしまいました。

今やっている仕事は、とある機械を操作するためのプログラムです。
操作はブラウザ上で行うため、作ったものはActiveX化します。
機械はDelphiで制御されているので
(その機械を作った人の得意な言語がDelphiだったから)
操作側のプログラム(ActiveX)とその機械とのやりとりは
全部Delphiでやってくれ、みたいな感じの仕事です。
そして、新人の私は調べ物+サンプル作りが主な仕事です。
プロジェクトの全体像を知ることのないまま。

ActiveXとその機械とで情報や命令のやりとりをしたいみたい。
動けーとか、止まれーとか。
これをやってくれーとかいう命令や、その結果を受け取ったりとか。
そして、そうするにはActiveXで、
機械の方の関数(メソッド?)を呼び出す必要があるらしく、
でもそれってどうやるのか誰もわからないので困ってます。

こんな説明じゃわかんないですよね。うーん。
これ調べてって言った先輩が午前中は休みなので、
午後に詳しく聞いてから、また戻ってきます…。
0826デフォルトの名無しさんNGNG
>>825
 操作をブラウザからする為に ActiveX化したってのが一番よく判らん
 ブラウザ上のActiveXなら、自動的に他のパソコンと通信作出来るとでも勘違いしてるんじゃないか?
0827デフォルトの名無しさんNGNG
えとさ、
会社で使うなら、Personal は使ってはいけません。
Enterprise Trial は使用期限があります。

ttp://www.delphigig.com/board/aspBoardDetail.asp?Id=229

いたるところで聞きまくっているけど、いいかげんにしろ。
0828デフォルトの名無しさんNGNG
DCOMならActiveXを遠隔操作出来るからあたりで勘違いしてるんだろな

機械の遠隔操作ならソケット直接で処理した方が簡単だろう
0829デフォルトの名無しさんNGNG
取りあえず、COMとかOLEとかについて勉強しなされ。
0830デフォルトの名無しさんNGNG
ついでに CORBA も・・・ だけど ソケット直が結局楽だと思うけどね
0831デフォルトの名無しさんNGNG
SOAPというのもあるよ
参考:
ttp://www.wwlnk.com/boheme/delphi/techdoc/
ttp://homepage1.nifty.com/project21/delphi/tips_soap.htm


0832ななしNGNG
>>831
Simple Object Access Protocol
でしたっけ?

「特殊なお風呂屋さん」を連想してしまいました・・・。(鬱
0833デフォルトの名無しさんNGNG
Delphiにダイアグラムってのがありますけど、あれ使ってる人いる?
これって、単にドキュメント作成って言うか、コメントを図形式で書けるってなだけなんでしょ?

こんなの付けるより、雛型を設定可能な仕様書の方が使えそうだと思うけど、
ついでに、簡単にhtml吐けるようにするとかしてくれたらいいのになぁ、
それとも、OpenToolsAPIを詳しく知ってるとアドオン的なプログラムができるのだろうか・・・。
0834デフォルトの名無しさんNGNG
>雛型を設定可能な仕様書
いみふめーん
0835デフォルトの名無しさんNGNG
>>834
ドキュメントの形式を統一するって意味です。
0836デフォルトの名無しさんNGNG
>ドキュメントの形式を統一
なぜ統一する必要があるのかふめーん
0837デフォルトの名無しさんNGNG
統一はいいことだよ
南北統一マンセーってなもんだ
0838デフォルトの名無しさんNGNG
おまえら、ちゃかすんじゃねーよ!
統一教会もお忘れなくってなもんだ
0839デフォルトの名無しさんNGNG
UMLに統一しなさい。
0840デフォルトの名無しさんNGNG
仕様書がないとプログラム書けないようじゃ素人だね。
0841デフォルトの名無しさんNGNG
要求仕様というか目的を固めないと、ゴールが見えないよ・・・
って我ながら意味ふめ〜ん。

で、仕様書だけど!Doc, D/Scribe, DocManなんかがありまふ。
どれもリバースエンジニアリングだけどね。
ttp://www.vector.co.jp/vpack/filearea/win/prog/delphi/index.html
0842デフォルトの名無しさんNGNG
こんにちは
質問でし!

非表示のフォームBを表示中のフォームAからメソッドshowで表示させます
フォームBではイベントshow発生時に

FormB.Position := poScreenCenter;

と記述してフォームBを画面の中央に表示させようとしています
フォームB設計時のPositionプロパティの値もpoScreenCenterです

一度目の表示は問題ないのですが、フォームBを中央から別の場所に
マウスで移動させて、Hideにして、再度フォームAからshowさせると、
上記記述の部分でエラーが発生してしまいます

単純に表示するときは絶対画面の真中なの!
ということがしたいのですが。。。
0843デフォルトの名無しさんNGNG
ああ、JavaDocみたいなもの?
かなり意味ふめーんだよ >833
0844デフォルトの名無しさんNGNG
>>842
FormA の FormB.Show の次の行に
中央寄せするコードかけば?
0845842NGNG
>>844
うわぁぁぁい
ありがとおございます
できました
多謝でし!感謝しるでし!

でも どうしてOnShow内ぢゃできないんだろ。。。
0846Delphi4日目(743)NGNG
>>822
ありがとうございます。多分、それです。
会社の先輩にここ見てもらったら、そのコールバックが
一番やりたいことに近いみたいだって言ってました。

ただ、Delphiで作成したもの同士でのコールバック関数を使った例が、
探してもなかなか見つからない上に、
見つかってもAPPとDLL間のやりとりの例だったりしました。
(ttp://www2.biglobe.ne.jp/~sakai/callback.htm)
DLLは作成したくないので、
コールバックを頼むのはDLLではなく、EXEにしたいんですが、
どうすればいいのかわかりません。

参考になりそうな情報(文献、URL等)を
もしご存知の方がいらっしゃるなら、
どうか助けていただけないでしょうか。
0847デフォルトの名無しさんNGNG
>>841
C++やJavaのDoxygenみたいに参照関係やクラス関係を出力できるフリーのソフト無いのかね。
0848デフォルトの名無しさんNGNG
>>846
Win32の下では そのExportされた関数を外部から呼び出しても
別のスレッド・メモリ空間で実行されるだけです。

ブラウザ上で実行されるActiveXはブラウザ上のプロセスとなっています。
ですからプロセス間通信を使わなければいけません。

プロセス間通信には、
1、ファイル マッピング(共有メモリ方式)
2、名前なし (匿名) パイプ
3、名前付きパイプ (Win9xでは使えない)
4、メールスロット
5、DDE
6、OLE
7、RPC
などがあります

この中で そのコールバックのように別のプロセスの関数を呼び出すのに一番近いのはRPCです
RPCであれば別のパソコン上で動くプロセスとも通信出来ます(というかそれが目的ですが)
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/rpc/pr-func1_6v03.asp
0849デフォルトの名無しさんNGNG
ここのサンプルを実行させてソースコードを
調べてみれば?
$(Delphi)\Demos\Activex\Oleauto\Autoserv
0850デフォルトの名無しさんNGNG
>814
Ent版つかってるけどコンポーネントはそのままだよ.
もちろん良く使う奴を左に寄せてはいるけど.


0851デフォルトの名無しさんNGNG
WAVEファイルを、EXEファイル内に埋め込めますか?
もしできるなら、そのときのWAVE参照方法を教えてください(sndPlaySoundとか)
0852デフォルトの名無しさんNGNG
>>851
リソース。
後は検索。
0853デフォルトの名無しさんNGNG
DelphiってCみたいにデフォルト引数指定できないの??
こんな感じにしたいのだが・・・

void hoge(String str = Null); ← C
procedure hoge(str:String); ← Delphi
0854デフォルトの名無しさんNGNG
procedure hoge(str:String = '');
0855デフォルトの名無しさんNGNG
>>854
できたー ありがと。
0856しんNGNG
チャットで他の全員落とすにはどうすればいいんでしょうか?
0857デフォルトの名無しさんNGNG
しん先生 が素で書けば皆ひいていつも落ちてますよ・・・てなレスをよこせとおっしゃるのですか? しん先生
0858IDEの小枝NGNG
MLの「IDEの小技」に因んで、
こっちでは「IDEの小枝」をやろうぜ!
MLに負けない奴をどーぞ
0859デフォルトの名無しさんNGNG
>850
はいはい。次の質問どうぞ。
0860IDEの小技NGNG
>>858 んじゃま1つ

[Ctl]+[SPACE] で自動補完が任意にだせる
0861デフォルトの名無しさんNGNG
(´-`).。oO(常識だろ、それ‥‥)
0862桂小枝NGNG
>>860
小枝だろ。

interface部とimplementation部間の移動は、
[Ctrl]+[SHIFT]+[↓]
[Ctrl]+[SHIFT]+[↑]で移動で可能
0863860NGNG
>>861 やぱし常識か
0864デフォルトの名無しさんNGNG
>854
ちょっと賢くなった。
0865デフォルトの名無しさんNGNG
コード補完。
普通のソースコードの部分じゃなくて、クラス定義の内側( = class() から end までの部分)
で Ctrl-Space を押すと親クラスから継承したメソッドが表示される。

で、Delphi6 からはマウスで複数選択できる。ちゃんと Public/Protect を認識して
分けてくれるし。
0866デフォルトの名無しさんNGNG
>>865
をぉすばらしい!
0867デフォルトの名無しさんNGNG
IDEの小枝は某 ML には転載しないでください
よろしく。
連中(の一部)は 2ch をよく思っていないので、こんなネタが存在すると
気づくと、また荒らしにきます。
0868デフォルトの名無しさんNGNG
え?MLの大半はここもかねてると思うんだけど?
0869デフォルトの名無しさんNGNG
http://www.borland.co.jp/delphi/devsupport/d6issues.html
>Delphi 6 の動作が Windows XP 上で不安定になる場合、
Delphi 6 を「互換モード」で実行してください。
互換モードを設定するためには、まず、エクスプローラーで
Delphi 6 をインストールしたディレクトリの bin\delphi32.exe
(例: C:\Program Files\Borland\Delphi6\Bin\delphi32.exe)をマウスで右クリックし、
ポップアップメニューから[プロパティ(R)]を選んで、プロパティ設定ダイアログを呼び出します。
次に、[互換性]のタブをクリックして[互換モードでこのプログラムを実行する]をチェックして、適当なOSを選択してください。
※Delphi 6 は、Windows XP 上での包括的な動作検証は行なわれておりません。ご了承ください。
0870Delphi好きッ ◆0YAPhEjk NGNG
他システム上で動作するDLLを作成し、そのDLL内でParadoxデータベースを利用して
います。
で、バックアップ機能を付加しようと思い、単にParadoxのファイル(dbファイルそ
の他)と、ホストプログラムが利用するデータをコピーしました。(copyfileを使用)
そのコピーデータはきちんと取れたのです。ところが、復元機能を付加して、バック
アップフォルダからファイルをコピーしたのですけど、ファイルのコピーはされてい
るのに、データベースのレコードが更新されていません。(旧データが残っている)
何故でしょうか。
一応、復元部分は以下のような処理を行っております。

// データベースを一旦閉じます。
DBModule.MainDataBase.Close;

try
 // ホストプログラムデータをコピーします。
 i:=findfirst(BackupFolder+'Dat\*.dat',faAnyFile,sr);
 while i=0 do begin
  copyfile(pchar(BackupFolder+'Dat\'+sr.Name),pchar(DataSystem.DatFolder+sr.Name),false);
  i:=findnext(sr);
 end;
 findclose(sr);

 // データベースファイルをコピーします。
 i:=findfirst(BackupFolder+'DataBase\*.*',faAnyFile,sr);
 while i=0 do begin
  copyfile(pchar(BackupFolder+'DataBase\'+sr.Name),
       pchar(DataSystem.DBFolder+sr.Name), false);
  i:=findnext(sr);
 end;
 findclose(sr);

この後、ホストプログラムはシャットダウンされます。(そうでないと、ホストデー
タの更新が効かないので)
もしかして、キャッシュが残ったりしているのかなぁとか思っているのですが。何か
原因等考えられましたらお願いします。
0871デフォルトの名無しさんNGNG
var a, b: array of Byte;
SetLength(a, size);
b := a;
SetLength(a, newSize);

var c, d: PByteArray;
GetMem(c, size);
d := c;
ReallocMem(c, newSize);

ここで、「a = b」と「c = d」はそれぞれ必ず true を返しますか?
0872Delphi好きッ ◆0YAPhEjk NGNG
>>871
そうですなぁ。監視式を利用して、
pointer(a)とpointer(b)
を見られては如何でしょうか。
0873デフォルトの名無しさんNGNG
WindowsXPからLinux上のMySQLに接続したいのですが、いまいちやり方がわかりません。
myODBCをインストールしてコンソールからmySQLに接続することはできました。
SQLConnectionを使用して接続するのだろう、とは思うのですがうまくいかないのです。
dllの起動に失敗しましたと警告されます。
何かヒントをいただけると幸いです。よろしくお願いします。
0874デフォルトの名無しさんNGNG
ハッシュ(連想配列)ってDelphiで使えるの?
もし、使えるならどうやって使うの?
0875873NGNG
単純にそのdllがsystem32に無いだけでした…トホホ
0876デフォルトの名無しさんNGNG
>>874
Stringsのサブクラス
ヘルプを読むの
0877874NGNG
ちなみにDelphi5です・・・
TStringHashやTBuckutList,TObjectBucketListは無いです・・・
0878デフォルトの名無しさんNGNG
TStringListでも使えますよ。
いやなら自分で実装するとか。
0879デフォルトの名無しさんNGNG
アクションゲームを作ろうと思うのですが、ちょっと困ったことが。。。
例えば、→が押されたら■(label)のleftプロパティをプラスしていくということがしたいのですが、
ウィンドウがかなりちらついてしまいます。どうすればいいんですか?
0880デフォルトの名無しさんNGNG
Label1.DoubleBuffered := True
0881デフォルトの名無しさんNGNG
しかしWinDiff知らない厨房がいたのには驚いたね。
奴らいったい今までどうやって開発やってたのか
小一時間問い詰めたい気分で一杯です。
0882デフォルトの名無しさんNGNG
PS2のかまいたちの夜2(DVD)のFAD形式のバイナルファイルを解析して
文章を見ることは出来るのですが画像が見ることが出来ません。
どなたかわかる人いますか?今、大変困っています。
http://game.2ch.net/test/read.cgi/gameover/1028142800/
↑の人たちもよくわからないみたいで。・。。
0883デフォルトの名無しさんNGNG
>>882
スレ違い
http://pc3.2ch.net/test/read.cgi/tech/1027226769/l50
0884デフォルトの名無しさんNGNG
>>873
BDEつかってODBC経由せつぞくですな。
0885884NGNG
途中で送信してしまったよ。
MySQLより PostgreSQL+PQCompoの方がいいと書きたかった。
0886デフォルトの名無しさんNGNG
Microsoft Office XP Web Service Toolkit 2.0をインストールするとDelphiで
作ったWebサービスが動かなくなってしまったよ。
ブラウザ上でWSDLを見ようとしたら、

「エラー : この名前に文字 ':' を含むことはできません: -->:<--n1/EOleException」

と表示されますた。

どうもMSXMLかMSSOAPのバージョンが上がってしまうのが原因らしいが、ネームス
ペース修飾の":"が使えないってのはXMLのパーサとして完全に失格。
MS逝ってよし。
0887デフォルトの名無しさんNGNG
image1に"a.bmp"を読み込んでそれから1秒後に"b.bmp"にしたいんですけど、
どうすればできるんでしょうか?
0888887NGNG
あげときます
0889889NGNG
procedure TForm1.Button1Click(Sender: TObject);
begin
 Image1.Picture.LoadFromFile('c:\a.bmp');
 Sleep(1000);
 Image1.Picture.SaveToFile('c:\a.bmp');
end;

0890889NGNG
>>889訂正
 Image1.Picture.SaveToFile('c:\b.bmp');
0891デフォルトの名無しさんNGNG
>>890
それだと 'c:\a.bmp' が残るんじゃないの。
0892889NGNG
>>891
残っちゃいけないなんて書いてないだろ!
0893デフォルトの名無しさんNGNG
アニメーションさせたいってことじゃないの?
0894889NGNG
>>893
うっぜええええええええええええええええええええええええ
アニメーションのアの字も書いてないだろ!!!!!!!
分かった!分かったよ!!!!
887=891=893なんだろ?
0895デフォルトの名無しさんNGNG
>>894
はいはい、ageるな。
0896デフォルトの名無しさんNGNG
>>894
プッ
0897デフォルトの名無しさんNGNG
>892
procedure TForm1.Button1Click(Sender: TObject);
begin
 Image1.Picture.LoadFromFile('c:\a.bmp');
 Sleep(1000);
 Image1.Picture.LoadFromFile('c:\b.bmp');
end;

ってことじゃないの?
0898デフォルトの名無しさんNGNG
まあ、おまえら気持ちはわかるが
低脳厨房はぐっと我慢して放置してくれ。逆恨みして荒らされたらたまらん。
0899Del初心者厨NGNG
質問です。
文字を表示して、一定時間(5秒とか)ウェイトを持たせて
一定時間たったら次の文字を表示とかはできるのでしょうか?
ちなみに、ウェイト中は操作が一切できないようにしたいです。
0900デフォルトの名無しさんNGNG
>>899
(´-`)。o ○ (「出来る」「出来ない」ってレスもらってウレシイか?)
0901デフォルトの名無しさんNGNG
出来ます。
0902デフォルトの名無しさんNGNG
>899
できる。
で、どこに表示したいんだ?
0903Del初心者厨NGNG
>900
いや...言葉不足でした。どうすればできるのか教えてください。
0904Del初心者厨NGNG
>902
ラベルに表示したいです。
0905デフォルトの名無しさんNGNG
>903

Label1.Caption := 'A';
Sleep(5000);
Label1.Caption := Label1.Caption + 'B';
0906デフォルトの名無しさんNGNG
>>905
そーゆーことかよッ!?(by三村)
0907905NGNG
>906
え。違うの?
オレハナニヲマチガエタンダラウ...
0908Del初心者厨NGNG
>905
ホント厨で申し訳ないんですけど、その命令はどこに入れればいいんですか?
FormCreateに入れてデバックすると5秒後に起動されるんです・・
0909sageNGNG
(´-`)。o ○ (厨というか…)
0910905NGNG
>908
それはいつ実行したいのかな?
0911Del初心者厨NGNG
自己解決しました!今日始めたばっかだったんで。
ご迷惑をおかけしました。
0912デフォルトの名無しさんNGNG
久々に笑えるやつを見た(w
0913デフォルトの名無しさんNGNG
>905
でも、これって確か実行している間は終了もできないんだろ?
いいのか、それ教えて(ワラ
0914歌丸NGNG
一度でいいから見てみたい 自己解決したソースUPするところ。
歌丸です。
0915905NGNG
>913
だって、Application.ProcessMessages出して、自前でフォームをDisableにして、フラグ立てて、キャンセルボタン押したらフラグセットして...とか説明するの面倒くさい。
ほっといても5秒たてば終わるんだし...
Wait時間を可変でっていう話なら考えるけど。
0916助けてDel兄さんNGNG
TreeviewにImageListのImageを割り当てて
選択してないときはImageが表示されるんですが、
選択するとImageが消えてしまいます。
消えないようにするにはどうすればいいですか?

0917デフォルトの名無しさんNGNG
>>916
SelectedIndex
0918デフォルトの名無しさんNGNG
画面を初期化(クリア)したいのですが、どうすればいいでしょうか?

たとえば、最初に白いフォームにボタンが10個。
3秒したら初期化(クリア)して青いフォームにラベル5個。
また3秒したら白いフォームにボタンが10個。
という感じにしたいんです
0919助けてDel兄さんNGNG
>>917
一発で出来ました
ありがとうDel兄さん
0920デフォルトの名無しさんNGNG
が… が… 画面…
0921デフォルトの名無しさんNGNG
>>918

918.Terminate;
0922デフォルトの名無しさんNGNG
>918
別のフォームにして、表示/非表示を切り替えるのが吉。
0923918NGNG
フォームですた(w
0924889NGNG
>>918
Form1.Color := clWhite;
Label1.Visible := True;・・・Label10.Visible := True;
Sleep(3000);
Form1.Color := clBlue;
Label1.Visible := False;・・・Label5.Visible := False;
0925デフォルトの名無しさんNGNG
>920
いちいち突っ込むなよ・・
0926922NGNG
まあ、フォームを「画面」と呼ぶこともあるわな。仕様書とか。
汎用機から流れた人(漏れもそうだが)は特に。
0927デフォルトの名無しさんNGNG
>>925
お前がなー。
0928デフォルトの名無しさんNGNG
COBOLerは MDIとSDI、モーダルとモードレスの違いが分からない。
0929918NGNG
わかりました。どうもありがとうございますた。
0930889NGNG
俺は天才
0931デフォルトの名無しさんNGNG
オレはモーダルとモータルコンバットの違いが分からない。
0932デフォルトの名無しさんNGNG
>928
CICSはSDIでモーダルしかありませんが何か?
0933デフォルトの名無しさんNGNG
>930
>924のコードって、デザインが非常に鬱陶しいような気がするんだが...
0934デフォルトの名無しさんNGNG
>933
俺も思った...
0935デフォルトの名無しさんNGNG
お前ら!最小化したときにタスクバーで表示されるタイトルをファイル名じゃ
なくするやり方を教えてください!
0936デフォルトの名無しさんNGNG
(´-`)。o ○ (どんなレスが付くのか楽しみだ…)
0937デフォルトの名無しさんNGNG
>935
(´-`)。o ○ (根性..)
0938デフォルトの名無しさんNGNG
(´-`)。o ○ (レスが付かない…もう寝よう)
0939922NGNG
しゃーないなー
Delphiのメニューで、[プロジェクト]→[オプション]で[プロジェクト オプション]を表示し、[アプリケーション]タブの[アプリケーションの設定][タイトル]に表示したい文字列を入れれ。

何か今日はこの手の質問多くないか?
「モナーの *やさしい* Delphi質問スレ Ver.8 」
http://pc3.2ch.net/test/read.cgi/tech/1027873869/l50
へご案内してもいい?
0940デフォルトの名無しさんNGNG
つまりさあ、暇な2ちゃんねらーは中国人より単価が
安上がりって事さ。
0941922NGNG
>940
暇とは何だよ(暇だけど)
もう寝る!!
0942デフォルトの名無しさんNGNG
       v
      (゚ω゚) <そろそろ期待してる?
     /(  )\
      /'\
0943デフォルトの名無しさんNGNG
質問です。

ファイルの属性を一気に変更したいんですがどうしたら良いのか教えて下さい。

具体的には

hoge\ディレクトリ以下のファイル全てを「読みとり専用」を外したいんです。(サブディレクトリ含む)

FileGetAttrと言うのがあるらしいですがこれはファイル一個一個指定しなくてはいけないらしいです。
一括で変更できる方法がありましたら教えて下さい。
0944デフォルトの名無しさんNGNG
(´-`).。oO(ファイル操作は普通、ひとつづつやるだろ。)
0945デフォルトの名無しさんNGNG
>>874
Hashぐらい自力で実装汁!!

>>943
ループでも回して一括で処理汁!!
0946デフォルトの名無しさんNGNG
>>943
(´-`).。oO(ノイマン型CPUで複数一括処理は無理だろ)
0947デフォルトの名無しさんNGNG
>>874
TStrings.Valuesってことじゃなくて?
0948デフォルトの名無しさんNGNG
>946
隠照のMPUは複数命令を同時実行します。と言ってみるテスト。
0949デフォルトの名無しさんNGNG
>>948
HDコントロール用CPUは未対応とか言い返してみたりする。
というか、パイプラインなんてすっかり忘れてたよ(恥)
0950デフォルトの名無しさんNGNG
さんくす
0951948NGNG
>949
たとえHDDコントローラが対応しても、アームは1本という罠。
0952デフォルトの名無しさんNGNG
Del6のTStringsはDel3のTStringsより明らかに重い。
0953デフォルトの名無しさんNGNG
>>952
抽象クラスの実行速度なんぞ良くはかれたな。感動。
0954デフォルトの名無しさんNGNG
ソースが思いんだよ!タコ
0955デフォルトの名無しさんNGNG
>>954

>>953
0956デフォルトの名無しさんNGNG
抽象クラスにはソースファイル無いの?
0957デフォルトの名無しさんNGNG
>>956
な〜に言ってんだか♪
0958デフォルトの名無しさんNGNG
褒められた!
0959デフォルトの名無しさんNGNG
http://www.google.co.jp/search?sourceid=navclient&hl=ja&q=cache:http%3A%2F%2Ffukunm12%2Enucl%2Ekyushu%2Du%2Eac%2Ejp%2F%7Eakasaka%2Fmemo%2Fdelphi%2Frightbutton%2Ehtml
で、NewProcをFormのメンバーに置くと、
「変数が必要です」
と言われてコンパイルできません。どうすればイイでしょうか?
0960デフォルトの名無しさんNGNG
>>959 こんなふうにして下さい
unit Unit1;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;

type TForm1 = class(TForm)
  Button1: TButton;
  procedure Button1Click(Sender: TObject);
  procedure FormCreate(Sender: TObject);
 private
  procedure NewButtonProc(var Msg: TMessage);
 public
  OldButtonProc:TWndMethod;
 end;

var Form1: TForm1;

implementation

{$R *.DFM}
procedure TForm1.NewButtonProc( var Msg: TMessage);
begin
 with Msg do
  case Msg of
  WM_RBUTTONDOWN: Msg := WM_LBUTTONDOWN;
  WM_RBUTTONUP:  Msg := WM_LBUTTONUP;
  end;
  OldButtonProc(Msg);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin   ShowMessage( 'こんにちは' );
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 OldButtonProc:= Button1.WindowProc;
  Button1.WindowProc:= NewButtonProc;
end;

end.
0961デフォルトの名無しさんNGNG
>>960
 なるほど。
しかし、FormのメンバーにNewProcを置くと、SetWindowLongは使えないと言う事ですか・・・。
これは何故ですか?
0962デフォルトの名無しさんNGNG
>>961

なんのこと?
0963デフォルトの名無しさんNGNG
>>961 SetWindowLongはメソッドではなく手続きしか登録出来ないからです
 ポインタが1つしか渡せないから、メソッドポインタを渡しても
 どのオブジェクトかを識別出来ません。

 MakeObjectInstance を使うとメソッドを手続きに仲介するコードを作らせる事が出来ますが・・・

詳しい仕掛けはここ参考にするといいでしょう
ttp://www.asahi-net.or.jp/~HA3T-NKMR/vcl3-1.htm


が、VCLを使うなら WindowProcプロパティを操作する方が簡単ですからそうした方がいいです
0964デフォルトの名無しさんNGNG
>>963
 オブジェクトが別の場合は別のアドレス空間になるのですか?
てっきり一つのプロセス内なら、アドレスは全て一つで表せるのかと・・・。
 うーん言いたい事がうまく伝わって無いかもしれない罠。
0965デフォルトの名無しさんNGNG
>オブジェクトが別の場合は別のアドレス空間になるのですか?
とりあえずこの文章はおかしい
0966デフォルトの名無しさんNGNG
>>964
メソッドポインタは普通のポインタと違うんだよ。
0967デフォルトの名無しさんNGNG
>>966
指してるものは違えどポインタはポインタだろう。
0968デフォルトの名無しさんNGNG
OAPSというのもあるよ
参考:
http://www.uic.edu/depts/psch/aps/
http://www.pcaphl.org/oaps.html
0969デフォルトの名無しさんNGNG
どなたか、ModelMaker という UML を使われている方、いらっしゃいますか?
感触を知りたいのですが。
0970デフォルトの名無しさんNGNG
>>964
 オブジェクトは同じアドレス空間にあります。
 しかし、メソッドポインタは、命令コードと データ領域の2つを示さなければいけません。

FormのメンバーにNewProcをおくと、NewProgは手続きではなくメソッドになります。
メソッドには隠れた引数があり、それはどのオブジェクトインスタンスであるかを示すものです
具体的にForm1である事を教える必要があります。

それから >>959の例だと、 実際に buttonをホントのサブクラス=継承して動作を書き換える方が
簡単だと思います。
0971デフォルトの名無しさんNGNG
>>970
へぇ、C++みたいに隠されたthisポインタみたいなのがあるんだ。
0972デフォルトの名無しさんNGNG
Quick Report
0973デフォルトの名無しさんNGNG
Quick Reportのソースでは、パラメータクエリは使えないんですか?
直接SQLで記述するとうまくプレビュできるのですが、パラメータクエリにすると、真っ黒(っていうか灰色)のままなんですけど。
0974デフォルトの名無しさんNGNG
>>973
パラメータ値をセットしてないから。
0975デフォルトの名無しさんNGNG
>974

どもです。

いえいえ、セットしてます。構文も間違っていません。(他のクエリでも使っているがそちらは正常。)
0976へいNGNG
みつけた!
http://ja2kai.hoops.livedoor.com
にあった。
0977デフォルトの名無しさんNGNG
>>976
うさんくさすぎ。練習し直し。
0978へいNGNG
うんこくさいって。。。
0979Delphi1から使ってますNGNG
新スレ立てました
http://pc3.2ch.net/test/read.cgi/tech/1028436692/l50
0980デフォルトの名無しさんNGNG
記念パピコ(^〜^)
0981デフォルトの名無しさんNGNG
       v
      (゚ω゚) <正直言って、出てくるとおもってないか?
     /(  )\
      /'\
0982涙でディスプレイが見えない…NGNG
981の放置っぷりが見事で…見事で…。
ああ、待っているよ!>>981
0983デフォルトの名無しさんNGNG
ひょっとして、出てくるタイミングを失った?

さあ、どう出る!>>981
0984デフォルトの名無しさんNGNG
あれ?
出てきたのは別のスレ?
0985デフォルトの名無しさんNGNG
逆放置プレーされていると思われる・・・
0986デフォルトの名無しさんNGNG
そろそろ埋める?
その5よりその6の方が先に埋まったら、
それはそれでいいけどな(w
0987デフォルトの名無しさんNGNG
>>985
そういう見方もアリですな!w
0988デフォルトの名無しさんNGNG
>>986
もう少し見守ってみたい気もするが・・・
>>981の動向も気になるし(w
0989デフォルトの名無しさんNGNG
邪魔だからそろそろ埋めてください。

新スレはココ
http://pc3.2ch.net/test/read.cgi/tech/1028436692/l50
0990デフォルトの名無しさんNGNG
新スレはココ
http://pc3.2ch.net/test/read.cgi/tech/1028436692/l50
0991デフォルトの名無しさんNGNG

新スレはココ
http://pc3.2ch.net/test/read.cgi/tech/1028436692/l50
0992デフォルトの名無しさんNGNG


新スレはココ
http://pc3.2ch.net/test/read.cgi/tech/1028436692/l50
0993デフォルトの名無しさんNGNG
新スレはココだす
http://pc3.2ch.net/test/read.cgi/tech/1028436692/l50
0994デフォルトの名無しさんNGNG

新スレはココだす
http://pc3.2ch.net/test/read.cgi/tech/1028436692/l50
0995デフォルトの名無しさんNGNG


新スレはココだす
http://pc3.2ch.net/test/read.cgi/tech/1028436692/l50
0996デフォルトの名無しさんNGNG
996
0997デフォルトの名無しさんNGNG
ふーつかれた
0998デフォルトの名無しさんNGNG
あとすこし
0999デフォルトの名無しさんNGNG
999
1000デフォルトの名無しさんNGNG
きたー
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。