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

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが、
お礼はDelphiの布教と初心者の救済をお願いします。

<前スレ>
くだすれDelphi(超初心者用)その18
http://pc5.2ch.net/test/read.cgi/tech/1093996761/

<その他>
ボーランド
http://www.borland.co.jp/
DelWiki
http://onigiri.s3.xrea.com:8080/delphi/
0153141=143NGNG
>>152
たぶんそれはくだすれの過去ログだと思いますが、その質問をしたのは私です。
で、そのアドバイスに従ってやってみてBDEはたぶんきちんとインストールできたのですが、
どうもデータソース絡みの設定がきちんとできてないみたいでしてデータソース絡みが
きちんとインストールされていないようです。

一月悩んでもまだ解決しないのでどなたかお知恵を貸してください。
0154デフォルトの名無しさんNGNG
>InstallShieldで設定しているのに、InstallShieldを実行した後で、自分の作った
>プログラムを実行するとそんなデーターベースソースは無いって怒られるんです。

じゃいくつか質問。
・ファイルは展開されていますか?(展開後の BDE ファイルがどれかはわかりますね?)
・BDE アドミニストレーターはコントロールパネルにありますか?それは起動できますか?

この二つがクリアされていれば、問題は BDE インストーラーではなく(おそらく)データベースの
Alias が定義されていないだけ。でしょう。

とりあえず、ここまで確認を
0155141=143NGNG
>>154
レスありがとうございます。

>展開後の BDE ファイルがどれかはわかりますね?
がはっきりとは分からないのですが、実行ファイルはきちんと展開してあります。

あと、BDEもコンパネにあります。しかし、インストールしたいdatasourceは
表示されないです。
0156デフォルトの名無しさんNGNG
>function TCustomActionList.IsShortCut(var Message: TWMKey): Boolean;

F5キーを押すとこのメソッドでエラーになるんですが、何でかな。
ショートカットキーは割り当ててないし。

ビジュアルコンポーネントをFreeした後にだけ発生します。
0157156NGNG
エラーはEAccessVaiolationで、また、エラーが起きるときのself.nameは空っぽです。
0158156NGNG
それと、F5キーを押すと、
>function TCustomActionList.IsShortCut(var Message: TWMKey): Boolean;
2回目でエラーが出ます。

エラーが出ない場合は5回ほど飛んできます。

self.nameに値が入ってる場合は、「ActionList1」です。
0159デフォルトの名無しさんNGNG
質問させて下さい。

あるアプリを起動させ、そのアプリのあるウィンドウが終了するのを待ちたいと思ってます。
アプリ自体の終了を待つならばWaitForSingleObjectでできるみたいですが、
そのアプリの特定のウィンドウの終了を待つにはどうしたら良いのでしょうか?

宜しくお願いします。
0160デフォルトの名無しさんNGNG
>>159
簡単にやるならウインドウハンドルが有効かどうかポーリングする。

一瞬の隙も見逃すわけに行かないなら
SetWindowLong関数を使ってウインドウプロシージャを書き換えてWM_CLOSEを拾う。
0161デフォルトの名無しさんNGNG
>>156
そのビジュアルコンポーネントのオーナーを
TCustomActionListのオーナーと同じものにすれば良いかと。
0162159NGNG
>>160
ありがとうございます。前者の方法でできました。
0163156NGNG
サンクス>>161
正常に動作するときにTCustomActionListのオーナーみてたら、
Freeされるフレームが混ざってました。

でも、ActionListのOwner差し替えしてなさそうなんだけどな...

とりあえず、アドレス違反を起こすコンポーネントが特定できたので、
サイアクの事態は回避しました。
0164156NGNG
ついでに知識として知っておきたいのですが、
ActionListによって、
>function TCustomActionList.IsShortCut(var Message: TWMKey): Boolean;
がコールされるものとされないものと、どこで分かれるんでしょうか。
ソースをざっと見たところ、ショートカットは設定されてないし...
いくらDelphiでも、アドレス違反エラーが出る場合の対処は(´・ω・`)ショボーン
0165デフォルトの名無しさんNGNG
IsShortCut はメニューアイテムに関連付けられた Action に対して、
フォーム等で押されたキーが TAction で処理されるべきかどうかを判定するための
メソッド。
TForm (かその祖先クラス)のメッセージハンドラ近辺から読んでいくと呼び出している
コードが見つかるだろう。
0166デフォルトの名無しさんNGNG
その「ビジュアルコンポーネント」が TActionlist を持っているのでは?
あと、Free じゃなくて FreeAndNil を使ってみたら?

0167デフォルトの名無しさんNGNG
サンクス>>165
なるほど、ショートカットを割り当ててるからコールされるんでなくてショートカットの割り当てを判定してるんですね。

じゃぁ、毎回コールされるのかな思って、幾つかあるフレームクラス(これらのCreate/Freeが繰り返される)を見直してみたら、アクションリストがあるのはアドレス違反起こすフレームにだけありました。
つまり、フレームクラスにアクションリスト貼り付けない方が良いのかな。
0168デフォルトの名無しさんNGNG
TFrame にメニューを貼るのは珍しいことではなく、よってアクションリストが貼りつくのも
問題ないと思うけど、頻繁に Create/Free? そいうコードはあまり経験ないなぁ。
多分、Free の方に何か問題があるのだと思うけど、ここから先はコードがないと何ともいえない。
0169デフォルトの名無しさんNGNG
メッセージでポストして遅延してFreeすれば大抵のFreeでのバグは回避される。
アクションとか使って、そのアクションのターゲット自体が破棄される時、
ターゲット自体にまだ実行されるコードが残っているとAVが発生する。
これは仕様だ。唯一の回避方法は正しい使い方をすること。
Releaseなんてのがあるのはそういった問題の回避のためなんだよね。
0170デフォルトの名無しさんNGNG
>>169
なるほど、参考になりました。

AVが発生するというより、
アクションリストが破棄されてるのにアクションリストのキーチェック処理がレジストされたまま、
みたいな感じなんで、もしかしたら今回の件は若干違うかもしれませんが。
テスト結果は今日明日にこのスレに報告致します。
0171デフォルトの名無しさんNGNG
TThreadを継承したオブジェクトで,Executeは完走しているのにWaitForから制御が戻りません。
故にデストラクタから制御が戻らず困ってるのですが,原因として何が考えられるでしょうか。
0172デフォルトの名無しさんNGNG
ちゃんとoverrideしているか?
0173171NGNG
procedure Execute; override;
としています。純粋仮想なのでinheritedは書いていませんが。
デストラクタが呼ばれた時Terminatedを見てExecuteのループから抜けてるのは確認しています。
0174171NGNG
あ,書き込んだあとで気付いたけどデストラクタの方のことですよね。
オーバーライドして,基底のデストラクタも呼んでます。
TThread.Destroyの
Terminate;
if FCreateSuspended then
Resume;
WaitFor;
この部分で止まってしまう訳なのです。
0175デフォルトの名無しさんNGNG
もう一度自分のコードを見直せ。
まさかデッドロックを引き起こす様なコードは書いてないだろうな?
WaitFor中にはSynchronizeの処理が行われたりするのだが、その時待機状態になるコードがある場合そこで止まる可能性がある。
いづれにしても、自分でトレースすればわかることだ。
0176デフォルトの名無しさんNGNG
フラグで止まってるヨカーン。
オレの経験上w
0177171NGNG
原因
 finalizationの中でスレッドを終了しようとした時,EndThreadが呼ばれてもスレッドが走行中のまま終了しなかった。
 故にシグナル状態にならず,MsgWaitForMultipleObjectsのあたりのループをぐるぐるしてた。
対策
 TThread派生オブジェクトのフィールドにExecute実行中かどうかを表すフラグを追加。
 (イベントオブジェクトだとResetしてもWaitForSingleObjectが返ってこなかったから)
 finalizationではTerminateを呼んだ後そのフラグを監視。
 実行中フラグが外れたらTerminateThread呼んだ後Free。

finalization中ではカーネルオブジェクトの扱いはやめた方がいいのかな。
お騒がせしました。
0178デフォルトの名無しさんNGNG
type
TTestThread = class(TThread)
protected
procedure Execute; override;
end;

procedure TTestThread.Execute;
begin
Sleep(3000);
end;

var
Thread: TTestThread;

initialization
Thread := TTestThread.Create(False);
finalization
Thread.Free;

現象を再現できない。バグの原因は違うところだと思う。もう一度自分のコードを見直せ。
0179デフォルトの名無しさんNGNG
すみません。質問させて下さい。
MessageDlgでボタン[mbYes,mbNo]を使用しているのですが、
ダイアログが表示された際にフォーカスが必ずmbYesに当たっているので
これをデフォルトでmbNoにフォーカスを当てたいのですが、方法が分かりません.
どなたかご教授ください。
0180デフォルトの名無しさんNGNG
CreateMessageDialog でダイアログを作成し、
FindChildControl で 'No' {No ボタンの Name}
を取得して、SetFocusedControl で上のコント
ロールを TWinControl にキャストしてフォーカ
スし、 ShowModal で返り値を得る。

泥臭い方法の一つ。
0181デフォルトの名無しさんNGNG
VCL ソースコードを持っているのなら、MessageDlg 丸ごとコピーして好きに改造。
これが一番早い
0182デフォルトの名無しさんNGNG
>>179
TApplication.MessageBox使え。
flagにMB_DEFBUTTON2。
API直でもいいけど。
0183180NGNG
やっぱスマートな方法はあるもんだなぁ。
いつも感心するぜ。
0184171NGNG
>>178
失礼。説明が足りないばかりに話を長引かせてしまって。
解放するのはDLLファイルなのです。
ホストアプリとしてボタンを2個持つアプリケーションを作成,一方を
 module := LoadLibrary('Project2.dll')
他方を
 FreeLibrary(module);
を行うよう設定
DLL側はTThreadから派生するクラスTMyThreadでExecuteだけをオーバーライド
グローバルにMyThread: TMyThreadを確保してプロジェクトのbegin〜end;で生成
他は下に示すようなものを作って検証
procedure TMyThread.Execute;
begin
 while not Terminated do
  Sleep(100);
end;

initialization
finalization
 if Mythread <> nil then
  Mythread.Free;
結果同様の現象が起こりました
0185デフォルトの名無しさんNGNG
>>184
確認できました。そんでもって調べました。Windowsの仕様です。結論としてはそのような使い方をしてはいけない。

参考
ttp://www.numeric.co.jp/Win32.htm#Q0004

DLL_PROCESS_DETACHが呼ばれた状態でスレッドが存在しないようにしましょう。
まあ開始終了の関数をエクスポートしておけば無事解決。
0186デフォルトの名無しさんNGNG
フォーム内でパネル1、パネル2 と分割し、パネル2 に Edit1 を配置しています。
実行すると、パネル2 からはみ出した、パネル1 内での位置っぽい感じで Edit1 が表示されます。
オブジェクトツリーでは Edit1 は間違いなくパネル2 の下にあります。

新たにパネル2 上に別の Edit2 を追加すると、そのように表示されるので、Edit1 が
何からおかしいようなのですが、その理由がわかりません。

何か思い当たることはあるでしょうか?
コードで位置を変更したりはしていません。
0187デフォルトの名無しさんNGNG
ソースコード持っていないのですが、TPanelコンポーネントのCaption
プロパティのWriteに使われているメソッドの書式を教えてください。
0188デフォルトの名無しさんNGNG
>>187 ご所望の Delphi のバージョンは?
0189デフォルトの名無しさんNGNG
>>187 ご所望の Delphi のバージョンは?
Delphi6 でも Doc ディレクトリに公開されているインターフェースのソースが公開されていますが
そちらは確認済みですよね?
0190デフォルトの名無しさんNGNG
MEMOコンポーネントに、URLリンクを貼ることは可能なのでしょうか?
もしくは、代替で実現できるコンポーネントはあるのでしょうか?
初心者すぎてすみません・・・
Delphi6使用です。
0191デフォルトの名無しさんNGNG
ListView(vsReport) で行ごとや項目ごとに文字色を変えるにはどうしたらいいのでしょうか?

VBのListItemsにはそんな感じのプロパティがあった気がするんですが
Delphiでみあたりません、教えてください
0192デフォルトの名無しさんNGNG
>>190
TEdit

>>191
OwnerDraw
0193デフォルトの名無しさんNGNG
>>187
こういうこと?
procedure TCustomPanel.SetText(const Value: TCaption);

>>188-189
答える気がないならレスしなくていいよ。ここはそういうスレだから。
0194デフォルトの名無しさんNGNG
>>193はCLXだった。
procedure TControl.SetText(const Value: TCaption);
0195デフォルトの名無しさんNGNG
>>186
TPanel でフォームの領域分割をする場合はTPanet.Align を
片方のパネルを alBottom、alLeft、alRight、alTop のいづれか
もう片方を alClient とする。
0196デフォルトの名無しさんNGNG
>>192
レスありがとうございます。
どこで使えるのか探してみていますが、TEdit内で
「○○はここです \\サーバ名\フォルダ...」のように、
通常文字とリンクを混合させた場合でも、リンクははれるのでしょうか?

要は、コメント欄を作って、その中でファイルへのリンクを貼りたいのです。
クリックすると、ファイルが開くような・・・
0197デフォルトの名無しさんNGNG
Delphi5Proにて…

ClientSocketのHostプロパティに無効なURLを入力すると
OnErrorイベントが発生しないで
「'ASync Lookup' APIでWindows ソケットエラー:そのようなホストは不明です。(11001)」
というメッセージが表示されちゃうのはなんとかできないのでしょうか?
0198デフォルトの名無しさんNGNG
そんなバナナ
0199デフォルトの名無しさんNGNG
>>192
あ〜、DelphiはItemにそういう項目はなくてListViewのCanvasをそこでいじるんですね
解決しましたー、ありがとう
0200デフォルトの名無しさんNGNG
OnAdvancedCustomDrawItem あたりで変えれますよ。ヘルプくらい読めよ。
0201デフォルトの名無しさんNGNG
TEditでリンクを貼る方法が見つからない・・・
ヘルプとか参照してみたんですが分からないです・・・orz
0202デフォルトの名無しさんNGNG
>201
TRichEdit
0203デフォルトの名無しさんNGNG
TThread.OnTreminate のヘルプに
> OnTerminate イベントハンドラは,メイン VCL スレッドのコンテキスト内で呼び出され,
> VCL メソッドおよびプロパティを自由に呼び出せるようにします。
とありますが、これは Synchronize を使用したときのようにスレッドセーフでないオブジェクトも気にせず扱えるということですか?
0204デフォルトの名無しさんNGNG
TThread.DoTerminate; のコード見ろよw
0205デフォルトの名無しさんNGNG
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが、
お礼はDelphiの布教と初心者の救済をお願いします。
0206デフォルトの名無しさんNGNG
TFrameをダイアログにして表示する方法を教えて下さい。
0207デフォルトの名無しさんNGNG
Frame.Show;

じゃ表示されないんだYO!
0208デフォルトの名無しさんNGNG
ダイアログフォームにはっつけて表示
0209デフォルトの名無しさんNGNG
FrameのScreenに対するRectのとり方教えて下さいでつ。
0210デフォルトの名無しさんNGNG
まったくここの奴らは使えないな。
0211デフォルトの名無しさんNGNG
やり手のDelユーザはもうめっきり少なくなったからね
回答の質のレベルダウンは目を覆うばかりだな。あちこちのBBSも同じ状況
0212デフォルトの名無しさんNGNG
Formが表示されたり消えたりするとき、

Form.ManualFloat(Rect)

したくて、かつ、Formの位置を変えずに表示させたいんですが、
Rectには何を入れたら良いですか?
0213デフォルトの名無しさんNGNG
TStringsをStringで表示するにはどうすればいいのですか?
0214デフォルトの名無しさんNGNG
>>213
Textプロパティ
0215デフォルトの名無しさんNGNG
Delphiのプログラム中から指定のURLで新規にブラウザ(IE)を起動させたいのですが

WinExec('IEXPLORE.EXE' ,SW_SHOW);
ShellExecute(0, 'OPEN', Pchar('http://www.yahoo.co.jp/'),nil, nil, SW_SHOWNORMAL);

このようにやっていて一応目的は果たせているのですが、
環境によってはブラウザ起動後ホームに設定してあるページが1,2秒表示され、やっとyahooへ飛ぶといった挙動になってしまいます

HTMLのリンクをクリックした時のように最初からURLをセットした状態で新規に起動したいのですが、何か解決方法はありますでしょうか?
0216デフォルトの名無しさんNGNG
>>215
ん?1行目要るか?
0217デフォルトの名無しさんNGNG
>>216
一行目を入れないとすでに開いているブラウザにURLをセットしてしまいます
新規に起動させたブラウザにyahooをセットしたいのです
0218デフォルトの名無しさんNGNG
>>213
CommaTextつうのもある
0219ななしへたぐらま ◆XcB18Bks.Y NGNG
>>197
TClientSocket 11001 でぐぐってみたら一発目にこんなのが出てきましたよ.
http://www.talkaboutprogramming.com/group/comp.lang.pascal.delphi.misc/messages/242762.html
0220デフォルトの名無しさんNGNG
>>215
これでは駄目ですか?
ShellExecute(0, 'OPEN','IEXPLORE.EXE' ,'http://www.yahoo.co.jp/', nil, SW_SHOWNORMAL);
0221215NGNG
>>220
できました!
ありがとうございます
0222デフォルトの名無しさんNGNG
ShellExecute(0,nil,nil,...で十分。明示はダサい。
0223デフォルトの名無しさんNGNG
そのurlにこだわるのは孫さんとこの雇われグラマ?あんまり世間に迷惑かけないでね。
0224初心者NGNG
Delphiを使い始めて間もない者です。

テキストファイルに保存してある文字列を、
ComboBoxやMemoに読み込んで表示させたいのです。

テキストファイルの中身を、
a1,a2,a3,a4,a5,a6
b1,b2,b3,b4,b5,b6
c1,c2,c3,c4,c5,c6
と仮定して、
a1,b1,c1をComboBoxに
a2,b2,c2をMemo1に
a3,b3,c3をMemo2に
・・・
a6,b6,c6をMemo5に
というふうに、コンマごとに区切って表示させたいんです。
さらに、ComboBoxで選ばれた文字に対応するデータをMemoに表示させたいんです。
例えば、
ComboBoxで、a1を選んだとすると、
Memo1はa2、Memo2はa3、Memo3はa4、Memo4はa5、Memo5はa6が、
とこんな感じで。

LoadFromFileメソッドを使うってのは分かるんですが、
イマイチ良く分からないんです・・・。
よろしくお願いします。
0225デフォルトの名無しさんNGNG
個人的には設計をやり直した方がいいと思うぞ。
そんな処理、かなり強引なコード書くしかないと思う
0226デフォルトの名無しさんNGNG
代案すら出さない代案厨乙
0227デフォルトの名無しさんNGNG
目的もわからないのに代案が出せるか
0228デフォルトの名無しさんNGNG
目的がわからないのに代案を提案したくせにw
0229215NGNG
マターリおしえてやれ
0230デフォルトの名無しさんNGNG
にるぽ
0231デフォルトの名無しさんNGNG
>>224
丸投げイクナイ
もう少しポイントを絞って質問しなよ
0232デフォルトの名無しさんNGNG
>>224
正直お勧めはしない
procedure TForm1.FormCreate(Sender: TObject);
const
  TextFile = 'test.txt';
var
  str : TStringList;
  i,j,k : integer;
  tmpstr,substr : string;
  Control : array [0..5] of TWinControl;
begin
  Control[0] := ComboBox1;
  for i := 0 to 4 do
    Control[i+1] := TWincontrol(FindComponent('Memo'+inttostr(i+1)));
  str := TStringList.Create;
  try
    str.LoadFromFile(TextFile);
    for i := 0 to str.Count-1 do
    begin
      tmpstr := str[i];
      for j := 0 to 5 do
      begin
        k := pos(',',tmpstr);
        if k = 0 then
          k := Length(tmpstr)+1;
        substr := Copy(tmpstr,1,k-1);
        if Control[j] is TMemo then
          TMemo(Control[j]).Lines.Add(substr)
        else if Control[j] is TComboBox then
          TComboBox(Control[j]).Items.Add(substr);
        Delete(tmpstr,1,k);
      end;
0233232NGNG
    end;
  finally
    str.Free;
  end;
0234デフォルトの名無しさんNGNG
TStringListのCommaText使えばもっと簡単に出来ねえか?
0235デフォルトの名無しさんNGNG
CommaTextでやってみました。

procedure TForm1.FormCreate(Sender: TObject);
const
  TextFile = 'test.txt';
var
  str,str2 : TStringList;
  i,j : integer;
  Control : array [0..5] of TWinControl;
begin
  Control[0] := ComboBox1;
  for i := 0 to 4 do
    Control[i+1] := TWincontrol(FindComponent('Memo'+inttostr(i+1)));
  str := TStringList.Create;
  try
    str.LoadFromFile(TextFile);
    str2 := TStringList.Create;
    try
      for i := 0 to str.Count-1 do
      begin
        str2.Clear;
        str2.CommaText := str[i];
        for j := Low(Control) to High(Control) do
        begin
          if Control[j] is TMemo then
            TMemo(Control[j]).Lines.Add(str2[j])
          else if Control[j] is TComboBox then
            TComboBox(Control[j]).Items.Add(str2[j]);
        end;
0236デフォルトの名無しさんNGNG
      end;
    finally
      str2.Free;
    end;
  finally
    str.Free;
  end;
end;
0237デフォルトの名無しさんNGNG
コンボボックスのリストをセレクタとしてMemoの内容を切り替えるのだから、クラスやレコードの配列に保持しておくのだと思う。
0238デフォルトの名無しさんNGNG
そうそう、一回限りセットしても駄目
0239デフォルトの名無しさんNGNG
TStringGrid を使うのはどぉ?
0240デフォルトの名無しさんNGNG
TStringGridのRowsのCommaTextに入れて
ColsのCommaTextで読み出すのが一番簡単かな
0241初心者NGNG
返事が遅れて、すいません。
出掛けていたもので・・・。
質問の丸投げなんてとんでもないです。
ほんとスイマセン。
確かに強引なのは分かっているんですけど、
237でおっしゃっておられるように、
ComboBoxのリストをセレクタとしてMemoに表示させる内容を変更させるのが目的なんです。
教えていただいた方法で試してみます。
で、238でおっしゃっておられるように、
ComboBoxのリストのセレクタを変更させる毎に、
Memoに表示させる内容を変更させたいんですよね。
240でおっしゃっておられる方法ですれば、上手くいくのでしょうかね?
試してみたいと思います。
また行き詰まったら、質問してもいいでしょうかね?
よろしくお願いします。
0242デフォルトの名無しさんNGNG
string型の二次元配列つくって、ファイルから読み込んで、代入する。
あとはどうとでもできる。既出の TStringList の CommaText の使い方を
覚えるのがポイント。
0243240NGNG
Form上にComboBox,Button,Memoを5個,StringGridをポトペタ。
Cドライブに>>224の内容をtest.txtいうテキストファイルを用意。
Buttonをダブルクリックしてイベントハンドラに以下を記述。
procedure TForm1.Button1Click(Sender: TObject);
var
 SL,SL2: TStringList;
 i: Integer;
begin
 SL := TStringList.Create;
 SL2 := TStringList.Create;
 try
  SL.LoadFromFile('c:\test.txt');
  StringGrid1.RowCount := SL.Count;
  SL2.CommaText := SL.Strings[0];
  StringGrid1.ColCount := SL2.Count;
  for i := 0 to SL.Count - 1 do
   StringGrid1.Rows[i].CommaText := SL.Strings[i];
  ComboBox1.Items.CommaText := StringGrid1.Cols[0].CommaText;
  Memo1.Lines.Add(StringGrid1.Cols[1].CommaText);
  Memo2.Lines.Add(StringGrid1.Cols[2].CommaText);
  Memo3.Lines.Add(StringGrid1.Cols[3].CommaText);
  Memo4.Lines.Add(StringGrid1.Cols[4].CommaText);
  Memo5.Lines.Add(StringGrid1.Cols[5].CommaText);
 finally
  FreeAndNil(SL2);
  FreeAndNil(SL);
 end;
end;
0244240NGNG
続いてComboBox1をダブルクリックして以下を記述。
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
 Memo1.Lines.Add(StringGrid1.Cells[1,ComboBox1.ItemIndex]);
 Memo2.Lines.Add(StringGrid1.Cells[2,ComboBox1.ItemIndex]);
 Memo3.Lines.Add(StringGrid1.Cells[3,ComboBox1.ItemIndex]);
 Memo4.Lines.Add(StringGrid1.Cells[4,ComboBox1.ItemIndex]);
 Memo5.Lines.Add(StringGrid1.Cells[5,ComboBox1.ItemIndex]);
end;
あとは実行してみれ。
0245240NGNG
エラー処理やもっとスマートな記述方法については自分で考えれ>>241
0246デフォルトの名無しさんNGNG
procedure Hoge(var X);
こういう手続きを宣言したとき引数の型を調べるにはどうすればいいのでしょうか?
0247デフォルトの名無しさんNGNG
二次元配列にGUIコンポを使うのは最低
0248デフォルトの名無しさんNGNG
>>246
無理
0249デフォルトの名無しさんNGNG
New Disposeは特殊で同等のものはユーザーは作れないと言ってみる
0250デフォルトの名無しさんNGNG
Move() とか TStream.Write とかなら、アドレスからポインタに変換してつくれそうだな。
New Dispose は難しそう。
0251246NGNG
>>248-250
ありがとうございました。
型によって一部の処理を変えたかったのですが素直にoverloadすることにします。
0252初心者NGNG
教えていただいた皆さん、ありがとうございました。
■ このスレッドは過去ログ倉庫に格納されています