[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 08/13 11:51 / Filesize : 238 KB / Number-of Response : 924
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前: ◆XcB18Bks.Y mailto:sage [2008/03/12(水) 21:09:39 ]
Delphi(デルファイ)について、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を
勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが
お礼はDelphiの布教と初心者の救済をお願いします。

<前スレ>
くだすれDelphi(超初心者用)その45
pc11.2ch.net/test/read.cgi/tech/1198802907/

<過去スレ>
DelWiki避難所(Delphi 関連の過去スレッド)
delwiki.info/?Delphi%20%B4%D8%CF%A2%A4%CE%B2%E1%B5%EE%A5%B9%A5%EC%A5%C3%A5%C9


52 名前: ◆XcB18Bks.Y mailto:sage [2008/03/17(月) 00:15:46 ]
>>31
コンパイル前からCPU使用率が100%ということですか?
Delphi 7は使ったことはありませんがもしかしたら統合環境のバグかもしれません。
(Delphi 5のときはCPU使用率が100%になる不具合が複数あって結構悩まされました)
ともあれ遅い理由が本当にマシンパワーなのかきちんと検証した方が良いと思います。

(そしてマシンに手を付けるなら今ならすべて一新した方が高速で安いです)

>>46
Celeron 600MHzというCPU自体はそんなに遅くないのではないかと思います。
当時のHDDの方がボトルネックだったかもしれません。
(Celeron Mが630MHzで稼働するEee PCだとTurbo Delphi Explorerの起動するのは結構早いです)

>>50
仮想リストビューだとチェックボックスがうまく使えないみたいです。
リストビューの代わりにヘッダーコンポとチェックリストボックスの組み合わせなどを
検討してみてください。


53 名前:50 mailto:sage [2008/03/17(月) 00:44:32 ]
>>52
ありがとうございます
やはりダメなんですね
作り直しは厳しいですが考えてみます

54 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 16:59:38 ]
継承元のフォームForm1上のコンポーネントにTCollection型のプロパティがあり、
それを継承したフォームForm2上でそのTCollection型プロパティをいじると、
実行時にそのForm2のTCollection型プロパティはどうリソースから読み込まれるのでしょうか??
Form1のプロパティ値を読み込み、そのコレクション要素を「すべてクリア」して、
Form2のプロパティ値が読み込まれる??
TReaderのソース見たけど理解が追いつきません。



55 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 18:16:38 ]
クラスと実体とがごっちゃのような

56 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 18:45:57 ]
ブレークポイントを設定して確認したほうがいい。

57 名前:|Д゚彡 ◆A6VzDeLphI mailto:sage [2008/03/17(月) 19:41:19 ]
・・・・・・・・・・・・・・・・

hpcgi1.nifty.com/MADIA/DelphiBBS/wwwlng.cgi?print+200803/08030018.txt


58 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 22:39:45 ]
全部止めるとはまた豪快なw

59 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 23:27:45 ]
コンパイル中にウィルスバスターのCPU使用率が上がってるのか?
タスクマネージャ見てれば解るぞ。

60 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 01:51:32 ]
>>54
継承の下位クラスで public プロパティーをいじると、それが実行時直後に
反映されるのは、どんなコンポでもいっしょ。TForm2 が TForm1 を継承してる
からといって、TForm1 のインスタンスがいったん読みこまれるわけじゃないから、
質問自体が無意味。



61 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 05:55:46 ]
>>60
うーん。
>>TForm1 のインスタンスがいったん読みこまれるわけじゃないから
質問ではTForm1のインスタンスが生成されるとは一言も言ってません。
継承フォーム作成すると、派生フォームでは、変更したpublishedなプロパティだけが
差分情報としてフォームファイル(*.dfm)に記録されるんですよね?
そして実行時には、RTTIから継承フォームのプロパティを読み込んだ後に、派生フォームの差分情報だけがプロパティ
に再設定されるんですよね?で、TCollection型の場合は、どうなるのかな?という質問です。


62 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 05:58:12 ]
54=60です。
>>54ではしっかり実体とクラス使い分けませんでした。すみません(>>55)。

63 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 06:03:57 ]
and すみません(>>60)。

64 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 06:14:05 ]
Edit1、Edit2、Edit3…のように連続した名前の物を
ループ処理でTObjectListに突っ込む事はできませんかね?

65 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 07:47:20 ]
できます

66 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 08:11:54 ]
コンポの名前とは限らないぜ

67 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 08:49:40 ]
DelWiki - Tips/添字を使ってコントロールを処理する
delwiki.info/?Tips%2F%C5%BA%BB%FA%A4%F2%BB%C8%A4%C3%A4%C6%A5%B3%A5%F3%A5%C8%A5%ED%A1%BC%A5%EB%A4%F2%BD%E8%CD%FD%A4%B9%A4%EB

68 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 15:57:29 ]
>>67
おお!ドンピシャリだ。どうもありがとうございます

69 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 06:48:25 ]
ボタン押したりメニューの設定を選んだりすると
それ用の別ウィンドウが出るようにするにはどうしたらいいんでしょうか?

70 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 08:20:09 ]
ファイルメニューの新規作成で、それ用のフォームを作る。
アプリ起動時に自動作成してる場合、
モーダルダイアログなら、Form2.ShowModal;
ウィンドウなら、Form2.Show;
自動生成していないなら、事前にCreateする必要がある。
閉じたときどうするかも決める。



71 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 12:29:04 ]
type
    TTask = class(TAction)
        property OnBeforeExecute;
        property OnAfterExecute;
        ...その他いろいろ..
    end;
   
    TTaskList = class
        Items: TObjectList;
       
        procedure Add(Task: TAction; RemoveOldTask: Boolean = False; DelayMSec: Integer = 0; RepeatCount: Integer = 1);
        function Exist(Task: TTask): Boolean;
        procedure Remove(Task: TTask);
        procedure Execute;
    end;

procedure TForm1.Button1Click;
begin
    TaskList.Add(ActionLoadData);
    TaskList.Add(ActionProcessData);
    TaskList.Add(ActionPrintData);
end;

procedure TForm1.ApplicationIdle;
begin
    TaskList.Execute; // 登録タスクをひとつ実行
end;

みたいなタスク(アクション)スケジューラを導入したらスパゲッティなイベントの流れがとてもシンプルになった。
今まではイベントハンドラ中からイベントハンドラを呼び出して更にApplication.ProcessMessagesが他のもの呼び出して・・・と依存関係やタイミングに起因するバグの温床になってたのがかなり減りそうな予感。
こういうクラスって既によく練られたものがどこかにあったりする?
Executeイベントハンドラをサブスレッドで実行できるTaskとか作ったらかなり便利になりそうだな。

72 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 12:42:00 ]
>今までは...バグの温床になってた
この部分の改善方法が分からないようじゃ何使ってもバグだらけでしょう

73 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 14:14:43 ]
はははは、こりゃセンスなさすぎだ

74 名前:デフォルトの名無しさん [2008/03/20(木) 14:37:34 ]
よろしくお願いします。

Form1でメタファイルの元データを作って
Form2上のPaintBox上に表示するとともに
meta.wmfという名前で保存しています。
うまくできていれば、Form2上のボタンを押して
meta.wmfを読み込んで印刷させたいのですが、
procedure TForm2.Button2Click(Sender: TObject);
var
Print_MF:TMetafile;
begin
Print_MF:=TMetaFile.create;
Try
Print_MF.LoadFromFile('d:\gazou\meta2.wmf');
Printer.BeginDoc;
Printer.Canvas.StretchDraw(Rect(10,10,3000,3400),Print_MF);
Finally
Print_MF.free
end;
close;
end;
としても、すぐには印刷されず、Form1も閉じないと印刷できません。
Form1を閉じずにForm2だけ閉じたら印刷するようにするにはどうしたら
いいでしょうか??


75 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 14:52:05 ]
EndDoc

76 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 15:56:02 ]
>>71
久しぶりに将来有望そうな奴を見た。

77 名前:デフォルトの名無しさん [2008/03/20(木) 17:32:19 ]
> 75
ありがとうございました。
Printer.endDoc
で無事印刷されました..

78 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 18:07:00 ]
>>70
できました!どうもありがとうございます

79 名前:デフォルトの名無しさん [2008/03/22(土) 01:58:26 ]
よろしくお願いします。
TMemoやTRichEditで[CTRL]+[I]キーを押すと、タブ文字が挿入されますが、
この操作を無効にするにはどうすればいいでしょうか?


80 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 02:43:20 ]
キーダウンメッセージ捕まえてCtrl+Iだったときはデフォルトハンドラに渡さなければいいんじゃね?



81 名前:79 mailto:sage [2008/03/22(土) 03:51:12 ]
>>80
ありがとうございます。
今回は、キーダウンのメッセージをKeyPress内で捕まえればいいことがわかりました。

ただ、今度はKeyPress内で[CTRL]+[I]の同時押しを判断する方法が分かりません。
どうすればいいでしょうか?

procedure TMemoEX.keyPress(var key: Char);
begin
 if ((getAsyncKeyState(VK_CONTROL) and $8000) <> 0) then//CTRLキー判断
  if (key = 'i') or (key = 'I') then
   key := #0;//↑これだと上手くいかない
end;

82 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 10:31:34 ]
>>81
Delphi2の記憶で申し訳ないが、
KeyDownには、KeyPressにはないShiftStateがあって
ssCtrlみたいなのを見ればよかったような。

83 名前: ◆XcB18Bks.Y mailto:sage [2008/03/22(土) 11:58:06 ]
>>82
私もそれで行けるかなと思ったのですが念のためにテストしてみたら駄目でした。
もし単にタブ文字入力を禁止したいのでしたら
単にタブ文字かどうかを調べてもしそうなら文字を消すようにすればいいと思います。

procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char);
begin
 //// タブ文字が入力されたら取り消す ////
 if Key = #9 then // 9はタブを示す文字コード
 begin
  Key := #0; // #0を代入すると文字入力がキャンセルされる(らしい)
  Beep; // 取り消しとは関係ないけど「おっと、ここではタブキーは無効なんだぜ」とユーザーに伝える
 end;
end;

そうではなくてもし

 [Ctrl]+[I]によるタブ文字入力を禁止したいが[Tab]キーによる入力は許可したい

というのでしたらすいませんがちょっとわかりません。


84 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 13:55:01 ]
つダミーAction作成

85 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 16:38:48 ]
FormのOnShortcutで if (Ctrl+Iだったら) then Handled:= trueにするとか

86 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 20:35:56 ]
>>83
Delphi2で申し訳ないが、
たしかに素直にやろうとしてもだめだった。
で、スマートじゃないのと
winのバージョンでタイミングの問題が気になるが
FlagをたててKeyDownでssCtrlを見ておいて、
KeyPressで
if Flag and (Key = #9) then
としたら、いちおう↓これもできた。
> [Ctrl]+[I]によるタブ文字入力を禁止したいが[Tab]キーによる入力は許可したい

87 名前:デフォルトの名無しさん [2008/03/23(日) 15:42:06 ]
Delphi 7ですが、コンボボックスにキーボード入力がわかりません。
itemになかった場合はキーボード入力したいのですが、Styleを
csOwerDrawVaiableとかいろいろ変更してもキー入力できないか
EaccessVilationがでます。今は、itemに項目があってそれを選択する
にはOnChange イベントで取り出しています。よろしくお願いします。


88 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 16:22:19 ]
まずcsDropDownでダメだったことを詳細に書いて。

89 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 16:22:32 ]
AutoCompleteはFalse、StyleはデフォルトのcsDropDownに。OnChangeで処理ってのはユーザ入力を
許してる状況ではどうなんだろ?

90 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 16:29:05 ]
入力化なコンボボックスってかっこ悪い



91 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 16:51:28 ]
考え方が逆だ。入力するものが選択可能なエディットだと。

92 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 16:56:20 ]
>>87
Comboboxをただ貼り付けただけでその動作になってると思うんだけど
デフォルトの動作から具体的にどう変えたいって事?

93 名前:デフォルトの名無しさん [2008/03/23(日) 19:23:57 ]
皆様、ありがとうございました。
OnChangeで
Case ComboBox1.itemindex of
  1:
  2:
とかしていたのですが、キーボード入力をするとここのところでエラーになる
ようでした。しょうがないので、ComboBox1.textの値で分岐させることに
したら解決?しました。お騒がせしました。
でも、この方法しかないのでしょうか?後学のためにどなたかキーボード
入力も許すとき、どういう方法で選択されたのを知るのが常套手段なのか
教えてくださいませんか?


94 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 20:00:12 ]
>>93
そのコードだけではエラーになるところが見当たらない
大方-1を考慮してないだけとかそんなだと思うが

95 名前:デフォルトの名無しさん [2008/03/23(日) 20:39:44 ]
Vistaのデスクトップは、ctrl+マウスホイールでアイコンの大きさを
自由に変えられるけど、DelphiのListView で同じ様な表現をするには
どうしたらいいんでしょうか?

96 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 21:20:58 ]
>93
ItemIndexは0から始まる。該当アイテムがなければ-1だ。というか >91 だ。

97 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 21:33:43 ]
>>93
いまいちよくわかってないんだけど

idx := ComboBox1.Items.IndexOf(ComboBox1.Text);
ってやればTextがItemsの何番目かがわかる。-1ならそれ以外。

98 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 22:36:31 ]
>>87
onchange呼ばないでonselectでやれ。
それでキー入力はできるだろ


99 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 15:58:32 ]
delphiで簡単にRSSやAtomフィード作るコンポってありますか?

100 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 20:24:53 ]
MSXML



101 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 21:08:47 ]
ミリ秒を時間とか分とか秒とか込みで文字列化する関数ないですか?

102 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 21:12:13 ]
FormatDate

103 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 22:48:48 ]
TPageControlの枠を消すにはどうしたらいいんでしょうか?

104 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 22:52:00 ]
PageControl1.Style := tsButtons;

105 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 23:00:04 ]
それだと無駄な余白が出来るから
PageControl1.Visible := Falseにして
表示用にTabControl1配置してHeight := 20くらいにして
その下にPanel配置してタブの切り替えのタイミングでで
TabSheet.Parent := Panel1;
TabSheet.Align := aliClient;

と面倒なことをやると枠も余白も消せる。

106 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 00:57:42 ]
StringGrid := [goRowSelect, goRangeSelect] として、
1〜3行目を選択後に2行目をクリックすると、選択行は2行目のみとなります
これを選択範囲内をクリックした場合、新たに選択せず
選択範囲を維持するというふうにするにはどうすればいいでしょうか?

107 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 13:24:09 ]
GetIndex('漢a字', 1) => 1
GetIndex('漢a字', 3) => 4
というような関数ありますか?

108 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 13:33:28 ]
>>107
読解力のない俺はアフォなのか・・・

109 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 13:44:21 ]
俺もだ。すまん、アフォでごめん。

110 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 16:04:27 ]
アフォな俺にはこれぐらいしか…
function GetIndex(s: String; i: Integer): Integer;
begin
Result := Length(AnsiLeftStr(s, i - 1)) + 1;
end;



111 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 16:52:30 ]
2バイトで考えた文字数目が1バイトで考えた時に何バイト字目になるかを返す関数ということでFA?

112 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 16:53:19 ]
function GetIndex(Str:String; Index:Integer):Integer;
begin
if Str='漢a字' then
begin
 if Index=1 then
  Result:=1
 else
  Result:=4;
end else
 Result:=0;
end;

俺って天才かも!

113 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 17:21:06 ]
こうか?

function GetIndex( ws: WideString; index: Integer): Integer;
begin
Result:= Length(String(WideString(copy(ws, 1, index-1))))+1;
end;

114 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 17:35:05 ]
>>107
俺は読めたよ

function GetIndex(test:string;num:integer):integer;
begin
if test = '漢a字' then
begin
if num = 1 then result := 1;
if num = 3 then result := 4;
end;
end;

後は自分で工夫してくれ

115 名前:デフォルトの名無しさん [2008/03/26(水) 17:47:45 ]
> 97様、98様
お返事ありがとうございました。試してみたいのですが、来週まで
時間がとれそうもないので、まずはお礼だけさせてください。
また、よろしくお願いします。

116 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 19:54:12 ]
StringList遅すぎる…
Capacity多めに設定したらそこそこ改善されたけどまだまだ遅い。
Clear, Add, Stringsの列挙くらいしかやらないんだけど代替ライブラリはないものか。
MemoryStreamでも使うか。

117 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 21:20:57 ]
遅いコード晒せ

118 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 21:26:48 ]
MemoryStreamを引き合いに出している時点で明らかに使い方が間違っている

119 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 21:47:26 ]
FastMM使ってなかったら、>>116はメモリマネージャ交換した方がよさそうだな。


120 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 21:49:55 ]
FastMM って3年前からだよ。それまでStringListって遅かったのか?



121 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 21:49:57 ]
ほんとにClear,Add,Stringsだけしか使ってない?それで遅いって、100万件ぐらい
データ突っ込んでのかな。


122 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 03:42:15 ]
TMemoでしたって落ち?

123 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 08:18:10 ]
自分の無能さをライブラリのせいにするな

124 名前:デフォルトの名無しさん [2008/03/27(木) 09:03:40 ]
配列の宣言にpackedがついている場合を見かけますが、これ何か意味あるんですか?

125 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 09:07:08 ]
メジャーになれなかった理由の一つがまさにこういった事。
比較的多用しそうな事がいまいちで滅多に使わなそうな事がすげー便利。

126 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 09:29:16 ]
>>124
たとえば3バイトのメンバーを持つ構造体の配列とか?

127 名前:124 mailto:sage [2008/03/27(木) 09:36:45 ]
>>126

type
 THoge = packed record
  A: array[0..2] of Byte;
 end; // 3バイトの要素を持つ構造体

 THogeArray = array[0..9] of THoge;
 TPackedHogeArray = packed array[0..9] of THoge;
begin
 WriteLn(SizeOf(THoge)); // 3
 WriteLn(SizeOf(THogeArray)); // 30
 WriteLn(SizeOf(TPackedHogeArray)); // 30
end;

違いが分からないんです。

128 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 09:46:15 ]
配列についているんじゃなくて、構造体についているのよ。
packedをつけないと、アライメントされるかどうかはコンパイルオプションによる。
常にpackedつけておけばOK。

>>127
packedを外してコンパイルしてみ。

129 名前:124 mailto:sage [2008/03/27(木) 09:50:48 ]
>>128
> packedを外してコンパイルしてみ。

TPackedHogeArrayのpackedをですか?

130 名前:124 mailto:sage [2008/03/27(木) 09:54:58 ]
THogeとTPackedHogeArrayのpackedを外してみましたが、
出力は変わりませんでした。
ちなみにコンパイラオプションは{$A8}です。



131 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 09:55:01 ]
>>129
何が起こるか想像がつかないなら、やってみる価値はある。

132 名前:131 mailto:sage [2008/03/27(木) 10:57:08 ]
ごめん、勘違いしてた。
混ざらないと駄目みたい。 そうなると、packed配列は意味ありませんね。

procedure TForm1.Button1Click(Sender: TObject);
type
 THoge1 = record
  A: Byte;
  B: Byte;
  C: Byte;
 end;
 THoge2 = record
  A: Byte;
  B: Byte;
  C: Byte;
  D: Word;
 end;
begin
 Caption := Format('%d, %d', [SizeOf(THoge1), SizeOf(THoge2)]);
end;

133 名前:124 mailto:sage [2008/03/27(木) 11:16:28 ]
ありがとうございます。
構造体のメンバのアラインメントは他の言語にもあるのでわかるのですが、配列のpackedは謎です。
VCLのソースの中でも配列の宣言にpackedがついていたりいなかったりで、
何か使い分けがされているような気もするのですが、挙動の違いが分からないので釈然としません。
とりあえずつけておけば問題はなさそうですが・・・

134 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 11:52:13 ]
>>133
Delphiでしか使わないなら気にしない。


135 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 15:14:18 ]
Vista対応ってしとく必要あんのかな

136 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 16:52:40 ]
TTabControlで質問です。

タブを選択した時に、その番号に関連付けられてるオブジェクトが
条件を満たさないときはそのタブを選択させないようにするにはどうすればいいんでしょうか?

OnChangingイベントでいけるかと思ったんですが
これから選択しようとしているタブ番号の取得方法がわかりません。
クリックの時はマウス座標を取得する事でどうにか出来ない事もないんですが、
キーボードの時に詰まってしまいます。

137 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 20:51:54 ]
Delphiクイックリファレンスによると配列のpackedは標準Pascalとの互換性のためで
Delphiでは何の意味もないそうです

138 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 21:50:08 ]
StrToIntをAPIで書くとしたらどうなるんですかね?
SysUtilsはあまり使いたくない性分です・・・

139 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 21:52:42 ]
どう考えても意味不明だろ、それ。

140 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 21:57:55 ]
>>138
APIは知らんけどSystem.Val

しかしこのスレ無内容な一行レスばっかりだな。彼らは一体何がしたいのか。



141 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 22:07:38 ]
>>140
こんな関数があるとは・・・
勉強になります
ありがとうございます

142 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 22:12:26 ]
関数ではなくて手続きでしたね、すみません

143 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 23:06:08 ]
いやだってSysUtilsは使いたくないって意味不明じゃん。ValもStrToIntも変わらないでしょ。

144 名前:|Д゚彡 ◆A6VzDeLphI mailto:sage [2008/03/28(金) 02:16:29 ]
>>107
CharToByteIndex

なんだって。


145 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 05:27:30 ]
1文字目は1バイト目から始まり、
3文字目は4バイト目から始まるって意味か。

>>138
こんなんでどうだ?(未チェック) 16進数が必要なら自分でやって。

function StrToInt(const Str: string): Integer;
var
 I: Integer;
 P: PChar;
 Minus: Boolean;
begin
 Result := 0;
 Minus := False;
 P := PChar(Str);
 if P^ in ['+', '-'] then
 begin
  Minus := P^ = '-';
  Inc(P);
 end;
 while P^ <> #0 do
 begin
  if not (P^ in ['0'..'9']) then raise Exception.Create('変換エラー'); // EConvertみたいなのあったかも。
  Result := Result * 10 + Ord(P^) - Ord('0');
  Inc(P);
 end;
 if Minus then Result := Result * -1;
end;

146 名前:デフォルトの名無しさん [2008/03/28(金) 06:05:11 ]
Result := Result * 10 + Ord(P^) - Ord('0');
ここおかしくない?


147 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 06:05:56 ]
やべ、スレあげちまった。

148 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 07:09:17 ]
123の場合、
Result := 0 * 10 + '1' - '0' → 1
Result := 1 * 10 + '2' - '0' → 12
Result := 12 * 10 + '3' - '0' → 123
であってると思うけど。

149 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 07:43:32 ]
ああ、あってるね。ごめんなさい。


150 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 09:51:44 ]
+,-,#0の一文字だけのとき、0になるわ。



151 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 10:01:22 ]
delwiki.info/?%A5%B3%A1%BC%A5%C9%C1%D2%B8%CB%2F%BF%F4%C3%CD%A4%E4CSV%A4%CE%BC%E8%A4%EA%BD%D0%A4%B7
この GetInteger10を呼び出してる GetIntegerみたいに好みの仕様を追加したらいいんじゃないの?


152 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 15:17:15 ]
TreeViewで特定の項目だけVisible:=Falseにできますか?
または代わりの方法があれば教えてください。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<238KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef