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

くだすれDelphi(超初心者用)その15

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさんNGNG
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが、
お礼はDelphiの布教と初心者の救済をお願いします。

<前スレ>
くだすれDelphi(超初心者用)その14
http://pc5.2ch.net/test/read.cgi/tech/1085239007/

<関連スレ>
Delphi相談室(中級者以上)その12
http://pc5.2ch.net/test/read.cgi/tech/1064420818/
【ドキュメント】Delphi8 for .NET 2【どこ?】
http://pc5.2ch.net/test/read.cgi/tech/1078695271/

<その他>
ボーランド
http://www.borland.co.jp/
DelWiki
http://onigiri.s3.xrea.com:8080/delphi/
0002デフォルトの名無しさんNGNG
<過去ログ>
13 http://pc5.2ch.net/test/read.cgi/tech/1081003641/
12 http://pc5.2ch.net/test/read.cgi/tech/1076610073/
11 http://pc2.2ch.net/test/read.cgi/tech/1074523803/
10 http://pc2.2ch.net/test/read.cgi/tech/1074523803/
09 http://pc2.2ch.net/test/read.cgi/tech/1071294733/
08 http://pc2.2ch.net/tech/kako/1068/10682/1068201045.html
07 http://pc2.2ch.net/tech/kako/1065/10651/1065195699.html
06 http://pc2.2ch.net/tech/kako/1063/10632/1063202727.html
05 http://pc2.2ch.net/tech/kako/1061/10610/1061090908.html
04 http://pc2.2ch.net/tech/kako/1058/10588/1058834815.html
03 http://pc2.2ch.net/tech/kako/1055/10559/1055986736.html
02 http://pc2.2ch.net/tech/kako/1053/10537/1053757982.html
01 http://pc2.2ch.net/tech/kako/1051/10518/1051882835.html
0003デフォルトの名無しさんNGNG
3GETするのも面倒
0004Delフサギコ ◆A6VzDeLphI NGNG
     ∧,,∧,,,,,, )      (´⌒(´
  ⊂ミ゚Д゚⊂,,,,,,,`つ≡≡(´⌒;;;≡≡≡
ズザーーーーーッ    (´⌒(´⌒;;

4げ......



やれやれ・・・
 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄
  ポ  ∧,,∧  ポ
  ン  ミ,,゚Д゚,彡 . ン
   (´;) U,U ミ〜 (;;).
(´)〜(⌒;;UU (´ )...〜⌒(`)
              
0005デフォルトの名無しさんNGNG
>>1
乙
0006デフォルトの名無しさんNGNG
前スレでアドバイスをくださった方、ありがとうございました。
0007デフォルトの名無しさんNGNG
新スレお疲れ様です。早速質問をさせてください。
TTrackBarのバーをドラッグ中にOnChangeを発生させない方法はありませんか?
OnChangeに限らず、Positionが変わっていて、マウスボタンが離された時を検出できればいいのですが...
0008デフォルトの名無しさんNGNG
サブクラス化するという案はどうか。
0009デフォルトの名無しさんNGNG
>>7
> Positionが変わっていて、マウスボタンが離された時を検出できればいいのですが

TTrackbar がフォームの上に置かれていればサブクラス化の必要はない。フォームで
Orientation が trHorizontal のときは WM_HSCROLL 、trVertial のときは
WM_VSCROLL メッセージを受け取って

private
{ Private 宣言 }
public
procedure WMHScroll(var Msg:TWMHScroll);message WM_HSCROLL;
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

uses
CommCtrl;

procedure TForm1.WMHScroll(var Msg: TWMHScroll);
begin
inherited;
if (Msg.ScrollBar = Trackbar1.Handle) and (Msg.ScrollCode = TB_ENDTRACK) then
Label1.Caption := InttoStr(Trackbar1.Position);
end;

のようにする。
00107NGNG
ありがとうございます。
解決しました。
0011デフォルトの名無しさんNGNG
CやPerlのcrypt関数相当(アルゴリズムはDESかな?)の
ことが可能な暗号コンポーネントとかないでしょうか?
0012デフォルトの名無しさんNGNG
DelphiでCGIを作ってて、画像を動的に生成して
送ると言うところで、ちょっと戸惑ってます。

今はDelphiでプログラミングしていますが、最終的には
Kylixでコンパイルして、Linux上で動かす予定です。

ところが、TBitmapがXWindowなしには利用できない
みたいで困ってます。まあ、何らかのWindowシステムが
ないと、文字を描くのも不可能だから、当然といえば
当然なんでしょうが。

簡単なイメージなんで、最悪、メモリストリームに直接
アクセスして「お絵描き」しようかなとも考えてますが、
何か他にいい方法ある?
0013デフォルトの名無しさんNGNG
>>11
自分で作ればいいじゃん、とか思った漏れは素人ですか?
0014デフォルトの名無しさんNGNG
TMainMenuについての質問です
TMainMenuの領域内の色をWindowsの設定を変更しないで変更することはできるでしょうか?
0015デフォルトの名無しさんNGNG
ストリンググリッドを貼りつけたフォームに、ページめくりボタンをつけたいの
ですが、書き方が分かりません。

VBAでいうところの
SendKeys "{PGUP}"
SendKeys "{PGDn}"
みたいなものでいいんですが。
0016デフォルトの名無しさんNGNG
>>14
オーナードロー

>>15
キーを送るよりも LeftCol と TopRow を VisibleColCount、VisibleRowCount の
分だけ変化させることで、左上に位置するセルを指定するのがいいと思います。
それぞれ範囲を超えないように注意してください。
0017デフォルトの名無しさんNGNG
>>16さん
なるほど、とうなずくことができるにはまだまだ遠い未熟さが情けないですが、
とにかくヒントとしていただいた、VisibleColCount、VisibleRowCount
を手がかりにひたすら粘ってみます。
001815NGNG
ちょっとだけなるほど

MyList.Row:=MyList.Row + MyList.VisibleRowCount
でいけますね。

あとは、最初の最後どん詰まりの部分の処理の仕方。
たぶん何とかなります。
ありがとうございました。
001915NGNG
できました
きっちゃないコードですけど↓

procedure TForm2.PgAtoClick(Sender: TObject);
var
NanGyouMe:integer;
begin
MyList.Col:=0;
NanGyouMe:=MyList.Row+MyList.VisibleRowCount-1;
MyList.TopRow:=NanGyouMe;
MyList.Row:=NanGyouMe;
end;

procedure TForm2.PgMaeClick(Sender: TObject);
var
NanGyouMe:integer;
begin
MyList.Col:=0;
NanGyouMe:=MyList.Row-MyList.VisibleRowCount+1;
if NanGyouMe<1 then
begin
MyList.TopRow:=1;
MyList.Row:=1;
exit
end;
MyList.TopRow:=NanGyouMe;
MyList.Row:=NanGyouMe;
end;
0020デフォルトの名無しさんNGNG
>>15

procedure TForm1.Button1Click(Sender: TObject);
begin
StringGrid1.Perform(WM_VSCROLL,MakeWParam(SB_PAGEDOWN,0),0);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
StringGrid1.Perform(WM_VSCROLL,MakeWParam(SB_PAGEUP,0),0);
end;
0021デフォルトの名無しさんNGNG
アップデートした後プロジェクトをコンパイルしたら、
動作がおかしくなっちゃった。
こんなもんです?   そうですか。
0022デフォルトの名無しさんNGNG
>>11
CのライブラリをBCCでビルドしてリンクするのが手っ取り早い。
0023デフォルトの名無しさんNGNG
ShowMessageで表示したダイアログを、ボタンを押さずしてプログラムから
自由に閉じる方法はありますか。
0024デフォルトの名無しさんNGNG
ありますけど、ユーザの心を読めるプログラムはないよ。どのタイミングで
閉じたいと思うの?
0025デフォルトの名無しさんNGNG
カスタムフォームにしてメーターなり残り時間なりを表示してCloseするのが無難では。
0026デフォルトの名無しさんNGNG
>>24
あ、ボタンを押さずしては念じてという意味ではないです。すみません。
あるデバイスを「取り外してください」というメッセージを、取り外したのをプログラムが感知したら
勝手に閉じたいのです。
>>25
情けないのですがフォームを二つ作るのに苦手意識がありまして・・・できる限り
そうでないやり方を探したいのです・・
0027デフォルトの名無しさんNGNG
>フォームを二つ作るのに苦手意識
ふいちまった。
0028デフォルトの名無しさんNGNG
Delphi製のダイアログとかフォームを開いたとき
ボタンにマウスカーソルが自動的に移動してくれないんだけど
どうにかならないの?
0029デフォルトの名無しさんNGNG
>>26

if Screen.ActiveForm.ClassName = 'TMessageForm' then
Screen.ActiveForm.Close;
0030デフォルトの名無しさんNGNG
>>28
「ボタンにマウスカーソルが自動的に移動」させるプログラムがアホなんでは?
0031デフォルトの名無しさんNGNG
>>30
あわせるのはOS。コンパネ-マウスで設定するやつ。
0032デフォルトの名無しさんNGNG
>>22
なるほど、そういう手もありますね。

昨夜から検索してて、UCrypt.pasってのが
OpenJane関連で見つかったんですが、
どうもトリップの作成用みたいで、こちらを
まず試してみます。
0033デフォルトの名無しさんNGNG
>>31

スマートムーブっていうのね。たしかに Delphi 製のボタンには行かないね。
コモンダイアログなら大丈夫だけれど。何が違うんだろう。デフォルトボタンの
設定の仕方かしら?
0034デフォルトの名無しさんNGNG
日本製は知らないけど、Torrys なんかの VCL コンポのDLサイトでは、暗号化コンポーネント
なんかは山ほどあるよね。そういうのは使えないの?
0035デフォルトの名無しさんNGNG
暗号やハッシュ周りはOpenSSLのソースパクって使うのが一番安心。
0036デフォルトの名無しさんNGNG
>>29
できました。ありがとうございます。
0037デフォルトの名無しさんNGNG
>>28
MLで昔同じ質問があって、中村氏が答えてた記憶がある。
Delのウィンドウ(ボタン等)に問題があるって言ってたような。
0038デフォルトの名無しさんNGNG
ダイアログリソースやテンプレートをつかった原始的な方法でダイアログをつくって
DEFPUSHBUTTON で指定したものは Delphi でコンパイルしても正常にカーソルが
動くね。むしろ、Delphi のフォームのウィンドウ関数がダイアログプロシージャと
して働いてないのが問題なのでは。
0039デフォルトの名無しさんNGNG
て言うか、まだそんな現象があるのか。
ま、そんなところがかわいいのだけれど。
0040デフォルトの名無しさんNGNG
服部さんが、「Cでできる事は、Delphiでもできる」って言ってたけど、
そんなこと言い出したら、VBもだよって言いたくなるレベルだな、デルヒって。
0041デフォルトの名無しさんNGNG
>>40 意味不明
0042デフォルトの名無しさんNGNG
HSPもだよ
0043デフォルトの名無しさんNGNG
> 服部さんが、「Cでできる事は、Delphiでもできる」って言ってたけど

だから、CみたくリソースエディタつかったダイアログをDelphiでつかえば
標準動作になるよ。問題なのは、TForm + TButton なわけで、C とコンパチ
のところではむしろ無問題。
0044デフォルトの名無しさんNGNG
>>43
40や42のようなアフォに説明しても無駄
0045デフォルトの名無しさんNGNG
delphiでwaveファイルを再生するにはどうすればいいのですか?
よろしくお願いします。
0046デフォルトの名無しさんNGNG
>>40-45はHSP信者
0047デフォルトの名無しさんNGNG
そうか、デルポイは中途半端はげって事ですか。
0048デフォルトの名無しさんNGNG
なんかさぁ、荒らすにしてももうちょっとこう気の利いた書き込みできんのかな。
あたまわるそうな書き込みで、読む方が恥ずかしくなってきた。
0049お前がウザいNGNG
0050デフォルトの名無しさんNGNG
'999,999,999'等のカンマが含まれる文字列からカンマだけを抜き取りたいのですが、
AnsiPos関数以外を使った方法でできないでしょうか?
AnsiPosだと一箇所しか返してくれないので、何かいい方法があったら教えて下さい。
お願いします。
0051デフォルトの名無しさんNGNG
StringReplace rfAll
0052デフォルトの名無しさんNGNG
Delphiでプログラムを組んだことすら無い香具師が荒らしてるんでしょ。
何が気に入らないのか分からないけど、放置しときなさい。
0053デフォルトの名無しさんNGNG
>>51
ありがとうございました。
0054デフォルトの名無しさんNGNG
PopupMenuと同じようなタイミングで消えるフォームを作りたいんですが
どういったコーディングをすればいいですか?
表示した瞬間は最も手前に表示され
他のアプリやフォームをクリックしたり切り替えたりしたら消えるようにしたいです。
0055デフォルトの名無しさんNGNG
>>54
ApplicationEvents のOnActivateとOnDeactivate
をうまく利用すればできる。

そのフォームだけで他にもフォームを表示させてるのなら
FormのOnActivateとOnDeactivate

タイマーを利用すればある程度時間を空けて消したりできる。
0056デフォルトの名無しさんNGNG
DelphiからDOSコマンドを実行したいのですが、どうすればいいのでしょうか?
使用したいこまんどはNET USEです。

Delphiのバージョンは7です。

WinExecをで実行しようとしたのですが、うまくいきませんでした。

よろしくお願いします。
0057デフォルトの名無しさんNGNG
実行するだけならWindows.CreateProcessかShellApi.ShellExecute。
でもWinExecでもいけるはずだけど。
GetLastErrorの値見るかWin32Checkで囲ってエラーの内容調べてみたら?
0058デフォルトの名無しさんNGNG
前スレで、データベースデスクトップでメモ型にデータを入力をする方法を
聞いたものですが、データベースエクスプローラーを使えと教えてもらいました。
グラフィック型も同じと思っていたらどうも違うようなのですが、何処で入力すれば
いいのでしょうか?
教えて君ですみません。
0059デフォルトの名無しさんNGNG
色をString型にしたりその逆はできますか?
TStringListで管理してファイルに保存したいのですが...
色のリストが保存できればなんでもいいのですが。
0060デフォルトの名無しさんNGNG
ColorToString
StringToColor
0061デフォルトの名無しさんNGNG
おおっ!ありがとうございます。
006215NGNG
>>20さん
遅まきながら感謝です。
>>19 にのせたコードは見直したら不備だらけで、実験を何回か繰り返しながら
どうにかモノにしました。
不細工ながら、それはそれでとりあえず満足。

こちらももちろんありがたくいただいておきます。
0063デフォルトの名無しさんNGNG
コンポーネントのプロパティの値は
コンストラクタ(create)内では、まだ反映されておらず、
デフォルト値のままなのでしょうか?
0064デフォルトの名無しさんNGNG
ReadStateで読み込むということ、
またそれがコンストラクタの後だと言うことは分かったのですが、
ReadStateがどのようにしてプロパティから値をとているか教えていただけませんか?

コンストラクタ内でプロパティの値で条件分岐がしたいのです。
どなたかよろしくお願いします。
0065デフォルトの名無しさんNGNG
>>64
プロパティを読み込むのはTReaderの仕事らしいけど、
それよりも、なぜそういうことをしたいのか詳細を書いた方が回答をもらいやすいかも。
0066デフォルトの名無しさんNGNG
(´-`).。oO(RPG作りたい…)
      (金も知識もゼロ…)
      (Delphiが良い感じなんでやろうと思う)
        
m9っ`・ω・´)<良い書籍やサイトは有りますか!?
        <誘導して下さい!
0067デフォルトの名無しさんNGNG
sage忘れスマソ
0068デフォルトの名無しさんNGNG
>>67
ageても良いんだぜェ!
単発質問スレ乱立を防ごうサ!
0069デフォルトの名無しさんNGNG
>>66
古い本かもしれないけどSOFTBANKから出てる「遊びのレシピ」って本がお勧め。
Delphiを使ったいろんなジャンルのゲームの作り方が載ってる。
0070デフォルトの名無しさんNGNG
>>66
そんな貴方にRPGツクール
0071デフォルトの名無しさんNGNG
>>66
【Delphi】 ゲームつくるぞ(゚Д゚)ゴルァ 【作れば?】
http://pc5.2ch.net/test/read.cgi/gamedev/1051110669/
0072デフォルトの名無しさんNGNG
DelphiってStringBuilderないの?
まさかMemoryStream使うとか・・・
0073デフォルトの名無しさんNGNG
>>72
えーと・・・・・・・・・・・・?
0074デフォルトの名無しさんNGNG
>>66
ぐぐればサイトはなんぼでも出てくる。
れっつとらい。
ただし只で手に入るDelphi6Personalは商用アプリ開発不可なので、
即売会で売ったりダウンロード販売するためには、Professional版を
購入する必要あり。
0075デフォルトの名無しさんNGNG
PageControlに追加したTabSheetの各タブに出るヒントを、別々の物にする方法は?
現在タブ部分のヒントは、全てPageControlの物が出てしまいます。
0076デフォルトの名無しさんNGNG
IndyのデモでCGIMailerがコンパイル出来ないんだけど、
[致命的エラー] CGIMailer.dpr(4): ファイル 'IdCompilerDefines.inc' が見つかりません
って出るんだけど、俺だけ?(´・ω・`)ショボーン
0077デフォルトの名無しさんNGNG
.incファイル探してあったらパス通してみたら。知らんけど
0078デフォルトの名無しさんNGNG
IdCompilerDefines.incが無いんです。
あきらめます。
0079デフォルトの名無しさんNGNG
>>72
.NETやJavaは文字列がオブジェクトなので専用の構築クラスを使わないと遅くてやってられないが
Delphiだと+演算子使いまくっても充分なスピードがでるよ
一応TStringStreamってのもある

…ってので満足か?
>>73 多分>>72はよくわかってない煽り
0080デフォルトの名無しさんNGNG
>>78
C:\Program Files\Borland\Delphi7\Source\Indyに普通に存在するが?
008178NGNG
Indyのアップグレードしたらありました。
ありがとう。
それから、Indyのホームページぐぐったら、
Del7のは、バグがあるからDel6が良いってのがあったんですが、
Lクライアントとかサーバーとか勉強して作りたいんですが、使わない方が良い?
0082デフォルトの名無しさんNGNG
バグによりけりだろうけど、入門レベルなら気にしても仕方ないんじゃない?
0083デフォルトの名無しさんNGNG
というかIndyでソケット入門ってつらくないか?
ドキュメントがないって言う意味で。分かるならいいけど。
0084デフォルトの名無しさんNGNG
ちょいと聞きたいんだが。
Del1からDel7をWin2000にインスコってできるのか?
0085デフォルトの名無しさんNGNG
以下の4000を一発で求めることが可能な動的配列のサイズを求める関数ってありますか?

procedure TForm1.Button1Click(Sender: TObject);
var
 A: array of array of Integer;
begin
 SetLength(A, 10, 100);
 ShowMessage(IntToStr(Length(A) * Length(A[0]) * SizeOf(Integer))); //4000
end;
0086デフォルトの名無しさんNGNG
ない
0087デフォルトの名無しさんNGNG
>>86
わかりました。
0088デフォルトの名無しさんNGNG
>>84
とりあえず6,7,8は共存させて問題ない(私のPCがそうだから)
0089デフォルトの名無しさんNGNG
>>88
なるほど。
いまPCにインスコされてるやつはDel3とDel5。
Del3が入るならDel4は当然入ると思うから良しと。
そこで、Win2000にDel2.0Jが入るのか疑問に思っているところなんだ。
0090デフォルトの名無しさんNGNG
確か入る。
2,3,4,5を入れてる人がいた。
0091デフォルトの名無しさんNGNG
98だったかも・・・
0092デフォルトの名無しさんNGNG
>>65
TReaderでしたか、ありがとうございます。

タスクトレイにアイコンを表示させるための、コンポーネントを作っているのですが、
コンストラクタ内でFTask(駐屯型かどうか)の値をもとに、
アイコンを登録するかどうかでわけたいのです。
駐屯型でない場合は、最小化時のみ、アイコンを表示させようと思っています。

NID:TNotifyIconData;

constructor TTrayIcon.Create(Owner: TComponent);
begin
  if not (csDesigning in ComponentState) then begin
    ・・・
    with NID do begin
     ・・・
    end;
    // FTray ← の値が常にFalseだから使えない。。。
    if FTray then Shell_NotifyIcon(NIM_ADD, @NID); {アイコン登録}
  end;
end;

既存のコンポーネントで、Visibleの値をもとに、
表示したり、されなくしたりするのはどのようにしているのでしょうか。
0093デフォルトの名無しさんNGNG
>>75
>PageControlに追加したTabSheetの各タブに出るヒントを、別々の物にする方法は?

uses
CommCtrl;

procedure TForm1.ApplicationEvents1ShowHint(var HintStr: String;
var CanShow: Boolean; var HintInfo: THintInfo);
var
i,itm:integer;
r:TRect;
begin
if HintInfo.HintControl.Name = 'PageControl1' then begin
itm := -1;
for i := 0 to PageControl1.PageCount-1 do begin
PageControl1.Perform(TCM_GETITEMRECT,i,LPARAM(@r));
if PtInRect(r,HintInfo.CursorPos) then itm := i;
end;
if itm <> -1 then HintStr := IntToStr(itm)+'-th tab だよ';
end;
end;
0094デフォルトの名無しさんNGNG
CとかJavaならHello Worldを出力せよってプログラムを最初にやると思うんだけど
Delphiでそれにあたるようなプログラムは何でしょう?<最初に作れと言われるプログラム
0095デフォルトの名無しさんNGNG
>>94
コンソール版hello,worldと
ボタンを押すとメッセージが表示されるフォーム版hello,world
0096デフォルトの名無しさんNGNG
最初に作るアプリはなぜかメモ帳が多いな。
0097デフォルトの名無しさんNGNG
>>94
http://www.w-frontier.com/delphi/index.html
はどう?
0098デフォルトの名無しさんNGNG
Delphi6 ProでHTMLを出力したいんだけど
タグの出力等を支援してくれるライブラリってない?
0099デフォルトの名無しさんNGNG
>>98
入力ならともかく出力は単なるテキストファイルの出力なんだから
私怨とかいらないんじゃないの?具体的にどんな私怨が欲しいの?
0100デフォルトの名無しさんNGNG
>>99
rubyのCGIクラスやphpみたいなの
0101デフォルトの名無しさんNGNG
>>98
IntraWeb使ってしまえばぽとぺたでHTML吐けるよ
0102デフォルトの名無しさんNGNG
ShowWindow(Application.Handle,SW_HIDE);
でタクスバーのアイコンを非表示にしているのですが、
Application.Minimize;
を実行すると、ちょこっとタクスバーに
アイコンが現れてしまって困っています。
解決策はありますか?
どうぞ一つご教示お願いします。
0103デフォルトの名無しさんNGNG
なんで知られていない(流行っていない)のでしょうか?逆に何故流行らないのかと言いますと、原因は意外とハッキリしています。

MicroSoft社の製品ではない。
「Visual Basic」よりも後に発表された。
名もあまり知られていない言語に手を出したくはない。
参考書があまり出回っていない。
みんながやってるものをやった方が安心する。
企業であまり使用されていない。(使ってる所では使ってますが…)
0104デフォルトの名無しさんNGNG
やっぱりVB、VC++が最高なのよね。
0105デフォルトの名無しさんNGNG
>>102
隠すんじゃなくて、WS_EX_TOOLWINDOW属性をつけてやる
>>103
何を今更
0106デフォルトの名無しさんNGNG
>>105
>103は知っててわざと書いてるんでしょう。
アマチュアか敗北した人にそういうことをする人がいる。
0107102NGNG
>>105
もう少し詳しく教えて頂けませんか?
お願いします。
0108102NGNG
SetWindowLong(Application.Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW);
とアプリケーションが実行する前に読ませてやるとタスクバーに
表示されなくて、その点ではうまくいっているのですが、
最小化をした時に左下にフォームのタイトルバーが現れてしまいます…
0109デフォルトの名無しさんNGNG
>>106
>>97のサイトからのコピペだよ
0110デフォルトの名無しさんNGNG
画像をアンチエイリアスつきで回転できるコンポーネントなどありますか。
0111デフォルトの名無しさんNGNG
>>108
ちょっとややこしいけどイイかな?
それでよかったらコードを掲載可能。
0112102NGNG
>>108
お願いします。
勉強になりますから是非お願いします。
0113デフォルトの名無しさんNGNG
>>112
了解。
0114デフォルトの名無しさんNGNG
>>83
ソケット入門って言うネタが成立するならやってみたいです。
でも、ソケットって言葉では知ってしても実際プログラムとしては
どんなものか分かってないので。
Indyではソケットって無いんですか?
0115デフォルトの名無しさんNGNG
>>112

メインフォームのInterface部に以下を記述

 //●何も考えずにメインフォームにコレを記述●
 THideTaskBarApplication = class(TApplication)
 public
  constructor Create(AOwner: TComponent); override;
 end;

メインフォームのimplementation部に以下を記述

//●何も考えずにメインフォームにコレを記述●
constructor THideTaskBarApplication.Create(AOwner: TComponent);
var
 WndStyle: Integer;
begin
 inherited;
 WndStyle := GetWindowLong(Handle, GWL_EXSTYLE);
 WndStyle := WndStyle or WS_EX_TOOLWINDOW;
 SetWindowLong(Handle, GWL_EXSTYLE, WndStyle);
end;

//●何も考えずにメインフォームにコレを記述●
initialization
 Application.Free;
 Application := THideTaskBarApplication.Create(nil);

end.
0116デフォルトの名無しさんNGNG
フォーム上にTEdit、登録ボタンを配置しています。
登録ボタンを押した時にTEdit上に書いてあった内容を
テキストファイルに保存するにはどうしたらいいでしょうか?
0117デフォルトの名無しさんNGNG
>>115

それって SetWindowLong() でセットするのとどこが違うの?
0118デフォルトの名無しさんNGNG
>>116
とりあえず、'C:\File.txt'に保存する例。

procedure TForm1.Button1Click(Sender: TObject);
var
 F: TextFile;
begin
 AssignFile(F, 'C:\File.txt');
 Rewrite(F);
 try
  Write(F, Edit1.Text);
 finally
  CloseFile(F);
 end;
end;
0119デフォルトの名無しさんNGNG
>>108
>最小化をした時に左下にフォームのタイトルバーが現れてしまいます…

procedure TForm1.ApplicationEvents1Minimize(Sender: TObject);
begin
Form1.Visible := false;
end;
0120デフォルトの名無しさんNGNG
>>115
プロジェクトファイルに

SetWindowLong(Application.Handle, GWL_EXSTYLE, GetWindowLong(Application.Handle, GWL_EXSTYLE) or WS_EX_TOOLWINDOW);

ですむんじゃないの
0121デフォルトの名無しさんNGNG
> Indyではソケットって無いんですか?

おおまかに言えば Indy はソケットのラッパ。VCL が Win32API のラッパ、という
のと同じような意味で。

Delphi言語でソケット入門っていうのは分かるけど、Indy でソケット入門というのは
ちょっと意味不明な感じ
0122116NGNG
>>118
できました。ありがとうございます
0123102NGNG
>>115
>>117
>>119-120
レスありがとうございます。
一応思い通りの事ができました。
115さんのが完全に理解できていませんが
うまくいったので満足です。
また勉強したいと思います。
ありがとうございました。
0124デフォルトの名無しさんNGNG

application.MessageBox(PChar(文字列),PChar(文字列));

この文字数に上限はあるんでしょうか
実験したところ500,600程度はあっさり表示してしまいます
この文字列部分は変数なんですが、もし上限があるとするなら、そこに
達する直前で切ってしまいたいので(勝手に切ってくれるんだったらそれでも
いいんですけど)
0125デフォルトの名無しさんNGNG
>>123
結構ややこしくてとにかく理解するには大変だから、とりあえず
これを記述すると表示されなくなることが分ればOK。
今後も必要になった時に貼り付ければイイという感じ。
0126デフォルトの名無しさんNGNG
>>124
何文字あれば十分ですか?2ギガバイトぐらいはいくかもしれませんが
もっと低い制限かましたほうが無難でしょうね
0127デフォルトの名無しさんNGNG
ここはくだらないスレッドですね
0128デフォルトの名無しさんNGNG
>>126さん、レス感謝です

2ギガって、そんなにいけちゃうんですか。

商品別の売上履歴をメッセージボックスの形で表示させてるんです。
XXXX年XX月XX日 X点
YYYY年YY月YY日 Y点
・・・みたいな感じ
でもって、データ元は全履歴テーブルから過去一年分だけ抽出したクエリ。
だから365行分あれば充分なんですけど。
実際には画面の大きさがあるからそんなに表示できるわけないし、
365日間、毎日切れ目なく売れる商品があるわけでもない。
たぶん多くても70〜80行といったところだと思います。

とりあえず尻尾切りはしなくても、最悪画面からはみ出すだけと
考えて大丈夫なわけですね。
0129デフォルトの名無しさんNGNG
>>128
あれは API の MessageBox のラッパでしょ。Delphi というより API の話ね。

普通、StringGrid か ListView かを載せたフォームで表示させるんでは。
0130デフォルトの名無しさんNGNG
今、TPersistentを継承したTData1,TData2...TDataNという
いくつかのクラスをファイル入出力させるためTHogeというクラスを作り、
Dataプロパティに先ほどのTDataクラスを保持させるようにしています。

THoge = class(TComponent)
published
 property Data: TPersistent read FData write SetData;
end;

WriteComponentできちんと書き込みは出来ているのですが、
実行時のDataプロパティの実際の型が不定のため、
ReadComponentでうまく読み込むことが出来ません。
やはりDataプロパティの実際の型をTHogeにプロパティとして持たせ、
Dataプロパティを偽プロパティを使って、
ストリームからの読み込み時にその型を判別し
個々の読み込みを行うという方法をとるしかないのでしょうか?

なにかスマートな方法がありましたら教えてください。
0131デフォルトの名無しさんNGNG
>>129さん
>>普通、StringGrid か ListView かを載せたフォームで
そうしようとも思ったんですけど。
ストリンググリッド貼りつけたフォームばかりもう何枚もできちゃって、
何だか疲れちゃいました。
この程度の表示だったらメッセージボックスでいいかな、と。
(自分の職場のちっぽけなDBフロントエンドです)
0132デフォルトの名無しさんNGNG
バイナリファイルもしくはストリームをRESファイルに落としたいのですが
なんというリソースタイプを指定すればよいのでしょうか?
0133デフォルトの名無しさんNGNG
RCDATA
0134デフォルトの名無しさんNGNG
formの設計で、オブジェクトを選択してそのcaptionやnameを変更するときに
オブジェクトインスペクタで行いますが、
このフォーカスの移動をマウスではなくキーで行う方法ってありますか?
0135デフォルトの名無しさんNGNG
tab
プロパティ名をタイプ
tab
0136デフォルトの名無しさんNGNG
application.terminate と Close の違いって、
「その場ですぐアプリ終了」と「ウィンドウズに終了予約する
だけなので、すぐ終了とは限らない」って言う認識で良いですか?
0137デフォルトの名無しさんNGNG
>>136
こんなんあった。
http://alicecafe.jp/d_web/blog/archives/000043.html
0138ななしへたぐらま ◆XcB18Bks.Y NGNG
>>84,88-91
以前使っていたPCではWinXP上で2,3,5を共存させていました.
古いバージョンから先に入れるのがよいと思います.
古いのを後から入れるとBDEが古いので上書きされます.
>>131
60〜70行だと文字を小さくしても画面をはみ出しそうですね.
フォームにメモかリッチエディットとボタンを貼り付けて
スクロール可能な自前のメッセージボックスを作ってはいかがでしょうか?

(宣言部)

TMyMsgBoxForm = class(TForm)
RichEdit1: TRichEdit; // ScrollBarsをssVerticalかssBothに
Button1: TButton; // ModalResultをmrOKに
end;

procedure MyShowMessage(const s: string);

(実装部)

procedure MyShowMessage(const s: string);
var frm: TMyMsgBoxForm;
begin
frm := TMyMsgBoxForm.Create(Application);
try
frm.Memo1.Text := s;
frm.ShowModal;
finally
frm.Release;
end;
end;
0139デフォルトの名無しさんNGNG
foo.pas, bar.pasを含むパッケージbaz.bplを作った場合、
ユニットfooを使うアプリのビルドにはどのファイルを検索させればいいの?
baz.bplではなくfoo.dcuへ検索パスを通すのが正解?
0140デフォルトの名無しさんNGNG
テキストボックスに入力される文字を半角だけにするにはどうしたらいいのですか。
0141デフォルトの名無しさんNGNG
procedure TForm1.Button1Click(Sender: TObject);
var
Pos: TPoint;
NewItem: TMenuItem;
begin
PopupMenu.Items.Clear;
NewItem := TMenuItem.Create(PopupMenu);
PopupMenu.Items.Add(NewItem);
NewItem.Caption := Edit1.Text;
NewItem.Tag := 1;

GetCursorPos( Pos );
PopupMenu.Popup( Pos.X, Pos.Y );
end;

というようにすると、作られるPopupMenuのItems.String[1]に
Edit1.textの文字列だけではなくて、半角の&がどこかに入ってしまいます。
例えばEdit1.Text := 'onegaisimasu';だったら、
'onega&isimasu'のようになってしまいます。
どうすれば入らなくなりますか?教えて下さい。
0142デフォルトの名無しさんNGNG
PopupMenu.AutoHotkeys := maManual;
0143141NGNG
>>142
アクセラレータキーを自動的につけるためのものだったんですか!
こんなに悩んだのに一瞬に解決してくださり助かりました。
0144デフォルトの名無しさんNGNG
質問させてください。

Aという非表示コンポーネントを作成して色々な処理を行います。
Aコンポーネントの中に、フォームを呼び出し、値を入力して、チェックする処理をしたいと思い
Bフォームを作って、AコンポーネントでCreateさせました。

Bフォームで入力後、Aコンポーネントのメソッドでチェック処理をするときに
どのように書けばいいのかよくわかりません。

Bフォームを作ったときにAコンポーネントのUnitを追加したのですが
Bフォーム上でAコンポーネントのメソッドをどのようにしたら扱える用になるのでしょうか?
教えてくださいお願いします。

流れ
   AコンポーネントCreate
   Aコンポーネントのメソッド(Show)を実行
   AコンポーネントがBフォームをCreate
   Bフォームで入力
   BフォームがAコンポーネントのメソッド(Check)を実施 ←この方法がわかりません
0145デフォルトの名無しさんNGNG
TEditに入力される物を整数値限定にしてif文で処理したいのですが
整数を表すコードを教えてください。

下のコードの○○(整数値限定)を知りたいという事です。

if Edit1.Text=○○ then
登録する。
else
NGを表示する。
0146デフォルトの名無しさんNGNG
StrToIntDefのこと言ってるんですか?
0147デフォルトの名無しさんNGNG
Val(Edit1.Text, value, code); if code <> 0 then NG;
または
try value = StrToInt(Edit1.Text); except on EConvertError do NG end;
0148デフォルトの名無しさんNGNG
>>145
発想があまりよくない。入力を限定するのはOnKeyPressでやった方がよい。

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  case Key of
  #08:; //[BackSpace]
  '0'..'9':; //数字
  #$7F:; //[Delete]
  else Key:=#0;
  end;
end;

もしその方法でやるとしても、if文でやるのは余りスマートな方法とはいえない。
例外処理を使った方がずっと楽。

try
  intVar = StrToInt(Edit1.Text);
except
  on EConvertError do
    ShowMessage('整数を入力してください');
end;

こうすると、
数値に変換できる文字列がEdit1に入力されているならばintVarに代入が行われるが、
変換できない文字列だったらメッセージダイアログが表示され代入は行われない。
0149デフォルトの名無しさんNGNG
>>144
例をあげる

public
HonyaLabel:TLabel;
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin
HonyaLabel := TLabel.Create(self);
HonyaLabel.Parent := self;
HonyaLabel.Left := 10;
HonyaLabel.Top := 10;
end;

こんなふうにつくった HonyaLabel に Unit2 からアクセスするには

uses
Unit1;

procedure TForm2.Button1Click(Sender: TObject);
begin
Form1.HonyaLabel.Caption := 'HogeHoge';
end;
0150144NGNG
ありがとうございます。
明日、会社で確認します。
(会社からは2chへアクセス出来ないため家から書き込みしているので)

BフォームではAコンポーネントをCreateしていないので、
どうやって操作するのかイメージがわきませんでした。
どのオブジェクトがCreateしたかは気にしなくていいようですね。
0151デフォルトの名無しさんNGNG
> どのオブジェクトがCreateしたかは気にしなくていいようですね。

そうですね。重要なことは、書いたコードに部分から HonyaLabel のような
インスタンス参照が見えるかどうかです。上の場合は uses Unit1; が肝心な部分です。
そして、HonyaLabel が Unit1 の interface 部にあり、TForm1 の public フィールド
である、ということが。
0152デフォルトの名無しさんNGNG
お世話になります
登録ボタンとListBoxとComboBoxをフォーム上に配置しています。
そして、ListBoxとComboBoxにはItemsプロパティにいくつか選択肢を入力しています。
登録ボタンを押したときにそれぞれ選択されている選択肢をテキストに保存したいのですが
以下のコードではエラーが出てしまいます。

begin
AssignFile(F,'C:\File.txt');
Rewrite(F);
try
Write(F,ListBox1.Text,ComboBox1); //エラーが出る
finally
CloseFile(F);
end;
end;

どうしたらいいでしょうか?
また、選択肢以外を手書きで入力したときにメッセージで警告表示を促したいのですが
それも教えてください。ShowMessageは知っています。
0153デフォルトの名無しさんNGNG
>>152
簡単に言えば
Write(F, 文字列);
とせねばなりません。
0154デフォルトの名無しさんNGNG
combobox1の何を保存したいんだ?
そのままじゃ保存できない。
0155デフォルトの名無しさんNGNG
>>152
あとComboBox.Style を csDropDownList にしとけば
そもそも手動入力できないようにできます。
0156152NGNG
>>153-155

ComboBoxはComboBox1.Textにしたら出来ました。
手動入力はデファルトで入力できる設定になっていましたけど勉強になります。
ただ、手動入力もファイルに保存されてしまうのでShowMessageを使ってNGを出したいです。
0157デフォルトの名無しさんNGNG
こんにちは。昨日からDelphiを使い始めました。
いろいろ試しているんですが、
DateToStr(Date)
の年と月と日をそれぞれ別の変数に入れたいんですが、
文字列の分割の仕方がよくわかりません。
xBASE言語のleftstrやrightstrのような関数はないんでしょうか。
0158デフォルトの名無しさんNGNG
>>157
xBASEとやらは知らないけど、その名前の関数はあるよ。
uses に StrUtilsを追加しる。
0159デフォルトの名無しさんNGNG
>>158
ありがとうございます。
でもHELP見ても出てきません。Delphi 5です。
0160デフォルトの名無しさんNGNG
> の年と月と日をそれぞれ別の変数に入れたいんですが、

DecodeDate()

> xBASE言語のleftstrやrightstrのような関数はないんでしょうか。

Copy() や AnsiPos() や Length() でもっと柔軟な使い方ができる。
0161デフォルトの名無しさんNGNG
>>160
うお、こんな関数あるんだ。どもサンクスです。
助かりました。
0162デフォルトの名無しさんNGNG
FormにEditを複数貼り付けて名前から(Tagでも可)そのEditを探す方法はありますか?
0163デフォルトの名無しさんNGNG
FindComponent
0164デフォルトの名無しさんNGNG
>>163
助かりました
ありがとうございます
0165デフォルトの名無しさんNGNG
アプリ起動時にTedit1にテキストファイルから取り込んだ物を
入力したいのですがどうやったらできますか?
0166デフォルトの名無しさんNGNG
Edit1.Text := 取り込んだ文字
0167デフォルトの名無しさんNGNG
>>165
おいら初級者なので間違ってたらごめん(´Д`;)

procedure TForm1.FormCreate(Sender: TObject);
var
sl: TStringList;
begin
sl := TStringList.Create;
try
sl.LoadFromFile('C:\test.txt');
Edit1.Text := sl.Strings[0];
finally
sl.Free;
end;
end;
0168デフォルトの名無しさんNGNG
>>157
DecodeDateも調べてみてごらん。
0169デフォルトの名無しさんNGNG
既出だった...スマソ
0170165NGNG
>>167
ありがとうございます
0171デフォルトの名無しさんNGNG
ねえ、Delphiって関数ジャンプってないの?
VC++にあるようなやつ。
0172デフォルトの名無しさんNGNG
exitのことか?
0173デフォルトの名無しさんNGNG
いや違う。
エディタの話。
自分の作った関数にジャンプできなくない?
0174デフォルトの名無しさんNGNG
Personalはいろいろエディタ機能削除されてるけど・・・
0175デフォルトの名無しさんNGNG
>>173
[表示]-[コードエクスプローラ]のこと?
0176デフォルトの名無しさんNGNG
>>175
それないよ・・・
まあフリーのやつだからしょうがないか。
0177175NGNG
>>176
俺はPro版だが、使ったことない・・・。
0178デフォルトの名無しさんNGNG
ALT+↑ とか
0179130NGNG
スルーされてるっぽいので、他のスレで聞いてきます。
お手数おかけしました。
0180デフォルトの名無しさんNGNG
>>171
Ctrlキーを押しながらその関数にマウスカーソルを当てるとハイライトする。それをクリックすると
その関数にジャンプする。という機能?
それともCtrl + Alt + ↓のこと?

スレ違いならスマソ
0181デフォルトの名無しさんNGNG
>>175
最近ごちゃごちゃなコード書いてるせいか
むしょうにその機能が使いたくてしょうがない。
「定義の検索」でなんとか代用してるけど・・
0182デフォルトの名無しさんNGNG
コードエクスプローラってプロジェクト閉じるたびにツリーも全部閉じるからめんどくさくて使ってられない
0183デフォルトの名無しさんNGNG
DelphiでシーケンシャルファイルをOPENし、配列に取り込むのはどうやるんですか?
HELPでreadとか見つけたんだけど使い方とか書いてないし・・・

なんかVBよりとっつき悪い感じ・・・
0184デフォルトの名無しさんNGNG
>>183
何事も慣れです。「シーケンシャルファイル」なんていってる時点で
化石プログラマーな匂いがプンプンしますよ。もっと柔軟に考えないと。
ファイル操作といってもいろいろなやり方がありますから、
バイナリファイルなら TFileStream、
テキストファイルなら TStringList が楽かも。
余裕があるなら File of XXXX, TextFile、
また、Win32 APIを直で使うという方法もあります。
0185デフォルトの名無しさんNGNG
TFileStreamか、ありがとう。
0186デフォルトの名無しさんNGNG
ってHELPにも出て来ないし・・・やれやれ
0187デフォルトの名無しさんNGNG
そのレベルで2chだけで言語習得しようとしているあんたに惚れた
0188デフォルトの名無しさんNGNG
つうかVBプログラマってホント潰しきかねぇな
0189デフォルトの名無しさんNGNG
C#とかC++とかDelphiとかやるならオブジェクト指向について
勉強しとかないとつらいよ。
0190デフォルトの名無しさんNGNG
お前ら"VB"に過剰反応しすぎ。
0191デフォルトの名無しさんNGNG
なんかVBよりとっつき悪い感じ・・・
0192デフォルトの名無しさんNGNG
>>188
Cやれ。
0193デフォルトの名無しさんNGNG
Kylixの話はここでよござんしょか?
Duron1G、メモリ600MBOverの環境でGnome上でKylix Open Edition 3を立ち上げて
ボタン一個の画面作ってそれだけで走らせようとしたら
実行ファイルはできているらしいもののIDEが凍ります_| ̄|○
(で、その実行ファイルは実行されない。ターミナルから起動しようとしても
参照が未解決だとかなんとか……どっかにLIBPATH通さないといかんのかな)
環境的にきついんでしょうか?
0194デフォルトの名無しさんNGNG
肝心のディストリビューションかいてないし
0195デフォルトの名無しさんNGNG
Delphiのブロック崩しのサンプルってないんですか?
ぐぐってもでてこないorz
0196デフォルトの名無しさんNGNG
すいません。
Timerについてなんですが、
OnTimerの処理が終わらずにまたOnTimerが呼ばれた場合、
一体どのような処理になるのでしょうか、、
0197デフォルトの名無しさんNGNG
>>195
超初心者スレなんで、TShapeとTTimerだけでブロック崩し作ってみたら。
ちょっと面白そうなんでやってみようかな。
0198デフォルトの名無しさんNGNG
>>196
呼ばれません。
0199134NGNG
>>135
遅くなりました、ありがとうございます。ネ申よ。。。
0200デフォルトの名無しさんNGNG
>>196
別スレッドになるわけじゃないしな
0201デフォルトの名無しさんNGNG
>>197
sinとかcosの使い方が知りたいのです...
どうやったら移動と反射とかができるのか。
0202デフォルトの名無しさんNGNG
お前ら、布教と救済しる!
0203デフォルトの名無しさんNGNG
何だよ偉そうに。
0204193NGNG
ぐは。確かに。 > ディストリビューション
今は最早骨董品と成り果てたRedHat9でござります。
パッチはなーんも当ててないっす。それでも一応、Kylix3の
動作条件は素で満たしていたはずでしたが……
(事実起動はするし、コンパイラも動いてはいるらしいし)
0205デフォルトの名無しさんNGNG
質問させて下さい。
#define UMA ((hoge*32)+16)
↑みたいな置換え処理をDelphiではどうやるんですか?
0206デフォルトの名無しさんNGNG
function UMA(hoge: Integer): Integer; register;
asm
  SHL EAX, 5
  ADD EAX, 16
end;
0207デフォルトの名無しさんNGNG
>>206
スンマセン…ただ単に置換えだけ出来れば良いんです。
#define GIKO hoge[9]
#define UMA hoge[17]
みたいな感じで。
0208デフォルトの名無しさんNGNG
知ってて言ってないか?w
無いですよ。
あったとしても、DelphiのようなIDEによるソースの自動編集が重要な位置を占めてる環境で
IDEの邪魔を好んでするのはお薦めしない。
0209デフォルトの名無しさんNGNG
>>208
本当に知らんかったのですよ…
ヘルプ読んでも検索しても見つからなかったので質問した次第です。
どうもお騒がせしました。
0210デフォルトの名無しさんNGNG
>>205
無い。
Delphiにはマクロもインライン関数も無いです。
素直に関数作るか、定数として定義しておくしかない(コンパイル前に解るような計算式なら定数に出来る)。

0211デフォルトの名無しさんNGNG
delphiのソースエディタで行ごと削除できるキーはありますか?
0212デフォルトの名無しさんNGNG
>>205
ちなみにC#にもマクロ、インラインはないです。
0213デフォルトの名無しさんNGNG
>>211
ctrl+y
0214213NGNG
追加。
D7だとヘルプのキーワードに「エディタに関するキーボードショートカット」
0215デフォルトの名無しさんNGNG
ttp://www.wwlnk.com/boheme/delphi/tips/tec1630.htm

MemCheckによればこれに載ってるコードではメモリリークしてるらしいのですが、
どこが原因になってるんでしょうか?
0216デフォルトの名無しさんNGNG
>>204
ttp://www.geocities.jp/fujimaki691202/download/Linux/KylixTips/installing_unofficial_patch.htm

Kylix3
http://pc5.2ch.net/test/read.cgi/tech/1030031001/l50
0217デフォルトの名無しさんNGNG
del7,1 + dbexpress での話ですが、どうしても以下のような
エラーが出ます。海外のBBSを見ると、一部に7.1 upedateの
問題みたいな意見もあるんですが。。。

------- ----------- ------------ -------------
[致命的エラー] ユニット SqlExpr は異なるバージョン
SqlConst.SNOERRORによりコンパイルされています
------- ----------- ------------ -------------

SqlConstって、拡張子が「dcu」と「dcu.jp」ってのが
ありますね。後者は7.1でアップデートされている
わけですが。。。

このエラーって、7.1へのアップデートに失敗した結果?
0218デフォルトの名無しさんNGNG
>>215
別にリークしてるとは思わないけど。ほかの部分に問題があるのでは?

それよりプロセス間をまたいでポインタを渡すなら、GetMem じゃなくて
GlobalAlloc を使ってグローバルヒープに変数を確保しないと駄目な気が
するけど。
0219デフォルトの名無しさんNGNG
> GlobalAlloc を使ってグローバルヒープに変数を確保しないと駄目な気が

おいおい、GlobalAlloc WM_COPYDATA を知っててそんなこと言ってるのか?
0220204NGNG
>216
ぐはっ*2。ぐぐればすぐにでも出てきそうなものを、よう探さんかったとは
己の不分明を恥じるのみ。
というわけで216とドイツのスーパーハカーに謝意を表しつつ逝ってきます。
0221デフォルトの名無しさんNGNG
senderを偽装 というのをやりたいのですが、
(Sender: TObject);のついているプロシージャを呼び出したい時に、
Senderを持ってない関数からSenderなしで呼び出すとエラーになってしまうので、
Senderをとりあえず捏造して呼び出したいのですが、どうするのがよいのでしょう。
googleで探すのは不可能でした。
0222デフォルトの名無しさんNGNG
適当にselfとかいれとけ
0223デフォルトの名無しさんNGNG
TObjectっていったらほとんどなんでもOKだよな・・
0224デフォルトの名無しさんNGNG
>>221
プロシージャ内部で何やってるか調べないとまずいんじゃね?
必要ないのにSenderのメンバ弄ってるとかならいいけど
必要だから弄ってるなら適当なの渡すのもまずいじゃん?
0225デフォルトの名無しさんNGNG
stringでtabや改行を盛り込むにはどう記述すればいいんでしょう
0226デフォルトの名無しさんNGNG
制御コード

タブは  #9
開業は  #10

シングルクオーテーションで囲んじゃだめ。ただの文字列になる。
0227デフォルトの名無しさんNGNG
変換ミスはスルーで・・・
0228デフォルトの名無しさんNGNG
改行は sLineBreak 定数を使った方がよさげ
0229225NGNG
ありがとうございました。
0230デフォルトの名無しさんNGNG
起動すると必ず最大化されてしまうプログラムを、Windowモードで起動するように指示するプログラムを作りたいのですが、
どのように書けば良いでしょうか・・・。
0231デフォルトの名無しさんNGNG
そういう起動パラメータがあるかどうか調べる
0232デフォルトの名無しさんNGNG
TDBGridで、商品名 価格 数量 小計 を表示するような
プログラムを作成しています。価格*数量で計算した小計を
静的に作成したColumunsに表示させたいと思いますが、
どうやってセルを指定して入力するかがわかりません。
StringGridとは全く扱いが違うようなのですが、ヘルプを
読んでみてもよくわかりませんでした。

よろしくお願いします。
0233デフォルトの名無しさんNGNG
>>230
ショートカットの「実行時の大きさ」を変更してもダメなプログラムは
いったん起動させた後でないとウインドウの変更は無理だと思います。
0234デフォルトの名無しさんNGNG
>>232
TDBGridだけを何とかしようとしても、目的は達成できないよ。
TDBGridのDataSourceプロパティの元になっているTQueryのSQL文で

SELECT 商品名, 価格, 数量
FROM 商品

を
SELECT 商品名, 価格, 数量, 価格 * 数量 AS 小計
FROM 商品

にして、小計を計算する項目を作成して、小計フィールドをあらかじめ作ってしまう。
小計はTQueryを開くと実行されるからこれで小計は計算される。
あとはTDBGridのColumnsに小計を追加すればOK。

TTableが元になっているならば、このようにすることはできないので、
TTableのOnCalcFieldsイベントを使う必要があるけど、長くなるのでここでは割愛
(もしTQueryを使っていない場合は教えてくれれば後で説明します)。
0235デフォルトの名無しさんNGNG
>>234さま

早速のご回答ありがとうございます。
TQueryを使っています。教えていただいた方法
早速試してみます!!
0236デフォルトの名無しさんNGNG
>>235
こういう質問をするときには、
・DelphiのバージョンとEdition (Personalとか・・・)
・データベースの名前(OracleとかAccessとか)
などを付記しておいた方が適切なレスがつきやすいよ。
0237デフォルトの名無しさんNGNG
Assignedって何か意味あるの?
if p <> nil thenって書いて問題になるケースって存在する?
0238デフォルトの名無しさんNGNG
Assigned(P) はポインタ変数の場合は P<> nil,
手続き型変数の場合は @P <> nil というテストに相当します。
0239デフォルトの名無しさんNGNG
で、ポインタ変数のチェックでAssigned使う意味あるの?
0240デフォルトの名無しさんNGNG
>>239
で、ポインタ変数のチェックでAssigned使わない意味あるの?
0241デフォルトの名無しさんNGNG
お前の人生に意味は無いよ
0242デフォルトの名無しさんNGNG
お世話になります。ローカル変数について二点ほど質問があります。

ある関数内で宣言したローカル変数は、使う、使わないにかかわらず
呼び出しが起こる度に、常に確保されるものなのでしょうか?

array[0..255] of Char のような大きい変数が必要な場合、
このように宣言するのと、動的変数を関数内で確保して使うのとでは
速度に差が出ますか?
0243デフォルトの名無しさんNGNG
自分で確かめれば?
0244デフォルトの名無しさんNGNG
>>242
スタックにとったほうが速度的には有利。
ただしあまり大きくとるとスタックが足りなくなるので
その時はヒープで確保する。
0245デフォルトの名無しさんNGNG
どうもありがとうございます。

速度という書き方をしましたが、別に実効速度がどう変化するかを
知りたいわけではありません。
可能ならより効率のいいコードを書きたいと思っただけです。

実はコンピュータのコアな部分のしくみをぜんぜん知らないので、
スタックやヒープというのをまず勉強してきます。
0246デフォルトの名無しさんNGNG
>>242
正直たった256バイトごときじゃ大差ないだろうね
0247デフォルトの名無しさんNGNG
文意を汲み取れないアホはもう寝ていいよ
0248242NGNG
          lヽ、            /ヽ
           i! ゙ヽ、    ,,,..-'"/  ゙i!⌒ヽー-、.,,.-イ''⌒ヽ
            l    ゝ-─‐-/'    i!  ヽ、     i,  ,ノ
         ,/"             i!  .... ゙'';;..   Y"
        ,/'              〈  :::::.  '';;...  'i- 、,,
         i'                'i,  ::::::::   ::::  'i!   ゙"ヽ、
          i! ー-      ,,_         'i  :::::::::  ''':;;;  ヽ、  ゙)
        'i,:::::   ,--、     ̄     ,/ヽ ''''        'i,-‐'"
       /⌒ヽ、 i,_,〉   :::::,,-‐    ゝ   .............    ヽ、
       (    ヽ、   ,,.-‐''"       ,)  :::::::::      '\,
        ヽ、,,  ノ,.-‐''"      ノ-‐''"´( :::::::::::          )
          "~ (       ,. -'"     ヽ、    _,,... -‐─'''"
             ヽ、,,.. -‐'''"
寝る!
0249デフォルトの名無しさんNGNG
いや、>>246 の指摘は重要。質問者は >>245 で書いているように実行速度が
どうこうではなく、より効率のいいコードを書きたいと言っている。256バイト
程度でぐちゃぐちゃ悩むのは全く効率よくない。
0250246NGNG
>>247
えーと、あなたは何を汲み取ったのですか?とても興味がありますww
0251デフォルトの名無しさんNGNG
ttp://mo-retsu.jp/unchi/nagare/musyuu.gif
0252デフォルトの名無しさんNGNG
ListBoxについて質問させてください。
例えばフォーム上にListBox,EditBoxがある時にListBoxの選択肢をEditBoxに表示
させたいのですがプロパティが見つかりません。教えてください。
ComboBoxのTextのような物が見つからないのです。
0253デフォルトの名無しさんNGNG
EditBox.Text := ListBox.Items[ListBox.ItemIndex];
0254デフォルトの名無しさんNGNG
文字を一文字ずつ抜き出すサンプルとかで、
1バイトずつ見ていき、
「2バイト文字の1バイト目ならどうの、そうじゃなかったら」
なんてのがありますがWideStringを使えば、そんな事しなくても
良いと思うのですが、何か理由があるのでしょうか?
0255デフォルトの名無しさんNGNG
>>254
WideString使えない、使いたくない、あるのを知らない、などなどの理由から
0256デフォルトの名無しさんNGNG
controlbarにtoolbarをドッキングさせると
toolbar内のspeedbuttonが表示されません
なぜでしょうか?

フォームを移動させたり
controlbarのサイズを変更すると表示するのですが・・・
最初だけ表示されません
0257デフォルトの名無しさんNGNG
>>254
DelphiはコンポーネントやTStringListなんかがすべてSJISで統一されていて
WideStringで統一的にコーディングできないから。
なので毎回String<->WideStringの相互変換が発生して遅くなる。
例えば
var s: String;
function Foo(ws: WideString): WideString;
...
s := Foo(s);
とやるとString->WideString->Stringと変換されてしまう。
速度を気にしなければ自作のライブラリはすべてWideStringで統一するというのもありといえばあり。
0258254NGNG
>>257
非常に納得。アリガ�d
0259デフォルトの名無しさんNGNG
TStringListのLoadFromFileメソッド使ってファイルを読み込む時の質問です。
File自体が存在しない時の対応処理できるのですが、
Fileは存在するが中身が空の時にエラーが出ます。
「デバッカ例外の発生。リストのインデックスが範囲を超えています。(0)」
ヘルプを読んでもイマイチ解らないです。
このエラーの意味と対策を教えてください。
0260デフォルトの名無しさんNGNG
1GBのファイルを読みこむにはどうすればいいの?
0261デフォルトの名無しさんNGNG
>>260
なにがやりたい?
0262デフォルトの名無しさんNGNG
>>259
普通はLoadFromFileで中身が空のファイル読み込んでもそんなエラーは出ない。
アップデートちゃんと当てているか?

>>260
TFileStream

0263デフォルトの名無しさんNGNG
>>262
ありがと
0264デフォルトの名無しさんNGNG
>>259
というか例外処理してる?例えば
try
 sl.LoadFromFile('test.txt');
except
 on E: Exception do ShowMessage(E.Message);
end;
とか。
0265デフォルトの名無しさんNGNG
単純に、「読み込んだ後の処理」で例外が出てるんでしょ?
「何も無いのにインデックスもへったくれも」ってことでは?
0266ANGNG
Delphi4 std. で、アプリからユーザーにメッセージを表示したいのですが、
その時に、以下のような動作を期待しています。

メインのフォームとは別の、メッセージを載せたフォームを、画面最前面に表示したい。
このフォームは一定時間後に、自動的に閉じられる(<これは出来てる)
ただし、その際に、現在動作している他のアプリのフォーカスは奪いたくない。
最前面に表示するのは、メッセージフォームのみで、メインフォームは下に置いたまま。

要は、できるだけ、ユーザーの邪魔をせずに、メッセージをそっと通知したいのです。

どういったコードで実現できるでしょうか?
0267デフォルトの名無しさんNGNG
TWebBrowser を使って表示したページの特定のフレームの Document にアクセスするにはどうすればいいのでしょう?
(TWebBrowser1.Document as IHTMLDocument2).frames.item(pvarIndex) でフレームには行き着いているようなのですが、
その後が分かりません。
0268デフォルトの名無しさんNGNG
>>265
もしかして読み込んだ後にsl[x]にアクセスしてるということ?
それならアクセス前にsl.Countが0でないかどうかをチェックしろ、ということですな。
0269デフォルトの名無しさんNGNG
>>268
そーゆーことだと思ったが。違うの?
0270デフォルトの名無しさんNGNG
>>269
LoadFromFileで冷害が発生してるのかとオモタ
0271259NGNG
>>262
返事どうもです。
アップデートに関してですが、
インストールしたばかりでBorlandのdelphiダウンロードのそばにあった
バッチファイル2つはあてました。
TstringListでStrings[i]使うとエラーがでます。実際、空なのでi行目には
データは入ってないのですがこれは無視できませんか?
0272デフォルトの名無しさんNGNG
Form1.FormPaintでImage1を書き換えてるのですが
Image1を書き換えるとForm1,FormPaintが呼び出されて
無限ループになります

Form1が再描写されるときにImage1だけ再描写するにはどうすればいいのでしょうか?
0273デフォルトの名無しさんNGNG
Image1のOnPaintを使うべきだ
0274259NGNG
皆さんありがとうございました。
0275デフォルトの名無しさんNGNG
>>271
だからStrings[i]使う前にCountでちぇっくしろと
0276デフォルトの名無しさんNGNG
Image1のオブジェクトインスペクタにOnPaintがないのですが
どうすればいいでしょうか?
0277デフォルトの名無しさんNGNG
PaintBox
0278デフォルトの名無しさんNGNG
PaintBoxいただきです
ありがとうございました
0279デフォルトの名無しさんNGNG
ある範囲全体をスペースでずらす事は出来ますか?
新しくif文で入れ子にする時、その中身全体をずらしたいという事です。
0280デフォルトの名無しさんNGNG
>>279
Delphiヘルプ→キーワード→「キーボードショートカット」→エディタ(デフォルト)
にある「ブロックをインデントする」「ブロックをアウトデントする」でどうぞ。
0281デフォルトの名無しさんNGNG
>>280
ありがとうございます。
便利なものですな
0282デフォルトの名無しさんNGNG
>267
確かEmbeddedwbにフレームにアクセスするメソッドがあったと思う。
0283デフォルトの名無しさんNGNG
>>266
こんな感じでどうですか? 十分にテストしてないのでご了承ください。
Form1 がメインフォーム、Form2 がメッセージ用のサブフォームです。

procedure TForm1.Button1Click(Sender: TObject);
begin
  Form2.Label1.Caption := 'メッセージをセット';
  SetWindowPos(Form2.Handle, HWND_TOPMOST, 0, 0, 0, 0,
    SWP_SHOWWINDOW or SWP_NOACTIVATE or SWP_NOMOVE or
    SWP_NOSIZE); // 非アクティブで最前面に表示
end;

上記の方法で表示すると Form2 の Close が効かなくなるので、
WM_SYSCOMMAND に応答して以下のコードを書いてください。

procedure TForm2.WMSysCommand(var Message: TWMSysCommand);
begin
  if Message.CmdType = SC_CLOSE then
    ShowWindow(Handle, SW_HIDE); // 非表示にする
  inherited;
end;
0284ANGNG
>>283
ありがとうございます。
組み込んでみたところ、ほぼ期待通りの動作になりました。

なぜか最初の1回目だけ、メインフォームがアクティブになっちゃうのですが、
他の部分が悪さしてる可能性があるので、一度シンプルなテストを作って
いろいろ動作を調べて見ます。
0285デフォルトの名無しさんNGNG
TRichEditに64KBまでしか入力できないんですけど、そういうものなのでしょうか?

今までTMemoを使ってたのですが、一行に4000文字くらい表示することになったのでTRichEditに変更しました。
TMemoからRichEditに乗り換えてる人は結構いるみたいなんですが、どうしてるんでしょうか?

よろしくお願いします。

環境
WindowsXP Professional SP1
Delphi 7.0 Professional
0286デフォルトの名無しさんNGNG
> TRichEditに64KBまでしか入力できないんですけど、そういうものなのでしょうか?

違います
0287285NGNG
違うんですか、そうですか。
調べてみます。どうもありがとうございました。
0288デフォルトの名無しさんNGNG
> WindowsXP Professional SP1

XP なら TMemo でも 2GB まで行くはずだけど
0289デフォルトの名無しさんNGNG
TRichEditって使いにくくない?
漏れは乗り換えようとして乗り切れなかった・・。
0290デフォルトの名無しさんNGNG
表示だけならWebBrowser最強
0291デフォルトの名無しさんNGNG
IndyでノンブロッキングでHTTPダウンロードするのってどうやるの?
0292285NGNG
>>288
いや、なんか一行1KBまでだったんです。
0293デフォルトの名無しさんNGNG
> 一行に4000文字くらい表示することになったので

????
0294285NGNG
A NUMBER(3)
B NUMBER(5)
C CHAR(10)
D CHAR(1)
E VARCHAR2(2000)
F VARCHAR2(2000)

↑なテーブルからエクスポートしたCSVを表示したいんで。
表示って書き方がおかしかったですかね。






て有価、俺、なんか勘違いしてる?
0295デフォルトの名無しさんNGNG
1行に4000文字もあったら管理する気うせる
0296デフォルトの名無しさんNGNG
>>194
なぜ一行で表示したいのか分からない。TMemo に垂直スクロールバーをつけて表示
しても良いのでは。StringGrid でもよいし。
0297デフォルトの名無しさんNGNG
× 194
○ 294
0298285NGNG
>>295-296
激しく同意なんですが、そういう仕様で既に作ってあったんです。
いままでは、1レコード1KB以下だったんで全部TMemoで問題なかったんですが
今回>>294のテーブルを追加してしたんで、RichEdit使うことになったんです。
0299デフォルトの名無しさんNGNG
virtualなlistviewのがよくないか
0300デフォルトの名無しさんNGNG
ループで1文字ずつ代入していってどこでバグるか見れば制限がわかるだろ
64kで止まったコード出すか?
0301デフォルトの名無しさんNGNG
こうやってDelphi製ソフトの評判が落ちていくわけか・・・
0302285NGNG
>>300
あ、すいません。最初の問題は解決しました。
MaxLenghtを弄ったら大丈夫でした。
0303デフォルトの名無しさんNGNG
TRichEdit とか TMemo はウィンドウズのコントロールであり Delphi は無関係
0304デフォルトの名無しさんNGNG
296 の仕様でよいなら TMemo で無問題
0305デフォルトの名無しさんNGNG
>>301
だからVB製ソフトは評判が悪いのか・・・・
0306デフォルトの名無しさんNGNG
誘導

>>301>>305
VB vs Delphi @夏厨2004
http://pc5.2ch.net/test/read.cgi/tech/1088578261/
0307デフォルトの名無しさんNGNG
>>305
そうやって、いきなりVBだしてくるなんて
過剰反応するから・・・。
0308デフォルトの名無しさんNGNG
VBの話題はスレ違いです

VB vs Delphi @夏厨2004
http://pc5.2ch.net/test/read.cgi/tech/1088578261/
0309デフォルトの名無しさんNGNG
>>305 >>305 >>305 >>305 >>305
>>305 >>305 >>305 >>305 >>305

VB vs Delphi @夏厨2004
http://pc5.2ch.net/test/read.cgi/tech/1088578261/
0310デフォルトの名無しさんNGNG
なんかヒステリックな反応が迫害されたΩ信者みたいだな。
0311デフォルトの名無しさんNGNG
関係ないものに例えて
変なイメージを植え付けようとするのは
詭弁のテクニックだね。
0312デフォルトの名無しさんNGNG
関係あるものに例えたら例えになりませんが。
Del厨って日本語にも不自由なんだな。
0313デフォルトの名無しさんNGNG
・Delphiのアプローチ
問題にぶつかる→できない(本人の力不足)→Delphiの評判が落ちる

・VBのアプローチ
問題にぶつかる→できない(言語の力不足)→VBの評判が落ちる
0314デフォルトの名無しさんNGNG
DelphiとVBとの比較話題はスレ違いです

VB vs Delphi @夏厨2004
http://pc5.2ch.net/test/read.cgi/tech/1088578261/
0315デフォルトの名無しさんNGNG
挫折したので誰か助けて〜
下のVBを移植してください。

Dim i As Long, FileNum As Integer
FileNum = FreeFile()
Open "map.dat" For Binary As #FileNum
For i = 0 To 40000
Get #FileNum, , map(i)
Next i
Close
0316デフォルトの名無しさんNGNG
Var
 i: Longint;
 FS: TFileStream;
Begin
 FS := TFileStream.Create('map.dat',fmOpenRead);
 Try
  For i := 0 To 40000 Do
   FS.ReadBuffer(map[i],SizeOf(map[i]));
 Finally
  FS.Free;
 End;
End;
0317デフォルトの名無しさんNGNG
getmem allocates memory from the RTL memory manager and returns a pointer.
the returned pointer must be freed with freemem.

memproof0948でオブジェクトリストをfreeすると出る警告なのですが
解放できてないのでしょうか?
0318デフォルトの名無しさんNGNG
>>317

VB vs Delphi @夏厨2004
http://pc5.2ch.net/test/read.cgi/tech/1088578261/
0319デフォルトの名無しさんNGNG
なんか知らんけどオブジェクトリストにGetMemしたヒープをぶら下げてるとかじゃないの
0320デフォルトの名無しさんNGNG
オブジェクトリストに オブジェクトリストぶら下げてます
ツリーになってます
0321315NGNG
>>316
ありがとう〜。
そうやって使うのか・・・
0322デフォルトの名無しさんNGNG
memproofってなに?
0323デフォルトの名無しさんNGNG
解決しました
destroyでオブジェクトリストの解放を忘れてました
0324デフォルトの名無しさんNGNG
ListViewのリストアイテムの追加時にそのアイテムの文字色を
奇数行は赤色、偶数行はオレンジ色というふうにするにはどうすればいいのでしょうか?
0325デフォルトの名無しさんNGNG
>>316
beginとendのキャップがキモイ
0326デフォルトの名無しさんNGNG
>>316
var、try、for、to、do、finallyも
0327デフォルトの名無しさんNGNG
それより質問者は何で 40001 回に分けてコピーしてるか意図不明。
VB って連続バイトのコピーもできないのか?
0328デフォルトの名無しさんNGNG
まぁまぁ、こっちだって読み込んだだけで使わずにFreeしてるし
0329デフォルトの名無しさんNGNG
すみません。こんな変数は可能でしょうか?
Tfruits
fruits.kind[1]='ばなな';
fruits.amount[1]= 5;
fruits.price[1]=100;
fruits.kind[2]='みかん';
fruits.amount[2]= 10;
fruits.price[2]=250;

型とか変数とか配列でヘルプを見てるんですけど、いまいちピンと
来ません...。
0330デフォルトの名無しさんNGNG
= は := です。
0331デフォルトの名無しさんNGNG
>>329
可能かどうかなら可能だけど、俺ならTfluitsにkind、amount、priceを持たせて
fluitsを配列にする。
0332デフォルトの名無しさんNGNG
Tfurute = record
kind :string;
amount. praice: Integer;
end;

var
fruits: array[0..2] of Tfuruts;
0333デフォルトの名無しさんNGNG
>>332
変です
0334ANGNG
>266 >283

シンプルなテストアプリを作ってやってみたところ、一部に、よく判らない動作が
おきているようです…。

Form2 に pop手続きを作り、そこで、以下のように記述。
タイマーはForm2を自動で閉じるための物です。(ShowWindow(Handle, SW_HIDE);を記述)

procedure TForm2.pop;
begin
 SetWindowPos(Handle, HWND_TOPMOST, 0, 0, 0, 0,
  SWP_SHOWWINDOW or SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);
 Timer1.Enabled := True;
end;

Form1の呼び出し側では、同じくタイマーで、一定間隔で自動的に、Form2.pop; を呼んで
Form2を表示。

この作りで、Form1が、アクティブ、非アクティブ、最小化、いずれの状態でも
Form2は表示され、かつ他ののアプリの邪魔をしないという、期待通りの動作をします。

ところが、Form1が非アクティブかつForm2が表示されている間に、Form2をクリックすると、
1) Form2がアクティブ化、Form1が非アクティブのままトップに表示。
2) タイマーでForm2が、消えると同時に、Form1は、元の位置(アクティブの後ろ)へ。
3) 次のForm2.pop;で、Form2が表示されると同時に、Form1も非アクティブのままトップへ。
4) タイマーでForm2が閉じると、今度はForm1が非アクティブのまま最上面に残ります。
これ以降は、Form1がトップに出たまま、Form2が表示/非表示を繰り返します。

どうしてこんなことになるのか・・・。
0335315NGNG
>>327
おお!
連続バイトのコピーを使った奴で教えてください。
PLCだと解かるんだが、PCはむずい。
0336デフォルトの名無しさんNGNG
var
  FileNum: Integer;
  Map: Pointer;
begin
  GetMem(Map, 40001);
  try
    FileNum := FileOpen('map.dat', fmOpenRead or fmShareDenyNone);
    if FileNum >= 0 then
      try
        FileSeek(FileNum, 0, 0);
        FileRead(FileNum, PChar(Map)^, 40001);
      finally
        FileClose(FileNum);
      end;
    // 読み込み後の処理
  finally
    FreeMem(Map);
  end;
end;
0337315NGNG
>>336
ありがとう。
なるほど、pointerか・・・
それにしても何故HELPでFileOpenとか出て来ないんだ・・・?
あぁ、でも霧が晴れてきた感じ。
0338デフォルトの名無しさんNGNG
openfileなら出るんじゃない?とか言ってみるテスト
0339デフォルトの名無しさんNGNG
せっかく316がTFileStream使ったのに水の泡じゃん。
初心者を惑わすなよ。
0340デフォルトの名無しさんNGNG
Pointer を使ったのは map が何を意味するのかわからなかったからで、
普通は型付きの配列を使った方が簡単だと思うぞ。

FileRead の第二引数は ReadFile API に先頭のアドレスを渡すだけだから、
その先のメモリがちゃんと確保されていれば型は関係ない。
0341デフォルトの名無しさんNGNG
USBの232C変換アダプターでのシリアル通信で注意することってありますか?
Delphiとは関係ないのですが、今までPC直付けのComで無問題だったのが
USBに変えたらトラブりだしてしまって。
0342ANGNG
>>334
自己レスです。

Form2がクリック等でアクティブになったときに、Form1をアクティブにしてやることで、
一応問題は回避しました。

それとはたぶん別件で、アプリが、ときどきなぜか、勝手に前面に来る、という症状が
起きています。
Application.OnActiveteが発生しているようなのだけど、一体誰が起こしてるのかが
掴めない…。イベントを発生させた元を突き止める方法は、無いでしょうか?
0343デフォルトの名無しさんNGNG
EditBoxを複数扱う処理について教えてください。
フォーム上にEditBoxがたくさんありButtonを押した時のイベントハンドラ
でそれらを例えばファイル出力する時に以下のコードを書きました。

for i:=0 to ComponentCount-1 do
begin
if Components[i] is TEdit then
begin
Writeln(F,TEdit(Components[i]).Text);
end;
end;

でも、この場合だとどのEditBoxかが判断できず
もし、2つのEditBoxをフォーム上で入れ替えたら
処理が逆になってしまいます。
どうしたらいいでしょうか?
0344デフォルトの名無しさんNGNG
>>343
sl:= TStringList.Create;
try
・sl.Sorted:= True;
・for i:=0 to ComponentCount-1 do begin
・・if Components[i] is TEdit then
・・・sl.AddObject(Components[i].Name, Components[i]);
・end;
・for i:=0 to sl.Count-1 do begin
・・Writeln(F,TEdit(sl.Objects[i]).Text);
・end;
finally
・sl.Free;
end;
0345デフォルトの名無しさんNGNG
>>344
すばらしい!
0346デフォルトの名無しさんNGNG
>>341
クリティカルな処理をしない限り、基本はCOMだろうがUSBだろうがさほど変わらないように思えるんだけど、
どういうトラブルが発生したか教えてほしい。
0347デフォルトの名無しさんNGNG
DelphiとVB、どちらが簡単ですか?
0348デフォルトの名無しさんNGNG
>>347
>>318
0349デフォルトの名無しさんNGNG
>>331-333
どうもありがとうございます。
こんな感じにしましたけど、なんかムダとかヘンな使い方してるとか
こんな使い方はしないとかありますか?
type
Tfruits = record
name : string;
amount, price : integer;
end;
type
Tfruitsshop = record
name,address,tel : string;
fruits : array[1..100] of Tfruits;
end;
var
tokyoshops : array of Tfruitsshop;
begin
setlength (tokyoshops, 123);
with tokyoshops[1] do
begin
name := 'フルーツパラダイス';
address := '渋谷区横浜1-2-3';
tel := '03-1234-5678';
fruits[1].name := 'みかん';
fruits[1].amount := 100;
fruits[1].price := 50;
fruits[2].name := 'りんご';
fruits[2].amount := 50;
fruits[2].price := 150;
end;
end;
0350デフォルトの名無しさんNGNG
> setlength (tokyoshops, 123);

念のため。これだと

tokyoshops[0] から tokyoshops[122] まで

0351デフォルトの名無しさんNGNG
> fruits : array[1..100] of Tfruits;

これも
fruits : array of Tfruits;
にしてSetLengthして使った方が無駄がなくていいと思う。
0352デフォルトの名無しさんNGNG
てゆーかTObjectList使っとけ
0353デフォルトの名無しさんNGNG
レコード型だから TList で十分
0354デフォルトの名無しさんNGNG
VB.NETの方がgenericsが使えて安全ですね。
0355デフォルトの名無しさんNGNG
でも遅いし、40MBのランタイムいるし。
0356デフォルトの名無しさんNGNG
TRegistryでReadStringについて質問があるんですが、
値を取得しようとするといつも「""」がついてくるんですが、
これをつけずに読み込む方法はないでしょうか?
0357356NGNG
すいません、こちらの手違いでした。
0358デフォルトの名無しさんNGNG
FileListBoxって勝手にアイテムがソートされてしまうのですが、
これを無効にすることはできませんでしょうか。。?
0359デフォルトの名無しさんNGNG
iriaとかFlashGetとかダウンローダーにあるようなファイルの途中からのリトライ機能ってどうやってるんですかね?
どこかにDelphiに限らず資料とかないですか?
0360デフォルトの名無しさんNGNG
http://www.geocities.co.jp/SiliconValley-PaloAlto/1512/
0361デフォルトの名無しさんNGNG
おおっ!
素早く適切な資料をありがとうございます!
0362215NGNG
ParamStr をローカル変数に代入せずに処理するとうまくいきました。
0363デフォルトの名無しさんNGNG
ParamStr なんてどこにも使われていないじゃないか。
0364デフォルトの名無しさんNGNG
いやいや、想像するに、二重起動を禁止して、自アプリの起動済みのヤツに自分の
ParamStr() を知らせるために WM_COPYDATA を使ってるのかと。メモリリークは
どこで起こるか、想像できんが。
0365デフォルトの名無しさんNGNG
>>353
ヒープにとるならレコードである必要はないだろ
0366デフォルトの名無しさんNGNG
>>359
https://sourceforge.jp/projects/openirvine/
0367デフォルトの名無しさんNGNG
theSpoke版でVB.NET始めるのとDelphi Personal買うのとどっちが賢いですか?
0368デフォルトの名無しさんNGNG
今すぐ完成度の高いものを作りたいならDelphi7Pro
そうでなければC#
0369デフォルトの名無しさんNGNG
>>365
>>349
0370デフォルトの名無しさんNGNG
>>367
両方はじめて見識を広げる
0371デフォルトの名無しさんNGNG
>>369
サイズ固定する意味ないだろって流れだろ
0372デフォルトの名無しさんNGNG
>>367
Delphiスレで質問するとはいい度胸してるな。



どっちもやっとけ。

0373デフォルトの名無しさんNGNG
>>371
>>349
0374デフォルトの名無しさんNGNG
Delphi8にはPersonalはないけどな。
0375デフォルトの名無しさんNGNG
なんかムダとかヘンな使い方してるとか
こんな使い方はしないとかありますか?
0376デフォルトの名無しさんNGNG
Delphi6 Personal(無料)
0377デフォルトの名無しさんNGNG
Delphi8 はすすめない。Delphi6Personal なら無料のはず。
0378デフォルトの名無しさんNGNG
4830円>>>無料
0379デフォルトの名無しさんNGNG
>>375
?????
0380デフォルトの名無しさんNGNG
>>358
FileListBox は Win16 のなごり。つかわないのが吉。
0381デフォルトの名無しさんNGNG
では、ParamStrとWM_COPYDATAを使ったメモリリークするコードを教えて欲しい。

ParamStrをローカル変数に代入するとリークし、
代入しなければリークしない。

だぞ?
0382デフォルトの名無しさんNGNG
>>381
他人のコードをさらして、メモリリークの疑いをかけるのは本当に失礼なことだね。

>ParamStrをローカル変数に代入するとリークし、
>代入しなければリークしない。

コードを見ないと皆目見当もつかないけど。
0383デフォルトの名無しさんNGNG
自分のコードは匿名でもさらさない、か・・・
0384デフォルトの名無しさんNGNG
そんなにメモリリークが気になるなら、送信したい文字列をINIファイルに保存して
受信側で適当なタイミングにINIファイルを読み込むようにすればどうだ?

タイミングは自分で考えるべし。
0385デフォルトの名無しさんNGNG
>>380
ということは、ソートを無効にすることはTFileListBoxでは無理なのですね。。
自作コンポの勉強するかな。。
0386デフォルトの名無しさんNGNG
TFileListBox はソースが付いているでしょ。
0387デフォルトの名無しさんNGNG
>>384
それはダサ過ぎ。WM_COPYDATA をつかっても、メモリリークは解決したそうだよ。
0388デフォルトの名無しさんNGNG
>>367
仕事用にC#
趣味用にDelphiやっとくと最高に仕合せです
0389デフォルトの名無しさんNGNG
>>388
趣味でも C# のほうが幸せになれそうだけど
0390ANGNG
Form1に、TTimer、TIdHTTP、TUIWebBrowser を置いて、

OnTimer で、
s := IdHTTP.Get(URL);
UIWebBrowser.DocumentSorce := s;
といった、ことをしているのですが、謎の、Application.OnActiveteが発生します。

色々と調べてみたところ、どうやら、UIWebBrowser.DocumentSorce := s; の後に
発生しているようなのですが、毎回発生するわけではなく、
アプリをアクティブにした後、別のソフトに切り替え、その次の最初のOnTimerの時に
Application.OnActiveteが発生し、それ以降のOnTimerでは、発生しません。
再び、アプリ→他アプリの操作を行うと、また発生します。

これは一体どういったことなのでしょうか…? orz

ちなみに、起動直後、これらの処理をしているだけであれば、このApplication.OnActiveteが来ても、
アプリは特に、前面に出ることも、アクティブになることもありません。
0391デフォルトの名無しさんNGNG
>>367, ついでに>>388-389
>>314
それから、趣味ならソフトウェア板行ってVCLと.NETの評判を探すが良い
大体、VCL≒コンポ頼みなので細かい事できない、.NET≒遅すぎ論外
0392デフォルトの名無しさんNGNG
>>390
仮に、UIWebBrowserをフォームから消して、タイマーとTIdHTTPだけでやっても、同じ現象が起きますか?
0393215NGNG
>382
本当にお恥ずかしい事です
コードはこれです
http://venus.aez.jp/uploda/dat/upload8209.zip
0394デフォルトの名無しさんNGNG
>>391
VCL≒コンポ頼みなので細かい事できない
とかいってるやつは単に知識が足りないだけじゃん。
だってそれいいいだしたらフレームワークやミドルウェア使うなーってことになっちゃうし。
結局アセンブラに近い無印Cがイイ!ってなるだけでさ。
0395デフォルトの名無しさんNGNG
>>394
禿同!
Delphiではコンポを使うだけじゃなく、作れることもお忘れなく。
使うだけなら初心者レベル。
0396デフォルトの名無しさんNGNG
両方出来た方がいいに決まってるだろ

と、流れを読まずにレスしてみるテスト
0397デフォルトの名無しさんNGNG
またこのごろテストするのがはやってるのか?

と、テストレスしてみるテスト
0398385NGNG
>>386
すいません。当方D6Perのもので。。

orz
0399デフォルトの名無しさんNGNG
StdCtrls ユニットや Controls ユニットがダウンロードできる
サイトってどこでしたっけ? ちょっと忘れました。
0400359NGNG
>>366さん
Irvineのソースコードあったんですか・・・orz
ありがとうございます。
0401ANGNG
>>392
UIWebBrowserを消しては居ないのですが、DocumentSource への代入をコメントアウトすると
どうやら、Application.OnActivate は発生しないようです。
逆に、IdHTTPを、コメントアウトして、定型文を DocumentSource へ代入した場合、
発生するようです。
どうやら、UIWebBrowserが原因のようですね。 といっても使わないわけにはいかないし…。
どうしたものか…。
0402デフォルトの名無しさんNGNG
大人しくTWebBrowser使うとか。
0403デフォルトの名無しさんNGNG
>393 begin

0404デフォルトの名無しさんNGNG
string型の配列について質問させて下さい。
コンパイルは通るのですが「デバッカ例外が発生しました」というエラーが出ます

var TestS : array[1..5] of String;
…
TestS[1]:='テスト';

上記のような感じなのですがアドバイス下さい。
0405デフォルトの名無しさんNGNG
>>404
ShortStringで固定長にするか
TStringList使え
0406ANGNG
追加です。いろいろ調べてみたところ、アプリ起動後の状態では、
UIWebBrowser.DocumentSource をいじっても、Application.OnActivate は発生しません。
ところが、一度、UIWebBrowserをクリックしてから、他ソフトに切り替え、その後に、
UIWebBrowser.DocumentSource をいじると、Application.OnActivate が発生するようです。

よくわからないのは、UIWebBrowserをクリックしても、ActiveControlは、変更にならない。

UIWebBrowserをクリック後、他のコントロールをクリック(ActiveControlはそれになる)しても
Application.OnActivateは発生する。
この時、アプリをアクティブにすると、そのコントロールは、ActiveControlはそのままに、
フォーカスを失っている模様。

UIWebBrowserをクリック後、他のコントロールAをクリック、続けて別のコントロールBをクリック
すると、Application.OnActivateは発生しない。フォーカスもそのまま。

という挙動をするようです。

>>402
そのまま、TWebBrowserを加えて、usesに、MSHTML_TLB を追加したところ…
自分で使っている、Booleanの代入全てに、Booleanは、Integerと互換性が無い、とのエラーが… orz
0407404NGNG
>>405
アドバイスありがとうございます。
しっかり状況を説明していなかったのですが
上のようなString型をいくつかつかってレコード型で扱いたいのです。
ですからレコード名をAとすると
A.TestS[1]:='test';
という感じです。
ShortStringで固定長にしてもダメでした。
TStringListはレコード内で使えるのでしょうか?

いろいろコンパイルしてみて>>404で書いた部分でエラーが出ることが解ったので
単純に質問したつもりだったのですがどうもすいません。
0408デフォルトの名無しさんNGNG
知ってるかもしれないけどWebBrowser使うとなると別の不具合が発生するよ。
修正は可能らしいけど。
0409デフォルトの名無しさんNGNG
また役に立たない情報ですね
0410デフォルトの名無しさんNGNG
>>407
TSample = record
 TestS: array[1..5] of string;
end;

こんなの??
0411デフォルトの名無しさんNGNG
>>404
ほんとにそのサンプルコードで落ちるか?
0412デフォルトの名無しさんNGNG
>>407
レコードを動的に確保してInitializeしてないとか?
0413ANGNG
>>404
string(TestS[1]) := 'テスト';
で、コンパイルは通った。正しく動いてるかどうかは、判らないけど。

いちおう、その方法で、1〜5に適当な文字列を入れて、
各行を、Memo1.Lines.Add(TestS[1]); とかで出したら、ちゃんと出た。
256文字以上とかのは、調べてない。
0414404NGNG
>>410
度々スイマセン。
こんな感じです。string型は大丈夫なのですが配列の場合がメモリエラーが出ます。
もしかしてstring型の配列はポインタを使うのでしょうか?

TSample = record
TestS : array[1..5] of string;
TestT : array[1..5] of string;
teleS : string;
numberS : string;
end;

A : Tsample;
0415デフォルトの名無しさんNGNG
>>414
そのコードじゃどうやってもエラーでないぞ。
新規プロジェクト作ってエラーの発生する最小限のコードを書いてうpしろ。
0416ANGNG
>>414
TSample = record
 TestS : array[1..5] of string;
 TestT : array[1..5] of string;
 teleS : string;
 numberS : string;
end;
var
 A : Tsample;

って状態で…

procedure TForm1.Button1Click(Sender: TObject);
begin
a.TestS[1] := 'テスト';
a.TestS[2] := 'てすと';
Memo1.Lines.Add(a.TestS[1]);
Memo1.Lines.Add(a.TestS[2]);
end;

が問題なく、実行できたよ。 >413の要らなかったのね…。
0417デフォルトの名無しさんNGNG
>>414
意外と再起動したら直るかもしれん
0418404NGNG
皆さんアドバイスありがとうございます。
そして申し訳ございません。
最後のファイル出力コードをコメントアウトしたら動きました。
その原因は少し考えて見ます。
Aさんいろいろ試してもらって本当にすいませんでした。
0419デフォルトの名無しさんNGNG
JavaScript(JScript)やVBScriptにオブジェクトを追加して使用したいのですがそういうコンポーネントはありますか?
DMonkeyはちょっと遅すぎたのでDMonkey以外でお願いします
0420デフォルトの名無しさんNGNG
EXEがCOMサーバになってWSHからいじってもらえばいいんじゃないの
0421ANGNG
Application.OnActivateを来ないようにするほうほうが、見つからないので、
Application.OnActivateが来ても問題無くする方向で、対処することにしました。
>266 >283 >334 >342 の関連です。

現在のテストアプリは、Form1、Form2 を用意して、

---Form2---
procedure TForm2.pop(Sender: TWinControl);
begin
 FSender := Sender;  //呼び出し元を記憶。
 SetWindowPos(Handle, HWND_TOPMOST, 0, 0, 0, 0,
  SWP_SHOWWINDOW or SWP_NOACTIVATE or SWP_NOMOVE or
  SWP_NOSIZE); // 非アクティブで最前面に表示
 Timer1.Enabled := True;
end;

procedure TForm2.Timer1Timer(Sender: TObject);
begin
 ShowWindow(Handle, SW_HIDE); // 自動的に隠す
 Timer1.Enabled := False;
end;



0422ANGNG
(続き)
procedure TForm2.FormActivate(Sender: TObject);
begin
 SetWindowPos(FSender.Handle, HWND_TOP, 0, 0, 0, 0,
  SWP_SHOWWINDOW or SWP_NOMOVE or SWP_NOSIZE); // 呼び出し元をアクティブに
end;

---Form1---
procedure TForm1.Timer1Timer(Sender: TObject);
begin
 UIWebBrowser1.DocumentSource := IntToStr(i);
 Inc(i);
 if (i mod 5)=0 then Form2.pop(Self);
end;

という形になっています。
Form1のタイマーがくると、UIWebBrowserが更新され、 
5回に1回Form2が最前面に表示され、一定時間で自動的に隠れます。

この状態で、1度でも、Form2.pop を使った後に、Application.OnActivate が来ると、
Form1が、非アクティブの状態で最前面に表示されてしまいます。
恐らく、隠れているForm2の、HWND_TOPMOST 設定が悪さをしているような気がするのですが、
隠す前に、Form2や、Form1を、SetWindowPos APIでいろいろ設定を変えても、
思ったような動作になりません。

Form2を使った後、Form1の状態を、使う前のものに戻すには、どうすればいいのでしょうか?
0423デフォルトの名無しさんNGNG
隠すだけならvisible使ったほうが楽だとおもうけど
0424デフォルトの名無しさんNGNG
>>420
ありがとうございます
しかしDelphi6 PersonalだとCOMサーバーアプリは作れないみたいです
情報が小出しになってしまい申し訳ありません。
0425ANGNG
>>423
Visible := False;
だと、隠れないみたいです。
0426デフォルトの名無しさんNGNG
>>424
だったら
>オブジェクトを追加して
も無理じゃないの?
オブジェクトって自作のってことでしょ。
0427デフォルトの名無しさんNGNG
TDateTimeに指定できる最も大きい値って何?
0428デフォルトの名無しさんNGNG
type TDateTime = type Double;

Double の範囲5.0 x 10^-324 .. 1.7 x 10^308

意味があればね
0429デフォルトの名無しさんNGNG
>>421-422 >>425
TForm2.pop の SetWindowPos〜 の後に
Visible := True; を入れてみたらどうでしょうか?

そして TForm2.Timer1Timer の ShowWindow〜 を Hide;
(または Visible := False;) に変えてみてください。
0430デフォルトの名無しさんNGNG
>>419
というかJavaScript(JScript)やVBScriptって速いの?
0431ANGNG
>>429
やってみました。その方法だと、確かに隠れるみたいです。
でも、Application.OnActivate で Form1が最前面に出てきてしまうのは、
同じみたいです…。
0432デフォルトの名無しさんNGNG
>>215
>>393のソース

確かにメモリリークを起こしていますね。
解放し忘れているのは TConversion で TRichEdit関連。
最初に起動した方を終らせるときにでます。

ファイル名を渡さなくても、
 RichEdit1.Lines.LoadFromFile('C:\hoge\Unit1.pas');
の様に直接読み込んでもリークしますよ。
0433デフォルトの名無しさんNGNG
>>426
VBScriptやJScriptのパーサーがあれば自由に追加したりできるのではないかと思い質問してみました

>>430
DMonkeyはコンパイルの作業があるのでDMonkeyよりは速いと思います
0434デフォルトの名無しさんNGNG
ところで、WM_COPYDATAで送るときにGetMemは必要ないよね?
長い文字列型は、GetMemでメモリを確保しているんだし。
0435デフォルトの名無しさんNGNG
TRichEditStrings.LoadFromFileが原因みたい。
WM_COPYDATAは関係無し。

これだけで二つ解放し忘れてる。

procedure TForm1.FormCreate(Sender: TObject);
begin
RichEdit1.Lines.LoadFromFile('C:\test.txt');
RichEdit1.Lines.LoadFromFile('C:\test.txt');
end;
0436デフォルトの名無しさんNGNG
メモリリークのバグを修正しました。

procedure TForm1.FormCreate(Sender: TObject);
begin
RichEdit1.Lines.LoadFromFile('C:\test.txt'); Dec(AllocMemCount);
RichEdit1.Lines.LoadFromFile('C:\test.txt'); Dec(AllocMemCount);
end;
0437デフォルトの名無しさんNGNG
>>433
コンパイルの作業があるから遅いってどういう意味?
普通はコンパイルした方が早くなるのだけど。
だってそうでなきゃわざわざコンパイルなんかしないって。
いっとくけどスクリプト言語は総じて遅いよ。だからCとかでサブルーチン作ったりするわけだし。
0438デフォルトの名無しさんNGNG
フォルダーと拡張子の無いファイルを見分けるのはどうすればいいのですか?
0439デフォルトの名無しさんNGNG
FileGetAttr 関数かGetAttribute関数
0440デフォルトの名無しさんNGNG
>>438
拡張子の有無で判定するのは危険。フォルダにだって拡張しつけられるし。
0441デフォルトの名無しさんNGNG
>>439
>>440
ありがとうございます無事動作しました
0442デフォルトの名無しさんNGNG
「デバッカ例外が発生」というエラーに悩まされています。

プロジェクトProject1.exeがEAccessViolationクラスの例外を発生しました。
'Access violation at adress 00404272 in module 'Project1.exe' Read of adress FFFFFFFF'
プロセスは停止しています。再開するにはステップ実行又は実行を選択してください。

というメッセージです。
自分で確認し間違っている所はないと思うのですが・・・
例えば以下のコード(ボタンを押した時のイベントハンドラ)で出ます。
コード自体は只フォーム上にTEditを幾つか配置してそのTEdit内の文字数を
Integer型の配列mojilに入れていくというもので特に意味はありません。
デバックするとfor文2回目のmojil[i]:=… の所でエラーが出ます。
どうかアドバイスを下さい。お願いします

for i:=0 to ComponentCount-1 do
begin
if Components[i] is TEdit then
begin
  mojil[i] := Length(TEdit(Components[i]).Text);
end;
end;
0443デフォルトの名無しさんNGNG
>>442
そのコード自体は問題ない。新規アプリで試せば動くはず。
ヘルプ読んで思い当たる節ない?

<ヘルプ読もうね>
EAccessViolation 例外は,アプリケーションで次のような動作を実行した場合に生成されます。
・nil ポインタを逆参照した場合
・コードページに書き込もうとした場合
・そのアプリケーションに対して仮想メモリが割り当てられていないメモリアドレスにアクセスしようとした場合
0444デフォルトの名無しさんNGNG
上のコードだけで推測した場合、mojil[i]の添え字 "i" が、
mojilの要素の数 - 1 "high(mojil)" を超えてしまった事が
例外の原因と考えられる。
0445442NGNG
>>443
返事ありがとうございます。
「デバッカ例外が発生」のhelpしか読んでませんでした、すいません。
しかし、EacessViolation例外のhelpもポインタ使ってないですし思い当たる節がありません。
元々>>442のコードだけでなく、どこで上記のエラーが出るのか調べていました。
何か全然関係のないコードを削ったりしたらエラーが消えたり出たりでおかしいのです
(これじゃ意味不明だと思いますが)
>>442のコードは新規アプリで実行しています。フォームにはbuttonとTEditを10個程置いてです。
このコードでエラーが出るのは変だと思ったのでここで質問した次第です。
環境はXP-Home、Delphi personal version6.0 Update Pack2 を使用しています。
0446442NGNG
>>444
仰るとおりです…、ありがとうございます。
元のコードを直しても動きました。
本当に情けない、こっ恥ずかしいです。
俺はこんなミスに丸一日悩んでいたなんて…
元のコードは関係のない所を消したりしたら上記のコード書いていても問題なく出来たのに、
新規アプリで上記のコードだけだとエラーが出るのでかなり迷宮入りしてました。
只、こういうミスで上記のエラーが出ることを知ったのは初心者の私にとって勉強になりました。
丸一日というとても高い勉強代だったような気がしますが。
ほとんど愚痴になってしまってすいません。ちょっと今の気持ちを吐き出したかったので。
本当にありがとうございました。

0447デフォルトの名無しさんNGNG
最近じゃ自分が書いたコードを見てもさっぱり原理(アルゴリズム)が理解できん。
昔の自分、頭よすぎ・・。

0448デフォルトの名無しさんNGNG
TTreeView で質問
ImageList に0〜2の三枚の画像を登録し、
Collapsed のとき、ImageIndex := 0
Expanded のとき、ImageIndex := 1
とある TTreeNodeは ImageIndex := 2
としています。ここまでは普通に動きます。

で、とある TTreeNode (ImageIndex=2) をクリックすると
ImageIndex が 0 の画像を表示してしまいます。
このとき、Collapsed, Expandedイベントは発生しないようにクリックしてます。
(実際に発生してません)

OnClick イベントで直接 Selected.ImageIndex := 2 としても反映されません。

どうしてなのでしょうか?また回避方法はありますでしょうか?
Delphi7 を使用しています。
0449デフォルトの名無しさんNGNG
>>447
ちなみに何歳ですか?
0450デフォルトの名無しさんNGNG
1年前のコードなんてほとんどわかんねーよ
下手すると3ヶ月前でも危ないぜ
0451デフォルトの名無しさんNGNG
>>448
もしかしてイベント起こるごとに画像変えてるの?

TTreeNode.ImageIndex  >通常時の画像
TTreeNode.SelectedIndex >選択時の画像

これでどぞー。
0452デフォルトの名無しさんNGNG
>>451
ありがと。
えーと、伝わりにくくて済みません。
画像は3種類で、
1.展開時の画像(ImageIndex=0)
2.折りたたんだ時の画像(ImageIndex=1)
3.展開時、折りたたんだ時関係なく、一定の場所にある Node の画像(ImageIndex=2)

一定の場所の Node (ImageIndex=2) を選択したときに、
1の画像になってしまう現象です。(常に ImageIndex=2 にしたい)

ImageIndex は フォームクリエイトで設定し、

Expandedイベントと、Collapsedイベントでも
Node.ImageIndex を再設定しています。
0453デフォルトの名無しさんNGNG
>>452
Node.ImageIndex := 0;
Node.SelectedIndex := 1;

これでNodeは通常時0の画像が、選択時1の画像が自動で表示される。
じゃあ常に同じ画像を表示させるにはどうすればいいでしょう?
0454デフォルトの名無しさんNGNG
>>453
されは OnClick イベントに書くんですよね。
えーと・・
ちょっと今考えてます。
0455デフォルトの名無しさんNGNG
>>454
いや、Nodeの作成時に設定すれば後は勝手に通常、選択で画像を切り替えてくれる
イベントとかに記述してた画像切り替えの部分は全削除で
0456448NGNG
>>455
ありがと。
固定したい Node の
ImageIndex := 2;
SelectedIndex := 2;
とすると、2で固定されたみたい。
正解ですか?
0457デフォルトの名無しさんNGNG
>>456
激しく正解
0458デフォルトの名無しさんNGNG
>>449
23です。
ちなみにコードはだいたい1年3ヶ月前ぐらいにかいたもの。

一度だけですが、昔の自分のコードを見てあまりの見事さに
「これを自分が書いたのか」と驚いたことがあります。(アルゴリズムの話)
0459デフォルトの名無しさんNGNG
>>457
わっマジでありがと。
ImageIndex だけ設定しても
SelectedIndex に値を入れていないと0になっているから
それが表示されていたって事ですね。

SelectedIndex って知らなかったw
0460デフォルトの名無しさんNGNG
TStringListの文字列リストをCSV形式でテキストファイルに保存するには
どうしたらいいでしょうか?
今まではSaveToFile使って保存していました。
CSV形式で保存するには一度CommaTextプロパティを使って文字列変数に入れて
それを吐き出すしかないのでしょうか?
0461デフォルトの名無しさんNGNG
それしかない
0462デフォルトの名無しさんNGNG
CommaTextを別のTStringList.Textに放り込んでSaveToFileするとか。
0463460NGNG
>>461-462
そうですか。
ありがとうございました。
0464デフォルトの名無しさんNGNG
>>458
>「これを自分が書いたのか」と驚いたことがあります。

そういうことってあるね。異様に冴えている瞬間があるんだよ。
0465デフォルトの名無しさんNGNG
>「これを自分が書いたのか」と驚いたことがあります。
違う意味ならある(w
0466デフォルトの名無しさんNGNG
コードは必ずにコメントを付けておきましょうね
0467デフォルトの名無しさんNGNG
鬱状態になると、思考力集中力等が落ちて、
今まではどうでもなかったことが、
出来なくなったり、多大な負担を感じるようになる。


と言うのは
0468デフォルトの名無しさんNGNG
TStringListのLoadFromFileでテキストファイルを読み込むとき
行ごとの扱いはStringsプロパティで
MyStringList.Strings[i]またはMyStringList[i] // Mystringlist : TStringList;
とし、これを使えばいいのは解るのですが
各文字列リストの文字ごとを扱うにはどうしたらいいでしょうか?
例えばMyStringListの一行目の三文字目を指定したい時などです。
MyStringList.Strings[0][3] 違いますよね・・・
教えてください。
0469デフォルトの名無しさんNGNG
一旦ローカル変数へ代入するのが良いと思います。
0470デフォルトの名無しさんNGNG
copy(MyStringList.Strings[1],3,x)
とか…。
ちなみにMyStringListが「空っぽ」じゃないことを確かめないと
またいらんエラーが。

delphi「1行目も何も、空だっちゅーの!」
0471470NGNG
間違えた。「strings[1]→[0]」か…。
0472デフォルトの名無しさんNGNG
>>469-470
返事どうもです。
一回文字列に代入して扱う事にします。
0473ANGNG
>>468
やってみたら、
MyStringList.Strings[0][3];
でも、動いたよ。
0474デフォルトの名無しさんNGNG
ヘルプを読めば一発で解決すると思った。
0475デフォルトの名無しさんNGNG
| 何について調べますか?
| ┌────────────┐
| |. おまえの消し方        |
| |.                    |
| └────────────┘
| [ オプション(O) ]   [ 検索(S) ]
|
`──────────┐ ┌───
           , '´l,  ..| ./
       , -─-'- 、i_  |/
    __, '´       ヽ、
   ',ー-- ●       ヽ、
    `"'ゝ、_          ',
      〈`'ー;==ヽ、〈ー- 、 !
       `ー´    ヽi`ヽ iノ
                ! /
              r'´、ヽ
              `´ヽノ
0476デフォルトの名無しさんNGNG
>>475
おまえは画面上ちょろちょろするから好かん
0477デフォルトの名無しさんNGNG
質問です。
Tmemoからクリップボード使ってチャットに張り付ける「AAコピペツール」を作ったのですが
ときどき「クリップボードを開くことができません」というポップアップが出てしまって困っています。
あまりに高速連続で張り付け過ぎなのか・・・
例外処理しても出てくるんです、こいつ。

しかもソフトの都合上、最前面に表示してるのですが、ポップアップがウィンドウの後ろに隠れてしまうのです。
ポップアップの上にウィンドウが有ると見えないのにポップアップにフォーカスが行くのでウィンドウも移動できず、
強制終了するしかない!ように見えるのが辛い。
 (enterを押すとポップアップのOKが押されるので注意書きには書いてあるのですがイマイチな対処法で・・・)

しかもペースト先がJAVA製の為かクリップボードを使わずwinapi使って文字列を送り込む事が出来ないようで( つД`) (CTRL+V ENTERの情報を送ってます)

検索掛けてもクリップボード監視ソフトが怪しいくらいしか出てなかったのでほとほと困っております。
どなたかこのエラー消す方法を教えてくださいませ。

ウェイト掛けるとこのエラーは出てない気がしますが、高速の時でも出たりでなかったりなので解りません。
0478デフォルトの名無しさんNGNG
>>475
その質問、入力したことあるw
0479ANGNG
>266 以来、お騒がせしていた、サブフォームポップアップと、謎のApplication.OnActivate問題が
やっと解決しました…。

結論から言うと、Form2のポップアップに、SetWindowPos APIを使わずに、

 FormStyle := fsStayOnTop;
 Show;

隠す時には、

 FormStyle := fsNormal;
 Hide;

で、OKでした…。
この隠す時に、FormStyleをセットしなおすのが大事だったようで、
>266の質問する以前は、この処理をしていなかったため、Form1が勝手にポップアップする
という現象が起きていたようです。それで、FormStyleは使えないと判断してしまっていました。
あと、fsStayOnTop で、Show しても、アクティブになったり、フォーカスを奪ったりは、
しないんですね…。

1週間かかって、こんな単純な方法でよかったなんて… orz
いろいろお騒がせいたしました。
0480デフォルトの名無しさんNGNG
TList.Sortを使ってソートしているのですが
ソートを重ねると値が同じところが入れ替わります
ソート結果を安定させる方法は無いでしょうか?

(b,1)(d,2)(d,1)(a,1)(c,1)(a,2)(d,3)
        ↓
(a,1)(a,2)(b,1)(c,1)(d,1)(d,2)(d,3)   1回目のソート
        ↓
(a,2)(a,1)(b,1)(c,1)(d,3)(d,2)(d,1)   2回目のソート
        ↓
(a,1)(a,2)(b,1)(c,1)(d,1)(d,2)(d,3)   3回目のソート



比較はこれで行ってます

function SortCompare(Item1, Item2: Pointer): Integer;
begin
Result := CompareText( Item1.値1, Item2.値1 );
end;
0481デフォルトの名無しさんNGNG
> ソートを重ねると値が同じところが入れ替わります

クイックソートの仕様。値が同じ項目の順番は保証されない。
0482デフォルトの名無しさんNGNG
>>477
WinXPのバグ
0483デフォルトの名無しさんNGNG
>>482 。・゚・(ノД`)・゚・。
0484デフォルトの名無しさんNGNG
XPでDelphiアプリがよくバグるんですけど
0485デフォルトの名無しさんNGNG
素直に文字列送ればいいのに。クリップボードより楽だろ。
0486デフォルトの名無しさんNGNG
文字列よりも愛を送ってほしい・・・
0487デフォルトの名無しさんNGNG
>>484
またおまえか
0488デフォルトの名無しさんNGNG
Delphi8買おうとしたら猛反対にあったんですけど、何か悪い点があるんですか?
0489デフォルトの名無しさんNGNG
猛反対した人はどう言ってるの?
0490デフォルトの名無しさんNGNG
> Delphi8買おうとしたら

なにをしたくて買おうとしたの?
0491デフォルトの名無しさんNGNG
まあ確かにVBに負けてるし。
0492デフォルトの名無しさんNGNG
>>488
そもそも悪い点の無い言語/開発環境なんて無い
どの言語/開発環境も長所・短所がある
0493デフォルトの名無しさんNGNG
けど、長所短所のバランスが大切だ
0494デフォルトの名無しさんNGNG
>>492
そんな一般論ではなく、Delphi8 の長所・短所が知りたいんじゃないの
0495デフォルトの名無しさんNGNG
VB厨の釣りだから無視
0496デフォルトの名無しさんNGNG
Delphiじゃないと書いてて気持ち良くなれない
0497デフォルトの名無しさんNGNG
2バイト文字と1バイト文字の識別ってどうすればいいのですか

[]で囲った情報の読み出しをしているのですが
]を探している時に2バイト文字の可能性があるので
1つ前の文字を$80以下かどうか調べてみたのですが

本当に]だった場合で前が2バイト文字だと1つ前の文字が$80以上の時があります

]だけを抽出する方法はありますか?
0498デフォルトの名無しさんNGNG
一度WideCharに変換してから元に戻すとか。
0499デフォルトの名無しさんNGNG
ByteType
0500デフォルトの名無しさんNGNG
LeadBytes
0501デフォルトの名無しさんNGNG
>>498-500
おお、できた〜!!ありが�d
0502デフォルトの名無しさんNGNG
>>482
WinXPのバグなの?
オレの環境は違うけど、例外出るけど。
結局無視することにした。

>>477
環境は何?やっぱりWinXP?
例外の処理ってどんな感じでやってるの?
オレは

try
〜

except
end;
↑要するに何もしない
0503デフォルトの名無しさんNGNG
今、DB&Webプログラミングって本見て勉強してます。
ふと疑問に思ったのですが、DBをサーバー側にインストール
するのって通常どうやってるんですか?
インストーラーを実行するんですか?
それとも必要なものをFTPとかで送るんですかね?
0504デフォルトの名無しさんNGNG
Oracleだったらインストーラー使ってサーバーにインストールするな。
MSSQL鯖でも同じ。
0505デフォルトの名無しさんNGNG
(´,_ゝ`) プtッ
0506デフォルトの名無しさんNGNG
>>502 xpですわ。確かにエラー出たって言ってた人もxpだったです。
例外処理は
try
〜
except
StatusBar1.Panels[0].Text:='ゴメンバグッタ( ゚д゚)';
end;//例外エンド
end;
てな感じで。 ゴメンバグッタ( ゚д゚) はちゃんと出る

例外処理は普段使わないから難しいです
0507デフォルトの名無しさんNGNG
>>506
ふーむ。
オレは前述ので沈黙してくれたがなぁ?<例外

ダメもとで空欄にしてみては?(ステータスバーの記述を無くす)
って、ダメもとな話しちゃアカンかw
0508>>477NGNG
(゚д゚)解決しました

except
StatusBar1.Panels[0].Text:='ゴメンバグッタ( ゚д゚)';
sleep(1000);
beep;
keybd_event( VK_RETURN, 0, 0 , 0 );
keybd_event( VK_RETURN, 0, KEYEVENTF_KEYUP , 0 );
end;//例外エンド

こぴぺでenter送ってるなら、ポップアップにも送って自動で押して貰おうとか思ってそのままコピペしたら
ウマーくいきました。無理矢理な解決法ですが問題ないようです。

(゚д゚)みなさまありがとうございました。 この解決が誰かの役に立ちますように
0509デフォルトの名無しさんNGNG
'
を出力するにはどうしたらいいんでしょう?「'」です
0510デフォルトの名無しさんNGNG
''
0511デフォルトの名無しさんNGNG
シフトJISの 82A9 を文字の か に変換するにはどうしたらいいでしょうか?
0512デフォルトの名無しさんNGNG
>>511
procedure TForm1.Button1Click(Sender: TObject);
var
s:string;
code:DWORD;
begin
code := $82A9;
s := Chr(code shr 8) + Chr(code and $FF);
Label1.Caption := s;
end;
0513232NGNG
大変遅くなりましたが、結局>>234さんの助言を元に
OnCalcFieldsイベントを使い、実現できました。ありがとう
ございました。

今回はさらにわからないことがあったので質問させて頂きます。
>>232のプログラムで、小計をさらに足し合わせて、別TEditに
合計という形で出力したいと思います。SQLで毎回問い合わせる
のは、効率が良くないのに加え、できれば合計を入力と同時に
更新できればと思っています。何か方法はないでしょうか?

Delphi 7 Professional
現在はParadoxを使用しています。
ゆくゆくは(私の知識が追いついたら)DBサーバも作りたいと
思っています。

よろしくお願いします。
0514デフォルトの名無しさんNGNG
Delphiってgenerics使えますよね。
VBでもできるのにDelphiでサポートされてないなんて考えられません。
0515デフォルトの名無しさんNGNG
> VBでもできるのに

なぁ、釣りはよそでやってくれよ
0516デフォルトの名無しさんNGNG
釣りに見える理由は?
何か都合でも悪いの?
0517デフォルトの名無しさんNGNG
釣りは無視
0518デフォルトの名無しさんNGNG
> VBでもできるのにDelphiでサポートされてないなんて考えられません。

そうですね。
VBでもまだベータでしょ。Delphi も .NET2,0 からサポートされる(はず)
0519デフォルトの名無しさんNGNG
>>514はベータ版のVBを隅々まで使いこなしている優秀なプログラマもどきだから
もまいらも素直にご教授賜っておけ。
0520デフォルトの名無しさんNGNG
↓ 514による generics を使ったコード例とその説明
0521デフォルトの名無しさんNGNG
ShowMessage('ぬるぽ');
0522デフォルトの名無しさんNGNG
>>521
すごい、すごい、さすがVB.NETは違うなぁ。ShowMessage() が特にすごい。
0523デフォルトの名無しさんNGNG
TActionで、アクションにEditCopyとかEditCutなど標準アクションを
追加すると、コピーとか切り取りの機能が実現できますが、
ここでTEditとかTMemo以外のコントロール(TDBGridなど)で、
独自に情報をクリップボードに送り込みたいときがあるのですが、
EditCopyのOnExecuteイベントにその処理を書き込もうとすると、
確かに実現できるのですが今度は通常のEditコントロールへの
処理が死んでしまいます。
EditCopy, EditCutなどを残しつつ、その処理を横取りして独自にクリップ
ボード関連の処理はできないでしょうか?
(通常のTActionのOnExecuteでコントロールの種類を判断して処理を
分岐せよと言われてしまえばそれまでですが、ほかに方法はないのかと。。。)
0524デフォルトの名無しさんNGNG
> コントロールの種類を判断して処理を分岐せよと

これで何が不都合なの?
0525デフォルトの名無しさんNGNG
>>523-524
EditCopyなんかを使うと、コピーができる適切なコントロール(TEditとか
TMemo, TDBEditなど…)に対して適時Enabledが制御されるし、たとえば
対象コントロールがReadOnlyの場合などは、EditCutやEditPasteが自動的に
Falseに設定されるので、設計者がコントロールに対してEnabledなどを
制御する必要がなくなるんだけどれど、
通常のTActionを使うと、全部自前で判断しなければならなくなるから
じゃないのか?よくわからんし大外しかもしれんが。
0526デフォルトの名無しさんNGNG
DelphiってGUIアプリ以外に何か適してる分野ってありますか?
最近はVB.NETはウェブアプリが得意のようですが。
0527デフォルトの名無しさんNGNG
全部適してます。
0528デフォルトの名無しさんNGNG
DelphiってGUI以外作れないじゃん。
0529デフォルトの名無しさんNGNG
>>528 君には無理
0530デフォルトの名無しさんNGNG
Delphi >> Delphi.NET >> VB.NET >> VB
0531デフォルトの名無しさんNGNG
VB厨の言ってることってVBとは直接関係なくて .NET のライブラリを自慢してるのな。
0532デフォルトの名無しさんNGNG
VB.NET使いも食わないVCL.NET。(ゲラ
0533デフォルトの名無しさんNGNG
>>531
言語仕様とライブラリの区別がつかないんだよね。で、ライブラリを自慢しても
言語固有じゃないのが笑える。
0534デフォルトの名無しさんNGNG
>>532
Delphi8 は VB.NET と同じように .NET ライブラリを使えるよ。むしろこっちがおすすめ。
0535デフォルトの名無しさんNGNG
んで、超初心者がDel8使ってるの?実際のところ。
0536デフォルトの名無しさんNGNG
>>535
そう、よく分からないけど使ってるのは超初心者だけのような気がする。
0537デフォルトの名無しさんNGNG
ちょっと初歩的なこと聞くけど、いい?

try
 **A**
 try
  **B**
 except
  **B'**
 end;
except
 **A'**
end;

ってあるとき、Bで例外が発生すると、
B' が実行されることは分かるけど、
A' も実行される?まあ、自分で試せば
いいことだけどさ。
0538デフォルトの名無しさんNGNG
書き込んでる間に試せると思うけど
0539デフォルトの名無しさんNGNG
B'でexceptしない場合、A'が実行される
B'がexceptした場合、
 B'で再raiseするとA'が実行される。
 B'でraiseしないとA'が実行される。
0540デフォルトの名無しさんNGNG
× B'でraiseしないとA'が実行される。
○ B'でraiseしないとA'が実行されない。
0541デフォルトの名無しさんNGNG
>>539
ありがと。一瞬戸惑ったけど、>>540読んで、よく分かった。

tryネストの中で例外が発生して、メモリ解放などで
最外のexceptまで実行させたいときは、最外のexceptだけで
例外処理すればいいってことですね。違うかな?
0542デフォルトの名無しさんNGNG
例外処理なんて今時VB.NET使いでも常識だよね
0543デフォルトの名無しさんNGNG
> まあ、自分で試せばいいことだけどさ。

喧嘩を売っているとしか思えないな(笑)
0544デフォルトの名無しさんNGNG
ウィンドウを他のウィンドウとか画面の端にひっつけるのってどうやったら実現できますか?
0545デフォルトの名無しさんNGNG
delphi始めてまだ半年足らずの新米PGです。
DLLとパッケージの違いがよく分からずに悩んでいます。
プログラミングの質問じゃなくて申し訳ないんですが、色々調べてもこの2つの違いがよく分かりません。
どなたかこんな自分に分かり易く説明して頂けないでしょうか?
宜しくお願いします。スレ違いですみません。
0546デフォルトの名無しさんNGNG
すれ違いと分かっていながらなんで聞くんですか
0547デフォルトの名無しさんNGNG
>>545

ここ読むよろし
http://www2.big.or.jp/~osamu/Delphi/delphi-browse.cgi?index=067299
0548デフォルトの名無しさんNGNG
>>543
そんなこといってたら、ここにある質問の
ほとんどがそうだろ (w
0549デフォルトの名無しさんNGNG
いやいや、自分で試せば済むことなのを承知していながら質問するのはそんなに多くないよ。
0550デフォルトの名無しさんNGNG
いやいや>>537は自分で試せばいいはなしだよなぁと思いながらも
自分から確実にエラーをだすようなコードがわからないので
とりあえず質問したという経緯じゃない?
0551デフォルトの名無しさんNGNG
よくそんな他人をフォローするねぇ。
経緯まで勝手に代弁するとはご立派。
0552511NGNG
>>512
無事変換することができました
どうもありがとうございました!
0553デフォルトの名無しさんNGNG
>自分から確実にエラーをだすようなコードがわからないので

StrToInt('1.3'); とか?(笑
0554デフォルトの名無しさんNGNG
それこそraiseでいいじゃん
0555デフォルトの名無しさんNGNG
>自分から確実にエラーをだすようなコードがわからないので

N:=1/0;
0556デフォルトの名無しさんNGNG
自慢気にエラーコード書いてるが奴らがいるが
こいつらはこんなんで優越感に浸っているのだろうか。
>>537がよっぽどのバカなだけなのに。
哀れ。
0557デフォルトの名無しさんNGNG
>>555
定数式使うとコンパイル時エラーになっちゃいそうだが
0558デフォルトの名無しさんNGNG
> こいつらはこんなんで優越感に浸っているのだろうか。

それは勘ぐり。>>556 はまじめなんだね。
0559デフォルトの名無しさんNGNG
554=556 だったら可笑しいね。
0560509NGNG
一晩考えましたがやっぱりできません。
もう一度質問させていただきます。

stringに「'」を代入するにはどうしたらよいのでしょうか?
0561デフォルトの名無しさんNGNG
s := '''';
0562デフォルトの名無しさんNGNG
var
 S: String;
begin
 S:= '''';
0563デフォルトの名無しさんNGNG
>>510は空気
0564デフォルトの名無しさんNGNG
>>556
(´-`).。oO(何でこの人ここにいるんだろう…)
0565509NGNG
>>561-562
おお、できました。
ありがとうございます。
一晩悩んだのが馬鹿みたいだ・・
0566デフォルトの名無しさんNGNG
こういうのは悩むんじゃなくて調べるんだよ
0567デフォルトの名無しさんNGNG
510 に回答あるじゃん
0568デフォルトの名無しさんNGNG
ttp://www.gazo-box.com/waracolla/img-box/img20040531180328.jpg
0569デフォルトの名無しさんNGNG
PCが死にました
データをすべて失いました
Delphi6はどうやって手に入れればいいのですか?
0570デフォルトの名無しさんNGNG
ベクターにPersonalならあるよ
0571デフォルトの名無しさんNGNG
>>569
俺も今日OS再インストールしたよ。1月にPC買ってもう5,6回目・・・
最初の数回は何もわからずにDelphiの作成中プロジェクト死なせてもうた
0572デフォルトの名無しさんNGNG
>>570
ありがとうございます当方ISDNですので寝ながらDLしたいと思います

>>571
バックアップって取るタイミングが難しいですね
3年平穏に過ごしていたので壊れるなど予想すらしてませんでした・・・
0573ANGNG
>>572
ISDNでダウンするなら、Delphi6 のCDが付属してる、書籍を1冊買っておくのもいいと思われ。
0574デフォルトの名無しさんNGNG
今落として焼けばいいじゃん
0575デフォルトの名無しさんNGNG
キー入力を確実にするにはどうしたらいいでしょう。
GetKeyStateでやっているのですが、時々失敗します。
0576デフォルトの名無しさんNGNG
> GetKeyStateでやっているのですが、時々失敗します。

コードを見せて
0577デフォルトの名無しさんNGNG
> キー入力を確実にするにはどうしたらいいでしょう。

質問の意味が不明です。
0578575NGNG
>>576
if (GetKeyState(VK_PRIOR)<0)then
begin
…
end;
とやってます。一方でwhileループを動かしてBitmapをコピーしているのですが、
そちらが重いのかキーを5回に1回くらい認識しません。
whileループには application.ProcessMessages;
を入れてます。
よろしくおねがいします。
0579デフォルトの名無しさんNGNG
>>521
ShowMessage( 'ガッ' );
0580デフォルトの名無しさんNGNG
>>578
根本から間違ってるような・・・
0581デフォルトの名無しさんNGNG
>>580
そういうレスをする場合は、正しいと思われる例を出すべきだと思うがどうか。
0582デフォルトの名無しさんNGNG
DelphiってXPと相性悪くない?
0583デフォルトの名無しさんNGNG
システムドライブのバックアップくらいきちんと取れよ。

▲▽バックアップソフト徹底比較スレ△▼ No.7
http://pc5.2ch.net/test/read.cgi/software/1078146219/l50
0584デフォルトの名無しさんNGNG
重い処理があるなら、WM_KEYDOWNで処理した方が良いのでは?
重い処理をしている途中でキーが押された場合でも
Application.ProcessMessagesでメッセージが発生するよ。
0585デフォルトの名無しさんNGNG
GetAsyncKeyState

これでダメだったらMSDNの説明嫁
0586デフォルトの名無しさんNGNG
TFormが2つある場合の質問です。
アプリ起動時に1つだけFormを立ち上げ(Visible)
そのForm上にあるTButtonを押すと、
もう一つのFormが現れ元のForm(Buttonがある方)が消えるようにしたいです。
どうしたらできますか? 教えて下さい、お願いします。
0587ANGNG
>>586
単純な方法でいいなら、

procedure TForm1.Button1Click(Sender: TObject);
begin
 Form2.Show;
 Hide;
end;
0588デフォルトの名無しさんNGNG
>>587
できました。有難うございます。
0589デフォルトの名無しさんNGNG
>>578
OnKeyDownでフラグをセットして
ループの中でフラグをチェックするように変更してみては
0590ななしへたぐらま ◆XcB18Bks.Y NGNG
>>578 = >575
while なんとか do
begin
 処理
 Application.ProcessMessages;
 while かんとか do
 begin
  重い処理(*1)
 end;
 処理
end;
もしこんな構造になっていましたら(*1)の中にApplication.ProcessMessageを移動.
0591575NGNG
>>589
ありがとうございます。やってみます。
>>590
それをやろうとしたのですが、その重い処理内はBMPのコピーで、入れる隙間がなかったのです。
結局常にフォーカスを持たせたボタンをスペースバーで押す方法にしてます。
正しさとしてこれでいいのかサッパリわかりませんが・・・結果うまく行ってるので
0592デフォルトの名無しさんNGNG
分割不可能な重い処理はサブスレッドでやるしかない
0593デフォルトの名無しさんNGNG
> 結局常にフォーカスを持たせたボタンをスペースバーで押す方法にしてます。

GetAsyncKeyState を推奨。最小位ビットはメッセージ処理と無関係に履歴を
見られる。
0594デフォルトの名無しさんNGNG
MainMenuをALTキーに反応させない方法ってあるでしょうか。
0595デフォルトの名無しさんNGNG
TTimerコンポーネントについて教えてください。
OnTimerイベントで設定した内容を同じForm上のbuttonを押したときに
リセットしたいのですがその命令(関数?)が解りません。
お願いします。
0596デフォルトの名無しさんNGNG
Enabled:=False;Enabled:=True
0597デフォルトの名無しさんNGNG
>>595
リセット?


まぁButtonを押したときにOnTimerを実行させればいいのね?
Timer1.OnTimer(nil);

必要にあわせて変えて。
0598デフォルトの名無しさんNGNG
>594
FormのonShortCutで
if なんとか=VK_MENU then Handled:= true;
0599デフォルトの名無しさんNGNG
>>598
うまくいきました。ありがとうございます。
0600デフォルトの名無しさんNGNG
マルチメディアなどに使うTrackBarの使い方、
どこかに解説がありませんか?

再生中はマウスが押されてる間は位置の自動更新を
しないで、メディア側の位置を動かし続けるというような
方法だと思うんですが、うまくいきません。

よろしくお願いします。
0601デフォルトの名無しさんNGNG
バイナリ単位で編集するにはどうやったらいいの?
バイナリディタみたいに
0602デフォルトの名無しさんNGNG
>>601
ファイルとメモリどっち?
0603デフォルトの名無しさんNGNG
> バイナリ単位で編集するにはどうやったらいいの?

はぁ? TMemoryStream に読み込めば、どのバイトでもどんなバイナリでも書き込めるけど。
0604デフォルトの名無しさんNGNG
ファイルならMapViewOfFileだな。
ファイルの内容をポインタ使って操作できる。
いちいちTMemoryStremで全部読み込む奴はアフォ。
1GBのファイル開いたらどうするつもりなんだ。
0605デフォルトの名無しさんNGNG
>>604
別にTFileStream使えばいいだけじゃ?
0606デフォルトの名無しさんNGNG
ネベツネを消去できるコードを教えて下さい
0607デフォルトの名無しさんNGNG
文字列操作のPosを反対から検索したいのですがどうしたらいいでしょうか...
0608デフォルトの名無しさんNGNG
サンプルで合った Rich Edit Control Demo を FormではなくFrameに変更したいのですが
TMainForm = class(TForm) を
TMainForm = class(TFrame) にしてみましたがやっぱり色々エラーが出来てます。

FormからFrameに変更する簡単なやり方はないでしょうか?

なんで、こんなことがしたいかというとRichEditでコピーとか貼り付けなどの
よく使う機能をまとめたいとおもっていました。(ワードパットみたいなもの)
コンポーネントがあったら教えてください。

お願いします。
0609デフォルトの名無しさんNGNG
野球というじじくさいスポーツを消去できるコードを教えて下さい
0610595NGNG
>>596,597
返事遅れてすいません
Enabledプロパティ使ってできました。
ありがとうございました。
0611607NGNG
ごめんなさい。ここのコード見て自分でやってみます。
http://www2.big.or.jp/~osamu/Delphi/Tips/key.cgi?key=40#0234.txt
0612デフォルトの名無しさんNGNG
>607
そのやり方でいいならReverseStr。
AnsiStrScanで検索しまくるのも手かも。
0613デフォルトの名無しさんNGNG
データベースにデータを書き込むプロスラムを作っています。
ExeSQLを使って、データをInsertするときKey重複エラー
が発生しても例外が取れなくて困っています。
ExecSQLでKey重複エラーの例外をとることができるのか
教えてください。
使っているDelphiのバージョンは5です。
0614607NGNG
>>612さん
逆さまに検索する事で、一つ上のフォルダのアドレスを取得することを目的としてました。
ですから、逆向き検索は簡単にできればOKですので、リンク貼ったトコの(2)を使うことにしました。
とりあえず完成はできました。
書き込みに先走りすぎたorz
0615デフォルトの名無しさんNGNG
DelphiアプリをXPで動かすとよくハングします。どうしてでしょう?
0616デフォルトの名無しさんNGNG
釣りじゃないなら詳細よろ
0617デフォルトの名無しさんNGNG
つーか、Delphi製というよりXPって変なバグしょいこんでない?
しょっちゅうエクスプローラが暴走するんだけど・・
0618デフォルトの名無しさんNGNG
>>615
君の環境だけ? しつこく書き込むなら詳細を書くべきなのでは?
Delphi アプリだけが特殊な API を使ってるわけじゃないでしょ。なぜそう思うの?
0619デフォルトの名無しさんNGNG
> フォルダのアドレス

??
0620607NGNG
>>619さん
D:\hogehoge\arekore\といったフォルダアドレスを入れた時に、
D:\hogehogeというアドレスを返す関数です。
0621デフォルトの名無しさんNGNG
ようわからんがExcludeTrailingOSDelimiter(だったか?)とかExtractFilePathじゃ駄目なのか
0622デフォルトの名無しさんNGNG
>>620
なんだって!
607からの一連の話題はそういう話だったのか・・

だったらLastDelimiterとか使ったほうが便利じゃない?
0623デフォルトの名無しさんNGNG
>>620
一つ上のアドレスを返すという形か。


ありそでなさげ
0624503NGNG
遅レスすみません。。
オラクルみたいなすごいのじゃなくパラドックスなんですが、
最近、Win2003サーバーを使っているレンタルサーバーに申し込んだんです。
で、ここはCGIとかなにしても良いって事なので、データベースを使ったWebアプリ
の練習をしようと思いました。
こういう時って、データベースをどうやってサーバーに設定するのかと思い質問しました。
質問の仕方が悪かったです。すみません。
もう一度教えて下さい。
0625デフォルトの名無しさんNGNG
>>607
ExtractFileDir は?
0626デフォルトの名無しさんNGNG
>>624
winはよく知らないけど
LinuxでMySQLでもインストールしてODBCでつなぐとか。
0627デフォルトの名無しさんNGNG
>>624
そりゃ、レンタル元に聞いたほうが早いでしょ。
レンタル鯖って、普通は鯖ごとレンタルじゃなくて
ディスクスペースのレンタルでしょ。

ユーザにはアプリをインストールする権限がないような
気がするけど。
0628624NGNG
>>626、624ありがとうございます。
レンタル元に自分のやりたいことがOKか聞いてみてから、
また調べてみます。
0629デフォルトの名無しさんNGNG
>>621さん
ExtractFilePathは、ファイル名からファイルが存在するフォルダを取得する関数です。
ExcludeTrailingPathDelimiterは\を取って返す関数です(d:\hogehoge\→d:\hogehoge)。
ですからどちらも使えません。

>>622さん
    _, ._
  ( ゚ Д゚) それだ…。

>>625さん
なにかが違うような。。。
0630607NGNG
ごめんなさい>>629=>>607です
0631デフォルトの名無しさんNGNG
ExtractFileDir( 'c:\windows\Win.ini' ) は 'c:\windows' を返します。
0632デフォルトの名無しさんNGNG
もしあれば、最後の'\'を削除して、ExtractFileDirでOK
0633デフォルトの名無しさんNGNG
>D:\hogehoge\arekore\といったフォルダアドレスを入れた時に、
>D:\hogehogeというアドレスを返す関数です。
そもそもフォルダアドレスの書き方を統一すれば問題解決
0634デフォルトの名無しさん NGNG
すみません、質問させてください。
コンポーネントを貼り付けたときに、四方と線の中心4点に四角が表示されますよね?
それを実行時にもそのコンポーネントをMouseDownしたときに表示することは可能でしょうか?
また、可能であれば四方の一点をドラッグした時に台形になるように二直線を縮小させたいのですが。。
これをTPanelBoxを継承させた新しいコンポーネントで作成できたらと思っています。
知っている方がいれば、ご教授ください。。
0635デフォルトの名無しさんNGNG
ExtractFileDir(ExcludeTrailingPathDelimiter('D:\hogehoge\arekore\'));
0636デフォルトの名無しさんNGNG
>>634
あの点々は、実は一つ一つがウィンドウなのだよ。
同じ事を実行時にしようとするなら、全部自前でやる覚悟が必要です。
0637デフォルトの名無しさんNGNG
sDirName+".\"+sFileNameとすれば

sDirNameの最後に\が有っても無くても適応可能。
0638デフォルトの名無しさんNGNG
>>635
ExtractFileDirはルートディレクトリ指定するとバグるよ
0639デフォルトの名無しさんNGNG
ExtractFileDir(ExcludeTrailingPathDelimiter('D:\hogehoge\arekore\'));
これと
ExtractFileDir(ExcludeTrailingPathDelimiter('D:\hogehoge\arekore'));
は同じ結果
0640デフォルトの名無しさんNGNG
>ルートディレクトリ指定するとバグるよ

ルートディレクトリの上はないからどっちにしろ例外
0641デフォルトの名無しさんNGNG
>>640
ExtractFilePathに変えるだけなんだけどね
0642デフォルトの名無しさんNGNG
ヘルプより

ExtractFilePath( 'c:\windows\Win.ini' ) は 'c:\windows\' を返します。

駄目じゃん
0643デフォルトの名無しさんNGNG
処理の前に判定付けろよ
0644デフォルトの名無しさんNGNG
>>600

OnChange が使い物にならないんだよね。OnEndTrack イベントがあればいいんだけど。
さがせばどっかにあるはず。
0645ANGNG
>>634
それを自作した記事が、Delphiマガジンの12月号に載ってるっぽい。
ソースとサンプルだけなら、サイトからダウンロード可能なもよう。
0646デフォルトの名無しさんNGNG
すみません、質問です。
ttp://www.yks.ne.jp/~hori/MemCheck.htmlのMemCheck 2.0をダウンロードして
自分のプログラムに追加してみたんですが、実行しても終了時にBEEP音が鳴るだけで
メッセージとか表示されません。ログとかも見当たりません。

メモリリークが発生したかどうかを知るにはどうすればいいんですか?
0647デフォルトの名無しさんNGNG
>>646

そのページの
>MemCheck を使用するには以下の事をやる必要があります。
は全部やったんだろうな?
0648デフォルトの名無しさんNGNG
>>647
4番の
>プロジェクトソースで MemCheckInstallExceptionHandler 関数を呼び出して例外ハンドラを登録する。
はやってません。

OnDestroy時にsleep命令とレジストリの消去を実行してるんですが、それが悪さをしてるみたいです。
OnDestroyを無効にすると一応メッセージは表示されました。
0649デフォルトの名無しさんNGNG
今、自作でクラスを作っているんですが
Constructor Createの処理の中で

inherited Create;

って必要ですか?
手本にしてる本に載ってたので今まで気にせずに書いてましたけど
なんか、なくてもエラーにならないみたいなんですし・・
0650デフォルトの名無しさんNGNG
TObjectからの直接の派生だったら、コンストラクタの中身は空だからどっちでもよくて
それ以外のコンストラクタに中身があるクラスから派生してるなら
上位クラスでの初期化処理を呼ばないといけないから必要、だっけ。
0651649NGNG
>>650
なるほど。
1行目の事実は知りませんでした。
おかげでものすごくすっきり納得がいきました。
0652デフォルトの名無しさんNGNG
こんな事も知らなかった人がクラスを作れるのに俺ときたら。・゚・(ノД`)・゚・。
0653デフォルトの名無しさんNGNG
逝�`
0654デフォルトの名無しさんNGNG
EditBoxの入力を整数限定にしたいのですが
OnKeyPressで

if not (Key in ['0'..'9',#8]) then
begin
  Key := #0;
end;

という正数表現しか解りません。
一文字だけマイナスも大丈夫とするにはどうしたらいいでしょうか?
0655デフォルトの名無しさんNGNG
正規表現使え
0656654NGNG
>>655
正規表現をOnKeyPressで使うのですか?
も少し詳しく教えてください。
0657デフォルトの名無しさんNGNG
キャレットが先頭にあればマイナスも通すようにすればいいだろうけど
…EDITには最初からそういうウィンドウスタイルがあったんじゃないか?(ES_NUMBER)

ま、整数入力コンポーネントなんて、探せばUpDownボタン付きの含めて大量にありそうだが
0658デフォルトの名無しさんNGNG
>>636
難しいのですか。。初心者ではきついって事ですね。。

>>645
ありがとうございます。調べてみます。
またわからないことがあればご指導お願いします。
0659デフォルトの名無しさんNGNG
>>654
それだとコピペが防げないから
OnChangeでEdit1.Textの先頭の'-'と'0'..'9'以外を取り除くコードを書くべし。
0660デフォルトの名無しさんNGNG
おいらだったらStrToIntDefを使うかな。
0661デフォルトの名無しさんNGNG
それだと初回の'-'が入力できない
0662デフォルトの名無しさんNGNG
>>654
http://onigiri.s3.xrea.com:8080/delphi/index.php?%5B%5BTRegExpr%5D%5D
0663660NGNG
>>661
今試してみたら-もOKだったぞ
0664デフォルトの名無しさんNGNG
VBアプリをXPで動かすとよくハングします。どうしてでしょう?
0665ななしへたぐらま ◆XcB18Bks.Y NGNG
>>615-616
解像度やウィンドウのデザインを変えると落ちます。
0666デフォルトの名無しさんNGNG
DelphiってXPに対応してないの?
0667デフォルトの名無しさんNGNG
昨日TTimerについて質問したものです。
TTimerのOnTimerイベントをそのTTimerがあるフォームが開いてからではなく
そのフォームでのラストアクションがあってからにしたいのですがどうしたらいいでしょうか?
0668デフォルトの名無しさんNGNG
>>667
あいかわらず言ってる意味がよくわからんが
そのラストアクションの最後でEnabledをTrueにしたんじゃダメなのか?ダメなのか?ダメなのか?
0669デフォルトの名無しさんNGNG
てゆーかさっさとTTimer.Reset付けろや>某
0670ななしへたぐらま ◆XcB18Bks.Y NGNG
>>620 = >>607
ExpandFileName関数を使うと便利でしょう.

ExpandFileName('D:\hogehoge\arekore\..'); // 'D:\hogehoge' を返します.
ExpandFileName('D:\hogehoge\arekore\..\'); // 'D:\hogehoge\' を返します.

アドレスを指定する文字列の中にある『..』がツボです.
これは『〜の一つ上の階層』(親ディレクトリ)を意味します.
この関数を使うことで『..』を使った指定から
実際のアドレスに変換することができます.

※ドライブの一番上の階層(ルートディレクトリ)を返す場合,
 引数の文字列の末尾に『\』をつけてもつけなくても
 末尾に『\』をつけて返します.
 ExpandFileName('D:\hogehoge\..'); // 'D:\' を返します.
 ExpandFileName('D:\hogehoge\..\'); // 'D:\' を返します.

実際に使うときはこんな感じでしょうか.
ParentDir := ExpandFileName(IncludeTrailngBackslash(CurrentDir) + '..'); // 末尾に\なし(ルートディレクトリを除く)
ParentDir := ExpandFileName(IncludeTrailngBackslash(CurrentDir) + '..\'); // 末尾に\あり
0671デフォルトの名無しさんNGNG
ListView1.OwnerData := Trueのときある項目を強制再描画したいのですがどうやればいいですか?
0672デフォルトの名無しさんNGNG
>>669
一回EnabledをFalseにしてからまたTrueにするとか…???
0673デフォルトの名無しさんNGNG
>671 UpdateItemsではダメなのか?OwnerData?
0674デフォルトの名無しさんNGNG
>>666
XPで作ってるけど、別に問題ありませんが。

2000で試してみたら?XP特有の現象なら、2000ではバグは出ないはず。
もし2000でバグが出たら、自分が組んだプログラムに問題がある。
もし2000でバグが出ずに、XPでバグが出るんであれば、Delphiに問題があるのかもしれない。

その上で、こういうプログラムを組んだらこういうバグが出ました。
どうすればいいんですか?と質問してみたら?
0675デフォルトの名無しさんNGNG
Del6Pro+WinXPでマルチモニタ環境で
フォームがセカンダリにある状態でMessageDlg使ってダイアログ出すと
プライマリ側に開いちゃうんだけどそれってどうにかならないの。
0676654NGNG
>>657,659,660
亀レスです。すいません。
アドバイスありがとうございます。
EditBoxの整数値限定入力について質問したものです。
入力時点で条件に合わないものは入力すらさせたくかったので
OnKeyPressを使いたかったのですが
OnChangeでも入力表示させないようにできるのでしょうか?
どうしても一文字目だけ'-’を含むという条件が解からないので。
お願いします。
0677デフォルトの名無しさんNGNG
OnChangeは内容が変わった時に処理されるので時すでに遅し。
テンキー判定にしてみては?
0678676NGNG
>>677
レスありがとうございます。
テンキー判定…ダメだ、よく解らないです。
入力時点での判定はそれでできるのでしょうか?
0679デフォルトの名無しさんNGNG
質問させてください。
TImageを実行時に黒で囲んで表示させたいのですができますか?
なるべくなら新規作成コンポーネントでTImageを継承させたいのです。
constructor ○○○.create(Aowner:TControl);にソースを書けばいいのでしょうか?
初期サイズは高さ幅とも50で、正方形の黒枠を描きたいのですが。。。
知っている方、よろしくお願いします。
0680デフォルトの名無しさんNGNG
>679 Helpでcanvas読んで、描画の練習するべし。
0681デフォルトの名無しさんNGNG
>>675
API使えばいいじゃん。頭悪いね。
0682デフォルトの名無しさんNGNG
Delphi6でアプリを作ってるんですが、全て開放してる筈なのにメモリリークが必ず1回出ます。
これは別にほっといてもいいんでしょうか?
0683デフォルトの名無しさんNGNG
必ず1回なら放置してよし
0684デフォルトの名無しさんNGNG
>>682
パッチ当てたか?
つかリークしたブロックダンプしてみりゃいいじゃん。
0685デフォルトの名無しさんNGNG
>>683
どんな状況でも必ず1回発生します。
とりあえず放置しときます。

>>684
パッチは一応当ててます。
メモリリークはMEMCHECKを使用してるんですが、使い方がいまいち分からないので
メモリリークの数しか分かりません・・・すみません。
0686デフォルトの名無しさんNGNG
どんな状況でもと言う事は、
program Project1

uses
 MemCheck;

begin
end.

でも発生?
0687デフォルトの名無しさんNGNG
Delphiでバイナリエディタ作るのって難しいんですね。
コンポーネントが無い。。。
0688デフォルトの名無しさんNGNG
コンポーネント使うのとフリーウェア使うのってそう大きく違わないよね
0689デフォルトの名無しさんNGNG
コンポーネントだってフリーウェアだろバカ
0690デフォルトの名無しさんNGNG
>>687
フリーウェアを使ってください
0691デフォルトの名無しさんNGNG
そう言う意味ではないと思うんだが
0692デフォルトの名無しさんNGNG
たしかPowerWitch the Royalってバイナリエディタが
もろDelphi製だったはず。

難しいといっても不可能ではない。要はやる気しだいでしょ。
0693デフォルトの名無しさんNGNG
描写時の色をランダムにするにはどうすればいいんですか?
0694デフォルトの名無しさんNGNG
TColor(Random($1000000))
0695デフォルトの名無しさんNGNG
VCLのソースコードをダウンロード出来るサイトってあるでしょうか?
0696デフォルトの名無しさんNGNG
ない。あってもそれを閲覧する権利はない。
0697デフォルトの名無しさんNGNG
>>695
全部じゃなければありますyo。
ダウンロード可能。
0698デフォルトの名無しさんNGNG
>>695
ダウンロードできるサイトはちゃんとあるよ。
ちょっとURL忘れたけど・・
すごい見付けにくかった記憶がある。
0699デフォルトの名無しさんNGNG
素直にPro買うか、
Kylixインストールして(OpenEditionはGPLの元で)CLXの(VCLと共通部分の)ソース見るかしろ
0700ななしへたぐらま ◆XcB18Bks.Y NGNG
>>687
Windowsの標準にはないインターフェイスのものは
Delphiでなくても難しいかもしれませんが(むしろほかの方が大変だと思います).

一方で,その気になれば初心者でもメモコンポを使って
それなりのバイナリエディタを作るのはそれほど難しくないと思います.
OnKeyPressイベントで0..9, A-F以外の文字入力をブロックしたり
下の桁を打ち込んだらカーソルをさらに1文字右に動かしたりとか.

でも最初は表示だけできるバイナリダンプソフトを作ってみると良いですよ.
これができるだけでもかなり勉強になるのではないかと思います.

#単に無料のバイナリエディタがほしいだけでしたらBzエディタを.
 私も愛用しています.
0701デフォルトの名無しさんNGNG
DBCtrlGridにて中の文字の色を変えようと思い、
DBCtrlGrid1PaintPanelを利用してやってるんですが
なぜかフォーカスされた行だけ色が思ったものと
違うものになってしまいます。

ちなみにDBCtrlGrid上にパネルを置いてその上に
DBTextを置き、その文字の色を変えようとしています。

どなたか解決方法ご存知のかたおられましたら
教えてください。
0702デフォルトの名無しさんNGNG
起動後に別ソフトを起動させたいのですが、どうしたらいいでしょうか?
現在はOnActivateでShellExecuteを使って別ソフトを起動しているのですが
起動中に別ソフトが起動してしまいます
それとボタンを押した後にボタンのフォーカスを外す
または、フォーカスがどこにも当たっていない状態にする方法も教えてください
0703デフォルトの名無しさんNGNG
>>702
起動後=フォーム表示直後に何かするのは結構面倒。Timer使うのが無難。
Form1.ActiveControl := nil;
0704682NGNG
メモリリークがどんな状況でも発生するとカキコした者ですが、開放し忘れを発見しました_| ̄|○

ご迷惑をおかけしました。
0705デフォルトの名無しさんNGNG
おう、よかったじゃないか。まず、自分を疑えっていう教訓も得たし。
MemCheck 使ったかいもあったし。
0706デフォルトの名無しさんNGNG
学校の課題何ですが、質問いいですか?
0707デフォルトの名無しさんNGNG
いちいちそんなこと聞かれたらレスの数が倍増するので嫌です
0708デフォルトの名無しさんNGNG
スレ立てます。・゚・(ノД`)・゚・。
0709デフォルトの名無しさんNGNG
>>708
単発で質問立てるなよ
ここで質問してけ
0710デフォルトの名無しさんNGNG
>>709
ありがとう・・・どうもありがとう(つД`)
単位落としそうで必死なんだ・・・ホントありがとう。・゚・(ノД`)・゚・。
0711デフォルトの名無しさんNGNG
こんな問題なんです。

【問題】

英語の試験の点数を、つぎからつぎへと入力して、
その合計と平均(少数第2位まで)、最大値と最小値の点数を求めて表示する。
試験の点数をして999を入力すると点数(データ入力)の終わりとする。
(999は合計に加えない)。

って奴なんです。まず何をするのかさっぱりで・・・お願いします。
0712デフォルトの名無しさんNGNG
一番のネックは点数を読み取ってつぎつぎ入力するロボットの設計だな。
これはちょっとDelphiの手に余る問題だよ。
0713デフォルトの名無しさんNGNG
うーむ、初級の文法を練習するのには良い問題だね。自分で解くとよいことがあるかも。
0714デフォルトの名無しさんNGNG
DelphiというかPascalなんです。
これは不可能な問題なのでしょうか?
0715デフォルトの名無しさんNGNG
>>711
Pascal?それともDelphi?
0716デフォルトの名無しさんNGNG
>>713
そうなのですか!じゃあ自分でちょっと分からなくても組んでみます。
できたらここに晒しますので間違いを指摘してもらってもいいですか?
0717デフォルトの名無しさんNGNG
足し算、わり算、if 文の練習。
0718デフォルトの名無しさんNGNG
>>715
PascalをDelphiでやるんです。
0719デフォルトの名無しさんNGNG
必死なわりに何もやってないんだな
0720デフォルトの名無しさんNGNG
いえ、別のをやってます。6つ問題があるんです。
そのうち4つがわからないのです。
上のはわからないうちの1つです。頭こんがらがっちゃって・・・
0721デフォルトの名無しさんNGNG
フォームとか Edit とか Button とか使っていいの?
0722デフォルトの名無しさんNGNG
1つ質問です。
小数第2位までを出すにはどういうふうに定義をしたらいいんですか?
0723デフォルトの名無しさんNGNG
>>721
習った範囲でやらないといけないのでダメぽです。
0724デフォルトの名無しさんNGNG
whileで回して入力値が999じゃないなら合計値に足していく、
999なら最高、最低、平均を表示して終了させる。
0725デフォルトの名無しさんNGNG
>>722
わかりました。

integerではなくrealで定義すればいいんですね。
0726デフォルトの名無しさんNGNG
>>724
なるほど!ありがとうございます。やってみます。
0727デフォルトの名無しさんNGNG
ううう・・・わからなくなってきました・・・
0728710 ◆EbFiUcpS.Q NGNG
IDないのでトリップつけました。
0729デフォルトの名無しさんNGNG
>>727
さらせ
0730710 ◆EbFiUcpS.Q NGNG
begin
writeLn;
writeLn;
n:=0;
while n < 999 do
begin
n:=n+1;
a:=n;

ここから下が・・・_| ̄|○
0731710 ◆EbFiUcpS.Q NGNG
定義は

n:integer
a:real
0732デフォルトの名無しさんNGNG
>>730
まずは使用者に入力させろ。
話はそれからだ。
0733710 ◆EbFiUcpS.Q NGNG
writeln(n:=n*2);
writeln(n:=(n*a)/a);

とかやってみたのですが・・・実行できない_| ̄|○
0734デフォルトの名無しさんNGNG
>>730
あの問題からなんでそんなコードが出てくるのか・・・
0735710 ◆EbFiUcpS.Q NGNG
その前にまず問題の意味が・・・

999までwhileで出力して1〜999の横に
今までの合計と平均ってのを随時出力していくんですよね?

最大値の点数は999で最小値の点数は1なのでは・・・?
どこの最大値と最小値なんでしょうか・・・
0736710 ◆EbFiUcpS.Q NGNG
>>734
すでに間違ってますか・・・
こんなんでプログラマーになれるのかな。・゚・(ノД`)・゚・。
0737710 ◆EbFiUcpS.Q NGNG
それとも自分で1〜999までを入力してそれの平均と合計、
最大値、最小値を出力するんでしょうか?

そうするとwhileは使わないですよね?
0738デフォルトの名無しさんNGNG
そこから教えないとできんのか・・
delphi以前の問題だ。問題を理解してから来い
0739デフォルトの名無しさんNGNG
var
 input, min, max, count, total: Intger;
begin
 count := 0; total := 0; min := 999; max := -999;
 
 while True do
 begin
  Write('Input(999 to quit): '); Readln(input);
  if input = 999 then break;
  Inc(total, input);
  if min > input then min := input;
  if max < input then max := input;
  Inc(count);
 end;
 
 if count > 0 then
 begin
  Writeln('min=', min);
  Writeln('max=', max);
  Writeln('average=', total / count:0:2);
 end;
end.
0740710 ◆EbFiUcpS.Q NGNG
>>737のが問題の答えですね。

ということはwhileは使わないですね。

if文と足し算割り算ですよね。

ちょっと作り直してみますね。
0741710 ◆EbFiUcpS.Q NGNG
>>739
ありがたいですが・・・
そういう書き方は習ってないですし・・・
僕自身理解ができないので・・・ごめんなさい・・・
初心者風な書き方で頑張ります。
0742デフォルトの名無しさんNGNG
>>741
答え出たけどひとつだけ問い詰めさせてくれ
なぜ999回回す
0743710 ◆EbFiUcpS.Q NGNG
>>742
・・・良く分かってないものでして・・・
あと、上記の答えは使えません。
0744デフォルトの名無しさんNGNG
>>710
やる気もないみたいだし答えを読む気もないどころか問題も理解してない。
やってることは雑談だけ。もう消えろ。
0745710 ◆EbFiUcpS.Q NGNG
>>744
はい。どうもありがとうございました。失礼します。
0746デフォルトの名無しさんNGNG
739 はメタコードとしてもよいコードだよ。自分の習っている範囲で書き直せば
そのまま正解になると思うよ。
0747デフォルトの名無しさんNGNG
>>745
Delphi初心者用サイトとか見ながら>>739を理解しる
そんなに難しくはないから
0748デフォルトの名無しさんNGNG
>>744
誠に遺憾なことだが、
スレの趣旨としてはこんなやつですらOKゾーンなんだよな・・
0749デフォルトの名無しさんNGNG
スポーツだと適不適がほとんど客観的に分かるでしょ。陸上でも短距離か長距離か
足が遅くても、ハンマー投げが得意、とか。そもそも陸上に向いてないとか。

プログラミングにも適不適があるんだよ。ある程度の人なら、ほとんどすぐに適不適
を見分けられる。コードがつたなくても、センスのあるなしは分かるもんだ。
0750デフォルトの名無しさんNGNG
いや〜センスあるなし以前の問題だと思うぞ・・。

陸上で言うなら「どこを走ればいいのかわからない」「靴の履き方がわからない」
0751デフォルトの名無しさんNGNG
これがうわさのゆとり教育でつか
0752デフォルトの名無しさんNGNG
プログラム言語以前の国語力の問題だな.
算数の文章問題を何べんも音読させられたのを思い出したよ.
0753デフォルトの名無しさんNGNG
>>752
激しく同意。 >>711 の題意を理解してないと思われ
0754デフォルトの名無しさんNGNG
もう見てるか分からんが・・・

readlnはユーザーの入力を読み取れる。
入力された値が0〜100なら点数で、999は終了を表す。この999というのは100以上なら何でもいい。
問題でそう決められているからそれに従っているだけで、999という数字自体に意味はない。
Inc(x, y)はx := x + yと同じ。Inc(x)ならx:=x+1.
それを踏まえて>>739のコード見れ。これで分からなかったらまじでやばい。
だから本気でガンガレ。
0755デフォルトの名無しさんNGNG
入力するところでループする。そしてループ脱出の条件が999を入力されたとき、
と気がつけば、あとは足し算わり算の問題。
0756デフォルトの名無しさんNGNG
プログラム板で1番優しいスレはここですか?
0757デフォルトの名無しさんNGNG
これから、Delphi をやろうと思っているのですが、知り合いの話だと
もう Borland は Delphi に力を入れてないから、やがて消えていくと
言っていましたが、本当なんですか?

それならこれから勉強してもしょうがない感じがするので、誰か本当
のところを教えて下さい。

持っているのは Delphi 5 ですが、これってWindows XP 用のアプリ
をつくれますか?

教えて君ですいませんが、Delphi 初心者なので、宜しく。
0758デフォルトの名無しさんNGNG
Delphiって何でこんなにXPと相性悪いの?
0759デフォルトの名無しさんNGNG
>>757
君は若者?
「チャレンジしてみてダメだったらそれはそれ」って
選択肢はあり得ませんか?
誰かに決めてもらうのが最良ですか?
若者なら挫折も良いのでは?
0760デフォルトの名無しさんNGNG
2005年はVBの年になるからVBやっとけ。
0761デフォルトの名無しさんNGNG
私も757のようなタイプにはVBが相応しいと思います。
0762デフォルトの名無しさんNGNG
初めても居ないのに初心者とは此如何に

と、冗談は置いて置いて
これから何かするんならDelphiでもVBでも初歩は変わらない
それから先は言語じゃなくてソース書くやつの腕次第
0763デフォルトの名無しさんNGNG
>711の問題を>739以外のやり方でやるなんて
ものすごくめんどくさそうなんだけど
いったいどこが「使えない」表現なんだろうか…
0764デフォルトの名無しさんNGNG
break を習ってないとか
0765デフォルトの名無しさんNGNG
誤った入力をした時に訂正が効かないのは、
テュウェンティーワンセンチュリープログラミングとしてどうか。

と、最高に頭が悪そうな発言をしてみる。
0766デフォルトの名無しさんNGNG
たしかに最高に頭が悪そう。
0767デフォルトの名無しさんNGNG
>>765

http://pc5.2ch.net/test/read.cgi/tech/1085915001/l50
0768デフォルトの名無しさんNGNG
> もう Borland は Delphi に力を入れてないから、やがて消えていくと
> 言っていましたが、本当なんですか?

本当です。Delphi に限らずどんな言語もやがて消えていくでしょう。
ちゃんとした言語をちゃんと学ぶと、どんな言語にも通じるものを学ぶことが
できます。Delphi はちゃんとした言語であると思います。
0769デフォルトの名無しさんNGNG
C#ほどはちゃんとしてない古臭い言語。
0770デフォルトの名無しさんNGNG
> C#ほどはちゃんとしてない古臭い言語。

そうかもしれませんが、現時点では C# より出来ることが多い。
C# からプログラミング入門というのもいいかもね。あと2,3年たったら間違いなく。
0771デフォルトの名無しさんNGNG
>>757
持っているのは…ってことは、もう買ったのか?

今さらDelphi5を買う奴は無いので昔買ったが眠っていたパターンと推測して、
もしそうならやめとけ、ソフトにしろプラモにしろ小説にしろ、買っても積んでおくだけな奴は
どうせ何やっても長続きしない
0772デフォルトの名無しさんNGNG
FlileStreamの使い方を、超初心者でもわかりやすく書いたホームページはどこでしょう?
Memo1にOpenDialog1.executeで読み込んだ文章をFileStream使って表示したい。
0773デフォルトの名無しさんNGNG
せっかくVBをすすめたのに、どうしてVBしないですか?
0774デフォルトの名無しさんNGNG
>Memo1にOpenDialog1.executeで読み込んだ文章をFileStream使って表示したい。

Memo1.Lines.LoadFromStrem(FS);
0775デフォルトの名無しさんNGNG
>>772 ヘルプで十分

procedure TForm1.Button1Click(Sender: TObject);
var
FS:TFileStream;
begin
if OpenDialog1.Execute then
begin
FS := TFileStream.Create(OpenDialog1.Filename,fmOpenRead or fmShareDenyWrite);
Memo1.Lines.LoadFromStream(FS);
FS.Free;
end;
end;
0776デフォルトの名無しさんNGNG
StringListとStream系がわかるようになると
やれることの幅がかなり広くなる。

次はなにを学ぶといいですかね?
0777デフォルトの名無しさんNGNG
カテゴリ別ルーチン一覧を眺めてどんな機能があるのかを知っておくといいよ。
特に文字列周り。
0778デフォルトの名無しさんNGNG
> 次はなにを学ぶといいですかね?

なにをしたいかによる。学ぶことが目的ならコンポーネントの自作。
最初は、フリーのソース付きのヤツのソースを見て研究するとよい。
0779デフォルトの名無しさんNGNG
IMEを制御したり状態を取得するにはどうすればいいでしょう。
0780デフォルトの名無しさんNGNG
imemode
0781デフォルトの名無しさんNGNG
>>780
ありがとうございます、他のアプリの状態の取得にはどうすれば?
0782デフォルトの名無しさんNGNG
動的配列について質問したいのですが
メモリ領域を確保(Setlength)していない時の対応について教えてください。
if文で動的配列のメモリ領域を確保していない場合のコーディングをしたいのです。

var TestS : array of String;
…
if (…解らず) then 〜

0783デフォルトの名無しさんNGNG
length(tests)=0
0784デフォルトの名無しさんNGNG
>>783
どうもです。
lengthってこういう時にも使えるのは知りませんでした。
ありがとうございました。
0785780NGNG
解決したと思ったのですがもう少し質問させてください。
Setlength(TestS,0)と強制的に長さを0にしてしまう場合にも
>>782の条件に引っかかってしまう事に気づきました。
実際そういう状況にもなるので・・・
説明不足でしたが動的配列宣言してSetlengthを一度もしていない時の
処理をしたかったのです。
この二つの区別は無理なのでしょうか?
0786デフォルトの名無しさんNGNG
Setlengthを一度もしていない時 = length(tests)=0

どうして区別する必要があるのか?
0787デフォルトの名無しさんNGNG
>>785
無理。stringが自動的に''で初期化されるのと同様。
どうしてもというなら他にbooleanのフラグを用意しないといけない。
0788デフォルトの名無しさんNGNG
Del6 Personalで作ったアプリがXP上で変な動きをします。
Del7以上だとお金がかかってしまいます。
嫌がらせですか?
0789デフォルトの名無しさんNGNG
>>788
嫌がらせですか?
そうじゃないならソース示せ。2ちゃん以外の。
0790まいどNGNG
嫌がらせではありません。
アホを釣っているんです。
0791デフォルトの名無しさんNGNG
Delphiアプリってバッファオーバーフロー起こすんですか?
0792デフォルトの名無しさんNGNG
仕様です。
0793デフォルトの名無しさんNGNG
>>789
こら、せっかくみんな無視してきたのに、反応するな…

バッファオーバーフローについては、
・Delphi7なら修正済み
・XP側のアップデートでスタックは実行不可になった
Del6以下で、XP以外のOSでも、普通通過しないような箇所にあるので、
わざわざ起こすような酔狂なコーディングをしなければ起きない

ついでに、XPの実行可能属性保護は.NETには無効→.NETのunsafeコードはネイティブアプリより危険
http://msdn.microsoft.com/security/productinfo/XPSP2/memoryprotection/exec_imp.aspx
(Whidbey=2005以降は.NETも保護されるらしい)
0794ななしへたぐらま ◆XcB18Bks.Y NGNG
>>785
長さに0を指定するとメモリ領域をすべて解放するので
SetLengthを使う前と同じ状態になります.
故に区別できません.
0795デフォルトの名無しさんNGNG
>>785
おいおい初期状態に戻せないと困るじゃないか
0796デフォルトの名無しさんNGNG
集合型のpropertyを作っていて気づいたんですが、
集合型のpropertyの場合、includeとか使えない?

試しにTFontStyleについてやってみましたが、
include(Font.Style, [fsBold]); // ダメ
Font.Style := Font.Style + [fsBold]; // OK

つーことは、変数宣言された集合型以外では
includeとかは使えないってことでしょうか?

どちらでもいいんですが、helpによると、includeを
使ったほうがコードの効率がいいって書いてあったもんで。
0797デフォルトの名無しさんNGNG
それは集合型とは関係ない話
propertyはvarパラメータには渡せない。
例えば
procedure Foo(var s: String);にForm1.Captionを渡すとコンパイルエラー

functino Foo(s: String): String;
Form1.Caption := Foo(Form.Caption);
なら可能
0798デフォルトの名無しさんNGNG
>>797
速攻レス、thx

なるほど、そういうことですか。
今、includeをhelpで見て、初めて気づきました。
0799デフォルトの名無しさんNGNG
なぜ渡せないかというと
propery Prop: TProp read GetProp write SetProp;
のようなプロパティには渡すべき実体が存在しないから。
0800デフォルトの名無しさんNGNG
Win2000 Delphi6 Personalでアプリ作ってますが、会社のXPで実行すると起動と同時に砂時計が出て重いです
スペック的には会社のほうが圧倒的に優れています
それと、XPで実行すれば勝手にルナインターフェースになるのかと思ったらならないんですね
どうしたらいいのでしょうか?
0801デフォルトの名無しさんNGNG
http://hp.vector.co.jp/authors/VA015850/delphi/tips/etc13.html
0802デフォルトの名無しさんNGNG
ありがとうございます
0803デフォルトの名無しさんNGNG
>>799
たとえば

FProp: TProp;
propery Prop: TProp read FProp;

というような場合、FPropの値が渡されるだけってこと?
0804デフォルトの名無しさんNGNG
デバッガの例外処理について質問です。
Java のように try 〜 except でハンドルされなかった例外だけ
トラップするようにはできないものでしょうか?

デバッガオプションの「Delphi 言語の例外で停止」を外すと、
ハンドルされない例外が発生しても無視されてしまうので…。
0805デフォルトの名無しさんNGNG
>>804
さらに外側のexceptでトラップするだけヤン
0806デフォルトの名無しさんNGNG
>>804
無理
0807ホームランNGNG
>>772
 >>774,5 のように単にプレーンなテキストファイルを読み込むだけではFlileStreamのあ
りがたみはわからないのではないかな。
0808デフォルトの名無しさんNGNG
なんかやたらTStrings, TStream系のクラスに固執する奴多すぎだよな。
もう少し状況に応じて使い分けるべきだよ。
0809デフォルトの名無しさんNGNG
>>807
そうだね。TFileStream は実質何の役にもたってないし。質問の

> Memo1にOpenDialog1.executeで読み込んだ文章をFileStream使って表示したい。

が少々意味不明ではあるし。
0810デフォルトの名無しさんNGNG
> もう少し状況に応じて使い分けるべきだよ。

はいはい、それは当たり前。プログラミングの練習をしてるんだろうよ。
0811デフォルトの名無しさんNGNG
> もう少し状況に応じて使い分けるべきだよ。

で、どんな状況のときにはどれを使うのがいいの?
0812デフォルトの名無しさんNGNG
ボーランドのフリーのコンパイラを使用しているのですが
cppをDLLにコンパイルする方法が分かりませんコマンドに-WDが必要な
必要なあたりまでは分かったのですが、

**に代入した値は使用していない(関数 とか
パラメータ***は一度も使用されないとか

全く分からないエラーが出ます。(C/C++自体ふれたことがない)
ソース自体は配布されているものなので問題がないと判断し、
コンパイルする時点の問題ではないかと思いました。

ここ読めみたいなHPあれば教えてください。
0813デフォルトの名無しさんNGNG
>>811
とりあえず行単位のフィルタ処理でTFileStreamとかTMemStreamで読み込んで自前で改行コード判定したり
TStringListでいちいち全部読み込んだりする奴はアホ。
0814デフォルトの名無しさんNGNG
>>812
http://pc5.2ch.net/test/read.cgi/tech/1054390397/
0815デフォルトの名無しさんNGNG
>>814
thanx!!
0816デフォルトの名無しさんNGNG
>>801
manifest.resがありませんって言われちゃうのは私だけですか?
プロジェクトと同一ディレクトリだよね?
0817デフォルトの名無しさんNGNG
.exe.manifestでがまんしとけ
0818デフォルトの名無しさんNGNG
>>813
じゃ、アホじゃない人は AssignFile Reset Readln Writeln 使うの?
ぜんぜん状況を判断してるようには見えないけどな。
0819デフォルトの名無しさんNGNG
>>817
そんなもの同封して配布したらかっこ悪いじゃないですか
なんとかならないですかね・・・
0820デフォルトの名無しさんNGNG
Del厨ってフィルタ処理もできないんですね。
VB.NETならCUIプログラミングもお手の物ですよ。
0821デフォルトの名無しさんNGNG
813 は300バイトのファイルでもいちいち AssignFile とか使うんだろうな。
メモ帳つくっても決して Memo1.Lines.LoadFromFile とかは使わないんだろな。
0822デフォルトの名無しさんNGNG
> VB.NETならCUIプログラミングもお手の物ですよ。

でも40MBのランタイムいるし。遅いし。
Delphi でもCUIつくれることしらないの?
0823デフォルトの名無しさんNGNG
813はVB.NETユーザーだろ。
0824デフォルトの名無しさんNGNG
DrawOverlay関数が何をするものかわかんねぇ
0825デフォルトの名無しさんNGNG
Delphi6無料版をこれからやろうと思うんだけどパッチあてないとどうなるの?
0826デフォルトの名無しさんNGNG
初心者です。
DelphiでUTF8のファイルを読み込んでUTF8のまま編集する
メモ帳を作りたいのですがどうすればいいのでしょうか。
VB.NETであればTextBoxを配置するだけで済んだのですが・・・
0827デフォルトの名無しさんNGNG
>>819
801のサイトのマニフェストでオレの環境では何も問題ないぞ
何かミスってんじゃないのか?
0828デフォルトの名無しさんNGNG
>>824
ショートカットアイコンの矢印画像をオリジナルアイコンに重ねて描画する
ときなんかに使う。
0829デフォルトの名無しさんNGNG
>>827
そうですか、もう一度がんばってみます
サンクス
0830デフォルトの名無しさんNGNG
>828
にゃるほど、つまり普通の透過描画であって
半透明にしたりとかはしないのですね。サンクス。
0831デフォルトの名無しさんNGNG
初心者で困ってるんですが、助けてください。

あるコントロールに対して、Click、DblClick、MouseDown、
MouseMove、MouseUpなどのイベントを使ってます。

それで、ダブルクリックすると、まずクリックが検出され、
つぎにダブルクリックが検出されます。たぶん、これが
普通なんでしょう。

ダブルクリック時に、クリック側プロシージャでは、それが
クリックなのかダブルクリックなのか分からず、困っています。

こういう場合、どうしたらいいのでしょうか?
0832デフォルトの名無しさんNGNG
>>831
>ダブルクリック時に、クリック側プロシージャでは、それが
>クリックなのかダブルクリックなのか分からず、困っています。

クリックされた時点でそれがダブルクリックの最初のひとつかどうかを判断することは
できない。未来を予測できないからね。
0833デフォルトの名無しさんNGNG
>>822

こっちでやれ。相手にするな。

ミ,,゚Д゚彡フサギコのフサフサDelphi談話室その13
http://pc5.2ch.net/test/read.cgi/tech/1089454618/
0834デフォルトの名無しさんNGNG
>>832
素早いレス、ありがとうございます。

つまり、1つのコントロールに対して、クリックと
ダブルクリックの両方のイベントを利用することは
できないんですね。

ありがとうございました。
0835デフォルトの名無しさんNGNG
Delphiで64bitアプリは作れますか?
VB 2005でできるのでDelphiでもできると思いますが。
0836デフォルトの名無しさんNGNG
さっきから悩んでいるのですが
添字[-1]で動的配列にアクセスしてるのにエラーが起きないばかりか範囲チェックにすらひっかからない。
なんでだろう・・?
0837デフォルトの名無しさんNGNG
あるイベントハンドラ内のコードが長くなったため何個かの手続きに分けて
コーディングする事にしました
そこでちょっと問題が起きて困ってます。
元々そのコードの中でexit()手続きを使っていたのですが
自分で作った手続きに分けるとexitはその自分の手続きを終了するだけで
イベントハンドラ自体を終了する事ができません。
どうしたらいいでしょうか?
0838832NGNG
>>832
> 未来を予測できないからね。

「未来」で今思いついたけど、どうしてもクリックと
ダブルクリックを検出したい場合、タイマを使うって
手もありますね。

でも、そこまでやるってのも考え物ですが。

ただ、グラフィック関係のツールで、操作上、どうしても
マウスのクリックとダブルクリックを区別したいんで。。。
0839デフォルトの名無しさんNGNG
>>834
>つまり、1つのコントロールに対して、クリックと
>ダブルクリックの両方のイベントを利用することは
>できないんですね。

やりたいことは、ダブルクリックのときシングルクリックのイベントハンドラを
実行してない、ってことでしょう?

これは、かなりの FAQ なんです。せこい方法では、クリックイベントでタイマーを
起動し、ダブルクリック時間間隔(システム設定)経過したらシングルクリックとみ
なし、そのコードを実行する。OnDblClick ではタイマを止め、ダブルクリックイベ
ントの処理をする、というものです。

これの難点は、本当のシングルクリックのときの処理応答が遅延されることです。
0840デフォルトの名無しさんNGNG
>>837
自分で作った手続きを関数にして、
本体側で戻り値を判断してexitするとかは?
0841デフォルトの名無しさんNGNG
>>826
VB.NETを使おう。
0842デフォルトの名無しさんNGNG
>>837
戻り値で判断しては?
0843デフォルトの名無しさんNGNG
> グラフィック関係のツールで、操作上、

シフトキーを押しながらクリックとか、Ctrlキーを押しながらクリックとか、
あと右ボタンクリックを使うこともあるよね。
0844デフォルトの名無しさんNGNG
>>837
・自分の手続きを関数にして戻り値で判断。
・イベントハンドラ内のフラグを利用
procedure TForm1.EventHandler(Sender: TObject);
var
 exitFlag: Boolean;

 procedure MyProc;
 begin
  if xxx then exitFlag := True;
 end;
・Abortする。
0845837NGNG
>>840,842
なるほど、やってみます。
ありがとうございました。
0846デフォルトの名無しさんNGNG
>>843
そうですね。

ダブルクリックは押しそこなうこともあるから、
両方使うことは、場合によっては、危険でも
ありますね。
0847836NGNG
うわ・・大発見かも
特定の型のときだけ範囲チェックをすり抜けるようだ。
0848デフォルトの名無しさんNGNG
TShellTreeView を使っているのですが、ソースコード側から
特定のフォルダ(のノード)を選択にするにはどうすればよいのでしょうか?
0849デフォルトの名無しさんNGNG
ググレば見つかるが場所忘れた
0850837NGNG
>>844
すいません、もう少し質問させてください。
今自分で作った物についてですが
exitが使われている自分で作った関数の戻り値をBoolean型にしました。
そして、イベントハンドラ内で、作った関数をif文の条件文に書き
そこでもう一度exitを使って対処しました。
これじゃ後々何か問題ありますか?
正直今の俺には>>844さんのコードが完全に理解できません。
特にAbort使った事ないんですがやっぱ>>844さんの方がいいんですか?
0851デフォルトの名無しさんNGNG
動けばなんだっていいよ。
Abortはもともと望んでいた多重Exitと同機能。
0852デフォルトの名無しさんNGNG
exitしない所を関数に分けてはどうだろう?
あなたのレベルでは最初から作り直すべき。
0853デフォルトの名無しさんNGNG
いみふめ
0854デフォルトの名無しさんNGNG
>>850
それでよし。
0855デフォルトの名無しさんNGNG
暗黙のSelfを一時的に無効にする方法ってないですか?
0856デフォルトの名無しさんNGNG
ない。何がしたい?
0857デフォルトの名無しさんNGNG
今作っているクラスのproperty名と
グローバル関数の関数名とが被っているのです。
普段は適切な方が自動判別?されて呼ばれるので問題ないのですが
クラスのメソッド内からグローバル関数の方を呼ぼうとすると
なぜかpropertyの方が呼ばれてしまうらしく
「'['が必要なところに'('があります」というようなエラーがでてコンパイルが通りません・・。

propertyが呼ばれるのは暗黙のSelfのせいだと思うので無効にする方法はないかと思って質問しました。
0858デフォルトの名無しさんNGNG
グローバル変数を指定したいなら
ユニット名.グローバル変数名
例えばフォームを指定する場合
Unit1.Form1とする。
0859デフォルトの名無しさんNGNG
う〜ん。同じユニット内にあります。
なぜならそのクラスのために作ったグローバル関数なので・・

function Point(const x,y: integer): TPoint;
のようにクラス専用のrecordを作る関数なのです。

とりあえず今は
メソッド内からグローバル変数を呼ばずに手動でrecordを作成して回避してます。
0860デフォルトの名無しさんNGNG
同じユニット内であっても明示しないと駄目
0861855NGNG
>>858
あ、おかげさまでうまくコンパイルが通りました。
ありがとうございます。
またひとつ知識が増えました。
0862名無しさん@そうだ選挙に行こうNGNG
>>836,847
そりゃ宣言によるでしょ。

たとえばarray[-5..5] of integerで-1にアクセスできなかったらまずことになるぞ。
0863名無しさん@そうだ選挙に行こうNGNG
動的配列ってマイナスの添字もてたっけ?
0864名無しさん@そうだ選挙に行こうNGNG
詳細晒す気がないんだからほっとけ
0865名無しさん@そうだ選挙に行こうNGNG
プログラムからIEを立ち上げる or IEのパスを知るにはどうすればいいのですか?

WinExec( PChar('IEXPLORE'), SW_SHOW );

これだと何の反応もありません・・・
0866名無しさん@そうだ選挙に行こうNGNG
ShellExecuteの関連付けではなくIEを指名してってことならユーザーにフルパス指定させるしかない。
0867名無しさん@そうだ選挙に行こうNGNG
>>866
ShellExecuteで
関連付けで起動できました
ありがとうございます
0868862NGNG
>>863
ああ、動的配列か。普通の配列のことだと思った。
動的配列は使ったこと無いから分からないや。
0869名無しさん@そうだ選挙に行こうNGNG
Destructor Destroyってさんざん「直接呼ばないように」と言われてる割には
publicにありますよね・・。
0870名無しさん@そうだ選挙に行こうNGNG
はっきりいって直接呼んでも全然かまわないよ。
はっきりいってFreeの恩恵にあずかったことがない。
0871名無しさん@そうだ選挙に行こうNGNG
動的配列は必ず0からです。
Professional Version5 に関してですが。
0872名無しさん@そうだ選挙に行こうNGNG
Professional Version5?
0873名無しさん@そうだ選挙に行こうNGNG
>>870
NullオブジェクトをFreeしてもエラーにならないけど、
Destoryの場合はEAccessViolationになる。
0874名無しさん@そうだ選挙に行こうNGNG
>>873
じゃぁ
if Assigned(O) then O.Destroy;
でいいやん。禁止しなくても。
0875名無しさん@そうだ選挙に行こうNGNG
素直にfree使えばいいじゃん
なぜゆえdestroyにこだわる?
0876875NGNG
質問させて下さい。
Delphi5Proで顧客管理ツールを
作ろうと右往左往してるんですが、

DBEditに打った内容を
DBGridに反映させる時に。

リアルタイムに打った内容が反映されてしまって、
間違って入力した時に上書きされないように、DBEditに
入力した後、ボタンイベント等を行わない限り。DBファイル
が更新されないようにするには、どうすればいいでしょうか><
0877名無しさん@そうだ選挙に行こうNGNG
>>876
連動させたくないんだったら普通にEditつかえば?
0878876NGNG
えっと、普通のエディットに変えてみます。
エディットで入力したデータをDBファイルに
反映させる方法も、もしよろしければ御教授
願いたいです><
0879名無しさん@そうだ選挙に行こうNGNG
(解らないのなら取り合えず)ボタンイベントでSQL文投げろよ。
0880名無しさん@そうだ選挙に行こうNGNG
もしかしたらダメかなと思ってやってみたらやっぱりダメだった
StrToInt(00433) とか StrToInt(00876) とか StrToInt(00088) とか

何とか足し算引き算の出来るまっとうな数字に直したいです。
0881名無しさん@そうだ選挙に行こうNGNG
>>880
なにがしたい?
StrToInt には整数型は渡せないが。
i := 00433 とかやれば普通に 433 の数値が入るが。
0882名無しさん@そうだ選挙に行こうNGNG
(;゚д゚) ぅぉ、何時の間にか名無しが変わってる…
0883名無しさん@そうだ選挙に行こうNGNG
>>880
Valは?
0884名無しさん@そうだ選挙に行こうNGNG
> StrToInt(00433) とか StrToInt(00876) とか StrToInt(00088) とか

00433 は sring じゃないでしょ。 StrToInt('00433') じゃないの
0885876NGNG
>>879

Appendメソッドを使って
何とかデーターの書き加え出来ました><
普通のエディタ使ってよかったです。アドバイス
ありがとうございました!
0886名無しさん@そうだ選挙に行こうNGNG
indyをダウンロードしたのですが、指定URLからタイムスタンプを取得するには
どうすればいいのでしょうか?
0887デフォルトの名無しさんNGNG
>>875
だって、Destroyの直呼び禁止に意味はあるか、という話でしょ。
0888デフォルトの名無しさんNGNG
GIFを扱えるコンポーネントはありませんか?
0889デフォルトの名無しさんNGNG
>>888
そこらへんにいくらでも落ちてる
0890デフォルトの名無しさんNGNG
>indyをダウンロードしたのですが、指定URLからタイムスタンプを取得するには

indyをダウンロードしたことと、指定URLからタイムスタンプを取得することとは無関係
0891888NGNG
ごめんなさい。TGIFImageで検索したらいっぱいありました。
0892デフォルトの名無しさんNGNG
>>890
わかりにくい質問ですみません。
indyをインストールしたのですがコンポーネントが多すぎてどれを使えばいいのかわからないんです。
タイムスタンプを取得するにはどのコンポーネントのどのメソッドを使えばいいのでしょうか?
0893デフォルトの名無しさんNGNG
そもそもネットワークリソースのタイムスタンプなんて無いが。
Last-Modified の事か?
ならTIdHTTPで、GET か HEAD メソッドでリクエストかけてヘッダメッセージ調べればいい。
0894デフォルトの名無しさんNGNG
>>893
ありがとうございます。
0895880NGNG
>>881-884サマ
StrToInt の件
ごめんなさい、どうしようもないアホでした
文字列として''でくくってやったらちゃんと出来ました。
'〜'の中はそもそも変数で、他から引っ張ってくる0付き数字の列なんですが、
さてこれがどうやったら数字になるのかと、ためしに StrToInt(00426)
とかやってみたらダメだったので、ついうろたえて書き込んでしまいました。
0896デフォルトの名無しさんNGNG
本当に初歩的な質問で恥ずかしいんですが、
日本語文字を単位として、文字列中での
ある部分文字列の位置を知りたいんですが。

PosとかAnsiPosとかをどのように使うんでしょうか。


よろしくお願いします。
0897デフォルトの名無しさんNGNG
そこまでわかってるならヘルプ見れば即決だろう・・
0898896NGNG
>>897
そうなんですか。。。

LengthみたいにWideCharで型キャストするとか?
0899デフォルトの名無しさんNGNG
>>896

ちょっと勉強のためにやってみた


procedure TForm1.Button1Click(Sender: TObject);
var str1,str2:string;
a1,a2:integer;
begin
str1:=edit1.text;
str2:=edit2.text;
a1:=ansipos(str2,str1);
a2:=a1 div 2 + 1;
edit3.Text:=inttostr(a2);

end;


Edit1の中に、調べたい文字列を書く
Edit2の中に、Edit1に書かれた内容から何文字目か知りたい文字を書く
Edit3の中に、Edit2の中に書かれた文字が、何文字目かを表示

日本語文字ってことで、2バイトだから、ちょろっと操作→ a2:=a1 div 2 + 1;


こんな感じでできると思うけど、もっといい方法あるかもしれない
(俺も初心者だし)

ただこれ、日本語のみ使ってる場合にしか使えないから
1バイト文字もはいってきたときにどう処理するかが頭使うのかも
0900896NGNG
>>896
なんかできました。

日本語文字ということで、AnsiPos + WideString で
試してたんですが、Pos + WideString だったんですね。
0901デフォルトの名無しさんNGNG
procedure TForm1.Button1Click(Sender: TObject);
var str1,str2:widestring;
a1:integer;
begin
str1:=edit1.text;
str2:=edit2.text;
a1:=pos(str2,str1);

edit3.Text:=inttostr(a1);

end;


>>899だけど

899で書いたやつより、896さんがいった感じでやったほうが
日本語と英語まざってても対応できるから
こっちのほうがいいね

勉強になったよ、thx
0902デフォルトの名無しさんNGNG
ハードディスクのファイルって本当は全部0と1の集まりなんでしょう?
テキストファイルも0と1の集まりだよね?

このスレの文章も本当は0と1の集まりなの?
Delphiで文章を0と1だけの本当の変換する方法を教えてZ!
0903デフォルトの名無しさんNGNG
>>902
>全部0と1の集まりなんでしょう?

いいえ、違います。
on/offならともかく0と1というのは明らかに間違い。
0904デフォルトの名無しさんNGNG
本当
という文字は
数字で
96 7B 93 96
と表され、これを二進数(0と1の集まり)で表すと
10010110011110111001001110010110
となる。すべてのデジタル情報はこの表記に変換できる。
0905デフォルトの名無しさんNGNG
型識別子を引数にしたいのですがどうかけばよいのでしょうか?

function SizeOf(X): Integer;
function High(X);
function Low(X);

の(X)のように書きたいのですが、このまま書いても「パラメータの型が必要です」と言われてしまいます
0906デフォルトの名無しさんNGNG
function High(var X);
でどんな変数でも取れるけど目的には適わないな。
C#とかののgenericsを使うと実現できるけどDelphiにはない。
IntegerでもStringでもDoubleでもちゃんと処理する関数を書きたいなら
function High(X: Integer): Integer; overload;
function High(X: String): Stirng; overload;
function High(X: Double): Double; overload;
と地道に書くしかない。
0907デフォルトの名無しさんNGNG
質問したそうそうなんですが、
やりたいことは別の方法で実現できました
スレ汚しすいません。
0908デフォルトの名無しさんNGNG
バリアント型とか、TypeInfoを受け取ってRTTIで処理するとか、方法はあるけどね
0909デフォルトの名無しさんNGNG
>>903は笑えるな
0910デフォルトの名無しさんNGNG
3MBぐらいのビットマップ画像を TImage の Picture プロパティに読み込ませて実行すると

[エラー] RLINK32: Error opening file "C:\Program Files\Borland\Delphi6\Projects\Unit1.dfm"や
[エラー] RLINK32: Error opening file "Unit1.dfm"などのエラーが出てしまいます。

以前は同じ画像を読み込ませても何もエラーが出なかったのですが
なぜか最近エラーが出るようになりました。原因がわかりますでしょうか?よろしくお願いします。
Delphi6のパーソナル版を使用しています。
0911デフォルトの名無しさんNGNG
TImageだけの新規プロジェクトで試してみたら
0912デフォルトの名無しさんNGNG
TForm に TImage だけを貼り付けて試してみたら、ということでしょうか?
やってみました。でも、15秒程度Delphiがストールした状態になり、
その後、同じエラーが出てしまいました。
0913デフォルトの名無しさんNGNG
>15秒程度Delphiがストールした状態になり、
>15秒程度Delphiがストールした状態になり、
>15秒程度Delphiがストールした状態になり、
>15秒程度Delphiがストールした状態になり、
>15秒程度Delphiがストールした状態になり、
>15秒程度Delphiがストールした状態になり、
>15秒程度Delphiがストールした状態になり、
>15秒程度Delphiがストールした状態になり、
>15秒程度Delphiがストールした状態になり、
>15秒程度Delphiがストールした状態になり、
>15秒程度Delphiがストールした状態になり、
0914デフォルトの名無しさんNGNG
そこでDelphiがぶっ壊れてると思わない思考に萌えます
0915910NGNG
う〜ん・・・
一応Delphiを再インストールしてみたんですが・・・
それから、ファイルに保存してみようとしたら
「メモリストリームの拡大中にメモリが足りなくなりました」
って怒られました。自分のパソコンの問題なのかな('A`)
0916デフォルトの名無しさんNGNG
>>910
ハードディスクが逝かれた
0917デフォルトの名無しさんNGNG
>>915
Del6Pro+パッチ全部の環境では7MBのファイル一瞬でロードできるな。
単にOSのメモリが足りないんじゃないの。
0918910NGNG
>>916
>>917
やはり自分のパソの問題だったようで。
アドバイスありがとうございました。
0919デフォルトの名無しさんNGNG
というか最初からエラーメッセージを書けよゴルァ
0920デフォルトの名無しさんNGNG
↓のような型を自分で作成し、そこに入れたデータをバイナリでファイルにセーブしようと
しましたが、

const CMaxFld = 12;
type TIni = record
TableName: string;
InsertFld: array[0..CMaxFld-1]of string;
UpDateFld: array[0..CMaxFld-1]of string;
UpDateKeyFld: string;
DeleteKeyFld: string;
end;

ファイル型の宣言をした際にコンパイルエラーが発生してしまいます。

var
F: File of TIni;

「'TIni'型は終了処理が必要です。-ファイル型として使うことはできません」
とのメッセージ内容がいまいち分からないのですが、どなたかご教授下さい。
お願いします。
0921デフォルトの名無しさんNGNG
stringは使えない。ShortString使っとけ
ファイルへの書き込みはTFileSream使っとけ。
0922920NGNG
ありがとうございました。
0923デフォルトの名無しさんNGNG
タイトルバーが消せなくて困っています。

フォーム1を親 フォーム2を子にしてるんですが
親のタイトルバーは消せるんですが子フォームのが消せません。

なぜでしょうか?
0924デフォルトの名無しさんNGNG
>>921
>>808
0925デフォルトの名無しさんNGNG
>>924
>>808を別に否定はしないが
シーケンシャルなバイナリファイルの読み書きに
TFileStreamが向かない理由とその代案を説明してくれ。
0926デフォルトの名無しさんNGNG
808は無視してよし
0927デフォルトの名無しさんNGNG
MDI子フォームのタイトルバーがなかったら不便だろうなー
0928デフォルトの名無しさんNGNG
ListViewにて任意のセルにユーザー直接文字入力できるよう
設定できるプロパティってありますか?
0929デフォルトの名無しさんNGNG
任意のセルは無理なんじゃないの
0930923NGNG
仕様だったんでしょうか?
なぜできないのか疑問だっただけなんで。
0931513NGNG
>>513の質問、誰かヒントだけでも良いのでいただけない
でしょうか。。。完璧に行き詰まってしまっています。
0932デフォルトの名無しさんNGNG
>>931
いろんなやり方があると思うが、
普通のグリッド使って、一括処理、というのもありだと思うよ。
例えば最大99行ぐらいの伝票処理なんかだと特に向いてるかも。
同じ伝票を同時に複数人がカキコすることがある、とかだと難しくなってくるけど。
0933デフォルトの名無しさんNGNG
>>928
つーか、Listviewの各項目はセルとはいわんだろ。
0934デフォルトの名無しさんNGNG
TMediaPlayerでWaveを再生するとき、ボリュームを変更するってことで、
ネットでいろいろ探したんですが、以下のようなものがありました。
いろんな国のサイトで同じソースが出てたから、これが定番なのかも。

ttp://www.swissdelphicenter.ch/torry/printcode.php?id=618

ところが、これがウチではうまく機能しないんですが?
つまり、音量がまったく変わらないんです。ウチの環境の問題?
0935デフォルトの名無しさんNGNG
これは純粋にDelphiの問題じゃないのかもしれませんが、
よろしくお願いします。

ビットマップAに背景色と前景色を指定して文字を描画し、
それに少々処理を加えます。ビットマップBには任意の画像が
読み込まれています。

ここでビットマップAの背景色を透明色として、ビットマップAを
ビットマップBにコピーしたいんです。このとき、ビットマップAの
文字のアンチエイリアス処理で生じた半透明の部分も上手く
コピーしたいんです。

こんな場合、どんな方法があるんでしょうか。
0936デフォルトの名無しさんNGNG
BitmapB.Canvas.Draw(x,y,BitmapA);
0937デフォルトの名無しさんNGNG
>文字のアンチエイリアス処理で生じた半透明の部分も上手く

Canvas.Draw だとこれがうまくいかないか
0938デフォルトの名無しさんNGNG
>>935
重ね合わせた後に文字を書くとか?
知らんけど
0939935NGNG
やっぱアルファブレンドの方法を
ちゃんと勉強しないとだめかな...
0940デフォルトの名無しさんNGNG
C#でGDI+叩けば一発なんだけどな
0941デフォルトの名無しさんNGNG
DelphiでもGDI+使えるよ。
0942デフォルトの名無しさんNGNG
ネットワークドライブの割り当てがされているフォルダがあり
OpenDialogでパスを取得したとき

e:\filder\faile.txt (ネットワークドライブ)ではなく
\\コンピュータ名\filder\faile.txt

にしたいのですがどのようにすればよいでしょうか
おねがいします。
0943デフォルトの名無しさんNGNG
WNetGetUniversalName
0944デフォルトの名無しさんNGNG
bccで作ったobjファイルをリンクしようとしているのですが、

コンパイルすると、
"forward または external 宣言された 'sum' が見つかりません"
というエラーが出ます。

具体的なコードは以下のようになってます。

=== sum.cpp ( bcc32 -c sum.cpp ) ===
extern "C" {
int __stdcall sum(int a, int b)
{
  return a + b;
}
}

=== Unit1.pas ( 一部 )==============
{$L sum.obj}

function sum(a: Integer; b: Integer): Integer; StdCall; external;

procedure TForm1.Button1Click(Sender: TObject);
begin
  MessageBox(0, PChar(IntToStr(sum(2, 5))), '', MB_OK);
end;

どのようにしたら解決できるか、教えていただけると嬉しいです。
0945デフォルトの名無しさんNGNG
恐らく"sum"ではなく"_sum"になってると思われます
.objをバイナリエディタで開いてみてください
(伝統的にC呼びだし規約はアンダーラインが付く)

ついでに、C呼びだし規約に対応するのはstdcallではなくてcdeclです
0946デフォルトの名無しさんNGNG
Timageをクリックしたときに指定フォルダ(c:\pic\)にある画像(00〜10.bmp)を
ランダムに表示させるにはどうしたらいいでしょうか?
0947デフォルトの名無しさんNGNG
>>945
レスありがとうございます

いろいろ試してわかったのですが、
sum.cpp を sum.c にして作成した obj ファイルだとリンクできました。
extern "C" をつけてるので大丈夫だと思ったのですが、C++だと駄目なようです。

呼び出し規約については、
stdcall でも cdecl でも Cの関数提供側とPascalの呼び出し側で統一してやれば、
問題ないようです。

C++のobjファイルがリンクできないと自分には不便なのですが、
方法はないのでしょうか?
0948デフォルトの名無しさんNGNG
>>946
具体的に何が知りたい?

画像の読み込ませ方?
ファイル名をランダムに得る方法?
0949デフォルトの名無しさんNGNG
誰かTStream のテキストファイル対応版を知りませんか。
0950949NGNG
ResourceStreamやMemoryStreamから
Readln、Writeln したいのれす。
0951デフォルトの名無しさんNGNG
ファイル名をランダムに得る方法です。
0952デフォルトの名無しさんNGNG
>>931
DBGridでやるならば、各DataSetのイベント(又は金額のOnSetFieldだっけ?等)で

1開始にTBookMark等をつかって現在地を保持
2レコードを全て回して小計をだす
3終わったら覚えていたTBookMarkで元の位置に戻る

Paradoxならこのような処理は早いはず
クラサバならTClientDataSet等を使ってローカルにデータを保持して
回せばいいと思いますよ
0953952NGNG
追記
単純な金額の小計のみならば集合体を使ったほうがいいです
0954デフォルトの名無しさんNGNG
Picture.LoadFromFileで読み込んだ画像が、TImageのwidth,heightより大きい場合
画像をスクロールさせて表示したいんですが・・

なんかいい方法ありますか?
0955デフォルトの名無しさんNGNG
>>950
それはアホくさい要求だな。

TStringList.LoadFromStream(Stream);

とすると自動的に改行で区切られるから簡単。
0956デフォルトの名無しさんNGNG
>>951

'c:\pic\'+Format('%.2d',Random(11))+'.bmp';

FormCreate で Randomize; を実行しておくこと
0957デフォルトの名無しさんNGNG
まちがった

'c:\pic\'+Format('%.2d',[Random(11)])+'.bmp';
0958デフォルトの名無しさんNGNG
FDなどにファイルをコピーした後、
ShowMessage('終了しました');
とすると、表示されてからもアクセスが続いています。
完全に終わってから表示したいのですが、
書き込みが終わった事を知る方法をご教示願います。

Delphi6 personal で、OSはMEです。

0959デフォルトの名無しさんNGNG
ToolButtonのCaptionを変更してもボタンに反映されないのですがどうすればいいのでしょうか?
0960デフォルトの名無しさんNGNG
>>955
何万行もあるのに一括読み込みはやです。もっと頭のいい人プリーズ。
0961デフォルトの名無しさんNGNG
数万程度ならそんなに時間掛からんだろ
0962デフォルトの名無しさんNGNG
>>960
なんでやなの?
0963デフォルトの名無しさんNGNG
Streamにこだわる理由がわからん
0964デフォルトの名無しさんNGNG
実は、悩みまくってSysUtils.TTextRec を覗いてみたら
入出力元を自由指定できそうな仕組みになっているじゃありませんか。
そんで多分賢い人が既につくってるだろうと思ったからです。
Delphiって奥が深いですね。
0965デフォルトの名無しさんNGNG
WM_HotKeyを宣言してそのイベントでEnterキーをTabキーと入れ替えてるのですが
アプリケーションが非アクティブ時も反応してしまいます。
で、コードの頭に if Application.Active then を付け加えると反応しませんが、
例えばメモ帳使用時に改行が出来なくなってしまいます。
正常に作動させるにはどうしたらよいでしょうか。
0966954NGNG
>>954
事故解決しました
0967942NGNG
>943

下記のサンプルを見つけたのですが
コンパイル出来ません。
Win APIの使い方がよくわかっていないので
もう少し情報をもらえないでしょうか?

ttp://www.delphicorner.f9.co.uk/articles/wapi9.htm

function GetUNCName(PathStr : String) : String;
var
bufSize : DWord;
buf : TUniversalNameInfo;
msg : String;
begin
bufSize := SizeOf(TUniversalNameInfo);
if (WNetGetUniversalName(PChar(PathStr), UNIVERSAL_NAME_INFO_LEVEL,
buf, bufSize) > 0) then
case GetLastError of
// ・・ 略 ・・・
end
else
msg := buf.lpUniversalName;

Result := msg;
end;

windows2000
Delphi 7
0968デフォルトの名無しさんNGNG
ついでだからエラーコードと場所まで書けばいいのに
0969942NGNG
>968
失礼しました。

エラー場所の場所
if (WNetGetUniversalName(PChar(PathStr), UNIVERSAL_NAME_INFO_LEVEL,
buf, bufSize) > 0) then
エラー内容
[エラー] Unit1.pas(33): '_UNIVERSAL_NAME_INFOA' と 'Pointer' には互換性がありません
0970デフォルトの名無しさんNGNG
くだすれDelphi(超初心者用)その15
http://pc5.2ch.net/test/read.cgi/tech/1087823906/l50
0971デフォルトの名無しさんNGNG
Pascalの宿題は俺にやらせろ!!Part1
http://pc5.2ch.net/test/read.cgi/tech/1089719714/l50
0972デフォルトの名無しさんNGNG
>>969
buf → @buf
0973デフォルトの名無しさんNGNG
>>971
>>706
0974デフォルトの名無しさんNGNG
>>965
> 正常に作動させるにはどうしたらよいでしょうか。

その動作が正常です。君が正常でないことを期待しているだけ。
0975デフォルトの名無しさんNGNG
>>964
>そんで多分賢い人が既につくってるだろうと思ったからです。

賢い人は数万行くらいなら悩むことなく >>955 の方法でやる。
0976デフォルトの名無しさんNGNG
>>971
そのスレにあの学生が降臨してるようだなw
0977710 ◆EbFiUcpS.Q NGNG
>>976
はい。私です。
0978デフォルトの名無しさんNGNG
15才以下だったらまあそんなこともあるかと思えるんだが, それ以上となるとな
ぜか暗い気持ちになるな
0979デフォルトの名無しさんNGNG
>>975
ちゃんとしたレスが貰えなくなるので意味が理解できないなら黙っててください。
0980デフォルトの名無しさんNGNG
>>975
Streamを避ける理由があるならReadlnでささっと書くよな。
0981デフォルトの名無しさんNGNG
丸投げしてくるくせになんでこんなにえらそうなんだ?
0982デフォルトの名無しさんNGNG
質問です。 Delphi6 Personalを使っています。

標準のコンポであるServerSocketとClientSocketを使って
クライアントがサーバーに接続し、サーバーのデータをとりだすことはできました。

ここで、もっと基本的なことになるんですが、サーバーに接続するさいに
パスワードを必要とし、もしパスワードが一致していなければ
サーバーが接続を拒否する。

というプログラムで悩んでいます。
悩んでいるというよりも、いろいろグーグルで調べてみたんですが
きっちりと解説しているHPを見つけることができませんでした。

このへんの通信に詳しいHPがあれば、教えていただきたいですm(_ _)m
0983デフォルトの名無しさんNGNG
>>982
接続しないとパスワードも送れませんが。
0984デフォルトの名無しさんNGNG
>>982
単純なものなら

クライアントからサーバに接続。
サーバかパスワード要求送信(例えば「Password:」とか)。
クライアントからパスワード送信。
サーバが正しいパスワードが確認。
間違ってればサーバから切断。正しければ続行。

という手順になると思うけど、どこがわからない?


あ、どなたか次スレよろ。
0985デフォルトの名無しさんNGNG
>>982です

>>983さん
すいません
それでは、接続したあと、クライアントがパスワードをサーバーに送信し
サーバーに設定しているパスワードでなかった場合に
サーバーが、そのクライアントの接続を切断する。

といった具合で、どうでしょうか?
0986デフォルトの名無しさんNGNG
>>984さん
あ、すいません、わからない部分を書いていませんでしたね・・・

サーバーがクライアントの接続を切断する

という命令がわからないんです
言葉たらずですいませんm(_ _)m
0987デフォルトの名無しさんNGNG
Demosの中にあるTCPって言うのを読み込んだら、TTCPがない
って怒られるんだけど、これって何処にあるの?
reademe見たんだけど書いてないみたい。
MLの過去ログ見たらD7でもあるみたいなんだけど、
漏れのにはない。
0988デフォルトの名無しさんNGNG
>>957さん
ありがとうございました。
それでやってみます。
0989デフォルトの名無しさんNGNG
>>986
Close
0990デフォルトの名無しさんNGNG
http://swiss.torry.net/samples_other.htm#3677
でtextstreamなるものを見つけましたが
使い方が分かる方は教えてください。
0991デフォルトの名無しさんNGNG
TRGBTripleとはどんな変数でしょうか?
三原色をどうにかする変数らしいのですが
使い方がいまいちわかりません。
ぐぐっても解説してるとこないし・・・
0992デフォルトの名無しさんNGNG
>>991
単にbmpかなんかの画像ファイル中の色並びってだけだった気がする
0993デフォルトの名無しさんNGNG
TIdHTTPでGetメソッドを実行するとき、タイムアウトはどこで設定出来ますか?
0994ANGNG
>>993
TIdAntiFreeze を置いて、IdleTimeOut ………かな? たぶん。
0995デフォルトの名無しさんNGNG
サンクス>>994
をぉ、タイマーで実装したけど、TIdAntiFreezeで作り直しかぁ。
タイムアウト値がプロパティじゃないなんて、ちょっと面倒なつくりだね。
0996デフォルトの名無しさんNGNG
>>993
素人の意見だけど、設定はできないような気がする。
なんかHTTPプロトコルを使用するときは内部で2000ミリsecondsに設定してるように見える

あくまで素人の意見なので間違ってるかもしれないけど
0997デフォルトの名無しさんNGNG
リョウカイ>>996
2000ミリsecondsに注意してIndyソースの中の人見てみます。
0998デフォルトの名無しさんNGNG
普通にReadTimeoutプロパティじゃないのか?
0999996NGNG
>>998
それだ!
なんで気付かなかったんだろう。
恥ずかしくて顔から火が出る
1000デフォルトの名無しさんNGNG
くだすれDelphi(超初心者用)その16
http://pc5.2ch.net/test/read.cgi/tech/1089779142/l50
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。