1read 100read
2012年07月プログラム86: くだすれDelphi(超初心者用)その54 (912) TOP カテ一覧 スレ一覧 2ch元 削除依頼
【QBASIC互換!?】FreeBasic【GPL】 (512)
懐かしきベーマガの面白かった投稿プログラムを語る (760)
動的言語で大規模開発 (284)
★★ Java の宿題ここで答えます Part 72 ★★ (433)
Vim vs Emacs Part2 (422)
Visual Studio 2012 Part4 (431)

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


1 :2011/12/28 〜 最終レス :2012/11/08
Delphi(デルファイ)について、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を
勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが
お礼はDelphiの布教と初心者の救済をお願いします。
<前スレ>
くだすれDelphi(超初心者用)その53
http://toro.2ch.net/test/read.cgi/tech/1309101455/
<過去スレ>
DelWiki避難所(Delphi 関連の過去スレッド)
http://delwiki.info/?%E3%83%AA%E3%83%B3%E3%82%AF%2F%E3%82%B3%E3%83%9F%E3%83%A5%E3%83%8B%E3%83%86%E3%82%A3%2FDelphi%20%E9%96%A2%E9%80%A3%E3%81%AE%E9%81%8E%E5%8E%BB%E3%82%B9%E3%83%AC%E3%83%83%E3%83%89

2 :
<関連スレ>
delphiで作った有名ソフトって何があるの?
http://hibari.2ch.net/test/read.cgi/tech/1135654787/
【Delphi互換!?】FreePascal/Lazarus その2【GPL】
http://hibari.2ch.net/test/read.cgi/tech/1261676778/
ネットワークゲーム作成のお勉強(Delphi専用スレ)
http://hibari.2ch.net/test/read.cgi/gamedev/1028278884/
Delphiでアクションゲームが作りたい!! Part2
http://hibari.2ch.net/test/read.cgi/gamedev/1027482533/
delphiでMMO
http://hibari.2ch.net/test/read.cgi/gamedev/1072515100/
では質問どうぞ。

3 :
完走?落ちた?

4 :
984で落ちたような

5 :
もう人いなんだからスレ立てる必要ねぇよ

6 :
時代はLazarus

7 :
delphi7なんだけど、CombBoxって文字の右寄せって出来ない?
ググったらEditコントロールは出来るみたいだけど。

8 :
Delphiじゃなくて WindowsのCOMBOBOXには右寄せというのは無いからね
オーナードローで描画すれば右寄せ表示も出来るけど、文字入力もしたいんだよね?
Editコントロールで入力して ListBoxを動的に表示させるとか

9 :
CreateWndした後だとprotectedなメンバのEditHandleにエディット部分のhwndが入っているようなので、
こいつを使ってStyleを書き換えればできそう。

10 :
とりあえずコンポーネントを作らないやりかた。まずフォームのinterface部の先頭に
type
 TComboBox = class(StdCtrls.TComboBox)
 private
  FAlignment: TAlignment;
  procedure SetAlignment(const Value: TAlignment);
 public
  constructor Create(AOwner: TComponent); override;
  procedure CreateWnd; override;
  property Alignment: TAlignment read FAlignment write SetAlignment;
 end;
とする。

11 :
んでもって実装はこんな感じ。
constructor TComboBox.Create(AOwner: TComponent);
begin
 inherited;
 FAlignment := taLeftJustify;
end;
procedure TComboBox.CreateWnd;
const
 Alignments: array[TAlignment] of DWord = (ES_LEFT, ES_RIGHT, ES_CENTER);
begin
 inherited;
 SetWindowLong(EditHandle,GWL_STYLE,
        (GetWindowLong(EditHandle,GWL_STYLE) and $FFFFFFFC) or Alignments[FAlignment]);
end;
procedure TComboBox.SetAlignment(const Value: TAlignment);
begin
 if FAlignment <> Value then
 begin
  FAlignment := Value;
  RecreateWnd;
 end;
end;

12 :
でフォームに3つTComboBoxを置いて
procedure TForm1.FormShow(Sender: TObject);
begin
 ComboBox1.Alignment := taLeftJustify;
 ComboBox2.Alignment := taRightJustify;
 ComboBox3.Alignment := taCenter;
end;
でもこれだと設計時にAlignmentを指定できないので、それがいやならTComboBoxから派生したコンポーネントを
作ってインストールする。注意事項としてはWindows NT4では複数行ではないEDITにES_RIGHT/ES_CENTERを
指定できないためこれだけではうまくいかないということと、ひょっとしたらStyleにES_AUTOHSCROLLも入れたほうが
いいかも、ということくらいかな。

13 :
うおおおおおおお
皆さん、ありがとうございます。
10さん、まだ試してないですが使わせていただきます。
本当にありがとうございました。

14 :
DELPHIの既存システムに無線ハンディ売上システムを
アドオンしようとしてるんだけど、
ハンディサーバーは既存でVB.NETでいい感じのシステムがあるんだよね
俺はどの戦略をとるべきかな
ちなみにDELPHI7だけど、俺の職歴はDEL3.1CSで止まってる
1.DELPHIでハンディサーバーシステムを新規構築
  (マルチスレッドなTCPサーバーを作るの面倒)
2.VB.NETサーバー側にDELPHI後方処理を移植
  (既存システムの後方処理を使い回しできない)
3.VB.NETサーバーを利用し、DELPHI後方処理をDLLパックしてコール
(変数の受け渡し等でシリアライズとか問題発生しないかな)
燃料だとでも思ってなんか意見ください

15 :
手間が少ないのは3だろ

16 :
>>15
最近の異言語間のマーシャリングとか得意じゃないんだけど
VB.NETとDEL7ってあんまり気を使わないで済むのかな

17 :
COMで呼べばいいじゃん

18 :
俺だったら全部Delphiでやるけどね。 既存設計の良い所真似してより便利にしてやれば喜んでくれるだろう。
下手に既存との両立とかしたらアレは向こうの問題だとか 問題の切り分けで面倒な事になる。
でも、久しぶりのDelphiだと慣れてないって事もあるだろうからお勧めは出来ないな。
自作のコンポ大量にある場合向けだな。

で、VB.NETとの共存なら、コールバックとかややこしい事しなくても、DelphiからVB.NETのサーバーにアクセスすりゃいいんじゃないの?
プロトコルが判ってるんならだけどさ。
何かデータ加工してもらわないといけないのなら、VB.NET側で加工してファイル渡しで作ればいいじゃない。

19 :
Delphi1〜4まで持ってたんだけど
今再開するとしたら有利なアップグレードパスはありますか?
フリー版ってもうないんですよね

20 :
>>15,17,18
ご意見ありがとうございます
TThreadやSocketの経験はあるのですが、
今日実際に通信サーバーを作ろうとしたらApplication.ExeName
すらぐぐらないと思い出せない始末
この分では2週間ぐらいかかってしまうので
VB通信サーバー −> FireBirdトランかきこ
−> Delphi監視サーバー −> 伝票自動発行
の流れで行こうと思います。(監視サーバーは定期監視か可能ならSocket通知)

21 :
>>19
とりあえずStarter SKU(Delphi XE2 Starter)でいいのでは?これで足りないようなら今年の9月頃にXE3が出ると思うんで、
そのときにジャンプアップキャンペーンがあればこれでPro以上のSKUにするのがオヌヌメ。

22 :
mainmenuを使って
メニューを作っています。
コンパイルすると
メニューの文字の左側に(アルファベット1文字)が追加されています。
例)ファイル(X)
開く(Y)
閉じる(Z)
カッコとアルファベットを消す方法を教えて下さい。

23 :
つAutoHotkeys

24 :
maManualにしたらできました。
ありがとうございます。

25 :
delphi3の頃から見かける質問だがいまだにこれが出るって事は新規がまだいるんだなぁ

26 :
ホットキーがついてないのって出来損ないのクロスプラットフォームアプリでしか見かけないな

27 :
ツールボタンしか用意してないものとかもあるもんな

28 :
Delphi6使ってるんですが、Indy9はHTTP1.1に対応していますか?
ヘルプには
IdHTTP1->ProtocolVersion のデフォルトは pv1_1 と書いてありますけど。
Transfer-Encoding: chunked だと途中でファイルが途切れることがあるみたいなのですが・・・

29 :
それはDelphiじゃなくてIndy側の問題。どうせオープンソースだから自分で直せ

30 :
>>28
chunkedなデータって元々サイズ指定がなかったりするから
途切れてるんじゃなくてそれで正常って可能性もあるんじゃね?

31 :
RFC嫁

32 :
ネットモニタで見てみたら、ちゃんとデータは鯖から送信されていました。
なので、Indyがchunkedに対応していない、あるいはバグのようです。
>>30 ちなみに、chunkedはブロックごとにサイズ指定して送信してくる方式ですよ。
いろいろ試行錯誤してみた結果、
ProtocolVersion:=pv1_0 にするとchunked形式ではなく普通の形式で送信される
ので、とりあえずはそれで回避しましたが、なんか鯖の反応が遅くなるみたいです。
Indyのソースは見てみましたが、膨大で挫折しました。
どこを見ればいいんでしょうか。

33 :
Delphi初心者です

34 :
Delphi初心者です
マルチクライアントなTCPサーバーを作ろうと思うのですが、
TTcpServerというのを使えばいいんでしょうか?
バグとか機能的に使えんとかいうご意見があれば教えてくさい
あと、それよりこっちがいいよっていうコンポーネントなんか
あったら教えてくさい

35 :
Ararat Synapse にマルチクライアントなTCPサーバーのサンプルがついてるよ

36 :
>>35
34です。ありがとうございます。調べてみます。
TTcpServerは使い物にならないってことですかね?

37 :
特に理由がなければC#とかの方がいいよ

38 :
ほんとだったら.Net Frameworkでやりたいんですが、今回はDelphi言語指定です

39 :
まぁ、TTcpServerぐらいなら元のWinSockラップしてるだけだし。
バグとか大丈夫なんじゃ。ソースも簡単に追える程度でしょ。

40 :
>>39
34です。とにかく情報が少なすぎて不安ですが、チャレンジしてみます
ありがとうございました

41 :
つ ttp://docwiki.embarcadero.com/CodeExamples/XE2/en/TTcpServer_%28Delphi%29

42 :
はい、そこは見てます。これぐらいしかないんですw

43 :
>>32
サイズって全体のサイズな
細切れ毎のサイズだけでは全体がいくつか分かんないでしょ

44 :
>>42
古いものだけど、TServerSocketの方が情報はあるかもしれない
簡単に言えばTTcpServerの旧世代版みたいなもの
標準ではインストールされてなかったと思うけど、一応最新のDelphiにも入ってたはず
導入方法はググれ

45 :
>>32
Content-LengthとTransfer-Encoding: chunked が同時に指定されている場合に
鯖によって問題出る事があって昔Janeでバグ修正してるけど関係あるかな?
TIdCustomHTTP.ReadResultの判定順序変えてるけど

46 :
>>37
C#でサーバーとな。気は確かか?

47 :
.NETはWinForm,WPFなどのクライアントよりASP.NETなどのサーバー分野の方が強いんだけど

48 :
いや、別に止めないけど

49 :
Delphi+Indyに比べれば何でもましだろ

50 :
だな

51 :
というかArarat Synapse のサンプルはマルチスレッドだから実用に耐えるよ。
Indyは確かに糞だよ。

52 :
パッケージ・インストールの質問です。
TMS SoftwareのTAdvListViewをインストールしようとしていますが、
次のようなエラーが出ます。
パッケージ C:\Users\Public\Documents\RAD Studio\9.0\Bpl\alvPkgDXE2.bplは
異なる Delphi または CBuilder で作成されたためインストールできません。
コンパイルはエラー無く終了します。上記のalvPkgDXE2.bplは、
正常にコンパイルした結果でファイルの更新日付は新しくなっています。
TMS Softwareのサポートにもメールで問い合わせましたが、解決の
糸口がつかめません。bplのファイルを生成するときに、バージョンを
指定するオプションがあるのかと探していますが、
手詰まりになってきました。
'異なるDelphiまたはCBuilderで作成'というキーワードから、点検のポイント
がわかればご教授ください。

53 :
私教授じゃないから教示はできても教授はできないわ

54 :
この際Lazarusに移行しちゃえば?

55 :
_alvPkgDXE2.bpl
にでもリネームしてみる

56 :
52です。
この件クローズです。
直接の原因はTAdvStringGridがインストールされているためでした。
そもそも、TAdvListViewと共存できるのかTMS Softwareに確認しています。
お騒がせしました。

57 :
Turbo Delphiのテキスト選択に関する質問です。
普段はテキスト選択のあとにキャレットを移動させると
テキスト選択が解除されますが
使っているうちに何か変なキー操作をしてしまったのか
テキスト選択モードが変わってしまったようで
キャレットを移動してもテキスト選択が解除されません。
これはどうやったら元に戻る(切り替えられる)のでしょうか。
ヘルプを見たのですが分かりませんでした。

58 :
その質問をするためにはどうしてもトリップを付ける必要があったのでしょうか?

59 :
うぜえよ
答えられないならレスすんな、カス

60 :
キーボードにコーヒーこぼしてShiftキーが押しっばなし状態になったことはあった

61 :
今のデルファイで232c扱うコンポーネントある?

62 :
CommPortとかTurboPower Asyncあたり

63 :
ドラッグアンドドロップで、画像を配置して表示させるフォーム
をつくるには
どうすればいいでしょうか。

64 :
まずドラッグアンドドロップの処理をフォームに実装します

65 :
>>63
「フォームをつくる」の意味が曖昧だけど
usesにShellAPI
WM_DROPFILES
DragQueryPoint
を検索してみたらよろしいかと

66 :
ファイルをとは一言も言ってません

67 :
はい、次の方

68 :
Del2010です。コンパイルオプションの範囲チェックを有効にしたプロジェクトを読み込むと、
var
a : UInt64;
begin
a := $f000f000;
a := a shl 32;
showmessage(inttohex(a,16));
こういうコードの場合、shlの行でaの上位4バイトに対して負の数だったら、@BoundErrとなるように範囲チェック処理が働きます。
UInt64の場合これはおかしいように思いますが、なぜなんでしょう。実は暗黙的にUInt64もInt64として扱われるんでしょうか。

69 :
>>68
この際だから Lazarus に移行しちゃえば?

70 :
>>68
IntToHexの引数の型を見たことはある?

71 :
こんにちは。
Delphi7でmdbをTADOQueryで読み込んでDBGridに表示しています。
そのADOQueryにはCalcFieldがあり、OnCalcFieldsイベントで
データをセットしています。
で、このクエリをDBGridに表示し終わった時に、そのCalcFieldの
値の全レコードの合計をTEditか何かに表示させたいと思って、
OnCalcFieldsイベントプロシジャの中で、
Ruikei := Ruikei + CalcFieldの値;
みたいに累計を求める式を書いてるのですが、
OnCalcFieldsイベントはDBGridに表示されているレコードしか
呼び出されないようで、全レコードの合計になってくれません。
CalcFieldの値の全レコード合計を出すにはどうすればよいでしょうか?

72 :
>>71
逆に mdb にクエリー投げたくない理由教えて。
なんでわざわざDBGrid 解して計算したいの?

73 :
>>72
DBGridには表示してるだけです。
TADOQueryでmdbにSQLを投げてます。

74 :
>>72
mdb - TADOConnection - TADOQuery - TDataSource - TDBGrid

75 :
>> 70
はい、あります。Integerですよね。IntToHex自体はaの中身を表示する処理ですが、
それはあくまで、その時点でaにセットされている内容を表示する処理ですよね。
したがってaの中身が$8000000000000000であればそれが表示されるでしょう。
私が思うのは、その前のshlの段階。
shlは符号に無関係な"論理左シフト"である以上、1 shl 63は$8000000000000000と
セットされるべきで、ここに符号ありチェックが入るのは、おかしいのではないか?
という趣旨です。
参考までに、下記のようなコードでもやはり同様の現象が起きます。
var
a : UInt64;
begin
a := 1; a := a shl 63;
pcardinal( pbyte( @a ) + 4 )^ := $f; // とりあえずaを使用するためのダミー処理

76 :
>>75
逆アセして貼ってくれ

77 :
>>75
DXEで逆アセのコードを見てみたけど、まずshl 32はシフト命令を使用していない。64bitデータの
左32bitシフトは下位32bitを上位に移動して、下位32bitを0にする、という形に最適化されている。
その上でaがInt64なら範囲チェックなし、UInt64なら範囲チェックあり、というコードが生成されている。
逆じゃね?という指摘はまぁそのとおりのような気もする。

78 :
>>73
>>74
よくわからんがどうしてもDBGridを仲介させたいなら
DBGridを全スクロールさせるとかしかないわな。
俺なら別のクエリで計算させるけど。

79 :
Delphi6 で質問です。
データの簡易エディタ表示部分を作ろうとしているのですが、
Index |  txt  | −1− | −2− | −3− |
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
☑ฺ 1 | data1txt | −1-1txt− | −1-2txt− | −1-3txt− |▲|
☑ฺ 2 | data2txt | −2-1txt− | −2-2txt− | −2-3txt− | |
☑ฺ 3 | data3txt | −3-1txt− | −3-2txt− | −3-3txt− | |

 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
[←]_____________________[→]
表示は別ボタンなどで計算結果などを表示するだけ。
項目内で直接書き換えはしません。
行数はデータによって1000行ぐらいまで変動します。
チェックボックス付きの項目(有効/無効)用を入れるには ListView でいけますか? 他にあります?
ScrollBox → ListView (ViewStyle vsReport) ?

80 :
そういうリストビューコンポーネントを作れば?

81 :
>>79
Checkboxes

82 :
ListViewでいいだろ。

83 :
>>79
すぐできるからやってみろ

84 :
ドモドモ
Checkboxes というコンポーネントかと思って探しまくってました orz
ListView の プロパティCheckboxes を True にするのですね。
これを探してました、ありがとう!

85 :
教えてください。
TProgressBarで、カウントする数字が未確定の場合などに
左右にバーが揺れながら移動するのを見かけたのですが
どのように実現するのでしょうか。
調べたら、TProgressBarには、pbstMarqueeという形式がありますが
pbstMarqueeだと、左から右にブロックが移動しますが
実現したいのは、左右に移動する形式です。

86 :
自前で描画

87 :
gifアニメでいいんじゃないの?

88 :
>>85
ProgressBar1.Position := 0; 〜
を ProgressBar1.Max までの範囲で直接増減させたらダメなの?

89 :
読解力に少々問題があるようですね

90 :
脳も左右に揺れております

91 :
むかし、 Knight2000というコンポーネンがあってだな

92 :
XE2 Starterって買ってメリットある?
ジャンプアップで1万引きでproが買えるって話なら、結局払ってる金同じじゃん
それなら、VS2010のProを5万そこそこで買ってる方が得だと思うけど。
もっと安かったら飛びつくのだけどなdelphi。残念。

93 :
貧乏人は麦を食え

94 :
今は麦飯にすると高くつくけどな

95 :
XE/XE2で
tmyclass=class
published
procedure foo;
procedure bar;
procedure baz;
end;
でpublishedなメソッドfoo,bar,bazの一覧を得る方法あったら教えて下さい。
なるべくならRTTIを使った安全な方法でおねがいします。

96 :
Rtti.pas

97 :
TRRIContext.Create
GetTypes(tmyclass)
GetMethods
ToString
こんな流れ

98 :
うまくいきました。ありがとうございます。
publishedかどうかの判定はTRttiMethodのメソッド、プロパティに見当たらなかったので
TMyClass.MethodAddress(Method.Name) <> nil
で判定しました。

99 :
TRttiMemberにVisibilityプロパティあるじゃんかよ。

100read 1read
1read 100read
TOP カテ一覧 スレ一覧 2ch元 削除依頼
【糞.NET】裏切り者には死を【アンチゲイツ】 (338)
「コンパイラ・スクリプトエンジン」相談室15 (595)
Excel VBA 質問スレ Part26 (752)
sizeof(char)が必ず1でも、省略すべきではない (585)
くだすれC++/CLI(初心者用)part2 (614)
ExcelVBAで勤務表を作ろう (358)
--log9.info------------------
安全上の観点から挙手は全面禁止へ (308)
【バスオタ】守亮太郎を語れ【連載中止?】 (702)
【ディズニー】京王バス南のスレ【御用組合】 (309)
西武バスぅ〜乗務員専用スレ (641)
昔の東京の路線バス (320)
敬老パス・障害者運賃無料制度を廃止すべきか? (201)
昔の東武バスを語ろうよ!2 (387)
【新京成・関東】トロピカル連合スレ2【臨港・京都市】 (769)
【あすか】千葉県のバス会社3【シーサイド etc】 (448)
☆★都営バス運転手採用試験★☆3台目 (456)
都営バス車両運用情報スレ 22 (903)
【房総直結】東京湾アクアラインバス【海ほたる】 (907)
北海道中央バス19 (280)
【赤バス】長崎県営・県央バス 1台目【青バス】 (833)
JR高速バス「ドリーム」関連スレ 30号車 (462)
北海道中央バス石狩営業所2 (773)
--log55.com------------------
【Yahoo!】 LOHACO ロハコ 【ASKUL】 Part14
Amazonクラッシュセール
平和堂石山店
【靴・バッグ・財布・小物】LOCONDO.jpスレ Part1
NTTグループの安心オンラインストア - NTT-X Store
【3COINS】スリーコインズ【315円均一】
■★■ショップチャンネルの通販544■★■
【札幌】産直生鮮市場・ジェイ・アール生鮮市場