1read 100read
2012年09月プログラム49: くだすれDelphi(超初心者用)その54 (902) TOP カテ一覧 スレ一覧 2ch元 削除依頼
人気プログラミング言語ランキング (744)
ゲームプログラムなら俺に聞け26 (465)
datファイルを共有するP2Pソフト o2on 17dat (371)
【論理】Prolog【初心者】 (605)
【Perl,Python,PHP】LL バトルロワイヤル 27【JS,Ruby】 (340)
C#は糞2.0 (802)

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


1 :2011/12/28 〜 最終レス :2012/10/31
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元 削除依頼
【初心者歓迎】C/C++室 Ver.80【環境依存OK】 (550)
くだすれC++/CLI(初心者用)part2 (614)
<XML総合 part="3"/> (756)
GPGPU#5 (274)
***Javaのオススメ入門書*** 『創るJava』 3.0 (563)
Gtkプログラミング on Windows!!! (343)
--log9.info------------------
【崖から】PRO-Gを糾弾するスレ3【堕ちろ!】 (418)
★大容量HDDバックアップには何が最適化?★ (268)
レンタル BD を焼く情報スレ 11 (476)
DVDfab Passkey part4 (213)
【Victor】最強!ビクターのメディア【誘電】 (328)
DVD-RAM 総合スレッド Part11 (572)
PDがあるんですが… (492)
☆彡☆彡 Zule2 ☆彡☆彡 (949)
レンタルDVDを焼く情報スレ29 (542)
いまさらだが、CRX140Eについて語ろう! (323)
DVDデュプリケーター(多枚数ダビング機) (211)
○○○ 雑談研究所 11 ○○○ (770)
【Blu-ray】PC用のBDドライブ情報交換スレ 15台目 (672)
音楽CDで完璧のコピーを目指そう (763)
Alpha-Romプロテクト関連スレッド Part8 (723)
【BDAV】BD Rip以降の行程を楽しむスレ Vol.6【AACS】 (971)
--log55.com------------------
【新型コロナ】自粛!自粛!自粛! 死亡者3万人超、9日で3倍増、数か月でMERSの39倍、致命率は4.7%に上昇[03/29]
【新型コロナ】人類が新型コロナを克服する日、「集団免疫」獲得の可能性は
【新型コロナ】新型コロナ対策で英政府が模索した「集団免疫」とは何か?
【話題】論文の掲載、時に1本50万円必要 研究者「高すぎる」
【新型コロナウイルス】 回復者の血液 輸血で「回復」 ルーツは日本? 新たな治療法 2020/04/09
【話題】ブラックホール撮影から1年…国立天文台水沢観測所が予算半減 本間教授「国際的にも影響」
【新型コロナ】開発中のエボラ出血熱治療薬レムデシビル「新型コロナ患者投与で重症患者の68%が症状改善」
【新型コロナ】新型コロナウイルスの「シールド」に弱点を発見!ワクチン開発が前進