5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

Delphi相談室その7

1 :Delphi1 から使ってます:02/09/21 11:45
Borland Delphiに関する質問・相談などを扱っています。

ボーランド
http://www.borland.co.jp/

<関連スレッド>
モナーの *やさしい* Delphi質問スレ Ver.8
http://pc3.2ch.net/test/read.cgi/tech/1027873869/l50

・雑談はこちら
ミ,,゚Д゚彡フサギコのフサフサDelphi談話室E
http://pc3.2ch.net/test/read.cgi/tech/1031668744/l50

2 :Delphi1 から使ってます:02/09/21 11:46

■過去スレ
Delphi相談室その6
http://pc3.2ch.net/test/read.cgi/tech/1028436692/l50
Delphi相談室その5
http://pc3.2ch.net/test/read.cgi/tech/1022921598/ (html化待ち)
Delphi相談室その4
http://pc.2ch.net/tech/kako/1018/10182/1018211735.html
Delphi相談室その3
http://pc.2ch.net/tech/kako/1010/10101/1010153466.html
Delphi相談室その2
http://pc.2ch.net/tech/kako/995/995950803.html
Delphi相談室
http://piza.2ch.net/tech/kako/971/971261573.html


3 :Delphi1 から使ってます:02/09/21 11:46
あと適当に貼っておいてください。

4 :デフォルトの名無しさん:02/09/21 14:13
  ∧_∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ( ´∀`)<. Delモナーがどんな厨房疑問でもやさしく答えます。
 (    ) .| Delモナーは時に私であり、時には別の人。
 | | |  | 他のスレに書き込んで罵倒される前に、まずここで質問しよう。
 (__)_)  \_________________________

5 :デフォルトの名無しさん:02/09/21 14:19
>>4
適当すぎるわヴォケ

6 :デフォルトの名無しさん:02/09/21 16:03
Del7が26日発送ってことは、金曜日か土曜に届くから、
週末はDel7で遊べっていう個人ユーザへの配慮ですか?

7 :デフォルトの名無しさん:02/09/22 04:58
なんだこの廃れ具合は・・・

8 :デフォルトの名無しさん:02/09/22 13:10
久しぶりに Delphi Direct を起動してみたが
Delphi7 の情報がまったく無いのはどういうわけだ Borland


9 :デフォルトの名無しさん:02/09/22 18:04
>>7
ゲー製作のノベルゲームスレにでも行ってるんじゃないの?

10 :デフォルトの名無しさん:02/09/22 20:30
>>9
あそこってさりげに人気スレなのか?

11 :デフォルトの名無しさん:02/09/23 01:17
やっぱ、やさしいスレと統合した方がいいのかな…

12 :やさスレ:02/09/23 01:23
>>11
おう、いつでも引き受けるぞ。
もちろんベースは俺らだからスレタイは俺らのがそんぞくだがな

13 :Delフサギコ ◆VzDeLphI :02/09/24 17:17
 ミ,,゚Д゚ミ WideStringのUnicodeで
       カタカナ⇔ひらがな
       全角⇔半角
変換など、行うのは、どうするのでしたでしょうか。。

14 :デフォルトの名無しさん:02/09/24 17:46
>>13
LCMapString


15 :Delフサギコ ◆VzDeLphI :02/09/24 18:44
サンクスコ ミ,,゚Д゚彡ノ
[Delphi:41843] Re: 半角の数字を全角に( 遅レス+解決したので)

16 : :02/09/26 02:26
昨日Delphi 6 Personalをダウンロードしてユーザ登録して
メールで ライセンスキーとインストールキー届いたんだけど
インストール時に「キーが正しくありません」って跳ね返されてます(T_T
どうしてでしょうか?
のっけからつまずいてます・・・・

17 :               :02/09/26 02:27
あ でけた♪

18 :Delフサギコ ◆VzDeLphI :02/09/26 04:48
    ,,,,,,,,,,,,,,,∧,,∧   /こんな感じで
  〜′,,,,,,,,,,ミ,,゚Д゚彡< 
   UU"""" U  ⊃  \

function KanaToHira(const Source: WideString): WideString;
var
 Len: Integer;
begin
 Result := '';
 Len := Length(Source);
 SetLength(Result, Len);
 Windows.LCMapStringW(
  GetUserDefaultLCID(),
  LCMAP_HIRAGANA,
  PWideChar(Source),
  Len + 1,
  PWideChar(Result),
  Len + 1
  );
end;

19 :Delフサギコ ◆VzDeLphI :02/09/26 04:48
    ,,,,,,,,,,,,,,,∧,,∧   /API使うので
  〜′,,,,,,,,,,ミ,,゚Д゚彡< 
   UU"""" U  ⊃  \

function HiraToKana(const Source: WideString): WideString;
var
 Len: Integer;
begin
 Result := '';
 Len := Length(Source);
 SetLength(Result, Len);
 Windows.LCMapStringW(
  GetUserDefaultLCID(),
  LCMAP_KATAKANA,
  PWideChar(Source),
  Len + 1,
  PWideChar(Result),
  Len + 1
  );
end;

20 :Delフサギコ ◆VzDeLphI :02/09/26 04:49
    ,,,,,,,,,,,,,,,∧,,∧   /
  〜′,,,,,,,,,,ミ,,゚Д゚彡<  あってるのん?
   UU"""" U  ⊃  \ 

   ML検索してもLCMapStringW全然載ってない
   誰もUNICODEとかキにしてないんか...ゴルァ

procedure TForm1.Button1Click(Sender: TObject);
begin
 Check('あああ', KanaToHira('アあア'));
 Check('あかさたなはまやらわをん', KanaToHira('アカサタナハマヤラワヲン'));
 Check('アアア', HiraToKana('あアあ'));
 Check('アカサタナハマヤラワヲン', HiraToKana('あかさたなはまやらわをん'));

 Check('アアア', KanaToHira('アアア'));
end;

参考にはAcidFloor
http://www.wwlnk.com/boheme/delphi/vbtodel/vbfaq/vbd0050.htm
Delphi工房
http://www.din.or.jp/~egawa-n/delphi/tips/convert_mbcs.html

21 :Delフサギコ ◆VzDeLphI :02/09/26 05:38
   ?
  ∧,,∧,,,,,,,,,,,,,,,      /LOCALE_USER_DEFAULTとGetUserDefaultLCID()の
 ミ゚Д゚,,彡,,,,,,,,,,,,ヾ〜  <  使い分けと、文字列長の指定が正しいかどうか、イマ二つほど
   U U """"UU     \わかないけど、これでいいのかな?
function MapStringW(const Source: WideString; dwMapFlags: DWORD): WideString;
var Len: Integer;
begin
Result := '';
Len := LCMapStringW(LOCALE_USER_DEFAULT, dwMapFlags, PWideChar(Source), -1, nil, 0);
SetLength(Result, Len-1);
LCMapStringW(LOCALE_USER_DEFAULT, dwMapFlags, PWideChar(Source), Length(Source)+1, PWideChar(Result), Len);
end;
function KanaToHira(const Source: WideString): WideString;
begin Result := MapStringW(Source, LCMAP_HIRAGANA);end;
function HiraToKana(const Source: WideString): WideString;
begin Result := MapStringW(Source, LCMAP_KATAKANA);end;
function ZenkakuToHankaku(const Source: WideString): WideString;
begin Result := MapStringW(Source, LCMAP_HALFWIDTH);end;
function HankakuToZenkaku(const Source: WideString): WideString;
begin Result := MapStringW(Source, LCMAP_FULLWIDTH);end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Check('あああ', KanaToHira('アあア'));
Check('あかさたなはまやらわをん', KanaToHira('アカサタナハマヤラワヲン'));
Check('アアア', HiraToKana('あアあ'));
Check('アカサタナハマヤラワヲン', HiraToKana('あかさたなはまやらわをん'));
Check('アアア', KanaToHira('アアア'));
Check('abc', ZenkakuToHankaku('abc'));
Check('アアア', ZenkakuToHankaku('アアア'));
Check('abc', HankakuToZenkaku('abc'));
Check('アアア', HankakuToZenkaku('アアア'));
end;

22 :デフォルトの名無しさん:02/09/28 13:31
外の比較的マイナーな文学作品を翻訳出版する
小さな出版社がある。そして文学ファンはこういった出版社を
潰さないため、今後も翻訳を続けてもらうために
1人で同じ本を2・3冊買うことが良くある。

我々もこういう時だからこそDelphi7を買って
ボーランドを支えるべきなんじゃないだろうか。
Delphi7の売り上げはDelphi8以降の開発資金となるし、
ボーランドジャパンの今後に大きな影響をもたらすだろう。

Delphi7の出来のみを云々するのは
あまりにも近視眼的ではないだろうか?


23 :デフォルトの名無しさん:02/09/28 13:40
なぜ 22 はこんなスレをつけるのか。

その謎は以下のスレに…
http://pc3.2ch.net/test/read.cgi/tech/1031668744/536-538

ここにかかれている内容を信じるかどうかはあなた次第。
Delphi7 を注文してしまった人は、すぐに答えが出るでしょう。


24 :デフォルトの名無しさん:02/09/28 13:46
社員だから

25 :デフォルトの名無しさん:02/09/28 13:59
☆★☆★☆ アンチに朗報! ☆★☆★☆

VS.NET 7.0と.NET 1.1は連携できません!
.NET 1.1を導入すると、VS.NET 2003を買わされる羽目になります!

26 :デフォルトの名無しさん:02/09/28 20:29
今、テキストエディターを作っている(作ろうとしている)のですが、
メモ帳と同じフォントにしたいのです。
しかし行間が大きくて、同じにならないのですが、どうすればいいのでしょうか?

あと、RichEditで作っているのですが、Memoの方が良いのでしょうか?

どなたかお願いします。

27 :デフォルトの名無しさん:02/09/28 20:31


28 :デフォルトの名無しさん:02/09/28 20:34
>>26
TEditor

29 :デフォルトの名無しさん:02/09/28 20:38
フォントと行間って関係あるの?

30 :デフォルトの名無しさん:02/09/28 20:39
>>29
ないよ…

31 :デフォルトの名無しさん:02/09/28 20:43
>>30
うんこするの?

32 :デフォルトの名無しさん:02/09/28 20:52
>>28
http://www.vector.co.jp/soft/win95/prog/se114384.html
これですか?
>>29
あ、関係ないですね…。すいません。


33 :デフォルトの名無しさん:02/09/28 21:01
そうです

34 :デフォルトの名無しさん:02/09/28 21:19
>>26
Delphiは6?
6より前のは使ったことないから知らないけど、
6ならHelpのチュートリアルでテキストエディタ説明してるよ。
それ辿っていけば?

それと、メモ帳と同じフォントにして、
サイズもそれと合わせたら同じようになるはずだけど…?

あと異なる書式を混在させるようなことをしなければ
TMemoで十分だと思うけど。
(RichEdit使ったことないんでよく分からんが…)

35 :デフォルトの名無しさん:02/09/28 21:26
行間を指定したいんでしょ
TMemoもTRichEditも無理

36 :デフォルトの名無しさん:02/09/28 21:33
オナニードローでできるよん

37 :名無しさん@お腹いっぱい。:02/09/28 21:47
メモ帳のフォントとTMemoのフォントとサイズ合わせたら行間も同じになったよ。


38 :デフォルトの名無しさん:02/09/28 22:41
>>36
がいしゅつ

39 :デフォルトの名無しさん:02/09/28 23:50
とりあえず>>28を使ってみようと思います。
シェアウェア(カンパウェア)なのがちとあれですが…。
レス下さった方、ありがとうございました。

40 :デフォルトの名無しさん:02/09/29 00:45
richeditの何がそんなに気にくわないんだか…?
別に構わないと思うけどなぁ…。
読み込める量からすっとMemoは非推奨だとは思うけど。

41 :デフォルトの名無しさん:02/09/29 00:46
>>40
まだ9xなんだ

42 :40 ◆W9uCUQvg :02/09/29 00:48
>>41
そおそお(藁
95!95!(藁

43 :デフォルトの名無しさん:02/09/29 01:48
imageの上に透明のimageを置き
上のimageにCanvasで図形を描くときにちらつきます。

delphi5ではちらつかなかったのですが、
delphi6にしてからちらつくようになりました。

DoubleBuffered や WM_ERASEBKGNDを無視するように
もしましたがちらつきます。
どなたかご教授をお願いします。


44 :デフォルトの名無しさん:02/09/29 01:49
なんでDoubleBufferedを無視するの?

45 :デフォルトの名無しさん:02/09/29 01:50
なんでオフスクリーンにしないの?

46 :43:02/09/29 01:51
>>44
DoubleBuffered := True
です

47 :デフォルトの名無しさん:02/09/29 01:53
で、imageを2つも重ねて何がしたいの?

48 :43:02/09/29 02:01
>>47
知ったことか

49 :デフォルトの名無しさん:02/09/29 02:03
16bitの画像データをテキストに変換したいのですが、
VBでやるとデータ型がない上に遅すぎて使い物になりません。
やっぱりdelphiでやるのがいいのでしょうか?
データサイズは512*512または128*128*128です。

50 :デフォルトの名無しさん:02/09/29 02:11
コンパイラなら何でもいいよ。
速度で言うとVCのが速い。

51 :デフォルトの名無しさん:02/09/29 02:15
>>48
まあガムバッテちらつきを無くしてくれ。

52 :デフォルトの名無しさん:02/09/29 02:43
うーん、やっぱりCですか。
本職じゃないのでお手軽にやりたかったのですが・・・。
ちょっと勉強してみます。

53 :デフォルトの名無しさん:02/09/29 02:51
DelphiならTBitmapに画像を読み込ませてコンポーネント
リソース形式(16進)でストリームに吐かせるだけだからほんの数行
書くだけ。

54 :53:02/09/29 03:25
こんな感じかな?
procedure TForm1.Button1Click(Sender: TObject);
var
 ws: TFileStream;
 ms: TMemoryStream;
 img: TImage;
begin
 if not OpenDialog1.Execute then Exit;
 if not SaveDialog1.Execute then Exit;
 img := TImage.Create(Self);
 ws := TFileStream.Create(SaveDialog1.FileName, fmCreate);
 ms := TMemoryStream.Create;
 try
  img.Picture.LoadFromFile(OpenDialog1.FileName);
  ms.WriteComponent(img);
  ms.Seek(0, soFromBeginning);
  ObjectBinaryToText(ms, ws);
 finally
  img.Free;
  ws.Free;
 end;
end;


55 :43:02/09/29 03:29
>>51
>>48は騙りです

56 :デフォルトの名無しさん:02/09/29 03:36
>>55
了解した。ちらつきの件がむばってくれ。
2枚の画像を重ねる理由が判らないけど、
合成処理をさせたいだけならオフスクリーンを
使った処理でいいのでは?

57 :デフォルトの名無しさん:02/09/29 07:14
> 128*128*128
もしかして研究でボクセルやってらっしゃいますか?
CTスキャンみたいなの?
これだとTBitmapは無理だろうから、自作しないといけないからがんばって

>>43
OffScreenを使うに一票。
目に見えないBitmapの上にDraw系の命令で一旦書いておいて、
最後に目に見えるところに一括転送。するとちらつかない。

58 :デフォルトの名無しさん:02/09/29 13:57
>56だす。
オフスクリーンに追加しておくと。。。
TImageをいじくるよりも、むしろTControlを使って
表示用のみのTBitmap、オフスクリーン用のTBitmapを
用意しておき、合成はオフスクリーンで行い
合成の結果を表示用へ書き込む。
そしてTControlへの常時描画は表示用を使用する。
この時、WM_ERASEBKGNDを調整するように・・・
まあ、DoubleBufferを自分でやるような感じですが・・・

59 :43:02/09/30 04:38
>>56>>57>>58
ありがとうございます。
なんとDoubleBufferでいけてました。お手数かけました。
メッセージを捕まえたり、ポートを調べたりしてたのが何だったんだ!
これで土日潰しました。勉強になったけど・・・


60 :43:02/09/30 05:04
DoubleBuffer恐るべし。
学校なんでおやすみなさい。

61 :デフォルトの名無しさん:02/09/30 06:34
なんだポートって?DoubleBufferにポートってなんだー?謎だ・・・

62 :デフォルトの名無しさん:02/09/30 06:37
>>61
ネタだよな?

63 :デフォルトの名無しさん:02/09/30 10:01
ごめん、俺マジでわからん

64 :デフォルトの名無しさん:02/09/30 10:38
海に向かって叫んでたんだろ

65 :デフォルトの名無しさん:02/09/30 13:06
TRichEditを右クリックしたとき
TMemoを右クリックしたときと同じように
ポップアップを表示させるのにはどうしたらよいのでしょうか?
TPopupMenuで作成するしかないのでしょうか?

66 :デフォルトの名無しさん:02/09/30 17:04
>>65
他に方法があるなら教えてくれ。

67 :デフォルトの名無しさん:02/09/30 19:22
D5 -> D7のバージョンアップで悩んでいます。
いったい DsgnIntf はどう処理したらいいんだろ?
TDefaultEditor を継承してダブルクリック時のデフォルトイベントを変更してたんだけど
DsgnIntf はtoolAPIの DsgnIntf.pasを使っていいのかな?

TDefaultEditorがDesignEditors に変わってるし、
EditProperty の引数の型が変わってるから変更したら、今度は
IProperty が定義されてないと出る

68 :67:02/09/30 20:34
ごめん DsgnIntf -> DesignIntf って事みたいね


69 :デフォルトの名無しさん:02/09/30 20:51
THoge = class(TCustomControl)
private
FHeader: THeaderControl;
と宣言してあるFHeaderが、
THogeのprocedure WMHScroll(var msg: TWMHScroll); message WM_HSCROLL;の中で、
ScrollWindowEx(Handle, -HScrollInc, 0, nil, @CR, 0, @R, SW_SCROLLCHILDREN);
InvalidateRect(Handle, @R, False); //R,CR:TRect; HScrollInc: integer;
としても、ちゃんと再描画してくれません。
どのようにすれば、
このFHeaderはちゃんとスクロールして再描画もしてくれるのでしょうか?

70 :デフォルトの名無しさん:02/09/30 21:02
フォームを表示したとき、マウスポインタが
OKボタンの真ん中に来るように
http://www.borland.co.jp/qanda/delphi/d0002284.html
ココを参考に以下のソースを書いたのですが
●の所に「演算子またはセミコロン (;) が必要です」とエラーが出ます。
上記のページに
該当するバージョン:Delphi 1.0,Delphi 2.0,Delphi 3.0/Delphi3.1,Delphi4
と書いてあったのですがDelphi6だとダメなのでしょうか?

procedure TOptionDlg.FormShow(Sender: TObject);
var
Point: TPoint;
begin
Point := Point(OKBtn.Width div 2, OKBtn.Height div 2);//●
Point := OKBtn.ClientToScreen(Point);
SetCursorPos(Point.X, Point.Y);
end;


71 :デフォルトの名無しさん:02/09/30 21:04
Qと書け

72 :デフォルトの名無しさん:02/09/30 21:06
>70
たぶん変数の名前をPointにしたせいで、
関数のPointを変数のPointと認識しちゃってるんだんと思う。
だから変数の名前を変えればたぶんOK

73 :デフォルトの名無しさん:02/09/30 21:08
var
Q : TPoint;

74 :70:02/09/30 21:13
>>71
>>72
>>73
ああ、そこでしたか・・・
助かりましたありがとうございます。

75 :Indyのことでお尋ねします。:02/09/30 21:20
ファイルを転送するプログラムを組みたいのですが、
どうしたらよいでしょうか?教えてください。

76 :デフォルトの名無しさん:02/09/30 21:23
少しは調べろ

77 :Indyのことでお尋ねします。:02/09/30 21:33
>>76
調べましたがアフォなので探せないし、わかりませんでした。

78 :デフォルトの名無しさん:02/09/30 21:34
Indyはソース公開されてるんだからソース読め。

79 :Indyのことでお尋ねします。:02/09/30 21:38
どこでしか?

80 :デフォルトの名無しさん:02/09/30 21:39
モナーに聞いて来い

81 :デフォルトの名無しさん:02/09/30 21:40
インストールしたらついてくる。

82 :デフォルトの名無しさん:02/09/30 21:40
ウザいよ>>76,78,80

83 :Indyのことでお尋ねします。:02/09/30 21:43
>>82 感謝!!

84 :Indyのことでお尋ねします。:02/09/30 21:44
アフォだからソース見ても分かりません。
消えろと言うのならば、消えますがいかがいたしましょう。

85 :デフォルトの名無しさん:02/09/30 21:45
FTPクライアントを作りたいということですか?

FTPサーバを作りたいということですか?

その両方ですか?

それともまったく別のものを作りたいんですか?

86 :Indyのことでお尋ねします。:02/09/30 21:52
FTTPみたいなものを。

87 :デフォルトの名無しさん:02/09/30 21:53
FTTPとは?

88 :デフォルトの名無しさん:02/09/30 21:53
FTTP

( ̄ー ̄;)。。。ん?

89 :Indyのことでお尋ねします。(俺って厨房?):02/09/30 21:57
・・・。
とにかくサーバーにファイルを転送するファイルです。

90 :デフォルトの名無しさん:02/09/30 21:58
まぁ間違いなく厨房でしょう。

とりあえずFTPクライアントを作りたいということでいうわけだね。
んで、IndyのFTPクライアントは使ってみたのかい?

91 :デフォルトの名無しさん:02/09/30 22:04
>>89
FTPサーバはサーバのサービスを起動するだけだから
(NT系なら付いてるよ WinXP Homeはどうかしらんけど)
FTPクライアントアプリを作ればOK

フォームにIdFTPを貼り付けてヘルプを読むべし

92 :Indyのことでお尋ねします。(俺って厨房?):02/09/30 22:05
IdHTTPをターゲットにしてやってますが・・・。

93 :デフォルトの名無しさん:02/09/30 22:06
おまえプロトコルについてまず勉強しろ。
ネットワークアプリは今のおまえには無理。

94 :デフォルトの名無しさん:02/09/30 22:10
( ´,_ゝ`)プッ
Delphiが馬鹿にされるわけだな

95 :デフォルトの名無しさん:02/09/30 22:15
>>93
ハゲシクドウイ

ちと質問。
改行コードの定数ってどんなんだっけ?
ド忘れしてしもた。

96 :デフォルトの名無しさん:02/09/30 22:17
\r\n -> #13#10


97 :デフォルトの名無しさん:02/09/30 22:17
#13#10

98 :デフォルトの名無しさん:02/09/30 22:20
CRLF #13#10
CR #13
LF #10


99 :95:02/09/30 22:24
>>96-98
スマソ、VBでいう「VbCrLf」みたいなのはなかったっけ?
折れの勘違いだったかな?

# 煽りじゃないので念のため

100 :デフォルトの名無しさん:02/09/30 22:27
>>95
sLineBreak

101 :デフォルトの名無しさん:02/09/30 22:36
あんまり検証してないけどVCL全体で#13がハードコーディングされてるのに
部分的にsLineBreak使うとおかしくならない?
クロス開発のときにね。

102 :95:02/09/30 22:39
>>100
サンクス 助かったよ

・・・と言いたい所だったけど、
折れのD5では存在しないみたいだ(鬱
Del7買うかな・・。

103 :デフォルトの名無しさん:02/09/30 22:40
sLineBreak = {$IFDEF LINUX} #10 {$ENDIF} {$IFDEF MSWINDOWS} #13#10 {$ENDIF};

むしろクロス用と思われるけど・・・

104 :95:02/09/30 22:40
>>101
VCLでもそう書かれてたのか。
どうも折れの勘違いか何かだったような気がしてきた。
スレ汚しスマソ

105 :デフォルトの名無しさん:02/09/30 22:47
つか、なんでsLineBreakってヘルプに載ってないんだろ。
…載ってないよな? 少なくとも、キーワード検索しても出ない。

106 :101:02/09/30 22:51
>>103
sLineBreakが両対応で
VCLが#13#10ハードコーディングで
CLXが#13ハードコーディングになってるのが
なんかイヤだってだけなんだけどね。

107 :100=103:02/09/30 22:56
>>106
今調べたけど、その通りみたいだね

ヘルプにも載ってないし
Del6出荷直前に気が付いて慌てて用意したって感じかも

108 :デフォルトの名無しさん:02/10/02 00:56
TreeViewのノードをシングルクリックで展開、収縮
しかも前まで展開してたノード収縮させるにはどうすればいいのでしょうか?
例・sleipnilのブックマークみたいの
こゆのは書いてみたのですが
これだと現在選択されているノードを
ワンクリックしても展開、収縮されない・・・
private
{ Private 宣言 }
FlagNode: TTreeNode;



procedure TMainForm.TreeViewChange(Sender: TObject; Node: TTreeNode);
begin
if Node.Expanded = True then
Node.Expanded := False
else
Node.Expanded := True;
FlagNode := Node;
end;


109 :デフォルトの名無しさん:02/10/02 00:57
procedure TMainForm.TreeViewChanging(Sender: TObject; Node: TTreeNode;
var AllowChange: Boolean);
begin
if FlagNode = nil then Exit;
if (FlagNode.Expanded = True) and (FlagNode <> Node) then
begin
FlagNode.Expanded := False;
end;
end;
procedure TMainForm.TreeViewEditing(Sender: TObject; Node: TTreeNode;
var AllowEdit: Boolean);
begin
AllowEdit := False;
end;

110 :デフォルトの名無しさん:02/10/02 01:17
>>108

これだけ

procedure TForm1.TreeView1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
Node:TTreeNode;
begin
Node := TreeView1.GetNodeAt(X,Y);
if Assigned(Node) then
Node.Expanded := not Node.Expanded;
end;

111 :デフォルトの名無しさん:02/10/02 01:20
プロパティで制御しろ

112 :デフォルトの名無しさん:02/10/02 01:23
>>108
AutoExpand=true でいいんじゃないの?
名前からじゃ効果が想像しづらいが。

113 :デフォルトの名無しさん:02/10/02 01:25
>>111

AutoExpand := true;

のときと、false で 110 のときとでは動作が違うね。

114 :デフォルトの名無しさん:02/10/02 01:48
どう違うの?

115 :デフォルトの名無しさん:02/10/02 01:53
>>114

ためしてごらん。

AutoExpand := true;

では、該当ノードの拡張・折りたたみの影響が、兄弟ノードのそれに
影響を与える

116 :デフォルトの名無しさん:02/10/02 02:15
AutoExpand := true;

では、複数のレベルの同じノードがある場合、そのひとつだけが拡張できる

117 :デフォルトの名無しさん:02/10/02 02:17
AutoExpand := true;

の挙動はバグ。ぜんぜん標準的じゃない。

118 :デフォルトの名無しさん:02/10/02 02:48
> AutoExpand := true;
>
  ↑揃いも揃って無駄な空行・・・

119 :デフォルトの名無しさん:02/10/02 02:52
>>118

お前のカキコが一番無駄>オレモナー

120 :デフォルトの名無しさん:02/10/02 03:01
108 は寝てしまったかぁ

121 :デフォルトの名無しさん:02/10/02 03:22
>>110
おお、何て簡潔に・・・
ココに書き込む1時間前は
もっと長々書いてた自分が恥ずかしい。。
>>111
>>112
>>113
AutoExpand、初めて聞くブロパティーです。。
ほんと俺は何も知らない小僧だわ・・

みなさん、ほんとありがとうございます!
早速2つとも試してみます。

122 :108:02/10/02 03:23
>>121


123 :デフォルトの名無しさん:02/10/02 12:40
Delphiはじめたばかりで手元に書物もないのでヘルプファイルのチュートリアルの
テキストエディタをつくってみようとおもったのですが
いきなりAddtionalにある(らしい)ActionManagerってコンポーネントってのが
のが見つからなく詰まりました。
一番最初のほうの説明書き読んだら
「ここで取り上げている機能の一部は Delphi の Personal 版では使用できません。」
と、書いてあるし(T^T)
プログラム経験の無い方でDelphiから入った人はどうやってDelphi勉強しましたか?


124 :デフォルトの名無しさん:02/10/02 13:16
>>123
モナーの *やさしい* Delphi質問スレ
http://pc.2ch.net/test/read.cgi/tech/1003113413/

このすれの731付近を参考に

125 :デフォルトの名無しさん:02/10/02 13:22
D7でXPManifestを貼り付けてXPスタイルのフォームに変更してみました、
ところが、時々ラベルが再描画されない事があります。
しかたなくRepaint等を試してみましたが駄目でした。
WindowsXP側の設定で「視覚テーマを無効にする」としてプログラムを
実行すると旧来通りの画面だと正常に動作します(当然か・・・)

XPManifestを使って問題があった方はいらっしゃいますか?

126 :デフォルトの名無しさん:02/10/02 13:42
>>124
いくつのですか?

127 :ねこま:02/10/02 15:16
XPManifest? XPManager の typo ですよね.
私は XP も D7 も持っていないのでわかりませんけど,
Manifest リソースをアタッチしないとだめなんではなかったっけ?
XPManager といってもそこは自動ではなかったような.


128 :デフォルトの名無しさん:02/10/02 15:32
さっそくD7にアップデートしたのですが、生成されるEXEファイルに付く
デフォルトのアイコンのデータ *.ICO がどこにあるのか、わかりません。
どこにあるのでしょうか?

129 :デフォルトの名無しさん:02/10/02 15:47
res

130 :デフォルトの名無しさん:02/10/02 15:52
>>127
えっ、そーなのかぁ、知りませんでした、
ちゃんと調べなおして出直して来ます。ありがとう

131 :デフォルトの名無しさん:02/10/02 15:53
http://yahooo.s2.x-beat.com/

132 :デフォルトの名無しさん:02/10/02 18:08
>>123
俺が持ってる本は
http://www.amazon.co.jp/exec/obidos/ASIN/4822216888/ref=sr_aps_d_1_1/249-9304172-6892345
これだけ。
詰ったらネット検索か図書館。

今で約半年だが、
まぁ自分の身の回りのツール位ならすぐに作れる。
たまにJaneの改造に参加。

133 :デフォルトの名無しさん:02/10/03 00:43
・データ名 Edit1.Text
・データ番号 Edit2.Text
・データの内容(改行有り) Memo1.Text

これらをひとくくりに
何個もこのようなデータを1つのテキストファイルに保存したいのですが
何かいい方法あったら教えてください。
テキストファイルでなくても保存できて読み込めればどんなファイルでも
いいのでこういう方法がいいとかあったらおながいします。

134 :Delフサギコ ◆VzDeLphI :02/10/03 00:57
 ミ,,゚Д゚彡普通にIniファイルでいいのでは...

135 :デフォルトの名無しさん:02/10/03 01:05
>>133
InterbaseとかMySQLで管理するのはどう?

136 : :02/10/03 01:11
まっ… まだアクソンジャーマネのネタが来るのかよ!

137 :デフォルトの名無しさん:02/10/03 01:12
>>133

TMemoryStream のインスタンスをつくって、TWriter のインスタンスを使って

・先頭にデータの数を書き込み

・DataName(string)
・DataNo(integer)
・Data(string)

を TWriter の WriteString と WriteInteger メソッドで書き込む
これをデータ数分くりかえして、最後に SaveToFile() する。

読み込みは、TReader のインスタンスを使って、RaedInteger と ReadString
メソッドを使って、データ数を読み込み、その数分だけ、上記のデータの読み
込みを繰り返す

138 :デフォルトの名無しさん:02/10/03 01:14
>>133
iniでいいと思う。一番簡単だ。

139 :デルファイの名無しさん:02/10/03 01:14
>>133
少量であれば、TCollectionItem派生のクラスに持たせてストリーミングという手もあります。
でも、量が多ければ>>135氏の言うようにデータベースの方がいいと思います。
(改行があるので*.iniは没)

140 :138 ◆hw.YwvrE :02/10/03 01:18
あ、最後の行、読んでなかった…。
量が多いとiniはちょっとナニだしな。
138は忘れてくで。

141 :133:02/10/03 01:23
>>134
>>138
iniは32kbまでしか扱えないって何かで見たんですけど
大丈夫でしょうか?
データは結構でかくなると思います。
>>135
データーベースは
勉強しないと。ググルで調べてみます。
おすすめの解説サイトとかありますか?
>>137
>>139
なるほど、いつぺんやってみます。

みなさんレスサンクスです。

142 :133:02/10/03 01:25
あ、書いてたらレスが、、

143 :デフォルトの名無しさん:02/10/03 01:45
うんこ

144 :デフォルトの名無しさん:02/10/03 01:49
(´-`)。o ○ (とうとうH○Pスレみたいなレスが…)

145 :デフォルトの名無しさん:02/10/03 01:55
>>141
TMemINIFile使えば何メガでもOKだし、OSの違いによって動作も変わらない。


146 :デフォルトの名無しさん:02/10/03 02:06
>>145
TMemINIFileは改行OK?

147 : :02/10/03 02:08
つーか、検索して自分でやってみるがヨロシ。

148 :デフォルトの名無しさん:02/10/03 03:17

●●●●●●●●「オセロさえ納期内に作れない=OO役立たず 」祭り●●●●●●●
/|         |  |_____ΦΦΦΦΦΦΦΦΦΦΦ||ΦΦΦ
  |         |  | ̄ ̄ ̄ /|                    ||
  |         |  |   / /|TTTTTT   TTTTTTTTTT||TTTTT
  |        /\ |  /|/|/|^^^^^^ |三三| ^^^^^^^^^^^||^^^^^^^
  |      /  / |// / /|
  |   /  / |_|/|/|/|/|
  |  /  /  |文|/ // /
  |/  /.  _.| ̄|/|/|/         Λ_Λ
/|\/  / /  |/ /           (___)
/|    / /  /ヽ            /〔 非OO 〕〕つ
  |   | ̄|  | |ヽ/l            `/二二ヽ
  |   |  |/| |__|/   Λ_Λ     / /(_)
  |   |/|  |/      ( ´∀`)   (_)    Λ_Λ
  |   |  |/      // /  ^ ̄]゚        (`   )
  |   |/        ゚/ ̄ ̄_ヽ         ⊂〔〔 非OO 〕


149 :Delフサギコ ◆VzDeLphI :02/10/03 03:27
 ミ;゚Д゚彡改行だめみたいだ・・・知らなかった

150 :デフォルトの名無しさん:02/10/03 08:28
改行とか特殊コード入れたければ 自前で%エンコードか \エンコードいれるといいよ

151 :デフォルトの名無しさん:02/10/03 10:04
>>150

で、読み込みの時はデコードの手間が増えるわけ?

152 :デフォルトの名無しさん:02/10/03 10:17
>>151
 そうだよ。どうせファイルアクセスするんだから、その時間は隠れてしまうよ

153 :デフォルトの名無しさん:02/10/03 11:17
>>152
でも手間が増えるんだろ。だめじゃん。

154 :デフォルトの名無しさん:02/10/03 11:24
手間ったって
TMyMemINIFile を継承して
WriteEscString ReadEscString を一度作るだけだろ


155 :デフォルトの名無しさん:02/10/03 11:56
>>151,153
痛すぎる・・・

156 :デフォルトの名無しさん:02/10/03 12:02
なぜそうまでして ini にこだわる?

157 :デフォルトの名無しさん:02/10/03 12:04
もともと *.ini を使うのが簡単、という文脈の流れで

158 :デフォルトの名無しさん:02/10/03 12:07
レジストリじゃなくてiniに拘る理由?
そりゃ、windowsフォルダに入れるなら糞だけどローカルに作ると
1、速い
2、実行ファイルを別のディレクトリに入れれば相互に独立する
3、環境を移す時にディレクトリを丸ごとコピーするだけでいい
4、アンインストールも楽


159 :デフォルトの名無しさん:02/10/03 12:08
レジストリのほうが動作は速いんじゃないの?

160 :デフォルトの名無しさん:02/10/03 12:22
>>158
>>159
俺もそうおもうけどINIの方が使い捨てプログラムには楽かと

161 :デフォルトの名無しさん:02/10/03 12:23
>>159
 サイズによると思うよ。
 巨大な iniファイルを作ると1文字の追加削除でも全件読まなければならない iniより
 木構造で管理されてるレジストリが速いだろうね

それでもアプリ起動時に全件読んで、終了時に全件書き込むような使い方なら iniの方が速いんじゃない?


162 :デフォルトの名無しさん:02/10/03 13:13
なんで >>133 の質問で「INIファイルかレジストリか」って
議論になるのかわからん。
各項目のサイズ。レコード数。更新の頻度。とかを考えないと
テキストのまま保存されるINIファイルは論外になる可能性が
あるでしょ。
それに、こんなことでレジストリを使っていていいのかって
問題もある。たとえばNT系列でAdministrator以外でも
きちんとつかえるのかしら。


163 :デフォルトの名無しさん:02/10/03 13:16
>>162
じゃぁ何をつかったらいいか提示して

164 :デフォルトの名無しさん:02/10/03 13:23
>>158
>レジストリじゃなくてiniに拘る理由?

ちゃんと133からの流れを読んでいるのか?
データだよ、保存したいのは。前に出てた Stream 系かデータベースを
使うのが普通だろ。

165 :158:02/10/03 13:39
>>164
 ああじゃ追加
5、気にせずに巨大データも書き込める


166 :162:02/10/03 14:44
レコードが大量だとRDBとかも選択肢に入れておかなきゃ
だめじゃないの?最初から除外する意図がわからん。

プログラムが使い捨てか、長く使うかでも変わるし
データのサイズが数KBか数百MBかでもかわりますから
そこらへんがわからないうちからINIだのレジストリだの
いうのは意味がないでしょ。

167 :デフォルトの名無しさん:02/10/03 14:46
>>165
巨大データをINIになんて入れると時間がかかるよ。
君の言いたいことは、気にせず「巨大データを書き
込むプログラムが作れる」だろ。



168 :158:02/10/03 15:18
ああなるほど、2個のEDITと1個のMemoと思ってたから iniファイルを持ち出したんだけど、
>>133 を読み返すと データ番号 とかデータ名となってるから1件じゃなくて
複数のこういうペアを作りたいのかもしれないね。
だとすると、単純にデータ名でディレクトリ掘って、
  データ番号をファイル名にして
  データの内容=ファイル内容 なんて解法が一番スマートで楽じゃないかな

可変長のテキストをRDBで扱うとRDBによっては効率悪いし

169 :デフォルトの名無しさん:02/10/03 15:18
>>133
まずは各データの最大長とデータの最大個数書かないと。
わからないならおおよそのサイズ(数バイト,KB,MB,無制限)でもいいから。

170 :デフォルトの名無しさん:02/10/03 16:23
あのねぇ、ini がどうとか言ってる奴を除けば133は解決済み

171 :デフォルトの名無しさん:02/10/03 16:24
>> 複数のこういうペアを作りたいのかもしれないね。

>何個もこのようなデータを1つのテキストファイルに保存したいのですが

これ、読めないのか?


172 :デフォルトの名無しさん:02/10/03 16:46
>テキストファイルでなくても保存できて読み込めればどんなファイルでも
>いいのでこういう方法がいいとかあったらおながいします。

これ、読めないのか?

173 :デフォルトの名無しさん:02/10/03 16:50
>>172=168=158

いいかげんにしろよ。168では、データ数分だけファイルつくるってんだから
仕様を満たさないのは明らかだろ。

174 :デフォルトの名無しさん:02/10/03 16:53
じゃ、結局 TMemIniFileでエンコードして格納するのが一番適当って事だね

175 :デフォルトの名無しさん:02/10/03 16:59
>>174

君の住所録は TMemIniFile でエンコードして作ってろよ。
おもしろい奴だね。もっと日本語の読解力をつけろよ!

176 :デフォルトの名無しさん:02/10/03 17:02
>>175
住所録ならCSVだろ

177 :デフォルトの名無しさん:02/10/03 17:43
>>132
僕も半年だけど、全然だめぽ。。。
Delの前にも違う言語やってたんですか?

178 :デフォルトの名無しさん:02/10/03 18:34
うん、Hエスパーだったよ。

179 :Delフサギコ ◆A6VzDeLphI :02/10/03 18:39
 ミ,,゚Д゚彡
初心者の場合、作りたいものと、作れるもののギャップに
激しく差があって、なかなかプログラミング意欲が沸きにくいと思うです。

とりあえず、何を作りたいか、のネタ探しからはじめて
たくさん、プログラム/ソフトウェアを作っていくしか
ないと思いますよ。

ライフゲームとか、作ったことがあるんですが
ネタとしては面白かった yo.
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1022733594
いろんなネタが見つかるといいですね。

180 :Delフサギコ ◆A6VzDeLphI :02/10/03 18:44
 ミ,,゚Д゚彡
XPの本では、とりあえずDBやるときでも
最初にファイルでやっといて、後から
データアクセスを担う1関数だけを
ファイルアクセスからDBアクセスに
切り替えたら、いいよね

ってアプローチがいいと紹介されてました。

181 :デフォルトの名無しさん:02/10/03 18:49
>>180
その方法だと、Delphiのデータベースコンポーネント使えないんじゃ…
初めからDBでテストすればいいと思います。
ローカルかリモートか程度なら後で変えても苦労しないでしょうが。

182 :Delフサギコ ◆A6VzDeLphI :02/10/03 18:56
 ミ゚Д゚;彡・・・3Stringの入出力でラップすれば…
         コンポもクラスなんだし。

183 :Delフサギコ ◆A6VzDeLphI :02/10/03 18:57
 ミ;;゚Д゚彡トリップの桁が・・・・・・

184 :デフォルトの名無しさん:02/10/03 19:35
トランザクションとかTDBGridとの連携とか色々考えたら、
>データアクセスを担う1関数だけ
なんてわけにはとてもいかず、データベースとの中継を行なうコンポーネントひとつ
作る労力が要るのでは無かろうか?
素直にMyBaseでも使ってればいいじゃん…。

185 :Delフサギコ ◆A6VzDeLphI :02/10/03 19:53
 ミ゚Д゚;彡構造化って外捻はあるですか?

ファイルアクセス用に1関数つくるのと
 同じような入出力で
 DataModuleに1メソッド作って
相互置き換えすると、いいだけなんだけど。

トラザクとかはそれからでもいいし。
たかが、3Stringにしょっぱから、DB導入ナノ?
ま。どうでも。

186 :デフォルトの名無しさん:02/10/03 20:02
そっちこそOOPの概念ありますか?
DBの代わりにファイルアクセスするものを作るにしても、
既存のDBコンポと連携させようとしたら、
TDataSetから派生させて、全メソッドサポートしないと動かないじゃん…。
(まさか、本番も、全データをメモリに読み込んで、書く時も一斉に…ってわけじゃあるまいし)
で、ローカルファイルでテストしたければ、
BDE経由でCSVでも、MyBaseでXMLでも、似たような事はできるので、
わざわざ手間かけて回り道することは無いでしょ?

187 :デフォルトの名無しさん:02/10/03 20:13
あふぉやね

188 :デフォルトの名無しさん:02/10/03 21:12
あの程度の質問をする人にいきなりDBだなんだを持ち出さなくてよろしい

ムキになるなよ


189 :デフォルトの名無しさん:02/10/03 22:50
そうそう。
絶対ドラゴンボールと勘違いしてる。

190 :デフォルトの名無しさん:02/10/03 23:25
マウスで選択した範囲を
インデントまたは元に戻すショートカットキーって
なんでしたっけ?

191 :デフォルトの名無しさん:02/10/03 23:26
^ku

192 :デフォルトの名無しさん:02/10/03 23:26
^ki

193 :デフォルトの名無しさん:02/10/03 23:27
某に聞け

194 :190:02/10/03 23:33
^sankusuko

195 :デフォルトの名無しさん:02/10/03 23:37
そういや、ヘルプのキーボードショートカット一覧って、
キーワード検索で探すしかないの?
目次からではどうやってもたどり着けなかった気がするのだが。

196 :デフォルトの名無しさん:02/10/03 23:40
ヘルプファイルをテキストにコンバートすれば一発だよ>195

197 : :02/10/04 00:11
なんか荒れ気味だけど、本人どーした?<ini話の張本人

198 :デフォルトの名無しさん:02/10/04 00:14
荒れてるのは不明確な部分を勝手に想像力で埋めちゃってる
おっちょこちょいだけだろ。

199 :デフォルトの名無しさん:02/10/04 00:18
オッチョコチョィ萌え〜

200 :デフォルトの名無しさん:02/10/04 00:20
●●●●●●●●恒例・「オセロさえ納期内に作れない=OO役立たず 」祭り●●●●●●●
http://pc3.2ch.net/test/read.cgi/tech/1032985885/l50
/|         |  |_____ΦΦΦΦΦΦΦΦΦΦΦ||ΦΦΦ
  |         |  | ̄ ̄ ̄ /|                    ||
  |         |  |   / /|TTTTTT   TTTTTTTTTT||TTTTT
  |        /\ |  /|/|/|^^^^^^ |三三| ^^^^^^^^^^^||^^^^^^^
  |      /  / |// / /|
  |   /  / |_|/|/|/|/|
  |  /  /  |文|/ // /
  |/  /.  _.| ̄|/|/|/         Λ_Λ
/|\/  / /  |/ /           (___)
/|    / /  /ヽ            /〔 非OO 〕〕つ
  |   | ̄|  | |ヽ/l            `/二二ヽ
  |   |  |/| |__|/   Λ_Λ     / /(_)
  |   |/|  |/      ( ´∀`)   (_)    Λ_Λ
  |   |  |/      // /  ^ ̄]゚        (`   )
(省略されました・・全てを読むにはここを押してください)



201 :デフォルトの名無しさん:02/10/04 02:08
procedure TForm1.FormCreate(Sender: TObject);
var
FS1 : TFileStream;
begin
FS1 := TFileStream.Create(FILENAME, fmOpenRead);
try
while FS1.Position <> FS1.Size do
begin
//ファイルを読み込んでいく処理
end;
finally
FS1.Free;
end;
end;

こういうのって成立しますか?

202 :デフォルトの名無しさん:02/10/04 02:53
するよ

203 :デフォルトの名無しさん:02/10/04 03:22
( ^▽^)

204 :ななしへたぐらま ◆XcB18Bks.Y :02/10/04 04:07
>>190
それぞれ
Ctrl+Shift+I
Ctrl+Shift+U
です.


205 :デフォルトの名無しさん:02/10/04 09:03
>>189
ワラタ

206 :デフォルトの名無しさん:02/10/04 12:14
LISTBOX等で
Listbox1.DeleteSelected;
をおこなうとフォーカスが線だけの囲み状態になって、例えば
DELキーにレスポンスして連続削除のようなことができないです。
どのようにすれば、プログラム側から動的にリストの項目をセレクト
状態にできるでしょうか?
-----------------------------------------------

ListBox1.TopIndex:=i;//リスト画面のスクロール

この関数でリスト表示位置を移動した時に連動して、
オーナー描画をしたいんですが。
onオーナー描画で描くと、描画後にリストのスクロールがおこなわれ描画画面が消えてしまいます。
このような場合正しいタイミングにするためには、どのような設計が必要なのでしょうか?



207 :デフォルトの名無しさん:02/10/04 13:29
Delphi7で、dcuのみでpasファイルがないユニットをコンパイラが認識しないようなのですが、
同様の症状が出る方はいますか?

208 :デフォルトの名無しさん:02/10/04 13:46
>>207
確かめてないけど、他バージョンのdcuを認識しないのは伝統的な仕様だったと思う。

209 :無責任だが:02/10/04 18:54
makeファイルもどきがDelphiIDEで出来ないかな?

いま、逆アセみたいなのを作ってるんだけど
1、元になるテキストデータを作って
2、それをDelphiでDelphiソースに変換
3、2のソースを
function Cvt(dt:Integer):string;
begin
{$INCLUDE CODE.INC}
end;
みたいに取り込んで利用

で、問題は、1,2,3を調整の為に頻繁に行き来するんで DelphiのIDE上で全て作業出来ないかなと 

複数プロジェクトを作っても2のアプリを実行までは自動で出来ないんで
どうやると効率良いかなというご相談です。

210 :デフォルトの名無しさん:02/10/04 18:59
>>208
フリーのコンポーネントの中にはソースの付かないものがあるけど
バージョンが古いともうだめってこと?

だとするとフリーでもソースの付かないコンポーネントは逝ってよしかな

211 :デフォルトの名無しさん:02/10/04 20:01
>>210
その通り

212 :デルファイの名無しさん:02/10/04 20:37
>>209
普通に考えれば、ツールメニューに$EDNAMEなどを使って登録しておくか、
OpenToolsAPIでIDEの機能として全てを組み込んでしまうか、でしょうね。

後者の場合深くやろうとすればそちらへ労力を割かれそう。
やっと昨日、ずっと引っかかっていた新規プロジェクトをOpenToolsAPIで作る方法を発見…。

213 :207:02/10/04 20:37
>>208
回答ありがとうございます。
仕様だったんですか。不便ですね…

214 :デフォルトの名無しさん:02/10/04 21:10
>>206
たとえばこういうのとか
var
  Index: Integer;
begin
  Index:=ListBox1.ItemIndex;
  ListBox1.DeleteSelected;
  if not(Index<ListBox1.Items.Count) then
    Index:=ListBox1.Count-1;
  if 0<=Index then
  begin
    ListBox1.Selected[Index]:=true;
  end;
end;
------------------------------------------------
TopIndex:=i;の後にRepaintすればいいのでは?
そういう話ではない?



215 :無責任だが:02/10/04 21:21
>>212
 そうですね。 やっぱりそれしかないかな。

今、3で作るアプリ内で日付を比較して更新する方法を考えました。
更新があったらソースを書き換えて勝手に終了させるようにしてと

216 :デフォルトの名無しさん:02/10/04 21:36
カレントプロジェクトのディレクトリの
makefileをmakeするツール登録してるよ。

makeしたけりゃmakeすりゃいいのさ。

217 :デフォルトの名無しさん:02/10/05 06:12
初歩的な質問ですが、TActionMainMenuBar にサブメニューを追加する方法がわかりません。
どうすればいいのでしょうか?ヘルプを見ても載っていませんでした。

218 :デフォルトの名無しさん:02/10/05 06:18
解決しました。

219 :デフォルトの名無しさん:02/10/05 07:22
メモリー上の画像データ(RGB24)を画面に描画するには
どうすればいいんでしょうか?
画像データを1dotづつRGB(R, G, B)からTColorへの変換
して、点を打っていくしかないんでしょうか?

220 :デフォルトの名無しさん:02/10/05 07:41
解決しました。

221 :無責任だが:02/10/05 08:18
>>216 それもそうですね。 ただついF9押してしまうんで

>>217 メインのメニューが作れたなら Itemsの所から[・・・] をクリックして追加

>>219 同じサイズのTBitmapを作って、作ったイメージデータをBitmap.ScanLine先にコピー
 Bitmapは、Imageコンポを画面に貼り付けて Image.Pictureに設定するだけで表示出来るし
 OnPaintイベントで Canvas.Drawメソッドでも表示可能

222 :デフォルトの名無しさん:02/10/05 10:16
イベントハンドラ内で長時間ブロックしているとき、
スレッド作ってSynchronizeでApplication.ProcessMessages呼んで
フォームが固まるのを防ぐのって有りかな?

223 :デフォルトの名無しさん:02/10/05 10:20
>>222
というか Synchronize って そのProcessMessageで呼ばれるのじゃなかったっけ?

224 :デフォルトの名無しさん:02/10/05 10:21
時間がかかる作業のほうをスレッドにするのが定石だと思うが。

225 :デフォルトの名無しさん:02/10/05 11:45
スレッド内の処理が完了しないと
他を処理出来ないケースとかって結構あるから、
スレッドにする事で処理速度が落ちる可能性を考えると
スレッドって有効な手段なんだろうか?
とか、昼飯を買いに行きながらよく考える。

226 :デフォルトの名無しさん:02/10/05 12:38
型なしファイルでRewrite 手続きを使おうと思い
ヘルプで調べたのですが
procedure Rewrite(var F: File [; Recsize: Word ] );
のRecsizeのところが分かりません。
ヘルプではデータ転送に使われるレコードサイズを指定と書いてあるのですが
これは通常どれくらいの数にすればよいのでしょうか?
デフォルトでは(何も書かなければ)128となっていますが
この設定基準ってなんなんでしょう?


227 :デフォルトの名無しさん:02/10/05 12:47
多く取れば転送高速になるかもしれないが、無駄かもしれない
少なければ無駄は無いが、遅くなるかもしれない。

デフォルトでよいのでは?

数メガ書き込むときなどは、大きめにとればいいんじゃ

こんなコトに悩むより、自分で実験してみたらいいと思う

228 :デフォルトの名無しさん:02/10/05 12:53
Pascal 覚えはじめは、AsssignFile()/CloseFile() 使ってたけど
いまはほとんど、TStream 系や TStrings 系の LoadFromFile()
や SaveToFile() ですましてる。

229 :デフォルトの名無しさん:02/10/05 12:53
AsssignFile() -> AssignFile() な(笑)

230 :226:02/10/05 12:57
>>227
インターネットのパケットに似てるのかな?
凄く参考になりました。
そうですね実験してみます。ありがとう。

231 :デフォルトの名無しさん:02/10/05 14:36
ガンダムSEED
ドラえもん祭り
サップvsホースト
ゴールデンシアター[マトリックス]

232 :ななしへたぐらま ◆XcB18Bks.Y :02/10/05 14:58
>>226
RewriteのRecSizeは書き込みバッファのサイズではなくて,
何バイト単位で書き込むかを指定する値です.
RecSizeには1を指定します.

128という値は昔のOSが128バイト単位でファイルを読み書きしていたのと
関係があるかも知れません.

#私も今はRewriteは使わずストリームを使っています.


233 :デフォルトの名無しさん:02/10/05 15:58
>>232
>何バイト単位で書き込むかを指定する値です.

あ、そうなんすか。
で、たとえばデフォルトの128バイトの場合、
3バイト書き込んだ時点で、ディスク上のファイルはどうなるの?

234 :デフォルトの名無しさん:02/10/05 21:23
>>233
確認してないのであてずっぽうですが、バッファが128byteで
書き込みが3byteの状態って単にバッファにたまっていて
書き込まれていないでしょうね。

そしてバッファがいっぱいになったときとかクローズするときに
全部を書き込むようになっっているはずです。


235 :デフォルトの名無しさん:02/10/05 21:24
俺の記憶が正しければ、一回の書き込みでも指定したバイト数書き込んじゃって
いやーんなことになります

ま、やってみりゃわかる。


236 :デフォルトの名無しさん:02/10/05 22:11
まあ便利な時もあるよね
最近AssignFile使わないけど


237 :デフォルトの名無しさん:02/10/05 23:44
Delphiでマトリックスは作れますか?

238 :デフォルトの名無しさん:02/10/05 23:53
>>237
m×n行列なら2次元配列でいいんじゃないですか。
http://www.users.gr.jp/ml/archive/delphi/41901.asp
より

多次元配列は配列の配列です。次に例を示します。

type TMatrix = array[1..10] of array[1..50] of Real;

これは次と同じです。

type TMatrix = array[1..10, 1..50] of Real;

どちらの方法で宣言しても,TMatrix は 500 個の実数値の配列を表します。




239 :デフォルトの名無しさん:02/10/05 23:58
>>237
Code Centralに逝きたまえ。それが全てだ。

240 :デフォルトの名無しさん:02/10/06 00:01
delphiで初めてデータベースを作ろうと思っています。

いろいろとチャレンジしているのですが教科書が無いのでInpriseのマニュアルだけでは進展しません。
データベース対応アプリを作るのに参考になる良いサイトあるいは書籍があったら教えてください。

手元にDelphi2.0テクニックマスター集中講義があるのですが、データベースに関する部分は
説明が少なくてなかなか理解出来ないでした。

私のレベルはなんとか脱初心者レベルではないかと自分では思っています。

241 :デフォルトの名無しさん:02/10/06 00:08
脱初心者レベルなら自己解決できます。
良かったですね。

242 :デフォルトの名無しさん:02/10/06 00:14
>>221
ありがとうございます。
最初、Bitmap.ScanLine := pDataとか間抜けなことして、読み出し専用
だっつーてんだろ!というコンパイラのツッコミにかなり悩みましたが
やっとこなんとか解決できました。

243 :デフォルトの名無しさん:02/10/06 00:20
>>241
脱初心者出来ていなかったようなので初心者に戻ります。
どうかよろしくお願いします。

244 :デフォルトの名無しさん:02/10/06 00:30
>>240
Delphi2.0のころの本だとしんどいと思います。そのころじゃBDE(BorlandDatabaseEngine)の
説明しかないんじゃないでしょうか。現在ではDatabaseへのアクセス方法が

BDE ボーランド独自
ADO MS(というかWindows)の流儀
dbExpress Kylixとの互換性を考えた新しい方法

あとInterbaseへのダイレクトなアクセスとかローカルにXML形式でファイルを作るMybaseなど
いろいろな方法が用意されていますから、そのころの本だけで勉強しても無駄骨に終わる
という可能性が大いにあります。

DelphiでDBとかいうテーマの本だとOracle oo4oを扱ったものまでありますから、とりあえず
大きな本屋さんへ行って気に入った本を買いなさいってこと。

脱初心者なら自分にあった本くらい探せるでしょ。


245 :デフォルトの名無しさん:02/10/06 00:40
Delphi7.0のアカデミックを買いたいのですが、学生証を要求されるものなのでしょうか?


246 :デフォルトの名無しさん:02/10/06 01:13
>>240
データベースの場合、基本の概念を理解していれば応用が楽(と言
うより基本ができていないと何をやってもだめ)なので、本当に身
に着けたいならそこからやるべき。

247 :デフォルトの名無しさん:02/10/06 01:51
>> 基本ができていないと何をやってもだめ

なんでもそうかと思うふ

248 :デフォルトの名無しさん:02/10/06 02:12
糞詰まんない一般論吐いてる暇があったら
Del&DB本の一冊でも紹介してやりゃいいのに。

249 :デフォルトの名無しさん:02/10/06 07:17
> Inprise
未だに隅をつつくなよ。某がかわいそう

250 :デフォルトの名無しさん:02/10/06 17:01
>>238-239
ネタニマジレスカコワルイ

251 :apone:02/10/07 14:39
リストビューのアイテムをドラッグアンドドロップでデスクトップに持っていって
ファイルを作成したいんですが、どうすればいいでしょうか?


252 :Delフサギコ ◆A6VzDeLphI :02/10/07 15:58

    (V)∧,,∧(V)
    ヽミ・ω・ノ  フォッフォッフォッ
.     .ミ,,,,,,, ミ
    ノ  ゝ  

>>251むずかすぃかも
とりあえず有名なDragDropコンポーネントをインスコ汁汁汁

253 :デフォルトの名無しさん:02/10/07 15:59
逆のエクスプローラからドラッグアンドドロップでリストビューに登録することはできます。
つまりOLEドラッグアンドドロップというものについてなにかポインタを示してほしいわけで。。

254 :デフォルトの名無しさん:02/10/07 16:01
>>248
デル厨には一般常識すらないやつが多いのでそこから説かねばなるまい。

255 :Delフサギコ ◆A6VzDeLphI :02/10/07 16:33

    (V)∧,,∧(V)
    ヽミ・ω・ノ  フォッフォッフォッ
.     .ミ,,,,,,, ミ
    ノ  ゝ   そのOLED&Dというののポインタが
         そのコンポーネントなわけで....

>[Delphi:66170] Re: 教えて下さい
ココみるヨロシ。

256 :デフォルトの名無しさん:02/10/07 16:36
>>255
Googleで検索ワードをいろいろ変えてもそのML?の記事が見つからない。。鬱だ。

257 :デルファイの名無しさん:02/10/07 16:37
既にあるファイルを扱うのであれば、楽なのはIShellFolder::GetUIObjectOfなのですが…
それにしてもちょっとややこしいです。→PItemIDList周辺
とりあえず「Delphiの神託 シェルプログラミング入門」という本がお薦めです。

258 :デフォルトの名無しさん:02/10/07 16:38
http://leed.issp.u-tokyo.ac.jp/~takeuchi/delphi/article/066/066170.html
見つかった。サンクス

259 :ねこま:02/10/07 16:43
>>255
それのどこに DropSource があるのですか?


260 :ねこま:02/10/07 16:54
ちょっと皮肉っぽかったかな,ごめんなさい.
DropSource delphi で検索かけると見つかるんじゃないかな?


261 :デルファイの名無しさん:02/10/07 17:13
ものすごーく簡単に書けば、
SHGetDesktopFolder→ParseDisplayName→GetUIObjectOfでIDataObject取得。
(SHGetMalloc経由で使い終わったPItemIDListは解放)
それと、IDropSourceを実装してDoDragDrop、です。
D&DそのものよりPItemIDList/IDataObjectを得るまでの方がややこしいです。

IDropSourceはたった2メソッド、中身も1行づつかそこらなので
TForm1にでもついでで実装させれば済みます。
(コンポーネントのインストールの方が手間な気がして
その手のコンポーネントを使ったことがない私)


262 :デフォルトの名無しさん:02/10/07 20:44
FileName := FileOpen1.Dialog.FileName;
if (FileName = 'aaaaa.txt') then
 (ある動作)

FileNameに「aaaaa.txt」が含まれている時のみに(ある動作)をしたいのですが、
どう書けば良いのでしょうか?


263 :デフォルトの名無しさん:02/10/07 20:44
age

264 :デフォルトの名無しさん:02/10/07 20:57
>>262
Pos(str1, str2)


265 :デフォルトの名無しさん :02/10/07 20:58
>>262
if (FileName = 'aaaaa.txt') then
 (ある動作)


266 :デフォルトの名無しさん:02/10/07 21:08
6のpersonalのCD手に入れたんだけど、
ライセンスナンバーを取ろうとして、ログインしても
半分くらいまで読み込んだあと止まってしまって
真っ白なままなんですが、どうしたらいいでしょう。



267 :デフォルトの名無しさん:02/10/07 21:36
>>262
if CompareText(ExtractFileName(FileName), 'aaaaa.txt')=0 then
(ある動作)

268 :デフォルトの名無しさん:02/10/07 21:39
含まれているという表現から、この中では264がいちばん正しいと思う。
267は aaaaa.txt.txt とかでだめ。


269 :デフォルトの名無しさん:02/10/07 22:13
262が正しいと思う

270 :デフォルトの名無しさん:02/10/08 00:31
なんか説明しづらいんですが、たとえばフライトシミュレータがあったとします。
タイトル画面(Form1)で機体を選択すると、その機体の操縦席を再現したフォーム(Form2)に切り替わります。

このとき、機体の数だけ操縦席画面を作らないといけません。
もちろん、操縦席のフォームは一つで機体選択後に計器類を動的に配置してもいいんですが、
一個一個 Left Top Width Height とかやってると発狂しそうなので・・・。
機体ごとにForm2に貼り付ける計器(TImageとかその他パーツ類)を丸ごと保存し、機体選択後に
呼び出してForm2上に展開する、そんな変なことって可能ですか?

・・・というか、もっとスマートな方法があったら教えてください⊃Д`)

271 :Delフサギコ ◆A6VzDeLphI :02/10/08 00:42
      /⌒\
     γ彡・ω)ミ
      |ミ,,゚Д゚彡   Form2/Form3/Form4...を
      |(ノ  |つ   各機体にするので
     ヾ|    |     何か問題あるでし?
      ヽ _ノ     
       U"U 
    東京オシャレさん

272 :デフォルトの名無しさん:02/10/08 01:04
>>271
unit2.dfmに設計された操縦席が、unit2.pasにプログラムが書いてあるので、
ソースはそのままでフォーム内容だけ自由に置き換えができたらなと思ったんです。
(Form上のパーツの名前は共通にします)

フォームとソースが1:1で対応してるものしか作ったことがないんです・・・。(´・ω・`)


273 :Delフサギコ ◆A6VzDeLphI :02/10/08 01:20
      /⌒\
     γ彡・ω)ミ  Formを動的に生成したことはあるでしか?
      |ミ,,゚Д゚彡   
      |(ノ  |つ  Form上に部品のない(最低減必要な部品のある)
     ヾ|    |    TKitaiFormを作って必要なメソッドやフィールドを記述
      ヽ _ノ    
       U"U    で、TKitaiForm1/TKitaiForm2/TKitaiForm3
             などを継承して実装してみらた、どうでかしら。

274 :デフォルトの名無しさん:02/10/08 01:44
>>273
助言サンクス・・・Delphiみたいなビジュアルな環境でクラスを作ったことがないので
頭が炸裂してきましたが、頑張ってみますヽ(TДT)ノ

275 :Delフサギコ ◆A6VzDeLphI :02/10/08 01:58
新規作成ダイアログで
[Project1]タブのForm1を選んで
Form1から継承したForm2を作ってみるとイイっす
           _____________
   ∧,,∧    /
  ミ,,゚Д゚彡 < 今、試してみたらずいぶん簡単
   U  つ   \
 @ミ  ミ       ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
   ∪''∪ 

276 :ななしへたぐらま ◆XcB18Bks.Y :02/10/08 05:33
>>233
レスが遅くなってごめんなさい.

デフォルトの場合3バイトだけ書き込むことはできません.
必ず128バイト単位になります.

たとえば以下の例だと(イベントハンドラだけ書きます)

procedure TForm1.Button1Click(Sender: TObject);
var
F: File;
i: longint;
aFileName: string;
begin
aFileName := ChangeFileExt(Application.ExeName, '.dat');
AssignFile(F, aFileName);
try
Rewrite(F);
for i := 1 to 10 do
BlockWrite(F, i, sizeof(i));
finally
CloseFile(F);
end;
end;

sizeof(i)の値は4なので一見40バイト書き出されるように見えますが
実際には5120バイト書き出されます.
(レコードサイズが128で1回につき4レコード=512バイト書き出しています)


277 :ななしへたぐらま ◆XcB18Bks.Y :02/10/08 06:08
>>240
DelphiにはDB専門の書籍もあるので
その中から良さそうなのを選んでみると良いかも知れません.

私が買ったのは『Delphi5 実践データベースプログラミング』という本です.
(InterBaseにふれていたのはこの本しかなかったので
 これを薦めるわけではありません)


278 :Delフサギコ ◆A6VzDeLphI :02/10/08 10:17

( )
 ( )   ( )
   ∧=∧ ポゎ〜
   ミ*゚Д゚彡 
| ̄ ̄∪∪ ̄|   誰かUnicode文字列のファイル保存と
|  ┼─┼ .|   ファイルカキコ処理
|   /\ .|   LittleとBigのエイドリアン両方の方法
|  / ホ \|   知ってたら教えてくださいませ
\____/
  └─┘   検索して
http://member.nifty.ne.jp/m-and-i/tips/unicode.htm
とか
[Delphi:45937] Re: Unicode でのファイル保存
みましたが、ちょっと改造しなければいけなさそうなので..

WideStringとやり取りしたいと思ってます
VCL標準でなかったでしたでしょうか?

279 :Delフサギコ ◆A6VzDeLphI :02/10/08 10:22
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1015084410
      /⌒\    
     γ彡・ω)ミ  書評書いてヨシ
      |ミ,,゚Д゚彡   
      |(ノ  |つ   
     ヾ|    |
      ヽ _ノ     
       U"U     

280 :デフォルトの名無しさん:02/10/08 10:33
>>276

レス、ありがとう。

> デフォルトの場合3バイトだけ書き込むことはできません.
> 必ず128バイト単位になります.

実験結果をみると、このデフォルト値は意味なしですね、いまや。
任意のバイト列を書き込むときは、RecordSizeは1に設定して
BlockWrite()にするといいのですね。  




281 :Delフサギコ ◆A6VzDeLphI :02/10/08 13:36
 ∫,,,,,,,,,∧,,∧  とりあえずリトルエンヂアだけ
⊂,,,,,,,,,つ,,゚Д゚ミつ ならこんな感じだと思うのですが...ビッグは面倒っす
type TUnicodeEndian = (ueLittle, ueBig);
const UNICODE_Little_Endian = $FEFF;
const UNICODE_Big_Endian = $FFFE;
function LoadWideStringFromFile(const FileName: WideString;
Endian: TUnicodeEndian = ueLittle): WideString;
var FileStream: TFileStream; StreamSize: Integer;
begin
Result :='';
FileStream := TFileStream.Create(FileName, fmOpenRead); try
FileStream.Position := 0;
StreamSize := FileStream.Size;
SetLength(Result, (StreamSize - 1) div 2);
FileStream.Seek(1, soFromBeginning);
FileStream.ReadBuffer(Result, StreamSize);
finally Fs.Free; end;
end;
procedure SaveWideStringToFile(const FileName, Str: WideString;
Endian: TUnicodeEndian = ueLittle);
var FileStream: TFileStream; EndianWord: WORD;
begin
case Endian of
ueLittle: EndianWord := UNICODE_Little_Endian;
ueBig: EndianWord := UNICODE_Big_Endian;
else Assert(False, '正しくない引数');
end;
FileStream := TFileStream.Create(FileName, fmCreate); try
FileStream.Write(EndianWord, SizeOf(EndianWord));
FileStream.Write(Str[1], Length(Str) * 2);
finally FileStream.Free; end;
end;

282 :デフォルトの名無しさん:02/10/08 14:55
こんなPanel欲しいです。
Clickされたら色が指定した色に変わり
他のオブジェクトがClickされたらデフォルトの
色に戻る
OnEnter、OnExitとかいろいろ試したんですけど
パネルだとEditとか子に持ってないとイベントが
こないんですよね・・・
どうしたらいいでしょうか?

283 :デフォルトの名無しさん:02/10/08 15:14
>>282

OnClick で Panel1.SetFocus;
OnEnter で色を変え
OnExit で色を元に戻す

284 :282:02/10/08 16:08
>>283
ありがとうございます
できました。

あとパネル下にフォーカスのないコンポーネント(TSpeedButton)
が貼り付けれていた場合、そのコンポーネントを選択した時にも
パネルの色を変えたいのですがなにかよい方法はありますでしょうか?

285 :デフォルトの名無しさん:02/10/08 16:59
>>284

うーむ、これだと OnExit が起きないね。いっそ、WM_LBUTTONDOWN
メッセージを監視したらよいのでは。

{ Private 宣言 }
public
procedure AppMessage(var Msg:TMsg; var Handled:Boolean);
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin
Application.OnMessage := AppMessage;
end;

procedure TForm1.AppMessage(var Msg:TMsg; var Handled:Boolean);
begin
if Msg.message = WM_LBUTTONDOWN then begin
if Msg.hwnd = Panel1.Handle then
Panel1.Color := clRed
else
Panel1.Color := clBtnFace;
end;
end;

286 :282:02/10/08 18:14
>285
ありがとうございます。できました。

何を作りたいかというと、パネル自身及びパネル下のコンポーネント
を選択した場合にパネルの色を変えて、パネル以外のコンポーネント
を選択したら色を元に戻すという単純なパネルコンポーネントを
作りたいのです。
現在、メッセージ処理の絡みで苦戦してまつ(´Д`;)
もし似たようなコンポーネントがありましたら教えてくださいませんか?

287 :デフォルトの名無しさん:02/10/08 18:30
>>286

コンポーネントで >>286 のようなコードを含ませるのは難しいね。
>>283 のコードのように、自分の中だけで解決できれば簡単なんだけど。
本質的に、自分以外のフォーカスのないコントロールをクリックした場合を
検出するのはできるのかな?

288 :デフォルトの名無しさん:02/10/08 18:37
>>287

× >>286 のようなコードを含ませるのは
○ >>285 のようなコードを含ませるのは

コンポーネントにすると、あらかじめいくつインスタンスが作られるか予想でき
ないので、Application.OnMessage() のようなイベントをフックするのは
適当でないよね。一つだけ、ローカルフックを最初のインスタンスが作られる
ときにインストールして、インスタンスの管理をするとよいのかも。

289 :Delフサギコ ◆A6VzDeLphI :02/10/08 19:14

    l||l∧,,∧       / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
     .ミ,,   彡    < 無視されてる…
     ∪ _|| ̄ ̄ ̄ | \_____________
     (ミ,,,|\||Letsノ-ト|  たかがUnicodeされどUnicode
       '\||.======.|
           ̄ ̄ ̄ 
LittleもBigも読みカキできるようになったんだけど、

BOMで自動判別あり/なし
BOM読み取りあり/なし
Little/Big

の関数仕様がきまらない...

Readの場合は(自動/Little強制/Big強制)
Writeの場合は(BomOn/OffとLittle/Big)
こういうフラグでいいだろうか...

290 :デフォルトの名無しさん:02/10/08 19:48
>>289
Read で自動っても BOM 無い場合に困るから、Little/Big の指定ができた方がいいんじゃないかなぁ。
BOM 無い場合、例外飛ばしてもいいけど、使い勝手が悪そう。

291 :デフォルトの名無しさん:02/10/08 20:01
>>289
ザロゲートって知ってる?


292 :デフォルトの名無しさん:02/10/08 20:21
BOM無い場合デフォルトでLittleでいいでしょう


293 :デフォルトの名無しさん:02/10/08 20:24
>>287
>本質的に、自分以外のフォーカスのないコントロールをクリックした場合を
>検出するのはできるのかな?
この方法激しく知りたい


294 :デフォルトの名無しさん:02/10/08 20:26
ここでザロゲートは関係ないな

295 :デフォルトの名無しさん:02/10/08 22:02
>>292
>>本質的に、自分以外のフォーカスのないコントロールをクリックした場合を
>>検出するのはできるのかな?
>この方法激しく知りたい

お手軽方法としては、目的のコンポーネントで TApplicationEvents のインスタンス
を抱え込んで、>>285 と同じことをする、というのは?


296 :デフォルトの名無しさん:02/10/08 22:03
>>295

マチガイタ、>>293 ね。

297 :デフォルトの名無しさん:02/10/08 22:31
TreeViewでD&DするにはOnDragDropを弄ればいいんですよね?

298 :Delフサギコ ◆A6VzDeLphI :02/10/09 00:32
     /⌒\
    γ彡・ω)ミ      / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
     |ミ,, ゚Д゚彡     < できますた。ぷにこーどファイルIO
     | つ_|| ̄ ̄ ̄ | \_____________
   〜ミ,,, ,,|\||Letsノ-ト|
       '\||.======.|  ちょっとがんがったよ。
           ̄ ̄ ̄   もっといいソースが書けたら続けてみてね
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1034090664

ソース置き場では、1に ちょうヴんカキコしちゃだめなの、忘れてた・・・・

299 :Delフサギコ ◆A6VzDeLphI :02/10/09 00:37
     /⌒\
    γ彡・ω)ミ      />>290さん ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
     |ミ,, ゚Д゚彡     < きっと満足して板だける、仕様に
     | つ_|| ̄ ̄ ̄ | \__なったのではナカ?ですか__
   〜ミ,,, ,,|\||Letsノ-ト|
       '\||.======.|  読みはLittleとBigは常に指定して
           ̄ ̄ ̄    BOM優先/無視スイッチ
                書きはLittleとBig指定と
                  BOMON/OFFスイッチ漬けます太

300 :デフォルトの名無しさん:02/10/09 01:04
フサギコさんに聞きたいんですけど
あなた本当に給料もらってるプログラマなんですか?


301 :Delフサギコ ◆A6VzDeLphI :02/10/09 02:15
               __________
       ∧,,∧   / まあ仕事中に
      ミ ,,゚Д゚ミ <  2チャンしてる不良サラリーマソではあるですよ、
    ∬ (し, ミ_と)_ \君ほど、無礼な人じゃないから
   /且       /||   普通に社会生活は営んでるけど。
   || ̄ ̄ ̄ ̄ ̄||
       とか青ってみるです。が、どうでしょうか。

302 :Delフサギコ ◆A6VzDeLphI :02/10/09 02:27
            カエリマツ
           ,,,,,,,,,,,,,,,∧,,∧   / す・・すまそん。
         〜′,,,,,,,,,,ミ゚Д゚;彡<  電話で元カノと
          UU"""" U  ⊃  \ 最悪県下厨だったので
    ______      レス即煽り返してしまたです。
   /且       /||     ごめんなさい。ごめんなさい。見逃してください。
   || ̄ ̄ ̄ ̄ ̄||       タイーホしないでください。たった今、個人的に吐き気がするほど
               気分が悪い時刻でした....
            はい、残業代でそこそこ、お金もらってるかもーな
               エセヨみたいな雑用係仕事してますです。最近。が何か?

      そういえばテストコードを書いていないっすね。


303 :300:02/10/09 03:50
>>301
ありがとうございました。
生きる勇気がわいてきました。


304 :デフォルトの名無しさん:02/10/09 10:27
property hoge: THoge read FHoge write SetHoge;
ってのがあったとして、Create内でhogeを設定する場合
1.SetHoge(lhoge);
2.hoge := lhoge;
どっちが美しいと思います?

私的には2のが美しいと思うんですが、私の周りの人達
に言わせると、1のが美しいそうで・・・・・・
このスレの人達的には、どっちが美しいと思いますか?

305 :デフォルトの名無しさん:02/10/09 10:52
>>304

それは明らかに1.
プロパティーは外部向けのインタフェースなので、自分からそれを
設定するのは変。アクセスメソッドを直接よぶのがオーバーヘッド
(わずかですが)がない感じがしてgood

306 :デフォルトの名無しさん:02/10/09 11:13
>>305
レスサンクス。
なんとか賛同者を募ろうと画策したんですが、やっぱ駄目ですか?
う〜ん、1の方がやっぱ美しいのかな・・・・・・・
2のが簡素に見えるし、タイプ量も少なくて美しいと思ったんですが

ズレてるのは私の方だったのか・・・・・ショック〜
1派に鞍替えすることにします(´д`;)

307 :Delフサギコ ◆A6VzDeLphI :02/10/09 11:16
   ∧,,∧    /おれも(1.)
  ミ,,゚Д゚彡 < (2.)はクラス内でプロパティ代入している
   ミつ つ   \っすよね。それはちょっときれいくないかと。
 @ミ  ミ      
   ∪''∪    

308 :Delフサギコ ◆A6VzDeLphI :02/10/09 11:20
   ∧,,∧     /
  ミ;゚Д゚彡  < むしろ、こうすべきかと。
  ミつ  つ   \
AAAは定型処理を手続き化してるとミナシテください

procedure SetHoge(Value: THoge);
begin
 AAA;
 FHoge := Value;
end;

construct Create(HogeValue: THoge);
begin
 AAA;
 FHoge := HogeValue;
end;

309 :デフォルトの名無しさん:02/10/09 11:42
>>308
関数呼び出しが一つ減って、効率が良いのは分かるんですが・・・・
Createの中にSetHogeの内容が丸々入ってるのは、感覚的には
受け入れ難いんですが・・・・・・
でも、AAAをprotectedに置いて、継承先でoverrideできたりする
と、便利なのかな?
でもでも、だったら寧ろSetHoge自体をoverrideできれば済む様
な気もするし?だんだん深みに嵌っていくなり〜

310 :デフォルトの名無しさん:02/10/09 11:48
今、設計時なのか実行時なのか取得できる
メソッドみたいなのってありますか?

311 :デフォルトの名無しさん:02/10/09 11:51
>>310
if csDesigning in ComponentState then 設計中です

312 :デフォルトの名無しさん:02/10/09 11:58
>>311
おお!ありがd

313 :Delフサギコ ◆A6VzDeLphI :02/10/09 11:59
>Createの中にSetHogeの内容が丸々入ってるのは

   ∧,,∧     / 説明が足りなかったかも
  ミ;゚Д゚彡  < あと、理想は理想で現実は
  ミつ  つ   \ 楽するために>>304の(1.)のケースは
            よく書くと思われ
procedure THage.AAA(Value: THoge);
begin
処理; 処理; 処理;
 FHoge := Value;
処理; 処理; 処理;
end;
procedure THage.SetHoge(Value: THoge);
begin
AAA(Value);
end;
constru(a?)ctor THage.Create(HogeValue: THoge);
begin
AAA(HogeValue);
end;

こうすると、他メソッドを作る時に
FHogeに何か付属処理あるときはAAAを呼ぶし
直接必要なときはFHogeを直接扱う
ことが出来るのではないでしょうか。

Createでの値代入と、Setでの値代入が
微妙に異なる処理になることに即対応できるやすいかな。

SetとかCreateがクラス外部とのインターフェースで
AAAが内部ロジックと考えて、そこを分離してるです。

314 :デフォルトの名無しさん:02/10/09 12:01
>>304
断然2.だよ。
FHoge := Value; // 副作用なし
Hoge := Value; // 副作用あり(期待したい)
でいいじゃん。2.はwrite FHoge/SetHogeでコーディングが変わってくるし、
継承したかどうかでも変わってきて無駄な判断を強いられる。
実装の変更にも弱い。

1.派は気分以外で具体的なメリット・デメリットを論じてもらいたい。
>>308は論外。

315 :デフォルトの名無しさん:02/10/09 12:08
>>314

なんだか日本語が変。きみの論旨だと1のような

316 :デフォルトの名無しさん:02/10/09 12:09
>>314
> メリット・デメリットを論じてもらいたい。

どちらが美しいか、という質問です。

317 :デフォルトの名無しさん:02/10/09 12:14
>>314
Hoge := ValueでもSetHoge(Value)でも副作用に関しては変わらない。
寧ろSetHoge(Value)の方が、副作用を期待しているということが明確
になるので、より良いと思うが、どうか?

318 :デフォルトの名無しさん:02/10/09 12:33
2。
setter/getter メソッドは明示的に使ってはいけない。としておくと
良いこと有り。


319 :デフォルトの名無しさん:02/10/09 12:39
>> 良いこと有り。

たとえば?

320 :デフォルトの名無しさん:02/10/09 12:42
>>318 たとえば?2!

321 :ななしへたぐらま ◆XcB18Bks.Y :02/10/09 12:46
>>318
ちょっと尻逮鴨.

途中に別なクラスを挟んだときとかに
(VCLでいえばTCustomIniFileとか)
ソースをいじらなくて済みそうですけど….


322 :デフォルトの名無しさん:02/10/09 12:55
type
 Class1 = class
 public
  property A: Integer write FA;
 end;

 Class2 = class
 public
  property B: Integer write SetB;
  property C: Integer write FC;
  constructor Create;
 end;
 
constructor Class2.Create;
begin
 // ここでプロパティA,B,Cを副作用付きで初期化する最も美しい書き方は?
 // Aの初期化をはinheritedに任せないものとする。
end;

つーかC#ではアクセサへのアクセスは禁止されてるので
いまさら議論の余地はないんだけどね。

323 :デフォルトの名無しさん:02/10/09 13:20
>>322

C# でなくて Delphi についてです。>>304 をよく読むように。
Class2 は Class1 を継承してないので A というプロパティーは
ないし、初期化できるはずもない

324 :デフォルトの名無しさん:02/10/09 13:23
>>305
オーバーヘッドは皆無。
hoge:=lhogeはコンパイル時にSetHoge(lhoge)に置き換えられる。

325 :デフォルトの名無しさん:02/10/09 13:23
>>320

結論の論拠がその結論であると? 
めちゃくちゃですね。論拠なしってことですね。
それはそれでいいけど。

326 :デフォルトの名無しさん:02/10/09 13:23
>>322
う〜ん、なるほど。
それだと、A := 0; B := 0; C := 0;の方が美しいって事なのかな?

て言うか、「C#ではアクセサへのアクセスは禁止されてる」の
理由が気になる。もし、知ってたら教えてお願い。

327 :デフォルトの名無しさん:02/10/09 13:25
>>323
そこを揚足とるのは、ちょっと大人気ないと思うぞ(笑

328 :デフォルトの名無しさん:02/10/09 13:25
>> hoge:=lhogeはコンパイル時にSetHoge(lhoge)に置き換えられる。

ははぁ、そうですか。ありがとう。

では、美しいかどうか、という美的議論だけですね。
はじめからそうですけど。

329 :デフォルトの名無しさん:02/10/09 13:28
>>326
というか何のためのプロパティなのかと小一時間問いつめたい。
privateにアクセスできない理由を考えてみよう。それと同じ。

330 :デフォルトの名無しさん:02/10/09 13:31
>> privateにアクセスできない理由を考えてみよう。

自分自身はアクセスできますが。
継承した上位クラスが別ユニットになっているときは、プロパティーを
通してしか初期化できませんね。たしかに。

331 :デフォルトの名無しさん:02/10/09 13:32
>>329
Delphiでは privateが禁止してるのは同じユニット(同じソースファイル)にあるかどうか
だから
type  Class1 = class ;
type  Class2 = class(Class1);
の2つが同じユニットにあるなら、 privateの意味はなくて裸と同じ


332 :Delフサギコ ◆A6VzDeLphI :02/10/09 13:35
             _______________
  ,,,,,,,,,,,,,∧,,∧   /
〜′,,,,,,,ミ,,゚Д゚彡< ヘイルスバーグたんはよく見てるなー
  UU""" U U   \
              ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
>C#ではアクセサへのアクセスは禁止されてるので
>いまさら議論の余地はないんだけどね。
よくここが不要だと見抜けるもんだわさ。

>>323 偽コードだから継承してるつもりでしょ..

>>314 何が論外だよ、頃すぞゴルァ

333 :デフォルトの名無しさん:02/10/09 13:37
>> つーかC#ではアクセサへのアクセスは禁止されてるので

じゃ、どうやってプロパティーを定義できるの。アクセサを呼ばずに。
C# しらないんで教えてください。

334 :デフォルトの名無しさん:02/10/09 13:38
326>>329
何を言わんとしてるかは、なんとなく理解できたと思う。
要するに、例え内部的に完結してても、極力公開されてる
手段を用いてアクセスする方が好ましいって事かな?

335 :デフォルトの名無しさん:02/10/09 13:38
いろいろな意味で低レベルな奴が多いってことだな。Del使いには。

336 :デフォルトの名無しさん:02/10/09 13:41
>>333
プロパティの アクセサは
public string Name
{
  get
  {
   return name;
  }
  set
  {
   name = value;
  }
}

のように、書きます。 これでは外部から get/setにアクセス出来ませんね?

337 :デフォルトの名無しさん:02/10/09 13:42
>>334
>要するに、例え内部的に完結してても、極力公開されてる
>手段を用いてアクセスする方が好ましいって事かな?

そうか。おれは、コンポーネントがそれ自体で完結している
方が好ましい

338 :デフォルトの名無しさん:02/10/09 13:45
>>336
が、が、外部?
いや、そうじゃなくて、今話してるのは、内部的にhoge := lhogeするか
SetHoge(lhoge);するか、どっち美しい?って話なんだけど・・・・・・
君は何処へ行きたいんだ?

339 :デフォルトの名無しさん:02/10/09 13:46
>>336

ありがとう。では C# では選択の余地なし、ってことですか。
継承した下位クラスで setter/getter を override するような
ことはできるの?

340 :デフォルトの名無しさん:02/10/09 13:47
>>337-338
ダメダコリャ

341 :デフォルトの名無しさん:02/10/09 13:47
>>338
 だから、C#のプロパティのアクセサはDelphiと違って メソッドじゃないから呼び出せないんだよ

342 :デフォルトの名無しさん:02/10/09 13:49
334>>337
hoge := lhogeだと完結してなくて、SetHoge(lhoge);だと完結してると
言うのも、おかしな話だと思うが?

でも、これって
void hoge(void) {
}
void hoge(void)
{
}
どっちが美しい?って話と同じで、実際はどっちでもいーじゃんて
話かもな(w

343 :デフォルトの名無しさん:02/10/09 13:51
>> 実際はどっちでもいーじゃんて話かもな(w

それは質問者 >>304 も知っていて、だから、どっちが美しい、ときているんでは


344 :デフォルトの名無しさん:02/10/09 13:52
>>339
下位クラスで
public new string Name // Notice the use of the new modifier

のように newを付けると基本クラスの Nameプロパティは隠蔽出来ます

隠蔽されたプロパティにアクセスするにはキャストを付けます
inherited に相当するのは、これで実現可

345 :デフォルトの名無しさん:02/10/09 13:52
>>341
うげっ!マジで知らんかった。
>>336の表記はそういう意味だったのか、C#全然わからんちん(泣

346 :デフォルトの名無しさん:02/10/09 13:53
>> メソッドじゃないから呼び出せないんだよ

なんだ、じゃ、禁止されてる、とかの問題じゃないじゃない

347 :デフォルトの名無しさん:02/10/09 13:56
>>344
なんだかエレガントかも?とか思ってしまった俺は洗脳されかけてる?

348 :デフォルトの名無しさん:02/10/09 13:56
>>344

再度、ありがとう。C# はまだ文法のところでクラスまでいってない。
継承では、プロパティーごと置き換える(上書きする)感じなのね。
アクセサを override するのとはずいぶん違うんだね

349 :デフォルトの名無しさん:02/10/09 13:57
どっちが美しい、とか聞かれてもな。
宗教論争の始まりなんで、>>304は質問を撤回しる。

美しさでなく実際の運用であれば、>>314に同意。

350 :デフォルトの名無しさん:02/10/09 14:01
>> 美しさでなく実際の運用であれば、>>314に同意。

美しさであれば?

351 :デフォルトの名無しさん:02/10/09 14:02
現時点ではSetメソッドは無く直接write FHoge指定しているけど
そのうちSetメソッド追加するかもなあ、って状況に対応できるので、
メリット・デメリットだと2.

352 :デフォルトの名無しさん:02/10/09 14:03
>>351

>>304 の質問内容が理解できないみたいだね。

353 :デフォルトの名無しさん:02/10/09 14:05
>>336
- Delphi -
 property Name: string read=getName write=setName;

- C# -
public string Name{
 get{
  return getName();
 }
 set{
  setName(value);
 }
}

C# の get/set にアクセスできないってのは、Delphi の read/write に
アクセスできないと一緒。
違いは、C# の get/set が無名のメソッドなところと、set で value が暗黙の
引数でちょっと気持ち悪いところ。

354 :デフォルトの名無しさん:02/10/09 14:07
>>352
お前頭悪いね。小学生並みの読解力だな。
>304を字面通りに判断すればどっちでもいいということになるけど、
どっちでもいいのであれば他の面で2の方がメリットが多いといっている。

355 :デフォルトの名無しさん:02/10/09 14:08
>354
>304を字面通りに判断すればどっちでもいいということになるけど

いいとか悪いとかを質問してるのではない、ということが分からないのか

356 :デフォルトの名無しさん:02/10/09 14:10
議論の流れはもう>304とは関係ないような・・・

357 :デフォルトの名無しさん:02/10/09 14:10
>>354 >>355
他でやってくれ。

358 :デフォルトの名無しさん:02/10/09 14:11
TClass.hoge と
Class.hoge が別物として扱われるからだと思ってた。


359 :デフォルトの名無しさん:02/10/09 14:11
フサギコスレでやったら?

あと、352とか355みたいな見え見えの煽りに引っかかるなよ。

360 :Delフサギコ ◆A6VzDeLphI :02/10/09 14:16
 ∫,,,,,,,,,∧,,∧   ノビー
⊂,,,,,,,,,つ,,゚Д゚ミつ 
           
Delは property ... write FHour とかもかけちゃう自由度あるので
いったん、Propertyの宣言を見なければ
本当に、この関数(SetHoge)を呼び出しているのかどうか分かりにくいから
Setの方がお勧めだけどなー。

property宣言書き換えたら、
全メソッドの内容チェックするのも嫌だし...

361 :デフォルトの名無しさん:02/10/09 14:20
>>360
それは逆。
property宣言が書き換えられた時に対応できるのは2.
…って、今までのレス読めよ…。>>314氏が可哀想だ。

362 :デフォルトの名無しさん:02/10/09 14:26
> 352とか355みたいな見え見えの煽りに引っかかるなよ。

352だが。煽ってるつもりはないんだけどね。これで最後にする。

えーとね、>>304 はどっちだって機能的には等価である、ことは知ってて
どっちが美しい、と質問してる。

質問自体の是非はおいといて、この質問にまともに答えてるのは 305 と
307 だけだよ。314 以降は、何を勘違いしたのか、メリット/デメリットとか
C# との関係とかで、全く見当はずれでしょ。それでそのことを指摘したら
小学生なみの読解力っだてさ。どっちが、と思うのも当然だと思うんだけど。

363 :デフォルトの名無しさん:02/10/09 14:27
だからスレの流れを読(略

364 :デフォルトの名無しさん:02/10/09 14:31
プログラマの言う美しいは、単なる見た目だけの話ではなく
所謂、機能美までをも含む訳で、メリットやデメリットについ
て語ったとしても、それが的外れって事はないと思うのであ
ります。どうでがんしょ?

365 :デフォルトの名無しさん:02/10/09 14:32
このネタ振った奴はさっさと収拾させろ。

366 :Delフサギコ ◆A6VzDeLphI :02/10/09 14:35
 ∫,,,,,,,,,∧,,∧  読んだ上で言ってるんだけど… 
⊂,,,,,,,,,つ,,゚Д゚ミつ よく考えてみなよ。>>361

>>314
> FHoge := Value; // 副作用なし
> Hoge := Value; // 副作用あり(期待したい)

実際には、クラス内部を書いている視点では
FHoge := Value: //副作用なし
SetHoge(Value); //副作用あり
Hoge := Value; //副作用あるのかないのかPropertyみないとわかんない

という事。
Setメソッドを作るか作らないかで迷うなら
作っておくのが、普通のOO志向だし。
(writeでSetなしでフィールド直書きというのは
 readでGetなしフィールド直読みよりも、少ない)
それに対応したいのなら、Setメソッド内部のコードを変更すべき。かと。

クラス内部のメソッド呼び出しと
クラス外部からの副作用を期待したいという
プロパティアクセスとは
区別しておくほうがいいと思うよ。


C#は、アクセスメソトなくしで呼び出し禁止し
やり方を、一方に限定したという点では美しいとは思う。
C#では、Createとアクセスメソッドで
ちょっとだけ異なった処理を行いたい場合には
>>313の形にもっていかざるおえなくなるから、
美しい形にもっていきやすくもなるんだけど
C#のやり方をDelでやるのは、ちょっと違う。

367 :デフォルトの名無しさん:02/10/09 14:40
継承したクラスで
SetHogeやプロパティを変えたりするのは
どう考えればいいの?

368 :デフォルトの名無しさん:02/10/09 14:44
>>366
…。


ツッコミは他の人に期待するとして、VBの場合Property Letだから
Setメソッド必須に近いなー、分離したければAAAみたいなのを用意するしかないなー
…ってのは想像がついた。
で、今回は機能的に等価なものを選ぶという趣味の問題なので、
Delフサギコ氏のセンスはどうでもいいのだけれど、

>作っておくのが、普通のOO志向だし。

自分の普通を一般の普通と思うのはあなたの悪い癖だ。(SJISの時もそう)
私はwrite FHogeは普通に使う。

369 :デフォルトの名無しさん:02/10/09 14:45
>>365
ごめんなさい。もう私には収拾不能です。
だって、みんな私より遥かに多くの事を考えてるんだもの。

私的には、もっと軽い気持ちで、どっちのスタイル?くらいに
思ってたんですが、まさかこれほど色んな意見が出てくると
は思わなかったですよ(:´Д`)

>>367
継承元クラスがどちらを使ってても、継承したクラスからは
何も変わらないと思う。
どちらを選択しても、出てくるコードに変わりはないはずだ
から。

370 :デフォルトの名無しさん:02/10/09 14:51
>FHoge := Value: //副作用なし
>SetHoge(Value); //副作用あり
>Hoge := Value; //副作用あるのかないのかPropertyみないとわかんない

FHoge := Value: //副作用なし
SetHoge(Value); //SetメソッドあるのかないのかPropertyみないとわかんない
Hoge := Value; //副作用が必要な時は副作用あり

371 :デフォルトの名無しさん:02/10/09 14:51
SetHogeで代入できるかも
Propertyみないとわかんないのでは。

372 :デフォルトの名無しさん:02/10/09 14:53
HogeがあるのかないのかもPropertyみないとわかんない。

373 :デフォルトの名無しさん:02/10/09 14:54
>Setメソッドを作るか作らないかで迷うなら
>作っておくのが、普通のOO志向だし。

なんでそれが普通なんだ? 作るのが推奨されるのは言語仕様にプロパティが含まれてない言語じゃないのか? ただ代入するだけのときにわざわざsetter書くのがオブジェクト指向か? 手段と目的を取り違えてないか?

setterを使うのはカプセル化のため。
だが、delphiはカプセル化をpropertyで実現できるので、setterが必要ない場合もある。
必要になってから作るのがdelphiの「普通」。

374 :デフォルトの名無しさん:02/10/09 15:01
Hoge := Value; でいいでしょ。
外部から呼ばれる時もこうなんだし。

375 :デフォルトの名無しさん:02/10/09 15:03
>>371-372
マジレスなのかネタなのか、その辺からハッキリしようじゃないか(w

あるプライベート変数にアクセス可能な関数は、どんな場合も例
外なく1以下である。という俺様ルールの元では、Hoge := Value;
としておいた方が、後でSetHogeやGetHogeを追加する時には便
利。

376 :デフォルトの名無しさん:02/10/09 15:04
歴史は繰り返す。
過去に学びたまえ、諸君。

377 :デフォルトの名無しさん:02/10/09 15:06
それはセットしたらゲットできないということ?

378 :デフォルトの名無しさん:02/10/09 15:11
SetHogeを呼び出したいときにSetHogeを呼び出す。
SetHogeを呼び出したいときにHogeを使ってはいけない。
Hogeは機能を表現しているのであり、どのメソッドで機能を実現するかは隠蔽されている。
「Hogeがどのメソッドで機能を実現するか」に依存したコードは抽象化に問題がある。

繰り返すが、SetHogeを呼び出したいときにHogeを使ってはいけない。

1.SetHoge(lhoge);
2.hoge := lhoge;

この2つのコードが将来に渡って同じ意味であることは、普通は保証されない。

379 :デフォルトの名無しさん:02/10/09 15:13
hoge := lhoge; を使った方が中傷化ができてるんでしょ。

380 :デフォルトの名無しさん:02/10/09 15:13
>>378
Hogeにアクセスして問題になるケースを具体的にageて下さい。

381 :デフォルトの名無しさん:02/10/09 15:14
>>375
そのルール自体に無理があるだろ?
リードオンリのプライベート変数にアクセスする手段がなくなるぞ。
リードオンリのプライベート変数だけは別ルールなら、それは決
して美しくない。

もっとも、リードオンリのプライベート変数には、プライベート関数
を使ってアクセスする手がある。
この場合、SetHogeに統一しておく方が、全てをSet〜で
統一できるから、君の言う俺様ルールを適用した場合でも
美しいということになる。

382 :デフォルトの名無しさん:02/10/09 15:17
コンストラクタでセットするんだから 初期化の為だろ?
なら SetHogeを陰に陽にも呼ばないのが普通では?

たとえばビジュアルなコンポーネントだと SetHogeで大抵Invalidateとか 呼ぶだろ?
コンストラクタでいちいち呼んでたらなんか処理時間が勿体ない気がするしな

383 :デフォルトの名無しさん:02/10/09 15:18
副作用が不要な場合のアクセス手段は議論からはずれてるよ。
>>375だってそれは理解しているはず。

384 :デフォルトの名無しさん:02/10/09 15:18
FHoge使え。

385 :デフォルトの名無しさん:02/10/09 15:20
>>384
 構造化言語的には副作用は別のメソッドを用意しておくべきだな

386 :デフォルトの名無しさん:02/10/09 15:21
>>382
それを考えると、>>308は受け入れ易いかも?

>>380
最初はリード&ライトを許可してたが、後で
リードオンリーに変更した場合とか、かな?

387 :デフォルトの名無しさん:02/10/09 15:23
>>378は正論だが、誤解を受けやすいと思う。
で、その上で補足しておくと、

SetHogeというひとつのメソッド(アクセサであることは関係なしに)を呼び出したい時は SetHoge
FHogeフィールド(プロパティの実体であることは関係なしに)の内容を書き換えたい時は FHoge :=
Hogeプロパティの内容を書き換えたい時は、Hoge := (この際SetHogeかFHogeか考慮することは無意味)

俺が誤解してたらごめん。

388 :デフォルトの名無しさん:02/10/09 15:23
>> たとえばビジュアルなコンポーネントだと SetHogeで大抵Invalidateとか 呼ぶだろ?

プロパティーを通しても SetHoge() 呼ばれますけど。
議論の観点がずれてるような

389 :デフォルトの名無しさん:02/10/09 15:33
>>388
だから陰にも陽にも SetHoge()を呼びたくないんだろ?

FHoge := xx; とか初期化したいのを並べておいて
最後に副作用を一挙に呼ぶのが普通では?


390 :デフォルトの名無しさん:02/10/09 15:36
>>382
自分的にも賛成なんだけど、
csLoadingやHandleAllocatedで切り分ける、
つまり初期化中かどうかのフラグを用意するのがVCL流っぽい気もする。

自分は、コンストラクタではFHoge、
それ以外は何も考えない時はHoge、副作用があったら困る時のみFHoge、
極希にメソッドとしての一面を利用したい時(多態やindex付きなど)はSetHoge、かな?

391 :378:02/10/09 15:40
>>380
「このクラスはHogeプロパティを持っていましたが、クラスのバージョンアップに伴い削除することになりました」
というケース。
SetHoge呼び出しのつもりで使ってると、修正しなくて良かったところまで修正するハメになる。
プロパティは使うなと言ってるわけではない。使い分けが必要だということ。

>>387
補足ありがとう。その通り。

さらに補足しておくと、
メソッド呼び出し、フィールドの変更、プロパティの変更はそれぞれ意味を持っている。
同じ意味であることが多いが、同じ意味であることが保証されるとは限らない。

392 :デフォルトの名無しさん:02/10/09 15:41
>>390 csLoading をコンストラクタで使うのはどうだろうか?
 実際のプロパティの設定はコンストラクタの後なんだし


393 :デフォルトの名無しさん:02/10/09 15:42
FHoge を初期化したいのと、
SetHoge() を実行すべきか、プロパティーに代入すべきか、
というのは全然別の議論です。

private フィールドの FHoge は、Hoge と同じ型を持っているとは限らないし、
Setter/Getter を持っているプロパティーは、対応するフィールドを持ってな
いこともある。

394 :デフォルトの名無しさん:02/10/09 15:49
>>393

ようするに,設問は、 Hoge=xx とSetHoge(xx) が等価な時に、どちらが
美しいかという問題だから、それ以外の話は禁止という事?

本来Pascalは同じアルゴリズムが出来るだけ同じコードになるように設計されてたんだから
こういうのは困るね。

395 :デフォルトの名無しさん:02/10/09 15:51
>>391
publicなものをそう簡単に変えられては困る。



396 :デフォルトの名無しさん:02/10/09 15:56
>>391
プロパティの削除やreadonlyへの変更はコンパイラが全て検出できるけど
# あるいはpropertyのスコープをprotectedにするだけで済むかもしれない
FHoge->SetHogeの変更は機械的にはできない。

プロパティの導入でする必要のなくなった区別をまた持ち込むという愚を犯している。

>メソッド呼び出し、フィールドの変更、プロパティの変更はそれぞれ意味を持っている。
>同じ意味であることが多いが、同じ意味であることが保証されるとは限らない。

397 :デフォルトの名無しさん:02/10/09 15:59
え、propertyってprotectedにできるの?

398 :デフォルトの名無しさん:02/10/09 16:00
public propertyに外からアクセスされたくなくなったら
protected propertyにクラスを書き換えればいいってだけの話。

399 :デフォルトの名無しさん:02/10/09 16:04
SetHogeを使いたくない奴がひとりだけいるのか?

400 :デフォルトの名無しさん:02/10/09 16:10
俺はHogeを使うことにする。

401 :デフォルトの名無しさん:02/10/09 16:35
Hogeはやめとけ







Foo, Bar, Bazにしとけ

402 :デフォルトの名無しさん:02/10/09 16:39
じゃあ、俺は Wakame にしとく。

403 :378:02/10/09 16:46
>>395
あくまでも一例なので。
というより、例が良くなかった。

>>396
前半の意味がよく分からない。
スコープを変更する、というのは盲点だったが、外部からアクセスできないプロパティを持つことが
正しい解決策とは思えない。
また、区別する必要がないのは、求める結果が実現方法に影響されない場合だけ。
Hogeのwriteメソッドは将来変更される可能性があるが、求めるのが結果だけで、
変更されても問題がないならHogeを使っていいし、むしろ使うべき。
SetHogeを使うと実現方法が固定されるので、SetHogeの方法で結果を出さないといけない場合は
こちらを使う。

404 :デフォルトの名無しさん:02/10/09 16:47
恥ずかしい議論だ・・・


405 :デフォルトの名無しさん:02/10/09 16:54
賢いってどういうことだろう・・・

406 :デフォルトの名無しさん:02/10/09 16:58
ある会社(TMyClass)のある部門(Hoge)に頼むとアメリカに連れて行ってくれるとする。
外部の人はHoge部しか知らないので、Hoge部に頼む。
TMyClass社内部の人は、実際に業務を行う課(SetHoge)を知っているので、SetHoge課に直接頼むこともできる。外部の人と同じようにHoge部に頼むことも可能(どちらでも料金は変わらないとする)。

Hoge部では今までアメリカに連れていくのに飛行機を使っていたが、今度から船を使うことにした。それに伴い、業務を行う課も変わる。
外部の人は「アメリカに行く」のが目的なのでどちらでも気にしない。そもそも、変更されたことにすら気づかない。内部の人でも、目的が「アメリカに行く」ことなら問題はない。
内部の人で、Hoge部に頼んで「アメリカに『飛行機で』行く」のが目的の人は、Hoge部への申し込みをキャンセルしてSetHoge課に頼み直さなければならない。
Hoge部は飛行機で行くなどとは一言も言っていないので、アメリカに『飛行機で』行きたいなら最初からSetHoge課に頼むべきだった。


というたとえ話はどうだろう。

407 :デフォルトの名無しさん:02/10/09 17:11
それはSetHogeを変えないということか?

408 :デフォルトの名無しさん:02/10/09 17:32
Hoge:=x とSetHoge(x) は等価という条件なら、どっち書いても美しさに代わりなし

ただし、コンストラクタにそんなもん書くなという結論で


409 :デフォルトの名無しさん:02/10/09 17:43
Delphian World でDLしたフリーの複数列コンボボックス(MCCBox12.lzh)
がD7で使えなくなってる、で、現在修正中ですが、
既に俺も使ってるから既に修正したよ!って人がいれば教えてください。
(作者にメールしても良いのかも知れないけど、D3までしか正式に対応して
ないみたいなんで、修正箇所を洗い出してから連絡したいと思います。)

410 :デフォルトの名無しさん:02/10/09 18:29
>>409
ちょっと見てみた、無効なポインタってエラーかな?
itemsの部分で出てるみたいだけど、よくわからんね。

411 :デフォルトの名無しさん:02/10/09 19:50
Indyを勉強したいのですが、ver9のdemoってどこにあるのですか?

412 :デフォルトの名無しさん:02/10/09 20:50
>>411
Indyのdemoのフォルダのにテキストファイルが1つ入ってなかったか?
その中にダウンロード場所が書いてある

413 :デフォルトの名無しさん:02/10/09 21:01
VCLでは当然のようにHogeスタイル。

414 :デフォルトの名無しさん:02/10/09 21:07
そうか? VCLでは コンストラクタは殆ど FHoge:=xx スタイルのような気がするが?


415 :デフォルトの名無しさん:02/10/09 21:10
誰もコンストラクタの話しなんてしてないんだけど?

416 :デフォルトの名無しさん:02/10/09 22:16
でるぽいってなんででるぽいっていうの?

417 :デフォルトの名無しさん:02/10/09 23:19
>>412
そのテキストファイルに書いてあったところに逝ったんですけど
demoは古いバージョンしか見つかりませんでした。


418 :デフォルトの名無しさん:02/10/10 21:09
DelphiよりC#の方が速いって、本当ですか?

419 :デフォルトの名無しさん:02/10/10 21:22
DelphiよりC#の方が早漏って、本当ですか?

420 :デフォルトの名無しさん:02/10/10 21:28
DelphiよりC#の方が小籠包ですか?

421 :デフォルトの名無しさん:02/10/10 21:29
>>418
うそだぴょーん

422 :デフォルトの名無しさん:02/10/10 21:31


97 名前:仕様書無しさん 投稿日:02/10/10 20:42
Delは某スレでベンチ対決やってC#にコテンパン



423 :デフォルトの名無しさん:02/10/10 21:40
>>422
えらく古い話題だな。
過去ログいろいろ見てみ。ことの顛末がわかるから。

424 :デフォルトの名無しさん:02/10/10 21:45
Del厨がいかさまやった挙句負けてたシーンは圧巻であった。

425 :デフォルトの名無しさん:02/10/10 21:50
そういうことにしたいんですね:-)

426 :デフォルトの名無しさん:02/10/10 21:52
>>424
ショウキ

427 :Delフサギコ ◆A6VzDeLphI :02/10/10 23:58
         きのせいか
    .∧∧  C#が早いようですが、なぜ?
  ,.、ミ,,゚Д゚彡     /i
 ;'`;、. :,.:∪`゙:゙:`''':,'.´ -‐i
 '、;:.: .、.:',.: .:: _;.;. :.‐'゙゙~  ̄
  `` U U    いや、煽りぬきでさ。
          汗で比較できる方とか、教えてきぼんぬ

procedure TForm1.Button1Click(Sender: TObject);
var
 i: Integer;
 d: Double;
begin
 for i := Low(integer) div 5 to High(integer) div 5 do
 begin
  d := d + i;
 end;
 Button1.Caption := FloatToStr(d);
end;

private void button1_Click(object sender, System.EventArgs e)
{
  int i = 0;
  double d = 0;
  for (i = Int32.MinValue/5; i <= Int32.MaxValue/5; i++) {
   d = d + i;
  }
  button1.Text = d.ToString();
}

428 :デフォルトの名無しさん:02/10/11 00:21

TTreeViewでドラッグしているとき、マウスカーソルが
ドロップできないところ(たとえばノードのないところ)に
来たときマウスカーソルがTTreeView外に出たときのように
ドロップ不可のカーソルに変えるには
どうしたらいいのですか?

429 :Delフサギコ ◆A6VzDeLphI :02/10/11 00:28
C# 仲良し Delphi Round 2
http://pc3.2ch.net/test/read.cgi/tech/1022662451/l50

    .∧∧    スマんソン
  ,.、ミ,,゚Д゚彡     /i   
 ;'`;、. :,.:∪`゙:゙:`''':,'.´ -‐i
 '、;:.: .、.:',.: .:: _;.;. :.‐'゙゙~  ̄
  `` U U    スレ違い嫌だったので
         移動しますた。教えて?!

       単にぉぃのコードが悪いでしたか??

430 :428:02/10/11 02:01
自己解決しますた。
OnDragOverのAccept := False;ですね・・・
スレの無駄使いスマソ・・・

431 : :02/10/11 23:43
del7はどーなったんか知らないけど、どーして
標準でDirectXが使えるよーにしないのかなぁ?
あとPNG。

432 :デフォルトの名無しさん:02/10/12 00:10
>>431
Microsoftが邪魔してるから

433 :デフォルトの名無しさん:02/10/12 00:19
ということにしなきゃやってられません。

434 :デフォルトの名無しさん:02/10/12 00:30
ということにしなきゃやってられません。


435 :デフォルトの名無しさん:02/10/12 01:11
DirectXはDelphiでは需要が少ないからでしょ


436 :デルファイの名無しさん:02/10/12 01:18
Borland C++用のインポートライブラリすら付いて来なくなりましたしねえ→DirectX SDK

437 :デフォルトの名無しさん:02/10/12 02:26
以前社名変更した辺りから業務系の開発環境としてのDelphi/BCBを前面に
押し出してるからでしょう。
あと、DirectXってC/C++から使う方が楽ですよね、BCBはどーなる?って
話もありますが、.NETが今後拡張されたら、将来追加されるであろう、
DirectX.NET 的なライブラリがDelphi.NETからもスムーズに
使えるようになるかもしれませんね。

438 :デフォルトの名無しさん:02/10/12 03:00
プログラミングが始めての人でも、一から無理なく学べるサイトってありますか?

439 :デフォルトの名無しさん:02/10/12 03:23
あります。

440 :デフォルトの名無しさん:02/10/12 04:09
>>439
キボンヌ

441 :デフォルトの名無しさん:02/10/12 04:20
indyを使ってアプリを作ったんですが、他の人にテスト
してもらったところ・・

「Indy60.bplが見つからないため、このアプリケーションを開始できませんでした。
アプリケーションをインストールしなおすとこの問題は解決される場合があります。」

・・と出てしまって起動出来なかったそうです。

おそらく「プロジェクト」「オプション」「リンカ」の設定が
間違っているのではないかと思うのですが・・(^^;A

現在の設定はこうなっています。

EXE/DLL オプション → 3つともチェック無し
リンク結果      → DUCファイルを作成にチェック

原因が解る方がおられましたらご教授お願いします。m(__;)m
windows98 & delphi 6 personal sp2

442 :デフォルトの名無しさん:02/10/12 04:26
プロジェクト→オプション→パッケージ→パッケージ再構築
じゃないかな。

443 :441:02/10/12 04:49
>>442

ありがとうございます!!!

「パッケージの再構築」の欄の「実行時パッケージを使って構築」の
チェックを外してからコンパイルしたら正常に起動しました!

感謝してもしきれないくらい感謝です、ありがとうございました!m(^^)m

444 :デフォルトの名無しさん:02/10/12 04:53
しかし、サイズが大きくなる罠。

445 :441:02/10/12 04:57
>>444

んん〜、それは仕方が無いですね(^^;A
ユーザーさん一人一人にIndyをインストしてもらうよりは
マシとゆうことで・・(汗

446 :デフォルトの名無しさん:02/10/12 05:01
Delphiをインストールするとsystemフォルダに
vclとか入るんだよな。いらんのに。消しても大丈夫かな。

447 :デフォルトの名無しさん:02/10/12 05:06
初心者向けのサイト
www2s.biglobe.ne.jp/~hatena/delphi/delfrm.html

私はこれを見て勉強しました。
他のどのサイトよりも格段に解りやすいっす。

HATENAさんありがとうございました〜!

448 :デルファイの名無しさん:02/10/12 06:54
>>446
IDEが使うので、Delphi32.exeと同じとこに移動すればいいかも?(当てずっぽう)

449 :デフォルトの名無しさん:02/10/12 08:37
フォーム上に動的にTimageを生成しようと練習してるのですが、
このコードで何も出てきてくれません・・・。どこか豪快に間違えているのでしょうか?

img := Timage.Create(Application);
img.AutoSize := true;
img.Left := Panel_Left;
img.Top := Panel_Top;
img.Name := 'Panel';
try; img.picture.loadfromfile(img_name); except; Panel:=nil; end;

450 :デフォルトの名無しさん:02/10/12 09:50
img.Show;

451 :デフォルトの名無しさん:02/10/12 10:08
img.parent := self;
>>446
パケジは特殊なDLLなのでパスが通っていればどこでもよい。

452 :デフォルトの名無しさん:02/10/12 18:48
>>450-451
サンクス! parentが必要だったんですね。(´・ω・`)

453 :Delフサギコ ◆A6VzDeLphI :02/10/12 19:56
   ∧,,∧     /Indyで
  ミ,,゚Д゚彡  <  時刻同期クライアントを
  ミつ  つ   \作ろうと思いましたがどうやるのでしょうか?
 〜ミ  ミ       
   ∪''∪
Time鯖を動かし
TimeDemoを127.0.0.1指定なら
うまく動くのですが、ほかのサーバーを指定すると
全部えらーになるのです。
設定の仕方とか、わかる方教えてくださいませ。

454 :Delフサギコ ◆A6VzDeLphI :02/10/12 20:06
   ∧,,∧     /忘れてました
  ミ,,゚Д゚彡  <  環境はD6ProUp2で
  ミつ  つ   \Time鯖/TimeデモなどはDelphi付属のdemoを
            使っています。

455 :デフォルトの名無しさん:02/10/12 20:54
ポート塞いでるとかそういうオチじゃないだろうな?

456 :Delフサギコ ◆A6VzDeLphI :02/10/12 21:04
    ∧,,∧  どうでしょう??どこで確認するのでしょうか?
   ミ,,゚Д゚彡   B2AdjustTimePluginは
    ミ つ旦)~~   ちゃんと、
  〜と,,,~),,~) clock.nc.fukuoka-u.ac.jp (Japan/Pacific area)
          ここにつながっているみたいです

457 :デフォルトの名無しさん:02/10/12 21:06
ファイアウォールのことだよ。

458 :Delフサギコ ◆A6VzDeLphI :02/10/12 21:09
    ∧,,∧    おうちは
   ミ*゚Д゚彡   普通にプロバイダにつなげてる
    ミ つ旦)~~  だけです。
  〜と,,,~),,~)   

459 :デフォルトの名無しさん:02/10/12 21:45
他の時刻合わせソフトは使えてる?

460 :Delフサギコ ◆A6VzDeLphI :02/10/12 21:59
桜時計に登録されてる
time-nw.nist.gov
   ∧,,∧      / ̄
  ミ*゚∀゚彡  <  ここに設定したらいけました!!
  ミ つ且~~   \鯖指定が悪かったんかな
〜ミ,,,,,, ,,ミ

461 :Delフサギコ ◆A6VzDeLphI :02/10/12 22:10
    ∧,,∧∩   / ̄
   ミ*゚∀゚彡 <  ありがとございます。
   ミつ旦 ミ   \
 〜ミ,,,,,, ,,ミ  こんなんで、時刻同期できた。

object IdTime1: TIdTime
 Host = 'time-nw.nist.gov'
 Port = 37
 BaseDate = 2
end

procedure TForm1.Button2Click(Sender: TObject);
begin //鯖のDateTimeを表示
 Button2.Caption := DateTimeToStr( IdTime1.DateTime );
end;

procedure TForm1.Button3Click(Sender: TObject);
begin //自マシンのDateTimeを鯖と同期
 Button3.Caption := BoolToStr( IdTime1.SyncTime , True );
end;

462 :サンクス:02/10/12 23:49
>>447
(・∀・)イイ!

463 :デフォルトの名無しさん:02/10/13 12:27
>>456
そこはSNTPの方じゃ?
何でIndyにSNTPServerが無いの?

464 :Delフサギコ ◆A6VzDeLphI :02/10/13 13:40
|,,∧   スイマセン、私がわかってなかったようです。
|Д゚彡  
|⊂ミ インディには
| ミ  TIdSNTPはあり
|''U  デモはTIdTimeServer/TIdTimeとか使っていたので
   そのままTIdTime使ってしまいました。

TIdTimeの次のようにHELPに書いてあった・・・
>Time は,ローカルネットワークで時刻を同期させるための
>シンプルなプロトコルです。
>複数のネットワークでさらに精度の高い時刻用プロトコルを
>実現するには,TIdSNTP オブジェクトを使います。
こっちで実装してみます。

465 :Delフサギコ ◆A6VzDeLphI :02/10/13 14:16
|,,∧   TIdSNTP動かない・・・
|Д゚彡 clock.nc.fukuoka-u.ac.jpと通信してもTDateTime値が0しか
|⊂ミ   戻らないの・・・・
| ミ    TIdUDPBase継承のActiveぷろぱは
|''U     BroadcastEnabledぷろぱと絡みで
    一度TrueからFalseに戻らない事が多いみたいなんだけど、、、

なんでかな,,,,,誰か動かして見てほしいっす,,,
0以外の値が出るものなんでしょうか?

object IdSNTP1: TIdSNTP
 Host = 'clock.nc.fukuoka-u.ac.jp'
 Port = 123
 Left = 8
 Top = 8
end
procedure TForm1.Button1Click(Sender: TObject);
begin
 Button1.Caption := FloatToStr( IdSNTP1.DateTime );
 //0と表示される
 //DateTimeToStrだと1899/12/30と表示される
end;

466 :デフォルトの名無しさん:02/10/13 15:48
環境オプションのライブラリパスのところを誤って全て消してしまいました。
コンパイルしようとしたらめちゃくちゃエラーが出てしまいます。

誰かデフォルトで入っているを教えてください。

467 :デフォルトの名無しさん:02/10/13 15:49
あげ

468 :ねこま:02/10/13 15:53
$(DELPHI)\LIB
デフォルトはこれだけだと思ったけど.


469 :デフォルトの名無しさん:02/10/13 15:53
これ?
$(DELPHI)\Lib;$(DELPHI)\Bin;$(DELPHI)\Imports;$(DELPHI)\Projects\Bpl

コンボボックスのドロップダウン部分に残ってそうな気もするけど。

470 :デフォルトの名無しさん:02/10/13 15:56
TTreeViewのコントロール内に
TTreeNode.Textが収まりきらないとヒントみたいな感じで表示されるけど
あれを表示させないようにするにはどうしたらよいのでしょうか?
ノードごとにヒントを出そうとしたら、ヒントが2つ出てしまう・・・

471 :Delフサギコ ◆A6VzDeLphI :02/10/13 15:59
 ミ,,゚Д゚ミつ ほいな>>466さん
$(DELPHI)\Lib;$(DELPHI)\Bin;$(DELPHI)\Imports;$(DELPHI)\Projects\Bpl

472 :デフォルトの名無しさん:02/10/13 16:03
>>468-469,471
助かりました、さんくすです。

でもなぜか

[致命的エラー] IdAuthentication.pas(81): 'IdCoderMIME.pas' ユニットはコンパイルできませんでした

。・゚・(ノД`)・゚・。

473 :ねこま:02/10/13 16:26
> $(DELPHI)\Lib;$(DELPHI)\Bin;$(DELPHI)\Imports;$(DELPHI)\Projects\Bpl
こんなにあったっけか (w

>[致命的エラー] IdA ...
Indy はデフォルトじゃないからでしょう
IdCoderMIME.pas のあるパスを追加すればよいのです.


474 :ねこま:02/10/13 16:28
あ,じゃないのか.
Indy 使ってないからパスです.

475 :エラー全文:02/10/13 16:33
[エラー] IdCoderMIME.pas(10): 未定義の識別子 : 'TIdEncoder3to4'
[エラー] IdCoderMIME.pas(10): クラス型が必要です
[エラー] IdCoderMIME.pas(12): 静的メソッドはオーバーライドできません
[エラー] IdCoderMIME.pas(15): 未定義の識別子 : 'TIdDecoder4to3'
[エラー] IdCoderMIME.pas(15): クラス型が必要です
[エラー] IdCoderMIME.pas(17): 静的メソッドはオーバーライドできません
[エラー] IdCoderMIME.pas(24): 未定義の識別子 : 'TIdDecodeTable'
[エラー] IdCoderMIME.pas(36): 互換性の無い型です
[エラー] IdCoderMIME.pas(37): 未定義の識別子 : 'FDecodeTable'
[エラー] IdCoderMIME.pas(38): 未定義の識別子 : 'FFillChar'
[エラー] IdCoderMIME.pas(45): 互換性の無い型です
[エラー] IdCoderMIME.pas(46): 未定義の識別子 : 'FCodingTable'
[エラー] IdCoderMIME.pas(47): 未定義の識別子 : 'FFillChar'
[エラー] IdCoderMIME.pas(51): 演算子またはセミコロン (';') が必要です
[致命的エラー] IdAuthentication.pas(86): 'IdCoderMIME.pas' ユニットはコンパイルできませんでした

476 :デフォルトの名無しさん:02/10/13 17:26
.dcuがあるディレクトリにもライブラリパスを通すか、
思い切ってIndyの全.dcuを\Libにコピーするかすればいいのでは。

477 :デフォルトの名無しさん:02/10/13 21:15
>>でもなぜか

>>未定義の識別子

未定義の識別子がどうして出るか分からないの?
なんだかなぁ...

478 :デフォルトの名無しさん:02/10/13 21:40
>>476-477
良く分からないんですが解決しました。色々さんくすです。

>>477
それは分かるんですが、 Indyに詳しくないもので'TIdEncoder3to4'とかがく分かりませんでした。
(まだ他人のソースを弄ってる程度なので…)
IdEncoder3to4でファイル検索してみたりもしたんですが見つからず…

479 :デフォルトの名無しさん:02/10/13 22:05
>>470
var
Style: DWORD;
begin
Style := GetWindowLong(TreeView1.Handle, GWL_STYLE);
Style := Style or TVS_NOTOOLTIPS;
SetWindowLong(TreeView1.Handle, GWL_STYLE, Style);


480 :デフォルトの名無しさん:02/10/13 22:43
IndyのTIdIRCをつかてます。
これで鯖に繋いで文字を受信したら文字が化けてるのですが
どうしたらよいでつか?

481 :470:02/10/13 22:51
>>479
ありがとうございます。
しかしこの行で
Style := Style or TVS_NOTOOLTIPS;

未定義の識別子: TVS_NOTOOLTIPS

符号付型と符号無し型の演算により,オペランドが拡張されました

とエラーが出てしまいます。。

482 :デフォルトの名無しさん:02/10/13 23:06
>481
確認はしてないけど、uses commctrl.pasすればいいのでは?

483 :デフォルトの名無しさん:02/10/13 23:25
ちょっとIndyがこのスレで流行ってるみたいだから、Indy9落としてきて入れますた。
すごい数のコンポ群ですね、これ。
で、特定のIPアドレスのマシンにファイルを転送したいんだけど、こんな場合は
ServerとClient側でそれぞれどんなIndyコンポ使うのがいいんでしょうか?

484 :470:02/10/13 23:31
>>479
>>482
うおーうまくいった!
ありがとう!ほんとにありがとう。

485 :デフォルトの名無しさん:02/10/14 00:06
Indy というよりも Threadに絡んだ問題で少し悩んでいる。
接続中にキャンセルした場合や、アプリが終了する場合などの
通信終了待ちはどう書くのが定型なのだろか?(TIdFtp)
今はQuit呼んで、即Freeしている。
なんとなーく動いているようだが行儀が悪い記述である気がして
すげえ気になってる。誰かアドバイスplz


486 :デフォルトの名無しさん:02/10/14 02:40
>>483
そりゃFTPでしょ。File Transfer Protocolってなもんだから。

487 :デフォルトの名無しさん:02/10/14 03:38
>>486
単純な脳味噌してるな(藁

488 :デフォルトの名無しさん:02/10/14 03:39
>>486
まぁ妥当ではあるけど、コマンドの実装が面倒だから
独自プロトコル使ってもいいんでない?
既存アプリではなく何故自分でファイル転送する必要があるか
483を問い詰めないことには結論は出なさそう

489 :timerコンポーネントについて:02/10/14 04:40
Timerコンポーネントのカウントを0から数えなおさせる
ようにするにはどうしたらいいのでしょうか?
こうゆうメソッドがあるのかと思いヘルプを見たり検索
したんですが見当たりません。

例、1分ごとにイベントを発生するTimerがあったとします。
  前回のイベントが今から30秒前に起こっていたとします。

  この瞬間にButton1を押すと、この時間から1分後に
  Timerのイベントを起こすようにしたいです。

  →イベントの発生を30秒ずつズラす。

解る方がいらっしゃいましたらお願いします。m(__)m

490 :デフォルトの名無しさん:02/10/14 04:44
Enabled := False; Enabled := True;

491 :timerコンポーネントについて:02/10/14 05:00
>>490

出来ました!!

インターバルの数字を入れ直したりと色々試してたのですが
これを見落としてました。 こんなに簡単に出来るとは・・・(汗 

どうもありがとうございました〜m(__)m

492 :デフォルトの名無しさん:02/10/14 10:07
>>465
ちゃんとサーバーに接続されてたら取得できるはず
24時間サーバーの時刻調整しているが動いてる
Indyのバージョンが古いとか

493 :デフォルトの名無しさん:02/10/14 11:23
Delphiを勉強し始めて日が浅いので、どなたか教えてくださいな。

Del6Pesonalしかもってないのでソースを見れないのですが、
string処理の CopyとLeftStrの挙動が納得いきません。
ヘルプにはCopyのほうはCount個の文字、 LeftStrのほうは文字数と書いてあります。
文字 = char = バイト なのか 文字数なのかよく分からんのが困る・・・。
var str : string;
str := 'abcdefg'; があったとして、
Copy(str, 1, 2)は abを返す。 LeftStr(str, 2 )も ab を返す。

str = 'あいうえお'; とすると
Copy(str, 1, 2)は あ を返す。 LeftStr(str, 2 )は あい を返す。

それならCopyのCountはバイト数で LeftStrの方は文字数なのかなと思ってみたら、

widestr : WideString;
widestr := 'あいうえお'; とすると、
ちゃんと両方とも 'あい'を返してきます。

494 :493:02/10/14 11:26
それで何が納得いかないのかといいますと、

Copyの挙動が引数の型によって変わるのは分かるのですが、
LeftStrのほうがstringを引数に取っているのに日本語のときにもちゃんと文字数を返すのが
気持ち悪いというか、便利なんだけどどうしてなんだかよく分からないのです。

文字コードを見てちゃんと判別でもしているのでしょうか?

495 :デフォルトの名無しさん:02/10/14 11:33
function LeftStr(const AText: string; const ACount: Integer): string;
begin
Result := Copy(AText, 1, ACount);
end;

496 :493:02/10/14 11:39
>>495
Σ(゚Д゚)

てことは・・・あれ?なんで
>str = 'あいうえお'; とすると
>Copy(str, 1, 2)は あ を返す。 LeftStr(str, 2 )は あい を返す。

ってなるんだろう・・・?


497 :デフォルトの名無しさん:02/10/14 11:44
ほんとにそんな結果出るか?
ShowMessage(LeftStr('あいうえお',2));
の実行結果はどうなる?

498 :デフォルトの名無しさん:02/10/14 11:45
ShowMessage(StrUtils.LeftStr('あいうえお',2));
こっちのが確実か。

499 :493:02/10/14 11:49
>>497
やっぱりなります。
StrUtils.LeftStrだと 'あい' , Copy('あいうえお', 1, 2) だと 'あ'

なんでなんでしょうか・・・?


500 :デフォルトの名無しさん:02/10/14 11:53
>>493
CopyのCountは文字数というか配列数

501 :493:02/10/14 12:50
>>500 なるほど、だからCopyの引数がwidestringの時は挙動が変わるみたいに見えるんですね。

にしても何でCopyを呼ぶだけのLeftStrは違うのやら。

502 :Delフサギコ ◆A6VzDeLphI :02/10/14 13:14
             ___________
    ∧,,∧     /
   ミ,,゚Д゚彡 <  VCLはこうだよ。
   ミ つ日   \___________
 .@ミ,,,,,, ,,ミ CopyはStringとWideString、渡す型によって
        動作が変わるようですね。

function LeftStr(const AText: string; const ACount: Integer): string;
begin
 Result := Copy(WideString(AText), 1, ACount);
end;

function RightStr(const AText: string; const ACount: Integer): string;
begin
 Result := Copy(WideString(AText), Length(WideString(AText)) + 1 - ACount, ACount);
end;

function MidStr(const AText: string; const AStart, ACount: Integer): string;
begin
 Result := Copy(WideString(AText), AStart, ACount);
end;

Copy('あいうえお', 1, 2) だと 'あ'
Copy(WideString('あいうえお'), 1, 2) だと 'あい'

503 :495:02/10/14 13:33
俺のはパッチなしのソースだった。すまん。
UP2当てたら確かに>502のソースになった。

しかしUPで関数の挙動を変えてくるとはね。
Borlandの文字列に対するポリシーがよく分からない・・・

504 :デフォルトの名無しさん:02/10/14 15:14
作成できるEXEの実行速度の高速性は
C++(VC++)>Delphi
でよろしいですか?

505 :Delフサギコ ◆A6VzDeLphI :02/10/14 15:31
>>492さん
|,,∧  レスあんがと
|Д゚彡 D6ProUp2で
|⊂ミ   付属のIndyです。
| ミ    
|''U  何度やってもうまくいきません  
   IndyVerあげなきゃいけないのかな..ウツ


506 :ねこま:02/10/14 15:43
StrUtils って,元は Rx Library の rxStrUtils だよね?
なんでこんなクソなもの標準として取り入れたんだろうか……

LeftStr の機能が違うけど


507 :デフォルトの名無しさん:02/10/14 16:07
Delphiを0から学べる良いサイト無いですか?

508 :Delフサギコ ◆A6VzDeLphI :02/10/14 16:08
> RX Library 2.75 official conversion to Delphi 6, v1.0 (by SGB Software)
   ∧,,∧    /手元にあったRX
  ミ,,゚Д゚彡 < みてみました
   U  つ   \
function MakeStr(C: Char; N: Integer): string;
begin
if N < 1 then Result := ''
else begin
{$IFNDEF WIN32}
if N > 255 then N := 255;
{$ENDIF WIN32}
SetLength(Result, N);
FillChar(Result[1], Length(Result), C);
end;
end;
function AddCharR(C: Char; const S: string; N: Integer): string;
begin
if Length(S) < N then
Result := S + MakeStr(C, N - Length(S))
else Result := S;
end;
function LeftStr(const S: string; N: Integer): string;
begin
Result := AddCharR(' ', S, N);
end;

509 :Delフサギコ ◆A6VzDeLphI :02/10/14 16:09
   ∧,,∧    /
  ミ;゚Д゚彡 <  ・・・なんだこりゃ??
   U  つ   \
procedure TForm1.Button2Click(Sender: TObject);
begin
 Check('ABCDEFG' , rxStrUtils.LeftStr('ABCDEFG', 1) );
 Check('ABCDEFG' , rxStrUtils.LeftStr('ABCDEFG', 5) );
 Check('ABCDEFG' , rxStrUtils.LeftStr('ABCDEFG', 7) );

 Check('ABCDEFG ' , rxStrUtils.LeftStr('ABCDEFG', 8) );
 Check('ABCDEFG ' , rxStrUtils.LeftStr('ABCDEFG', 10) );
end;

510 :デフォルトの名無しさん:02/10/14 16:16
なんだごりゃー

511 :Delフサギコ ◆A6VzDeLphI :02/10/14 16:33
   ∧,,∧    / あ、インデントやスペース消えてる...
  ミ;゚Д゚彡 <  すまそ。
   U  つ   \
RxのLeftStrは、文字列とIndexを渡して
Indexが文字列長より小さかったら
そのまま文字列を戻し
Indexが文字列長より大きかったら
文字列に必要な数のスペースを付属してIndexの長さにして
戻すという関数なんだけど・・・

VCL標準とは全然違うですね・・・なんか不思議な挙動の関数っす。
こんなの役に立つの?でも必要な人もいるのかな?
と、思って、Rx全体を検索したら、どのUnitからもrx.LeftStr使ってない....(w
MakeStrに至っては,,,255って,,,,まあいいや。

ねこまさんには、どの辺りがクソなんでしょうか。

512 :デフォルトの名無しさん:02/10/14 16:44
procedure TForm1.Button1Click(Sender: TObject);
Var
 hFile : Integer;
 Dos : Integer;
 FileData :TDateTime;
begin

 
 hFile :=FileOpen('C:\Windows\nanka.exe',0);

 
 Dos :=FileGetDate(hFile) ;

  FileClose(hFile);

 
 FileData :=FileDateToDateTime(Dos);

 
 ShowMessage(DateTostr(FileData));

end;

最終更新日時を取得する、プログラムなんですが、操作者側が
取得するプログラムのローカルアドレスを指定できるようにしたいです。

513 :デフォルトの名無しさん:02/10/14 16:54
uses IdSNTP;

procedure TForm1.Button1Click(Sender: TObject);
begin
 with TidSNTP.Create(Self) do try
   Host:='clock.nc.fukuoka-u.ac.jp';//'time-nw.nist.gov';
   Port:=123;
   Self.Caption:=
   FormatDateTime('YY/MM/DD HH:MM:SS',DateTime);
  finally free;end;
end;

514 :ねこま:02/10/14 17:01
わざわざ MakeStr で作った文字列を繋げている所がクソです.
左寄せしたければ SetLength, FillChar & Move で良いのです.

Rx Library は全体がバブリーで,昔から大嫌いです.
"required RX Library"なんて書いてあるコンポーネントは軽蔑します.
Irvine で使われているのが信じられません.はっきしいってガッカリしました.
もちろん既に排除しました.


515 :ねこま:02/10/14 17:02
> もちろん既に排除しました
Irvine から RxLib を排除したって事ね.


516 :デフォルトの名無しさん:02/10/14 17:24
>>513  あ、D7で試しました 問題ないと思います

517 :デフォルトの名無しさん:02/10/14 17:37
スクリーン上に、指定したフォントサイズで文字を表示したいのですが、
文字をスクリーンに描画するにはどうしたらいいんでしょうか?

518 :デフォルトの名無しさん:02/10/14 17:58
>>517

スクリーンってなに?
広い意味では、ラベルの文字列だってスクリーン出力だよ。
デスクトップの意味なら、google でコード例がたくさん見つかる

519 :デフォルトの名無しさん:02/10/14 18:06
>>518
あ、言葉足らずですみません。デスクトップの意味です。
ググってみたのですが、私の検索条件の設定が悪いためか、
いまいち引っかかりませんでした。コード例があるところ
ご存じでしたら教えていただけませんでしょうか?

520 :>>512 Openしなくても:02/10/14 18:06
procedure TForm1.Button2Click(Sender: TObject);
function FileTimeToDateTime(const ft:TFileTime):TDateTime;
var lt:TFileTime;
var st:TSystemTime;
begin
FileTimeToLocalFileTime(ft,lt);
FileTimeToSystemTime(lt,st);
Result:=SystemTimeToDateTime(st);
end;
function GetFileTime(fname:string ;var tCreation,tLastAccess, tLastWrite:TdateTime):boolean;
var F: TWin32FindData;
var h:THandle;
begin
h:=FindFirstFile(PChar(fname),F);
if h<>INVALID_HANDLE_VALUE then
begin
tCreation := FileTimeToDateTime( F. ftCreationTime );
tLastAccess := FileTimeToDateTime( F. ftLastAccessTime );
tLastWrite := FileTimeToDateTime( F. ftLastWriteTime );
Result:=True;
Windows.FindClose(h);
end;
Result:=false;
end;
var tCreation,tLastAccess, tLastWrite:TdateTime;
begin
with TOpenDialog.Create(Self) do try
if Execute then begin
GetFileTime(FileName,tCreation,tLastAccess, tLastWrite);  Caption:=DateTostr(tLastWrite);
end;
finally free; end;
end;

521 :デフォルトの名無しさん:02/10/14 18:08
>>519
http://www.google.co.jp/search?q=GetDC(0)%20Delphi&lr=lang_ja


522 :512:02/10/14 18:21
>>520
うまく行かないのですが、、

523 :Delフサギコ ◆A6VzDeLphI :02/10/14 18:22
           _____________
   ∧,,∧∩  /
  ミ,,゚Д゚彡 < さんくしこ>>513>>516さん!
   U  ミ   \
 @ミ  ミ       ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
   ∪''∪
わかった!、今、Indy9(9.00.10)に変更したらちゃんと日付とれました

D6Up2のIndy,8.0.25のTIdSNTP.GetDateTimeってバグありじゃないか?
ばっちり確信もてるってわけじゃないんだけど、トレース
実行しても、なんか0が戻ってくるし。

それにしても、Indy9の差込方の正しいやりかたが
いまいちわかんない・・・

ソースごっそり置き換えて
ライブラリパスに$(DELPHI)\Source\Indy
こんなん入れないと、実行時ライブラリの方が
Ver9になってくれない...設計時のは簡単に入れれたのに,,,

Del標準にするにはBinとかLibフォルダに何をいれればいいんだろうか。

524 :512:02/10/14 18:23
すいません。出来ました
end.を不覚にも書き忘れてました。
タイトルバーに表示されますけど、ウィンドウで表示はできませんか

525 :Delフサギコ ◆A6VzDeLphI :02/10/14 18:30
ちょっとage進行   _____________
   ∧,,∧    /
  ミ,,゚Д゚彡 < 教えてくらさいな
  ミ⊃  ミ⊃  \____________
 〜ミ  ミ
   ∪''∪ ということでお聞きします。
Indy8からIndy9にUpしたいと思いました。

で、D6のデフォルトでIndyにかかわるファイルって
  $(DELPHI)\Source\Indy
の一式と
  $(DELPHI)\Bin\dclIndy60.bpl
  $(DELPHI)\Lib\indy.dcp
  $(DELPHI)\Lib\indy.dcu
この3ファイルだと考えたのですが

これらをIndy9のものに変更するだけではだめなのでしょうか?

526 :Delフサギコ ◆A6VzDeLphI :02/10/14 18:34
   ∧,,∧    /ところで、
  ミ゚Д゚,,彡 < Indyコンポーネントはたぶん全部
 ⊂ミ ⊂ミ   \ TIdBaseComponentを継承してるから
  読み出し専用のVersionプロパティで
   Versionを確認することができます。

527 :Delフサギコ ◆A6VzDeLphI :02/10/14 19:00
  ∧,,∧
 ミ;゚Д゚ミつ
某マニの
http://www.ba.wakwak.com/~h-kova/cgi-bin/bbs/cyclamen.cgi?log=vcl
ここの
http://www.ba.wakwak.com/~h-kova/cgi-bin/bbs/cyclamen.cgi?log=vcl&tree=r793
これって、さっきのLeftStrの問題では?

528 :デフォルトの名無しさん:02/10/14 19:28
他板のネタをこっちに持ってくるなよ。
あっちで教えてやればいいだろ。

529 :493:02/10/14 19:53
どうもです。495さんやミ,,゚Д゚彡さんやその他の皆さんのおかげで納得が行きました。
LeftStrはWideStringにキャストしてからCopyに渡しているんですね。

>>527のほうにも返答を書き込んでみようかと思ったのですが、
BCB6ってまだUpdatePackありませんよね・・・。
なんで環境によって違うんでしょうね。謎だ。

530 :デフォルトの名無しさん:02/10/14 21:08
>>525
You should remove Indy 8.0 with Borland's MSI installer by using the Add/Remove
control panel applet.

In Delphi 6.0 and C++Builder 6.0, Indy should be listed in your path before the
standard Borland RTL Paths. This is important because Borland does include an
older version of Indy in their distributions and this old distribution can
conflict with our distribution. In earlier installations, we used to delete
some files from your lib\debug directory but this is not workable in C++Builder
6.0 because the old Indy distribution was placed in several paths. This was
occurring even though you removed Indy with Borland's MSI installer or
specifically chose not to delete Indy 9.0. We did not feel comfortable deleting
those Indy files because there are so many files in several paths because that
would increase the chance that we would make an error and delete something we
should not have deleted causing some other problems.


531 :デフォルトの名無しさん:02/10/14 21:36
Delphiで透明レイヤーって作れますか?

532 :デフォルトの名無しさん:02/10/14 21:47
>>531
おまえにはVBがお似合い

533 :デフォルトの名無しさん:02/10/14 21:49
>>532
うるさい。ボケ。教えろ。

534 :デフォルトの名無しさん:02/10/14 22:13
>>531
Transparentというプロパティのあるコンポーネントならできるはず

535 :デフォルトの名無しさん:02/10/15 05:44
popup Menuコンポーネントについてお聞きしたいのですが
popup MenuのCaptionに名前を登録すると勝手にショート
カットキーらしき表示が追加されてしまいますよね。

例、「 名前(Z) 」

これを「 名前 」だけにするにはどうしたらいいのでしょうか、
どなたか教えて下さい。m(__;)m

536 : :02/10/15 06:35
(´-`)。o ○ (これは「ヘルプ嫁」だなぁ…)

537 :535:02/10/15 07:01
>>536

ヘルプ読んでも検索しても解らなかったから聞いたのに・・(TT
私には理解出来ない書き方してあるのかな・・

538 :sage:02/10/15 07:15
ヒントだけやる
TPopupMenu のプロパティの最初の方にある


539 :535:02/10/15 07:50
>>538

ありがとうございます、もう一度調べ直してみます。 m(__;)m


540 :535:02/10/15 08:12
>>538

解決しました!!

読み直してもやっぱり解らなかったのでプロパティを上から
1ずつ試してようやく発見出来ました。(^^;A

AutoHotkeysのヘルプは私にはさっぱり理解出来ませんでした、
これから少しづつ勉強していきます。

ご指導ありがとうございました!m(__)m

541 :Delフサギコ ◆A6VzDeLphI :02/10/15 11:01
 ミ,,゚Д゚ミつ
D5かD6か忘れたけどVerUp時
AutoHotkeyが増設されてデフォでTrueだったとき
熟練のDel使いでも何人もが>>535現象に混乱してたので
ヘルプ嫁では通じないです。きっとKitto。

どうでもいいけど、透明レイヤーってなんの事だろかしら。

542 :デフォルトの名無しさん:02/10/15 13:49
Msg.messageを文字列に変換する方法がありましたら
教えてくれませんでしょうか?
例えば
Msg.messageがWM_ACTIVATEだったら'WM_ACTIVATE'に
変換するなど・・・

543 :デフォルトの名無しさん:02/10/15 13:54
>542
泥臭い方法しかないかと。
windowメッセージだけなら、前に作ったのが家にあるので、帰宅後でいいならアプしますが。

544 :デフォルトの名無しさん:02/10/15 13:57
>>542
俺ならヘッダなりヘルプなりからawkとかに流し込んで変換テーブルを作成するけどね。

545 :デフォルトの名無しさん:02/10/15 14:13
逆引テーブルみつけた
ttp://www.infoeddy.ne.jp/~tensyo/prog/message.txt


546 :542:02/10/15 14:13
>>543
是非うpお願いしたいです。

>>544
やっぱり自作するしかないですかね・・・
せめて列挙型で定義されてればとか思ってみるテスト

547 :デフォルトの名無しさん:02/10/15 14:16
>>545
をを!ありがもう(´ー`)
ちょっくら変換テーブル作ってみよ

548 :542:02/10/15 15:48
Messagesのユニットをコピペして強引にConstから列挙型にしたんですが
うまくいきませんでした。
GetEnumNameで文字列を取得しようとしたんですが、
↓みたいになるとエラーになるみたいです。

識別子が一致しないようにWM_ACTIVATE → _WM_ACTIVATE
type TWindowMessages = (
_WM_NULL = $0000,
_WM_CREATE = $0001,
_WM_DESTROY = $0002,
_WM_MOVE = $0003,
_WM_SIZE = $0005, ← 値が飛ぶとTypeInfoでエラー

これってDelphiというかTypeInfoの仕様なんでしょうかね?

549 :ねこま:02/10/15 16:18
なんでわざわざ列挙型にするのか?です.



550 :ねこま:02/10/15 16:25
FIELD = VALUE;
が連続しているだけなので,AWK かなんかで
VALUE: Result := 'FIELD';
と変換してしまえば case 文のボディができあがりますがそれではダメなんですか?


551 :542:02/10/15 16:28
>>549
すいません書き忘れてました。
最初の質問に関してはもう解決済みです。
ただ列挙型にしたのはテーブル作る他に何かよい方法がないかなーとか
模索してたのです。
そしたら>>548のようなエラーになったのです。


552 :デフォルトの名無しさん:02/10/15 17:09
仕事で英語版Windowsで動作するアプリばかり作らされるから、
英語版のDelphi7買おうと思うんだが、日本語版Windowsで
英語版Delphiってちゃんと動く??

553 :デフォルトの名無しさん:02/10/15 18:25
>>535
オーナードローでどうぞ。

554 :デフォルトの名無しさん:02/10/15 21:26
0.txtが既に存在しているならそこに書き込み、
存在しない場合は新たに作成して書き込むというコードを書いてみたんですが
既にファイルが存在している時に書き込もうとするとI/Oエラーが出てしまうんです。

var
F :TextFile;
FileData :String;

begin
AssignFile(F,'0.txt') ;
if FileExists('0.txt') then
begin
FileData := Edit1.Text ;
Writeln(F,FileData)
end else

begin
Rewrite(F);
FileData := Edit1.Text ;
Writeln(F,FileData)
end;

CloseFile(F);

end;
end.

新しくファイルを作って書き込むのは正常に動くのですが…どこがおかしいのでしょうか?
どなたか教えて下さい。

555 :デフォルトの名無しさん:02/10/15 21:29
Resetしろ

556 :554:02/10/15 22:33
>>555
解決したような気がします、ありがとうございました。

557 :デフォルトの名無しさん:02/10/16 04:13
>>552
むしろ日本語版より正確に動く


558 :デフォルトの名無しさん:02/10/16 21:39
>> 正確に動く

なんじゃ?!


559 :デフォルトの名無しさん:02/10/16 23:54
>>552
Patchが早い

560 :デフォルトの名無しさん:02/10/17 02:00
英語版より1〜2ヶ月遅れででてくるので、英語版に存在する初期不良が
直ってでてくる。BCB6 Sp1 は日本語出荷版に含まれているのだよ > 中村タン


561 :デフォルトの名無しさん:02/10/17 13:49
アプリケーション外のキャレットの位置(例えばブラウザなどで掲示板に
書きこっんでいるときのキャレットの位置)を取得するにはどうしたら
良いのでしょうか?

562 :デフォルトの名無しさん:02/10/17 15:03
Delphiでファイルを開くときにバイナリエディタで開いたように
表示するにはどうしたらいいですか?

563 :Delフサギコ ◆A6VzDeLphI :02/10/17 15:14
 ∫,,,,,,,,,∧,,∧  ノビー
⊂,,,,,,,,,つ,,゚Д゚ミつ
FileStreamで読み出して、バイトごとにみて
16進数で書き出せばいいのかな?>>562

564 :562:02/10/17 15:37
>>563
ゲームのセーブデータを編集するようなアプリケーションを
作ろうと思っているのですが、
バイナリエディタのあるアドレスの部分の16進数を
10進数に変換してウィンドウに表示するようなことっていうのは可能ですか?

565 :デフォルトの名無しさん:02/10/17 15:54
>564

IntToStr
StrToInt
IntToHex

とか調べればわかるんじゃない?

566 :Delフサギコ ◆A6VzDeLphI :02/10/17 15:54
 ∫,,,,,,,,,∧,,∧  マルチポス(しかも2chスレ内で..)やめようね(w
⊂,,,,,,,,,つ,,゚Д゚ミつ
で、もうちょっと他の人に分かるような内容で書いてっ。

そのバイナリエディタ自体を自分で作るの?
それともどっかのバイナリエディタを
改造したいってこと?

簡単なのなら、
クリップボードに入っている16進数表現文字列を
10進に変換すればいいだけじゃない?

567 :デフォルトの名無しさん:02/10/17 16:27
ネットワークで、今、接続しているマシンのIPを調べるには どうしたらいいのでしょうか?
また、それを切断するには、どうしたらいいのでしょうか?

568 :デフォルトの名無しさん:02/10/17 16:27
1〜10の数を乱数でかぶらないように出すにはどうすればいいの?

569 :デフォルトの名無しさん:02/10/17 16:45
配列に入れて一つ抜いて、詰めていってを繰り返す。

570 :デフォルトの名無しさん:02/10/17 16:47
>>568
既出したものを配列に保存しておいて、かぶったやつは 無視すればいい。

1から10の並び替えを行うならば、10までの配列をもち、乱数で出た数字と次の乱数で
出た数字の位置の内容を入れ替える。

571 :デフォルトの名無しさん:02/10/17 17:26
>>568
列挙はこれかな
http://www.wwlnk.com/boheme/delphi/tips/tec0920.htm

切断は判らない

572 :デフォルトの名無しさん:02/10/17 18:06
>>570
それじゃ一様に混ざらない

for i := Low(arr) to High(arr) do
swap(arr[i], arr[random(Low(arr), High(arr))]);


573 :デフォルトの名無しさん:02/10/17 19:01
TToolBar.Customizable プロパティを True にすると
ツールバーがカスタマイズ可能になるらしいのですが、
具体的なコーディングが全然わかりません。
別の所で聞いたら、かなり高度な内容らしくどなたからも回答いただけませんでした。
どうかよろしくお願いします。


574 :デフォルトの名無しさん:02/10/17 19:11
>>573
高度も何も、ヘルプに書いてある通りにすればできるよ。
コーディング一切なしで。

それとも他に何かしたいのかな?

575 :デフォルトの名無しさん:02/10/17 19:15
ドロップを受付るようにするとか?

576 :デフォルトの名無しさん:02/10/17 19:38
>>574
カスタマイズ後のツールバーの状態を保存して、次回の起動時に復元したいのですが。


577 :デフォルトの名無しさん:02/10/17 19:58
リストビューのレポート表示時に、あるカラムにリストボックスを貼り付けたりとか出来ませんか?

578 :デフォルトの名無しさん:02/10/17 20:03
>>577
リストボックス−>ドロップダウンメニューです。すまそ。

579 :デフォルトの名無しさん:02/10/17 20:57
質問する前に、ここくらい嫁
http://www.geocities.co.jp/SiliconValley/3657/oshiete.html

580 :デフォルトの名無しさん:02/10/17 21:19
努力を放棄している。
情報を開示していない。
答える人間のことを考えていない。

581 :Delフサギコ ◆A6VzDeLphI :02/10/17 21:23
環境依存かな?

私の所では、RichEditデモのツールバーを
Customizable:=Trueにして試してみると
一度消してしまったツールボタンを二度と見る事が
出来なかったりして
VCL標準のコーディング一切無しでは
アプリ上使い物にはならないのですが…

 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
    ∧,,∧               VCLアプリのBugBrowserでも
__ミ,,゚Д゚彡,,,,,___.   ∀    Toolbarカスタマイズは。
    ∩,,,,,,,,,,,,,,⊃⊃  |   ┷┳━ 独自実装ですね
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|  ┃
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄   ┻  ListBox部分がListViewだし

>>580、何のこと?

>>577簡単には出来ないと思います。
自分でComboBoxを貼り付けるようにしたら
どうにか出来るのですが。

582 :580:02/10/17 21:36
>>581
579の言いたいこと

583 :デフォルトの名無しさん:02/10/17 23:30
目インフォ無を常に手前にしたり元に戻したりするのに
最初はFormStyleのfsStayOnTopとfsNormalを使っていたのですが
コレだとプロパティーを変えると画面がちらつくので
検索して下のコードのような常に手前に表示は分かったのですが
元に戻し方が分かりません。。
どなたか元に戻し方を教えて頂けないでしょうか?

SetWindowPos(MainForm.Handle, HWND_TOPMOST, 0, 0, 0, 0,
SWP_NOMOVE or SWP_NOSIZE)

584 :デフォルトの名無しさん:02/10/17 23:31
ヘルプ嫁

585 :デフォルトの名無しさん:02/10/17 23:33
スマソ・・・
目インフォ無×
メインフォーム○

586 :デフォルトの名無しさん:02/10/17 23:46
>>583
英語嫁。
TOPMOSTってとこで常に手前を指定してるのが分かるだろ。
そこでコード保管して想像しろ。

587 :583:02/10/17 23:54
>>586
wndNoTopMostにすればいいのでしょうか?
これにしてもうまくいかなかった。。
それとも別の?いちお全部試してみたのですが・・・

588 :デフォルトの名無しさん:02/10/17 23:57
(´-`)。o ○ (「初心者ですが」「○○は出来ますか」ってのは
歓迎されないことくらい予想付きそうだけどなぁ…)

589 :Delフサギコ ◆A6VzDeLphI :02/10/18 00:14

    ∧,,∧ 。o ○(なら答えなきゃいいのになぁ・・・)
__ミ=(´-`),,,,,___.   ∀
    ∩,,,,,,,,,,,,,,⊃⊃  |   ┷┳━
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|  ┃
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄   ┻
>>574>>579>>584>>586
MLに変えれば、どうかと小一時間

590 :デフォルトの名無しさん:02/10/18 00:38
>>587
なにがうまくいかねーんだよ
procedure TForm1.Button1Click(Sender: TObject);
begin
SetWindowPos(Handle, HWND_TOPMOST, 0, 0, 0, 0,
SWP_NOMOVE or SWP_NOSIZE)
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
SetWindowPos(Handle, HWND_NOTOPMOST, 0, 0, 0, 0,
SWP_NOMOVE or SWP_NOSIZE)
end;

591 :Delフサギコ ◆A6VzDeLphI :02/10/18 00:46
      /⌒\
     γ彡・ω)ミ Form2でやったら・・・
      |ミ,,゚Д゚彡 
      |(ノ  |つ うまくいかねーんでは?
     ヾ|    |
      ヽ _ノ 
       U"U オレ ハ ヤッタ
           ウマク イカネーン...YO

592 :583:02/10/18 00:58
>>590
ありがとうこざいます。
ほんとだこれだとうまくいく。

fofm2にあるCheckBoxのチェックによって判別しようとこのように
したのですがうまくいかなかったのです。ごめんなさい。

if CheckBox.Checked then
SetWindowPos(MainForm.Handle, HWND_TOPMOST, 0, 0, 0, 0,
SWP_NOMOVE or SWP_NOSIZE)
else
SetWindowPos(MainForm.Handle, HWND_NOTOPMOST, 0, 0, 0, 0,
SWP_NOMOVE or SWP_NOSIZE);

593 :583:02/10/18 00:59
>>591
ソーナノ・・・

594 :Delフサギコ ◆A6VzDeLphI :02/10/18 01:04
   .。○(目インフォ無って書いてあった・・・)
  ∧,,∧ 
 ミ,,, ,彡⊃``;⊃  ダメダメ デ ゴミンナサイ...
  ∩;,,,,,,,,,,,,,,,,,,,;⊃ 


595 :デフォルトの名無しさん:02/10/18 01:07
フサギコ最近どうしたんだ?

596 :Delフサギコ ◆A6VzDeLphI :02/10/18 01:13
   ∧,,∧フー
  ミ,,゚Д゚彡 ∫
  と  ,,ミつ━
━┳━━┳━┓
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|
以前Form2のfsStayOnTopの件で調べてて
それやると、Form1のFormStyleや最大/最小化と
非常に相性の悪い挙動をするということが
わかっていたんだけど

今回のSetWindowのやり方でも
同じようになるのかどうか、検証したいけど
・・・・・・この時間に家かえってきたら
         そんな時間ないでつ・・・・・・ハァ....

597 :デフォルトの名無しさん:02/10/18 01:19
(´-`)。o ○ (グチは控えめに)

598 :デフォルトの名無しさん:02/10/18 01:28
>>597
お前もDelスレにスカスカなうんこをなすり付けるのはやめてくれ。

599 :デフォルトの名無しさん:02/10/18 01:34
相性の悪いってどういう動き?

600 :デフォルトの名無しさん:02/10/18 01:39
598=スカスカなうんこ

601 :Delフサギコ ◆A6VzDeLphI :02/10/18 01:41
 ∫,,,,,,,,,∧,,∧  600ゲツ  しそこね
⊂,,,,,,,,,つ,,゚Д゚ミつ

Form2ノfsStayOnTopのOn/Offで最前面に出るためには

procedure TForm2.CreateParams(var params: TCreateParams);
begin
 inherited CreateParams(params);
 if Self.FormStyle = fsStayOnTop then
  params.WndParent := Application.MainForm.Handle;
end;
これする必要があるけど。これすると
Form1もfsStayOnTop
Form2もfsStayOnTopすると、Form2が行方不明になったかと。

602 :デフォルトの名無しさん:02/10/18 01:44
598=601?

603 :Delフサギコ ◆A6VzDeLphI :02/10/18 02:01
( )
 ( )   ( )
   ∧=∧ ポゎ〜
   ミ*゚Д゚彡 
| ̄ ̄∪∪ ̄| ちゃうよ>>602

昔のことなので、思い出しながら書いてみたです。
procedure TForm1.Button2Click(Sender: TObject);
begin FormStyle := fsStayOnTop;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin FormStyle := fsNormal;
end;
procedure TForm1.Button4Click(Sender: TObject);
begin Form2.Show;
end;

procedure TForm2.Button1Click(Sender: TObject);
begin FormStyle := fsStayOnTop;
end;
procedure TForm2.Button2Click(Sender: TObject);
begin FormStyle := fsNormal;
end;
procedure TForm2.CreateParams(var params: TCreateParams);
begin //overrideしておくれ
inherited CreateParams(params);
if Self.FormStyle = fsStayOnTop then params.WndParent := Application.MainForm.Handle;
end;

これで、form2も最善面可だけど、form1の最大化最小化や
form1の最前面に対応しなかったりするよ。

604 :デフォルトの名無しさん:02/10/18 02:25
fsStayOnTop; って、どんなときに使いたいと思うのかなぁ。
なんか、初心者質問みたいで、ほんとにそんなことが必要なのか
よく考えたほうがいいと思うんだけど。

605 :デフォルトの名無しさん:02/10/18 02:57
モーダルでフォーム作るときに使う。
これやっておかないと後ろに隠れちゃったりして面倒くさい

606 :デフォルトの名無しさん:02/10/18 03:01
逆だったかもしれん・・・

607 :デフォルトの名無しさん:02/10/18 04:35
実はメインフォームを最前面に居座らせたい時以外は要らないんだ…
Windows的には、WS_POPUPスタイルでオーナーウィンドウを指定しておけば、
常に特定ウィンドウの前に置いておけるから…
ただ、VCLのフォームはオーナーウィンドウは総てApplication.Handleなので、
Windows標準の動作を利用できず、対策的にダイアログでも最前面表示を使ってるだけなんだ…


608 :デフォルトの名無しさん:02/10/18 20:14
>> VCLのフォームはオーナーウィンドウは総てApplication.Handleなので、

デフォルトではそうだね。603 みたいに CreateParams を override すると
オーナーも変更できて、特定の Form の必ず手前には表示できるよ。

609 :デフォルトの名無しさん:02/10/19 02:59
OnKeyPressで、キーが押されたら呼び出されるイベントを発生させているのですが、
キーを押してから0.5秒後にイベントを発動させる、もしくはイベント内で
処理を0.5秒待つといったことはできるのでしょうか?

一旦停止するのはそのイベント内の処理だけで、他には影響させたくないのですが・・・。


610 :デフォルトの名無しさん:02/10/19 02:59
TTimer使え

611 :デフォルトの名無しさん:02/10/19 07:58
>>609
SleepとかいうAPIがあった気がする

612 :デフォルトの名無しさん:02/10/19 08:39
>>609
TimeSetEvent

613 :デフォルトの名無しさん:02/10/19 09:29
Delphi使いはみんな良いやつだなぁ(しみじみ)

614 :デフォルトの名無しさん:02/10/19 09:31
>>613
皮肉ですか?
皮肉ですか?
皮肉ですか?
皮肉ですか?

皮  肉  で  す  か  ー  ?


615 :デフォルトの名無しさん:02/10/19 10:31
レスサンクス〜。
>>610 それはちょいと;
>>611 Sleepだとまるごと止まっちゃうんですよね・・・。
>>612 小難しいですが、頑張ってみます。

616 :デフォルトの名無しさん:02/10/19 10:43
>615
わけもわからずTimeSetEvent使うと破綻するぞ。素直にTTimerにしとけ。

617 :Delフサギコ ◆A6VzDeLphI :02/10/19 10:56
     ∧,,∧        / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
     ミ,, ゚Д゚彡     <  連続で呼び出すと変になるけど...
     〃つ_つ/  ̄ ̄ ̄/\_____________
   〜ミ,,, ,,|\ ./ レ ッ シ /
       '\/.======./
           ̄ ̄ ̄
procedure SleepProcessMessages(Milliseconds: Cardinal);
var
 StartTime, NowTime: Cardinal;
begin
 StartTime := GetTickCount;
 while true do
 begin
  NowTime := GetTickCount;
  if Milliseconds <= (NowTime - StartTime) then
   Break;
  Application.ProcessMessages;
 end;
end;

618 :デフォルトの名無しさん:02/10/19 11:10
>>617
だからDelでビジーループ書くなっつーの。

619 :無責任だが:02/10/19 11:42
TTimerの方が簡単。 動的に作成して、動的に消去すると 時間待ち中に次のクリックがあっても大丈夫

procedure TForm1.Time0r5SecEvent(Sender: TObject);
begin
  if Sender is TTimer then Sender.Free; //タイマーイベントなら消去
  Caption:=FormatDateTime('hh:nn:ss zzz',now); //動作確認例
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  with TTimer.Create(Self) do begin
   Interval:=Round(0.5*1000);
   Enabled:=True;
   OnTimer:= Time0r5SecEvent;
  end;
end;


620 :デフォルトの名無しさん:02/10/19 12:10
0.5 秒ぐらいなら Sleep() で充分

>>618 「ビジーループ」の意味が間違ってる

621 :デフォルトの名無しさん:02/10/19 12:16
どっちにしろ、>>617のコードは、ProcessMessagesの直前に
MsgWaitForMultipleObjectsを入れといた方がいい。

622 :デフォルトの名無しさん:02/10/19 12:16
>>619
>動的に作成して、動的に消去すると 時間待ち中に次のクリックが
>あっても大丈夫

これの意味がわかりません。動的に作成するとどんないいことがあるの?


623 :デフォルトの名無しさん:02/10/19 12:20
>>622
書いてくれてるじゃん。連打されてもちゃんと全部対応できる。

624 :デフォルトの名無しさん:02/10/19 12:22
>>622
 そりゃ 最初のボタンを押して 0.2秒後にもう一度ボタンを押したら

t+0  : ボタンon
t+0.3 :次の ボタンon
t+0.5 :最初のイベント
t+0.8 :次のイベント

ってなるって事でしょ。

他の方法だと 時間内に同じボタンを押すとややこしい事になる

625 :デフォルトの名無しさん:02/10/19 12:22
>>616 >>619
あ、なるほど、そうやるのか(゚д゚)!! 参考になります。


626 :デフォルトの名無しさん:02/10/19 12:28
>>624

619 コードで TMemo に書き込んでみるとわかるが、動的に作成しても
複数のイベントは起こるよ。時間内に複数イベントを起動するのを防ぐ
には、動的に作成するとかは関係なく

procedure TForm1.Button2Click(Sender: TObject);
begin
if not Timer1.Enabled then Timer1.Enabled := true;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
Timer1.Enabled := false;
Memo1.Lines.Add(FormatDateTime('hh:nn:ss zzz',now));
end;

とするとよいのでは?

627 :デフォルトの名無しさん:02/10/19 12:29
TEditコントロールの文字の配置を
右揃えにしたいのですが、
できますか?

628 :デフォルトの名無しさん:02/10/19 12:30
626 だが
>>書いてくれてるじゃん。連打されてもちゃんと全部対応できる。

あっ、そうか、むしろ全部対応することが重要なのね。なるほど。

629 :デフォルトの名無しさん:02/10/19 12:33
>> むしろ全部対応することが重要なのね。

でも、よく考えてみたら

>>619 の質問
> イベント内で
> 処理を0.5秒待つといったことはできるのでしょうか?

とは、関係ないことですね。


630 :デフォルトの名無しさん:02/10/19 12:52
あげ

631 :無責任だが:02/10/19 13:12
追加
>>619のコードで Time0r5SecEventのリターン先が 解放した TTimerオブジェクトなんで気持ちが悪い人は
 リターン直前に Abortを投げるといいでしょう

>>627
色々方法はあります。検索 TEDIT + 右寄せで googleで検索するとよいでしょう




632 :Delフサギコ ◆A6VzDeLphI :02/10/19 13:32
Edit ボックスに入力した文字を右寄せにして表示したい
http://www.borland.co.jp/qanda/delphi/d0000090.html
            _____________
   ∧,,∧    /
   ミ゚Д゚,,彡 <  某の回答がコレか...ホトトホ
   ,;゙   ミ     \ 
 @ミ,,,UUミ       ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

Win95初期Versionじゃシステム関係の処理から
無理なんだけど、TEditを継承したものを作った方がいいよね

[Delphi:41622] Re: Edit のスタイル変更について
http://www2.big.or.jp/~osamu/Delphi/browse.cgi?index=41622

633 :デフォルトの名無しさん:02/10/19 13:50
>>631-632
ありがとうございました。
できますた!

634 :デフォルトの名無しさん:02/10/19 14:31
>>632
MEMOは一番簡単で
Win95でも使えて
Edit中も右寄せできるから
結構便利
Win95使ってるところもまだ結構あるし

635 :デフォルトの名無しさん:02/10/19 14:36
TEDIT も TMEMOも どっちも同じコントロールなんだし

636 :Delフサギコ ◆A6VzDeLphI :02/10/19 15:26
            _____________
   ∧,,∧    / Ctrl+EntやCtrl+J
   ミ,,゚Д゚彡 <  でも改行は入力できたり
   ,;゙   ミ     \ するですよ。
 @ミ,,,UUミ       ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
あと、コピペしたらってのも
某のQAでは対応できてないです。

637 :デフォルトの名無しさん:02/10/19 17:28
>> リターン先が 解放した TTimerオブジェクトなんで気持ちが悪い人は

非常に気持ち悪い。なぜエラーにならないのか教えてください。

638 :デフォルトの名無しさん:02/10/19 20:06
ソース嫁

639 :デフォルトの名無しさん:02/10/19 21:24
嫁にもらってもわかんねー

640 :デフォルトの名無しさん:02/10/19 22:12
誰もわかんねぇー、みたいね。
テイドひくー >オレモナー

641 :デフォルトの名無しさん:02/10/19 22:14
Free したオブジェクトのソースってどこにありますか?

642 :デフォルトの名無しさん:02/10/19 22:15
>>641
638 は知っていると思う

643 :デフォルトの名無しさん:02/10/19 22:36
お前らほんとに屑ばっかだな
なんで検証しないの?

644 :デフォルトの名無しさん:02/10/19 22:44
で、Delphi7ってどうよ?何か「7こんなに(・∀・)イイ!!機能あるぞ!」って
のがあれば教えれ!

645 :デフォルトの名無しさん:02/10/19 23:22
>>644
とりあえず.NETに対応したらしい。
つーか、知らんし要らんしDel6でいーじゃん。

646 :無責任だが:02/10/19 23:48
解放するのは TTimerの Selfなので、返った先でSelfに触らない事が判っていれば問題ありません
直感的にTTimerでイベントを呼んだ後何か仕事があるようには思えないので、
普通は大丈夫だろうと


647 :デフォルトの名無しさん:02/10/20 00:13
>>646

一般的に言って、自分が読んだイベントハンドラの中で自分を Free した場合
例えば

procedure TForm1.Button1Click(Sender: TObject);
begin
Button1.Free;
end;

エラーにならないのは同じ理由ですか?
なぜ、TForm には Release メソッドがあるのかな?

648 :デフォルトの名無しさん:02/10/20 00:22
違いまふ

649 :デフォルトの名無しさん:02/10/20 00:24
わけわかんね

650 :デフォルトの名無しさん:02/10/20 01:07
土日はカキコのレベルが著しく低下するようだね

651 :デフォルトの名無しさん:02/10/20 01:45
>>650
わかりやすく説明しろよ

652 :デフォルトの名無しさん:02/10/20 01:48
日本語も分からないようだね

653 :デフォルトの名無しさん:02/10/20 02:59
D6Personal版を使用しながら勉強中です
同じ処理のTOOLを作ったときに、実行速度に云倍を差が出るのに驚き、
VBからDelphiへの乗換えを検討しています。

Delphi購入にあたって、ひとつ質問があります。
Delphi7日本語版はHELP(Documents)が(6と比較して)弱いと
どっか(関連スレ)で見たんですけど、実際どうなのでしょうか。

654 :デフォルトの名無しさん:02/10/20 03:12
>>652
いいから説明しやがれ

655 :デフォルトの名無しさん:02/10/20 03:27
>>653
翻訳が出荷に間に合わなかったみたいで、わずか数日後、
日本語訳されたヘルプがBorlandのHPで公開されました。
だから今は大丈夫ですよ。

656 :653:02/10/20 03:48
確認してまいりました。ついでに中身も確認しました。
おっしゃる通りのようですね。
丁寧なご回答、ありがとうございます。


657 :整数から桁の取り出し:02/10/20 06:10
整数から任意の桁を取り出したいのですがこうゆう関数は
用意されてるのでしょうか? 一応ヘルプで関数1つ1つ
見て回ったのですが見当たりませんでした。

代わりの方法としてRightStrを使ってコードを書いたん
ですが体裁が悪いです。

ご存じの方がいらっしゃいましたら宜しくお願いいたします。

658 :デフォルトの名無しさん:02/10/20 06:24
x桁目 = y / (10 の x-1 穣) mod 10 では?

659 :デフォルトの名無しさん:02/10/20 06:28
小学生の気持ちで…

123 という かず から 10 の くらい を とりだすには どうしたら いいのだろう?
1 の くらい は いらない ので 10 でわると 12 がのこる。
あとは この かず の ひとけため を とりだせば いいんだ。
ひとけため は 10 で わった あまりが こたえだ!

お粗末でした(汗

660 :659:02/10/20 06:30
か、書いているうちに…先を越された…猛烈に恥ずかしいです(顔真っ赤)

661 :デフォルトの名無しさん:02/10/20 06:38
>>660
きにすんな

662 :657 整数から桁の・・:02/10/20 06:52
>>658-659

お二方とも即レスありがとうございました。
こんな簡単なことだったとは・・・

童心にまで帰らせていただきまして誠に感謝に絶えません。
ご迷惑をおかけしました。

では失礼します。

663 :デフォルトの名無しさん:02/10/20 07:16
>>647
イベントの作り方によってはエラーになるよ。

664 :デフォルトの名無しさん:02/10/20 12:23
>>659

var
i, i2 : string;
I : Integer;
begin
I := 123;
i := IntToStr(I);
i2 := Copy(i, 2, 1);
end;

こんなかんじ?


665 :デフォルトの名無しさん:02/10/20 12:25
TMyAction = class(TAction)作って標準アクションとして登録するのってどうやるの?

666 :デフォルトの名無しさん:02/10/20 12:49
多分きっと100万回くらい既出だと思うけど、連想配列のお勧め
コンポーネントってない?
PerlのKeys、Valuesに相当する関数があって、テーブルサイズ
不定のが欲しいんだけど、探すと連想配列自体はちらほら見付
かるんだけど、Valuesに相当する関数がことごとくない。なぜ?

667 :デフォルトの名無しさん:02/10/20 12:57
>>666
ない。
Inifiles.THashedStringListとvalues用のTStringList組み合わせて作るしかない。

668 :デフォルトの名無しさん:02/10/20 13:07
>>667
やっぱそこら辺へ行きつくしかないのか・・・・・
TStringHashを継承して、Add時に適当なキー値を保存
FindでPPHashItemを取得してNextで手繰っていけば
とりあえず実装自体は可能だけど、なんでこんな面倒
なこと・・・・・
既に完成させてる人は居ないのかな?きっと居るはず
だと思うんだけど、誰か居ませんか〜〜〜〜〜〜?

669 :デフォルトの名無しさん:02/10/20 13:49
http://www2.sega.co.jp/bbs/article/d/dcq/273/
このURLの下位ディレクトリの数を取得するアプリを
作りたいのですが、これを取得する方法が解りません。

(動作例)
 http://www2.sega.co.jp/bbs/article/d/dcq/273/aaaaaa/
 http://www2.sega.co.jp/bbs/article/d/dcq/273/bbbbbb/
 http://www2.sega.co.jp/bbs/article/d/dcq/273/cccccc/
 この3つのディレクトリが存在していたら 3 を返す。

解る方がいらっしゃいましたらどうかヒント下さい、
宜しくお願いします。m(__)m
(環境:windows98SE DELPHI6 PERSONAL SP2 + Indy9)

http://〜 なのでIdHTTPを使うのかなと思うのですが・・・

670 :デフォルトの名無しさん:02/10/20 14:20
無理。
New ← 273 <-ここ解析して整数273を取得するしかない。

671 :デフォルトの名無しさん:02/10/20 14:51
さっそくダウソしてヘルプにそって
テキストエディタを作ろうとしてるんだが、
ActionManagerってコンポーネントが見つからん。
[Additional]ページにあるらしいんだが無い。
超初心者でスマソ。

672 :デフォルトの名無しさん:02/10/20 14:55
某よいい加減チュートリアル直してくれよ・・・

673 :671:02/10/20 14:57
>>672
何か違ってる所あるのか?

674 :デフォルトの名無しさん:02/10/20 15:09
>>673
PersonalでコンパイルできるようにActionManagerつけるか
ActionManagerを使用しないチュートリアル作れって事じゃないかと。

チュートリアルという性格上、入門者が困るような構成は問題あると
思う。 Delphi1の頃はちゃんとしたチュートリアルのマニュアルすら
ついてたのに、バージョンアップするたびに入門者には辛い内容
になってきてるもんなぁ・・

M$の VC++ Standardみたいに、入門版には市販の入門書みたい
のを付属して売るとかすればいいかも


675 :671:02/10/20 15:12
PersonalじゃActionManager使えないって事か?

676 :669:02/10/20 15:36
>>670

レスありがとうございます。
無理なんですか・・(涙

>整数273を取得するしかない

これは一体??
273を取得すると何か解るのでしょうか?
この数字なら最初から解ってるのですが・・(汗

677 :Delフサギコ ◆A6VzDeLphI :02/10/20 15:57
    ∧,,∧  このようにするようです>>665
   ミ,,゚Д゚彡   yes>>675
    ミ つ旦)~~  >>669 HTMLファイルを解析して<a href=を取り出して
  〜と,,,~),,~)    273以下にリンクファイルやディレクトリがいくつあるか
            自分で解析しなければいけないのでは?
procedure Register;
begin
 RegisterActions('', [TMyAction], nil);
end;

[Delphi:42552] Re: TAction を継承したい
http://www2.big.or.jp/~osamu/Delphi/browse.cgi?index=42552

678 :669:02/10/20 16:27
>>677

フサギコさんありがとうございますm(__)m

>HTMLファイルを解析する方法

実はこの方法で取得するアプリを先日作ったのですが、
これをプロのプログラマさんに見せたところ、

「ディレクトリ数を数えるようにすれば重いHTMLソースを
 ダウンロードする必要が無くなる」

と言われてしまったんです。 それでこちらでdelphiでの
詳しい作り方を伺ったわけなんですが・・(^^;A

このプロさんはC言語やperlなどを使ってるようなので
もしかしたら他の言語でしか出来ないことなのかも
知れません。 もしくはいい加減なことを言われて
しまったのか・・(真面目な方なのでまずないとは思いますが..)

ともかくdelphiでは無理と解っただけでも良かったです、
>>670 さん共々、本当にありがとうございました。m(_ _)m

679 :デフォルトの名無しさん:02/10/20 16:41
言語の問題じゃなくってディレクトリリストを公開しているかどうかという
WEBサイト側の問題なんだけどね。
で、件のサイトは公開していないからHTMLのリンクを辿るしかないって事。
いっそあるかないかはとりあえず取得してから判断するってのもありかも。

680 :ねこま:02/10/20 16:53
>>666
私は D5 しかしらないんでアレですけど,
HashList って当然イタレートはできるんですよね?
全然面倒くさくもないような気がする……
……気がするぐらい……うそ情報の可能性もアリ


681 :671:02/10/20 17:05
>>677
サンクス

delphi扱ってるサイト探すか…

682 :669:02/10/20 17:24
>>679

ぅは・・ どの言語でもダメってことですか、こりゃ文句
言わなきゃいけませんね!(爆

どうもありがとうございました。(^^;

683 :ななしへたぐらま ◆XcB18Bks.Y :02/10/20 20:55
>>674
私もDelphi1から使ってますが
VB2からすんなり移行できた理由の一つに
あのチュートリアルがあったのかもしれません.


684 :デフォルトの名無しさん:02/10/20 22:28
最近、delphiでプログラミングを始めました。
何かおすすめの本やサイトはあるでしょうか?
特にネットワークプログラム等に興味があるので、それについてのものが良いです。

685 :デフォルトの名無しさん:02/10/21 00:30
(´-`)。o ○ (次スレのタイトルには「パソナル6にはアクションマネージャは
付いて無いよ〜ん」って付けるのはどうか?
そうすれば「>>1 嫁」で済む…)

686 :デフォルトの名無しさん:02/10/21 00:54
逆に言うといかにいままで何も蓄積してこなかったかって事だな。
ソースうp版にリンク張ってFAQでもまとめたらどうよ?

687 :デフォルトの名無しさん:02/10/21 03:24
>>682
逆にフォルダの一覧が取得できたらセキュリティ上問題がある場合もある
から見せないようにしてるサイトが多いんじゃない?

688 :デフォルトの名無しさん:02/10/21 17:22
D7で作成したプログラムがWinXP/2000だと正常に動作するのですが、
Win9x/Meで実行すると落ちてしまいます、
Form自体が表示されないようなので、メッセージボックスを表示する
ようにしてみましたが、フォームのCreateイベントより前に落ちるみたい
です。

Win9x/ME環境にD7の開発環境をインストールしないでデバッグする良い
方法はなにかありませんか?

689 :デフォルトの名無しさん:02/10/21 17:36
逐次ログ吐くとか

690 :デフォルトの名無しさん:02/10/21 17:39
>>688 D7ならリモートデバッグサーバが附属してるんじゃないの?

691 :デフォルトの名無しさん:02/10/21 17:41
そもそもWin9x/Meには非対応です。

692 :デフォルトの名無しさん:02/10/21 18:18
>>689-690
今まで使ったことが無かったんで知りませんでした、
教えて頂いたリモートデバッガーを使ってみます。

>>691
Windows98には対応してるみたいですが、
Windows95/MEが非対応ってこと?

693 :デフォルトの名無しさん:02/10/21 19:39
TGIFImageがダウンロード出来るところを探しているのですが、誰か知りませんか?

694 :693:02/10/21 19:42
補足

Anders Melanderタンが作ったものを探しています。
サイトが消えてるようなので…

http://www.melander.dk/delphi/gifimage/

695 :デフォルトの名無しさん:02/10/21 20:13


696 :デフォルトの名無しさん:02/10/21 20:25
GIFはユニシスのせいで使用禁止になりますた

697 :デフォルトの名無しさん:02/10/21 20:29
Delphiはボーランドのせいで使用禁止になりますた(;_;)

698 :デフォルトの名無しさん:02/10/21 20:32
SEX

699 :デフォルトの名無しさん:02/10/21 20:33
まんこ

700 :デフォルトの名無しさん:02/10/21 20:36
まなちゃん・かなちゃんがぬるぬる。ハァハァ

701 :デフォルトの名無しさん:02/10/21 20:41
シコシコシコシコシコシコシコシコシコシコシコシコシコシコシコ・・・
ハァハァハァハァハァハァハァハァハァハァハァハァ・・・
デ、デルーーーーーー!!!!
ドピュッピュドピュッピュドックンドックン・・・アー デルーデルデルデルデル アー
ドッピューン ドッピューン
                         フゥ〜

               キモチエダッタ マンゾクマンゾク

702 :デフォルトの名無しさん:02/10/21 21:54
>>693
キーワードは揃ってるじゃないか 検索しる
Anders Melander TGIFImage

703 :デフォルトの名無しさん:02/10/21 23:20
>>694
URLわかってるならWayBackMachineでいけそうな予感。

704 :デフォルトの名無しさん:02/10/21 23:29
ホットゾヌの板一覧にあるような、一行ごとに色をつけれるListViewってどうやるんですか?

705 :デフォルトの名無しさん:02/10/21 23:33
od

706 :デフォルトの名無しさん:02/10/22 00:28
>>704
ヘルプのオナニードロー見るべし

707 :デフォルトの名無しさん:02/10/22 00:39
>>704
マジレスすると、自前で描画する。

708 :デフォルトの名無しさん:02/10/22 01:52
(´-`)。o ○ (>>1に「『オナニードロドロ』禁止」も追加。なんで
それで「閃いた━━━━(゚∀゚)━━━━!!!!!!」って思っちゃうんだか?)

709 :デルファイの名無しさん:02/10/22 02:09
>>688
win9xシリーズでフォームが開かけないで落ちる現象としては、フレームとか
使ってた場合によくあります。
あと、オブジェクト数が無謀なほど多いとかでもありえるかも。
いづれにせよ、win9xシリーズは既にMSもサポートしてないんで諦めたら?って
のは無謀かな・・・。(でも、winMeもあるし、まだ現役なOSですよね・・・。)

710 :デフォルトの名無しさん:02/10/22 07:38
>>709
Win98は来年サポートが切れる。
WinMEはまだ。
それまでの辛抱。

711 :デフォルトの名無しさん:02/10/22 08:12
サポート切ったソフトは 自由に使えるみたいな法律出来ないかなあ

712 :デフォルトの名無しさん:02/10/22 12:35
アプリケーションが非アクティブになったときに
マウスカーソルを乗せてもヒントは表示されませんが
非アクティブ時でもヒントを表示させる方法は無いでしょうか?
ヒントになるようなことだけでもいいので教えていただけないでしょうか。

713 :デフォルトの名無しさん:02/10/22 13:50
>>712
FormMouseMove&HintWindow


714 :ねこま:02/10/22 13:51
Melander 氏はどこいっちゃったんだろうね
プログラムやめちゃったのかな?


715 :デフォルトの名無しさん:02/10/22 14:07
Delphi6でDirectXを使いたいのですが、どうすれば使えるでしょうか

716 :デフォルトの名無しさん:02/10/22 14:34
>>715
・DirectXSDKのヘッダーをDelphi用にコンバートしたユニットを使う
 海外行けば、最新のヘッダーもそろえられる。

・DelphiXを使う
 Delphi6で使うには工夫が必要。
 日本語のサイトでは使えないという表記を見るが嘘(その人がへたれなだけ

・Quadruple Dを使う
 

717 :715:02/10/22 14:58
>>716
それらの方法について調べてみました。
へたれの私には一番下の方法しか無理そうですね・・・。
レスありがとうございました

718 :デフォルトの名無しさん:02/10/22 16:11
>>708
そんなくだらないの追加するな

719 :ななしへたぐらま ◆XcB18Bks.Y :02/10/22 17:33
>>688
usesで参照しているユニットの初期化節(initialization)で例外が発生しているかも.
Runtime Error 216 のダイアログボックスが出たら多分そうです.

>>709
うちもフレームを多用するのですが
(今のプロジェクトでは数十種類以上のフレームを使っています)
一度もこういうエラーになったことがないのは
インスタンスの総数が少ないからでしょうか.


720 :712:02/10/22 18:46
>>713
早速検索してみます。ありがとです。

721 :PopupMenuコンポ:02/10/22 18:51
PopupMenuのメニューを表示してるときに他のアプリを
アクティブにするとメニューが開いた状態で画面に残っ
てしまいます。 他のアプリをもう1クリックすれば
消えるのですが、最初のクリックで消したいです。

ApplicationEventsコンポを使い、アプリが非アクティブに
なったときにPopupMenuを消そうと思ったのですが、popupmenu
を消すメソッドが見当たりません、どうすればいいでしょうか。

722 :デルファイの名無しさん:02/10/22 18:54
>>719
D6up2の頃に気が付いたのですが、
フレーム上にComboBox系のコンポーネントを置くと win95/98/Meでは
挙動不審になりませんか?
厳密には、ComboBoxと言うよりItemsが原因な気がします。

で、D7だとプログラムが起動すらしないはず、
フレーム上にコンボボックスを置いて、Itemsに適当に値をセットし
win95/98/Meに持っていくと落ちる。
他にも色々とフレームは危険な予感が・・・・。

たぶん、>>688 もそれが原因だと思われるが、winXPでコンパイルしたexeを
win95/98/Meに持って行った時だけか、それとも、win95/98/Meでコンパイル
しても同様の結果なのかの再現テストしてないのではっきり断言できません
が、私が試したのは winXPでコンパイルしたexeをwin98に持って行った時に
駄目でした。

723 :721 PopupMenuコンポ:02/10/22 18:55
↑ 大切なことを書き忘れました(汗
  これはタスクにアイコン化してる状態での話です。

  delphiは 6 personal です、宜しくお願いします。(^^;

724 :このスレでは448以前のデルファイの名無しさん:02/10/22 19:18
あれ、コテハンが被ってますね…まあ誰でも思いつくか(苦笑

それはさておき、PopupMenuですが、うちでは再現しないなーと思いつつ、前に同じような事があった気も…
おぼろげな記憶で申し訳ありませんが、タスクトレイからPopupMenuを出す前に、
SetForegroundWindow(Application.Handle)を実行してみてください。

725 :665:02/10/22 19:35
GUI周りでよく使う処理をカスタムアクションと
してどんどん登録していくとめっちゃ便利そうじゃない?
誰かそういうのたくさん作った人うpしてよ。

726 :デフォルトの名無しさん:02/10/22 20:04
>>722
本当だ!うちでも再現しました、
これってボーランドにバグ報告するべき?

727 :デフォルトの名無しさん:02/10/22 20:21
RubyとVBの話は飽きた、関係ないんだよ折れには。

728 :デフォルトの名無しさん:02/10/22 20:22
自爆?

729 :727:02/10/22 20:23
あうあう

730 :デフォルトの名無しさん:02/10/22 22:11
>>703
おお!
ミラーサイトが一つ残ってた━━━━(゚∀゚)━━━━!!!!!
Thx!

731 :ななしへたぐらま ◆XcB18Bks.Y :02/10/22 22:16
>>722
うちはD5なのですがそういう経験はないです.
コンボボックスは滅多に使わないので気が付かなかっただけかも知れませんが.

いま,コンボボックスを置いたフレームをフォームに5つ置いたプログラムを
XPでコンパイル,Win95で実行したのですが不具合は発生しませんでした.

#ただ,設計時にしばしばCPU使用率が100%になりますね.
 一度プロジェクトを閉じるまで直らない.


732 :デフォルトの名無しさん:02/10/22 22:31
Double型を文字列型にしたいのですが、
どうすればできますか?

733 :デフォルトの名無しさん:02/10/22 22:42
実数型はFloatToStr、FloatToStrFで変換できるよ

734 :デフォルトの名無しさん:02/10/22 22:48
でけた!
ありがとうございました!
チョビチョビわかってきたぁぁぁヒャオウ

735 :688:02/10/23 00:37
>>731
えーと、私は >>722 じゃないんですが、
丁度同じ部分で昨日ハマッてたんで、
少し書いときます。

D7のバグみたいで、D6では正常です。
あと、フレームは関係ありません、ComboBoxです。

再現するには、ComboBoxを1つ配置して

ComboBox1.Items.Clear;
ComboBox1.Items.Add('');
ComboBox1.Items.Add('A');
ComboBox1.Items.Add('B');

みたいにします、で、WinXPのD7でコンパイルして
Win95/98/MEで実行して、空白の部分を選択したら
プログラムは落ちてしまいます。
私の場合は、ComboBox1を設計時にプロパティに
直接値を設定してあって、最初が''だったので
即落ちてたみたいです。
実行時に動的にComboBox1.Itemsに値を入れても
その中に''があると、その後ComboBoxのリスト
から選択した瞬間に落ちてしまいます。
但し、WinXPで実行した場合は正常に動作して
います。

誰か再現するかテストできませんか?
再現するようであれば某に報告しますが?

736 :デフォルトの名無しさん:02/10/23 00:57
XP+D7にてコンパイル,98にて実行で再現しました某に密告してください

737 :通りすがり:02/10/23 01:03
マジかよDelphiってテストしてあるのか?ポンコ2

738 :デフォルトの名無しさん:02/10/23 01:11
>>737 ハァ?
バグが1つ見つかっただけでポンコツですか?
貴方の作るプログラムが如何にバグの無いプログラムか知りませんが、
貴方の使っているWindowsはポンコ1000ですか?


739 :デフォルトの名無しさん:02/10/23 01:13
本当は95系のバグだたーりして
・・・って書くとM$厨に噛みつかれそう(w

740 :通りすがり(737):02/10/23 01:15
気を悪くさせてしまったようですねゴメンなさいです
随分単純なバグのように見えたものでつい酷いこと書いてしまいました

741 :通りすがり(737):02/10/23 01:19
>>739
通りすがりな者で、実はdelphiは持っていませんが、VCでもVBでも
そのようなバグが無いことを考えると、95系のバグではないと思いますが
そもそも、以前からのdelphiのバグなのですか?
だとすれば、やはり・・・、いえ言いません(^^;;

742 :デフォルトの名無しさん:02/10/23 01:55
>>736
もう日本の某にはバグをバグだと判断し、英語に直しアメリカ本社に伝えるような
部署はないんじゃないの?
オレもいろいろバグ見つけた。


743 :デフォルトの名無しさん:02/10/23 01:57
ん?そーいや、バグの報告とかって出来るの?
何処にメールすりゃいいのさ、態々電話したりするの面倒だな。

744 :デフォルトの名無しさん:02/10/23 02:04
サポートでもnews groupでもMLでも何でもいいんじゃないの。

745 :デフォルトの名無しさん:02/10/23 02:12
そーいや、news groupがあったね忘れてた・・・。
ここは見てないのかな?

746 :デフォルトの名無しさん:02/10/23 02:13
ttp://qc.borland.com/

747 :デフォルトの名無しさん:02/10/23 02:22
そういえば昔間違いであることを認めたのに
匿名サイト(2chのことね)からの指摘であることを理由に
修正を拒否したアフォ会社あったよ。
もちろん某ではないよ。

748 :デフォルトの名無しさん:02/10/23 03:17
>>694
http://delphi.icm.edu.pl/ftp/d20free/gifimage.exe

749 :721 PopupMenuコンポ:02/10/23 03:18
>>724

コテハン被ってましたか、安直な付け方しすぎでしょうか?(笑

早速コードを加えて実行してみたのですが、タスクにあるアイコンを
右クリックするとPopupMenuが一瞬表示されたあとすぐに消えてしま
いました。(汗

 そこでSetForegroundWindowについて調べたところ、このAPIはOS
ごとに動作が異なるそうです。 ですので複数のOSで実行出来るよう
にするにはかなり苦労することになりそうです。

↓このサイトを参照させて頂きました。
www.systemyou.co.jp/tips/vb/tips3.htm

残念ながら私はプログラムを始めて1年弱の初心者なのでこれを
実現させるスキルがありません。 せっかく教えていただいたの
ですが、アイコン状態でのPopupMenuは使わないようにするしか
ありません、申し訳ないっす。m(__;)m

でもいろいろと勉強させて頂きました、ありがとうございました〜!

750 :デフォルトの名無しさん:02/10/23 03:35
Del5使ってますが
ComboBoxもフレームもたくさん使ってますが
Win9x/NTともに動いています
項目に''はやったこと無いかも
CLXがらみでVCLが大幅に変わったのでSOAP以外は未だにDel5を使ってます
切替のタイミングを外したのでずっとそのままです


751 :721 PopupMenuコンポ:02/10/23 03:53
>>749 に追加)

SetForegroundWindowの問題の解決法が載ってる
ページを見つけたので貼っておきます。
techtips.belution.com/ja/vc/0012/

言語はdelphiでなくSDKとMFCで書いてあります。(^^;

752 :721 PopupMenuコンポ:02/10/23 05:05
C言語が解る方でどなたか
techtips.belution.com/ja/vc/0012/
↑ これをdelphiに直してくださいませんでしょうか(汗

変数の宣言くらいなら簡単に直せるのですが・・(^^;

753 :デフォルトの名無しさん:02/10/23 06:47
ComboBox に空文字列を入れた場合の問題は、US ニュースグループに投稿され
ていました。
http://groups.google.co.jp/groups?hl=ja&lr=&ie=UTF-8&oe=UTF-8&threadm=3d8cebe7%241%40newsgroups.borland.com&rnum=29&prev=/groups%3Fq%3Dcombobox%2BVCL%26hl%3Dja%26lr%3D%26ie%3DUTF-8%26oe%3DUTF-8%26scoring%3Dd%26start%3D20%26sa%3DN



754 :デフォルトの名無しさん:02/10/23 07:44
>>752
おらよ。動作確認はしてない。

procedure SetAbsoluteForegroundWindow(hWindow: HWND);
var
nTargetID, nForegroundID : Integer;
sp_time : DWORD;
begin
// フォアグラウンドウィンドウを作成したスレッドのIDを取得
nForegroundID := GetWindowThreadProcessId(GetForegroundWindow(), nil);
// 目的のウィンドウを作成したスレッドのIDを取得
nTargetID := GetWindowThreadProcessId(hWindow, nil );

// スレッドのインプット状態を結び付ける
AttachThreadInput(nTargetID, nForegroundID, TRUE ); // TRUE で結び付け

// 現在の設定を sp_time に保存
SystemParametersInfo( SPI_GETFOREGROUNDLOCKTIMEOUT,0,@sp_time,0);
// ウィンドウの切り替え時間を 0ms にする
SystemParametersInfo( SPI_SETFOREGROUNDLOCKTIMEOUT,0,Pointer(0),0);

// ウィンドウをフォアグラウンドに持ってくる
SetForegroundWindow(hWindow);

// 設定を元に戻す
SystemParametersInfo( SPI_SETFOREGROUNDLOCKTIMEOUT,0,Pointer(sp_time),0);

// スレッドのインプット状態を切り離す
AttachThreadInput(nTargetID, nForegroundID, FALSE ); // FALSE で切り離し

end;

755 :721 PopupMenuコンポ:02/10/23 08:09
>>754

ありがとうございます! 大感謝です。m(^^)m
C言語もdelphiも使えるなんてすごすぎです!!

Cの「 & 」はポインタ関連のマークだったんですね、
なるほど〜 φ(・o・;

早速これから色々いじくってみます、
本当にありがとうございました!m(_ _)m

756 :デフォルトの名無しさん:02/10/23 09:05
>C言語もdelphiも使えるなんてすごすぎです!!
DelphiをやるならC/C++をある程度読めないとつらい。

757 :このスレでは448以前のデルファイの名無しさん:02/10/23 10:32
>>749 あ、コテハンの件はあなたじゃないです。紛らわしくてすみません。

で、PopupMenuですが、メニューの親となるウィンドウが、表示状態かつアクティブでないと
上手く動作しないようです。
前に書いたコードを見直してみたら、次の流れでした。

 ShowWindow(Window, SW_SHOW);
 SetForegroundWindow(Window);
 TrackPopupMenu(..., Window, ...);
 ShowWindow(Window, SW_HIDE);

ここでWindowは、枠線ナシ、サイズゼロで、表示しても実際にはみえないウィンドウハンドルです。
VCLの場合、PopupMenuの親はApplication.Handleだったと思ったので、
先の提案になったのですが、Application.Handleも風変わりな動作をしますから、
自前でAPIを並べてメニューを表示した方が確実かも知れません。

758 :デフォルトの名無しさん:02/10/23 13:14
>>756
禿同

759 :デフォルトの名無しさん:02/10/23 14:07
>>756 激しく尿意
今時は、言語として C/C++,C#,Java程度は理解してないと仕事にならん
OSも、Windowsの他にもFreeBSDやLinux,Sunの知識は最低限あってほしいし、
IIS/Apache,SendMail/Postfixについても最低限知ってないと苦労するね
DBならMS-SQLserver/Oracle/MySQL/PostgreSQLは必須
うちじゃ、中途採用者はこの条件をクリアしてないと受け入れません。

760 :デフォルトの名無しさん:02/10/23 14:20
>>759
分かったから少しもちつけ

761 :デフォルトの名無しさん:02/10/23 15:08
>>759
で、qmailは知らないわけだ。

762 :デフォルトの名無しさん:02/10/23 18:33
eximも必要だろうとかおもふ

763 :デフォルトの名無しさん:02/10/23 18:48
>>762
そこまではいらんだろw

764 :デフォルトの名無しさん:02/10/23 22:34
>>759

いや、VBとCOBOL知っていれば何とかなります。

765 :デフォルトの名無しさん:02/10/23 22:40
関係ない話ばかり

766 :デフォルトの名無しさん:02/10/23 22:51
>>764
君の会社は多分危ない。

767 :753:02/10/24 02:13
なんでこの記事読んで、
「Windows, IE, Office がびみょーに関係している」と思うのかねぇ。



768 :デフォルトの名無しさん:02/10/24 09:32
>>766
案外そうでもないよ。
地方の企業は単価が信じられないくらい安い。
都内で受けた120/月の仕事を地方に40/月位で丸投げするのは当たり前。
VB屋がいないと大手の半分以上は赤字に転落すると思うよ、マジで。


769 :デフォルトの名無しさん:02/10/25 06:13
あなたの身近な特殊例を一般論のように書かれても...

地方の企業の単価が安いことと VB 屋の問題は別だし。

770 :デフォルトの名無しさん:02/10/26 07:30
FTPのソフトは、Delphiを買うと サンプルについてるからそれ使えば、便利だぞ。

無理に VBを使う必要なしっ!


771 :デフォルトの名無しさん:02/10/26 09:31
この業界入って、何の資格も取らずに40歳までいっちゃうとリストラ対象になるってホントですか?

772 :デフォルトの名無しさん:02/10/26 10:03
>>771
だから今、必死で珠算6級にチャレンジしてます!

773 :デフォルトの名無しさん:02/10/26 10:05
空手初段とか将棋二段とかではだめですか?

774 :デフォルトの名無しさん:02/10/26 10:08
>>773
生活するには4段が最低ラインじゃないかな

775 :デフォルトの名無しさん:02/10/26 11:57
Del厨の皆さん、技術スレ荒らさないでこっちでやってください
Delphiって死滅しちゃうの????
http://pc3.2ch.net/test/read.cgi/tech/1035539926/


776 :デフォルトの名無しさん:02/10/27 13:13
THintWindowに画像を表示させたいんですがやっぱり無理ですか?

777 :デフォルトの名無しさん:02/10/27 13:13


778 :デフォルトの名無しさん:02/10/27 13:18
>>776
それ面白そうだね。
動的にTImage生成してくっつけてみたら?

779 :無責任だが:02/10/27 13:28
テストコード
TForm1 = class(TForm)
Image1: TImage;
procedure FormCreate(Sender: TObject);
end;
var Form1: TForm1;

・・・略・・・
var bitmap:TBitmap;

type TMyHintWindow = class(THintWindow)
  protected
procedure Paint; override;
end;
procedure TMyHintWindow.Paint;
begin
  inherited;
  Canvas.Draw(0,0,bitmap);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  bitmap:=Image1.Picture.Bitmap;
  HintWindowClass:=TMyHintWindow;
end;


780 :デフォルトの名無しさん:02/10/27 13:43
キャンバスに直に描き込めばいいやん。


781 :デフォルトの名無しさん:02/10/27 14:22
>>778-779
Thxです、やってみます

782 :デフォルトの名無しさん:02/10/27 15:08
Indyの解説サイトってある?

783 :デフォルトの名無しさん:02/10/27 15:36
俺一度も見かけたこと無いんだけど

784 :デフォルトの名無しさん:02/10/27 18:11
>>782 ちょっとした使い方程度ならともかく解説サイトはないな。
indyはVER毎に結構いろいろ変わっているから難しいのだと思われ
後ソースとサンプルとHELPがあれば十分だろ、とかな。

785 :デフォルトの名無しさん:02/10/27 21:03
ヘルプってあったっけ?
画像をダウンするコードを書いてみたいんだけど。

786 :デフォルトの名無しさん:02/10/27 22:44
最近どっかのDelスレでみたよ。

787 :デフォルトの名無しさん:02/10/28 01:09


788 :デフォルトの名無しさん:02/10/28 01:19
>>785
こんな感じかな。

var
MemStrm: TMemoryStream;
begin
HTTP1.Get('http://www.borland.co.jp/image/logo.gif', MemStrm);
MemStrm.SaveToFile('c:\logo.gif');
end;

プロキシ経由の場合は、
Http1.Request.ProxyServer
Http1.Request.ProxyPort
をGet前に設定


789 :788:02/10/28 01:20
引数のMemStrmでエラーになったらTStreamでキャストしてくれ。

790 :デフォルトの名無しさん:02/10/28 01:42
開放したほうがよろし?

791 :デフォルトの名無しさん:02/10/28 08:09
>>788
>Http1.Request.ProxyServer
>Http1.Request.ProxyPort

ちなみにIndy9の場合は

Http1.ProxyParams.ProxyServer
Http1.ProxyParams.ProxyPort




792 :デフォルトの名無しさん:02/10/28 18:34
キャッシュ無しにすることって出来る?

793 :デフォルトの名無しさん:02/10/28 20:37
ごめん、↑は便乗質問。>>785とは関係ないよ。

794 :デフォルトの名無しさん:02/10/28 21:23
>>790
MemStreamのCreateとFreeは省略してますので、try..finallyでくくって
解放してください。

795 :デフォルトの名無しさん:02/10/28 21:24
>>792
できます。

HTTP1.Request.ExtraHeaders.Clear;
HTTP1.Request.ExtraHeaders.Add('Pragma: no-cache'); //常に最新データを取得

796 :デフォルトの名無しさん:02/10/28 21:31
>>795
おお、さんくす!

797 :788=794:02/10/28 21:35
>>790
酔っぱらって書いたからちと不親切になってしまいましたね。
これできちんと動きます。

procedure TForm1.Button1Click(Sender: TObject);
var
MemStream: TMemoryStream;
begin
MemStream := TMemoryStream.Create;
try
IdHTTP1.Get('http://www.borland.co.jp/image/logo.gif', MemStream);
MemStream.Position := 0;
MemStream.SaveToFile('C:\logo.gif');
finally
MemStream.Free;
end;
end;

798 :デフォルトの名無しさん:02/10/28 22:10
仮想フォルダを作りたいんですが、どうしたらいいんでしょう?
色々調べて、シェルネームスペースエクステンションなどという技術を
使えば出来るのではないかという結論に達したのですが、結局実際に
どうソースを書けばいいのかサッパリです。
どなたかご存知でしたら教えてください。

799 : :02/10/29 00:51
>>798
「仮想フォルダ」ってなんやねん?と思ってググってみたら、1000円の
シェアウェアがヒットしたが、それのことけ?

800 :デフォルトの名無しさん:02/10/29 01:01
たぶんコントロールパネルとかのことかと。

801 :798:02/10/29 01:50
>>800
その通りです。
デスクトップとか。

802 :デフォルトの名無しさん:02/10/29 02:45
標準入力に入力を戻す方法は、API使うやり方以外に何かないかな?
ungetcみたいな関数もないし、全然見当がつかないよ。

803 :質問:02/10/29 03:16
コンボボックスで選んだ対象のリストボックスにアイテム追加するのに以下のようなコード書いた。
ヘルプにはnew したら disposeしろと書いてあったのですが
disposeのところで 「無効なポインタ操作」というエラーが出てしまいます。
何がいけないのでしょうか。

procedure TForm1.Button1Click(Sender: TObject);
type Plistbox=^Tlistbox;
var target:Plistbox;
begin
new(target);
case ComboBox1.ItemIndex of
0: target:=@listbox1;
1: target:=@listbox2;
end;

target^.items.add('ああ');

dispose(target);
end;


804 :デフォルトの名無しさん:02/10/29 03:39
>>803

オブジェクト参照ははじめからポインタです。
参照するだけでしたら、New() と Dispose() はいりません。ポインタを
受けとる変数だからです。

procedure TForm1.Button1Click(Sender: TObject);
var
LS:TListBox;
begin
LS := nil;
case ComboBox1.ItemIndex of
0: LS := ListBox1;
1: LS := ListBox2;
end;
if Assigned (LS) then LS.Items.Add('AAA');
end;

805 :デフォルトの名無しさん:02/10/29 03:41
>>802
>標準入力に入力を戻す方法

入力を戻すって、? エコーバックのこと?

806 : :02/10/29 03:42
>>804 激しくありがとうございました

807 :デフォルトの名無しさん:02/10/29 05:25
>>805
>>802に出ている通り、Cで言うungetcのようなことができないかと言うことだろ。

808 :デフォルトの名無しさん:02/10/29 14:02
http://www.borland.co.jp/qanda/delphi/d0009410.html
このページを参考にタスクトレイにアイコンを登録する動作を
作ってみたんですが、

「プロジェクト」「オプション」「アプリケーション」「アイコンの読み込み」

からアイコンを自分が用意したものに変更して実行してみると
意味不明な黄色いアイコンが表示されてしまいます。
これはDELPHIのバグなんでしょうか?

Form1のIconプロパティやプロジェクトの再構築など考えられる
ことはすべて試してみましたが正常にアイコンが表示されません。

おそらく hIcon := Application.Icon.Handle; この行が
うまく動作してないんだと思うんですがどうでしょうか。
Application.Icon.Handle に自前のアイコンが認識されないのかな?

DELPHI6 PERSONAL + WINDOWS98SE 



809 :デフォルトの名無しさん:02/10/29 15:59
>>808
アイコンを変更するだけならそのまま動くはず
D6+Update2+W2kではOK
最近の某はバグ多いが
基本的に初心者は他人を疑う前に自分を疑いましょう
これぐらいのソースならもう一度一から作成するのも手



810 :808:02/10/29 16:28
>>809

809さんの環境ではちゃんと動くんですか、確認ありがとう
ございます〜!

ううむ、一体原因はなんだろう、もちろん書き込む前に簡単な
アプリを作って確認したんですが結果は同じでした。

何か私に手落ちがあるのかなぁ・・・
コンパイルの設定もデフォルトのままだし・・
DELPHIパソナルもSP2にしてあるんですが・・

811 :デフォルトの名無しさん:02/10/29 17:25
IndyでHTMLソスGETするときに読み出し開始位置の設定出来るけど
読み込み終了位置の設定は出来ないでしょうか。
ContentLength-1000バイトまで読み込むとか。


812 :C++使ってます:02/10/29 17:32
2ちゃんのどっかで「C++なんてDelphiとあんま変わらん」って書いてあったけど
確かにちょっと似てるね
初めてみたけど半分くらい意味がわかる

813 :デフォルトの名無しさん:02/10/29 18:04
えらい人には(委員長には)それがわからんのですよ。

814 :デフォルトの名無しさん:02/10/29 18:14
>>808
アイコンの色数が問題なだけだったりして。
16色より多いものはつぶされるけど、そこんところはどうなんでしょう?

815 :デフォルトの名無しさん:02/10/29 18:41
>>811
終了位置の設定はIdHTTP.Request.ContentRangeEnd // IdHTTP: TIdHTTP;
ただし先頭からの位置なので、後ろからの位置を設定したいなら
IdHTTP.Head(URL);
Len := IdHTTP.Response.ContentLength;
とかで対象のContentLengthを取得してからじゃないと無理かも。
あんまり詳しく知らない。

816 :808 (解決):02/10/29 18:51
>>814

ありがとうございます!

早速DELPHI付属のイメージエディタで16色のアイコンを作って
試してみたところ正常に動作しました! 念のため同じエディタで
32色のアイコンを作って試してみたところこれでも動作しました。

私が使ってたアイコンはPIXAで作った32×32の画像を.ico形式で
保存したモノだったんですが、どうやらこのアイコンが原因だった
みたいです。 →タスクトレイにアイコン化したときだけ使えない。

>>809さんのおっしゃる通り私に落ち度があったようです、
お騒がせしてすみません〜

817 :811:02/10/29 20:03
>>815

どうやら「後ろから何文字まで」と指定してリクエストすることは
出来ないようですね。 これが出来ればダウンロードする時間の
短縮になるんですが。(^^; HTTP1.2から導入してくれないかな。

仕方ないのでcopy関数とContentLengthを使って後ろをカットして
使うことにします、どうもありがとうございました。

818 :デフォルトの名無しさん:02/10/29 22:11
コンポーネントの追加について教えて頂きたいのですが。
まず、ABそれぞれのコンポーネントがあったとして、最初にAのコンポをインストールします。
次にBのコンポをインストールすると、Aのコンポがメニューから消えてしまうのです。
パッケージファイルの保存場所が悪いのでしょうか?
追加していく形でコンポをインストールできないものでしょうか?
どうすればいいのか、どなたかご教授ください。

819 :デフォルトの名無しさん:02/10/29 22:20
>>818
A,Bは同じ名前?

820 :デフォルトの名無しさん:02/10/29 22:20
たとえば、hoge := Timage.createとかでTimageを作るとします。

このとき、Timageが何もPictureを持っていないときは hoge = nil と思いこんでいたのですが(間違い)、
そもそも Object = nil とは何を意味するのでしょうか。

createしたモノを無で指定するということは、消えてしまうということ・・・?
それとも、そのオブジェクトは何もデータを保持していませんYOということなんでしょうか。

821 :デフォルトの名無しさん:02/10/29 22:26
>>820
TImageはPictureの実体そのものではなく入れ物だと考えればいいでしょう。
つまり、中身が無くても入れ物があるという事です。

それと同じようにObject型も 実体ではなく 実体の位置を記録したものです。
実体のことをインスタンスと言います。
Createは実体を作り、それをどこに作ったかを教えてくれます。それを記録するのがObject型です。

つまり Object=nil とは その記録が空だという事で、実体があるかどうかに無関係です。

822 :デフォルトの名無しさん:02/10/29 22:38
>>821
なるほど、hoge = nil の状態でプロパティを読んだら AccessViolation になったのですが、
実体がないから参照のしようがないという意味だったんですね。

ありがとうございます、オブジェクト指向ってわかってくると面白いですね。

823 :822:02/10/29 22:39
あ、実体がない・・・じゃない、中身がないんですね。ちょっと混乱してました(汗

824 :818:02/10/29 22:40
>>819
いえ、まったく違うコンポです

825 :デフォルトの名無しさん:02/10/30 01:30
X30って発売後、ヨドバシでその場で買えますか?予約必要?

826 : :02/10/30 02:03
>>818
あー。あるある。オレも不思議に思ってた。
embeddedwbコンポーネントで、それなる。
なんでだろう?

827 :デフォルトの名無しさん:02/10/30 05:21
なったこと無いなぁ
EmbededWB でもならない


828 :デフォルトの名無しさん:02/10/30 10:13
>>818
同梱されてusesされてるファイルの名前がインストール済みのコンポーネントのと
同じだったりとかは?
同じ名前のファイルが有ると上手くいかなかった気がする。

829 :デフォルトの名無しさん:02/10/30 15:59
>まず、ABそれぞれのコンポーネントがあったとして、最初にAのコンポをインストールします。
>次にBのコンポをインストールすると、Aのコンポがメニューから消えてしまうのです。

パッケージを追加するごとに、追加および削除されるコンポーネント名が
表示されるはずだけど、そこに出てくる名前は、意図している物かな?

830 :818:02/10/30 19:07
>>828
それはないです。どんなコンポでも>>818のような症状が出るんです。

>>829
はい。
Aをインストールしたら「Aがインストールされました」
その後Bをインストールすると「Aが削除されました」「Bをインストールしました」
とダイアログが出ます。

831 :デフォルトの名無しさん:02/10/31 00:21
毎回新規パッケージを作って登録してるとか?

832 :デフォルトの名無しさん:02/10/31 00:56
Delphi は糞!

833 :デフォルトの名無しさん:02/10/31 01:29
>>832
なにをいまさら。

834 :デフォルトの名無しさん:02/10/31 01:29
StringReplaceって処理遅い?

835 :デフォルトの名無しさん:02/10/31 01:38
メチャ重いよ。特に長い文字列でより長い文字列に何度も置き換える場合が。

836 :デフォルトの名無しさん:02/10/31 02:28
ふーん。
Borland, TogetherSoft 買収だって。
(http://www.togethersoft.com/news/archive/2002/press_releases/103002.jsp)
金はあまり余っているからなぁ。

837 :デフォルトの名無しさん:02/10/31 02:39
>>836
TogetherCCをJBuilderに統合するつもりかな?

838 :デフォルトの名無しさん:02/10/31 02:57
談話室に書いたつもりだったんだが、相談室だった。
それに、JBuilder の方に書いたほうが良かったかな。

839 :818:02/10/31 07:47
>>831
一回一回パッケージファイルの保存場所を聞かれて、そのたび別の所に保存しているのですが…
なにか間違っているのでしょうか?

840 :デフォルトの名無しさん:02/10/31 08:02
Delphi6/CBuilder6 Professional 版で TXMLDocument を使う方法

http://codecentral.borland.com/codecentral/ccweb.exe/listing?id=18939


841 :829:02/10/31 08:04
>Aをインストールしたら「Aがインストールされました」
>その後Bをインストールすると「Aが削除されました」「Bをインストールしました」
>とダイアログが出ます。

「Aが削除されました」って出ているんだからそのとおりのことが起きたんだな。

コンポーネントAを含むパッケージとコンポーネントBを含むパッケージの名前が
同じと見た。

一つのパッケージに複数のコンポーネントを収めることができるのだよ。
逆に一つの環境には同一の名前のパッケージは一つしかインストールできない。

コンポーネントではなくパッケージの名前を再確認してみて。
なんだったらパッケージの名前(なんとか.dpk または .bpl)を教えて。

842 :Delフサギコ ◆A6VzDeLphI :02/10/31 13:06
 ミ,,゚Д゚ミつ
  ドゾ
Seventh Delphi
http://kakinotane.s7.xrea.com/Download/dl_pack.html

843 :818:02/10/31 17:55
>>841
dpkの拡張子のファイルは、すべてPackage1.dpkという名前でした。
bplは見つかりませんでした。

>>842
ひとつひとつ追加していくと追加していった順にコンポが消えていってしまうんです…。

844 :デフォルトの名無しさん:02/10/31 19:39
>>841
やっぱり同じ 名前の DPK だったんだね。
ファイル名を替えてパッケージ名もそれにあわせて変えていったらいいと思うよ
Delphiで開いて保存する時に名前を変えたら自動的にパッケージ名も変わる
あるいは、そのファイルは、テキストエディタで編集出来るしね。



845 :818:02/10/31 20:53
>>844
変えてみました。
これからはコンポを追加するたびこうやってみます。
みなさんありがとうございました。

846 :デフォルトの名無しさん:02/11/01 03:54
>>845
コンポを一つ追加する都度 DPKを作ってると、管理が大変だと思う。
一つの DPKに複数入るから、せめて一つのプロジェクト毎にするとか

847 :デフォルトの名無しさん:02/11/01 09:01
まぁ、こういったライブラリ管理の問題は正解ないし。
自分で失敗して覚えていかなきゃいけないところかな。

ただ、異なるものに同じ名前を付けて問題を起こして、その原因を類推できない。
ってのはデバッグ能力(推論能力)に大きな問題があると思う。

もしプログラマを目指しているのなら、もう少し論理的に推論する癖をつけたほうが
良いかと。論理だけでもダメなんだけどね。


848 :デフォルトの名無しさん:02/11/01 10:12
コンポーネントを複数含んでこその「パッケージ」だと思うが・・・

849 :デフォルトの名無しさん:02/11/01 13:04
Delphiってなんか見てるだけで素晴らしいものってオーラを感じますよね。

850 :デフォルトの名無しさん:02/11/01 13:17
Delphi再インストールで解決!!

851 :デフォルトの名無しさん:02/11/01 13:24
Delphiはテンプレートが無いから糞

852 :デフォルトの名無しさん:02/11/01 16:50
delphiでプログラミング始めようと思うんですけど、入門書はどれがいいですかね。
http://www.amazon.co.jp/exec/obidos/search-handle-form/250-3051098-3293062
教えてください

853 :デフォルトの名無しさん:02/11/01 17:06
Delphiプログラミングバイブルは、素人にはおすすめできない。

854 :デフォルトの名無しさん:02/11/01 17:23
>>852
入門書は、入門って言っても個人差があるから、見てから買うのが一番いいよ。
近所に書店が無いなら、アマゾンで注文して、必要無ければ1ヶ月以内に返品すればいい。


855 :デフォルトの名無しさん:02/11/01 17:26
あ、ただ、高価な本はビニルパックされるかもしれない。
これされると返品し辛いんだよね。

856 :デフォルトの名無しさん:02/11/01 17:35
テキストファイルの中で始まりと終わりを変数に代入して
そのふたつの変数の間にある文字列を全て取得する、ということがやりたいんですがどうすればいいでしょうか?

857 :デフォルトの名無しさん:02/11/01 17:49
わけわかめ

858 :デフォルトの名無しさん:02/11/01 17:52
>>846
始まりと終わりは 位置? 位置ならn1,n2として copy( s ,n1,n2-n1);   もしバイト単位でなく
 文字単位 ならWideStringに代入して

そうでないなら もっと詳しく

859 :デフォルトの名無しさん:02/11/01 17:55
>>857-858
すいません、書き方が足らなかったです

例えば
0123456789
と書いているテキストファイルの中で
Start := 2
end := 7
と代入し、その変数の間の数字…「234567」を取得したいんです。
どう書けばいいんでしょうか?

860 :デフォルトの名無しさん:02/11/01 17:59
copy(s, start, end - start +1);

宿題だろうから、この程度で止めとく。

861 :デフォルトの名無しさん:02/11/01 18:02
>>859
もしかして Start,Endは 文字なの? 

文字なら、

function hoge(s,s1,s2:string):string;
  with TStringSpliter(s) do try
   GetSplitStr(s1);
   Result:=GetSplitStr(s2);
  finally free;end;
end;

を作って hoge('2','7');

TStringSpliter は
http://www.geocities.co.jp/SiliconValley-Oakland/8522/data/uSpliter.txt
これを拡張子.pas で保存して プロジェクトに追加


862 :デフォルトの名無しさん:02/11/01 18:15
>>860
それをヒントになんとかやってみます。

>>861
はい、文字です。
使ってみます。ありがとうございました。

863 :デフォルトの名無しさん:02/11/01 18:19
>>852
近所に大きな書店があるなら>>854が言うとおり実物を見て選ぶ。

近所に書店がないならとりあえずこれ勧めとく。
http://www.shuwasystem.co.jp/cgi-bin/detail.cgi?isbn=4-7980-0251-8


864 :デフォルトの名無しさん:02/11/01 18:30
>>852
本から入ろうとする奴はたいていものにならない。
やる気があったら本なんて必要ないもん。
本なんて壁にぶちあたったときに調べればいい。
とにかくWebでも参考にしながら、がむしゃらに何か
作ってみる。これが最短コース。

865 :デフォルトの名無しさん:02/11/01 19:04
月曜までにDelphiを極めないといけないらしいので、
私の場合は本で覚えています。Webサイトは持ち歩けないからな!


866 :デフォルトの名無しさん:02/11/01 19:19
そうか?
俺はいつも持ち歩いてるぞ。


867 :852:02/11/01 19:39
みなさんサンクス

868 :デフォルトの名無しさん:02/11/01 22:37
>>867
俺の座右の銘

まずコレ。
別のスレで紹介されたけど入門としてかなり良かった。
コレとネットでとりあえず
身の回りの簡単なアプリは作れるようになるよ。
http://www.amazon.co.jp/exec/obidos/ASIN/4822216888/qid%3D1036157445/250-0008569-6039430

コレは結構親切。
http://www.amazon.co.jp/exec/obidos/ASIN/4839907161/qid=1036157512/sr=1-2/ref=sr_1_2_2/250-0008569-6039430
ただし丁寧すぎて鬱陶しいと思うこともある。

余裕があればこれも
http://www.amazon.co.jp/exec/obidos/ASIN/4756140025/qid=1036157512/sr=1-3/ref=sr_1_2_3/250-0008569-6039430
とりあえず一通りのコンポーネントの説明と
基本的なPascalが覚えられる。
余裕がなければ2つ目とどっちがいいかは自分で選んで。

ただ上でも言ってるけど、
一冊目買って後はネットで検索しながら
覚えるってのが一番の近道だよ。
限界が来た時に中級者以上の2冊目を買うってね。
俺は学校に置いてたから色々読みながらできたけど。

869 :デフォルトの名無しさん:02/11/01 23:00
Bitmapの描画を行うコンポーネントがあるのですが、これをFormに配置してその中で
ガンガン描画させると当然のようにちらつきました(連続して描画する必要があるんです)。
そこで、バッファ(裏画面?)を用意して描画しようと思ったのですが・・・。

幸い、このコンポーネントにはCanvasを指定して自分の中身を転送するというメソッドがあったのですが、
隠れて1回描画を行うごとに→Form上のCanvasに転送する、を繰り返せばいいのでしょうか?



870 :デフォルトの名無しさん:02/11/01 23:14
座右の銘を間違って使ってるような。
座右の書?

871 :デフォルトの名無しさん:02/11/01 23:21
>>869
 パネルの上にそのコンポを置いて、パネルのDoubleBuffer:=True;ではダメ?

872 :デフォルトの名無しさん:02/11/02 01:07
>>871 そ、そんな便利なモノがっ・・・。(゚Д゚)
パネルを透明にしてその上に乗せるだけで良いのでしょうか・・・試してみます。

873 :デフォルトの名無しさん:02/11/02 03:23
また一人アルゴリズムを知らない奴が増えたっと。

874 :デフォルトの名無しさん :02/11/02 09:57
>>868
Delphi 久しぶりだ。
謎の全知師は健在なんだね。懐かすい。

NiftyForumでボコボコにされて追い出された伊藤は元気かな。

875 :デフォルトの名無しさん:02/11/02 10:04
いまいち構造体とかクラスとかオブジェクトの使い道が分からないです。
どういうとき使用すれば効率よくなるかが検討つきません。
delphiを覚えるために簡単なリネームソフトとか作製してみたのですが
今の処理の流れは
1.フォルダ内のファイルパスをTStringListにいれてソート
2.ユーザが設定した新しいファイル名を取得
3.新しいファイル名に置換え
です。
リネームソフトなどでは、どういう処理時に使用したらいいのでしょうか?

876 :デフォルトの名無しさん:02/11/02 11:20
継承も再利用性も必要ない部分にはクラスは必要ない。
データをまとめて管理する必要が無いところに構造体の出番は無い。

まず、動くコードを書けるようにすること。
次第に効率よくかけるようになるよ。
最初から、うまい人と同じにかけると思っちゃいけない。

877 :875:02/11/02 12:04
何回も更新してやっとレスがついた。うれしい^

>>876 ははぁリネームソフトには使うべきところが無いということですね
では、このまま進んでいきます

勉強用にいろんな物どんどん作って行きたいのだけど、なかなか作りたくなる
目標になるソフトって見つからないものですね
リネームソフトをとことん効率よいコードにしていきます

ところでmp3プレイヤーとかは構造体必要ないですか?必要なさげですね

878 :デフォルトの名無しさん:02/11/02 12:43
中学生かな?高校生かな?

リネームソフト。といっても、Delphi RTL/VCL の中では構造体もクラスも
腐るほど使われているわけで。
再利用性を前提としたクラスの継承への考慮と、関連データの集中管理を目的と
した構造体の利用がおこなわれている。

だから、おまえさんのアプリケーションがクラスも構造体も使っていない。と思っちゃいけないわけだ。

ってことで、元質問は、自分でクラス/構造体を定義するべきですか?って質問なんだろうけど、
答えは「そんなの自分で決めろ」なんだな。

mp3 の物理ファイル名と楽曲名を同時に管理しようと考えたときに、何かひらめくかもね。


879 :875:02/11/02 13:14
男子高校生です 嘘ですすまない

>>答えは「そんなの自分で決めろ」なんだな。
そうですその通りです 後で読み返すと私もそう思います

ただwebの解説等を読んでると「構造体」という文字が異様に出てきて
こりゃぁ構造体をつかわないけねえ、と少し焦りフライングです



880 :デフォルトの名無しさん:02/11/02 15:49
あせるな。マイペース。

881 :デフォルトの名無しさん:02/11/02 16:44
>>879
とりあえず、メソッドとか関数くらいは使うでしょ?
その引数とかをそのまま構造体にしてみる所から使ってみたら?

構造体なら関数の帰り値にも出来るから、関数で結果を返す時とかに使ってみるとかさ

882 :デフォルトの名無しさん:02/11/02 19:41
>>879
構造体は、Delphiでは「レコード」と言います。

883 :デフォルトの名無しさん:02/11/02 19:43
ついでにヘルプより。
----
レコードは,ほかの言語では構造体とも呼ばれ,複数の型を持つ要素の集合を表します。
各要素はフィールドと呼ばれ,レコード型の宣言では各フィールドの名前と型を指定します。

884 :デフォルトの名無しさん:02/11/02 19:45
objectを実質廃止したのが某の敗因だな。
C#ではしっかり復活してるし。

885 :デフォルトの名無しさん:02/11/02 19:55
TWebBrowserで、
JavaScript使ってScrollBar無しの設定で開こうとしているページに、
その設定を無視してScrollBarを付けたいのですが、上手くいきません。
ページの読み込みが完了した後に、
下記のような事をすれば一応ScrollBarが現れるのですが、
キャスト出来ない場合の例外処理とかが俺には分からないのと、
もっとスマートな方法が有る気がしてならないので、
別の方法を知りたいのですが、どなたかご存じないですか?
Invokeメソッドの中とかで、なんとか出来そうな気もするんですが、
実際には何処でどういう値を使って
ScrollBarの設定をされているかが分からなくて困ってます。
var
 D: IHTMLDocument2;
 E: IHTMLElement;
 B: IHTMLBodyElement;
begin
 D := WebBrowser1.Document as IHTMLDocument2;
 E := D.body;
 B := E as IHTMLBodyElement;
 B.scroll := 'yes';
end;

886 :デフォルトの名無しさん:02/11/03 07:28
同じ型の二つの構造体A,Bがある時、
この二つが同じかどうかを比較するにはどうすればいいでしょう?
この構造体には20個以上のメンバがあります。

887 :デフォルトの名無しさん:02/11/03 08:15
CompareMem で比較するか 型をVariantにするか

888 :デフォルトの名無しさん:02/11/03 10:02
>>886
stringがないことを祈る

889 :デフォルトの名無しさん:02/11/03 10:14
>>886
自動でやるのは無理。
オブジェクトや文字列は単純には比較できないし
メンバ以外のゴミが入ってることもあるし
表現が違うけど意味的に同じこともありうるし。
なので自前でメソッド書いて全部比較。
メンバにクラスや構造体があれば再帰的にそれも比較。

890 :デフォルトの名無しさん:02/11/04 02:15
DelphiスレでVC++用語使うなよ。

891 :デフォルトの名無しさん:02/11/04 03:17
>>889 に同じく。宣言部の = record 〜 → = class に変更して
Equal メソッドを付けて、20メンバ分ゴリゴリ比較。

ていうか。Assiginや Equal を実装すると、いつも単純作業に辟易する
(そしてメンバを追加したときよく忘れる)んだが
お前ら、解決方法があるなら教えて下さい。タノム
クラスの内部情報からメンバを取得できるらしい事を聞いた事が
あるんだが、あるいはその方法で楽ができる、のか?

892 :デフォルトの名無しさん:02/11/04 03:31
>>891
published propertyを列挙して個々の型情報を取得できるから
比較・代入の自動化は可能だとは思うけど
オブジェクトを保持するプロパティをdeep・shallowのどちらで
扱うべきかという判断が毎回必要なので汎用化は難しいのでは。

893 :デフォルトの名無しさん:02/11/04 04:45
どこまで同じなら同値と見なすかはそのクラス次第だしね。

894 :Delフサギコ ◆A6VzDeLphI :02/11/04 21:10
Recordにメソッドが欲しい
季節ですね。

 ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄
   ∧,,∧   
  ミ,, ゚Д゚彡 
   〃つ旦O
 〜ミ,,[ ̄ ̄ ̄.]
      ̄ ̄ ̄


895 :デフォルトの名無しさん:02/11/04 22:02
もしかして、 Delphi7でobjectはなくなったの?
まじかよ・・・

896 :デフォルトの名無しさん:02/11/04 23:50
>>895 無くなってないようだけど?

897 :デフォルトの名無しさん:02/11/05 07:48
なんだ、フサギコが変なこというから勘違いしたじゃねーか

898 :Delフサギコ ◆A6VzDeLphI :02/11/05 08:12
D8.NET対応で・・・

いや、俺もよく知らんし・・・

 ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄
   ∧,,∧   
  ミ;゚Д゚彡 
   〃つ旦O
 〜ミ,,[ ̄ ̄ ̄.]
      ̄ ̄ ̄

899 :デフォルトの名無しさん:02/11/05 21:11
Delphiと関係ないのでsageで。

大抵のアプリのメインメニューやポップアップメニューのキャプションには、
「...」が後ろにくっついてるやつが混じってるけど、これって何の意味?

なんとなく、ダイアログが表示されるやつかな?とか思うんだけど、
デスクトップでの右クリックのプロパティにはついてないし・・・。

むかーし、どっかでその話を読んだ記憶があるんだけどまったく思い出せず、
小一時間調べたけど全くわかりませんでした.誰か教えてください・・・.
ソースもあるとトテモ嬉しいです.

900 :デフォルトの名無しさん:02/11/05 21:25
>>899
一度でその機能に到達しない場合は..じゃなかったけ?
例えば「印刷」なら即印刷が始まって、「印刷...」なら何か
プロパティ画面が出てきてから印刷とか…
漏れはそう解釈してるけど。

901 :デフォルトの名無しさん:02/11/05 21:53
確かそうだったと思う

902 :899:02/11/05 22:36
>900, 901

なるほど、サンクス!
しかし、手元のフリーソフトとかみると全部ちゃんとついてる。
これってもしかして知ってないと恥ずかしいようなこと?

うちの会社の同僚2人は気づきもしなかったと言っていた・・・鬱

でも、バージョン情報についてる奴とついてない奴とあるあたり、
微妙に解釈が間違ってるのもあるなあ・・・。

903 :デフォルトの名無しさん:02/11/05 23:52
>>899
モーダルダイアログ出るやつじゃなかったっけ?

904 :デフォルトの名無しさん:02/11/06 09:02
>903

M$製のアプリは全部バージョン情報にはついてないから違うっぽい

905 :デフォルトの名無しさん:02/11/06 09:04
*.zip内部のファイル名を列挙して特定のファイルのみを
ストリームとしてメモリ上に読み出すことはできますか?

WindowsXPだと*.zip;*.cabを仮想フォルダのように扱ってますが
こっちの方法は可能ですか?

906 :デフォルトの名無しさん:02/11/06 09:23
>>905
一度ファイルに落とさないといけないかもしれないけど、これどうよ?
ttp://home1.infonia.ne.jp/~delphian/delphi/compo/miscella.html#MI0001

907 :デフォルトの名無しさん:02/11/06 22:50
900超えたから次スレ立てようかな

908 :デフォルトの名無しさん:02/11/06 22:57
>>907
DelphiスレとC++スレ多すぎるんだからちょっとは統合考えてくれよな。


909 :デフォルトの名無しさん:02/11/06 23:02
どうせフサギコが性懲りも無く立てちまうからこちらはいらないんじゃない?
住み分けも明確でないし。

910 :デフォルトの名無しさん:02/11/06 23:24
モナーやらフサギコやらは、その意味不明な名前からして、
一般人(非2ちゃんネラ)には敷居が高いかと。

実際は、モナーの方はこっちのスレのスタンスに非常に近いようですが。

911 :デフォルトの名無しさん:02/11/06 23:51
こっちが本刷れなんだがなぁ。
相談室と談話室の2つだけあればいいんだけど。

912 :デフォルトの名無しさん:02/11/07 08:40
あるソフトが吐き出し続けている巨大なログファイルを横から覗き見して
特定のキーワードだけを抜き出すプログラムを作りたいのですが、
他のプログラムが使用中のファイルなので簡単に開けないのと、
他のプログラムが停止している状態でも、ログファイルが5M〜30Mと
大きすぎて開くのに時間がかかりすぎて悩んでます。

何か良い回避策は無いでしょうか。


913 :デフォルトの名無しさん:02/11/07 09:00
>>912
Cygwin+grep

>他のプログラムが使用中のファイルなので簡単に開けないのと、
読み取りすら禁止してるんなら無理。

914 :デフォルトの名無しさん:02/11/07 09:20
>>912
ログファイルのファイル名は指定出来るの? 出来るなら名前付パイプを作って
相手にそのパイプに吐かせる方法が使えるかもしれない。

915 :デフォルトの名無しさん:02/11/07 09:25
>>912
そのあるソフトにパッチをあてて、読込禁止を外してしまえばどう?

916 :デフォルトの名無しさん:02/11/07 10:01
そのプログラムが排他アクセスを指定しているんでしょ?

ログファイル名を変更可能なら、別プロセスにリダイレクトすることは簡単だけど。
ほとんどの場合、プログラムが自分で吐き出しているものをトラップするのは「容易」ではない。


ただし、裏技として、ダミーデバイスドライバを押し込む技法に近いものが存在する。
けど、ゴミも拾ったりするからめんどいよ?


917 :デフォルトの名無しさん:02/11/07 10:05
原則匿名なんだし、使う人が価値を決めるシステムなんだから
「こっちが本スレ」とか言うのって馬鹿みたいだよ。

Delphi スレは(実質)3スレしかないんだし。中傷スレまでいちいち気にしていられんでしょ?


918 :デフォルトの名無しさん:02/11/07 10:40
>>917
そんなことはみんなわかってるんだから、いちいちイワンでよろしい

919 :デフォルトの名無しさん:02/11/07 10:41
3スレもあんのかよ。減らせって。

920 :デフォルトの名無しさん:02/11/07 10:59
じゃあ、0.3スレに

921 :デフォルトの名無しさん:02/11/07 11:09
そんなに減らせって言うなら統一スレ立てろよ。
過去ログへのリンクもちゃんと書けな。

922 :922:02/11/07 11:13
Indyを使いGETメソッドでHTMLソースを取得するアプリを作ったのですが
何故か取得先のページが存在しないにも関わらずEIdHTTPProtocolExceptionの
例外が発生しません。 この原因が解る方いらっしゃらないでしょうか..

<詳細>
・ 簡単なアプリを作って試してみるとちゃんと例外が発生します。
・ 本命のアプリはデバック時でも例外が出ません。
・ IdHTTP1がデフォルトの状態でも例外は出ません。
・ EIdHTTPProtocolException発生時の例外処理は書いてありますが
   まったく実行されません。(例外が発生しないので)
・ 取得先のページが無いことは確認済みです、URLも再確認しました。
   簡単なアプリにも同じURLを使いましたが例外は出ました。
・ 簡単なアプリと本命アプリには同じIdHTTP.PASを使いました。
・ 環境 : DELPHI 6 PERSONAL SP2 & Indy9

もし原因に心当たりがあるという方はよろしければお聞かせ下さい(^^;
例外が出ないようにするプロパティでもあるのでしょうか..(汗

923 :デフォルトの名無しさん:02/11/07 11:18
>>921
お前が立てろ。

924 :デフォルトの名無しさん:02/11/07 11:19
TTreeViewでAutoExpandをTrueにしているとき
OnMouseDownで展開縮小するのではなく
OnMouseUpで展開縮小するようにしたいのですが
どうすれば良いのでしょうか?


925 :デフォルトの名無しさん:02/11/07 11:26
くだらない言い争いしてなんか得るもんありますか?
長い歴史の末に3つのスレで落ち着いてるんだからこの状態が
最善に近いと考えて良いのではないでしょうか。
(100%(・∀・)イイ!とは言いませんが)

926 :デフォルトの名無しさん:02/11/07 11:30
>>925
そして今3つもスレがあるのは多すぎるという意見がでた。
つまり最善ではないということだ。
この状態は落ち着いているとはいえない。
さらに良くなるきっかけである。

927 :デフォルトの名無しさん:02/11/07 11:33
>>926
いいから立てたいなら立てろよ。

928 :デフォルトの名無しさん:02/11/07 11:37
立てなくてももうすぐこのスレ終わるから
次スレのタイトルに「統一」とか入れたらいいんじゃないの?
「モナーとかフサギコは使わないで」と書くとかこのスレに誘導するとか。

929 :925:02/11/07 11:39
>>926

さらに良くしてくれるのは大歓迎です。 しかしその話題で
このスレを占領状態にされると困りますので新スレを立てて
そこで話し合ったらいかがでしょう。 他の2スレの方々
の目にも止まりますしここを汚さなくて済みますし。

930 :デフォルトの名無しさん:02/11/07 11:41
>>929
糞スレ立てさせるなよ。

931 :デフォルトの名無しさん:02/11/07 11:53
>>922
とりあえず、Indy はソースがあるんだから、デバッガで追っかけてみたら?
例外が出るソースを使って、期待する例外を送出している場所を特定し、
そこにブレークポイントを貼って、ターゲットアプリを実行。


932 :922:02/11/07 12:16
>>931

ありがとうございます、時間をかけてじっくりと試してみようと
思います。


933 :デフォルトの名無しさん:02/11/07 12:20
   ∧_∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ( ´Д` )< Delphiの質問はここで!
 /,  /    \___________
(ぃ9  |ヽ(`Д´)ノ< 質問待ってるよウワァン
/   ∧_二二つ

934 :デフォルトの名無しさん:02/11/07 13:18
ギコでもモナーでもいいぞ。
どうせ回答する人は全部見て回っているからな。
スレッド内は一次元の構造だから、正直、複数スレがあるほうがコメントしやすいし
読みやすいと思うぞ

935 :ななしへたぐらま ◆XcB18Bks.Y :02/11/07 14:38
>>912
後者については
文字列変数に直接丸ごと読み込むと速くなります.

目的のデータが何行目にあるかを知りたい場合は
自分で解析しなければなりませんが,
それでも文字列リストに読み込むよりかなり速いです.
(自宅と職場のPCでしか試していませんが.
 この方法は昔,パソコン通信のログビューワーを作ったときに使いました)

最大30MB程度ということなので
かなりメモリが多くないと一度にすべてを読み込めないかもしれません.
一気読みがだめなら部分的に読み込みながら検索することになると思います.


936 :デフォルトの名無しさん:02/11/07 17:29
delphiのTQueryコンポーネントを使って
パラドックスのテーブルのバイナリ型のフィールドにバイナリデータを書き込むにはどうしたら良いでしょうか?
宜しくおながいします。

delphi6を使っています。

937 :デフォルトの名無しさん:02/11/07 17:38
>>894
object使え。

938 :936:02/11/07 17:54
>>936の質問はちょっと違うかも・・。

Query1.ParamByName('blob_data').Asblob := UCHAR_data;

この式の右辺はUCHAR型なのでエラーになります。
かと言ってinttostr(UCHAR_data)とやっても
実行すると”式中の型が一致しません”となります。

どうすれば良いのでしょうか?

939 :デフォルトの名無しさん:02/11/07 18:16
SetDataめそっど。

940 :デフォルトの名無しさん:02/11/07 20:17
>>935
全部メモリに読み込む必要ないだろ。
while not Eof(f) do Readln(f, s)
で十分

941 :デフォルトの名無しさん:02/11/07 21:17
http://pc3.2ch.net/test/read.cgi/tech/1028906179/680n


942 :デフォルトの名無しさん:02/11/07 23:49
912っす。レスありがとうっす。

>>913
ごめん、CygwinはUnix使えないもんで分かんない。

>>914
名前付きパイプってどうやってやるんでしょ?

>>935
えっ?Stringsにこんな巨大なサイズのファイル開けるのでしょうか?
もう一つですが、でかいファイルの部分読みはどのようにやるのでしょう?

今まではログファイルの更新をトリガにしてログファイルを開いて目的のキーワードを探す、
あるいは最後の行まで移動する間にログの更新が入って・・・
の無限ループが多いでした。
ファイルサイズが小さいと問題ないのですが。

943 :デフォルトの名無しさん:02/11/07 23:52
メモリマップファイル使え

944 :デフォルトの名無しさん:02/11/07 23:55
912っす。気付いていなかった。

>>940
肝心な巨大ファイルの途中からの開き方を知らないのでちょっと訳ワカメなのですが
ファイルのsから最後までを読込めって意味でしょか。

945 :デフォルトの名無しさん:02/11/07 23:58
tail使え

946 :ねこま:02/11/08 02:11
>>943 に1票


947 :デフォルトの名無しさん:02/11/08 07:48
>>944
Delphiにはファイルについていくつかの扱い方があるから困るんだよね。
途中から読む方法は
 TStreamならPositionプロパティ
 system.入出力ルーチン なら Seek/FilePos
 APIならSetFilePointer

948 :914:02/11/08 08:04
名前つきパイプは 95では使えないが、
http://www.google.co.jp/search?q=CreateNamedPipe&lr=lang_ja

使う側はファイル名として
\\.\pipe\pipename
という感じのファイル名を渡せないといけない。


949 :936:02/11/08 16:13
>>939
Query1.ParamByName('data').SetBlobData( p, size );
としても
'式中の型が一致しません'
になりますた。


950 :ななしへたぐらま ◆XcB18Bks.Y :02/11/08 16:29
>>942
ログファイルの更新というのはたいてい行の追加だと思うので
更新のたびにログの先頭から読み込むのは効率が悪そうですね.
以下は実際に試していないのですが….

ログファイルの更新時には位置から読み込み・解析を始めるのではなくて
「さらに読み込む必要があるぞ」というフラグを立てるだけにして,
作業中の読み込み・解析が終わったら
続きの読み込み・解析をするようにすればよいかもしれません.

文字列リストのLoadFromFileだと途中から読み込むことができないので
ファイルストリーム(TFileStream)で開いて
文字列リストのLoadFromStreamで読み込むようにしてはどうでしょうか.
ファイルストリームは読み込み位置を覚えているので
追加の読み込みも同じようにLoadFromStreamでできると思います.


951 :デフォルトの名無しさん:02/11/08 18:03
だ か ら いいかげんスレッド切るのやめてよみにくいったらありゃしない

952 :デフォルトの名無しさん:02/11/08 18:43
951はネットニュースからですか?

953 :デフォルトの名無しさん:02/11/08 18:54
MLの話だろ

954 :デフォルトの名無しさん:02/11/08 22:34
Delphi6でこんな面白いソフトができちゃった!

 http://hp.vector.co.jp/authors/VA031513/

955 :デフォルトの名無しさん:02/11/09 00:19
>954
いろんなところに貼り付けているようだが
意図は何だ?


956 :デフォルトの名無しさん:02/11/09 02:15
・宣伝のため
・荒らさせるため
・Delphiを陥れるため

957 :デフォルトの名無しさん:02/11/09 03:15
日本語版のDelphi7パッチってまだ出ないの?


958 :デフォルトの名無しさん:02/11/09 03:52
おそらく怨恨

959 :デフォルトの名無しさん:02/11/09 05:03
>>957
もうでてるけど?


960 :デフォルトの名無しさん:02/11/09 10:08
Delphiってフリーなのでしゅか?
どこへ行けば手に入るのでしょうか?
ソフマップでやたら高い金額がついていたのはどうしてなのでせうか?
いい本があったらいただきたいのですが?


961 :デフォルトの名無しさん:02/11/09 10:23
Personalがフリーで入手できます
以下のサイトへどうぞ
http://www.borland.co.jp/

962 :デフォルトの名無しさん:02/11/10 18:31
912っす。
メモリマップファイルとTFileStream、両方試してみたら
後者が速かった。
みんな、ありがとね。

963 :デフォルトの名無しさん:02/11/10 21:28
>>960
プログラミングのソフトはそんなもん。
安いのはダンピングしているM$の学割だけ。

964 :デフォルトの名無しさん:02/11/11 00:41
タイトルバー非表示ってどうやればできますか?

965 :デフォルトの名無しさん:02/11/11 00:48
>>964
CreateParams メソッドでスタイルを変更する。

966 :デフォルトの名無しさん:02/11/11 00:57
>>965
時に、964はネタなのだろうか(藁
ネタなら、そのレスが一番だけど。

967 :デフォルトの名無しさん:02/11/11 01:01
ネタじゃないっす

968 :デフォルトの名無しさん:02/11/11 01:05
ネタじゃないコース→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→↓
                                       ↓
                                       ↓
                                       ↓
                                       ↓
                                       ↓
                                       ↓
                                       ↓
                                       ↓
                                       ヘルプ嫁  

969 :修正(藁:02/11/11 01:07
ネタじゃないコース→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→↓
                                                       ↓
                                                       ↓
                                                       ↓
                                                       ↓
                                                       ↓
                                                       ↓
                                                       ↓
                                                       ↓
                                                      ヘルプ嫁  

970 :965:02/11/11 01:13
一応、まじめに答えたつもりなんだけど・・・。

971 :デフォルトの名無しさん:02/11/11 01:23
>>970
procedure TForm1.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
Params.Style := WS_POPUP or WS_THICKFRAME;
end;

これやるとウィンドウが左上に固定したりして動かせない…

972 :デフォルトの名無しさん:02/11/11 06:47
>971 WM_MOVEを自前処理はキホソ。

973 :デフォルトの名無しさん:02/11/11 11:21
>>972
う…、出なおしてきます

974 :検索しような。:02/11/11 23:30
http://www.google.co.jp/search?hl=ja&ie=UTF-8&oe=UTF-8&q=SC_MOVE%E3%80%80Delphi&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=lang_ja

975 :972:02/11/11 23:31
>>974
う…、出なおしてきます

976 :デフォルトの名無しさん:02/11/11 23:45
うっ… 出ちゃいました…。

977 :デフォルトの名無しさん:02/11/12 00:05
こんなにたくさん

978 :デフォルトの名無しさん:02/11/12 03:49
D7にて
ListViewからドラッグを行う場合に、スタイルがvsReportだと
ドラッグ中に該当する1行が丸ごとドラッグされるアイコンの横に
表示されてしまいますが、ドラッグ中は先頭の1項目目だけを
表示させる方法が解りません、良い方法があれば教えて下さいませ。

(エクスプローラでフォルダを一覧表示させてドラッグした場合には
ファイル名だけがドラッグ中に表示されているのと同じイメージ)

979 :ねこま:02/11/12 07:44
OLE DD

980 :デフォルトの名無しさん:02/11/12 14:19
フォームのBorderStyleをbsDialogにする以外で、左上のアイコンを
表示しないようにする方法ってあるんでしょうか?

サイズ変更可能で、左上にアイコンは表示せず、でも右のXボタンは
表示したいんですけど、CreateParamsをオーバーライドしていろいろいじくっても
うまくいかないんです.

981 :デフォルトの名無しさん:02/11/12 23:40
次すれ(屮゚Д゚)屮 カモーン

982 :デフォルトの名無しさん:02/11/12 23:41
そこのけ、そこのけ。 愉快なソフトのお通りだ〜い! by Delphi

 http://hp.vector.co.jp/authors/VA031513/

983 :デフォルトの名無しさん:02/11/13 00:05
>>980
透明なアイコンを作t

984 :デフォルトの名無しさん:02/11/13 00:27
記念パピコV(^o^)V

985 :デフォルトの名無しさん:02/11/13 00:29
記念熊ん子V(^o^)V

986 :もう答えるスペース無いけど(藁:02/11/13 01:23
>>980
>フォームのBorderStyleをbsDialogにする以外で
↑これの理由次第だと思うのだが。
なんでそれじゃダメなのか。

987 :デフォルトの名無しさん:02/11/13 08:07
http://webpro.jp/tips/detail.php3?arg_tcd=1&arg_tno=14
これやって フォームの「エディタで表示」(ALT+F12)すると
日本語文字が化けて元に戻すと文字が消えてしまいませんか?

俺だけ?

988 :デフォルトの名無しさん:02/11/13 09:20
新スレです

Delphi相談室その8
http://pc3.2ch.net/test/read.cgi/tech/1037146781/


989 :デフォルトの名無しさん:02/11/13 11:58
>>987
Tips とは移り変わるもの。過去ログに縛られないよう。
あなめあなめ

990 :デフォルトの名無しさん:02/11/13 14:46
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| 閑散としてきたな。
\___ _____________
      |/
      ∧ ∧    ∧,,∧
      (,,゚Д゚) .目.ミ゚Д゚ ミ
     (|   |)  || (ミ  ミ)
    〜|   |   ||  ミ  ミ〜
      ∪ ∪  .||  ∪ ∪
           /|
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| そろそろ埋めなかなわん。
\__________________

991 :デフォルトの名無しさん:02/11/13 14:46
991

992 :デフォルトの名無しさん:02/11/13 14:46
992


993 :デフォルトの名無しさん:02/11/13 14:46
993



994 :デフォルトの名無しさん:02/11/13 14:47
994




995 :デフォルトの名無しさん:02/11/13 14:47
995






996 :デフォルトの名無しさん:02/11/13 14:47
そろそろ誰かこないか?

997 :デフォルトの名無しさん:02/11/13 14:47
まだこないみたいだな

998 :デフォルトの名無しさん:02/11/13 14:48
どうよ、埋めないの?




999 :デフォルトの名無しさん:02/11/13 14:55
999

1000 :デフォルトの名無しさん:02/11/13 14:55
1000ゲト

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

261 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)