モナーの *やさしい* Delphi質問スレ

このエントリーをはてなブックマークに追加
>951
お前にはDelよりN88BASICのが合ってそうだな。
一回試してみろよ。きっと気に入るよ。
>>950
みんな見てると思うぞ。
実際役立つTipsも有るし、ネタが有る所は見るんじゃないかな・・
俺は役立ちそうなスレ片っ端からwgetしてNamazuしてる
# 繋いじゃうと何かと無駄な時間が・・・(笑
>>950

最近のレスといえば、H と q だけど、ご両人はあそこでは古株
だろう? だれのこといってんの?

もっともご両人ともここ見てるってことはあるよな。
もうよさない?
もうやめようよ。
957Delフサギコ:02/01/19 01:19
  ∧,,∧   >>948
 ミ,,  彡  フサ次スレは辞めときますかねえ....
 ミ   ミ  
 ミ〜,, ミ
  ∪ ∪
       細く長く生き延びたいな...
>>957

オレはフサギコのキャラ好きだよ。
でも、このごろフサさん、忙しそうであまり出現しないんだね。
ちょっと、あのスレ、廃れ気味だよね。
がんばって、細く長く続けるのには異議なし! です。
9591000:02/01/19 01:55
1000
960デフォルトの名無しさん:02/01/19 02:36
2バイト文字1バイト文字混在の文字列の文字数は

var
S : String ;
I : Integer ;
begin
I := Length(S) ;
end;

てな具合ですが、バイト数を求める版Lengthってありますか?
おれのヘルプだとLength()バイト数を返す、って書いてあるけど
WideStringに放り込め
963デフォルトの名無しさん:02/01/19 02:45
// 2バイト文字を2個としてカウントするのでバイト数がわかる
I := Length(AnsiString(S));

// 2バイト文字を1個としてカウントするので文字数がわかる
I := Length(WideString(S));
>>962 そうすると元のバイト数がわかるんですか?信じられない!
2で割ると文字数が分かるってのは知ってるが。
965960:02/01/19 02:51
すみません思い込み勘違いでサンプル間違ってました。
960のコードだと961さんがおっしゃるようにバイト数が求められました。
Lengthで文字数、バイト数ともに求められたのですね。
ありがとうございました。
>>965
ヘルプまんまだよ....
Delのバージョンによってヘルプは違うYO!
以前はあたかも文字数を返すような説明だった記憶が・・・
>>967
アメ公には1バイトも1文字も同じ。連中にとっては Length は“常に”文字数を返すんだよ。

>>964
MBCS / 1バイト2バイト混在文字列の場合、「2で割ると文字数」とはならないぞ
969964:02/01/19 13:49
>>968
964 は 962 へのレスであることが分からんのか?
970デフォルトの名無しさん:02/01/19 19:38
FlashGetでAlt+↑↓するとリストのアイテムを↑↓に移動できますが
それを実現したいのですが、TListViewで配列の要素をPOPしたりPUSHしたり
SHIFTしたりってどうするの?TListViewのメソッドには無いですよね?
971デフォルトの名無しさん:02/01/20 22:03
>>942 自己レスです
結局 Delphian World に登録されてる「CosoleApplication リダイレクト実行ユニット」
てのを改造して使いました。
stdin, stdout, stderr を string で受け渡しできます。

後で見つけたんで使わなかったんだけど、Torry's Delphi Pages に登録されてる
「DOSCommand v.2.0」ってのも良さそうでした。
>「DOSCommand v.2.0」ってのも良さそうでした。
ソース見るかぎり全然良さそうじゃない
973デフォルトの名無しさん:02/01/21 00:06
>>972
価値観の相違ですね( ̄ー ̄)ニヤリ
>>970
TStringsで処理
975デフォルトの名無しさん:02/01/21 10:20
uses 節って unit の interface部、implementation部、両方に書けるけど
どういう風に使い分けてますか?
そもそもどうして2箇所に書けるようになってるんだろう。。。

混乱してます、誰かヒント下さい。
循環参照を回避できる
977デフォルトの名無しさん:02/01/21 10:44
>>976
なるほど、ありがとうございます。
ちょうど 975 を書いた後に循環参照でコンパイル出来ないトラブルに
当たってたところでした。

片方を implementation部に移しても問題ない場合は循環参照を回避
できるけど、両方の unit が interface部で互いを参照しちゃってるような
場合はどうしようもないんですね。

こういう場合は同一 unit に入れとけってことなんでしょうな。
なかなか Pascal も難しい。
>両方の unit が interface部で互いを参照しちゃってるような場合
こういう場合は「自分の設計が悪い」と思い込むことにしてます。
本当に設計が悪いのかは別にして。
相互に参照しあう場合はもう一段階 抽象化するといいと思う

 クラスの参照なら TObjectを受け入れるようにするとか
9801000:02/01/21 12:23
1000
ああ、困ったねえ 1000盗鳥がやってきた。
  次のスレどうするの?
  それとも相談室に統合?
  MLウオッチネタはどこにいけばいいのよ?
982Delフサギコ:02/01/21 12:32
>こういう場合は同一 unit に入れとけってことなんでしょうな。
  ,,,,,,,,,,,,,,,,∧,,∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
〜′,,,,,,,,,,ミ,,゚Д゚彡 <  ちゃうがな。
  UU"""" U U    \_______________

>>978-979さんでガイシュツですが
抽象化って呼ぶのかどうかしらませんが
Unit1とUnit2で同じ型やクラスを使いたいなら
新しくUnit3を作ってそこに記述するといいです。
Unit3からはUnit1やUnit2の定義は参照しないように。

フサは自作でも他作でも
interfaceのusesは汎用クラスライブラリ
implementationのusesはそのアプリだけの処理ユニット
として使い分けてます。

汎用クラスライブラリ的にコードを書くと
ソースがきれいになりますよ。
>>981
>MLウオッチネタはどこにいけばいいのよ?
マ板に作って!
9841000:02/01/21 16:13
1000
>>978
>>両方の unit が interface部で互いを参照しちゃってるような場合
>こういう場合は「自分の設計が悪い」と思い込むことにしてます。
>本当に設計が悪いのかは別にして。

設計が悪いかどうかは別にして、複数のユニット/クラスの依存関係が強い
ことは明らかだから、ひとつのユニットに押し込むか依存関係が強い部分を
抜き出してひとつユニット/クラスをこしらえる。

早い時期にやっておいたほうが跡で困るより楽だよ。
>>983
つくるなら、ML に特化しないスレタイトルをキボンヌ
9871000:02/01/21 18:28
1000
988デフォルトの名無しさん:02/01/21 23:13
usesにmmSystemとwindowsは記してある

// 1トラック目から最後までを再生し
procedure TForm1.Button1Click(Sender: TObject);
var
 mpp: MCI_PLAY_PARMS;
begin
 // 再生を終えたら MM_MCINOTIFYメッセージを送る
 mpp.dwCallback:=DWORD(hWnd);
 mpp.dwFrom:=MCI_MAKE_TMSF(1, 0, 0, 0);
 mciSendCommand(wDeviceID, MCI_PLAY, MCI_FROM or MCI_NOTIFY, DWORD(@mpp));
end;

というのをやったらhWndのところで'エラーが出ました。
カッコの部分がおかしいというのですがhWnd(???)とするのでしょうか?
でもHWNDに引数はいりませんよね?
hWndってなに?Handleのこと?
990988:02/01/21 23:38
>>989
コールバック用のハンドルです。

Handle: HWND〜っていうやつじゃないから
手続きの外に cbHandle: THandle と定義しておいて
mpp.dwCallback:=DWORD(cbHandle); とすれば良いのですね。
991975:02/01/22 05:57
>>978
>こういう場合は「自分の設計が悪い」と思い込むことにしてます。
そうっすね。Delphi、素人なんでよくわかんないんですが、クラス設計とは別に
unit設計のような作業が必要で、相互依存関係のあるクラスは同じ unit に入る
ように設計する必要があるのかなと感じています。

>>979
>相互に参照しあう場合はもう一段階 抽象化するといいと思う
手っ取り早くコンパイルを通すにはこれが簡単ですね。
俺も最初はこれをやってみました。片方の参照ををスーパークラスで定義して、
実際使う際にダウンキャストするってことですよね。
ただ、コンパイラの都合でクラス設計をいじるのは気持ちが悪い気もするです。

>>982
>フサは自作でも他作でも
>interfaceのusesは汎用クラスライブラリ
>implementationのusesはそのアプリだけの処理ユニット
>として使い分けてます。
なるほど、参考になります。

>>985
仰る通りだと思います、急がばまわれですね。
992DELモナー:02/01/22 06:44
       ∧         ∧
        / ヽ        ./ .∧
     /   `、     /   ∧   993
    /       ̄ ̄ ̄    ヽ
    l:::::::::              .l
   |::::::::::  -=・=-    -=・=-  |
   .|:::::::::::::::::   \___/    |
    ヽ:::::::::::::::::::  \/     ノ
994
Hotkey995age!
Hotkey996age!
今だ!997ゲットォォォォ!!
 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄       (´´
     ∧∧   )      (´⌒(´
  ⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡=
         ̄ ̄  (´⌒(´⌒;;
      ズザーーーーーッ
今だ!998ゲットォォォォ!!
 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄       (´´
     ∧∧   )      (´⌒(´
  ⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡=
         ̄ ̄  (´⌒(´⌒;;
      ズザーーーーーッ
今だ!999ゲットォォォォ!!
 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄       (´´
     ∧∧   )      (´⌒(´
  ⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡=
         ̄ ̄  (´⌒(´⌒;;
      ズザーーーーーッ
       ∧         ∧
        / ヽ        ./ .∧
     /   `、     /   ∧   1000
    /       ̄ ̄ ̄    ヽ
    l:::::::::              .l
   |::::::::::  -=・=-    -=・=-  |
   .|:::::::::::::::::   \___/    |
    ヽ:::::::::::::::::::  \/     ノ
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。