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

Delphi相談室その7

レス数が1000を超えています。これ以上書き込みはできません。
0001Delphi1 から使ってますNGNG
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
0002Delphi1 から使ってますNGNG

■過去スレ
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
0003Delphi1 から使ってますNGNG
あと適当に貼っておいてください。
0004デフォルトの名無しさんNGNG
  ∧_∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ( ´∀`)<. Delモナーがどんな厨房疑問でもやさしく答えます。
 (    ) .| Delモナーは時に私であり、時には別の人。
 | | |  | 他のスレに書き込んで罵倒される前に、まずここで質問しよう。
 (__)_)  \_________________________
0005デフォルトの名無しさんNGNG
>>4
適当すぎるわヴォケ
0006デフォルトの名無しさんNGNG
Del7が26日発送ってことは、金曜日か土曜に届くから、
週末はDel7で遊べっていう個人ユーザへの配慮ですか?
0007デフォルトの名無しさんNGNG
なんだこの廃れ具合は・・・
0008デフォルトの名無しさんNGNG
久しぶりに Delphi Direct を起動してみたが
Delphi7 の情報がまったく無いのはどういうわけだ Borland
0009デフォルトの名無しさんNGNG
>>7
ゲー製作のノベルゲームスレにでも行ってるんじゃないの?
0010デフォルトの名無しさんNGNG
>>9
あそこってさりげに人気スレなのか?
0011デフォルトの名無しさんNGNG
やっぱ、やさしいスレと統合した方がいいのかな…
0012やさスレNGNG
>>11
おう、いつでも引き受けるぞ。
もちろんベースは俺らだからスレタイは俺らのがそんぞくだがな
0013Delフサギコ ◆VzDeLphI NGNG
 ミ,,゚Д゚ミ WideStringのUnicodeで
       カタカナ⇔ひらがな
       全角⇔半角
変換など、行うのは、どうするのでしたでしょうか。。
0014デフォルトの名無しさんNGNG
>>13
LCMapString
0015Delフサギコ ◆VzDeLphI NGNG
サンクスコ ミ,,゚Д゚彡ノ
[Delphi:41843] Re: 半角の数字を全角に( 遅レス+解決したので)
0016 NGNG
昨日Delphi 6 Personalをダウンロードしてユーザ登録して
メールで ライセンスキーとインストールキー届いたんだけど
インストール時に「キーが正しくありません」って跳ね返されてます(T_T
どうしてでしょうか?
のっけからつまずいてます・・・・
0017               NGNG
あ でけた♪
0018Delフサギコ ◆VzDeLphI NGNG
    ,,,,,,,,,,,,,,,∧,,∧   /こんな感じで
  〜′,,,,,,,,,,ミ,,゚Д゚彡< 
   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;
0019Delフサギコ ◆VzDeLphI NGNG
    ,,,,,,,,,,,,,,,∧,,∧   /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;
0020Delフサギコ ◆VzDeLphI NGNG
    ,,,,,,,,,,,,,,,∧,,∧   /
  〜′,,,,,,,,,,ミ,,゚Д゚彡<  あってるのん?
   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
0021Delフサギコ ◆VzDeLphI NGNG
   ?
  ∧,,∧,,,,,,,,,,,,,,,      /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;
0022デフォルトの名無しさんNGNG
外の比較的マイナーな文学作品を翻訳出版する
小さな出版社がある。そして文学ファンはこういった出版社を
潰さないため、今後も翻訳を続けてもらうために
1人で同じ本を2・3冊買うことが良くある。

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

Delphi7の出来のみを云々するのは
あまりにも近視眼的ではないだろうか?
0023デフォルトの名無しさんNGNG
なぜ 22 はこんなスレをつけるのか。

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

ここにかかれている内容を信じるかどうかはあなた次第。
Delphi7 を注文してしまった人は、すぐに答えが出るでしょう。
0024デフォルトの名無しさんNGNG
社員だから
0025デフォルトの名無しさんNGNG
☆★☆★☆ アンチに朗報! ☆★☆★☆

VS.NET 7.0と.NET 1.1は連携できません!
.NET 1.1を導入すると、VS.NET 2003を買わされる羽目になります!
0026デフォルトの名無しさんNGNG
今、テキストエディターを作っている(作ろうとしている)のですが、
メモ帳と同じフォントにしたいのです。
しかし行間が大きくて、同じにならないのですが、どうすればいいのでしょうか?

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

どなたかお願いします。
0027デフォルトの名無しさんNGNG
0028デフォルトの名無しさんNGNG
>>26
TEditor
0029デフォルトの名無しさんNGNG
フォントと行間って関係あるの?
0030デフォルトの名無しさんNGNG
>>29
ないよ…
0031デフォルトの名無しさんNGNG
>>30
うんこするの?
0032デフォルトの名無しさんNGNG
>>28
http://www.vector.co.jp/soft/win95/prog/se114384.html
これですか?
>>29
あ、関係ないですね…。すいません。
0033デフォルトの名無しさんNGNG
そうです
0034デフォルトの名無しさんNGNG
>>26
Delphiは6?
6より前のは使ったことないから知らないけど、
6ならHelpのチュートリアルでテキストエディタ説明してるよ。
それ辿っていけば?

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

あと異なる書式を混在させるようなことをしなければ
TMemoで十分だと思うけど。
(RichEdit使ったことないんでよく分からんが…)
0035デフォルトの名無しさんNGNG
行間を指定したいんでしょ
TMemoもTRichEditも無理
0036デフォルトの名無しさんNGNG
オナニードローでできるよん
0037名無しさん@お腹いっぱい。NGNG
メモ帳のフォントとTMemoのフォントとサイズ合わせたら行間も同じになったよ。
0038デフォルトの名無しさんNGNG
>>36
がいしゅつ
0039デフォルトの名無しさんNGNG
とりあえず>>28を使ってみようと思います。
シェアウェア(カンパウェア)なのがちとあれですが…。
レス下さった方、ありがとうございました。
0040デフォルトの名無しさんNGNG
richeditの何がそんなに気にくわないんだか…?
別に構わないと思うけどなぁ…。
読み込める量からすっとMemoは非推奨だとは思うけど。
0041デフォルトの名無しさんNGNG
>>40
まだ9xなんだ
004240 ◆W9uCUQvg NGNG
>>41
そおそお(藁
95!95!(藁
0043デフォルトの名無しさんNGNG
imageの上に透明のimageを置き
上のimageにCanvasで図形を描くときにちらつきます。

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

DoubleBuffered や WM_ERASEBKGNDを無視するように
もしましたがちらつきます。
どなたかご教授をお願いします。
0044デフォルトの名無しさんNGNG
なんでDoubleBufferedを無視するの?
0045デフォルトの名無しさんNGNG
なんでオフスクリーンにしないの?
004643NGNG
>>44
DoubleBuffered := True
です
0047デフォルトの名無しさんNGNG
で、imageを2つも重ねて何がしたいの?
004843NGNG
>>47
知ったことか
0049デフォルトの名無しさんNGNG
16bitの画像データをテキストに変換したいのですが、
VBでやるとデータ型がない上に遅すぎて使い物になりません。
やっぱりdelphiでやるのがいいのでしょうか?
データサイズは512*512または128*128*128です。
0050デフォルトの名無しさんNGNG
コンパイラなら何でもいいよ。
速度で言うとVCのが速い。
0051デフォルトの名無しさんNGNG
>>48
まあガムバッテちらつきを無くしてくれ。
0052デフォルトの名無しさんNGNG
うーん、やっぱりCですか。
本職じゃないのでお手軽にやりたかったのですが・・・。
ちょっと勉強してみます。
0053デフォルトの名無しさんNGNG
DelphiならTBitmapに画像を読み込ませてコンポーネント
リソース形式(16進)でストリームに吐かせるだけだからほんの数行
書くだけ。
005453NGNG
こんな感じかな?
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;
005543NGNG
>>51
>>48は騙りです
0056デフォルトの名無しさんNGNG
>>55
了解した。ちらつきの件がむばってくれ。
2枚の画像を重ねる理由が判らないけど、
合成処理をさせたいだけならオフスクリーンを
使った処理でいいのでは?
0057デフォルトの名無しさんNGNG
> 128*128*128
もしかして研究でボクセルやってらっしゃいますか?
CTスキャンみたいなの?
これだとTBitmapは無理だろうから、自作しないといけないからがんばって

>>43
OffScreenを使うに一票。
目に見えないBitmapの上にDraw系の命令で一旦書いておいて、
最後に目に見えるところに一括転送。するとちらつかない。
0058デフォルトの名無しさんNGNG
>56だす。
オフスクリーンに追加しておくと。。。
TImageをいじくるよりも、むしろTControlを使って
表示用のみのTBitmap、オフスクリーン用のTBitmapを
用意しておき、合成はオフスクリーンで行い
合成の結果を表示用へ書き込む。
そしてTControlへの常時描画は表示用を使用する。
この時、WM_ERASEBKGNDを調整するように・・・
まあ、DoubleBufferを自分でやるような感じですが・・・
005943NGNG
>>56>>57>>58
ありがとうございます。
なんとDoubleBufferでいけてました。お手数かけました。
メッセージを捕まえたり、ポートを調べたりしてたのが何だったんだ!
これで土日潰しました。勉強になったけど・・・
006043NGNG
DoubleBuffer恐るべし。
学校なんでおやすみなさい。
0061デフォルトの名無しさんNGNG
なんだポートって?DoubleBufferにポートってなんだー?謎だ・・・
0062デフォルトの名無しさんNGNG
>>61
ネタだよな?
0063デフォルトの名無しさんNGNG
ごめん、俺マジでわからん
0064デフォルトの名無しさんNGNG
海に向かって叫んでたんだろ
0065デフォルトの名無しさんNGNG
TRichEditを右クリックしたとき
TMemoを右クリックしたときと同じように
ポップアップを表示させるのにはどうしたらよいのでしょうか?
TPopupMenuで作成するしかないのでしょうか?
0066デフォルトの名無しさんNGNG
>>65
他に方法があるなら教えてくれ。
0067デフォルトの名無しさんNGNG
D5 -> D7のバージョンアップで悩んでいます。
いったい DsgnIntf はどう処理したらいいんだろ?
TDefaultEditor を継承してダブルクリック時のデフォルトイベントを変更してたんだけど
DsgnIntf はtoolAPIの DsgnIntf.pasを使っていいのかな?

TDefaultEditorがDesignEditors に変わってるし、
EditProperty の引数の型が変わってるから変更したら、今度は
IProperty が定義されてないと出る
006867NGNG
ごめん DsgnIntf -> DesignIntf って事みたいね
0069デフォルトの名無しさんNGNG
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はちゃんとスクロールして再描画もしてくれるのでしょうか?
0070デフォルトの名無しさんNGNG
フォームを表示したとき、マウスポインタが
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;
0071デフォルトの名無しさんNGNG
Qと書け
0072デフォルトの名無しさんNGNG
>70
たぶん変数の名前をPointにしたせいで、
関数のPointを変数のPointと認識しちゃってるんだんと思う。
だから変数の名前を変えればたぶんOK
0073デフォルトの名無しさんNGNG
var
Q : TPoint;
007470NGNG
>>71
>>72
>>73
ああ、そこでしたか・・・
助かりましたありがとうございます。
0075Indyのことでお尋ねします。NGNG
ファイルを転送するプログラムを組みたいのですが、
どうしたらよいでしょうか?教えてください。
0076デフォルトの名無しさんNGNG
少しは調べろ
0077Indyのことでお尋ねします。NGNG
>>76
調べましたがアフォなので探せないし、わかりませんでした。
0078デフォルトの名無しさんNGNG
Indyはソース公開されてるんだからソース読め。
0079Indyのことでお尋ねします。NGNG
どこでしか?
0080デフォルトの名無しさんNGNG
モナーに聞いて来い
0081デフォルトの名無しさんNGNG
インストールしたらついてくる。
0082デフォルトの名無しさんNGNG
ウザいよ>>76,78,80
0083Indyのことでお尋ねします。NGNG
>>82 感謝!!
0084Indyのことでお尋ねします。NGNG
アフォだからソース見ても分かりません。
消えろと言うのならば、消えますがいかがいたしましょう。
0085デフォルトの名無しさんNGNG
FTPクライアントを作りたいということですか?

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

その両方ですか?

それともまったく別のものを作りたいんですか?
0086Indyのことでお尋ねします。NGNG
FTTPみたいなものを。
0087デフォルトの名無しさんNGNG
FTTPとは?
0088デフォルトの名無しさんNGNG
FTTP

( ̄ー ̄;)。。。ん?
0089Indyのことでお尋ねします。(俺って厨房?)NGNG
・・・。
とにかくサーバーにファイルを転送するファイルです。
0090デフォルトの名無しさんNGNG
まぁ間違いなく厨房でしょう。

とりあえずFTPクライアントを作りたいということでいうわけだね。
んで、IndyのFTPクライアントは使ってみたのかい?
0091デフォルトの名無しさんNGNG
>>89
FTPサーバはサーバのサービスを起動するだけだから
(NT系なら付いてるよ WinXP Homeはどうかしらんけど)
FTPクライアントアプリを作ればOK

フォームにIdFTPを貼り付けてヘルプを読むべし
0092Indyのことでお尋ねします。(俺って厨房?)NGNG
IdHTTPをターゲットにしてやってますが・・・。
0093デフォルトの名無しさんNGNG
おまえプロトコルについてまず勉強しろ。
ネットワークアプリは今のおまえには無理。
0094デフォルトの名無しさんNGNG
( ´,_ゝ`)プッ
Delphiが馬鹿にされるわけだな
0095デフォルトの名無しさんNGNG
>>93
ハゲシクドウイ

ちと質問。
改行コードの定数ってどんなんだっけ?
ド忘れしてしもた。
0096デフォルトの名無しさんNGNG
\r\n -> #13#10
0097デフォルトの名無しさんNGNG
#13#10
0098デフォルトの名無しさんNGNG
CRLF #13#10
CR #13
LF #10
009995NGNG
>>96-98
スマソ、VBでいう「VbCrLf」みたいなのはなかったっけ?
折れの勘違いだったかな?

# 煽りじゃないので念のため
0100デフォルトの名無しさんNGNG
>>95
sLineBreak
0101デフォルトの名無しさんNGNG
あんまり検証してないけどVCL全体で#13がハードコーディングされてるのに
部分的にsLineBreak使うとおかしくならない?
クロス開発のときにね。
010295NGNG
>>100
サンクス 助かったよ

・・・と言いたい所だったけど、
折れのD5では存在しないみたいだ(鬱
Del7買うかな・・。
0103デフォルトの名無しさんNGNG
sLineBreak = {$IFDEF LINUX} #10 {$ENDIF} {$IFDEF MSWINDOWS} #13#10 {$ENDIF};

むしろクロス用と思われるけど・・・
010495NGNG
>>101
VCLでもそう書かれてたのか。
どうも折れの勘違いか何かだったような気がしてきた。
スレ汚しスマソ
0105デフォルトの名無しさんNGNG
つか、なんでsLineBreakってヘルプに載ってないんだろ。
…載ってないよな? 少なくとも、キーワード検索しても出ない。
0106101NGNG
>>103
sLineBreakが両対応で
VCLが#13#10ハードコーディングで
CLXが#13ハードコーディングになってるのが
なんかイヤだってだけなんだけどね。
0107100=103NGNG
>>106
今調べたけど、その通りみたいだね

ヘルプにも載ってないし
Del6出荷直前に気が付いて慌てて用意したって感じかも
0108デフォルトの名無しさんNGNG
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;
0109デフォルトの名無しさんNGNG
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;
0110デフォルトの名無しさんNGNG
>>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;
0111デフォルトの名無しさんNGNG
プロパティで制御しろ
0112デフォルトの名無しさんNGNG
>>108
AutoExpand=true でいいんじゃないの?
名前からじゃ効果が想像しづらいが。
0113デフォルトの名無しさんNGNG
>>111

AutoExpand := true;

のときと、false で 110 のときとでは動作が違うね。
0114デフォルトの名無しさんNGNG
どう違うの?
0115デフォルトの名無しさんNGNG
>>114

ためしてごらん。

AutoExpand := true;

では、該当ノードの拡張・折りたたみの影響が、兄弟ノードのそれに
影響を与える
0116デフォルトの名無しさんNGNG
AutoExpand := true;

では、複数のレベルの同じノードがある場合、そのひとつだけが拡張できる
0117デフォルトの名無しさんNGNG
AutoExpand := true;

の挙動はバグ。ぜんぜん標準的じゃない。
0118デフォルトの名無しさんNGNG
> AutoExpand := true;
>
  ↑揃いも揃って無駄な空行・・・
0119デフォルトの名無しさんNGNG
>>118

お前のカキコが一番無駄>オレモナー
0120デフォルトの名無しさんNGNG
108 は寝てしまったかぁ
0121デフォルトの名無しさんNGNG
>>110
おお、何て簡潔に・・・
ココに書き込む1時間前は
もっと長々書いてた自分が恥ずかしい。。
>>111
>>112
>>113
AutoExpand、初めて聞くブロパティーです。。
ほんと俺は何も知らない小僧だわ・・

みなさん、ほんとありがとうございます!
早速2つとも試してみます。
0122108NGNG
>>121
0123デフォルトの名無しさんNGNG
Delphiはじめたばかりで手元に書物もないのでヘルプファイルのチュートリアルの
テキストエディタをつくってみようとおもったのですが
いきなりAddtionalにある(らしい)ActionManagerってコンポーネントってのが
のが見つからなく詰まりました。
一番最初のほうの説明書き読んだら
「ここで取り上げている機能の一部は Delphi の Personal 版では使用できません。」
と、書いてあるし(T^T)
プログラム経験の無い方でDelphiから入った人はどうやってDelphi勉強しましたか?
0124デフォルトの名無しさんNGNG
>>123
モナーの *やさしい* Delphi質問スレ
http://pc.2ch.net/test/read.cgi/tech/1003113413/

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

XPManifestを使って問題があった方はいらっしゃいますか?
0126デフォルトの名無しさんNGNG
>>124
いくつのですか?
0127ねこまNGNG
XPManifest? XPManager の typo ですよね.
私は XP も D7 も持っていないのでわかりませんけど,
Manifest リソースをアタッチしないとだめなんではなかったっけ?
XPManager といってもそこは自動ではなかったような.
0128デフォルトの名無しさんNGNG
さっそくD7にアップデートしたのですが、生成されるEXEファイルに付く
デフォルトのアイコンのデータ *.ICO がどこにあるのか、わかりません。
どこにあるのでしょうか?
0129デフォルトの名無しさんNGNG
res
0130デフォルトの名無しさんNGNG
>>127
えっ、そーなのかぁ、知りませんでした、
ちゃんと調べなおして出直して来ます。ありがとう
0131デフォルトの名無しさんNGNG
http://yahooo.s2.x-beat.com/
0132デフォルトの名無しさんNGNG
>>123
俺が持ってる本は
http://www.amazon.co.jp/exec/obidos/ASIN/4822216888/ref=sr_aps_d_1_1/249-9304172-6892345
これだけ。
詰ったらネット検索か図書館。

今で約半年だが、
まぁ自分の身の回りのツール位ならすぐに作れる。
たまにJaneの改造に参加。
0133デフォルトの名無しさんNGNG
・データ名 Edit1.Text
・データ番号 Edit2.Text
・データの内容(改行有り) Memo1.Text

これらをひとくくりに
何個もこのようなデータを1つのテキストファイルに保存したいのですが
何かいい方法あったら教えてください。
テキストファイルでなくても保存できて読み込めればどんなファイルでも
いいのでこういう方法がいいとかあったらおながいします。
0134Delフサギコ ◆VzDeLphI NGNG
 ミ,,゚Д゚彡普通にIniファイルでいいのでは...
0135デフォルトの名無しさんNGNG
>>133
InterbaseとかMySQLで管理するのはどう?
0136 NGNG
まっ… まだアクソンジャーマネのネタが来るのかよ!
0137デフォルトの名無しさんNGNG
>>133

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

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

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

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

読み込みは、TReader のインスタンスを使って、RaedInteger と ReadString
メソッドを使って、データ数を読み込み、その数分だけ、上記のデータの読み
込みを繰り返す
0138デフォルトの名無しさんNGNG
>>133
iniでいいと思う。一番簡単だ。
0139デルファイの名無しさんNGNG
>>133
少量であれば、TCollectionItem派生のクラスに持たせてストリーミングという手もあります。
でも、量が多ければ>>135氏の言うようにデータベースの方がいいと思います。
(改行があるので*.iniは没)
0140138 ◆hw.YwvrE NGNG
あ、最後の行、読んでなかった…。
量が多いとiniはちょっとナニだしな。
138は忘れてくで。
0141133NGNG
>>134
>>138
iniは32kbまでしか扱えないって何かで見たんですけど
大丈夫でしょうか?
データは結構でかくなると思います。
>>135
データーベースは
勉強しないと。ググルで調べてみます。
おすすめの解説サイトとかありますか?
>>137
>>139
なるほど、いつぺんやってみます。

みなさんレスサンクスです。
0142133NGNG
あ、書いてたらレスが、、
0143デフォルトの名無しさんNGNG
うんこ
0144デフォルトの名無しさんNGNG
(´-`)。o ○ (とうとうH○Pスレみたいなレスが…)
0145デフォルトの名無しさんNGNG
>>141
TMemINIFile使えば何メガでもOKだし、OSの違いによって動作も変わらない。
0146デフォルトの名無しさんNGNG
>>145
TMemINIFileは改行OK?
0147 NGNG
つーか、検索して自分でやってみるがヨロシ。
0148デフォルトの名無しさんNGNG

●●●●●●●●「オセロさえ納期内に作れない=OO役立たず 」祭り●●●●●●●
/|         |  |_____ΦΦΦΦΦΦΦΦΦΦΦ||ΦΦΦ
  |         |  | ̄ ̄ ̄ /|                    ||
  |         |  |   / /|TTTTTT   TTTTTTTTTT||TTTTT
  |        /\ |  /|/|/|^^^^^^ |三三| ^^^^^^^^^^^||^^^^^^^
  |      /  / |// / /|
  |   /  / |_|/|/|/|/|
  |  /  /  |文|/ // /
  |/  /.  _.| ̄|/|/|/         Λ_Λ
/|\/  / /  |/ /           (___)
/|    / /  /ヽ            /〔 非OO 〕〕つ
  |   | ̄|  | |ヽ/l            `/二二ヽ
  |   |  |/| |__|/   Λ_Λ     / /(_)
  |   |/|  |/      ( ´∀`)   (_)    Λ_Λ
  |   |  |/      // /  ^ ̄]゚        (`   )
  |   |/        ゚/ ̄ ̄_ヽ         ⊂〔〔 非OO 〕
0149Delフサギコ ◆VzDeLphI NGNG
 ミ;゚Д゚彡改行だめみたいだ・・・知らなかった
0150デフォルトの名無しさんNGNG
改行とか特殊コード入れたければ 自前で%エンコードか \エンコードいれるといいよ
0151デフォルトの名無しさんNGNG
>>150

で、読み込みの時はデコードの手間が増えるわけ?
0152デフォルトの名無しさんNGNG
>>151
 そうだよ。どうせファイルアクセスするんだから、その時間は隠れてしまうよ
0153デフォルトの名無しさんNGNG
>>152
でも手間が増えるんだろ。だめじゃん。
0154デフォルトの名無しさんNGNG
手間ったって
TMyMemINIFile を継承して
WriteEscString ReadEscString を一度作るだけだろ
0155デフォルトの名無しさんNGNG
>>151,153
痛すぎる・・・
0156デフォルトの名無しさんNGNG
なぜそうまでして ini にこだわる?
0157デフォルトの名無しさんNGNG
もともと *.ini を使うのが簡単、という文脈の流れで
0158デフォルトの名無しさんNGNG
レジストリじゃなくてiniに拘る理由?
そりゃ、windowsフォルダに入れるなら糞だけどローカルに作ると
1、速い
2、実行ファイルを別のディレクトリに入れれば相互に独立する
3、環境を移す時にディレクトリを丸ごとコピーするだけでいい
4、アンインストールも楽
0159デフォルトの名無しさんNGNG
レジストリのほうが動作は速いんじゃないの?
0160デフォルトの名無しさんNGNG
>>158
>>159
俺もそうおもうけどINIの方が使い捨てプログラムには楽かと
0161デフォルトの名無しさんNGNG
>>159
 サイズによると思うよ。
 巨大な iniファイルを作ると1文字の追加削除でも全件読まなければならない iniより
 木構造で管理されてるレジストリが速いだろうね

それでもアプリ起動時に全件読んで、終了時に全件書き込むような使い方なら iniの方が速いんじゃない?
0162デフォルトの名無しさんNGNG
なんで >>133 の質問で「INIファイルかレジストリか」って
議論になるのかわからん。
各項目のサイズ。レコード数。更新の頻度。とかを考えないと
テキストのまま保存されるINIファイルは論外になる可能性が
あるでしょ。
それに、こんなことでレジストリを使っていていいのかって
問題もある。たとえばNT系列でAdministrator以外でも
きちんとつかえるのかしら。
0163デフォルトの名無しさんNGNG
>>162
じゃぁ何をつかったらいいか提示して
0164デフォルトの名無しさんNGNG
>>158
>レジストリじゃなくてiniに拘る理由?

ちゃんと133からの流れを読んでいるのか?
データだよ、保存したいのは。前に出てた Stream 系かデータベースを
使うのが普通だろ。
0165158NGNG
>>164
 ああじゃ追加
5、気にせずに巨大データも書き込める
0166162NGNG
レコードが大量だとRDBとかも選択肢に入れておかなきゃ
だめじゃないの?最初から除外する意図がわからん。

プログラムが使い捨てか、長く使うかでも変わるし
データのサイズが数KBか数百MBかでもかわりますから
そこらへんがわからないうちからINIだのレジストリだの
いうのは意味がないでしょ。
0167デフォルトの名無しさんNGNG
>>165
巨大データをINIになんて入れると時間がかかるよ。
君の言いたいことは、気にせず「巨大データを書き
込むプログラムが作れる」だろ。

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

可変長のテキストをRDBで扱うとRDBによっては効率悪いし
0169デフォルトの名無しさんNGNG
>>133
まずは各データの最大長とデータの最大個数書かないと。
わからないならおおよそのサイズ(数バイト,KB,MB,無制限)でもいいから。
0170デフォルトの名無しさんNGNG
あのねぇ、ini がどうとか言ってる奴を除けば133は解決済み
0171デフォルトの名無しさんNGNG
>> 複数のこういうペアを作りたいのかもしれないね。

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

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

これ、読めないのか?
0173デフォルトの名無しさんNGNG
>>172=168=158

いいかげんにしろよ。168では、データ数分だけファイルつくるってんだから
仕様を満たさないのは明らかだろ。
0174デフォルトの名無しさんNGNG
じゃ、結局 TMemIniFileでエンコードして格納するのが一番適当って事だね
0175デフォルトの名無しさんNGNG
>>174

君の住所録は TMemIniFile でエンコードして作ってろよ。
おもしろい奴だね。もっと日本語の読解力をつけろよ!
0176デフォルトの名無しさんNGNG
>>175
住所録ならCSVだろ
0177デフォルトの名無しさんNGNG
>>132
僕も半年だけど、全然だめぽ。。。
Delの前にも違う言語やってたんですか?
0178デフォルトの名無しさんNGNG
うん、Hエスパーだったよ。
0179Delフサギコ ◆A6VzDeLphI NGNG
 ミ,,゚Д゚彡
初心者の場合、作りたいものと、作れるもののギャップに
激しく差があって、なかなかプログラミング意欲が沸きにくいと思うです。

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

ライフゲームとか、作ったことがあるんですが
ネタとしては面白かった yo.
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1022733594
いろんなネタが見つかるといいですね。
0180Delフサギコ ◆A6VzDeLphI NGNG
 ミ,,゚Д゚彡
XPの本では、とりあえずDBやるときでも
最初にファイルでやっといて、後から
データアクセスを担う1関数だけを
ファイルアクセスからDBアクセスに
切り替えたら、いいよね

ってアプローチがいいと紹介されてました。
0181デフォルトの名無しさんNGNG
>>180
その方法だと、Delphiのデータベースコンポーネント使えないんじゃ…
初めからDBでテストすればいいと思います。
ローカルかリモートか程度なら後で変えても苦労しないでしょうが。
0182Delフサギコ ◆A6VzDeLphI NGNG
 ミ゚Д゚;彡・・・3Stringの入出力でラップすれば…
         コンポもクラスなんだし。
0183Delフサギコ ◆A6VzDeLphI NGNG
 ミ;;゚Д゚彡トリップの桁が・・・・・・
0184デフォルトの名無しさんNGNG
トランザクションとかTDBGridとの連携とか色々考えたら、
>データアクセスを担う1関数だけ
なんてわけにはとてもいかず、データベースとの中継を行なうコンポーネントひとつ
作る労力が要るのでは無かろうか?
素直にMyBaseでも使ってればいいじゃん…。
0185Delフサギコ ◆A6VzDeLphI NGNG
 ミ゚Д゚;彡構造化って外捻はあるですか?

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

トラザクとかはそれからでもいいし。
たかが、3Stringにしょっぱから、DB導入ナノ?
ま。どうでも。
0186デフォルトの名無しさんNGNG
そっちこそOOPの概念ありますか?
DBの代わりにファイルアクセスするものを作るにしても、
既存のDBコンポと連携させようとしたら、
TDataSetから派生させて、全メソッドサポートしないと動かないじゃん…。
(まさか、本番も、全データをメモリに読み込んで、書く時も一斉に…ってわけじゃあるまいし)
で、ローカルファイルでテストしたければ、
BDE経由でCSVでも、MyBaseでXMLでも、似たような事はできるので、
わざわざ手間かけて回り道することは無いでしょ?
0187デフォルトの名無しさんNGNG
あふぉやね
0188デフォルトの名無しさんNGNG
あの程度の質問をする人にいきなりDBだなんだを持ち出さなくてよろしい

ムキになるなよ
0189デフォルトの名無しさんNGNG
そうそう。
絶対ドラゴンボールと勘違いしてる。
0190デフォルトの名無しさんNGNG
マウスで選択した範囲を
インデントまたは元に戻すショートカットキーって
なんでしたっけ?
0191デフォルトの名無しさんNGNG
^ku
0192デフォルトの名無しさんNGNG
^ki
0193デフォルトの名無しさんNGNG
某に聞け
0194190NGNG
^sankusuko
0195デフォルトの名無しさんNGNG
そういや、ヘルプのキーボードショートカット一覧って、
キーワード検索で探すしかないの?
目次からではどうやってもたどり着けなかった気がするのだが。
0196デフォルトの名無しさんNGNG
ヘルプファイルをテキストにコンバートすれば一発だよ>195
0197 NGNG
なんか荒れ気味だけど、本人どーした?<ini話の張本人
0198デフォルトの名無しさんNGNG
荒れてるのは不明確な部分を勝手に想像力で埋めちゃってる
おっちょこちょいだけだろ。
0199デフォルトの名無しさんNGNG
オッチョコチョィ萌え〜
0200デフォルトの名無しさんNGNG
●●●●●●●●恒例・「オセロさえ納期内に作れない=OO役立たず 」祭り●●●●●●●
http://pc3.2ch.net/test/read.cgi/tech/1032985885/l50
/|         |  |_____ΦΦΦΦΦΦΦΦΦΦΦ||ΦΦΦ
  |         |  | ̄ ̄ ̄ /|                    ||
  |         |  |   / /|TTTTTT   TTTTTTTTTT||TTTTT
  |        /\ |  /|/|/|^^^^^^ |三三| ^^^^^^^^^^^||^^^^^^^
  |      /  / |// / /|
  |   /  / |_|/|/|/|/|
  |  /  /  |文|/ // /
  |/  /.  _.| ̄|/|/|/         Λ_Λ
/|\/  / /  |/ /           (___)
/|    / /  /ヽ            /〔 非OO 〕〕つ
  |   | ̄|  | |ヽ/l            `/二二ヽ
  |   |  |/| |__|/   Λ_Λ     / /(_)
  |   |/|  |/      ( ´∀`)   (_)    Λ_Λ
  |   |  |/      // /  ^ ̄]゚        (`   )
(省略されました・・全てを読むにはここを押してください)

0201デフォルトの名無しさんNGNG
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;

こういうのって成立しますか?
0202デフォルトの名無しさんNGNG
するよ
0203デフォルトの名無しさんNGNG
( ^▽^)
0204ななしへたぐらま ◆XcB18Bks.Y NGNG
>>190
それぞれ
Ctrl+Shift+I
Ctrl+Shift+U
です.
0205デフォルトの名無しさんNGNG
>>189
ワラタ
0206デフォルトの名無しさんNGNG
LISTBOX等で
Listbox1.DeleteSelected;
をおこなうとフォーカスが線だけの囲み状態になって、例えば
DELキーにレスポンスして連続削除のようなことができないです。
どのようにすれば、プログラム側から動的にリストの項目をセレクト
状態にできるでしょうか?
-----------------------------------------------

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

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

0207デフォルトの名無しさんNGNG
Delphi7で、dcuのみでpasファイルがないユニットをコンパイラが認識しないようなのですが、
同様の症状が出る方はいますか?
0208デフォルトの名無しさんNGNG
>>207
確かめてないけど、他バージョンのdcuを認識しないのは伝統的な仕様だったと思う。
0209無責任だがNGNG
makeファイルもどきがDelphiIDEで出来ないかな?

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

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

複数プロジェクトを作っても2のアプリを実行までは自動で出来ないんで
どうやると効率良いかなというご相談です。
0210デフォルトの名無しさんNGNG
>>208
フリーのコンポーネントの中にはソースの付かないものがあるけど
バージョンが古いともうだめってこと?

だとするとフリーでもソースの付かないコンポーネントは逝ってよしかな
0211デフォルトの名無しさんNGNG
>>210
その通り
0212デルファイの名無しさんNGNG
>>209
普通に考えれば、ツールメニューに$EDNAMEなどを使って登録しておくか、
OpenToolsAPIでIDEの機能として全てを組み込んでしまうか、でしょうね。

後者の場合深くやろうとすればそちらへ労力を割かれそう。
やっと昨日、ずっと引っかかっていた新規プロジェクトをOpenToolsAPIで作る方法を発見…。
0213207NGNG
>>208
回答ありがとうございます。
仕様だったんですか。不便ですね…
0214デフォルトの名無しさんNGNG
>>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すればいいのでは?
そういう話ではない?

0215無責任だがNGNG
>>212
 そうですね。 やっぱりそれしかないかな。

今、3で作るアプリ内で日付を比較して更新する方法を考えました。
更新があったらソースを書き換えて勝手に終了させるようにしてと
0216デフォルトの名無しさんNGNG
カレントプロジェクトのディレクトリの
makefileをmakeするツール登録してるよ。

makeしたけりゃmakeすりゃいいのさ。
0217デフォルトの名無しさんNGNG
初歩的な質問ですが、TActionMainMenuBar にサブメニューを追加する方法がわかりません。
どうすればいいのでしょうか?ヘルプを見ても載っていませんでした。
0218デフォルトの名無しさんNGNG
解決しました。
0219デフォルトの名無しさんNGNG
メモリー上の画像データ(RGB24)を画面に描画するには
どうすればいいんでしょうか?
画像データを1dotづつRGB(R, G, B)からTColorへの変換
して、点を打っていくしかないんでしょうか?
0220デフォルトの名無しさんNGNG
解決しました。
0221無責任だがNGNG
>>216 それもそうですね。 ただついF9押してしまうんで

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

>>219 同じサイズのTBitmapを作って、作ったイメージデータをBitmap.ScanLine先にコピー
 Bitmapは、Imageコンポを画面に貼り付けて Image.Pictureに設定するだけで表示出来るし
 OnPaintイベントで Canvas.Drawメソッドでも表示可能
0222デフォルトの名無しさんNGNG
イベントハンドラ内で長時間ブロックしているとき、
スレッド作ってSynchronizeでApplication.ProcessMessages呼んで
フォームが固まるのを防ぐのって有りかな?
0223デフォルトの名無しさんNGNG
>>222
というか Synchronize って そのProcessMessageで呼ばれるのじゃなかったっけ?
0224デフォルトの名無しさんNGNG
時間がかかる作業のほうをスレッドにするのが定石だと思うが。
0225デフォルトの名無しさんNGNG
スレッド内の処理が完了しないと
他を処理出来ないケースとかって結構あるから、
スレッドにする事で処理速度が落ちる可能性を考えると
スレッドって有効な手段なんだろうか?
とか、昼飯を買いに行きながらよく考える。
0226デフォルトの名無しさんNGNG
型なしファイルでRewrite 手続きを使おうと思い
ヘルプで調べたのですが
procedure Rewrite(var F: File [; Recsize: Word ] );
のRecsizeのところが分かりません。
ヘルプではデータ転送に使われるレコードサイズを指定と書いてあるのですが
これは通常どれくらいの数にすればよいのでしょうか?
デフォルトでは(何も書かなければ)128となっていますが
この設定基準ってなんなんでしょう?
0227デフォルトの名無しさんNGNG
多く取れば転送高速になるかもしれないが、無駄かもしれない
少なければ無駄は無いが、遅くなるかもしれない。

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

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

こんなコトに悩むより、自分で実験してみたらいいと思う
0228デフォルトの名無しさんNGNG
Pascal 覚えはじめは、AsssignFile()/CloseFile() 使ってたけど
いまはほとんど、TStream 系や TStrings 系の LoadFromFile()
や SaveToFile() ですましてる。
0229デフォルトの名無しさんNGNG
AsssignFile() -> AssignFile() な(笑)
0230226NGNG
>>227
インターネットのパケットに似てるのかな?
凄く参考になりました。
そうですね実験してみます。ありがとう。
0231デフォルトの名無しさんNGNG
ガンダムSEED
ドラえもん祭り
サップvsホースト
ゴールデンシアター[マトリックス]
0232ななしへたぐらま ◆XcB18Bks.Y NGNG
>>226
RewriteのRecSizeは書き込みバッファのサイズではなくて,
何バイト単位で書き込むかを指定する値です.
RecSizeには1を指定します.

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

#私も今はRewriteは使わずストリームを使っています.
0233デフォルトの名無しさんNGNG
>>232
>何バイト単位で書き込むかを指定する値です.

あ、そうなんすか。
で、たとえばデフォルトの128バイトの場合、
3バイト書き込んだ時点で、ディスク上のファイルはどうなるの?
0234デフォルトの名無しさんNGNG
>>233
確認してないのであてずっぽうですが、バッファが128byteで
書き込みが3byteの状態って単にバッファにたまっていて
書き込まれていないでしょうね。

そしてバッファがいっぱいになったときとかクローズするときに
全部を書き込むようになっっているはずです。
0235デフォルトの名無しさんNGNG
俺の記憶が正しければ、一回の書き込みでも指定したバイト数書き込んじゃって
いやーんなことになります

ま、やってみりゃわかる。
0236デフォルトの名無しさんNGNG
まあ便利な時もあるよね
最近AssignFile使わないけど
0237デフォルトの名無しさんNGNG
Delphiでマトリックスは作れますか?
0238デフォルトの名無しさんNGNG
>>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 個の実数値の配列を表します。


0239デフォルトの名無しさんNGNG
>>237
Code Centralに逝きたまえ。それが全てだ。
0240デフォルトの名無しさんNGNG
delphiで初めてデータベースを作ろうと思っています。

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

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

私のレベルはなんとか脱初心者レベルではないかと自分では思っています。
0241デフォルトの名無しさんNGNG
脱初心者レベルなら自己解決できます。
良かったですね。
0242デフォルトの名無しさんNGNG
>>221
ありがとうございます。
最初、Bitmap.ScanLine := pDataとか間抜けなことして、読み出し専用
だっつーてんだろ!というコンパイラのツッコミにかなり悩みましたが
やっとこなんとか解決できました。
0243デフォルトの名無しさんNGNG
>>241
脱初心者出来ていなかったようなので初心者に戻ります。
どうかよろしくお願いします。
0244デフォルトの名無しさんNGNG
>>240
Delphi2.0のころの本だとしんどいと思います。そのころじゃBDE(BorlandDatabaseEngine)の
説明しかないんじゃないでしょうか。現在ではDatabaseへのアクセス方法が

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

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

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

脱初心者なら自分にあった本くらい探せるでしょ。
0245デフォルトの名無しさんNGNG
Delphi7.0のアカデミックを買いたいのですが、学生証を要求されるものなのでしょうか?
0246デフォルトの名無しさんNGNG
>>240
データベースの場合、基本の概念を理解していれば応用が楽(と言
うより基本ができていないと何をやってもだめ)なので、本当に身
に着けたいならそこからやるべき。
0247デフォルトの名無しさんNGNG
>> 基本ができていないと何をやってもだめ

なんでもそうかと思うふ
0248デフォルトの名無しさんNGNG
糞詰まんない一般論吐いてる暇があったら
Del&DB本の一冊でも紹介してやりゃいいのに。
0249デフォルトの名無しさんNGNG
> Inprise
未だに隅をつつくなよ。某がかわいそう
0250デフォルトの名無しさんNGNG
>>238-239
ネタニマジレスカコワルイ
0251aponeNGNG
リストビューのアイテムをドラッグアンドドロップでデスクトップに持っていって
ファイルを作成したいんですが、どうすればいいでしょうか?
0252Delフサギコ ◆A6VzDeLphI NGNG

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

>>251むずかすぃかも
とりあえず有名なDragDropコンポーネントをインスコ汁汁汁
0253デフォルトの名無しさんNGNG
逆のエクスプローラからドラッグアンドドロップでリストビューに登録することはできます。
つまりOLEドラッグアンドドロップというものについてなにかポインタを示してほしいわけで。。
0254デフォルトの名無しさんNGNG
>>248
デル厨には一般常識すらないやつが多いのでそこから説かねばなるまい。
0255Delフサギコ ◆A6VzDeLphI NGNG

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

>[Delphi:66170] Re: 教えて下さい
ココみるヨロシ。
0256デフォルトの名無しさんNGNG
>>255
Googleで検索ワードをいろいろ変えてもそのML?の記事が見つからない。。鬱だ。
0257デルファイの名無しさんNGNG
既にあるファイルを扱うのであれば、楽なのはIShellFolder::GetUIObjectOfなのですが…
それにしてもちょっとややこしいです。→PItemIDList周辺
とりあえず「Delphiの神託 シェルプログラミング入門」という本がお薦めです。
0258デフォルトの名無しさんNGNG
http://leed.issp.u-tokyo.ac.jp/~takeuchi/delphi/article/066/066170.html
見つかった。サンクス
0259ねこまNGNG
>>255
それのどこに DropSource があるのですか?
0260ねこまNGNG
ちょっと皮肉っぽかったかな,ごめんなさい.
DropSource delphi で検索かけると見つかるんじゃないかな?
0261デルファイの名無しさんNGNG
ものすごーく簡単に書けば、
SHGetDesktopFolder→ParseDisplayName→GetUIObjectOfでIDataObject取得。
(SHGetMalloc経由で使い終わったPItemIDListは解放)
それと、IDropSourceを実装してDoDragDrop、です。
D&DそのものよりPItemIDList/IDataObjectを得るまでの方がややこしいです。

IDropSourceはたった2メソッド、中身も1行づつかそこらなので
TForm1にでもついでで実装させれば済みます。
(コンポーネントのインストールの方が手間な気がして
その手のコンポーネントを使ったことがない私)
0262デフォルトの名無しさんNGNG
FileName := FileOpen1.Dialog.FileName;
if (FileName = 'aaaaa.txt') then
 (ある動作)

FileNameに「aaaaa.txt」が含まれている時のみに(ある動作)をしたいのですが、
どう書けば良いのでしょうか?
0263デフォルトの名無しさんNGNG
age
0264デフォルトの名無しさんNGNG
>>262
Pos(str1, str2)
0265デフォルトの名無しさん NGNG
>>262
if (FileName = 'aaaaa.txt') then
 (ある動作)
0266デフォルトの名無しさんNGNG
6のpersonalのCD手に入れたんだけど、
ライセンスナンバーを取ろうとして、ログインしても
半分くらいまで読み込んだあと止まってしまって
真っ白なままなんですが、どうしたらいいでしょう。

0267デフォルトの名無しさんNGNG
>>262
if CompareText(ExtractFileName(FileName), 'aaaaa.txt')=0 then
(ある動作)
0268デフォルトの名無しさんNGNG
含まれているという表現から、この中では264がいちばん正しいと思う。
267は aaaaa.txt.txt とかでだめ。
0269デフォルトの名無しさんNGNG
262が正しいと思う
0270デフォルトの名無しさんNGNG
なんか説明しづらいんですが、たとえばフライトシミュレータがあったとします。
タイトル画面(Form1)で機体を選択すると、その機体の操縦席を再現したフォーム(Form2)に切り替わります。

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

・・・というか、もっとスマートな方法があったら教えてください⊃Д`)
0271Delフサギコ ◆A6VzDeLphI NGNG
      /⌒\
     γ彡・ω)ミ
      |ミ,,゚Д゚彡   Form2/Form3/Form4...を
      |(ノ  |つ   各機体にするので
     ヾ|    |     何か問題あるでし?
      ヽ _ノ     
       U"U 
    東京オシャレさん
0272デフォルトの名無しさんNGNG
>>271
unit2.dfmに設計された操縦席が、unit2.pasにプログラムが書いてあるので、
ソースはそのままでフォーム内容だけ自由に置き換えができたらなと思ったんです。
(Form上のパーツの名前は共通にします)

フォームとソースが1:1で対応してるものしか作ったことがないんです・・・。(´・ω・`)
0273Delフサギコ ◆A6VzDeLphI NGNG
      /⌒\
     γ彡・ω)ミ  Formを動的に生成したことはあるでしか?
      |ミ,,゚Д゚彡   
      |(ノ  |つ  Form上に部品のない(最低減必要な部品のある)
     ヾ|    |    TKitaiFormを作って必要なメソッドやフィールドを記述
      ヽ _ノ    
       U"U    で、TKitaiForm1/TKitaiForm2/TKitaiForm3
             などを継承して実装してみらた、どうでかしら。
0274デフォルトの名無しさんNGNG
>>273
助言サンクス・・・Delphiみたいなビジュアルな環境でクラスを作ったことがないので
頭が炸裂してきましたが、頑張ってみますヽ(TДT)ノ
0275Delフサギコ ◆A6VzDeLphI NGNG
新規作成ダイアログで
[Project1]タブのForm1を選んで
Form1から継承したForm2を作ってみるとイイっす
           _____________
   ∧,,∧    /
  ミ,,゚Д゚彡 < 今、試してみたらずいぶん簡単
   U  つ   \
 @ミ  ミ       ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
   ∪''∪ 
0276ななしへたぐらま ◆XcB18Bks.Y NGNG
>>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バイト書き出しています)
0277ななしへたぐらま ◆XcB18Bks.Y NGNG
>>240
DelphiにはDB専門の書籍もあるので
その中から良さそうなのを選んでみると良いかも知れません.

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

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

WideStringとやり取りしたいと思ってます
VCL標準でなかったでしたでしょうか?
0279Delフサギコ ◆A6VzDeLphI NGNG
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1015084410
      /⌒\    
     γ彡・ω)ミ  書評書いてヨシ
      |ミ,,゚Д゚彡   
      |(ノ  |つ   
     ヾ|    |
      ヽ _ノ     
       U"U     
0280デフォルトの名無しさんNGNG
>>276

レス、ありがとう。

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

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


0281Delフサギコ ◆A6VzDeLphI NGNG
 ∫,,,,,,,,,∧,,∧  とりあえずリトルエンヂアだけ
⊂,,,,,,,,,つ,,゚Д゚ミつ ならこんな感じだと思うのですが...ビッグは面倒っす
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;
0282デフォルトの名無しさんNGNG
こんなPanel欲しいです。
Clickされたら色が指定した色に変わり
他のオブジェクトがClickされたらデフォルトの
色に戻る
OnEnter、OnExitとかいろいろ試したんですけど
パネルだとEditとか子に持ってないとイベントが
こないんですよね・・・
どうしたらいいでしょうか?
0283デフォルトの名無しさんNGNG
>>282

OnClick で Panel1.SetFocus;
OnEnter で色を変え
OnExit で色を元に戻す
0284282NGNG
>>283
ありがとうございます
できました。

あとパネル下にフォーカスのないコンポーネント(TSpeedButton)
が貼り付けれていた場合、そのコンポーネントを選択した時にも
パネルの色を変えたいのですがなにかよい方法はありますでしょうか?
0285デフォルトの名無しさんNGNG
>>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;
0286282NGNG
>285
ありがとうございます。できました。

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

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

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

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

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

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

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

Readの場合は(自動/Little強制/Big強制)
Writeの場合は(BomOn/OffとLittle/Big)
こういうフラグでいいだろうか...
0290デフォルトの名無しさんNGNG
>>289
Read で自動っても BOM 無い場合に困るから、Little/Big の指定ができた方がいいんじゃないかなぁ。
BOM 無い場合、例外飛ばしてもいいけど、使い勝手が悪そう。
0291デフォルトの名無しさんNGNG
>>289
ザロゲートって知ってる?
0292デフォルトの名無しさんNGNG
BOM無い場合デフォルトでLittleでいいでしょう
0293デフォルトの名無しさんNGNG
>>287
>本質的に、自分以外のフォーカスのないコントロールをクリックした場合を
>検出するのはできるのかな?
この方法激しく知りたい
0294デフォルトの名無しさんNGNG
ここでザロゲートは関係ないな
0295デフォルトの名無しさんNGNG
>>292
>>本質的に、自分以外のフォーカスのないコントロールをクリックした場合を
>>検出するのはできるのかな?
>この方法激しく知りたい

お手軽方法としては、目的のコンポーネントで TApplicationEvents のインスタンス
を抱え込んで、>>285 と同じことをする、というのは?
0296デフォルトの名無しさんNGNG
>>295

マチガイタ、>>293 ね。
0297デフォルトの名無しさんNGNG
TreeViewでD&DするにはOnDragDropを弄ればいいんですよね?
0298Delフサギコ ◆A6VzDeLphI NGNG
     /⌒\
    γ彡・ω)ミ      / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
     |ミ,, ゚Д゚彡     < できますた。ぷにこーどファイルIO
     | つ_|| ̄ ̄ ̄ | \_____________
   〜ミ,,, ,,|\||Letsノ-ト|
       '\||.======.|  ちょっとがんがったよ。
           ̄ ̄ ̄   もっといいソースが書けたら続けてみてね
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1034090664

ソース置き場では、1に ちょうヴんカキコしちゃだめなの、忘れてた・・・・
0299Delフサギコ ◆A6VzDeLphI NGNG
     /⌒\
    γ彡・ω)ミ      />>290さん ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
     |ミ,, ゚Д゚彡     < きっと満足して板だける、仕様に
     | つ_|| ̄ ̄ ̄ | \__なったのではナカ?ですか__
   〜ミ,,, ,,|\||Letsノ-ト|
       '\||.======.|  読みはLittleとBigは常に指定して
           ̄ ̄ ̄    BOM優先/無視スイッチ
                書きはLittleとBig指定と
                  BOMON/OFFスイッチ漬けます太
0300デフォルトの名無しさんNGNG
フサギコさんに聞きたいんですけど
あなた本当に給料もらってるプログラマなんですか?
0301Delフサギコ ◆A6VzDeLphI NGNG
               __________
       ∧,,∧   / まあ仕事中に
      ミ ,,゚Д゚ミ <  2チャンしてる不良サラリーマソではあるですよ、
    ∬ (し, ミ_と)_ \君ほど、無礼な人じゃないから
   /且       /||   普通に社会生活は営んでるけど。
   || ̄ ̄ ̄ ̄ ̄||
       とか青ってみるです。が、どうでしょうか。
0302Delフサギコ ◆A6VzDeLphI NGNG
            カエリマツ
           ,,,,,,,,,,,,,,,∧,,∧   / す・・すまそん。
         〜′,,,,,,,,,,ミ゚Д゚;彡<  電話で元カノと
          UU"""" U  ⊃  \ 最悪県下厨だったので
    ______      レス即煽り返してしまたです。
   /且       /||     ごめんなさい。ごめんなさい。見逃してください。
   || ̄ ̄ ̄ ̄ ̄||       タイーホしないでください。たった今、個人的に吐き気がするほど
               気分が悪い時刻でした....
            はい、残業代でそこそこ、お金もらってるかもーな
               エセヨみたいな雑用係仕事してますです。最近。が何か?

      そういえばテストコードを書いていないっすね。
0303300NGNG
>>301
ありがとうございました。
生きる勇気がわいてきました。
0304デフォルトの名無しさんNGNG
property hoge: THoge read FHoge write SetHoge;
ってのがあったとして、Create内でhogeを設定する場合
1.SetHoge(lhoge);
2.hoge := lhoge;
どっちが美しいと思います?

私的には2のが美しいと思うんですが、私の周りの人達
に言わせると、1のが美しいそうで・・・・・・
このスレの人達的には、どっちが美しいと思いますか?
0305デフォルトの名無しさんNGNG
>>304

それは明らかに1.
プロパティーは外部向けのインタフェースなので、自分からそれを
設定するのは変。アクセスメソッドを直接よぶのがオーバーヘッド
(わずかですが)がない感じがしてgood
0306デフォルトの名無しさんNGNG
>>305
レスサンクス。
なんとか賛同者を募ろうと画策したんですが、やっぱ駄目ですか?
う〜ん、1の方がやっぱ美しいのかな・・・・・・・
2のが簡素に見えるし、タイプ量も少なくて美しいと思ったんですが

ズレてるのは私の方だったのか・・・・・ショック〜
1派に鞍替えすることにします(´д`;)
0307Delフサギコ ◆A6VzDeLphI NGNG
   ∧,,∧    /おれも(1.)
  ミ,,゚Д゚彡 < (2.)はクラス内でプロパティ代入している
   ミつ つ   \っすよね。それはちょっときれいくないかと。
 @ミ  ミ      
   ∪''∪    
0308Delフサギコ ◆A6VzDeLphI NGNG
   ∧,,∧     /
  ミ;゚Д゚彡  < むしろ、こうすべきかと。
  ミつ  つ   \
AAAは定型処理を手続き化してるとミナシテください

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

construct Create(HogeValue: THoge);
begin
 AAA;
 FHoge := HogeValue;
end;
0309デフォルトの名無しさんNGNG
>>308
関数呼び出しが一つ減って、効率が良いのは分かるんですが・・・・
Createの中にSetHogeの内容が丸々入ってるのは、感覚的には
受け入れ難いんですが・・・・・・
でも、AAAをprotectedに置いて、継承先でoverrideできたりする
と、便利なのかな?
でもでも、だったら寧ろSetHoge自体をoverrideできれば済む様
な気もするし?だんだん深みに嵌っていくなり〜
0310デフォルトの名無しさんNGNG
今、設計時なのか実行時なのか取得できる
メソッドみたいなのってありますか?
0311デフォルトの名無しさんNGNG
>>310
if csDesigning in ComponentState then 設計中です
0312デフォルトの名無しさんNGNG
>>311
おお!ありが�d
0313Delフサギコ ◆A6VzDeLphI NGNG
>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が内部ロジックと考えて、そこを分離してるです。
0314デフォルトの名無しさんNGNG
>>304
断然2.だよ。
FHoge := Value; // 副作用なし
Hoge := Value; // 副作用あり(期待したい)
でいいじゃん。2.はwrite FHoge/SetHogeでコーディングが変わってくるし、
継承したかどうかでも変わってきて無駄な判断を強いられる。
実装の変更にも弱い。

1.派は気分以外で具体的なメリット・デメリットを論じてもらいたい。
>>308は論外。
0315デフォルトの名無しさんNGNG
>>314

なんだか日本語が変。きみの論旨だと1のような
0316デフォルトの名無しさんNGNG
>>314
> メリット・デメリットを論じてもらいたい。

どちらが美しいか、という質問です。
0317デフォルトの名無しさんNGNG
>>314
Hoge := ValueでもSetHoge(Value)でも副作用に関しては変わらない。
寧ろSetHoge(Value)の方が、副作用を期待しているということが明確
になるので、より良いと思うが、どうか?
0318デフォルトの名無しさんNGNG
2。
setter/getter メソッドは明示的に使ってはいけない。としておくと
良いこと有り。
0319デフォルトの名無しさんNGNG
>> 良いこと有り。

たとえば?
0320デフォルトの名無しさんNGNG
>>318 たとえば?2!
0321ななしへたぐらま ◆XcB18Bks.Y NGNG
>>318
ちょっと尻逮鴨.

途中に別なクラスを挟んだときとかに
(VCLでいえばTCustomIniFileとか)
ソースをいじらなくて済みそうですけど….
0322デフォルトの名無しさんNGNG
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#ではアクセサへのアクセスは禁止されてるので
いまさら議論の余地はないんだけどね。
0323デフォルトの名無しさんNGNG
>>322

C# でなくて Delphi についてです。>>304 をよく読むように。
Class2 は Class1 を継承してないので A というプロパティーは
ないし、初期化できるはずもない
0324デフォルトの名無しさんNGNG
>>305
オーバーヘッドは皆無。
hoge:=lhogeはコンパイル時にSetHoge(lhoge)に置き換えられる。
0325デフォルトの名無しさんNGNG
>>320

結論の論拠がその結論であると? 
めちゃくちゃですね。論拠なしってことですね。
それはそれでいいけど。
0326デフォルトの名無しさんNGNG
>>322
う〜ん、なるほど。
それだと、A := 0; B := 0; C := 0;の方が美しいって事なのかな?

て言うか、「C#ではアクセサへのアクセスは禁止されてる」の
理由が気になる。もし、知ってたら教えてお願い。
0327デフォルトの名無しさんNGNG
>>323
そこを揚足とるのは、ちょっと大人気ないと思うぞ(笑
0328デフォルトの名無しさんNGNG
>> hoge:=lhogeはコンパイル時にSetHoge(lhoge)に置き換えられる。

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

では、美しいかどうか、という美的議論だけですね。
はじめからそうですけど。
0329デフォルトの名無しさんNGNG
>>326
というか何のためのプロパティなのかと小一時間問いつめたい。
privateにアクセスできない理由を考えてみよう。それと同じ。
0330デフォルトの名無しさんNGNG
>> privateにアクセスできない理由を考えてみよう。

自分自身はアクセスできますが。
継承した上位クラスが別ユニットになっているときは、プロパティーを
通してしか初期化できませんね。たしかに。
0331デフォルトの名無しさんNGNG
>>329
Delphiでは privateが禁止してるのは同じユニット(同じソースファイル)にあるかどうか
だから
type  Class1 = class ;
type  Class2 = class(Class1);
の2つが同じユニットにあるなら、 privateの意味はなくて裸と同じ
0332Delフサギコ ◆A6VzDeLphI NGNG
             _______________
  ,,,,,,,,,,,,,∧,,∧   /
〜′,,,,,,,ミ,,゚Д゚彡< ヘイルスバーグたんはよく見てるなー
  UU""" U U   \
              ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
>C#ではアクセサへのアクセスは禁止されてるので
>いまさら議論の余地はないんだけどね。
よくここが不要だと見抜けるもんだわさ。

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

>>314 何が論外だよ、頃すぞゴルァ
0333デフォルトの名無しさんNGNG
>> つーかC#ではアクセサへのアクセスは禁止されてるので

じゃ、どうやってプロパティーを定義できるの。アクセサを呼ばずに。
C# しらないんで教えてください。
0334デフォルトの名無しさんNGNG
326>>329
何を言わんとしてるかは、なんとなく理解できたと思う。
要するに、例え内部的に完結してても、極力公開されてる
手段を用いてアクセスする方が好ましいって事かな?
0335デフォルトの名無しさんNGNG
いろいろな意味で低レベルな奴が多いってことだな。Del使いには。
0336デフォルトの名無しさんNGNG
>>333
プロパティの アクセサは
public string Name
{
  get
  {
   return name;
  }
  set
  {
   name = value;
  }
}

のように、書きます。 これでは外部から get/setにアクセス出来ませんね?
0337デフォルトの名無しさんNGNG
>>334
>要するに、例え内部的に完結してても、極力公開されてる
>手段を用いてアクセスする方が好ましいって事かな?

そうか。おれは、コンポーネントがそれ自体で完結している
方が好ましい
0338デフォルトの名無しさんNGNG
>>336
が、が、外部?
いや、そうじゃなくて、今話してるのは、内部的にhoge := lhogeするか
SetHoge(lhoge);するか、どっち美しい?って話なんだけど・・・・・・
君は何処へ行きたいんだ?
0339デフォルトの名無しさんNGNG
>>336

ありがとう。では C# では選択の余地なし、ってことですか。
継承した下位クラスで setter/getter を override するような
ことはできるの?
0340デフォルトの名無しさんNGNG
>>337-338
ダメダコリャ
0341デフォルトの名無しさんNGNG
>>338
 だから、C#のプロパティのアクセサはDelphiと違って メソッドじゃないから呼び出せないんだよ
0342デフォルトの名無しさんNGNG
334>>337
hoge := lhogeだと完結してなくて、SetHoge(lhoge);だと完結してると
言うのも、おかしな話だと思うが?

でも、これって
void hoge(void) {
}
void hoge(void)
{
}
どっちが美しい?って話と同じで、実際はどっちでもいーじゃんて
話かもな(w
0343デフォルトの名無しさんNGNG
>> 実際はどっちでもいーじゃんて話かもな(w

それは質問者 >>304 も知っていて、だから、どっちが美しい、ときているんでは
0344デフォルトの名無しさんNGNG
>>339
下位クラスで
public new string Name // Notice the use of the new modifier

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

隠蔽されたプロパティにアクセスするにはキャストを付けます
inherited に相当するのは、これで実現可
0345デフォルトの名無しさんNGNG
>>341
うげっ!マジで知らんかった。
>>336の表記はそういう意味だったのか、C#全然わからんちん(泣
0346デフォルトの名無しさんNGNG
>> メソッドじゃないから呼び出せないんだよ

なんだ、じゃ、禁止されてる、とかの問題じゃないじゃない
0347デフォルトの名無しさんNGNG
>>344
なんだかエレガントかも?とか思ってしまった俺は洗脳されかけてる?
0348デフォルトの名無しさんNGNG
>>344

再度、ありがとう。C# はまだ文法のところでクラスまでいってない。
継承では、プロパティーごと置き換える(上書きする)感じなのね。
アクセサを override するのとはずいぶん違うんだね
0349デフォルトの名無しさんNGNG
どっちが美しい、とか聞かれてもな。
宗教論争の始まりなんで、>>304は質問を撤回しる。

美しさでなく実際の運用であれば、>>314に同意。
0350デフォルトの名無しさんNGNG
>> 美しさでなく実際の運用であれば、>>314に同意。

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

>>304 の質問内容が理解できないみたいだね。
0353デフォルトの名無しさんNGNG
>>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 が暗黙の
引数でちょっと気持ち悪いところ。
0354デフォルトの名無しさんNGNG
>>352
お前頭悪いね。小学生並みの読解力だな。
>304を字面通りに判断すればどっちでもいいということになるけど、
どっちでもいいのであれば他の面で2の方がメリットが多いといっている。
0355デフォルトの名無しさんNGNG
>354
>304を字面通りに判断すればどっちでもいいということになるけど

いいとか悪いとかを質問してるのではない、ということが分からないのか
0356デフォルトの名無しさんNGNG
議論の流れはもう>304とは関係ないような・・・
0357デフォルトの名無しさんNGNG
>>354 >>355
他でやってくれ。
0358デフォルトの名無しさんNGNG
TClass.hoge と
Class.hoge が別物として扱われるからだと思ってた。
0359デフォルトの名無しさんNGNG
フサギコスレでやったら?

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

property宣言書き換えたら、
全メソッドの内容チェックするのも嫌だし...
0361デフォルトの名無しさんNGNG
>>360
それは逆。
property宣言が書き換えられた時に対応できるのは2.
…って、今までのレス読めよ…。>>314氏が可哀想だ。
0362デフォルトの名無しさんNGNG
> 352とか355みたいな見え見えの煽りに引っかかるなよ。

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

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

質問自体の是非はおいといて、この質問にまともに答えてるのは 305 と
307 だけだよ。314 以降は、何を勘違いしたのか、メリット/デメリットとか
C# との関係とかで、全く見当はずれでしょ。それでそのことを指摘したら
小学生なみの読解力っだてさ。どっちが、と思うのも当然だと思うんだけど。
0363デフォルトの名無しさんNGNG
だからスレの流れを読(略
0364デフォルトの名無しさんNGNG
プログラマの言う美しいは、単なる見た目だけの話ではなく
所謂、機能美までをも含む訳で、メリットやデメリットについ
て語ったとしても、それが的外れって事はないと思うのであ
ります。どうでがんしょ?
0365デフォルトの名無しさんNGNG
このネタ振った奴はさっさと収拾させろ。
0366Delフサギコ ◆A6VzDeLphI NGNG
 ∫,,,,,,,,,∧,,∧  読んだ上で言ってるんだけど… 
⊂,,,,,,,,,つ,,゚Д゚ミつ よく考えてみなよ。>>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でやるのは、ちょっと違う。
0367デフォルトの名無しさんNGNG
継承したクラスで
SetHogeやプロパティを変えたりするのは
どう考えればいいの?
0368デフォルトの名無しさんNGNG
>>366
…。


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

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

自分の普通を一般の普通と思うのはあなたの悪い癖だ。(SJISの時もそう)
私はwrite FHogeは普通に使う。
0369デフォルトの名無しさんNGNG
>>365
ごめんなさい。もう私には収拾不能です。
だって、みんな私より遥かに多くの事を考えてるんだもの。

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

>>367
継承元クラスがどちらを使ってても、継承したクラスからは
何も変わらないと思う。
どちらを選択しても、出てくるコードに変わりはないはずだ
から。
0370デフォルトの名無しさんNGNG
>FHoge := Value: //副作用なし
>SetHoge(Value); //副作用あり
>Hoge := Value; //副作用あるのかないのかPropertyみないとわかんない

FHoge := Value: //副作用なし
SetHoge(Value); //SetメソッドあるのかないのかPropertyみないとわかんない
Hoge := Value; //副作用が必要な時は副作用あり
0371デフォルトの名無しさんNGNG
SetHogeで代入できるかも
Propertyみないとわかんないのでは。
0372デフォルトの名無しさんNGNG
HogeがあるのかないのかもPropertyみないとわかんない。
0373デフォルトの名無しさんNGNG
>Setメソッドを作るか作らないかで迷うなら
>作っておくのが、普通のOO志向だし。

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

setterを使うのはカプセル化のため。
だが、delphiはカプセル化をpropertyで実現できるので、setterが必要ない場合もある。
必要になってから作るのがdelphiの「普通」。
0374デフォルトの名無しさんNGNG
Hoge := Value; でいいでしょ。
外部から呼ばれる時もこうなんだし。
0375デフォルトの名無しさんNGNG
>>371-372
マジレスなのかネタなのか、その辺からハッキリしようじゃないか(w

あるプライベート変数にアクセス可能な関数は、どんな場合も例
外なく1以下である。という俺様ルールの元では、Hoge := Value;
としておいた方が、後でSetHogeやGetHogeを追加する時には便
利。
0376デフォルトの名無しさんNGNG
歴史は繰り返す。
過去に学びたまえ、諸君。
0377デフォルトの名無しさんNGNG
それはセットしたらゲットできないということ?
0378デフォルトの名無しさんNGNG
SetHogeを呼び出したいときにSetHogeを呼び出す。
SetHogeを呼び出したいときにHogeを使ってはいけない。
Hogeは機能を表現しているのであり、どのメソッドで機能を実現するかは隠蔽されている。
「Hogeがどのメソッドで機能を実現するか」に依存したコードは抽象化に問題がある。

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

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

この2つのコードが将来に渡って同じ意味であることは、普通は保証されない。
0379デフォルトの名無しさんNGNG
hoge := lhoge; を使った方が中傷化ができてるんでしょ。
0380デフォルトの名無しさんNGNG
>>378
Hogeにアクセスして問題になるケースを具体的にageて下さい。
0381デフォルトの名無しさんNGNG
>>375
そのルール自体に無理があるだろ?
リードオンリのプライベート変数にアクセスする手段がなくなるぞ。
リードオンリのプライベート変数だけは別ルールなら、それは決
して美しくない。

もっとも、リードオンリのプライベート変数には、プライベート関数
を使ってアクセスする手がある。
この場合、SetHogeに統一しておく方が、全てをSet〜で
統一できるから、君の言う俺様ルールを適用した場合でも
美しいということになる。
0382デフォルトの名無しさんNGNG
コンストラクタでセットするんだから 初期化の為だろ?
なら SetHogeを陰に陽にも呼ばないのが普通では?

たとえばビジュアルなコンポーネントだと SetHogeで大抵Invalidateとか 呼ぶだろ?
コンストラクタでいちいち呼んでたらなんか処理時間が勿体ない気がするしな
0383デフォルトの名無しさんNGNG
副作用が不要な場合のアクセス手段は議論からはずれてるよ。
>>375だってそれは理解しているはず。
0384デフォルトの名無しさんNGNG
FHoge使え。
0385デフォルトの名無しさんNGNG
>>384
 構造化言語的には副作用は別のメソッドを用意しておくべきだな
0386デフォルトの名無しさんNGNG
>>382
それを考えると、>>308は受け入れ易いかも?

>>380
最初はリード&ライトを許可してたが、後で
リードオンリーに変更した場合とか、かな?
0387デフォルトの名無しさんNGNG
>>378は正論だが、誤解を受けやすいと思う。
で、その上で補足しておくと、

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

俺が誤解してたらごめん。
0388デフォルトの名無しさんNGNG
>> たとえばビジュアルなコンポーネントだと SetHogeで大抵Invalidateとか 呼ぶだろ?

プロパティーを通しても SetHoge() 呼ばれますけど。
議論の観点がずれてるような
0389デフォルトの名無しさんNGNG
>>388
だから陰にも陽にも SetHoge()を呼びたくないんだろ?

FHoge := xx; とか初期化したいのを並べておいて
最後に副作用を一挙に呼ぶのが普通では?
0390デフォルトの名無しさんNGNG
>>382
自分的にも賛成なんだけど、
csLoadingやHandleAllocatedで切り分ける、
つまり初期化中かどうかのフラグを用意するのがVCL流っぽい気もする。

自分は、コンストラクタではFHoge、
それ以外は何も考えない時はHoge、副作用があったら困る時のみFHoge、
極希にメソッドとしての一面を利用したい時(多態やindex付きなど)はSetHoge、かな?
0391378NGNG
>>380
「このクラスはHogeプロパティを持っていましたが、クラスのバージョンアップに伴い削除することになりました」
というケース。
SetHoge呼び出しのつもりで使ってると、修正しなくて良かったところまで修正するハメになる。
プロパティは使うなと言ってるわけではない。使い分けが必要だということ。

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

さらに補足しておくと、
メソッド呼び出し、フィールドの変更、プロパティの変更はそれぞれ意味を持っている。
同じ意味であることが多いが、同じ意味であることが保証されるとは限らない。
0392デフォルトの名無しさんNGNG
>>390 csLoading をコンストラクタで使うのはどうだろうか?
 実際のプロパティの設定はコンストラクタの後なんだし
0393デフォルトの名無しさんNGNG
FHoge を初期化したいのと、
SetHoge() を実行すべきか、プロパティーに代入すべきか、
というのは全然別の議論です。

private フィールドの FHoge は、Hoge と同じ型を持っているとは限らないし、
Setter/Getter を持っているプロパティーは、対応するフィールドを持ってな
いこともある。
0394デフォルトの名無しさんNGNG
>>393

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

本来Pascalは同じアルゴリズムが出来るだけ同じコードになるように設計されてたんだから
こういうのは困るね。
0395デフォルトの名無しさんNGNG
>>391
publicなものをそう簡単に変えられては困る。

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

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

>メソッド呼び出し、フィールドの変更、プロパティの変更はそれぞれ意味を持っている。
>同じ意味であることが多いが、同じ意味であることが保証されるとは限らない。
0397デフォルトの名無しさんNGNG
え、propertyってprotectedにできるの?
0398デフォルトの名無しさんNGNG
public propertyに外からアクセスされたくなくなったら
protected propertyにクラスを書き換えればいいってだけの話。
0399デフォルトの名無しさんNGNG
SetHogeを使いたくない奴がひとりだけいるのか?
0400デフォルトの名無しさんNGNG
俺はHogeを使うことにする。
0401デフォルトの名無しさんNGNG
Hogeはやめとけ







Foo, Bar, Bazにしとけ
0402デフォルトの名無しさんNGNG
じゃあ、俺は Wakame にしとく。
0403378NGNG
>>395
あくまでも一例なので。
というより、例が良くなかった。

>>396
前半の意味がよく分からない。
スコープを変更する、というのは盲点だったが、外部からアクセスできないプロパティを持つことが
正しい解決策とは思えない。
また、区別する必要がないのは、求める結果が実現方法に影響されない場合だけ。
Hogeのwriteメソッドは将来変更される可能性があるが、求めるのが結果だけで、
変更されても問題がないならHogeを使っていいし、むしろ使うべき。
SetHogeを使うと実現方法が固定されるので、SetHogeの方法で結果を出さないといけない場合は
こちらを使う。
0404デフォルトの名無しさんNGNG
恥ずかしい議論だ・・・
0405デフォルトの名無しさんNGNG
賢いってどういうことだろう・・・
0406デフォルトの名無しさんNGNG
ある会社(TMyClass)のある部門(Hoge)に頼むとアメリカに連れて行ってくれるとする。
外部の人はHoge部しか知らないので、Hoge部に頼む。
TMyClass社内部の人は、実際に業務を行う課(SetHoge)を知っているので、SetHoge課に直接頼むこともできる。外部の人と同じようにHoge部に頼むことも可能(どちらでも料金は変わらないとする)。

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


というたとえ話はどうだろう。
0407デフォルトの名無しさんNGNG
それはSetHogeを変えないということか?
0408デフォルトの名無しさんNGNG
Hoge:=x とSetHoge(x) は等価という条件なら、どっち書いても美しさに代わりなし

ただし、コンストラクタにそんなもん書くなという結論で
0409デフォルトの名無しさんNGNG
Delphian World でDLしたフリーの複数列コンボボックス(MCCBox12.lzh)
がD7で使えなくなってる、で、現在修正中ですが、
既に俺も使ってるから既に修正したよ!って人がいれば教えてください。
(作者にメールしても良いのかも知れないけど、D3までしか正式に対応して
ないみたいなんで、修正箇所を洗い出してから連絡したいと思います。)
0410デフォルトの名無しさんNGNG
>>409
ちょっと見てみた、無効なポインタってエラーかな?
itemsの部分で出てるみたいだけど、よくわからんね。
0411デフォルトの名無しさんNGNG
Indyを勉強したいのですが、ver9のdemoってどこにあるのですか?
0412デフォルトの名無しさんNGNG
>>411
Indyのdemoのフォルダのにテキストファイルが1つ入ってなかったか?
その中にダウンロード場所が書いてある
0413デフォルトの名無しさんNGNG
VCLでは当然のようにHogeスタイル。
0414デフォルトの名無しさんNGNG
そうか? VCLでは コンストラクタは殆ど FHoge:=xx スタイルのような気がするが?
0415デフォルトの名無しさんNGNG
誰もコンストラクタの話しなんてしてないんだけど?
0416デフォルトの名無しさんNGNG
でるぽいってなんででるぽいっていうの?
0417デフォルトの名無しさんNGNG
>>412
そのテキストファイルに書いてあったところに逝ったんですけど
demoは古いバージョンしか見つかりませんでした。
0418デフォルトの名無しさんNGNG
DelphiよりC#の方が速いって、本当ですか?
0419デフォルトの名無しさんNGNG
DelphiよりC#の方が早漏って、本当ですか?
0420デフォルトの名無しさんNGNG
DelphiよりC#の方が小籠包ですか?
0421デフォルトの名無しさんNGNG
>>418
うそだぴょーん
0422デフォルトの名無しさんNGNG


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

0423デフォルトの名無しさんNGNG
>>422
えらく古い話題だな。
過去ログいろいろ見てみ。ことの顛末がわかるから。
0424デフォルトの名無しさんNGNG
Del厨がいかさまやった挙句負けてたシーンは圧巻であった。
0425デフォルトの名無しさんNGNG
そういうことにしたいんですね:-)
0426デフォルトの名無しさんNGNG
>>424
ショウキ
0427Delフサギコ ◆A6VzDeLphI NGNG
         きのせいか
    .∧∧  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();
}
0428デフォルトの名無しさんNGNG

TTreeViewでドラッグしているとき、マウスカーソルが
ドロップできないところ(たとえばノードのないところ)に
来たときマウスカーソルがTTreeView外に出たときのように
ドロップ不可のカーソルに変えるには
どうしたらいいのですか?
0429Delフサギコ ◆A6VzDeLphI NGNG
C# 仲良し Delphi Round 2
http://pc3.2ch.net/test/read.cgi/tech/1022662451/l50

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

       単にぉぃのコードが悪いでしたか??
0430428NGNG
自己解決しますた。
OnDragOverのAccept := False;ですね・・・
スレの無駄使いスマソ・・・
0431 NGNG
del7はどーなったんか知らないけど、どーして
標準でDirectXが使えるよーにしないのかなぁ?
あとPNG。
0432デフォルトの名無しさんNGNG
>>431
Microsoftが邪魔してるから
0433デフォルトの名無しさんNGNG
ということにしなきゃやってられません。
0434デフォルトの名無しさんNGNG
ということにしなきゃやってられません。
0435デフォルトの名無しさんNGNG
DirectXはDelphiでは需要が少ないからでしょ
0436デルファイの名無しさんNGNG
Borland C++用のインポートライブラリすら付いて来なくなりましたしねえ→DirectX SDK
0437デフォルトの名無しさんNGNG
以前社名変更した辺りから業務系の開発環境としてのDelphi/BCBを前面に
押し出してるからでしょう。
あと、DirectXってC/C++から使う方が楽ですよね、BCBはどーなる?って
話もありますが、.NETが今後拡張されたら、将来追加されるであろう、
DirectX.NET 的なライブラリがDelphi.NETからもスムーズに
使えるようになるかもしれませんね。
0438デフォルトの名無しさんNGNG
プログラミングが始めての人でも、一から無理なく学べるサイトってありますか?
0439デフォルトの名無しさんNGNG
あります。
0440デフォルトの名無しさんNGNG
>>439
キボンヌ
0441デフォルトの名無しさんNGNG
indyを使ってアプリを作ったんですが、他の人にテスト
してもらったところ・・

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

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

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

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

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

原因が解る方がおられましたらご教授お願いします。m(__;)m
windows98 & delphi 6 personal sp2
0442デフォルトの名無しさんNGNG
プロジェクト→オプション→パッケージ→パッケージ再構築
じゃないかな。
0443441NGNG
>>442

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

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

感謝してもしきれないくらい感謝です、ありがとうございました!m(^^)m
0444デフォルトの名無しさんNGNG
しかし、サイズが大きくなる罠。
0445441NGNG
>>444

んん〜、それは仕方が無いですね(^^;A
ユーザーさん一人一人にIndyをインストしてもらうよりは
マシとゆうことで・・(汗
0446デフォルトの名無しさんNGNG
Delphiをインストールするとsystemフォルダに
vclとか入るんだよな。いらんのに。消しても大丈夫かな。
0447デフォルトの名無しさんNGNG
初心者向けのサイト
www2s.biglobe.ne.jp/~hatena/delphi/delfrm.html

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

HATENAさんありがとうございました〜!
0448デルファイの名無しさんNGNG
>>446
IDEが使うので、Delphi32.exeと同じとこに移動すればいいかも?(当てずっぽう)
0449デフォルトの名無しさんNGNG
フォーム上に動的に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;
0450デフォルトの名無しさんNGNG
img.Show;
0451デフォルトの名無しさんNGNG
img.parent := self;
>>446
パケジは特殊なDLLなのでパスが通っていればどこでもよい。
0452デフォルトの名無しさんNGNG
>>450-451
サンクス! parentが必要だったんですね。(´・ω・`)
0453Delフサギコ ◆A6VzDeLphI NGNG
   ∧,,∧     /Indyで
  ミ,,゚Д゚彡  <  時刻同期クライアントを
  ミつ  つ   \作ろうと思いましたがどうやるのでしょうか?
 〜ミ  ミ       
   ∪''∪
Time鯖を動かし
TimeDemoを127.0.0.1指定なら
うまく動くのですが、ほかのサーバーを指定すると
全部えらーになるのです。
設定の仕方とか、わかる方教えてくださいませ。
0454Delフサギコ ◆A6VzDeLphI NGNG
   ∧,,∧     /忘れてました
  ミ,,゚Д゚彡  <  環境はD6ProUp2で
  ミつ  つ   \Time鯖/TimeデモなどはDelphi付属のdemoを
            使っています。
0455デフォルトの名無しさんNGNG
ポート塞いでるとかそういうオチじゃないだろうな?
0456Delフサギコ ◆A6VzDeLphI NGNG
    ∧,,∧  どうでしょう??どこで確認するのでしょうか?
   ミ,,゚Д゚彡   B2AdjustTimePluginは
    ミ つ旦)~~   ちゃんと、
  〜と,,,~),,~) clock.nc.fukuoka-u.ac.jp (Japan/Pacific area)
          ここにつながっているみたいです
0457デフォルトの名無しさんNGNG
ファイアウォールのことだよ。
0458Delフサギコ ◆A6VzDeLphI NGNG
    ∧,,∧    おうちは
   ミ*゚Д゚彡   普通にプロバイダにつなげてる
    ミ つ旦)~~  だけです。
  〜と,,,~),,~)   
0459デフォルトの名無しさんNGNG
他の時刻合わせソフトは使えてる?
0460Delフサギコ ◆A6VzDeLphI NGNG
桜時計に登録されてる
time-nw.nist.gov
   ∧,,∧      / ̄
  ミ*゚∀゚彡  <  ここに設定したらいけました!!
  ミ つ且~~   \鯖指定が悪かったんかな
〜ミ,,,,,, ,,ミ
0461Delフサギコ ◆A6VzDeLphI NGNG
    ∧,,∧∩   / ̄
   ミ*゚∀゚彡 <  ありがとございます。
   ミつ旦 ミ   \
 〜ミ,,,,,, ,,ミ  こんなんで、時刻同期できた。

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;
0462サンクスNGNG
>>447
(・∀・)イイ!
0463デフォルトの名無しさんNGNG
>>456
そこはSNTPの方じゃ?
何でIndyにSNTPServerが無いの?
0464Delフサギコ ◆A6VzDeLphI NGNG
|,,∧   スイマセン、私がわかってなかったようです。
|Д゚彡  
|⊂ミ インディには
| ミ  TIdSNTPはあり
|''U  デモはTIdTimeServer/TIdTimeとか使っていたので
   そのままTIdTime使ってしまいました。

TIdTimeの次のようにHELPに書いてあった・・・
>Time は,ローカルネットワークで時刻を同期させるための
>シンプルなプロトコルです。
>複数のネットワークでさらに精度の高い時刻用プロトコルを
>実現するには,TIdSNTP オブジェクトを使います。
こっちで実装してみます。
0465Delフサギコ ◆A6VzDeLphI NGNG
|,,∧   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;
0466デフォルトの名無しさんNGNG
環境オプションのライブラリパスのところを誤って全て消してしまいました。
コンパイルしようとしたらめちゃくちゃエラーが出てしまいます。

誰かデフォルトで入っているを教えてください。
0467デフォルトの名無しさんNGNG
あげ
0468ねこまNGNG
$(DELPHI)\LIB
デフォルトはこれだけだと思ったけど.
0469デフォルトの名無しさんNGNG
これ?
$(DELPHI)\Lib;$(DELPHI)\Bin;$(DELPHI)\Imports;$(DELPHI)\Projects\Bpl

コンボボックスのドロップダウン部分に残ってそうな気もするけど。
0470デフォルトの名無しさんNGNG
TTreeViewのコントロール内に
TTreeNode.Textが収まりきらないとヒントみたいな感じで表示されるけど
あれを表示させないようにするにはどうしたらよいのでしょうか?
ノードごとにヒントを出そうとしたら、ヒントが2つ出てしまう・・・
0471Delフサギコ ◆A6VzDeLphI NGNG
 ミ,,゚Д゚ミつ ほいな>>466さん
$(DELPHI)\Lib;$(DELPHI)\Bin;$(DELPHI)\Imports;$(DELPHI)\Projects\Bpl
0472デフォルトの名無しさんNGNG
>>468-469,471
助かりました、さんくすです。

でもなぜか

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

。・゚・(ノД`)・゚・。
0473ねこまNGNG
> $(DELPHI)\Lib;$(DELPHI)\Bin;$(DELPHI)\Imports;$(DELPHI)\Projects\Bpl
こんなにあったっけか (w

>[致命的エラー] IdA ...
Indy はデフォルトじゃないからでしょう
IdCoderMIME.pas のあるパスを追加すればよいのです.
0474ねこまNGNG
あ,じゃないのか.
Indy 使ってないからパスです.
0475エラー全文NGNG
[エラー] 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' ユニットはコンパイルできませんでした
0476デフォルトの名無しさんNGNG
.dcuがあるディレクトリにもライブラリパスを通すか、
思い切ってIndyの全.dcuを\Libにコピーするかすればいいのでは。
0477デフォルトの名無しさんNGNG
>>でもなぜか

>>未定義の識別子

未定義の識別子がどうして出るか分からないの?
なんだかなぁ...
0478デフォルトの名無しさんNGNG
>>476-477
良く分からないんですが解決しました。色々さんくすです。

>>477
それは分かるんですが、 Indyに詳しくないもので'TIdEncoder3to4'とかがく分かりませんでした。
(まだ他人のソースを弄ってる程度なので…)
IdEncoder3to4でファイル検索してみたりもしたんですが見つからず…
0479デフォルトの名無しさんNGNG
>>470
var
Style: DWORD;
begin
Style := GetWindowLong(TreeView1.Handle, GWL_STYLE);
Style := Style or TVS_NOTOOLTIPS;
SetWindowLong(TreeView1.Handle, GWL_STYLE, Style);
0480デフォルトの名無しさんNGNG
IndyのTIdIRCをつかてます。
これで鯖に繋いで文字を受信したら文字が化けてるのですが
どうしたらよいでつか?
0481470NGNG
>>479
ありがとうございます。
しかしこの行で
Style := Style or TVS_NOTOOLTIPS;

未定義の識別子: TVS_NOTOOLTIPS

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

とエラーが出てしまいます。。
0482デフォルトの名無しさんNGNG
>481
確認はしてないけど、uses commctrl.pasすればいいのでは?
0483デフォルトの名無しさんNGNG
ちょっとIndyがこのスレで流行ってるみたいだから、Indy9落としてきて入れますた。
すごい数のコンポ群ですね、これ。
で、特定のIPアドレスのマシンにファイルを転送したいんだけど、こんな場合は
ServerとClient側でそれぞれどんなIndyコンポ使うのがいいんでしょうか?
0484470NGNG
>>479
>>482
うおーうまくいった!
ありがとう!ほんとにありがとう。
0485デフォルトの名無しさんNGNG
Indy というよりも Threadに絡んだ問題で少し悩んでいる。
接続中にキャンセルした場合や、アプリが終了する場合などの
通信終了待ちはどう書くのが定型なのだろか?(TIdFtp)
今はQuit呼んで、即Freeしている。
なんとなーく動いているようだが行儀が悪い記述である気がして
すげえ気になってる。誰かアドバイスplz
0486デフォルトの名無しさんNGNG
>>483
そりゃFTPでしょ。File Transfer Protocolってなもんだから。
0487デフォルトの名無しさんNGNG
>>486
単純な脳味噌してるな(藁
0488デフォルトの名無しさんNGNG
>>486
まぁ妥当ではあるけど、コマンドの実装が面倒だから
独自プロトコル使ってもいいんでない?
既存アプリではなく何故自分でファイル転送する必要があるか
483を問い詰めないことには結論は出なさそう
0489timerコンポーネントについてNGNG
Timerコンポーネントのカウントを0から数えなおさせる
ようにするにはどうしたらいいのでしょうか?
こうゆうメソッドがあるのかと思いヘルプを見たり検索
したんですが見当たりません。

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

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

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

解る方がいらっしゃいましたらお願いします。m(__)m
0490デフォルトの名無しさんNGNG
Enabled := False; Enabled := True;
0491timerコンポーネントについてNGNG
>>490

出来ました!!

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

どうもありがとうございました〜m(__)m
0492デフォルトの名無しさんNGNG
>>465
ちゃんとサーバーに接続されてたら取得できるはず
24時間サーバーの時刻調整しているが動いてる
Indyのバージョンが古いとか
0493デフォルトの名無しさんNGNG
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 := 'あいうえお'; とすると、
ちゃんと両方とも 'あい'を返してきます。
0494493NGNG
それで何が納得いかないのかといいますと、

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

文字コードを見てちゃんと判別でもしているのでしょうか?
0495デフォルトの名無しさんNGNG
function LeftStr(const AText: string; const ACount: Integer): string;
begin
Result := Copy(AText, 1, ACount);
end;
0496493NGNG
>>495
Σ(゚Д゚)

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

ってなるんだろう・・・?
0497デフォルトの名無しさんNGNG
ほんとにそんな結果出るか?
ShowMessage(LeftStr('あいうえお',2));
の実行結果はどうなる?
0498デフォルトの名無しさんNGNG
ShowMessage(StrUtils.LeftStr('あいうえお',2));
こっちのが確実か。
0499493NGNG
>>497
やっぱりなります。
StrUtils.LeftStrだと 'あい' , Copy('あいうえお', 1, 2) だと 'あ'

なんでなんでしょうか・・・?
0500デフォルトの名無しさんNGNG
>>493
CopyのCountは文字数というか配列数
0501493NGNG
>>500 なるほど、だからCopyの引数がwidestringの時は挙動が変わるみたいに見えるんですね。

にしても何でCopyを呼ぶだけのLeftStrは違うのやら。
0502Delフサギコ ◆A6VzDeLphI NGNG
             ___________
    ∧,,∧     /
   ミ,,゚Д゚彡 <  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) だと 'あい'
0503495NGNG
俺のはパッチなしのソースだった。すまん。
UP2当てたら確かに>502のソースになった。

しかしUPで関数の挙動を変えてくるとはね。
Borlandの文字列に対するポリシーがよく分からない・・・
0504デフォルトの名無しさんNGNG
作成できるEXEの実行速度の高速性は
C++(VC++)>Delphi
でよろしいですか?
0505Delフサギコ ◆A6VzDeLphI NGNG
>>492さん
|,,∧  レスあんがと
|Д゚彡 D6ProUp2で
|⊂ミ   付属のIndyです。
| ミ    
|''U  何度やってもうまくいきません  
   IndyVerあげなきゃいけないのかな..ウツ
0506ねこまNGNG
StrUtils って,元は Rx Library の rxStrUtils だよね?
なんでこんなクソなもの標準として取り入れたんだろうか……

LeftStr の機能が違うけど
0507デフォルトの名無しさんNGNG
Delphiを0から学べる良いサイト無いですか?
0508Delフサギコ ◆A6VzDeLphI NGNG
> 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;
0509Delフサギコ ◆A6VzDeLphI NGNG
   ∧,,∧    /
  ミ;゚Д゚彡 <  ・・・なんだこりゃ??
   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;
0510デフォルトの名無しさんNGNG
なんだごりゃー
0511Delフサギコ ◆A6VzDeLphI NGNG
   ∧,,∧    / あ、インデントやスペース消えてる...
  ミ;゚Д゚彡 <  すまそ。
   U  つ   \
RxのLeftStrは、文字列とIndexを渡して
Indexが文字列長より小さかったら
そのまま文字列を戻し
Indexが文字列長より大きかったら
文字列に必要な数のスペースを付属してIndexの長さにして
戻すという関数なんだけど・・・

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

ねこまさんには、どの辺りがクソなんでしょうか。
0512デフォルトの名無しさんNGNG
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;

最終更新日時を取得する、プログラムなんですが、操作者側が
取得するプログラムのローカルアドレスを指定できるようにしたいです。
0513デフォルトの名無しさんNGNG
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;
0514ねこまNGNG
わざわざ MakeStr で作った文字列を繋げている所がクソです.
左寄せしたければ SetLength, FillChar & Move で良いのです.

Rx Library は全体がバブリーで,昔から大嫌いです.
"required RX Library"なんて書いてあるコンポーネントは軽蔑します.
Irvine で使われているのが信じられません.はっきしいってガッカリしました.
もちろん既に排除しました.
0515ねこまNGNG
> もちろん既に排除しました
Irvine から RxLib を排除したって事ね.
0516デフォルトの名無しさんNGNG
>>513  あ、D7で試しました 問題ないと思います
0517デフォルトの名無しさんNGNG
スクリーン上に、指定したフォントサイズで文字を表示したいのですが、
文字をスクリーンに描画するにはどうしたらいいんでしょうか?
0518デフォルトの名無しさんNGNG
>>517

スクリーンってなに?
広い意味では、ラベルの文字列だってスクリーン出力だよ。
デスクトップの意味なら、google でコード例がたくさん見つかる
0519デフォルトの名無しさんNGNG
>>518
あ、言葉足らずですみません。デスクトップの意味です。
ググってみたのですが、私の検索条件の設定が悪いためか、
いまいち引っかかりませんでした。コード例があるところ
ご存じでしたら教えていただけませんでしょうか?
0520>>512 OpenしなくてもNGNG
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;
0521デフォルトの名無しさんNGNG
>>519
http://www.google.co.jp/search?q=GetDC(0)%20Delphi&lr=lang_ja
0522512NGNG
>>520
うまく行かないのですが、、
0523Delフサギコ ◆A6VzDeLphI NGNG
           _____________
   ∧,,∧∩  /
  ミ,,゚Д゚彡 < さんくしこ>>513>>516さん!
   U  ミ   \
 @ミ  ミ       ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
   ∪''∪
わかった!、今、Indy9(9.00.10)に変更したらちゃんと日付とれました

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

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

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

Del標準にするにはBinとかLibフォルダに何をいれればいいんだろうか。
0524512NGNG
すいません。出来ました
end.を不覚にも書き忘れてました。
タイトルバーに表示されますけど、ウィンドウで表示はできませんか
0525Delフサギコ ◆A6VzDeLphI NGNG
ちょっとage進行   _____________
   ∧,,∧    /
  ミ,,゚Д゚彡 < 教えてくらさいな
  ミ⊃  ミ⊃  \____________
 〜ミ  ミ
   ∪''∪ ということでお聞きします。
Indy8からIndy9にUpしたいと思いました。

で、D6のデフォルトでIndyにかかわるファイルって
  $(DELPHI)\Source\Indy
の一式と
  $(DELPHI)\Bin\dclIndy60.bpl
  $(DELPHI)\Lib\indy.dcp
  $(DELPHI)\Lib\indy.dcu
この3ファイルだと考えたのですが

これらをIndy9のものに変更するだけではだめなのでしょうか?
0526Delフサギコ ◆A6VzDeLphI NGNG
   ∧,,∧    /ところで、
  ミ゚Д゚,,彡 < Indyコンポーネントはたぶん全部
 ⊂ミ ⊂ミ   \ TIdBaseComponentを継承してるから
  読み出し専用のVersionプロパティで
   Versionを確認することができます。
0527Delフサギコ ◆A6VzDeLphI NGNG
  ∧,,∧
 ミ;゚Д゚ミつ
某マニの
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の問題では?
0528デフォルトの名無しさんNGNG
他板のネタをこっちに持ってくるなよ。
あっちで教えてやればいいだろ。
0529493NGNG
どうもです。495さんやミ,,゚Д゚彡さんやその他の皆さんのおかげで納得が行きました。
LeftStrはWideStringにキャストしてからCopyに渡しているんですね。

>>527のほうにも返答を書き込んでみようかと思ったのですが、
BCB6ってまだUpdatePackありませんよね・・・。
なんで環境によって違うんでしょうね。謎だ。
0530デフォルトの名無しさんNGNG
>>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.
0531デフォルトの名無しさんNGNG
Delphiで透明レイヤーって作れますか?
0532デフォルトの名無しさんNGNG
>>531
おまえにはVBがお似合い
0533デフォルトの名無しさんNGNG
>>532
うるさい。ボケ。教えろ。
0534デフォルトの名無しさんNGNG
>>531
Transparentというプロパティのあるコンポーネントならできるはず
0535デフォルトの名無しさんNGNG
popup Menuコンポーネントについてお聞きしたいのですが
popup MenuのCaptionに名前を登録すると勝手にショート
カットキーらしき表示が追加されてしまいますよね。

例、「 名前(Z) 」

これを「 名前 」だけにするにはどうしたらいいのでしょうか、
どなたか教えて下さい。m(__;)m
0536 NGNG
(´-`)。o ○ (これは「ヘルプ嫁」だなぁ…)
0537535NGNG
>>536

ヘルプ読んでも検索しても解らなかったから聞いたのに・・(TT
私には理解出来ない書き方してあるのかな・・
0538sageNGNG
ヒントだけやる
TPopupMenu のプロパティの最初の方にある
0539535NGNG
>>538

ありがとうございます、もう一度調べ直してみます。 m(__;)m
0540535NGNG
>>538

解決しました!!

読み直してもやっぱり解らなかったのでプロパティを上から
1ずつ試してようやく発見出来ました。(^^;A

AutoHotkeysのヘルプは私にはさっぱり理解出来ませんでした、
これから少しづつ勉強していきます。

ご指導ありがとうございました!m(__)m
0541Delフサギコ ◆A6VzDeLphI NGNG
 ミ,,゚Д゚ミつ
D5かD6か忘れたけどVerUp時
AutoHotkeyが増設されてデフォでTrueだったとき
熟練のDel使いでも何人もが>>535現象に混乱してたので
ヘルプ嫁では通じないです。きっとKitto。

どうでもいいけど、透明レイヤーってなんの事だろかしら。
0542デフォルトの名無しさんNGNG
Msg.messageを文字列に変換する方法がありましたら
教えてくれませんでしょうか?
例えば
Msg.messageがWM_ACTIVATEだったら'WM_ACTIVATE'に
変換するなど・・・
0543デフォルトの名無しさんNGNG
>542
泥臭い方法しかないかと。
windowメッセージだけなら、前に作ったのが家にあるので、帰宅後でいいならアプしますが。
0544デフォルトの名無しさんNGNG
>>542
俺ならヘッダなりヘルプなりからawkとかに流し込んで変換テーブルを作成するけどね。
0545デフォルトの名無しさんNGNG
逆引テーブルみつけた
ttp://www.infoeddy.ne.jp/~tensyo/prog/message.txt
0546542NGNG
>>543
是非うpお願いしたいです。

>>544
やっぱり自作するしかないですかね・・・
せめて列挙型で定義されてればとか思ってみるテスト
0547デフォルトの名無しさんNGNG
>>545
をを!ありがもう(´ー`)
ちょっくら変換テーブル作ってみよ
0548542NGNG
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の仕様なんでしょうかね?
0549ねこまNGNG
なんでわざわざ列挙型にするのか?です.

0550ねこまNGNG
FIELD = VALUE;
が連続しているだけなので,AWK かなんかで
VALUE: Result := 'FIELD';
と変換してしまえば case 文のボディができあがりますがそれではダメなんですか?
0551542NGNG
>>549
すいません書き忘れてました。
最初の質問に関してはもう解決済みです。
ただ列挙型にしたのはテーブル作る他に何かよい方法がないかなーとか
模索してたのです。
そしたら>>548のようなエラーになったのです。
0552デフォルトの名無しさんNGNG
仕事で英語版Windowsで動作するアプリばかり作らされるから、
英語版のDelphi7買おうと思うんだが、日本語版Windowsで
英語版Delphiってちゃんと動く??
0553デフォルトの名無しさんNGNG
>>535
オーナードローでどうぞ。
0554デフォルトの名無しさんNGNG
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.

新しくファイルを作って書き込むのは正常に動くのですが…どこがおかしいのでしょうか?
どなたか教えて下さい。
0555デフォルトの名無しさんNGNG
Resetしろ
0556554NGNG
>>555
解決したような気がします、ありがとうございました。
0557デフォルトの名無しさんNGNG
>>552
むしろ日本語版より正確に動く
0558デフォルトの名無しさんNGNG
>> 正確に動く

なんじゃ?!
0559デフォルトの名無しさんNGNG
>>552
Patchが早い
0560デフォルトの名無しさんNGNG
英語版より1〜2ヶ月遅れででてくるので、英語版に存在する初期不良が
直ってでてくる。BCB6 Sp1 は日本語出荷版に含まれているのだよ > 中村タン
0561デフォルトの名無しさんNGNG
アプリケーション外のキャレットの位置(例えばブラウザなどで掲示板に
書きこっんでいるときのキャレットの位置)を取得するにはどうしたら
良いのでしょうか?
0562デフォルトの名無しさんNGNG
Delphiでファイルを開くときにバイナリエディタで開いたように
表示するにはどうしたらいいですか?
0563Delフサギコ ◆A6VzDeLphI NGNG
 ∫,,,,,,,,,∧,,∧  ノビー
⊂,,,,,,,,,つ,,゚Д゚ミつ
FileStreamで読み出して、バイトごとにみて
16進数で書き出せばいいのかな?>>562
0564562NGNG
>>563
ゲームのセーブデータを編集するようなアプリケーションを
作ろうと思っているのですが、
バイナリエディタのあるアドレスの部分の16進数を
10進数に変換してウィンドウに表示するようなことっていうのは可能ですか?
0565デフォルトの名無しさんNGNG
>564

IntToStr
StrToInt
IntToHex

とか調べればわかるんじゃない?
0566Delフサギコ ◆A6VzDeLphI NGNG
 ∫,,,,,,,,,∧,,∧  マルチポス(しかも2chスレ内で..)やめようね(w
⊂,,,,,,,,,つ,,゚Д゚ミつ
で、もうちょっと他の人に分かるような内容で書いてっ。

そのバイナリエディタ自体を自分で作るの?
それともどっかのバイナリエディタを
改造したいってこと?

簡単なのなら、
クリップボードに入っている16進数表現文字列を
10進に変換すればいいだけじゃない?
0567デフォルトの名無しさんNGNG
ネットワークで、今、接続しているマシンのIPを調べるには どうしたらいいのでしょうか?
また、それを切断するには、どうしたらいいのでしょうか?
0568デフォルトの名無しさんNGNG
1〜10の数を乱数でかぶらないように出すにはどうすればいいの?
0569デフォルトの名無しさんNGNG
配列に入れて一つ抜いて、詰めていってを繰り返す。
0570デフォルトの名無しさんNGNG
>>568
既出したものを配列に保存しておいて、かぶったやつは 無視すればいい。

1から10の並び替えを行うならば、10までの配列をもち、乱数で出た数字と次の乱数で
出た数字の位置の内容を入れ替える。
0571デフォルトの名無しさんNGNG
>>568
列挙はこれかな
http://www.wwlnk.com/boheme/delphi/tips/tec0920.htm

切断は判らない
0572デフォルトの名無しさんNGNG
>>570
それじゃ一様に混ざらない

for i := Low(arr) to High(arr) do
swap(arr[i], arr[random(Low(arr), High(arr))]);
0573デフォルトの名無しさんNGNG
TToolBar.Customizable プロパティを True にすると
ツールバーがカスタマイズ可能になるらしいのですが、
具体的なコーディングが全然わかりません。
別の所で聞いたら、かなり高度な内容らしくどなたからも回答いただけませんでした。
どうかよろしくお願いします。
0574デフォルトの名無しさんNGNG
>>573
高度も何も、ヘルプに書いてある通りにすればできるよ。
コーディング一切なしで。

それとも他に何かしたいのかな?
0575デフォルトの名無しさんNGNG
ドロップを受付るようにするとか?
0576デフォルトの名無しさんNGNG
>>574
カスタマイズ後のツールバーの状態を保存して、次回の起動時に復元したいのですが。
0577デフォルトの名無しさんNGNG
リストビューのレポート表示時に、あるカラムにリストボックスを貼り付けたりとか出来ませんか?
0578デフォルトの名無しさんNGNG
>>577
リストボックス−>ドロップダウンメニューです。すまそ。
0579デフォルトの名無しさんNGNG
質問する前に、ここくらい嫁
http://www.geocities.co.jp/SiliconValley/3657/oshiete.html
0580デフォルトの名無しさんNGNG
努力を放棄している。
情報を開示していない。
答える人間のことを考えていない。
0581Delフサギコ ◆A6VzDeLphI NGNG
環境依存かな?

私の所では、RichEditデモのツールバーを
Customizable:=Trueにして試してみると
一度消してしまったツールボタンを二度と見る事が
出来なかったりして
VCL標準のコーディング一切無しでは
アプリ上使い物にはならないのですが…

 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
    ∧,,∧               VCLアプリのBugBrowserでも
__ミ,,゚Д゚彡,,,,,___.   ∀    Toolbarカスタマイズは。
    ∩,,,,,,,,,,,,,,⊃⊃  |   ┷┳━ 独自実装ですね
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|  ┃
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄   ┻  ListBox部分がListViewだし

>>580、何のこと?

>>577簡単には出来ないと思います。
自分でComboBoxを貼り付けるようにしたら
どうにか出来るのですが。
0582580NGNG
>>581
579の言いたいこと
0583デフォルトの名無しさんNGNG
目インフォ無を常に手前にしたり元に戻したりするのに
最初はFormStyleのfsStayOnTopとfsNormalを使っていたのですが
コレだとプロパティーを変えると画面がちらつくので
検索して下のコードのような常に手前に表示は分かったのですが
元に戻し方が分かりません。。
どなたか元に戻し方を教えて頂けないでしょうか?

SetWindowPos(MainForm.Handle, HWND_TOPMOST, 0, 0, 0, 0,
SWP_NOMOVE or SWP_NOSIZE)
0584デフォルトの名無しさんNGNG
ヘルプ嫁
0585デフォルトの名無しさんNGNG
スマソ・・・
目インフォ無×
メインフォーム○
0586デフォルトの名無しさんNGNG
>>583
英語嫁。
TOPMOSTってとこで常に手前を指定してるのが分かるだろ。
そこでコード保管して想像しろ。
0587583NGNG
>>586
wndNoTopMostにすればいいのでしょうか?
これにしてもうまくいかなかった。。
それとも別の?いちお全部試してみたのですが・・・
0588デフォルトの名無しさんNGNG
(´-`)。o ○ (「初心者ですが」「○○は出来ますか」ってのは
歓迎されないことくらい予想付きそうだけどなぁ…)
0589Delフサギコ ◆A6VzDeLphI NGNG

    ∧,,∧ 。o ○(なら答えなきゃいいのになぁ・・・)
__ミ=(´-`),,,,,___.   ∀
    ∩,,,,,,,,,,,,,,⊃⊃  |   ┷┳━
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|  ┃
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄   ┻
>>574>>579>>584>>586
MLに変えれば、どうかと小一時間
0590デフォルトの名無しさんNGNG
>>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;
0591Delフサギコ ◆A6VzDeLphI NGNG
      /⌒\
     γ彡・ω)ミ Form2でやったら・・・
      |ミ,,゚Д゚彡 
      |(ノ  |つ うまくいかねーんでは?
     ヾ|    |
      ヽ _ノ 
       U"U オレ ハ ヤッタ
           ウマク イカネーン...YO
0592583NGNG
>>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);
0593583NGNG
>>591
ソーナノ・・・
0594Delフサギコ ◆A6VzDeLphI NGNG
   .。○(目インフォ無って書いてあった・・・)
  ∧,,∧ 
 ミ,,, ,彡⊃``;⊃  ダメダメ デ ゴミンナサイ...
  ∩;,,,,,,,,,,,,,,,,,,,;⊃ 
0595デフォルトの名無しさんNGNG
フサギコ最近どうしたんだ?
0596Delフサギコ ◆A6VzDeLphI NGNG
   ∧,,∧フー
  ミ,,゚Д゚彡 ∫
  と  ,,ミつ━
━┳━━┳━┓
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|
以前Form2のfsStayOnTopの件で調べてて
それやると、Form1のFormStyleや最大/最小化と
非常に相性の悪い挙動をするということが
わかっていたんだけど

今回のSetWindowのやり方でも
同じようになるのかどうか、検証したいけど
・・・・・・この時間に家かえってきたら
         そんな時間ないでつ・・・・・・ハァ....
0597デフォルトの名無しさんNGNG
(´-`)。o ○ (グチは控えめに)
0598デフォルトの名無しさんNGNG
>>597
お前もDelスレにスカスカなうんこをなすり付けるのはやめてくれ。
0599デフォルトの名無しさんNGNG
相性の悪いってどういう動き?
0600デフォルトの名無しさんNGNG
598=スカスカなうんこ
0601Delフサギコ ◆A6VzDeLphI NGNG
 ∫,,,,,,,,,∧,,∧  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が行方不明になったかと。
0602デフォルトの名無しさんNGNG
598=601?
0603Delフサギコ ◆A6VzDeLphI NGNG
( )
 ( )   ( )
   ∧=∧ ポゎ〜
   ミ*゚Д゚彡 
| ̄ ̄∪∪ ̄| ちゃうよ>>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の最前面に対応しなかったりするよ。
0604デフォルトの名無しさんNGNG
fsStayOnTop; って、どんなときに使いたいと思うのかなぁ。
なんか、初心者質問みたいで、ほんとにそんなことが必要なのか
よく考えたほうがいいと思うんだけど。
0605デフォルトの名無しさんNGNG
モーダルでフォーム作るときに使う。
これやっておかないと後ろに隠れちゃったりして面倒くさい
0606デフォルトの名無しさんNGNG
逆だったかもしれん・・・
0607デフォルトの名無しさんNGNG
実はメインフォームを最前面に居座らせたい時以外は要らないんだ…
Windows的には、WS_POPUPスタイルでオーナーウィンドウを指定しておけば、
常に特定ウィンドウの前に置いておけるから…
ただ、VCLのフォームはオーナーウィンドウは総てApplication.Handleなので、
Windows標準の動作を利用できず、対策的にダイアログでも最前面表示を使ってるだけなんだ…
0608デフォルトの名無しさんNGNG
>> VCLのフォームはオーナーウィンドウは総てApplication.Handleなので、

デフォルトではそうだね。603 みたいに CreateParams を override すると
オーナーも変更できて、特定の Form の必ず手前には表示できるよ。
0609デフォルトの名無しさんNGNG
OnKeyPressで、キーが押されたら呼び出されるイベントを発生させているのですが、
キーを押してから0.5秒後にイベントを発動させる、もしくはイベント内で
処理を0.5秒待つといったことはできるのでしょうか?

一旦停止するのはそのイベント内の処理だけで、他には影響させたくないのですが・・・。
0610デフォルトの名無しさんNGNG
TTimer使え
0611デフォルトの名無しさんNGNG
>>609
SleepとかいうAPIがあった気がする
0612デフォルトの名無しさんNGNG
>>609
TimeSetEvent
0613デフォルトの名無しさんNGNG
Delphi使いはみんな良いやつだなぁ(しみじみ)
0614デフォルトの名無しさんNGNG
>>613
皮肉ですか?
皮肉ですか?
皮肉ですか?
皮肉ですか?

皮  肉  で  す  か  ー  ?
0615デフォルトの名無しさんNGNG
レスサンクス〜。
>>610 それはちょいと;
>>611 Sleepだとまるごと止まっちゃうんですよね・・・。
>>612 小難しいですが、頑張ってみます。
0616デフォルトの名無しさんNGNG
>615
わけもわからずTimeSetEvent使うと破綻するぞ。素直にTTimerにしとけ。
0617Delフサギコ ◆A6VzDeLphI NGNG
     ∧,,∧        / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
     ミ,, ゚Д゚彡     <  連続で呼び出すと変になるけど...
     〃つ_つ/  ̄ ̄ ̄/\_____________
   〜ミ,,, ,,|\ ./ レ ッ シ /
       '\/.======./
           ̄ ̄ ̄
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;
0618デフォルトの名無しさんNGNG
>>617
だからDelでビジーループ書くなっつーの。
0619無責任だがNGNG
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;
0620デフォルトの名無しさんNGNG
0.5 秒ぐらいなら Sleep() で充分

>>618 「ビジーループ」の意味が間違ってる
0621デフォルトの名無しさんNGNG
どっちにしろ、>>617のコードは、ProcessMessagesの直前に
MsgWaitForMultipleObjectsを入れといた方がいい。
0622デフォルトの名無しさんNGNG
>>619
>動的に作成して、動的に消去すると 時間待ち中に次のクリックが
>あっても大丈夫

これの意味がわかりません。動的に作成するとどんないいことがあるの?
0623デフォルトの名無しさんNGNG
>>622
書いてくれてるじゃん。連打されてもちゃんと全部対応できる。
0624デフォルトの名無しさんNGNG
>>622
 そりゃ 最初のボタンを押して 0.2秒後にもう一度ボタンを押したら

t+0  : ボタンon
t+0.3 :次の ボタンon
t+0.5 :最初のイベント
t+0.8 :次のイベント

ってなるって事でしょ。

他の方法だと 時間内に同じボタンを押すとややこしい事になる
0625デフォルトの名無しさんNGNG
>>616 >>619
あ、なるほど、そうやるのか(゚д゚)!! 参考になります。
0626デフォルトの名無しさんNGNG
>>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;

とするとよいのでは?
0627デフォルトの名無しさんNGNG
TEditコントロールの文字の配置を
右揃えにしたいのですが、
できますか?
0628デフォルトの名無しさんNGNG
626 だが
>>書いてくれてるじゃん。連打されてもちゃんと全部対応できる。

あっ、そうか、むしろ全部対応することが重要なのね。なるほど。
0629デフォルトの名無しさんNGNG
>> むしろ全部対応することが重要なのね。

でも、よく考えてみたら

>>619 の質問
> イベント内で
> 処理を0.5秒待つといったことはできるのでしょうか?

とは、関係ないことですね。
0630デフォルトの名無しさんNGNG
あげ
0631無責任だがNGNG
追加
>>619のコードで Time0r5SecEventのリターン先が 解放した TTimerオブジェクトなんで気持ちが悪い人は
 リターン直前に Abortを投げるといいでしょう

>>627
色々方法はあります。検索 TEDIT + 右寄せで googleで検索するとよいでしょう


0632Delフサギコ ◆A6VzDeLphI NGNG
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
0633デフォルトの名無しさんNGNG
>>631-632
ありがとうございました。
できますた!
0634デフォルトの名無しさんNGNG
>>632
MEMOは一番簡単で
Win95でも使えて
Edit中も右寄せできるから
結構便利
Win95使ってるところもまだ結構あるし
0635デフォルトの名無しさんNGNG
TEDIT も TMEMOも どっちも同じコントロールなんだし
0636Delフサギコ ◆A6VzDeLphI NGNG
            _____________
   ∧,,∧    / Ctrl+EntやCtrl+J
   ミ,,゚Д゚彡 <  でも改行は入力できたり
   ,;゙   ミ     \ するですよ。
 @ミ,,,UUミ       ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
あと、コピペしたらってのも
某のQAでは対応できてないです。
0637デフォルトの名無しさんNGNG
>> リターン先が 解放した TTimerオブジェクトなんで気持ちが悪い人は

非常に気持ち悪い。なぜエラーにならないのか教えてください。
0638デフォルトの名無しさんNGNG
ソース嫁
0639デフォルトの名無しさんNGNG
嫁にもらってもわかんねー
0640デフォルトの名無しさんNGNG
誰もわかんねぇー、みたいね。
テイドひくー >オレモナー
0641デフォルトの名無しさんNGNG
Free したオブジェクトのソースってどこにありますか?
0642デフォルトの名無しさんNGNG
>>641
638 は知っていると思う
0643デフォルトの名無しさんNGNG
お前らほんとに屑ばっかだな
なんで検証しないの?
0644デフォルトの名無しさんNGNG
で、Delphi7ってどうよ?何か「7こんなに(・∀・)イイ!!機能あるぞ!」って
のがあれば教えれ!
0645デフォルトの名無しさんNGNG
>>644
とりあえず.NETに対応したらしい。
つーか、知らんし要らんしDel6でいーじゃん。
0646無責任だがNGNG
解放するのは TTimerの Selfなので、返った先でSelfに触らない事が判っていれば問題ありません
直感的にTTimerでイベントを呼んだ後何か仕事があるようには思えないので、
普通は大丈夫だろうと
0647デフォルトの名無しさんNGNG
>>646

一般的に言って、自分が読んだイベントハンドラの中で自分を Free した場合
例えば

procedure TForm1.Button1Click(Sender: TObject);
begin
Button1.Free;
end;

エラーにならないのは同じ理由ですか?
なぜ、TForm には Release メソッドがあるのかな?
0648デフォルトの名無しさんNGNG
違いまふ
0649デフォルトの名無しさんNGNG
わけわかんね
0650デフォルトの名無しさんNGNG
土日はカキコのレベルが著しく低下するようだね
0651デフォルトの名無しさんNGNG
>>650
わかりやすく説明しろよ
0652デフォルトの名無しさんNGNG
日本語も分からないようだね
0653デフォルトの名無しさんNGNG
D6Personal版を使用しながら勉強中です
同じ処理のTOOLを作ったときに、実行速度に云倍を差が出るのに驚き、
VBからDelphiへの乗換えを検討しています。

Delphi購入にあたって、ひとつ質問があります。
Delphi7日本語版はHELP(Documents)が(6と比較して)弱いと
どっか(関連スレ)で見たんですけど、実際どうなのでしょうか。
0654デフォルトの名無しさんNGNG
>>652
いいから説明しやがれ
0655デフォルトの名無しさんNGNG
>>653
翻訳が出荷に間に合わなかったみたいで、わずか数日後、
日本語訳されたヘルプがBorlandのHPで公開されました。
だから今は大丈夫ですよ。
0656653NGNG
確認してまいりました。ついでに中身も確認しました。
おっしゃる通りのようですね。
丁寧なご回答、ありがとうございます。
0657整数から桁の取り出しNGNG
整数から任意の桁を取り出したいのですがこうゆう関数は
用意されてるのでしょうか? 一応ヘルプで関数1つ1つ
見て回ったのですが見当たりませんでした。

代わりの方法としてRightStrを使ってコードを書いたん
ですが体裁が悪いです。

ご存じの方がいらっしゃいましたら宜しくお願いいたします。
0658デフォルトの名無しさんNGNG
x桁目 = y / (10 の x-1 穣) mod 10 では?
0659デフォルトの名無しさんNGNG
小学生の気持ちで…

123 という かず から 10 の くらい を とりだすには どうしたら いいのだろう?
1 の くらい は いらない ので 10 でわると 12 がのこる。
あとは この かず の ひとけため を とりだせば いいんだ。
ひとけため は 10 で わった あまりが こたえだ!

お粗末でした(汗
0660659NGNG
か、書いているうちに…先を越された…猛烈に恥ずかしいです(顔真っ赤)
0661デフォルトの名無しさんNGNG
>>660
きにすんな
0662657 整数から桁の・・NGNG
>>658-659

お二方とも即レスありがとうございました。
こんな簡単なことだったとは・・・

童心にまで帰らせていただきまして誠に感謝に絶えません。
ご迷惑をおかけしました。

では失礼します。
0663デフォルトの名無しさんNGNG
>>647
イベントの作り方によってはエラーになるよ。
0664デフォルトの名無しさんNGNG
>>659

var
i, i2 : string;
I : Integer;
begin
I := 123;
i := IntToStr(I);
i2 := Copy(i, 2, 1);
end;

こんなかんじ?
0665デフォルトの名無しさんNGNG
TMyAction = class(TAction)作って標準アクションとして登録するのってどうやるの?
0666デフォルトの名無しさんNGNG
多分きっと100万回くらい既出だと思うけど、連想配列のお勧め
コンポーネントってない?
PerlのKeys、Valuesに相当する関数があって、テーブルサイズ
不定のが欲しいんだけど、探すと連想配列自体はちらほら見付
かるんだけど、Valuesに相当する関数がことごとくない。なぜ?
0667デフォルトの名無しさんNGNG
>>666
ない。
Inifiles.THashedStringListとvalues用のTStringList組み合わせて作るしかない。
0668デフォルトの名無しさんNGNG
>>667
やっぱそこら辺へ行きつくしかないのか・・・・・
TStringHashを継承して、Add時に適当なキー値を保存
FindでPPHashItemを取得してNextで手繰っていけば
とりあえず実装自体は可能だけど、なんでこんな面倒
なこと・・・・・
既に完成させてる人は居ないのかな?きっと居るはず
だと思うんだけど、誰か居ませんか〜〜〜〜〜〜?
0669デフォルトの名無しさんNGNG
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を使うのかなと思うのですが・・・
0670デフォルトの名無しさんNGNG
無理。
New ← 273 <-ここ解析して整数273を取得するしかない。
0671デフォルトの名無しさんNGNG
さっそくダウソしてヘルプにそって
テキストエディタを作ろうとしてるんだが、
ActionManagerってコンポーネントが見つからん。
[Additional]ページにあるらしいんだが無い。
超初心者でスマソ。
0672デフォルトの名無しさんNGNG
某よいい加減チュートリアル直してくれよ・・・
0673671NGNG
>>672
何か違ってる所あるのか?
0674デフォルトの名無しさんNGNG
>>673
PersonalでコンパイルできるようにActionManagerつけるか
ActionManagerを使用しないチュートリアル作れって事じゃないかと。

チュートリアルという性格上、入門者が困るような構成は問題あると
思う。 Delphi1の頃はちゃんとしたチュートリアルのマニュアルすら
ついてたのに、バージョンアップするたびに入門者には辛い内容
になってきてるもんなぁ・・

M$の VC++ Standardみたいに、入門版には市販の入門書みたい
のを付属して売るとかすればいいかも
0675671NGNG
PersonalじゃActionManager使えないって事か?
0676669NGNG
>>670

レスありがとうございます。
無理なんですか・・(涙

>整数273を取得するしかない

これは一体??
273を取得すると何か解るのでしょうか?
この数字なら最初から解ってるのですが・・(汗
0677Delフサギコ ◆A6VzDeLphI NGNG
    ∧,,∧  このようにするようです>>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
0678669NGNG
>>677

フサギコさんありがとうございますm(__)m

>HTMLファイルを解析する方法

実はこの方法で取得するアプリを先日作ったのですが、
これをプロのプログラマさんに見せたところ、

「ディレクトリ数を数えるようにすれば重いHTMLソースを
 ダウンロードする必要が無くなる」

と言われてしまったんです。 それでこちらでdelphiでの
詳しい作り方を伺ったわけなんですが・・(^^;A

このプロさんはC言語やperlなどを使ってるようなので
もしかしたら他の言語でしか出来ないことなのかも
知れません。 もしくはいい加減なことを言われて
しまったのか・・(真面目な方なのでまずないとは思いますが..)

ともかくdelphiでは無理と解っただけでも良かったです、
>>670 さん共々、本当にありがとうございました。m(_ _)m
0679デフォルトの名無しさんNGNG
言語の問題じゃなくってディレクトリリストを公開しているかどうかという
WEBサイト側の問題なんだけどね。
で、件のサイトは公開していないからHTMLのリンクを辿るしかないって事。
いっそあるかないかはとりあえず取得してから判断するってのもありかも。
0680ねこまNGNG
>>666
私は D5 しかしらないんでアレですけど,
HashList って当然イタレートはできるんですよね?
全然面倒くさくもないような気がする……
……気がするぐらい……うそ情報の可能性もアリ
0681671NGNG
>>677
サンクス

delphi扱ってるサイト探すか…
0682669NGNG
>>679

ぅは・・ どの言語でもダメってことですか、こりゃ文句
言わなきゃいけませんね!(爆

どうもありがとうございました。(^^;
0683ななしへたぐらま ◆XcB18Bks.Y NGNG
>>674
私もDelphi1から使ってますが
VB2からすんなり移行できた理由の一つに
あのチュートリアルがあったのかもしれません.
0684デフォルトの名無しさんNGNG
最近、delphiでプログラミングを始めました。
何かおすすめの本やサイトはあるでしょうか?
特にネットワークプログラム等に興味があるので、それについてのものが良いです。
0685デフォルトの名無しさんNGNG
(´-`)。o ○ (次スレのタイトルには「パソナル6にはアクションマネージャは
付いて無いよ〜ん」って付けるのはどうか?
そうすれば「>>1 嫁」で済む…)
0686デフォルトの名無しさんNGNG
逆に言うといかにいままで何も蓄積してこなかったかって事だな。
ソースうp版にリンク張ってFAQでもまとめたらどうよ?
0687デフォルトの名無しさんNGNG
>>682
逆にフォルダの一覧が取得できたらセキュリティ上問題がある場合もある
から見せないようにしてるサイトが多いんじゃない?
0688デフォルトの名無しさんNGNG
D7で作成したプログラムがWinXP/2000だと正常に動作するのですが、
Win9x/Meで実行すると落ちてしまいます、
Form自体が表示されないようなので、メッセージボックスを表示する
ようにしてみましたが、フォームのCreateイベントより前に落ちるみたい
です。

Win9x/ME環境にD7の開発環境をインストールしないでデバッグする良い
方法はなにかありませんか?
0689デフォルトの名無しさんNGNG
逐次ログ吐くとか
0690デフォルトの名無しさんNGNG
>>688 D7ならリモートデバッグサーバが附属してるんじゃないの?
0691デフォルトの名無しさんNGNG
そもそもWin9x/Meには非対応です。
0692デフォルトの名無しさんNGNG
>>689-690
今まで使ったことが無かったんで知りませんでした、
教えて頂いたリモートデバッガーを使ってみます。

>>691
Windows98には対応してるみたいですが、
Windows95/MEが非対応ってこと?
0693デフォルトの名無しさんNGNG
TGIFImageがダウンロード出来るところを探しているのですが、誰か知りませんか?
0694693NGNG
補足

Anders Melanderタンが作ったものを探しています。
サイトが消えてるようなので…

http://www.melander.dk/delphi/gifimage/
0695デフォルトの名無しさんNGNG
?
0696デフォルトの名無しさんNGNG
GIFはユニシスのせいで使用禁止になりますた
0697デフォルトの名無しさんNGNG
Delphiはボーランドのせいで使用禁止になりますた(;_;)
0698デフォルトの名無しさんNGNG
SEX
0699デフォルトの名無しさんNGNG
まんこ
0700デフォルトの名無しさんNGNG
まなちゃん・かなちゃんがぬるぬる。ハァハァ
0701デフォルトの名無しさんNGNG
シコシコシコシコシコシコシコシコシコシコシコシコシコシコシコ・・・
ハァハァハァハァハァハァハァハァハァハァハァハァ・・・
デ、デルーーーーーー!!!!
ドピュッピュドピュッピュドックンドックン・・・アー デルーデルデルデルデル アー
ドッピューン ドッピューン
                         フゥ〜

               キモチエダッタ マンゾクマンゾク
0702デフォルトの名無しさんNGNG
>>693
キーワードは揃ってるじゃないか 検索しる
Anders Melander TGIFImage
0703デフォルトの名無しさんNGNG
>>694
URLわかってるならWayBackMachineでいけそうな予感。
0704デフォルトの名無しさんNGNG
ホットゾヌの板一覧にあるような、一行ごとに色をつけれるListViewってどうやるんですか?
0705デフォルトの名無しさんNGNG
od
0706デフォルトの名無しさんNGNG
>>704
ヘルプのオナニードロー見るべし
0707デフォルトの名無しさんNGNG
>>704
マジレスすると、自前で描画する。
0708デフォルトの名無しさんNGNG
(´-`)。o ○ (>>1に「『オナニードロドロ』禁止」も追加。なんで
それで「閃いた━━━━(゚∀゚)━━━━!!!!!!」って思っちゃうんだか?)
0709デルファイの名無しさんNGNG
>>688
win9xシリーズでフォームが開かけないで落ちる現象としては、フレームとか
使ってた場合によくあります。
あと、オブジェクト数が無謀なほど多いとかでもありえるかも。
いづれにせよ、win9xシリーズは既にMSもサポートしてないんで諦めたら?って
のは無謀かな・・・。(でも、winMeもあるし、まだ現役なOSですよね・・・。)
0710デフォルトの名無しさんNGNG
>>709
Win98は来年サポートが切れる。
WinMEはまだ。
それまでの辛抱。
0711デフォルトの名無しさんNGNG
サポート切ったソフトは 自由に使えるみたいな法律出来ないかなあ
0712デフォルトの名無しさんNGNG
アプリケーションが非アクティブになったときに
マウスカーソルを乗せてもヒントは表示されませんが
非アクティブ時でもヒントを表示させる方法は無いでしょうか?
ヒントになるようなことだけでもいいので教えていただけないでしょうか。
0713デフォルトの名無しさんNGNG
>>712
FormMouseMove&HintWindow
0714ねこまNGNG
Melander 氏はどこいっちゃったんだろうね
プログラムやめちゃったのかな?
0715デフォルトの名無しさんNGNG
Delphi6でDirectXを使いたいのですが、どうすれば使えるでしょうか
0716デフォルトの名無しさんNGNG
>>715
・DirectXSDKのヘッダーをDelphi用にコンバートしたユニットを使う
 海外行けば、最新のヘッダーもそろえられる。

・DelphiXを使う
 Delphi6で使うには工夫が必要。
 日本語のサイトでは使えないという表記を見るが嘘(その人がへたれなだけ

・Quadruple Dを使う
 
0717715NGNG
>>716
それらの方法について調べてみました。
へたれの私には一番下の方法しか無理そうですね・・・。
レスありがとうございました
0718デフォルトの名無しさんNGNG
>>708
そんなくだらないの追加するな
0719ななしへたぐらま ◆XcB18Bks.Y NGNG
>>688
usesで参照しているユニットの初期化節(initialization)で例外が発生しているかも.
Runtime Error 216 のダイアログボックスが出たら多分そうです.

>>709
うちもフレームを多用するのですが
(今のプロジェクトでは数十種類以上のフレームを使っています)
一度もこういうエラーになったことがないのは
インスタンスの総数が少ないからでしょうか.
0720712NGNG
>>713
早速検索してみます。ありがとです。
0721PopupMenuコンポNGNG
PopupMenuのメニューを表示してるときに他のアプリを
アクティブにするとメニューが開いた状態で画面に残っ
てしまいます。 他のアプリをもう1クリックすれば
消えるのですが、最初のクリックで消したいです。

ApplicationEventsコンポを使い、アプリが非アクティブに
なったときにPopupMenuを消そうと思ったのですが、popupmenu
を消すメソッドが見当たりません、どうすればいいでしょうか。
0722デルファイの名無しさんNGNG
>>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に持って行った時に
駄目でした。
0723721 PopupMenuコンポNGNG
↑ 大切なことを書き忘れました(汗
  これはタスクにアイコン化してる状態での話です。

  delphiは 6 personal です、宜しくお願いします。(^^;
0724このスレでは448以前のデルファイの名無しさんNGNG
あれ、コテハンが被ってますね…まあ誰でも思いつくか(苦笑

それはさておき、PopupMenuですが、うちでは再現しないなーと思いつつ、前に同じような事があった気も…
おぼろげな記憶で申し訳ありませんが、タスクトレイからPopupMenuを出す前に、
SetForegroundWindow(Application.Handle)を実行してみてください。
0725665NGNG
GUI周りでよく使う処理をカスタムアクションと
してどんどん登録していくとめっちゃ便利そうじゃない?
誰かそういうのたくさん作った人うpしてよ。
0726デフォルトの名無しさんNGNG
>>722
本当だ!うちでも再現しました、
これってボーランドにバグ報告するべき?
0727デフォルトの名無しさんNGNG
RubyとVBの話は飽きた、関係ないんだよ折れには。
0728デフォルトの名無しさんNGNG
自爆?
0729727NGNG
あうあう
0730デフォルトの名無しさんNGNG
>>703
おお!
ミラーサイトが一つ残ってた━━━━(゚∀゚)━━━━!!!!!
Thx!
0731ななしへたぐらま ◆XcB18Bks.Y NGNG
>>722
うちはD5なのですがそういう経験はないです.
コンボボックスは滅多に使わないので気が付かなかっただけかも知れませんが.

いま,コンボボックスを置いたフレームをフォームに5つ置いたプログラムを
XPでコンパイル,Win95で実行したのですが不具合は発生しませんでした.

#ただ,設計時にしばしばCPU使用率が100%になりますね.
 一度プロジェクトを閉じるまで直らない.
0732デフォルトの名無しさんNGNG
Double型を文字列型にしたいのですが、
どうすればできますか?
0733デフォルトの名無しさんNGNG
実数型はFloatToStr、FloatToStrFで変換できるよ
0734デフォルトの名無しさんNGNG
でけた!
ありがとうございました!
チョビチョビわかってきたぁぁぁヒャオウ
0735688NGNG
>>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で実行した場合は正常に動作して
います。

誰か再現するかテストできませんか?
再現するようであれば某に報告しますが?
0736デフォルトの名無しさんNGNG
XP+D7にてコンパイル,98にて実行で再現しました某に密告してください
0737通りすがりNGNG
マジかよDelphiってテストしてあるのか?ポンコ2
0738デフォルトの名無しさんNGNG
>>737 ハァ?
バグが1つ見つかっただけでポンコツですか?
貴方の作るプログラムが如何にバグの無いプログラムか知りませんが、
貴方の使っているWindowsはポンコ1000ですか?
0739デフォルトの名無しさんNGNG
本当は95系のバグだたーりして
・・・って書くとM$厨に噛みつかれそう(w
0740通りすがり(737)NGNG
気を悪くさせてしまったようですねゴメンなさいです
随分単純なバグのように見えたものでつい酷いこと書いてしまいました
0741通りすがり(737)NGNG
>>739
通りすがりな者で、実はdelphiは持っていませんが、VCでもVBでも
そのようなバグが無いことを考えると、95系のバグではないと思いますが
そもそも、以前からのdelphiのバグなのですか?
だとすれば、やはり・・・、いえ言いません(^^;;
0742デフォルトの名無しさんNGNG
>>736
もう日本の某にはバグをバグだと判断し、英語に直しアメリカ本社に伝えるような
部署はないんじゃないの?
オレもいろいろバグ見つけた。
0743デフォルトの名無しさんNGNG
ん?そーいや、バグの報告とかって出来るの?
何処にメールすりゃいいのさ、態々電話したりするの面倒だな。
0744デフォルトの名無しさんNGNG
サポートでもnews groupでもMLでも何でもいいんじゃないの。
0745デフォルトの名無しさんNGNG
そーいや、news groupがあったね忘れてた・・・。
ここは見てないのかな?
0746デフォルトの名無しさんNGNG
ttp://qc.borland.com/
0747デフォルトの名無しさんNGNG
そういえば昔間違いであることを認めたのに
匿名サイト(2chのことね)からの指摘であることを理由に
修正を拒否したアフォ会社あったよ。
もちろん某ではないよ。
0748デフォルトの名無しさんNGNG
>>694
http://delphi.icm.edu.pl/ftp/d20free/gifimage.exe
0749721 PopupMenuコンポNGNG
>>724

コテハン被ってましたか、安直な付け方しすぎでしょうか?(笑

早速コードを加えて実行してみたのですが、タスクにあるアイコンを
右クリックするとPopupMenuが一瞬表示されたあとすぐに消えてしま
いました。(汗

 そこでSetForegroundWindowについて調べたところ、このAPIはOS
ごとに動作が異なるそうです。 ですので複数のOSで実行出来るよう
にするにはかなり苦労することになりそうです。

↓このサイトを参照させて頂きました。
www.systemyou.co.jp/tips/vb/tips3.htm

残念ながら私はプログラムを始めて1年弱の初心者なのでこれを
実現させるスキルがありません。 せっかく教えていただいたの
ですが、アイコン状態でのPopupMenuは使わないようにするしか
ありません、申し訳ないっす。m(__;)m

でもいろいろと勉強させて頂きました、ありがとうございました〜!
0750デフォルトの名無しさんNGNG
Del5使ってますが
ComboBoxもフレームもたくさん使ってますが
Win9x/NTともに動いています
項目に''はやったこと無いかも
CLXがらみでVCLが大幅に変わったのでSOAP以外は未だにDel5を使ってます
切替のタイミングを外したのでずっとそのままです
0751721 PopupMenuコンポNGNG
(>>749 に追加)

SetForegroundWindowの問題の解決法が載ってる
ページを見つけたので貼っておきます。
techtips.belution.com/ja/vc/0012/

言語はdelphiでなくSDKとMFCで書いてあります。(^^;
0752721 PopupMenuコンポNGNG
C言語が解る方でどなたか
techtips.belution.com/ja/vc/0012/
↑ これをdelphiに直してくださいませんでしょうか(汗

変数の宣言くらいなら簡単に直せるのですが・・(^^;
0753デフォルトの名無しさんNGNG
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

0754デフォルトの名無しさんNGNG
>>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;
0755721 PopupMenuコンポNGNG
>>754

ありがとうございます! 大感謝です。m(^^)m
C言語もdelphiも使えるなんてすごすぎです!!

Cの「 & 」はポインタ関連のマークだったんですね、
なるほど〜 φ(・o・;

早速これから色々いじくってみます、
本当にありがとうございました!m(_ _)m
0756デフォルトの名無しさんNGNG
>C言語もdelphiも使えるなんてすごすぎです!!
DelphiをやるならC/C++をある程度読めないとつらい。
0757このスレでは448以前のデルファイの名無しさんNGNG
>>749 あ、コテハンの件はあなたじゃないです。紛らわしくてすみません。

で、PopupMenuですが、メニューの親となるウィンドウが、表示状態かつアクティブでないと
上手く動作しないようです。
前に書いたコードを見直してみたら、次の流れでした。

 ShowWindow(Window, SW_SHOW);
 SetForegroundWindow(Window);
 TrackPopupMenu(..., Window, ...);
 ShowWindow(Window, SW_HIDE);

ここでWindowは、枠線ナシ、サイズゼロで、表示しても実際にはみえないウィンドウハンドルです。
VCLの場合、PopupMenuの親はApplication.Handleだったと思ったので、
先の提案になったのですが、Application.Handleも風変わりな動作をしますから、
自前でAPIを並べてメニューを表示した方が確実かも知れません。
0758デフォルトの名無しさんNGNG
>>756
禿同
0759デフォルトの名無しさんNGNG
>>756 激しく尿意
今時は、言語として C/C++,C#,Java程度は理解してないと仕事にならん
OSも、Windowsの他にもFreeBSDやLinux,Sunの知識は最低限あってほしいし、
IIS/Apache,SendMail/Postfixについても最低限知ってないと苦労するね
DBならMS-SQLserver/Oracle/MySQL/PostgreSQLは必須
うちじゃ、中途採用者はこの条件をクリアしてないと受け入れません。
0760デフォルトの名無しさんNGNG
>>759
分かったから少しもちつけ
0761デフォルトの名無しさんNGNG
>>759
で、qmailは知らないわけだ。
0762デフォルトの名無しさんNGNG
eximも必要だろうとかおもふ
0763デフォルトの名無しさんNGNG
>>762
そこまではいらんだろw
0764デフォルトの名無しさんNGNG
>>759

いや、VBとCOBOL知っていれば何とかなります。
0765デフォルトの名無しさんNGNG
関係ない話ばかり
0766デフォルトの名無しさんNGNG
>>764
君の会社は多分危ない。
0767753NGNG
なんでこの記事読んで、
「Windows, IE, Office がびみょーに関係している」と思うのかねぇ。

0768デフォルトの名無しさんNGNG
>>766
案外そうでもないよ。
地方の企業は単価が信じられないくらい安い。
都内で受けた120/月の仕事を地方に40/月位で丸投げするのは当たり前。
VB屋がいないと大手の半分以上は赤字に転落すると思うよ、マジで。
0769デフォルトの名無しさんNGNG
あなたの身近な特殊例を一般論のように書かれても...

地方の企業の単価が安いことと VB 屋の問題は別だし。
0770デフォルトの名無しさんNGNG
FTPのソフトは、Delphiを買うと サンプルについてるからそれ使えば、便利だぞ。

無理に VBを使う必要なしっ!
0771デフォルトの名無しさんNGNG
この業界入って、何の資格も取らずに40歳までいっちゃうとリストラ対象になるってホントですか?
0772デフォルトの名無しさんNGNG
>>771
だから今、必死で珠算6級にチャレンジしてます!
0773デフォルトの名無しさんNGNG
空手初段とか将棋二段とかではだめですか?
0774デフォルトの名無しさんNGNG
>>773
生活するには4段が最低ラインじゃないかな
0775デフォルトの名無しさんNGNG
Del厨の皆さん、技術スレ荒らさないでこっちでやってください
Delphiって死滅しちゃうの????
http://pc3.2ch.net/test/read.cgi/tech/1035539926/
0776デフォルトの名無しさんNGNG
THintWindowに画像を表示させたいんですがやっぱり無理ですか?
0777デフォルトの名無しさんNGNG
0778デフォルトの名無しさんNGNG
>>776
それ面白そうだね。
動的にTImage生成してくっつけてみたら?
0779無責任だがNGNG
テストコード
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;
0780デフォルトの名無しさんNGNG
キャンバスに直に描き込めばいいやん。
0781デフォルトの名無しさんNGNG
>>778-779
Thxです、やってみます
0782デフォルトの名無しさんNGNG
Indyの解説サイトってある?
0783デフォルトの名無しさんNGNG
俺一度も見かけたこと無いんだけど
0784デフォルトの名無しさんNGNG
>>782 ちょっとした使い方程度ならともかく解説サイトはないな。
indyはVER毎に結構いろいろ変わっているから難しいのだと思われ
後ソースとサンプルとHELPがあれば十分だろ、とかな。
0785デフォルトの名無しさんNGNG
ヘルプってあったっけ?
画像をダウンするコードを書いてみたいんだけど。
0786デフォルトの名無しさんNGNG
最近どっかのDelスレでみたよ。
0787デフォルトの名無しさんNGNG
0788デフォルトの名無しさんNGNG
>>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前に設定
0789788NGNG
引数のMemStrmでエラーになったらTStreamでキャストしてくれ。
0790デフォルトの名無しさんNGNG
開放したほうがよろし?
0791デフォルトの名無しさんNGNG
>>788
>Http1.Request.ProxyServer
>Http1.Request.ProxyPort

ちなみにIndy9の場合は

Http1.ProxyParams.ProxyServer
Http1.ProxyParams.ProxyPort


0792デフォルトの名無しさんNGNG
キャッシュ無しにすることって出来る?
0793デフォルトの名無しさんNGNG
ごめん、↑は便乗質問。>>785とは関係ないよ。
0794デフォルトの名無しさんNGNG
>>790
MemStreamのCreateとFreeは省略してますので、try..finallyでくくって
解放してください。
0795デフォルトの名無しさんNGNG
>>792
できます。

HTTP1.Request.ExtraHeaders.Clear;
HTTP1.Request.ExtraHeaders.Add('Pragma: no-cache'); //常に最新データを取得
0796デフォルトの名無しさんNGNG
>>795
おお、さんくす!
0797788=794NGNG
>>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;
0798デフォルトの名無しさんNGNG
仮想フォルダを作りたいんですが、どうしたらいいんでしょう?
色々調べて、シェルネームスペースエクステンションなどという技術を
使えば出来るのではないかという結論に達したのですが、結局実際に
どうソースを書けばいいのかサッパリです。
どなたかご存知でしたら教えてください。
0799 NGNG
>>798
「仮想フォルダ」ってなんやねん?と思ってググってみたら、1000円の
シェアウェアがヒットしたが、それのことけ?
0800デフォルトの名無しさんNGNG
たぶんコントロールパネルとかのことかと。
0801798NGNG
>>800
その通りです。
デスクトップとか。
0802デフォルトの名無しさんNGNG
標準入力に入力を戻す方法は、API使うやり方以外に何かないかな?
ungetcみたいな関数もないし、全然見当がつかないよ。
0803質問NGNG
コンボボックスで選んだ対象のリストボックスにアイテム追加するのに以下のようなコード書いた。
ヘルプには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;
0804デフォルトの名無しさんNGNG
>>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;
0805デフォルトの名無しさんNGNG
>>802
>標準入力に入力を戻す方法

入力を戻すって、? エコーバックのこと?
0806 NGNG
>>804 激しくありがとうございました
0807デフォルトの名無しさんNGNG
>>805
>>802に出ている通り、Cで言うungetcのようなことができないかと言うことだろ。
0808デフォルトの名無しさんNGNG
http://www.borland.co.jp/qanda/delphi/d0009410.html
このページを参考にタスクトレイにアイコンを登録する動作を
作ってみたんですが、

「プロジェクト」「オプション」「アプリケーション」「アイコンの読み込み」

からアイコンを自分が用意したものに変更して実行してみると
意味不明な黄色いアイコンが表示されてしまいます。
これはDELPHIのバグなんでしょうか?

Form1のIconプロパティやプロジェクトの再構築など考えられる
ことはすべて試してみましたが正常にアイコンが表示されません。

おそらく hIcon := Application.Icon.Handle; この行が
うまく動作してないんだと思うんですがどうでしょうか。
Application.Icon.Handle に自前のアイコンが認識されないのかな?

DELPHI6 PERSONAL + WINDOWS98SE 

0809デフォルトの名無しさんNGNG
>>808
アイコンを変更するだけならそのまま動くはず
D6+Update2+W2kではOK
最近の某はバグ多いが
基本的に初心者は他人を疑う前に自分を疑いましょう
これぐらいのソースならもう一度一から作成するのも手

0810808NGNG
>>809

809さんの環境ではちゃんと動くんですか、確認ありがとう
ございます〜!

ううむ、一体原因はなんだろう、もちろん書き込む前に簡単な
アプリを作って確認したんですが結果は同じでした。

何か私に手落ちがあるのかなぁ・・・
コンパイルの設定もデフォルトのままだし・・
DELPHIパソナルもSP2にしてあるんですが・・
0811デフォルトの名無しさんNGNG
IndyでHTMLソスGETするときに読み出し開始位置の設定出来るけど
読み込み終了位置の設定は出来ないでしょうか。
ContentLength-1000バイトまで読み込むとか。
0812C++使ってますNGNG
2ちゃんのどっかで「C++なんてDelphiとあんま変わらん」って書いてあったけど
確かにちょっと似てるね
初めてみたけど半分くらい意味がわかる
0813デフォルトの名無しさんNGNG
えらい人には(委員長には)それがわからんのですよ。
0814デフォルトの名無しさんNGNG
>>808
アイコンの色数が問題なだけだったりして。
16色より多いものはつぶされるけど、そこんところはどうなんでしょう?
0815デフォルトの名無しさんNGNG
>>811
終了位置の設定はIdHTTP.Request.ContentRangeEnd // IdHTTP: TIdHTTP;
ただし先頭からの位置なので、後ろからの位置を設定したいなら
IdHTTP.Head(URL);
Len := IdHTTP.Response.ContentLength;
とかで対象のContentLengthを取得してからじゃないと無理かも。
あんまり詳しく知らない。
0816808 (解決)NGNG
>>814

ありがとうございます!

早速DELPHI付属のイメージエディタで16色のアイコンを作って
試してみたところ正常に動作しました! 念のため同じエディタで
32色のアイコンを作って試してみたところこれでも動作しました。

私が使ってたアイコンはPIXAで作った32×32の画像を.ico形式で
保存したモノだったんですが、どうやらこのアイコンが原因だった
みたいです。 →タスクトレイにアイコン化したときだけ使えない。

>>809さんのおっしゃる通り私に落ち度があったようです、
お騒がせしてすみません〜
0817811NGNG
>>815

どうやら「後ろから何文字まで」と指定してリクエストすることは
出来ないようですね。 これが出来ればダウンロードする時間の
短縮になるんですが。(^^; HTTP1.2から導入してくれないかな。

仕方ないのでcopy関数とContentLengthを使って後ろをカットして
使うことにします、どうもありがとうございました。
0818デフォルトの名無しさんNGNG
コンポーネントの追加について教えて頂きたいのですが。
まず、ABそれぞれのコンポーネントがあったとして、最初にAのコンポをインストールします。
次にBのコンポをインストールすると、Aのコンポがメニューから消えてしまうのです。
パッケージファイルの保存場所が悪いのでしょうか?
追加していく形でコンポをインストールできないものでしょうか?
どうすればいいのか、どなたかご教授ください。
0819デフォルトの名無しさんNGNG
>>818
A,Bは同じ名前?
0820デフォルトの名無しさんNGNG
たとえば、hoge := Timage.createとかでTimageを作るとします。

このとき、Timageが何もPictureを持っていないときは hoge = nil と思いこんでいたのですが(間違い)、
そもそも Object = nil とは何を意味するのでしょうか。

createしたモノを無で指定するということは、消えてしまうということ・・・?
それとも、そのオブジェクトは何もデータを保持していませんYOということなんでしょうか。
0821デフォルトの名無しさんNGNG
>>820
TImageはPictureの実体そのものではなく入れ物だと考えればいいでしょう。
つまり、中身が無くても入れ物があるという事です。

それと同じようにObject型も 実体ではなく 実体の位置を記録したものです。
実体のことをインスタンスと言います。
Createは実体を作り、それをどこに作ったかを教えてくれます。それを記録するのがObject型です。

つまり Object=nil とは その記録が空だという事で、実体があるかどうかに無関係です。
0822デフォルトの名無しさんNGNG
>>821
なるほど、hoge = nil の状態でプロパティを読んだら AccessViolation になったのですが、
実体がないから参照のしようがないという意味だったんですね。

ありがとうございます、オブジェクト指向ってわかってくると面白いですね。
0823822NGNG
あ、実体がない・・・じゃない、中身がないんですね。ちょっと混乱してました(汗
0824818NGNG
>>819
いえ、まったく違うコンポです
0825デフォルトの名無しさんNGNG
X30って発売後、ヨドバシでその場で買えますか?予約必要?
0826 NGNG
>>818
あー。あるある。オレも不思議に思ってた。
embeddedwbコンポーネントで、それなる。
なんでだろう?
0827デフォルトの名無しさんNGNG
なったこと無いなぁ
EmbededWB でもならない
0828デフォルトの名無しさんNGNG
>>818
同梱されてusesされてるファイルの名前がインストール済みのコンポーネントのと
同じだったりとかは?
同じ名前のファイルが有ると上手くいかなかった気がする。
0829デフォルトの名無しさんNGNG
>まず、ABそれぞれのコンポーネントがあったとして、最初にAのコンポをインストールします。
>次にBのコンポをインストールすると、Aのコンポがメニューから消えてしまうのです。

パッケージを追加するごとに、追加および削除されるコンポーネント名が
表示されるはずだけど、そこに出てくる名前は、意図している物かな?
0830818NGNG
>>828
それはないです。どんなコンポでも>>818のような症状が出るんです。

>>829
はい。
Aをインストールしたら「Aがインストールされました」
その後Bをインストールすると「Aが削除されました」「Bをインストールしました」
とダイアログが出ます。
0831デフォルトの名無しさんNGNG
毎回新規パッケージを作って登録してるとか?
0832デフォルトの名無しさんNGNG
Delphi は糞!
0833デフォルトの名無しさんNGNG
>>832
なにをいまさら。
0834デフォルトの名無しさんNGNG
StringReplaceって処理遅い?
0835デフォルトの名無しさんNGNG
メチャ重いよ。特に長い文字列でより長い文字列に何度も置き換える場合が。
0836デフォルトの名無しさんNGNG
ふーん。
Borland, TogetherSoft 買収だって。
(http://www.togethersoft.com/news/archive/2002/press_releases/103002.jsp)
金はあまり余っているからなぁ。
0837デフォルトの名無しさんNGNG
>>836
TogetherCCをJBuilderに統合するつもりかな?
0838デフォルトの名無しさんNGNG
談話室に書いたつもりだったんだが、相談室だった。
それに、JBuilder の方に書いたほうが良かったかな。
0839818NGNG
>>831
一回一回パッケージファイルの保存場所を聞かれて、そのたび別の所に保存しているのですが…
なにか間違っているのでしょうか?
0840デフォルトの名無しさんNGNG
Delphi6/CBuilder6 Professional 版で TXMLDocument を使う方法

http://codecentral.borland.com/codecentral/ccweb.exe/listing?id=18939
0841829NGNG
>Aをインストールしたら「Aがインストールされました」
>その後Bをインストールすると「Aが削除されました」「Bをインストールしました」
>とダイアログが出ます。

「Aが削除されました」って出ているんだからそのとおりのことが起きたんだな。

コンポーネントAを含むパッケージとコンポーネントBを含むパッケージの名前が
同じと見た。

一つのパッケージに複数のコンポーネントを収めることができるのだよ。
逆に一つの環境には同一の名前のパッケージは一つしかインストールできない。

コンポーネントではなくパッケージの名前を再確認してみて。
なんだったらパッケージの名前(なんとか.dpk または .bpl)を教えて。
0842Delフサギコ ◆A6VzDeLphI NGNG
 ミ,,゚Д゚ミつ
  ドゾ
Seventh Delphi
http://kakinotane.s7.xrea.com/Download/dl_pack.html
0843818NGNG
>>841
dpkの拡張子のファイルは、すべてPackage1.dpkという名前でした。
bplは見つかりませんでした。

>>842
ひとつひとつ追加していくと追加していった順にコンポが消えていってしまうんです…。
0844デフォルトの名無しさんNGNG
>>841
やっぱり同じ 名前の DPK だったんだね。
ファイル名を替えてパッケージ名もそれにあわせて変えていったらいいと思うよ
Delphiで開いて保存する時に名前を変えたら自動的にパッケージ名も変わる
あるいは、そのファイルは、テキストエディタで編集出来るしね。

0845818NGNG
>>844
変えてみました。
これからはコンポを追加するたびこうやってみます。
みなさんありがとうございました。
0846デフォルトの名無しさんNGNG
>>845
コンポを一つ追加する都度 DPKを作ってると、管理が大変だと思う。
一つの DPKに複数入るから、せめて一つのプロジェクト毎にするとか
0847デフォルトの名無しさんNGNG
まぁ、こういったライブラリ管理の問題は正解ないし。
自分で失敗して覚えていかなきゃいけないところかな。

ただ、異なるものに同じ名前を付けて問題を起こして、その原因を類推できない。
ってのはデバッグ能力(推論能力)に大きな問題があると思う。

もしプログラマを目指しているのなら、もう少し論理的に推論する癖をつけたほうが
良いかと。論理だけでもダメなんだけどね。
0848デフォルトの名無しさんNGNG
コンポーネントを複数含んでこその「パッケージ」だと思うが・・・
0849デフォルトの名無しさんNGNG
Delphiってなんか見てるだけで素晴らしいものってオーラを感じますよね。
0850デフォルトの名無しさんNGNG
Delphi再インストールで解決!!
0851デフォルトの名無しさんNGNG
Delphiはテンプレートが無いから糞
0852デフォルトの名無しさんNGNG
delphiでプログラミング始めようと思うんですけど、入門書はどれがいいですかね。
http://www.amazon.co.jp/exec/obidos/search-handle-form/250-3051098-3293062
教えてください
0853デフォルトの名無しさんNGNG
Delphiプログラミングバイブルは、素人にはおすすめできない。
0854デフォルトの名無しさんNGNG
>>852
入門書は、入門って言っても個人差があるから、見てから買うのが一番いいよ。
近所に書店が無いなら、アマゾンで注文して、必要無ければ1ヶ月以内に返品すればいい。
0855デフォルトの名無しさんNGNG
あ、ただ、高価な本はビニルパックされるかもしれない。
これされると返品し辛いんだよね。
0856デフォルトの名無しさんNGNG
テキストファイルの中で始まりと終わりを変数に代入して
そのふたつの変数の間にある文字列を全て取得する、ということがやりたいんですがどうすればいいでしょうか?
0857デフォルトの名無しさんNGNG
わけわかめ
0858デフォルトの名無しさんNGNG
>>846
始まりと終わりは 位置? 位置ならn1,n2として copy( s ,n1,n2-n1);   もしバイト単位でなく
 文字単位 ならWideStringに代入して

そうでないなら もっと詳しく
0859デフォルトの名無しさんNGNG
>>857-858
すいません、書き方が足らなかったです

例えば
0123456789
と書いているテキストファイルの中で
Start := 2
end := 7
と代入し、その変数の間の数字…「234567」を取得したいんです。
どう書けばいいんでしょうか?
0860デフォルトの名無しさんNGNG
copy(s, start, end - start +1);

宿題だろうから、この程度で止めとく。
0861デフォルトの名無しさんNGNG
>>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 で保存して プロジェクトに追加
0862デフォルトの名無しさんNGNG
>>860
それをヒントになんとかやってみます。

>>861
はい、文字です。
使ってみます。ありがとうございました。
0863デフォルトの名無しさんNGNG
>>852
近所に大きな書店があるなら>>854が言うとおり実物を見て選ぶ。

近所に書店がないならとりあえずこれ勧めとく。
http://www.shuwasystem.co.jp/cgi-bin/detail.cgi?isbn=4-7980-0251-8
0864デフォルトの名無しさんNGNG
>>852
本から入ろうとする奴はたいていものにならない。
やる気があったら本なんて必要ないもん。
本なんて壁にぶちあたったときに調べればいい。
とにかくWebでも参考にしながら、がむしゃらに何か
作ってみる。これが最短コース。
0865デフォルトの名無しさんNGNG
月曜までにDelphiを極めないといけないらしいので、
私の場合は本で覚えています。Webサイトは持ち歩けないからな!
0866デフォルトの名無しさんNGNG
そうか?
俺はいつも持ち歩いてるぞ。
0867852NGNG
みなさんサンクス
0868デフォルトの名無しさんNGNG
>>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冊目を買うってね。
俺は学校に置いてたから色々読みながらできたけど。
0869デフォルトの名無しさんNGNG
Bitmapの描画を行うコンポーネントがあるのですが、これをFormに配置してその中で
ガンガン描画させると当然のようにちらつきました(連続して描画する必要があるんです)。
そこで、バッファ(裏画面?)を用意して描画しようと思ったのですが・・・。

幸い、このコンポーネントにはCanvasを指定して自分の中身を転送するというメソッドがあったのですが、
隠れて1回描画を行うごとに→Form上のCanvasに転送する、を繰り返せばいいのでしょうか?

0870デフォルトの名無しさんNGNG
座右の銘を間違って使ってるような。
座右の書?
0871デフォルトの名無しさんNGNG
>>869
 パネルの上にそのコンポを置いて、パネルのDoubleBuffer:=True;ではダメ?
0872デフォルトの名無しさんNGNG
>>871 そ、そんな便利なモノがっ・・・。(゚Д゚)
パネルを透明にしてその上に乗せるだけで良いのでしょうか・・・試してみます。
0873デフォルトの名無しさんNGNG
また一人アルゴリズムを知らない奴が増えたっと。
0874デフォルトの名無しさん NGNG
>>868
Delphi 久しぶりだ。
謎の全知師は健在なんだね。懐かすい。

NiftyForumでボコボコにされて追い出された伊藤は元気かな。
0875デフォルトの名無しさんNGNG
いまいち構造体とかクラスとかオブジェクトの使い道が分からないです。
どういうとき使用すれば効率よくなるかが検討つきません。
delphiを覚えるために簡単なリネームソフトとか作製してみたのですが
今の処理の流れは
1.フォルダ内のファイルパスをTStringListにいれてソート
2.ユーザが設定した新しいファイル名を取得
3.新しいファイル名に置換え
です。
リネームソフトなどでは、どういう処理時に使用したらいいのでしょうか?
0876デフォルトの名無しさんNGNG
継承も再利用性も必要ない部分にはクラスは必要ない。
データをまとめて管理する必要が無いところに構造体の出番は無い。

まず、動くコードを書けるようにすること。
次第に効率よくかけるようになるよ。
最初から、うまい人と同じにかけると思っちゃいけない。
0877875NGNG
何回も更新してやっとレスがついた。うれしい^

>>876 ははぁリネームソフトには使うべきところが無いということですね
では、このまま進んでいきます

勉強用にいろんな物どんどん作って行きたいのだけど、なかなか作りたくなる
目標になるソフトって見つからないものですね
リネームソフトをとことん効率よいコードにしていきます

ところでmp3プレイヤーとかは構造体必要ないですか?必要なさげですね
0878デフォルトの名無しさんNGNG
中学生かな?高校生かな?

リネームソフト。といっても、Delphi RTL/VCL の中では構造体もクラスも
腐るほど使われているわけで。
再利用性を前提としたクラスの継承への考慮と、関連データの集中管理を目的と
した構造体の利用がおこなわれている。

だから、おまえさんのアプリケーションがクラスも構造体も使っていない。と思っちゃいけないわけだ。

ってことで、元質問は、自分でクラス/構造体を定義するべきですか?って質問なんだろうけど、
答えは「そんなの自分で決めろ」なんだな。

mp3 の物理ファイル名と楽曲名を同時に管理しようと考えたときに、何かひらめくかもね。
0879875NGNG
男子高校生です 嘘ですすまない

>>答えは「そんなの自分で決めろ」なんだな。
そうですその通りです 後で読み返すと私もそう思います

ただwebの解説等を読んでると「構造体」という文字が異様に出てきて
こりゃぁ構造体をつかわないけねえ、と少し焦りフライングです

0880デフォルトの名無しさんNGNG
あせるな。マイペース。
0881デフォルトの名無しさんNGNG
>>879
とりあえず、メソッドとか関数くらいは使うでしょ?
その引数とかをそのまま構造体にしてみる所から使ってみたら?

構造体なら関数の帰り値にも出来るから、関数で結果を返す時とかに使ってみるとかさ
0882デフォルトの名無しさんNGNG
>>879
構造体は、Delphiでは「レコード」と言います。
0883デフォルトの名無しさんNGNG
ついでにヘルプより。
----
レコードは,ほかの言語では構造体とも呼ばれ,複数の型を持つ要素の集合を表します。
各要素はフィールドと呼ばれ,レコード型の宣言では各フィールドの名前と型を指定します。
0884デフォルトの名無しさんNGNG
objectを実質廃止したのが某の敗因だな。
C#ではしっかり復活してるし。
0885デフォルトの名無しさんNGNG
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;
0886デフォルトの名無しさんNGNG
同じ型の二つの構造体A,Bがある時、
この二つが同じかどうかを比較するにはどうすればいいでしょう?
この構造体には20個以上のメンバがあります。
0887デフォルトの名無しさんNGNG
CompareMem で比較するか 型をVariantにするか
0888デフォルトの名無しさんNGNG
>>886
stringがないことを祈る
0889デフォルトの名無しさんNGNG
>>886
自動でやるのは無理。
オブジェクトや文字列は単純には比較できないし
メンバ以外のゴミが入ってることもあるし
表現が違うけど意味的に同じこともありうるし。
なので自前でメソッド書いて全部比較。
メンバにクラスや構造体があれば再帰的にそれも比較。
0890デフォルトの名無しさんNGNG
DelphiスレでVC++用語使うなよ。
0891デフォルトの名無しさんNGNG
>>889 に同じく。宣言部の = record 〜 → = class に変更して
Equal メソッドを付けて、20メンバ分ゴリゴリ比較。

ていうか。Assiginや Equal を実装すると、いつも単純作業に辟易する
(そしてメンバを追加したときよく忘れる)んだが
お前ら、解決方法があるなら教えて下さい。タノム
クラスの内部情報からメンバを取得できるらしい事を聞いた事が
あるんだが、あるいはその方法で楽ができる、のか?
0892デフォルトの名無しさんNGNG
>>891
published propertyを列挙して個々の型情報を取得できるから
比較・代入の自動化は可能だとは思うけど
オブジェクトを保持するプロパティをdeep・shallowのどちらで
扱うべきかという判断が毎回必要なので汎用化は難しいのでは。
0893デフォルトの名無しさんNGNG
どこまで同じなら同値と見なすかはそのクラス次第だしね。
0894Delフサギコ ◆A6VzDeLphI NGNG
Recordにメソッドが欲しい
季節ですね。

 ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄
   ∧,,∧   
  ミ,, ゚Д゚彡 
   〃つ旦O
 〜ミ,,[ ̄ ̄ ̄.]
      ̄ ̄ ̄
0895デフォルトの名無しさんNGNG
もしかして、 Delphi7でobjectはなくなったの?
まじかよ・・・
0896デフォルトの名無しさんNGNG
>>895 無くなってないようだけど?
0897デフォルトの名無しさんNGNG
なんだ、フサギコが変なこというから勘違いしたじゃねーか
0898Delフサギコ ◆A6VzDeLphI NGNG
D8.NET対応で・・・

いや、俺もよく知らんし・・・

 ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄
   ∧,,∧   
  ミ;゚Д゚彡 
   〃つ旦O
 〜ミ,,[ ̄ ̄ ̄.]
      ̄ ̄ ̄
0899デフォルトの名無しさんNGNG
Delphiと関係ないのでsageで。

大抵のアプリのメインメニューやポップアップメニューのキャプションには、
「...」が後ろにくっついてるやつが混じってるけど、これって何の意味?

なんとなく、ダイアログが表示されるやつかな?とか思うんだけど、
デスクトップでの右クリックのプロパティにはついてないし・・・。

むかーし、どっかでその話を読んだ記憶があるんだけどまったく思い出せず、
小一時間調べたけど全くわかりませんでした.誰か教えてください・・・.
ソースもあるとトテモ嬉しいです.
0900デフォルトの名無しさんNGNG
>>899
一度でその機能に到達しない場合は..じゃなかったけ?
例えば「印刷」なら即印刷が始まって、「印刷...」なら何か
プロパティ画面が出てきてから印刷とか…
漏れはそう解釈してるけど。
0901デフォルトの名無しさんNGNG
確かそうだったと思う
0902899NGNG
>900, 901

なるほど、サンクス!
しかし、手元のフリーソフトとかみると全部ちゃんとついてる。
これってもしかして知ってないと恥ずかしいようなこと?

うちの会社の同僚2人は気づきもしなかったと言っていた・・・鬱

でも、バージョン情報についてる奴とついてない奴とあるあたり、
微妙に解釈が間違ってるのもあるなあ・・・。
0903デフォルトの名無しさんNGNG
>>899
モーダルダイアログ出るやつじゃなかったっけ?
0904デフォルトの名無しさんNGNG
>903

M$製のアプリは全部バージョン情報にはついてないから違うっぽい
0905デフォルトの名無しさんNGNG
*.zip内部のファイル名を列挙して特定のファイルのみを
ストリームとしてメモリ上に読み出すことはできますか?

WindowsXPだと*.zip;*.cabを仮想フォルダのように扱ってますが
こっちの方法は可能ですか?
0906デフォルトの名無しさんNGNG
>>905
一度ファイルに落とさないといけないかもしれないけど、これどうよ?
ttp://home1.infonia.ne.jp/~delphian/delphi/compo/miscella.html#MI0001
0907デフォルトの名無しさんNGNG
900超えたから次スレ立てようかな
0908デフォルトの名無しさんNGNG
>>907
DelphiスレとC++スレ多すぎるんだからちょっとは統合考えてくれよな。
0909デフォルトの名無しさんNGNG
どうせフサギコが性懲りも無く立てちまうからこちらはいらないんじゃない?
住み分けも明確でないし。
0910デフォルトの名無しさんNGNG
モナーやらフサギコやらは、その意味不明な名前からして、
一般人(非2ちゃんネラ)には敷居が高いかと。

実際は、モナーの方はこっちのスレのスタンスに非常に近いようですが。
0911デフォルトの名無しさんNGNG
こっちが本刷れなんだがなぁ。
相談室と談話室の2つだけあればいいんだけど。
0912デフォルトの名無しさんNGNG
あるソフトが吐き出し続けている巨大なログファイルを横から覗き見して
特定のキーワードだけを抜き出すプログラムを作りたいのですが、
他のプログラムが使用中のファイルなので簡単に開けないのと、
他のプログラムが停止している状態でも、ログファイルが5M〜30Mと
大きすぎて開くのに時間がかかりすぎて悩んでます。

何か良い回避策は無いでしょうか。
0913デフォルトの名無しさんNGNG
>>912
Cygwin+grep

>他のプログラムが使用中のファイルなので簡単に開けないのと、
読み取りすら禁止してるんなら無理。
0914デフォルトの名無しさんNGNG
>>912
ログファイルのファイル名は指定出来るの? 出来るなら名前付パイプを作って
相手にそのパイプに吐かせる方法が使えるかもしれない。
0915デフォルトの名無しさんNGNG
>>912
そのあるソフトにパッチをあてて、読込禁止を外してしまえばどう?
0916デフォルトの名無しさんNGNG
そのプログラムが排他アクセスを指定しているんでしょ?

ログファイル名を変更可能なら、別プロセスにリダイレクトすることは簡単だけど。
ほとんどの場合、プログラムが自分で吐き出しているものをトラップするのは「容易」ではない。


ただし、裏技として、ダミーデバイスドライバを押し込む技法に近いものが存在する。
けど、ゴミも拾ったりするからめんどいよ?
0917デフォルトの名無しさんNGNG
原則匿名なんだし、使う人が価値を決めるシステムなんだから
「こっちが本スレ」とか言うのって馬鹿みたいだよ。

Delphi スレは(実質)3スレしかないんだし。中傷スレまでいちいち気にしていられんでしょ?
0918デフォルトの名無しさんNGNG
>>917
そんなことはみんなわかってるんだから、いちいちイワンでよろしい
0919デフォルトの名無しさんNGNG
3スレもあんのかよ。減らせって。
0920デフォルトの名無しさんNGNG
じゃあ、0.3スレに
0921デフォルトの名無しさんNGNG
そんなに減らせって言うなら統一スレ立てろよ。
過去ログへのリンクもちゃんと書けな。
0922922NGNG
Indyを使いGETメソッドでHTMLソースを取得するアプリを作ったのですが
何故か取得先のページが存在しないにも関わらずEIdHTTPProtocolExceptionの
例外が発生しません。 この原因が解る方いらっしゃらないでしょうか..

<詳細>
・ 簡単なアプリを作って試してみるとちゃんと例外が発生します。
・ 本命のアプリはデバック時でも例外が出ません。
・ IdHTTP1がデフォルトの状態でも例外は出ません。
・ EIdHTTPProtocolException発生時の例外処理は書いてありますが
   まったく実行されません。(例外が発生しないので)
・ 取得先のページが無いことは確認済みです、URLも再確認しました。
   簡単なアプリにも同じURLを使いましたが例外は出ました。
・ 簡単なアプリと本命アプリには同じIdHTTP.PASを使いました。
・ 環境 : DELPHI 6 PERSONAL SP2 & Indy9

もし原因に心当たりがあるという方はよろしければお聞かせ下さい(^^;
例外が出ないようにするプロパティでもあるのでしょうか..(汗
0923デフォルトの名無しさんNGNG
>>921
お前が立てろ。
0924デフォルトの名無しさんNGNG
TTreeViewでAutoExpandをTrueにしているとき
OnMouseDownで展開縮小するのではなく
OnMouseUpで展開縮小するようにしたいのですが
どうすれば良いのでしょうか?
0925デフォルトの名無しさんNGNG
くだらない言い争いしてなんか得るもんありますか?
長い歴史の末に3つのスレで落ち着いてるんだからこの状態が
最善に近いと考えて良いのではないでしょうか。
(100%(・∀・)イイ!とは言いませんが)
0926デフォルトの名無しさんNGNG
>>925
そして今3つもスレがあるのは多すぎるという意見がでた。
つまり最善ではないということだ。
この状態は落ち着いているとはいえない。
さらに良くなるきっかけである。
0927デフォルトの名無しさんNGNG
>>926
いいから立てたいなら立てろよ。
0928デフォルトの名無しさんNGNG
立てなくてももうすぐこのスレ終わるから
次スレのタイトルに「統一」とか入れたらいいんじゃないの?
「モナーとかフサギコは使わないで」と書くとかこのスレに誘導するとか。
0929925NGNG
>>926

さらに良くしてくれるのは大歓迎です。 しかしその話題で
このスレを占領状態にされると困りますので新スレを立てて
そこで話し合ったらいかがでしょう。 他の2スレの方々
の目にも止まりますしここを汚さなくて済みますし。
0930デフォルトの名無しさんNGNG
>>929
糞スレ立てさせるなよ。
0931デフォルトの名無しさんNGNG
>>922
とりあえず、Indy はソースがあるんだから、デバッガで追っかけてみたら?
例外が出るソースを使って、期待する例外を送出している場所を特定し、
そこにブレークポイントを貼って、ターゲットアプリを実行。
0932922NGNG
>>931

ありがとうございます、時間をかけてじっくりと試してみようと
思います。
0933デフォルトの名無しさんNGNG
   ∧_∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ( ´Д` )< Delphiの質問はここで!
 /,  /    \___________
(ぃ9  |ヽ(`Д´)ノ< 質問待ってるよウワァン
/   ∧_二二つ
0934デフォルトの名無しさんNGNG
ギコでもモナーでもいいぞ。
どうせ回答する人は全部見て回っているからな。
スレッド内は一次元の構造だから、正直、複数スレがあるほうがコメントしやすいし
読みやすいと思うぞ
0935ななしへたぐらま ◆XcB18Bks.Y NGNG
>>912
後者については
文字列変数に直接丸ごと読み込むと速くなります.

目的のデータが何行目にあるかを知りたい場合は
自分で解析しなければなりませんが,
それでも文字列リストに読み込むよりかなり速いです.
(自宅と職場のPCでしか試していませんが.
 この方法は昔,パソコン通信のログビューワーを作ったときに使いました)

最大30MB程度ということなので
かなりメモリが多くないと一度にすべてを読み込めないかもしれません.
一気読みがだめなら部分的に読み込みながら検索することになると思います.
0936デフォルトの名無しさんNGNG
delphiのTQueryコンポーネントを使って
パラドックスのテーブルのバイナリ型のフィールドにバイナリデータを書き込むにはどうしたら良いでしょうか?
宜しくおながいします。

delphi6を使っています。
0937デフォルトの名無しさんNGNG
>>894
object使え。
0938936NGNG
>>936の質問はちょっと違うかも・・。

Query1.ParamByName('blob_data').Asblob := UCHAR_data;

この式の右辺はUCHAR型なのでエラーになります。
かと言ってinttostr(UCHAR_data)とやっても
実行すると”式中の型が一致しません”となります。

どうすれば良いのでしょうか?
0939デフォルトの名無しさんNGNG
SetDataめそっど。
0940デフォルトの名無しさんNGNG
>>935
全部メモリに読み込む必要ないだろ。
while not Eof(f) do Readln(f, s)
で十分
0941デフォルトの名無しさんNGNG
http://pc3.2ch.net/test/read.cgi/tech/1028906179/680n
0942デフォルトの名無しさんNGNG
912っす。レスありがとうっす。

>>913
ごめん、CygwinはUnix使えないもんで分かんない。

>>914
名前付きパイプってどうやってやるんでしょ?

>>935
えっ?Stringsにこんな巨大なサイズのファイル開けるのでしょうか?
もう一つですが、でかいファイルの部分読みはどのようにやるのでしょう?

今まではログファイルの更新をトリガにしてログファイルを開いて目的のキーワードを探す、
あるいは最後の行まで移動する間にログの更新が入って・・・
の無限ループが多いでした。
ファイルサイズが小さいと問題ないのですが。
0943デフォルトの名無しさんNGNG
メモリマップファイル使え
0944デフォルトの名無しさんNGNG
912っす。気付いていなかった。

>>940
肝心な巨大ファイルの途中からの開き方を知らないのでちょっと訳ワカメなのですが
ファイルのsから最後までを読込めって意味でしょか。
0945デフォルトの名無しさんNGNG
tail使え
0946ねこまNGNG
>>943 に1票
0947デフォルトの名無しさんNGNG
>>944
Delphiにはファイルについていくつかの扱い方があるから困るんだよね。
途中から読む方法は
 TStreamならPositionプロパティ
 system.入出力ルーチン なら Seek/FilePos
 APIならSetFilePointer
0948914NGNG
名前つきパイプは 95では使えないが、
http://www.google.co.jp/search?q=CreateNamedPipe&lr=lang_ja

使う側はファイル名として
\\.\pipe\pipename
という感じのファイル名を渡せないといけない。
0949936NGNG
>>939
Query1.ParamByName('data').SetBlobData( p, size );
としても
'式中の型が一致しません'
になりますた。
0950ななしへたぐらま ◆XcB18Bks.Y NGNG
>>942
ログファイルの更新というのはたいてい行の追加だと思うので
更新のたびにログの先頭から読み込むのは効率が悪そうですね.
以下は実際に試していないのですが….

ログファイルの更新時には位置から読み込み・解析を始めるのではなくて
「さらに読み込む必要があるぞ」というフラグを立てるだけにして,
作業中の読み込み・解析が終わったら
続きの読み込み・解析をするようにすればよいかもしれません.

文字列リストのLoadFromFileだと途中から読み込むことができないので
ファイルストリーム(TFileStream)で開いて
文字列リストのLoadFromStreamで読み込むようにしてはどうでしょうか.
ファイルストリームは読み込み位置を覚えているので
追加の読み込みも同じようにLoadFromStreamでできると思います.
0951デフォルトの名無しさんNGNG
だ か ら いいかげんスレッド切るのやめてよみにくいったらありゃしない
0952デフォルトの名無しさんNGNG
951はネットニュースからですか?
0953デフォルトの名無しさんNGNG
MLの話だろ
0954デフォルトの名無しさんNGNG
Delphi6でこんな面白いソフトができちゃった!

 http://hp.vector.co.jp/authors/VA031513/
0955デフォルトの名無しさんNGNG
>954
いろんなところに貼り付けているようだが
意図は何だ?
0956デフォルトの名無しさんNGNG
・宣伝のため
・荒らさせるため
・Delphiを陥れるため
0957デフォルトの名無しさんNGNG
日本語版のDelphi7パッチってまだ出ないの?
0958デフォルトの名無しさんNGNG
おそらく怨恨
0959デフォルトの名無しさんNGNG
>>957
もうでてるけど?
0960デフォルトの名無しさんNGNG
Delphiってフリーなのでしゅか?
どこへ行けば手に入るのでしょうか?
ソフマップでやたら高い金額がついていたのはどうしてなのでせうか?
いい本があったらいただきたいのですが?
0961デフォルトの名無しさんNGNG
Personalがフリーで入手できます
以下のサイトへどうぞ
http://www.borland.co.jp/
0962デフォルトの名無しさんNGNG
912っす。
メモリマップファイルとTFileStream、両方試してみたら
後者が速かった。
みんな、ありがとね。
0963デフォルトの名無しさんNGNG
>>960
プログラミングのソフトはそんなもん。
安いのはダンピングしているM$の学割だけ。
0964デフォルトの名無しさんNGNG
タイトルバー非表示ってどうやればできますか?
0965デフォルトの名無しさんNGNG
>>964
CreateParams メソッドでスタイルを変更する。
0966デフォルトの名無しさんNGNG
>>965
時に、964はネタなのだろうか(藁
ネタなら、そのレスが一番だけど。
0967デフォルトの名無しさんNGNG
ネタじゃないっす
0968デフォルトの名無しさんNGNG
ネタじゃないコース→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→↓
                                       ↓
                                       ↓
                                       ↓
                                       ↓
                                       ↓
                                       ↓
                                       ↓
                                       ↓
                                       ヘルプ嫁  
0969修正(藁NGNG
ネタじゃないコース→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→↓
                                                       ↓
                                                       ↓
                                                       ↓
                                                       ↓
                                                       ↓
                                                       ↓
                                                       ↓
                                                       ↓
                                                      ヘルプ嫁  
0970965NGNG
一応、まじめに答えたつもりなんだけど・・・。
0971デフォルトの名無しさんNGNG
>>970
procedure TForm1.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
Params.Style := WS_POPUP or WS_THICKFRAME;
end;

これやるとウィンドウが左上に固定したりして動かせない…
0972デフォルトの名無しさんNGNG
>971 WM_MOVEを自前処理はキホソ。
0973デフォルトの名無しさんNGNG
>>972
う…、出なおしてきます
0974検索しような。NGNG
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
0975972NGNG
>>974
う…、出なおしてきます
0976デフォルトの名無しさんNGNG
うっ… 出ちゃいました…。
0977デフォルトの名無しさんNGNG
こんなにたくさん
0978デフォルトの名無しさんNGNG
D7にて
ListViewからドラッグを行う場合に、スタイルがvsReportだと
ドラッグ中に該当する1行が丸ごとドラッグされるアイコンの横に
表示されてしまいますが、ドラッグ中は先頭の1項目目だけを
表示させる方法が解りません、良い方法があれば教えて下さいませ。

(エクスプローラでフォルダを一覧表示させてドラッグした場合には
ファイル名だけがドラッグ中に表示されているのと同じイメージ)
0979ねこまNGNG
OLE DD
0980デフォルトの名無しさんNGNG
フォームのBorderStyleをbsDialogにする以外で、左上のアイコンを
表示しないようにする方法ってあるんでしょうか?

サイズ変更可能で、左上にアイコンは表示せず、でも右のXボタンは
表示したいんですけど、CreateParamsをオーバーライドしていろいろいじくっても
うまくいかないんです.
0981デフォルトの名無しさんNGNG
次すれ(屮゚Д゚)屮 カモーン
0982デフォルトの名無しさんNGNG
そこのけ、そこのけ。 愉快なソフトのお通りだ〜い! by Delphi

 http://hp.vector.co.jp/authors/VA031513/
0983デフォルトの名無しさんNGNG
>>980
透明なアイコンを作t
0984デフォルトの名無しさんNGNG
記念パピコV(^o^)V
0985デフォルトの名無しさんNGNG
記念熊ん子V(^o^)V
0986もう答えるスペース無いけど(藁NGNG
>>980
>フォームのBorderStyleをbsDialogにする以外で
↑これの理由次第だと思うのだが。
なんでそれじゃダメなのか。
0987デフォルトの名無しさんNGNG
http://webpro.jp/tips/detail.php3?arg_tcd=1&arg_tno=14
これやって フォームの「エディタで表示」(ALT+F12)すると
日本語文字が化けて元に戻すと文字が消えてしまいませんか?

俺だけ?
0988デフォルトの名無しさんNGNG
新スレです

Delphi相談室その8
http://pc3.2ch.net/test/read.cgi/tech/1037146781/
0989デフォルトの名無しさんNGNG
>>987
Tips とは移り変わるもの。過去ログに縛られないよう。
あなめあなめ
0990デフォルトの名無しさんNGNG
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| 閑散としてきたな。
\___ _____________
      |/
      ∧ ∧    ∧,,∧
      (,,゚Д゚) .目.ミ゚Д゚ ミ
     (|   |)  || (ミ  ミ)
    〜|   |   ||  ミ  ミ〜
      ∪ ∪  .||  ∪ ∪
           /|
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| そろそろ埋めなかなわん。
\__________________
0991デフォルトの名無しさんNGNG
991
0992デフォルトの名無しさんNGNG
992
0993デフォルトの名無しさんNGNG
993

0994デフォルトの名無しさんNGNG
994


0995デフォルトの名無しさんNGNG
995




0996デフォルトの名無しさんNGNG
そろそろ誰かこないか?
0997デフォルトの名無しさんNGNG
まだこないみたいだな
0998デフォルトの名無しさんNGNG
どうよ、埋めないの?


0999デフォルトの名無しさんNGNG
999
1000デフォルトの名無しさんNGNG
1000ゲト
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。