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

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

レス数が1000を超えています。これ以上書き込みはできません。
0001DELモナNGNG
DELモナーがどんな厨房疑問でもやさしく答えます。
DELモナは時に私であり、時には別の人。
他のスレに書き込んで罵倒される前に、まずここで質問しよう。
 ∧ ∧
( ´∀`)(    )
0951デフォルトの名無しさんNGNG
>949-950
お前らにはDelよりHSPのが合ってそうだな。
一回試してみろよ。きっと気に入るよ。
0952デフォルトの名無しさんNGNG
>951
お前にはDelよりN88BASICのが合ってそうだな。
一回試してみろよ。きっと気に入るよ。
0953デフォルトの名無しさんNGNG
>>950
みんな見てると思うぞ。
実際役立つTipsも有るし、ネタが有る所は見るんじゃないかな・・
俺は役立ちそうなスレ片っ端からwgetしてNamazuしてる
# 繋いじゃうと何かと無駄な時間が・・・(笑
0954デフォルトの名無しさんNGNG
>>950

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

もっともご両人ともここ見てるってことはあるよな。
0955デフォルトの名無しさんNGNG
もうよさない?
0956デフォルトの名無しさんNGNG
もうやめようよ。
0957DelフサギコNGNG
  ∧,,∧   >>948
 ミ,,  彡  フサ次スレは辞めときますかねえ....
 ミ   ミ  
 ミ〜,, ミ
  ∪ ∪
       細く長く生き延びたいな...
0958デフォルトの名無しさんNGNG
>>957

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

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

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

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

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

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

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

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

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

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

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

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

汎用クラスライブラリ的にコードを書くと
ソースがきれいになりますよ。
0983デフォルトの名無しさんNGNG
>>981
>MLウオッチネタはどこにいけばいいのよ?
マ板に作って!
09841000NGNG
1000
0985デフォルトの名無しさんNGNG
>>978
>>両方の unit が interface部で互いを参照しちゃってるような場合
>こういう場合は「自分の設計が悪い」と思い込むことにしてます。
>本当に設計が悪いのかは別にして。

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

早い時期にやっておいたほうが跡で困るより楽だよ。
0986デフォルトの名無しさんNGNG
>>983
つくるなら、ML に特化しないスレタイトルをキボンヌ
09871000NGNG
1000
0988デフォルトの名無しさんNGNG
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に引数はいりませんよね?
0989デフォルトの名無しさんNGNG
hWndってなに?Handleのこと?
0990988NGNG
>>989
コールバック用のハンドルです。

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

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

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

>>985
仰る通りだと思います、急がばまわれですね。
0992DELモナーNGNG
新スレ
http://pc.2ch.net/test/read.cgi/tech/1011649179/
0993デフォルトの名無しさんNGNG
       ∧         ∧
        / ヽ        ./ .∧
     /   `、     /   ∧   993
    /       ̄ ̄ ̄    ヽ
    l:::::::::              .l
   |::::::::::  -=・=-    -=・=-  |
   .|:::::::::::::::::   \___/    |
    ヽ:::::::::::::::::::  \/     ノ
0994デフォルトの名無しさんNGNG
994
0995Hotkey995age!NGNG
Hotkey995age!
0996Hotkey996age!NGNG
Hotkey996age!
0997デフォルトの名無しさんNGNG
今だ!997ゲットォォォォ!!
 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄       (´´
     ∧∧   )      (´⌒(´
  ⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡=
         ̄ ̄  (´⌒(´⌒;;
      ズザーーーーーッ
0998デフォルトの名無しさんNGNG
今だ!998ゲットォォォォ!!
 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄       (´´
     ∧∧   )      (´⌒(´
  ⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡=
         ̄ ̄  (´⌒(´⌒;;
      ズザーーーーーッ
0999デフォルトの名無しさんNGNG
今だ!999ゲットォォォォ!!
 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄       (´´
     ∧∧   )      (´⌒(´
  ⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡=
         ̄ ̄  (´⌒(´⌒;;
      ズザーーーーーッ
1000デフォルトの名無しさんNGNG
       ∧         ∧
        / ヽ        ./ .∧
     /   `、     /   ∧   1000
    /       ̄ ̄ ̄    ヽ
    l:::::::::              .l
   |::::::::::  -=・=-    -=・=-  |
   .|:::::::::::::::::   \___/    |
    ヽ:::::::::::::::::::  \/     ノ
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。