トップページ⇒tech
988コメント351KB

ミ,,゚Д゚彡DelフサギコのフサフサDelphi談話室�A

■ このスレッドは過去ログ倉庫に格納されています
0001DelフサギコNGNG

                  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
    ∬   ∧,,∧      |  Delphi や Borland に関する話題
     ~━っミ ゚Д゚彡,,    <  雑談や質問を、しながら
    ∀._(,,,~  ,,,~⊃_   | マターリくつろごうや
━┳┷ |. ,(~ヽ,,,ミ.       \_________
  ┃...| ̄ ̄し'J.  ̄ ̄ ̄
  ┻ ヽ ̄ ̄ ̄ ̄ ̄ ̄ ̄ AA ハリマクッテ ヨシ
0153デフォルトの名無しさんNGNG
>>151とりあえず CTRL+J 使うとこから始めてみては?
0154152NGNG
スマソ、Typo。

VXL=>VCL

VXLってなんじゃい
0155Kusakabe YouichiNGNG
>>146
In article <[email protected]>, "146: デフォルトの名無し
さん" <[email protected]> wrote:
> { と } はShiftキーを押さなくちゃいけないので
> ものぐさなおいらには面倒臭い

Pascalユーザーは()もつかわないのかー
0156Kusakabe YouichiNGNG
>>147
In article <[email protected]>, "147: デフォルトの名無し
さん" <[email protected]> wrote:

> 個人的には:=って:のときはshiftキー押さないのに=のときは押さなきゃならな
いからちょっと面倒。

ふつうのキーボードは「=」にシフトなんかいらないですね。
プログラム書くってのに、代入や比較で「=」なんてしょっちゅう出てくるのに
それにシフトが必要だなんて、
そんなキーボードははなっからすてすて。
0157デフォルトの名無しさんNGNG
>>152
確かに見やすいとは思うけど・・・・縦長イヤーン(笑
型チェックに関しては同感、慣れるとイイ!
0158146NGNG
>>155
その通りだけど
{ と } はホームポジションから少し遠いから余計面倒に感じるんだよね

>>150-152
if 〜 then
begin
end else
begin
end;
0159デフォルトの名無しさんNGNG
>>151
アホはプログラムしちゃダメ!
みんなに迷惑だYO!
0160140NGNG
>>153
ありがと、わかったー。
やってみるね(^-^)

>>159
わかったー、なるべく迷惑かけないようにやるね。アホでごめん(笑)
0161デフォルトの名無しさんNGNG
使用許諾についてちょっと質問です
delphi 6 professional で

>お客様は、本ソフトウェアの単一のコピーを1台のコンピューターにインストールし、
>そのコンピューター上で使用することのみが出来ます。
>お客様唯一人が本ソフトウェアを使用する限りにおいて、
>本ソフトウェアを自由に1台のコンピューターから他のコンピューターに移すことが出来ます。

でいうところの 移す っていうことは前に使ってたほうはアンインストールしないと別のマシンには
インストールしちゃいけないんですかね?

5のときはデスクトップとノート2台にインストールしちゃってたんだけど・・・まずかったのかな・・・
0162デフォルトの名無しさんNGNG
>>161
ライセンスについては、棒に直接聞いたほうがいいと思われ。
俺は個人でプロ持っていて自宅に入れているけど、会社ではパーソナル版入れている。
しかし、なんつーか、パーソナル版機能低すぎ。タダだからしょうがないけど。
0163 NGNG
pro機能多すぎー 勉強しなきゃなーきっと1/5もつかわなそうだ・・・
0164DelフサギコNGNG
    ∧ ∧  ・・・・。
    ミ ゚Д゚彡
  〜ミ,,,,uuミ
Typoって何かの略ですかしら?


フサは>>158派です
  if 〜 then
  begin
  end else
  if 〜 then
  begin
  end;
elseifするのもネストが必要ない。

begin .. end は { .. } よりヨミやすくて好きだけど
タイプミスは、いまだにedn; になってしまう事多し。
{キーでbegin
}キーでendが挿入される機能はなかなかヨイかも。
0165デフォルトの名無しさんNGNG
ty・po [名][c] (複 -s) <口語> 誤植。typographic error の短縮形。

・・・らしい。
0166デフォルトの名無しさんNGNG
{ } が begin end に変わったら、{ } のコメントが使えないよ・・・
0167DelフサギコNGNG

     ∧,,,∧    じゃ、Ctrl+{でbegin入力ってのは
    ミ,゚Д゚,彡 ♪ ドウデショ?
 (( ⊂⊂   _)
     (__ノ'''' 彡  G-Expertではできないのかな?
0168 NGNG
begin と打つと { に変換されるんだな
0169DelフサギコNGNG

   ∧.,,∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ミ.,,゚∀゚彡<  >>165サンクスコ。
  ミ つ目(ミ . \_______________
〜ミ,,O,,,,,,つ
 今日、クスコの実物を見てきた(藁
0170デフォルトの名無しさんNGNG
>>169
クスコって、ドイツのシンセサイザー演奏家のこと?
0171DelフサギコNGNG
___ ,,,,,,, _____
  ミ。Д。彡
   ∨゙∨∪ イエ コッチデス

http://www2.plala.or.jp/oniwa-kokko/saibousin/kensin-nagare.html
0172デフォルトの名無しさんNGNG
羞恥プレイ用大人の玩具ですにゃ
0173デフォルトの名無しさんNGNG
>>171
感動した!!
2chは勉強になるな〜
0174DelフサギコNGNG
                _______________
       ,∧,,∧    < あ、話がエロのまま
    /,,ミ,,゚Д゚彡     \ 終わってしまっている。
   //\ ̄ ̄ ̄\      \ まずい・・・・
  // ※.\___\       ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 \\※ ※ ※ ※ ※ヽ
   \`ー──────ヽ
     ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
ということで、話題フリ、G-Expertsでお気に入りだった
複数行コメントアウトショートカット/アンコメントアウト
Ctrl+Alt+CとCtrl+Alt+Uが
(だったと思うのだけど)

Ctrl+Alt+ピリオドとCtrl+Alt+コンマになっているのはなぜゆえ?

Ctrl+Alt+Cにしても動作しないのは
何かとぶつかっているのかな.......

http://www.gexperts.org/download.html
0175デフォルトの名無しさんNGNG
>>151
コードテンプレートに登録すればいい。
[ツール]-[環境オプション]-[支援機能]タグで、
コードテンプレートの[追加]ボタンを押す。
名前:be, 説明:ブロック
として、コードの欄に、
begin
 |
end;

って入れとけばいい、そうすりゃbeまで打って[Ctrl]+J
で補完してくれる。

>>174
[Ctrl]+[Shift]+Cがクラス定義補完だから将来ぶつかる恐れがある。
0176デフォルトの名無しさんNGNG
DelphiってXpで動くの?
0177デフォルトの名無しさんNGNG
>>176
毎日使ってるけど?
0178デフォルトの名無しさんNGNG
>>171
クスコを挿入したの?挿入されたの?
0179デフォルトの名無しさんNGNG
   ∧.,,∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ミ.,,゚∀゚彡<  >>1 ファンです。
  ミ つ目(ミ . \_______________
〜ミ,,O,,,,,,つ
0180デフォルトの名無しさんNGNG
あの、TRichEdit にバグありません?
2バイト文字の部分でも、カーソルが1バイト分しか移動しない
という事がよく起こるのですが。これを回避する方法はありませんか。
0181デフォルトの名無しさんNGNG
>>180
1. RichEdit の Font の CharacterSet が日本語(SHIFTJIS)になっていない
2. 海外のソフト(たまに MS を含む)が英語版の Richedit.dll をインストールしてしまった

どちらかです。
0182デフォルトの名無しさんNGNG
FAQくさいのですけど、Serversタブの一連のコンポーネントのヘルプって
存在しないのですか?
0183デフォルトの名無しさんNGNG
>>182
各アプリのVBAリファレンス。
0184DelフサギコNGNG
|,,∧   ・・・・・・・・
|Д゚彡
|エロU   クスコ見ただけDAYO
| ミ    サワテ ナイヨ
| U

クスコ見たいなら
文京区役所へGO!


ここ、何のスレだ?

>>182ヘルプないです。
>>181のおっしゃるとおりです。RichEdit系のDLLは
アプリに梱包してしまいませう。
0185デフォルトの名無しさんNGNG
RichEditをやめるという手もなきにしもあらず
0186181NGNG
いや、64KB制限がなければ TMemo の機能で十分なんですけど…

ところで、 system\riched.dll は
プロパティ→言語に US とかかれていたのですが、
system\riched32.dll は言語「日本語」になっていました。
0187185NGNG
何をおっしゃる。自作ですよ、自作。自作のエディタでGO!
・・・とか煽ってみる。
0188デフォルトの名無しさんNGNG
nimda
0189デフォルトの名無しさんNGNG
TObjectのサブクラスのみ受け取るvarパラメータが欲しい。
0190デフォルトの名無しさんNGNG
>>189
必要ないんだけど。考えてごらん。
0191デフォルトの名無しさんNGNG
>>189
ハゲ同意
 procedure Hoge(var obj);
よりも
 procedure Hoge(var obj: TObject);
って書きてーよ

>>190
まじ?
0192デフォルトの名無しさんNGNG
Delphi6でScanfがコンパイル不能っす。
inline asmで通らないのですが…。
http://www.geocities.com/SiliconValley/Grid/9828/Delphi/scanf_d.html
0193デフォルトの名無しさんNGNG
Ruby
0194デフォルトの名無しさんNGNG
>>192
開発元に問い合わせたら?
0195デフォルトの名無しさんNGNG
>>191
procedure Hoge(obj : TObject) で十分だろ?
obj 自体,すでにポインタなんだし。var つけなきゃいけないのは obj そのものを
変更するときだけだけど、ポインタなんだから nil 初期化以外の値を設定することは
意味を持たない。

よーするに、
procedure Hoge(obj : TObject);
でも
procedure Hoge(var obj : TObject);
でも、Hoge のなかで
 Hoge.caption := '123';
のような操作ができるってこと。

どーしても var つけたい理由はなんだ?
0196デフォルトの名無しさんNGNG
>変更するときだけだけど、ポインタなんだから nil 初期化以外の値を設定することは
>意味を持たない。
いや、まさにそれね。
それだけのために文句いうのは、わがままってもんかもな。
0197デフォルトの名無しさんNGNG
>>192
scan_f.pas の 687 行目あたりを
end else
asm
fstp ST(0);
end; // Just clear the FPU stack

にすればコンパイルとおるけど?
非互換性の問題ですね。
0198デフォルトの名無しさんNGNG
>意味を持たない
あとAbstractFactory(?)みたいなものを実装する時とか……
0199198NGNG
むーん。かんちがいかな
0200デフォルトの名無しさんNGNG
200GET!!
0201DelフサギコNGNG
>あとAbstractFactory(?)みたいなものを実装する時とか……
  ,,,,,,,,,,,,,,,,∧,,∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
〜′,,,,,,,,,,ミ,,゚Д゚彡 < もう少し、具体的な例が聞きたい。
  UU"""" U U    \_______________

普通にvar でポインタの変更は出来るのでは?

procedure AAA(var Btn1, Btn2: TButton);
var
 Btn: TButton;
begin
 Btn := Btn1;
 Btn1 := Btn2;
 Btn2 := Btn;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 OutputDebugString(PChar(Button1.Caption));
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
 OutputDebugString(PChar(Button2.Caption));
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
 AAA(Button1, Button2);
end;
0202デフォルトの名無しさんNGNG
>>201
Delフサギコ 論点ずれ。
AAA に TButton から継承したクラスも渡したい。ってこと。
020371NGNG
>>202
渡せないの? 渡せるとばかり思ってたが
0204DelフサギコNGNG
   ∧,∧     ,::  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ミ,,゚Д゚彡っ━'~  | 何がしたいのかが、わからないから
  ミ∪  ~,ノ    < 論点もずれるわな。
   ミ  '' ミ       \____________
   し'~し'

これじゃダメなの?

procedure ObjExchange(var Obj1, Obj2: TObject);
var
 Obj: TObject;
begin
 Obj := Obj1;
 Obj1 := Obj2;
 Obj2 := Obj;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
 ObjExchange(TObject(Button1), TObject(Button2));
end;

キャストしなければこんなエラーが出ますね。
[エラー] Unit1.pas(51): 変数実パラメータと変数仮パラメータとは同一の型でなければなりません
0205203NGNG
なるほど、確かにそのままだとエラーになるね。
こんなふうに書いてみたらラベルのほうのcaption変えられたよ。

procedure TForm1.FormCreate(Sender: TObject);
var
 a, b: TControl;
begin
 a := Button1;
 b := Label1;
 SwapIt( a, b );
 // 強引だが、Captionはprotectedなので適当に見えるスコープに出てる派生クラスにキャスト(危険)
 TButton(a).Caption := 'どう?';
end;

procedure TForm1.SwapIt(var a, b: TControl);
var
 c: TControl;
begin
 c := a; a := b; b := c;
end;
0206デフォルトの名無しさんNGNG
で、キャストしないで使う方法がないか?って話をしてるのよん。
0207デフォルトの名無しさんNGNG
型なし参照引数じゃ指定クラスの派生であることを保証できないし
クラス指定してしまうと派生クラスの変数が直接渡せないってことか。
キャストでいいじゃん。
0208DelフサギコNGNG
  ∧,,∧   /まだ、よくわかってないのでサラっと書けないけど
  ミ,,゚Д゚ミ < Captionを持つインターフェースを定義して
  ミ   ミ   \プロパティ委譲クラスを作って、ってやるのが綺麗なのかな。
〜ミ,UU_ミ
0209デフォルトの名無しさんNGNG
>>197
ありがてぇ。サンクスぅ!
0210デフォルトの名無しさんNGNG
FreeAndNilになんでも渡せるのが問題なの?
0211デフォルトの名無しさんNGNG
代入互換性ってーものを知らん人がいるみたいね
キャストしたくないならインターフェースだね
0212デフォルトの名無しさんNGNG
論点がずれてない?

var つけるかつけないか/値渡しか参照渡しかで子クラスを渡せなくなる
言語仕様に対してどうにかできないかなと言っているのです。
0213デフォルトの名無しさんNGNG
>>195 が答えだしてるけど
>>196 の
>いや、まさにそれね。
が意味不明

何がまさにそれなのかわからないからもう付き合わない。
0214デフォルトの名無しさんNGNG
procedure Hoge(var obj : TObject);

とすると呼び出し側で TObject 継承クラスを渡せなくなる言語仕様は
とっても合理的だよ。なぜならば以下のようなケースを未然に防げるから。

procedure Hoge(var obj : TObject);
begin
 obj := TObject.Create;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
 Memo: TMemo;
begin
 Hoge(Memo);
 Caption := Memo.Text; // memo 変数に入っているのは実際は TObject なのでエラーになる
end;

近眼的な視点でどーたらどーたら言っても意味がない。
0215デフォルトの名無しさんNGNG
クラス参照があるやないか。
Application.CreateForm(TForm1, Form1);って毎日のように見ているはずだが?
0216デフォルトの名無しさんNGNG
構造体の前方参照はどうすればいいの?
 DLLとのインターフェースで

type
THogeCallBack=Procedure (var This:THoge);
THoge =record
 foo:Integer;
 CallBack:THogeCallBack;
end;

こんなのが必要なんだけど、
クラスの前方参照を真似て

THoge =record;
を入れてもダメみたい
0217デフォルトの名無しさんNGNG
コールバック関数の例はWindowsユニットを見れば一杯
あるんじゃないの?
0218デフォルトの名無しさんNGNG
forward 宣言。ヘルプみろ。
0219デフォルトの名無しさんNGNG
まあ(varobj XX)みたいなのがあってもいいと思いますが、
ちょっと前に話題になった、Ctrl+{でbeginってやつ、作ってみました。
割と他人の環境に配慮してないので、使う人は注意。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1007345219&rm=100
0220216NGNG
>>217

type PTHoge = ^THoge;
THogeCallBack=Procedure ( This:PTHoge);
  THoge =record
  foo:Integer;
  CallBack:THogeCallBack;
 end;
とやれば確かに定義出来るんだけど・・・これで我慢するしかないのかな
0221デフォルトの名無しさんNGNG
>>220
お互い参照じゃ、それしかないねえ。
0222216NGNG
>>221
 ホントは recordじゃなくて object にしてメソッドに出来れば一番いいんだけど
 メソッドにすると引数がレジスタ渡しになるんだよね。これをスタック渡しに出来れば
 一番いいんだけど
0223デフォルトの名無しさんNGNG
ShowMessageとかで(' ')内に255文字いじょう入れると
「文字列の要素が255を越えました。」
ってエラーが出ます。
どうにか出来ないでしょうか?
0224216NGNG
試しにやってみたら、

THogeCallBack=Procedure of object;cdecl;
THoge =packed Object
  foo:Integer;
  CallBack:THogeCallBack;
  boo:Integer;
  procedure test;cdecl;
end;

これでいいかと思ったら CallBackには2word=8byteの領域が必要なんだよな
やっぱり >>220しか方法ないのか
0225216NGNG
>>223
 Delphi1ですか?
0226デフォルトの名無しさんNGNG
正直言うとkylixです
0227223NGNG
kylixでシステムコールを使っていて(' ')内に文字列が255いじょうあると警告出るんです。

llibc.system('255文字の文字列')
こんな感じです。上のコールはkylix上からコマンドを実行する物です。(libcライブラリを使用してます)
0228デフォルトの名無しさんNGNG
system関数かあ、パスの長さの上限ってそのぐらいじゃなかったっけ?
だったらそのメッセージは親切だ。
0229223NGNG
>>228
解決策無いですか?
0230デフォルトの名無しさんNGNG
>>223
'<255 文字まで>' + '<次の 255 文字>'
てな感じでいけるはず。
0231デフォルトの名無しさんNGNG
さあ?.bashrcにそのパスを含めてファイル名だけの指定が出来るように
するか既存のパスの通ったディレクトリにリンクファイルを作成するか
だと思うが・・・
0232223NGNG
libc.system('255文字')+('255');
これでいけますか?
0233223NGNG
うう、、
kylixの質問だと言うのにみんな親切
ありがとう

>>231
一応255文字の文字列を含んだシェルスクリプトを呼び出す物を作ってみたんですが
それだと動作しないんです。直接起動させないとだめなコマンドらしいんで。
残る方法は「xterm -e コマンド」だけです。
0234223NGNG
>>231
231さんのがヒントになりました。
.bashrcで255文字の文字列をaliasすれば良いんです。
たぶんこれでいける(と思う)
0235223NGNG
libc.system('255文字'+'255');
これで文字列の結合いけました。
ありがとう御座います。
0236231NGNG
文字列リテラルの制限でしたか。了解。
0237DelフサギコNGNG
  ,,,,,,,,,,,,,∧,,∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
〜′,,,,,,,ミ;゚Д゚彡 < >>219マヂ?!スギャー
  UU""" U U   \_______________
 試したいけど、微妙に時間がネーっす。
 どなたか、入れてみた?
0238デフォルトの名無しさんNGNG
>>219
D5でもそのままで動きました
でも
beginとendとかよく使う予約後はブラインドタッチできちゃいます
ソース参考にさせてもらいます
0239デフォルトの名無しさんNGNG
>>214

procedure Hoge(var obj);
begin
 obj := TObject.Create;
end;

だって危ないじゃん。
0240デフォルトの名無しさんNGNG
>>219
ウォー!すげー便利だ・・・・・
けど、意識してないと指が勝手にbeginって入力してしまうヽ(;´Д`)ノ
0241デフォルトの名無しさんNGNG
function Format(const Format: string; const Args: array of const): string;
は Format('%s', [10]);だと実行時にエラーが出ますが、
これって、const Args: array of const が型の情報を渡しているのですよね?

それから考えたのが下のですが。。。
procedure Hoge(var Obj: array of const);
begin
 if Obj[0].VType = vtObject then
 begin
  TObject(Obj[0].VObject).Free;
  TObject(Obj[0].VObject) := nil;
 end;
end;

procedure TForm1.Button3Click(Sender: TObject);
var
 Obj: TObject;
begin
 Obj := TObject.Create;

 // "変数パラメータに定数オブジェクトを渡すことはできません"
 // と出ますがどうしてですか?
 Hoge([Obj]);
end;
0242デフォルトの名無しさんNGNG
varObjectが無いから、Variantは使えないのか。
0243デフォルトの名無しさんNGNG
質問です。
謎の全知死さんは、どこへ行きましたか?
0244デフォルトの名無しさんNGNG
>>243
Nifty を含むネットに出てこないだけです
Delphi でバリバリ仕事をされています
0245DelフサギコNGNG
|,,∧   しばらくおでかけしてたら、忘れられたスレ化してしまった。
|Д゚彡
| U
| ミ   
| U
0246デフォルトの名無しさんNGNG
BICカメラさん、在庫に困っているのは分かりますが、
D5を売り場に出すのはいいかげんやめてください。
0247デフォルトの名無しさんNGNG
>>246
定価なの?
0248DelフサギコNGNG
|,,∧  
|Д゚彡  ああいう所はわかってないすから
| U   シカタないのでは?
| ミ   
| U  D4売っている当時にTurboC++とBorlandC++が
   売ってる店もあったですし。
0249デフォルトの名無しさんNGNG
わーいDel6 personalわざわざパッケージで買っちゃった。
前日にタダの奴ダウンロードしてみたけど、やっぱプログラム
初心者には同梱の説明書がないと難しかったので…
新宿ヨドバシのコンピュータ本コーナー調べたけど
まったく初心者から理解できる入門書の類ってないですね。
0250デフォルトの名無しさんNGNG
http://home.onestop.net/mineko/index2.html
このページ初心者にお勧めなんだけど。
できるところまででいいからやってみると吉。
そのあとで初心者用の「はじめての〜」とか書いてある本買えばよろし
と思う。
0251249NGNG
>>250
ぬお?、面白そうなページ教えてくれてありがとうございました。
本屋にある「入門書」を見て、みんなこんなのわかるんだろか?と
激しく不安になってたので助かります。
ちょっと勉強してきます。
0252デフォルトの名無しさんNGNG
>>244
いいなぁ。俺もDelphiで仕事してぇなぁ。
Delphiは、1から3まで一杯仕事で使ったけど、
それ以降はjavaばかり。
周りはunix信者ばかりだから仕方ないか。。。
フサギコ氏は仕事でDelphi使ってる?
■ このスレッドは過去ログ倉庫に格納されています