2012年09月プログラム49: くだすれDelphi(超初心者用)その54 (902) TOP カテ一覧 スレ一覧 2ch元 削除依頼
【計測】LabVIEW相談室【制御】 (556)
【Intel】OpenCV総合スレ 4画素目【画像処理】 (323)
OpenMPプログラミング (388)
Eclipse統合M33【Java/C++/Ruby/Python/Scala】 (495)
Borland Developer Studio 2006 No.13 (268)
【GUI】wxWidgets(旧wxWindows) その5【サイザー】 (496)

くだすれ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プロパティあるじゃんかよ。

100 :
じゃあ最初からそう書いてもらえます?

101 :
>>99はおれじゃないし。
適切なフォローありがと>>99

102 :
うむ、苦しゅうない

103 :
Delphi6EnterPriseで、ApplicationEventsのOnMessageイベントの中で、
Msg.Message=WM_KeyDownだった場合に、
テンキーのどのボタンが押されたかを判断するにはどうしたらよいでしょうか?
半角入力時の判断は実装済みで、今回は全角入力時の判断を実装します。

104 :
IMEに取られちゃうからうまくいかないんじゃね?

105 :
IMEを自分で直接コントロールすれば、不可能ではないだろうな

106 :
AやS等のキーはMapVirtuaklKey(LOBYTE(HIWORD(Msg.lParam)))で判断できました。
ですが、問題はテンキーのどのキーが押されたかどうかが知りたいのです。

107 :
>>104-105を無視して何がしたいの?コード丸ごと書いて欲しいわけ?

108 :
Ex付きのを使うのか、VkKeyScanExあたりを使うのか、Imm系関数を使うのか、
あるいは低レベルフックか、可能性がありそうなのはこのあたりか。
本当はWin32APIスレで聞けっていいたいけど、あそこは既知外に粘着されてて
機能してないからな…。

109 :
ImmGetVirtualKey(Handle)で取得したコードで解決できました。
>>104-105 >>107
無視する様な発言をして、すみませんでした。
>>108
ApplicationEventsのOnMessageイベント内で解決したかったので、こちらに投稿してしまいました。
今度からWin32API用スレッドに先に行ってみます。

110 :
>>109
> 今度からWin32API用スレッドに先に行ってみます。
やめとけ。このあたりにいるアンチとは比べ物にならないのがもう1ヶ月以上も粘着してんだから。

111 :
コンボボックスのonkeypressに重めの処理書いて123って入力した場合、
321123って表示されてしまう。
これどうすればなおせる?

112 :
コード晒せよ禿

113 :
禿じゃないので諦めます

114 :
スカルプって毛生えないらしい、ショックだ
勝手に上書きして欲しいんだろうけど、やめた方がいいよ

115 :
XE2のヘルプの見方がさっぱりわからん

116 :
オンラインヘルプのほうがまだましかも

117 :
ヘルプに文句言う人は、何のことについて調べていたのか書かないよね。

118 :
youtubeでiosアプリの作り方見たんだけど、
macの上でdelphi使ってた見たいなんだけど、
BootCampじゃなくて、仮想なんチャラみたいなので
Windowsを使えばdelphiが使えて、プロジェクトもMacにドロップ
出来るの?

119 :
ヘルプでやたら
このトピックには現在ドキュメントが存在しません。「ノート」を利用してこのトピックの改良について話しあうことができます
出てくるんだけど、プロパチィとかイベントのヘルプってほとんど無いじゃない?

120 :
結果はわかったが何を調べたんだ

121 :
>>118
Lazarusだよ。できるよ。

122 :
>>119
ものによる。最近新しく追加されたようなコンポーネントのヘルプは内容がないことが多いな。
ただ右下の"現在のwikiページを表示"で出てくるものもある。

123 :
>>120
何でお前にいちいち報告しないといけないの?

124 :
なおるかもしれないじゃん。

125 :
炎猿とかはヘルプ無いよね?
追加インスコとかするの?

126 :
つ ttp://docwiki.embarcadero.com/RADStudio/ja/FireMonkey_%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3_%E3%83%97%E3%83%A9%E3%83%83%E3%83%88%E3%83%95%E3%82%A9%E3%83%BC%E3%83%A0

127 :
ヘルプに、説明抜けが多量にあるわけだが。
マラメータの意味がわからんわ。

128 :
StepItすると左からチ○コが生えてくるProgressBarか

129 :
XE2持ってるのに、また買えって案内きた

130 :
>>129
この際Lazarusに移行しちゃえば?

131 :
TPanelの上にTImageを置いて
TImageがTPanelの大きさを超えたら(TPanelからはみ出したら)
スクロールバーを出す(スクロールバーではみ出した部分をスクロールできる)ように設計したいんだけど
TPanelのプロパティのどれを使えばいい?
もしかしたら滅茶苦茶なこと聞いてるかも…

132 :
追記
TScrollBoxの上にTImage置いて、
TScrollBoxのAutoSizeをTrueにしてもみたけどダメだった。

133 :
すみません。教えて下さい。
時間のかかる処理の進捗を知らせるため、プログレスバーを乗せたフォーム(Form2)を表示して
ループの中でプログレスバーのPositionを1ずつ増やしてます。
でも、何故かプログレスバーのゲージが増えず、ソフトが止まったみたいになります。
Applicationのメソッドの何かでループの中からソフトの動作を更新(?)すればいいのかとも思うんですが
どんなメソッドを使えばいいんでしょう?
支離滅裂ですが教えて下さい。

134 :
デルファイって、VBのように配列の要素数を超えて
値を入れようとすると、デバッカがエラー出してくれる?

135 :
そういうコンパイラオプションもあるよ

136 :
>>133
Application.ProcessMessages

137 :
>>131
そういう時はTPanelじゃなくてTScrollBoxを使う

138 :
>>135
そうなの。あまり気にせず書けて便利ですね。
ということは、兄弟であるCビルダーも同じってことなの?

139 :
Alt+F4が押されるた時、Formを閉じないようにしたいんです
「カーソル位置まで実行」でFormのKeyDown、KeyPress、CloseQueryに
来たら停止するようにしてみたんですけど、停止しないみたいです
Formのスタイルとかを変える…という方法でも結構ですので
Alt+F4を無効にする方法をお願いします

140 :
>>139
KeyDownの中で
Key=0
でよくないか?
試してないが…

141 :
Key:=0 だった orz

142 :
>>133 こういうのってWindowsの仕組み自体を知らない人なんだろうな

143 :
これから覚えれば良いこと
所詮、プログラムは知識量

144 :
炎猿 FMX.TCanvasで、角度を持った文字を出力したんいんだが、
FillTextでは無理、CreateFontらしきものも見当たらない、
TBitMapに書いて、自分で座標変換して出力しないといけないのかなぁ

145 :
>>142
超初心者用スレで「この人は超初心者だ」と指摘することにどれだけの意味があるとお考えですか?

146 :
自己解決
炎猿 FMX.TCanvasではなく、
FMX.Formなんかで、 TLabelを書きたい位置に貼って(描画時に生成しても良い)
TLabel RotateAngleに角度を代入すれば桶だったわ。
FMXでこういうプロパティが追加されているならVCLにもあるか?と
さがしたが、Vcl.TLabelにはRotateAngleはありませんですた。
炎猿で一瞬でできること、VCLで一瞬でできること、それを違うほうで
やるときに考え方をコロっと変えなければという現実を見て、orz...

147 :
>>145
確かにdelphiは初心者にとって扱いやすくていいのだけど、
やっぱりある程度のことをやろうと思うと、おとなしくCから
学ぶべきなんだろうなと、つい先日林はるひこの本買いました。
精進します。

148 :
精々頑張りたまえ

149 :
TreeViewにおいてツリー状にノードがある場合に
特定のノードからサブ含む子ノード全てにアクセスしたいのです。
再帰関数の書き方がわかりません。
サンプルいただけないでしょうか?

150 :
XE2のIDEでALTキーを押した時に初めて”ファイル”メニューが”ファイル(&F)”と表示されるようになりますが
常時"ファイル(&F)"と表示されるようには出来ませんか。
わかりづらい上にたまに一度ALTを離してからでないと
サブメニューのアクセラレータキーが表示されないことがあって困ってます。

151 :
TreeNodeの再帰の件は自己解決しました
procedure exNode(TargetNode: TTreeNode);
var
 Node: TTreeNode;
begin
 Node:= TargetNode.getFirstChild;
 while Node<>nil do
 begin
  //ここに処理を書く
  exNode(Node, b);
  Node:= TargetNode.GetNextChild(Node);
 end;
end;

152 :
えっ

153 :
びっ
まっ
よっ
ねーず

154 :
s := 'foo#'#13#10'bar'#1#2#3;
な文字列を
'foo###13#10bar#1#2#3'
のように相互にescape/unescapeしてくれる関数あったら教えて下さい。

155 :
すみません、教えてください。
C#(Visual studio2010 Windowsフォームアプリケーション)で作成したフォームを
DelphiでDLLファイルかTLBファイルから呼び出したいんですが、やり方がわかりません。
どなたか教えていただけませんでしょうか

156 :
本当に済まないと思っているのか。

157 :
痛い。

158 :

   ∩___∩         |
   | ノ\     ヽ        |
  /  ●゛  ● |        |
  | ∪  ( _●_) ミ       j
 彡、   |∪|   |        J
/     ∩ノ ⊃  ヽ     >155  
(  \ / _ノ |  |
.\ “  /__|  |
  \ /___ /

159 :
ぜんぜんDelphiのこと知らないんだけど
Delphi.netってどうなったの

160 :
win7のハンドル調べるツールは何を使っていますか?

161 :
自作

162 :
他作

163 :
与作

164 :
Delphi XE の 「コード」「履歴」「デザイン」タブの「デザイン」タブが
消えて、フォームが見れなくなったんですが、復活させるのは、どうすれば良いのでしょうか?
お願いします。お願いします。お願いします。

165 :
[F12]じゃだめなの?

166 :
環境オプション-VCLデザイナ-埋め込みデザインにチェックついてるとか

167 :
逆だ。チェック外すと昔のIDEようにフォームが独立したウィンドウで表示される。

168 :
とりあえず、自己解決しました。
pas ファイルと dfm ファイルは、残ってるのですが、「デザイン」タブが
無くなったので、[F12]は、効きませんでしたし、編集画面左上の切り替えボタンも
使用不能になってました。
新しく Form2 を作り、Form1 の dfm ファイルの中身をテキストエディタで
Form1 を Form2 に置換して貼り付けたら Form2 で、画面は復活しましたが
同じ方法で, pas ファイルを Form1 を Form2 に置換して貼り付けたら
また、Form2 も「デザイン」タブが、消えて同じ現象になりました。
新しく Form3 を作り、 dfm ファイルを貼り付けて
pas ファイルは、procedure や fanction の枠だけ造り、var i: Integer;
だけ、書いて保存し、procedure や fanction の中身だけ貼り付けたら
「デザイン」タブが消えずに復活しました。

169 :
>>166,167
そのチェックは、関係無かったです。
現象としては、「デザイン」タブが、完全に無くなり、
編集画面の左上の3番目のボタン「フォーム/ユニットの切り替え(F12)」ボタンが
Enabled := false みたいに使用不可になって使えませんでした。

170 :
起動時に複数のフォームを表示させるにはどうすればいいですか?

171 :
{$R *.dfm}を消したんじゃね?
>170
メインフォームのOnShowで2つめのフォームを作って表示するか、メインフォームと同様に
2つめのフォームを自動生成にする。

172 :
>>171
ありがとう

173 :
>>171
消してないです。まあ、なんとか復活したので良かったです。

174 :
例えば
'dir c:\ /s /b'
という外部コマンドを実行して結果を取得するような
ライブラリって無いですか。
WinExecで'cmd.exe /c dir c:\ /s /b > temp/result.txt'
みたいなことをやってるんですがもうちょっとスマートに(出来ればリアルタイムに1行ずつ)取りたいです。

175 :
FindFirst/FindNext/FindCloseとかそういう話じゃなく?単にコンソールアプリを
起動してその出力を取りたいってこと?それならパイプを使うんだけど、
Delphi コンソール パイプとかで検索してみたら?

176 :
というかそんなのぐぐればすぐ見つかる

177 :
ggrks

178 :
これって毎度ググれとか言う割にまともな実装がひとつもないんだよなw

179 :
>>174
ttp://wiki.lazarus.freepascal.org/Executing_External_Programs/ja

180 :
JVCLのTJvCreateProcessとか

181 :
有難うございました。

182 :
>>178
ググる能力すらなかったんだね(ニッコリ

183 :
これってssl通信できますか?

184 :
Indy10ならOKでは?

185 :
delphiにプロトタイプ関数ってあるの?

186 :
Cのプロトタイプ宣言相当ならこんな感じ
unit mylib;
interface
function add(a, b: integer): integer;
implementation
function add(a, b: integer): integer;
begin
 Exit(a+b);
end;
end.

187 :
やっぱりpascalはいいなあ

188 :
>>185
forward宣言ね。

189 :
type
TFoo<T> = class
public
function Eq(A, B: T): Boolean;
end;
function TFoo<T>.Eq(A, B: T): Boolean;
begin
Result := A = B; // [DCC エラー] E2015 この型には指定した演算子は使えません
end;
でエラーになってしまう。
Tにはクラスではなく列挙型のみを指定して使いたいんだけど(なのでIなんたらは継承できない)
そういうのは現実的ではない?
列挙型制約なんてのはサポートされないんだろうか。
type TMyEnum = (meFoo, meBar, meBaz);
var foo: TFoo<TMyEnum>;
if foo.eq(meFoo, meBar) then ...

190 :
値型制約はあるけど

191 :
Result := A = B; なんて書き方できたっけ これじゃ戻り値はどうなるの

192 :
>>191
Boolean

193 :
>>189
列挙型制約欲しいよな。TFoo<T: enum>とか。
ただ他の制約と違って、指定する列挙型によってSizeOf(T)が変わるから実装が難しいのかもしれない。
現実的な書き方としては、CreateでTypeInfo(T)のKindがtkEnumerationかどうかチェックしつつ、
比較では上記のSizeOf(T)が変わる可能性があるという部分も考慮して、
function TFoo<T>.Eq(A, B: T): Boolean;
begin
  Result := CompareMem(@A, @B, SizeOf(T));
end;
って感じだろうな。CompareMemの代わりにPByteArray何かにキャストしてSizeOf(T)分forで回すとかでもいいけど。
>>191
えっ…基本だろ…
もしかしてif文で毎回if A = B = True thenとか書いてるわけ?
そうだとしてもA = BとTrueがエラー無く比較できてる時点で何を返してるかは自明だろ…。

194 :
やっぱりpascalはいいなあ
ヘッダファイルいらないし。

195 :
ヘッダファイルがある言語の方が少ないだろ

196 :
StringGridの指定したセルの色を瞬時に変えたい。
指定したセルの色を変えるところまでは
procedure TForm1.StringGrid1DrawCell(...
begin
if (ACol = 5) and (ARow =5) then begin
StringGrid1.Canvas.Brush.Color := clBlue;
StringGrid1.Canvas.FillRect(Rect);
end;
end;
でよかったんだけどこれに
if combobox1.itemindex=0 thenなど条件を加えると条件にすぐさま反応せず、
指定したセルをクリックしたら色が変わるという状態になってしまう。
このstringgridのイベントはプログラム起動時にしか自動で動いてくれないのかな
どなたかご教授願います。

197 :
refresh とか

198 :
>>197
ありがとうございます。
Invalidateのことでしょうか?
いろいろ置く場所を変えて試してみましたが状況変わらずでした

199 :
>>196
> このstringgridのイベントはプログラム起動時にしか自動で動いてくれないのかな
そんなわきゃない。
StringGrid.RepaintとかInvalidateRect(StringGrid.Handle,nil)とかをComboBoxの
OnChangeで呼び出せ。

200 :
>>199
きたあああああああああああああああああうおっしゃあああ
あざすあざす!

201 :
Windows7のコピーダイアログみたいに
見出し+説明がセットになった大きなボタンの配置されたダイアログって
どうやって作ればいいですか?
------------------
OK(&O)
長々とした説明
------------------
------------------
Cancel(&C)
長々とした説明
------------------
どっちか選んでください。

202 :
つ ttp://edn.embarcadero.com/article/33753#7%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%83%9C%E3%82%BF%E3%83%B3%E3%81%A4%E3%81%8D%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0

203 :
RepaintやRefreshは真っ先に思いついて試すだろ普通・・・

204 :
Delphi(デルファイ)について、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を
勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが
お礼はDelphiの布教と初心者の救済をお願いします。

205 :
>>202
ありがとうございます。これ良さそうです。

206 :
ウィキ作った。
書くの手伝って。
http://goo.gl/5Isxp

207 :
>>206
なんかいろんな言語スレに張ってるな。広告収入目当てか?

208 :
>>206
ノートン先生大激怒

209 :
現在のところ
delphiを無料で手に入れることはできるのでしょうか?
入門っていうか、少し興味があり今やっているpythonと同じく勉強してみたいのですが…

210 :
>>209
つLazarus

211 :
>>210
こんなのがあるんですね
なるほどです
Lazarusについていろいろ調べてみます

212 :
>>209
trubo delphi exploreがあるよ。
vclソースももれなくついてくるよ。
フランスかどこかのミラーサイトがあるから入手可能よ。
736ファイルもそこにあるはずだよ。

213 :
>>212
Turbo Delphi 6 Explorerのやつですね
情報ありがとうございます

214 :
このスレで他ツール推めるのもアレだけど
今からはじめるならC# Express検討してみるのがいいと思う。
Win32APIなプラットフォームに拘りがあるならDelphiでもいいとは思うけど。

215 :
C#wwwwwwwwwwwwwwwwwwwwwwww

216 :
結果的に希望のアプリが作れるならC#でもいいじゃない
.NETの仕様に沿って完結できるならそんなに悪いものじゃないよ

217 :
こういうアプリが作りたいという質問じゃないのに
希望のアプリがどうとか言い出す神経がそもそも異常だということを自覚した方がいい

218 :
ちょっと分からないことがあるんですが、教えてください。
pngイメージを読み込んでBitmapにAssignするわけですが、
これを同じ変数Bitmapを使って繰り返した場合、
何か不都合があるんでしょうか?
100回を超えたあたりで、この部分で「リソースが...」とエラーが
出てしまうんですが?


219 :
またエスパー待ちの質問か

220 :
CreateしてんのにFreeしてないとかそういうオチだろ

221 :
100個のpngファイルをロックするアプリケーションか……ゴクリ。。。

222 :
メモリは無限にあるわけじゃないだろ どんだけドカ食いしてるんだよ
メモリリークしてるはずだから確かめてみな

223 :
>>218
最近のなら
System.ReportMemoryLeaksOnShutdown := True;
以前のならFastMM入れてどーたらすれば開放し忘れのオブジェクトがあったら
警告してくれる。
そうじゃなく単に作り過ぎという事なら
自分もファイラーもどきのアプリ作った時Icon作りまくった時にリソース不足でエラーが出たことがあったな。
PNGインスタンスを管理してサイズか個数で制限かけて古いものから自動開放、
必要になったらまた読み込むというのを自動化してくれるキャッシュクラスを作ってみればいいかも知れない。

224 :
delphiでポインタを使ってswap関数の実験をしてるのですが、うまくいきません。
メイン側
a:=1000;
b:=2000;
swap(@a,@b);

メソッド側
procedure swap(x:^integer;y:^integer);
var
z:integer;
begin
z:=y^;
y:=x^;
x^:=z;
end
Cみたいなやり方ではだめなんでしょうか。

225 :
y^:=x^;

226 :
^-^

227 :
>>225
失礼。y^:=x^;のタイプミスでした。
しかし、procedureの中の^でエラーになるんです。

228 :
うまくいかないとかエラーになるとか具体的な情報を書こうとしないのは
プログラマに向いていないタイプだな。
どういう風にうまくいかないのかとかエラーはコンパイル時なのか実行時なのか
どういうエラーメッセージが出るとか具体的な情報を書かないと。

229 :
procedure Swap(a, b: PInteger);
var tmp: Integer;
begin
tmp := a^;
a^ := b^;
b^ := tmp;
end;

230 :
varでいいじゃんっていう

231 :
関数宣言の引数の型には、型名(と、いくつかの例外)しか
許さないので、^ は使えない。ポインタは型名で
使用できるようにするためにあらかじめ定義しておく。

232 :
>>231
そうなんですか。
varで充分ことは足りるのですが、
一度やってみます。有難うございます。

233 :
環境:Delphi XE2 Update4
TProcをフィールドに持つクラスを生成廃棄した時
FProc._Releaseを明示的に呼ばないとメモリリークするんですが
どう書くのが正しいというのはありますか。
イベントハンドラ替わりにこういう使い方は認められていないんでしょうか。
type
TCaller = class
FProc: TProc;
end;
var
c: TCaller;
begin
System.ReportMemoryLeaksOnShutdown := True;
c := TCaller.Create;
c.FProc:= procedure begin end;
// c.FProc._Release;
c.Free;
end.
---------------------------
Unexpected Memory Leak
---------------------------
An unexpected memory leak has occurred. The unexpected small block leaks are:
13 - 20 bytes: Test$1354$ActRec x 1
---------------------------
OK
---------------------------

234 :
2010でコピペして動かすとリークはしないな

235 :
とりあえず、program のメインブロックの begin end. での
無名メソッドをやめ、一旦、手続きを呼び出せ。
|uses SysUtils;
|type
| TCaller = class
| FProc: TProc;
| end;
|var
| c: TCaller;
|procedure MyProc;
|begin
| c := TCaller.Create;
| c.FProc:= procedure begin end;
| c.Free;
|end;
|begin
| System.ReportMemoryLeaksOnShutdown := True;
| MyProc;
|end.

236 :
D7でFireBird2.5とIBXでDBアプリを作っています
コード入力したマスターを参照項目で表示させているのですが
既にマスターに登録されているものについては表示されるのですが
レコードの入力の途中でマスター未登録のものを別画面を開いて登録しても
参照項目で表示されません
どうしたら表示されますか


237 :
キャンペーンで配ってる本を買ったんだけど、金をドブに捨てた。

238 :
>>236
そういうのはMLで質問するとDB大好きなおじさんたちが嬉々として教えてくれます

239 :
データセットを別のデータモジュールあたりに分離させて
両方からそこを見に行けばいいじゃない

240 :
参照を更新し直さないと駄目な仕組みだとサーバーに負担掛かるので
過去履歴とかを参照する場合などにしか使わなくなったな。

241 :
{$i}は使わないで
MyUtilsA.pas, MyUtilsB.pas, MyUtilsC.pasと複数ファイルに分かれているユニットを
uses MyUtils; だけで利用できるようにするやり方無いですか

242 :
// MyUnits.pas
unit MyUnits;
interface
uses MyUnitsA, MyUnitsB, MyUnitsC;
type
TFoo = MyUnitsA.TFoo;
TBar = MyUnitsB.TBar;
const
MyConst1 = MyUnitC.MyConst1;
procedure MyGlobalProcA;
function MyGlobalVarA: Integer;
// 変数の書き込みはムリ。変数を書き換える関数を書く
procedure SetMyGlobalVarA(Val: Integer);
implementation
procedure MyGlobalProcA;
begin
MyUnitsA.MyGlobalProcA;
end;
function MyGlobalVarA: Integer;
begin
Result := MyUnitaA.MyGlobalA;
end;
procedure SetMyGlobalVarA(Val: Integer);
begin
MyUnitaA.MyGlobalA := Val;
end;
end.

243 :
exeと同じフォルダにiniファイルが無いと初回起動とみなすようにしているけど、
デバッグするのにいちいちiniファイルを消すのが面倒なので良い方法を知りませんか?

244 :
デバッグ用のIFDEF使うとか
EXEの引数にそれ用のパラメータを用意するとか

245 :
[SHIFT]が押されていたら初回起動と見なす

246 :
それは嫌です

247 :
[CTRL]が押されていたら初回起動と見なす

248 :
Post BuildでINIファイルを削除する

249 :
例えばLabel1.text := inttostr(random(100));
としてLabel2にも同じテキストを挿入したい時
Label2.text := Label1.text;
よりもスタイリッシュな書き方ってありますか?
或いは1行で2つのラベルに同じテキストを入れる方法とか

250 :
>>249
変なとこで悩んでないで次に進め

251 :
>>249
ふつうはそれで良し。
繰り返しあるようなら自前で関数つくるべし。
procedure SetLabel(A,B:TLabel; S:String);

252 :
>>251
引数が初心者っぽいぞw

253 :
ありがとうございます
確かに掘り下げてもよしない疑問でした

254 :
今時iniファイルなんて使ってんのかよ

255 :
xmlってかw編集面倒じゃんw
まさかレジストリなうとかいわねーよなw

256 :
iniは標準でメモ帳で開いてくれるけど、xmlはブラウザで開いちまうからな
初心者はその程度でも詰まったりするから、iniの方が使う側も作る側も楽

257 :
jsonでいいんでねーの

258 :
ねーわ

259 :
sqliteでいいだろ

260 :
わざわざDLL用意すんのかよw本末転倒だろjk

261 :
Oracleあたりで落ち着こうぜみんな。

262 :
で結局ini以外って何よ

263 :
DOMストレージ

264 :
ini嫌うのってまさに>>249と同じなんじゃねーのw

265 :
スタイリッシュw

266 :
CSV

267 :
ちょっと教えてください。
プログラムの中でTWebBrowserを使ってるんですが、
これはメモリを大量消費するんで、対象Formごと
動的に作成するようにしたんです。
で、WebBrowserを貼り付けたFormをFreeしても
メモリがぜんぜん解放されないみたいなんですが
なんか特別な処理が必要なんでしょうか?
よろしくお願いします。

268 :
キャッシュじゃない?
NavigateメソッドでnavNoWriteToCache使ってみるべし

269 :
>>268
ありがとうございます。
さっそく試してみました。
8M → 50M のままだったのが
8M → 50M → 18M まで減少しました。


270 :
俺の厚い胸板を騒がしてくれる質問最近ねぇな

271 :
>>270
じゃあ質問。SSE2とかで最適化したいんですけど、どうしたらいいんでしょうか。

272 :
しらん
はい次

273 :
海の水はどうしてですか?

274 :
おとうさん か おかあさん と いっしょ に あたま の びょういん に いこうね
はい次

275 :
ttp://twitter.com/#!/kaitboy/status/190231289079676928
なぜDelphiで作るとかそういう話になるのかな。いまどきDelphiで作ってる人ってほとんどいないだろ。
なぜ世の開発者たちはDelphiから離れていったか、その理由を考えたことあるのかな。単なる生産性の
低さ、開発情報のなさ、開発環境のサポートへの不安からだよ。

276 :
↑著作権違反

277 :
自分の書き込みを転載することも違反かね。すごいもんだね。

278 :
せっかくバカスレがあるんだからそっちでやれ

279 :
>>277
証明できないのに自分の書き込みだと言い張る馬鹿もいるんですね

280 :
サポートの不安wwww

281 :
自身の能力の低さは言うまでも無いから書いてないんだね

282 :
単なる生産性の低さ
開発情報のなさ
開発環境のサポートへの不安

283 :
生産性は抜群だけどねw

284 :
TBitmapってどうしたらコピーできますか?

285 :
新しく TBitmap Create して、Assign

286 :
生産性抜群とか言ってるやつは経験たりないだけ。
昔の自分を見てるようでおまえの立ち位置が見える。

287 :
スレチを繰り返すおまえをみてると
昔の自分を見てるようでおまえの立ち位置が見える。

288 :
Delphiの生産性を否定するやつってグーグルなしじゃ何もできなさそうだよな

289 :
.NET最高厨だろ。DLLヘルに落ちてR

290 :
自分の生産性の低さを道具のせいにする奴は総じてクズ

291 :
まぁくだすれだからってそうくだをまくなよ。
初心者こなくなっちまうぞw

292 :
道具がすべて同じ能力持ってると思ってるのか?どんだけ馬鹿なんだよ。
10年前のPC使って、おまえの能力で最新のアプリを快適に使えるもんなら使ってみろ馬鹿。

293 :
いや、Delphi の能力は最低。

294 :
確かに。Lazarusは最高だけどな。

295 :
10年以上前のPCで流通系の電算室取りしきってるがダメなの?

296 :
>>292
人間としての使えなさと道具の性能は関係ないよ底辺さん^^
何か思い当たることでもあったのかな?^^;

297 :
10年前から何も変わってないような環境をいまだに生産性高いとか言ってるのは
自分が10年前から進歩してないことをアピールしてるだけなんだよ。
エンバカスレにも書いたように不満から新しいものが生まれてくるんだよ。
>>296
自分のレベルの低さアピールしておつかれ^^;

298 :
>不満から新しいものが
C# のことかね。
いやエンバカがわしらの不満を解決してくれると信じている人がまだいるとは噴飯ものでありますな

299 :
何百年たとうがいいものはいい。
ビル信者にはそれが分からんのですよ。
スレチはほっときましょうよ

300 :
         ,,-―--、
        |:::::::::::::;;;ノ  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
        |::::::::::( 」 <  不満から新しいものが生まれてくるんだよ。
        ノノノ ヽ_l   \______________
       ,,-┴―┴- 、    ∩_
     /,|┌-[]─┐| \  (  ノ
      / ヽ| |  バ  | '、/\ / /
     / `./| |  カ  |  |\   /
     \ ヽ| lゝ    |  |  \__/
     \ |  ̄ ̄ ̄   |
      ⊂|______|
       |l_l i l_l |
       |   ┬    |

301 :
なんか今の流れをブッちぎるようで申し訳ないけど
アプリAのフォーム上に、アプリBの画面を重ねて表示し、
外見上はあたかも一つのプログラムであるかのようにするって
可能でしょうか?
もちろん、両アプリともDelphiで作るものですが。
訳あって、機能の一部をまったく別アプリにしたいので
よろしくお願いします。

302 :
アプリBのウィンドウをアプリAのウィンドウの子供にする

303 :
>>302
さっそくありがとうございます
で、「ウィンドウの子供」って?
同じアプリ内だとParentプロパティを使ったことあるけど、
アプリ同士の親子って、何をどう操作するんですか?

304 :
いろいろ調べてみたけど、下で議論してるようなことかな...
ttp://www.delphipages.com/forum/showthread.php?t=82363
ttp://forum.tuts4you.com/topic/14392-embed-form-into-other-apps-window-delphi/
自分にはちょっと難しいかも...

305 :
>>301
あまりスマートな方法じゃないですが
別EXEの画面をフチなしで作って
もう一方のEXEから表示する位置をSendMessageで送って
その場所に画面を表示したらどうですか?
そのままだと多分[ALT]キーでシステムメニューは表示出来るので
移動・サイズ変更・終了など出来ないようにしないといけないですが。

306 :
>>305
ありがとうございます。

自分の目的に一番かなってるのは以下の記事ですが、
ttp://www.mombu.com/programming/xbase/t-external-application-from-within-a-delphi-form-3234654.html
これがうまく機能しなかったら、>>305さんの方法でと思ってます。

307 :
この手の質問良くあるけど、そいつらって
自分が作ってるものがどう使われるか知ってて開発してんの?

308 :
まだいたのかスレチ君

309 :
>>303
unit Unit1; // 親(アプリB 上でコントロールする方)
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,ShellAPI, ExtCtrls, ComCtrls,
Unit2; // 子(アプリA 下でコントロールされる方)
type
TForm1 = class(TForm)
 〜〜〜〜〜

子アプリの方が「Unit2 Form2」とした場合
unit Unit2; // 子
TForm2 = class(TForm)
親側から → 子へは
Form2.Button1.OnClick(nil);
など Form2 から指定して書く。

310 :
Unit2.pas を親側のプロジェクトに加えることを忘れずに

311 :
それアプリじゃなくてフォーム分けてるだけでしょ
アプリを分けるって書いてあるんだけど、日本語読めない?
それともアプリやフォームっていう基本的な用語の意味が理解できてない?

312 :
もっとはっきり目的を書けよ。
なにが訳あって別アプリにしたいだよ。
どうせネトゲの自動化とかだろw

313 :
くだすれと知ってて聞いてるなら答えは「無理」
本気ならMLかフォーラムにR

314 :
もう終わってるのにいつまで言ってんのお前ら

315 :
えーーっと
コントロール上に別アプリを表示させたいって質問した者ですけど
結果を報告するのを忘れてすみませんでした。
>>312
別アプリにする理由は、上の方でTWebBrowserのメモリ解放について
質問したレス(>>267)に関連したものです。
TWebBrowserを貼り付けたForm(Google map関連のもの)を動的に作成し、
不要になったら解放しても、大量のメモリ(40MBとか)を解放してくれず、
ちょっと精神的によくないんで別アプリにしたいというわけです。
で結局、次スレのようにしました。

316 :
chWND: hWND;
procedure TForm1.TabSheet2Show(Sender: TObject);
var
Count: Integer;
begin
if chWND <> 0 then exit;
WinExec(**別アプリのパス**, SW_HIDE);
try
Count := 0;
repeat
chWND := FindWindow(nil, '**別アプリのキャプション**');
if chWND = 0 then begin
inc(Count);
sleep(100);
end;
until (chWND <> 0) or (Count > 20);
if chWND <> 0 then begin
Windows.SetParent(chWND, TabSheet2.Handle );
Windows.MoveWindow(chWND, 0, 0, TabSheet2.ClientWidth, TabSheet2.ClientHeight, false);
ShowWindow(chWND, SW_SHOW);
SetForegroundWindow(chWND);
end else
ShowMessage('can not start app');
except
on Exception do PostMessage(chWND, WM_CLOSE, 0, 0);
end;
end;

317 :
だからここは超初心者用
お前が来るところではない

318 :
というかゲームなんかやること自体が人生の無駄遣いなんだから
仮にゲームでの不正目的でももともと無駄なものを取得しただけだから二重に無駄だよ

319 :
Formのことをアプリと呼んでる人がいる(笑)

320 :
>>317
そうだな、お前みたいな馬鹿では>>316みたいなソース貼られても頭悪くて理解できないもんな

321 :
お前はなんで超初心者に絡んでるんだ?

322 :
超初心者だらけのスレなんてなんか意味あんの?

323 :
                     /j
                   /__/ ‘,
                  //  ヽ  ', 、
                    //    ‘  ! ヽ             …わかった この話はやめよう
                /イ       ', l  ’
               iヘヘ,       l |  ’
               | nヘヘ _      | |   l            ハイ!! やめやめ
               | l_| | | ゝ ̄`ヽ | |〈 ̄ノ
               ゝソノノ   `ー‐' l ! ¨/
            n/7./7 ∧        j/ /     iヽiヽn
              |! |///7/:::ゝ   r===オ        | ! | |/~7
             i~| | | ,' '/:::::::::::ゝ、 l_こ./ヾ..     nl l .||/
             | | | | l {':j`i::::::::::::::::`ーr '         ||ー---{
              | '" ̄ ̄iノ .l::::::::::::::::::::::∧       | ゝ    ',
      , 一 r‐‐l   γ /、::::::::::::::::::::::::〉ー= ___  ヘ  ヽ   }
    / o  |!:::::}     / o` ー 、::::::::::::i o ,':::::::{`ヽ ヘ     ノ
   / o    ノ:::::∧   /ヽ  o  ヽ::::::::| o i::::::::ヽ、 /   /
   /    ノ::::::/    /::::::::ヽ  o  ヽ:::| o {::::::::::::::Υ   /

324 :
.,r‐--,,,_、                                   
.゙l゙'i、  `゙''-,,,,,,,,,,,,,,,,,_                         
: ゙l `'i、.,r‐-、,,`'-,、  `''ー、_                      
 ゙l ,/゛   `゙''''ミッ、   ゙゙'''-,、                  
  У        `!ヽ、    ._,,i、      ,,,,,、          
 /          ゙r゙l,   / ‘i、    { ゙i、          
 |              ゙'i゙l ./    |,    ゙l、 ゙l          
 |         _,,,,_  .゙'},. |   ,/ ゚i、    ゙l  ゙l、        
 ゙l         ,r'"` `゙゙''',゙',lri、,,/  .゙l    ゙l  ヽ        
 │     .|     .彳 ゚|″    |    .|  │       
  │     .ヽ_   _,,-°  `i、    .|    .,,゙l, .゙ケ'=ッ、    
  ゙l, ,,,,,,、    ̄ ̄     .゙l,-'シ'',!.゙l  ,/゜ ゙'i、 .}i、`.゙'i、    
   `'| `'i、            ,,,rン・'゙,,,-'i| .|  .l、,,」  ゙=    |    
    .゙ヽ, .゙!,          i″ ゙''i,   .l │ /" .゚┓     .|    
     ‘'''l"        ゙'-,,、゙l、 .,,「 |  ゙l、  ゜     .|    
       ゙l'-,、       `゙''゙‐'" ./   .ヽ       .|    
          |  ゙'ヽ,、        /    '゙l      .,ノ    
       ′   .~'―--―ー¬''"         ヽ-,   |、   
                            "    .l゙  

325 :
ウルトラマンセブンとは古いな

326 :
>>322
お前よりは意味あるんじゃねw

327 :
じゃあ俺が超初心者の質問するよ。
interface ってbuilderでいうヘッダファイル?
delphiはなぜヘッダファイルがないの

328 :
>>327
>delphiはなぜヘッダファイルがないの
あります。
命令文は {$INCLUDE filename}です。

329 :
それヘッダじゃないよね
馬鹿なのかな

330 :
>>329
>それヘッダじゃないよね
{$INCLUDE filename}はヘッダに書くことも可能です。
DelphiとC++ではヘッダファイル(インクルードファイル)の使用用途がまったく同じという訳ではないですが
だからといって、Delphiにヘッダファイル(インクルードファイル)が無いということにはならないでしょう。

331 :
DelphiにC/C++でいうヘッダファイルはない。ヘッダファイルがない理由はusesで他のユニットの
interface部の内容を取り込む仕様だから。
$I($INCLUDE)はそのファイルの内容をその行に置き換えるという、Cの#includeと全く同じ意味を
持つが、言語仕様の差から同じ効果をもたらすわけではない。

332 :
>>331
>interface部の内容を取り込む仕様だから。
それは必須ではないです。INCLUDEをC++と同じような用途で使用したいなら
//Project1.dprファイル
program Project1;
uses
SysUtils,
Dialogs;
{$INCLUDE filename.txt}
var
aaa: Taaa;
begin
aaa := Taaa.Create;
aaa.bbb;
aaa.Free;
end.
#filename.txtファイル
type
Taaa = class
procedure bbb;
end;
procedure Taaa.bbb;
begin
ShowMessage('Taaa.bbb');
end;
このようにUnitを使わずC++と同等程度の”効果をもたらす”書き方も出来ます。
(もちろん、こんな書き方を推奨しているわかではないですが)
>>327,331
解答を用意しているということは、これは質問ではなく自分の知識を自慢したいのですか?
それなら、ここは初心者のスレなので正確な質問と解答を書いた方がいいですよ。

333 :
>>332
いろいろ教えて下さりありがとうごうざいます。
でも私327は331ではありませんので
そういうつもりはありません。

334 :
そもそもCもヘッダファイル必須じゃねーし。
質問自体がおかしい。

335 :
何度も同じこと書くの面倒だからまとめましょぐらいの意味しかないから
>328が正解

336 :
やめて〜 わたしの美貌を巡って争わないでぇ

337 :
>>333
>でも私327は331ではありませんので
そうなんですか、すみませんでした。
しかし、それならこの回答では求めていた解答と違いますよね?
質問をこんな感じに変えてみたらどうですか。(意図する質問と違っていたらすみません)
DelphiはINCLUDEがあるのに何故Unitを使うのか?
Unitを使った場合のメリット・デメリットや特徴は何か?

338 :
いつのpascalから$include指令があったん?

339 :
多分1から
>332
> それは必須ではないです。
意味不明。usesはC#のusing同様に宣言の内容を取り込むのであって、C/C++の
#INCLUDEのようにその行をファイル全体で置き換えるわけではない。
その例だと2カ所以上でfilename.txtを$INCLUDEした場合、Taaaが2回定義され、
しかも異なるものと解釈される、ってのはわかってるか?
> 解答を用意しているということは、これは質問ではなく自分の知識を自慢したいのですか?
> それなら、ここは初心者のスレなので正確な質問と解答を書いた方がいいですよ。
自分以外がみんな敵に見えるのは病気だよ?ちなみに>>327-330は俺じゃないから。

340 :
このすれ超初心者しか閲覧禁止らしいから仕方ないよ

341 :
>>340
そんなこといわないで。
経験豊かなオジサンたちが、delphi初心者にやさしく教えるスレなんだから。
素晴らしい言語であるdelphiを若手に広めるのが目的じゃないか。

342 :
delphiもそうだったけれど大抵の言語のinclude文は単なるコピペなので、 ビルドスクリプトで
perl,pythonとかをサーバーから呼んで生成してからかますと結構手抜きができる。定数に日付
入れたり、クラス名にユニークな名前入れたり 特定条件でプロパティ変えたりとか

343 :
FM関係のドキュメントが一杯出たんだって。
少しずつでも読まないといけないなー。積読・宿題が山積みー


344 :
読む前に最初にやる事は、Delphi/FMに将来があるかを考えることだと思う。

345 :
>>339
>意味不明。usesはC#のusing同様に宣言の内容を取り込むのであって、C/C++の
>#INCLUDEのようにその行をファイル全体で置き換えるわけではない。
ソースのファイル分割がUnit形式だけと限らないという意味です。
Unitを使った >interface部の内容を取り込む仕様だから。
この方法以外でもファイルを取り込めます。だからこの”取り込む仕様”だけが必須ではないと書きました。
>その例だと2カ所以上でfilename.txtを$INCLUDEした場合、Taaaが2回定義され、
>しかも異なるものと解釈される、ってのはわかってるか?
すみません、言いたいことの意図がわかりません。
インクルードファイルなので、記述されれば何回でもソースに展開されますし
それを認識して不具合なくソースを書くのは他の言語同様で当然のことだと思います。
それにUnit形式の場合でも、usesに二つ以上Unitを定義できないのもある意味同様だと思いますが。
すみませんが本当に、何を言いたいのかわかりません。

346 :
馬鹿には無理

347 :
>>345
おかしい質問にはおかしい答えしか出ない。
もうやめとけ。

348 :
>345
> ソースのファイル分割がUnit形式だけと限らないという意味です。
必須じゃないという意味はわかった。初心者に説明して意味があるかどうかは別だけど。
ソースのファイル分割とユニット分割の違いって初心者に意味ないでしょ?混乱させるだけで。
> >その例だと2カ所以上でfilename.txtを$INCLUDEした場合、Taaaが2回定義され、
> >しかも異なるものと解釈される、ってのはわかってるか?
> すみません、言いたいことの意図がわかりません。
あー、やっぱりわかってないような。Unit1とUnit2の2つのユニットでfinename.txtを
$INCLUDEすると、Unit1.TaaaとUnit2.Taaaの2つのクラスが別のものとして
作られるのよ。C/C++では宣言(型宣言やプロトタイプ宣言)だけであれば
そんなことないでしょ?だからDelphiではこのようなことはしないの。
で、そういう普通しないことを初心者スレに書いて意味あるの?
>347
そりゃそうだ。

349 :
>>348
>あー、やっぱりわかってないような。Unit1とUnit2の2つのユニットでfinename.txtを
>$INCLUDEすると、Unit1.TaaaとUnit2.Taaaの2つのクラスが別のものとして
>作られるのよ。
意図するところは判りました。
どうやら>>332の例が理解出来ていなかったようですね。
例はUnit形式を使わないでファイル分割を行う方法なので、”異なるものと解釈される”ことはありません。
あなたの言っているのは、プログラムをUnit形式を使ってファイル分割したあと
またそれをINCLUDEを使ってファイル分解する場合の事です。

350 :
以後、放置でおながいします

351 :
馬鹿と馬鹿が争うほど醜いものはないな

352 :
一般の方はご存知無いやろうけど、青い銀行のATMの処理の結構な部分はDelphi6時代の
コードが今も利用されてて、ボーランド以降転々とする母屋のせいでライセンスとか保守とかが
極めて問題になっとる…らしいよ

353 :
おーい
くだすれに長文は不要
初心者を遠ざけるだけ

354 :
>>352
Lazarusで書き直せばいいやん

355 :
>>352
転々って…1回しか変わってへんがな
ライセンスは引き継がれてるし

356 :
ボーランドそのものが開発に参加していたのならともかく、Delphi は開発ツールでしかないしな。
どうすればライセンスとか保守に影響が出るのかがわからん。
だいたい Delphi6時代ってことは10年以上昔なわけで、逆に10年問題を先送りにしていた方が問題じゃないのか?

357 :
そんなのこの業界じゃ日常なんだけどw
10年ならむしろ緩いだろw

358 :
そりゃ未だにWin2k使ってるところもあるんだしな。
アプリなんかそれ以上に古いの使ってて当たり前だろう。
趣味じゃないから機能満たして安定してれば何も問題ない。

359 :
素人はそれでもいいんだろうけどね > 358
ハードウェア追加になった時に OS どうするの?買えるの?コピー?
ハードが追加にならないとしたら、安定して問題もないのなら、どうやって食っていくんだ???

360 :
という矛盾を普通に抱えているのがこの業界です

361 :
ですよねー

362 :
思考停止、乙。

363 :
>>362
素人はそれでもいいんだろうけどね

364 :
古いOSはダウングレードできないこともない。

365 :
まあ、いまだにPC98使ってるとこもあるぐらいだから。

366 :
XE1を使ってます。
フォルダの選択するためにはググったら SelectDirectory を使うと良いとありました。
SelectDirectory を使うには uses 節に Filectrl を記述すべきとあったのでコンパイルしてみると
 「[DCC 警告] Unit2.pas(7): W1005: ユニット 'FileCtrl' は特定のプラットフォームに固有のものです」
と出るのが気になります。この表示を消すにはどうすれば良いのでしょうか?

367 :
>>366
Windows固有機能を使って、機能が実装されているので、他OSでは動かないよという警告。
他OSに移植しないなら、気にする必要はない。
警告を消すには、ソースファイルに、
{$WARN UNIT_PLATFORM OFF}
を追加する。
またはプロジェクトオプションで、Delphiコンパイラのヒントと警告から、ライブラリ依存のユニットの警告をFalseにする。

368 :
2007のIDEの環境設定に関して教えてください。
自作のコンポーネントとパッケージがあり、プロジェクトに組み込んであるのですが、
パッケージのdcuとbplのパスを[ライブラリパス]に追加して
パッケージのソースのパスを[ブラウザ検索パス]に追加してあります。
この状態だと、IDEのエディタ上で[ctrl+クリック]しても、その変数やユニットを
エディタで検索して開いてくれません。
ソースのパスを[ライブラリパス]に追加するとエディタで検索されるのですが、
この状態でコンパイルするとパッケージのソースまでコンパイルされてしまいます。
既存のVCLのコンポーネント郡の様に、エディタで自動検索はされるけどコンパイル対象には
ならないようにするにはどのように設定したら良いのでしょうか?

369 :
できません。
方法はあるのでしょうが未公開です。

370 :
dcpのパスは?

371 :
Delphi7でUINT64定義するのやっぱ無理?

372 :
どう定義するかによる

373 :
>>370
dcpの出力パスは意識してなかったのでデフォルトだったのですが、
[ライブラリパス]にコンパイルしてみましたが動作は変わりませんでした。

374 :
>>368
ReadOnly

375 :
シンボリックな情報は、.dcu にもあるが、パッケージにした場合、
.dcp を使う。というか、逆にアプリケーションからは
パッケージの .dcu を見えないようにしておく。
パッケージを組み込んでいるということは、
アプリケーションにパッケージの .dcp をすでに
指定してあるということで解決しているはず。
ところで、デバッグのトレースとかで、
パッケージの関数の中に入っていけるの?

376 :
>>368
>プロジェクトに組み込んであるのですが、
まず、プロジェクトから外したら?
まっ、それでも再構築したらdcuは更新されるけど。
そもそも何で、パッケージがコンパイルされたら駄目なの?
リリースポイントとか、ある特定時期のモジュールを残したいのなら
それはVSSやSubversionみたいなバージョン管理の話でしょう。
変更出来なくするとDelphiのUpdateとかでVCLが修正されても
その修正がパッケージに反映されなくなるよ。
それでも、どうしてもdcuを更新したくないのなら
Delphiインストール先のlibにdcuをいれ
ソース(pas)は\source\Win32\rtl\winとかに入れたら。

377 :
初心者には厳しいなぁ。

378 :
素人はそれでもいいんだろうけどね

379 :
手持ちのXE2だとおそらく期待通りの動作をしている。

380 :
素人はそれでもいいんだろうけどね

381 :
さすが玄人は違うな

382 :
delphiは玄人も使うのかい?
ぼくは初心者の言語だと思っていた。

383 :
初心者の言語って???
どの言語だろうが最初は初心者に決まってるだろ
訳わからんことおっしゃる

384 :
初心者に優しい言語って意味だろ

385 :
バブゥ語

386 :
言語は優しいがスレは厳しい

387 :
>>385
タラちゃんにしか分からない超難解言語じゃないか

388 :
どうやって食っていくんだ???

389 :
新スレ立ってるよ
くだすれC++Builder(超初心者用)その5
http://toro.2ch.net/test/read.cgi/tech/1334982374/
Embarcadero RAD Studio/Delphi/C++Builder その2
http://toro.2ch.net/test/read.cgi/tech/1335177837/

390 :
                     /j
                   /__/ ‘,
                  //  ヽ  ', 、
                    //    ‘  ! ヽ             …わかった この話はやめよう
                /イ       ', l  ’
               iヘヘ,       l |  ’
               | nヘヘ _      | |   l            ハイ!! やめやめ
               | l_| | | ゝ ̄`ヽ | |〈 ̄ノ
               ゝソノノ   `ー‐' l ! ¨/
            n/7./7 ∧        j/ /     iヽiヽn
              |! |///7/:::ゝ   r===オ        | ! | |/~7
             i~| | | ,' '/:::::::::::ゝ、 l_こ./ヾ..     nl l .||/
             | | | | l {':j`i::::::::::::::::`ーr '         ||ー---{
              | '" ̄ ̄iノ .l::::::::::::::::::::::∧       | ゝ    ',
      , 一 r‐‐l   γ /、::::::::::::::::::::::::〉ー= ___  ヘ  ヽ   }
    / o  |!:::::}     / o` ー 、::::::::::::i o ,':::::::{`ヽ ヘ     ノ
   / o    ノ:::::∧   /ヽ  o  ヽ::::::::| o i::::::::ヽ、 /   /
   /    ノ::::::/    /::::::::ヽ  o  ヽ:::| o {::::::::::::::Υ   /

391 :
出てくるのおせーよw

392 :
                  r、__                         / |
            ト、,'⌒/7ヽ┘'<i\/L-、,___            `'ー-‐''"   ヽ、_
             /:/ヽ!::|_」ヽ-ァ'_,,..,__   `´ ロ└、_    /i __            /
          〈::::! r「>''"     `ヽ、.,__  ロ i>、/::::__i/:::|    か ほ そ  |
         i .ノヽ|/ /  /  /      `ヽ.  ̄|/:::/」//i|    ァ  う ろ  |
         ト^Y/  /  /i  i    ;      ヽ、/::/´  `ヽ./   i |  が そ  ヽ!
         | 〈! ,'  /ヽ!、_ハ  /!   /   i  Yi',  ヽ. i    /! |  い ろ  >
         .! ノヘ.!  /,ゝ='、,/ | / |  _ハ_   |  ! i   ', '、/ | |  い  次  /
   ,. --,rく`"'ー'<ニ|o/〈 i'´ r!  レ'`ァ;=!ニ__ i  ,'  ハ |    i  `ヽ.,' |  ん ス  |
  i'二'/ i|    ノ. |/,,, ひ'ー'     i  r'; Yレ'i  〈 Y',   ハ    i  |  じ .レ   |
  { ‐-:!_,ハ.|   _/ ,ヘi7    '      ヽ- '_ノ o 。_,.ゝ/i  / ',    / ッ .ゃ. た   |〉
   `"'T´:::|   ! ./ニヘ.   i7´ ̄`ヽ.  U "/|/  ,イ ,ハ  ,'  i   ,'  ! ? な て  .',
     '、_/_,.-'"レ'レ' ! !へ.  !'    |  _,.ィ / イ .ノ' , '! ハ/ヽ!   .!     い. た   ヽ、_
           ヽ、Yレ'7> 、.,___,,.' r'´/ `ヽ./ / レ'   ,i  /      で      /
            r-、!:::}_レ'´i\,、!イ/      Y     ,. ' レ'       す     /
       __,,.. -‐ノ  ハ::::/`7i::::ヽ、_r     _ハ、_,,.. < _____  彡        〈
       \,_____`;rく rく  / ハ::::::::ト、   _,r'  '" ̄7'´ 〉ー、_ゝ,        ,.:'⌒ヽ
         _r-‐='ト、 ヽサ二7」ー-<フ>r、 i     /i__/ / /'〉|
     __,.r-''":r´く  `''ァー- :: 、.,___,.イ::::ヽく `ヽ、  ト、,_>-'、-'´i |

393 :
XE2だとWASP周りのInterfaceは定義されてます?

394 :
WASAPIだった

395 :
なさそうですね

396 :
そうですか
シコシココンバートしますわ

397 :
質問です。
Delphi(Delphi7)からコンソールアプリケーションを操作したいと思っています。
例えば、Delphiのプログラムから、すでに開いているDOSプロンプトに
DIRコマンドを送るみたいなことをしたいのですが、どのようにしたらできるのでしょうか?
C#だと
ProcessStartInfo g = new ProcessStartInfo();
みたいなのを作って操作できるようなんですが、
Delphiでする方法を探してみると
keybd_eventなどでDIRと送る方法みたいなのしか見付かりませんでした。
何か他に良い方法がありましたら教えていただけないでしょうか。

398 :
>>397
ttp://wiki.freepascal.org/Executing_External_Programs/ja

399 :
>>398
ありがとうございます。
Lazarusというものを初めて使ってみました。
ただ、自分が使い方をわかってないだけかもしれませんが
リンクの方法の場合、cmdでコンソールを起動した後
dirコマンドを入力ってできますか?
AProcess.CommandLine := 'cmd /c dir';
とかで起動させるのではなく、
AProcess.CommandLine := 'cmd';
で起動させた後、dirコマンドを打つとかがしたいです。

400 :
> C#だと
> ProcessStartInfo g = new ProcessStartInfo();
> みたいなのを作って操作できるようなんですが、
これが思い違い。

401 :
分からないならレスしなくていいです

402 :
400が正解。ProcessStartInfoは関係ない。
他のウィンドウにキー入力を送るとかその辺の問題。
できなくはないがプログラムとしては三流でキモイ

403 :
(別プロセスの)アプリケーションを操作…
という時点でDelphi言語やVCLかどうかではなく
Windowsのセキュリティに関連する知識が必要と思われ
くだすれレベルではない。

404 :
>>399
ども、私も初心者ですが、検索してみたところ、パイプでの入出力に対応しているならば、
パイプというのとWriteFileというWIN32APIを使えば可能なようです。
パイプとかWriteFileで検索すれば、使用方法が見つかると思います。

405 :
みなさんありがとうございます。
GalateaTalkというフリーの音声合成エンジンがあって
ttp://mahoro-ba.net/e1105.html
これを利用する場合、コマンドで
cd "gtalk.exeのあるフォルダ"
gtalk.exe -C ssm-win.conf //Ggtalk起動
set Text = こんにちは //読み上げ文字の入力
set Speak = NOW //で読み上げ
というコマンド処理が必要だったので。
ttp://mahoro-ba.net/e1206.html
の#Cのサンプルを見たらProcessStartInfoを作ってからいろいろしていたので
Delphiにも同様の処理ができないものかと質問した次第です。
こういった別プロセスを操作する方法は、あまりよい作法ではないんですね。
dllとかあれば使いたいところですが無くて。
>>404
ありがとうございます。
WriteFile検索してみます。

406 :
どう見てもパイプです本当にありがとうございました

407 :
別プロセスといっても、子プロセスに限っては例外ってことで。

408 :
パイプつなげてdirした結果を受け取ればいいんでしょ
「anonymous pipe」でググって勉強せぇ

409 :
JCLあたりでそんなのがあったような

410 :
みなさん、ヒントいろいろ、ありがとうございます。

411 :
動かしてみた感じだと結果は同じなんですが
Memo1.Lines.Clear; と Memo1.text :=''; の違いって厳密には
どう違うんでしょうか?

412 :
>>411
ソースみなよ

413 :
そんなレスする暇があったら自分で調べて教えてくれればいいのでは?

414 :
厳密にはっつうことなら自分でソースを追ってみたほうがいいのでは?
デバッグ版DCU使う設定にしてF7(ステップイン)で。

415 :
>>413
ここにソース上げろってかwwwwwwwwwwwwwwwwwwwwwww
非常識すぎるだろwwwwwwwwwwwwwwwwwwwwwwwwwwww
嫌なら完成したバイナリの比較でもしろw

416 :
>>412 ソース
Memo1.Lines.Clear;
Memo1.text :='';
同じなんですね

417 :
初心者的にはどっちでも結果は同じだからそれでいい
TMemoを行ごとに扱うならLines.Clearを勧める

418 :
>>417
初心者的にはって実際に同一のコードが呼ばれてるけど?
頭悪くない?

419 :
学生でもない初心者がDelphiはじめようとすると最低いくらくらいお金かかるの?

420 :
>>418
>同一のコードが呼ばれてるけど?
この違いわかる?
Memo1.Lines.Clear;
Memo1.Lines.text :='';
Memo1.text :='';
>頭悪くない?
自虐的自己紹介乙

421 :
>>416
Memo1.text :='';の方がいろいろないみで速度が遅いかもね
正確にはバイナリ比較して見なければわからンけど

422 :
>>419
Delphi XE2 Starter Edition という奴で、2万弱でしょう。
過去の資産がなくて、技術サポートも必要ないなら、
無償の FPC+Lazarus で間に合うかもしれません。
かつては無償版の Delphi もあり、僕も最近まで常用していたのですが、
開発環境の OS を Windows7 に移したところ使えなくなったので、
仕方なしに恐る恐る FPC+Lazarus に移行してみましたが、
不足に感じるところはありませんでした。

423 :
初心者相手にコード検証までしてニヤニヤしてる
>>418 がキモイ

424 :
>>422
情報ありがdクス

425 :
>>419
ttp://www.embarcadero.com/jp/products/delphi/starter-faq
> Delphi StarterおよびC++Builder Starterのアップグレード価格はだれが利用できるのですか?
> アップグレード価格は、Delphi、C++Builder、Turbo Delphi、Turbo C++、あるいは他の有償
> または無償の任意のIDEやソフトウェア開発ツールを持っているユーザーが対象です。
ってことで14700円でOK。MSのC# Express Editionでもダウンロードしとけばいい。

426 :
>>425
MSのC# Express EditionにDelphi付いてるんですか?

427 :
>>426
ちゃうちゃう、アップグレードの適用対象になるために、何らかの開発ツールがいるから、
一番お手軽なC#EEでも用意しとけってこと。過去のDelphi/C++BuilderでもVSでも、
多分Eclipseでもいい。ちなみに何を持っているかのチェックはない。

428 :
>>427
Lazarusでもいいっすかねw?

429 :
こんなんあったのか
まだ5を使ってるオレ
最近C#ばっかだけど買ってしまうか

430 :
>>528
ROM版N88-BASICでもかまわないと思います。

431 :
基本機能すらそぎ落としてあるからStarterはやめとけ
あんなイライラするもん使うならC#でもDelphi7Proでもなんでも他の使っておいたほうが良い
買うなら頑張ってPro買え
色々ツールついててかなり使いでがあるよ
安く買う方法も(以下自粛

432 :
そぎ落とされた基本機能と便利なツールって具体的には何?

433 :
ライセンス形態が違うだろ。 starterは非営利のみ。儲かったらその上にしろという縛りがある。

434 :
Memo1.text :=''; よりは Memo1.Lines.Clear; を使うべきということを覚えました。
ありがとうございました。

435 :
どちらも最終的にはウィンドウメッセージを介すので
どちらかを使うべきということはないです。文脈に合った方で。
ただMemo1.Lines.ClearよりはMemo1.Clearの方がいいです。

436 :
>>435
「べき」ではなく「ベター」が問題なんですけど

437 :
>>435
短い文章に2つも嘘を入れるな。

438 :
最新マシンなら、心配するような動作速度の低下や実行ファイルの肥大化はないので
どっちでもいい
というのが正解だろうね。それでは納得できないというのならバイナリ比較したり実験したりするしかない。

439 :
>>437
どこが?

440 :
>>436
質問者自身がそういう言い方してんだけど
>>434が読めない文盲ですか?哀れだね
他人の批判ばかりで直接回答しない馬鹿は黙ってたら?

441 :
お前ら喧嘩好きだなぁw

442 :
Delphi7PROでまだ生きていけそうだ

443 :
それ即死だろ

444 :
ゾンビ
死んでいると気づいていない。
某 ML に多数生息中

445 :
そもそもDelphi自体息をしてない件について

446 :
また倒産?

447 :
日本では息してないようでも
ヨーロッパなどでは
大量に作られた業務用VB6製ソフトの代替えとして
Delphiの採用例が多いって本当?

448 :
Delphiの対応言語は英語版、ドイツ語版、日本語版、フランス語版で
このうち日本語版以外はヨーロッパの言語だから、それなりに使われているのでは?
ロシアやブラジルとかでも比較的使われていると聞くけど対応言語がないのを見ると
使われているけど売れていないのか?(海賊版や不正使用?)
しかし2バイト文字の対応がいまいちの場合もあるが、こうして対応言語を見ると
2バイト文字は日本語だけで、それに対応しているだけでも有難いと思う。

449 :
前から日本語版出してたらから、惰性かね。
日本語で情報出してる人なんてほんの少しだから、日本は全滅宣言だしても
いいっぽいよね。

450 :
日本じゃ4〜5辺りがピークで6からは下降線だろ。
単にGUI的な意味で生産効率が高いのがいいなんて理由で開発されるソフト自体がないからなぁ。
今の状況ならスクリプトに毛が生えた程度の認識しかないだろ。
趣味でやるには投資金額とか大仰だし仕事でやるなら移植性考えるし。せめてバイナリの最適化できれば考えるけどな。


451 :
趣味でバイナリの最適化求めるなんてすげぇな。俺は速度はそこまで気にしちゃいねぇけど。
まぁ、趣味だからこそアセンブラで高速化とかしてみたいとか人いるけど。
FMはどうでもいいけど、XE3に期待するか。2009でUnicode,ジェネリックス,2010で
新RTTI,匿名メソッド、XEが正規表現くらいのしょぼーん、XE2で64bitとLiveBindings

452 :
つか、XE3よりXE4の方がいいかもね。XE4辺りで、Metroアプリくるとしたら、
WinRTのDelphiバインディングのため、Nullableとか、非同期あたりもそこらへんで
入ってくるのかなと予想してる。

453 :
超初心者にRTTIなんていってもわかるわけなかろうにw

454 :
今7だけどジェネリックスだけは欲しい
実際どうなん?

455 :
あんま複雑な事しなければいけるけど、複雑な事するとコンパイル時に
内部エラーが出始めたり、で、IDE再起動するとなくなったりなくならなかったり。
後、IDEのエディタが追いついてなくて、いらいらしたり。

456 :
なんだそりゃー
そのあたりのクオリティは相変わらずなのか

457 :
次のXE3で、AndroidがサポートされFree Pascalがなくても
iOSアプリが作成出来るから(Macを買わなくてすむ)
久しぶりにDelphiを買ってみるかな。

458 :
Lazarusでいいやん

459 :
>>457
コンパイラがWin上で動いてもMacは必須

460 :
var sl: TStringList;
begin
sl := TStringList.Create;
with using(sl) do;
...
end;
で自動解放に成功。tryf不要になるからまあまあ使いやすいな。
実装は簡単に思いつくだろう。

461 :
with using(TStringList.Create) do
...
end;
の方が変数宣言も不要だし実装も楽
実装は簡単に思いつくけど460には思いつかなかったみたい

462 :
IDisposableインターフェース使うってのは無しね
OSが変わると使えないから

463 :
Delphiのインターフェース実装にOS依存あったか?

464 :
Lazarusでは -gh オプションでメモリリーク見つけてくれるよ!

465 :
>>464
ほう今はこんな物がフリーであるのか
これDelphiと比べて互換性と生成する実行ファイルサイズはどんな感じ?

466 :
フリーに互換性は求めなさんな

467 :
ご本家 Delphi もバージョン間互換性がひくいからなぁ

468 :
そうか?他の環境に比べたらかなり高めだと思うが

469 :
プッ

470 :
上手に放屁できましたね^^

471 :
>>469
くせえw

472 :
GCないと戦えません

473 :
GCうぜえとおもうときもある
勝手なもんである

474 :
>>472
>GCないと戦えません
自分で作ったら。
昔作ったときはレスポンスが気になって使うのやめたけど
大きくないアプリなら大丈夫じゃないかな?

475 :
GCって何?

476 :
グランドチャンピオン

477 :
継続企業の前提

478 :
ガーベジ・コレクション

479 :
GC やったら既存のコードは全滅だろ?
だから政治的にできない

480 :
というか自分で実装すればいいだけじゃんw
GCの仕組み知らないへぼプログラマってだけだろw

481 :
>自分で実装すればいいだけ
すべてのコードが自分のコードならな。共同作業にそんなの持ち込まないでくれよな。
俺がお前の同僚なら、そんな危険なコードを持ち込むな。自慰行為は自分の家でやれ。っていうよ。

482 :
>>481
危険てw
どんだけ無知なんだよw
プログラマやめたほうがいいよw

483 :
>>481
馬鹿しかいないチームなんだな

484 :
GCがなければメモリリーク起こす糞ソース書くやつってw

485 :
Lazarusでは -gh オプションでメモリリーク見つけてくれるよ!

486 :
もう、無駄な討論やめようぜ。エンバカの前スレあたりであった流れと同じ展開だな。

487 :
エンバカの前スレの連中が逃げ込んできたんでしょ
GC があると中間メモリ消費量爆発問題とか考えないトンデモコードが増えるので正直やめてほしい
とりあえず ReportMemoryLeaksOnShutdown := True にしてみるんだな。
Lazarus というか FPC のコンパイルオプションだ。 FastMM のデバッグバージョンのパチもの。

488 :
シングルスレッドアプリならいいけど、マルチスレッドアプリしか最近作ってない俺には
GCないとだるすぎるんだよね。GCあっても同時実行される部分は保護しなきゃいけないのはこれはGCとは
関係ないからやるのはいいんだけど、GCないとオブジェクトの解放タイミング合わせなきゃ
いけなくて、やってらんないんだよな。とりあえず、ユーザー定義のオブジェクトは今はInterfaceベースにして
逃げてるけど。

489 :
とりあえずGCをろくに知らずにGC欲しいとか叫んでも無駄w

490 :
>>488
だから自分で実装しろよ。多くて20行ぐらいだろ

491 :
>>487
禿同。定期的スイープで動作も重くなる品。

492 :
20行程度のコードでは自動解放が関の山。それも既存コードと衝突しまくりでバグだらけ。
コンパクションできるようになってから議論に戻ってね。

493 :
ロートルの馬鹿議論は馬鹿スレでやってくれ

494 :
だから、エンバカウオッチャスレの前スレ読めっておまえら。メモリモネージャとっかえて
できる・できないの話はどうだっていいんだよ。>>481が言うみたくRーは
家でやれよ。おまえらに欠けてるのはすぐにできる・できないの話しかしなくて
生産性とか信頼性とか全く考えてない事。おまえらはRーを他人に見せつけようと
必死すぎるんだよ。

495 :
ロートルの馬鹿議論は馬鹿スレでやってくれ

496 :
XE3出たか?

497 :
                     /j
                   /__/ ‘,
                  //  ヽ  ', 、
                    //    ‘  ! ヽ             …わかった この話は続けよう
                /イ       ', l  ’
               iヘヘ,       l |  ’
               | nヘヘ _      | |   l            ハイ!! もっとやれ
               | l_| | | ゝ ̄`ヽ | |〈 ̄ノ
               ゝソノノ   `ー‐' l ! ¨/
            n/7./7 ∧        j/ /     iヽiヽn
              |! |///7/:::ゝ   r===オ        | ! | |/~7
             i~| | | ,' '/:::::::::::ゝ、 l_こ./ヾ..     nl l .||/
             | | | | l {':j`i::::::::::::::::`ーr '         ||ー---{
              | '" ̄ ̄iノ .l::::::::::::::::::::::∧       | ゝ    ',
      , 一 r‐‐l   γ /、::::::::::::::::::::::::〉ー= ___  ヘ  ヽ   }
    / o  |!:::::}     / o` ー 、::::::::::::i o ,':::::::{`ヽ ヘ     ノ
   / o    ノ:::::∧   /ヽ  o  ヽ::::::::| o i::::::::ヽ、 /   /
   /    ノ::::::/    /::::::::ヽ  o  ヽ:::| o {::::::::::::::Υ   /

498 :
文末にwをつける彼が問題なんだって。彼の性格を表す典型的なやりとりが>>447から>>457
平和にレスが進んで他の人は自分の意見・考えや質問がメインで発言してるのに、
453 :デフォルトの名無しさん:2012/05/04(金) 00:43:41.36
超初心者にRTTIなんていってもわかるわけなかろうにw
彼だけは、自分のすごさをアピールするしか、頭にない。
誰もそんな事興味ねぇし、二の次だから基本彼は放置されてるが、遂に>>481が虎の尾を
踏んで、後は、>>482,>>484,>>489で彼がぶち切れる。
彼がこの違いに気づかなければ、また起こるだろう。

499 :
長駄文乙w

500 :
441 :デフォルトの名無しさん:2012/05/02(水) 23:19:25.32
  お前ら喧嘩好きだなぁw
自分が喧嘩してるじゃんw

501 :
GC厨はそもそもスレ違い

502 :
ガベージコレクションってそんなに簡単にできるものなん?
そんなに簡単なら、なんで標準装備してくれないの?

503 :
この状況でその話を蒸し返すとはつわものめ。

504 :
珍しく伸びてると思ったらGCGCって・・・
ウォシュレット付きの最新便器でもRしたら自分で手洗うだろ?
そこまで自分でやりたくないのか?
R着いたらしっかり洗えよ自分で

505 :
>なんで標準装備してくれないの?
互換性。

506 :
軽量rubyソースコード公開
ttp://el.jibun.atmarkit.co.jp/rails/2012/04/rubymruby-2004.html

507 :
>>502
簡単なものなら、多少のDelphi経験があれば作れるよ。
メモリーマネージャ(MM)との間にアダプターを噛ませて
メモリー確保と解放を記憶しておき、終了時に解放されていなければ解放するだけなら。
でも、メモリを使うたびに記憶するからレスポンスは遅くなるし終了時にしか解放されない。
それに、OSがWindowsならプロセス終了時に解放してくれるから有り難みは少ない。
PascalやC/C++みたいにスピード重視だと「標準装備」ちょっとって感じかな。

508 :
徹頭徹尾無内容な長文書く才能は素直に認めるから
そろそろ隔離されてくれるとありがたい。

509 :
3DCG製作にあんまり興味がないのに、Blenderの勉強から始めないといけなくて、
じゃあもっと簡単なアプリを作ろうかと思うとMACで何かやっているビデオを延々と見せられて、
ビジネスアプリのデモはピザとか家具とかで、そんなの作らないし。
FireMonkeyはハードルが高いな。

510 :
>>507
なるほど、そうやって作るんだ。

511 :
>>510
一般的なGCの作り方とは全然違うというか、そもそもGCですらないよ
簡単なメモリリーク検出機能の作り方と言った方が正しい
動作的には検出ついでに解放しているに過ぎないし

512 :
>>511
お前には誰も聞いてない。
他の奴のケチだけ付けて、自分では何一つ生産的ことを言えない。
そろそろこんな奴、隔離されてくれるとありがたい。

513 :
>動作的には検出ついでに解放しているに過ぎないし
検出して解放するのをGCというのだが、コイツはバカ?

514 :
この惨めなおっちゃんにもうちょっとましな暇の潰し方が見つかりますように…

515 :
なんか荒れてるけどスレタイに沿って超低レベル質問を・・・
Delphi6 Personalを使ってWindowsXP上で色々と試している最中なんですが
アプリケーションのFormの右上に出てくる×ボタンを押した時、
なんのイベントが発生するのでしょうか。
×ボタンを押したらonCloseに設定した正常終了の流れに
載せたいのに、無視されてそのまま終了してしまふ

516 :
OnCloseQuery→OnClose→OnDestroy

517 :
>>512,>>513,>>514
文末にwつけるの忘れてるぞ。
>>481でカチンときて一人で怒ってるのはおまえだけだろ。3連続投稿して
よほどくやしかったのかよ(笑)。

518 :
>>516
ありがたふ
・・・OnClose通ってたんですね。俺は何を勘違いしたんだろう

519 :
くだらないレベルの質問するなよ
答えるほうもどうかしてる

520 :
>>519
スレタイ嫁

521 :
最近本当にVBの方が優れてるよね

522 :
VB はクソ。C# つかえ

523 :
C#は中間言語なんでちょっと抵抗が。

524 :
違いが判るようなやつは 2ch には来ない

525 :
.NET Frameworkってwindows7なら最初っから入ってる?
C#ってアプリ配布がめんどくさい

526 :
>>513
>>507は終了時に「未だに使われたまま」のメモリを解放するわけでしょ?
使われていないメモリを検出して解放するのとは全然違うじゃん

527 :
>>525
バージョンによる

528 :
>C#ってアプリ配布がめんどくさい
まともなインストーラー使え。
または .config ファイル書いて必要な Runtime 自動で落とすようにしなさい。
まぁたいていの環境では既にインストール済みだが。
デルは実行ファイルの大きさがでかすぎるのが致命的

529 :
> デルは実行ファイルの大きさがでかすぎるのが致命的
昔から言われてるけどHDDとかの容量考えたら、そんなに気にすることでもないんじゃないの?
実際本格的なアプリ作ったらどれくらいになるの?

530 :
実行時のワーキングセットが大きいと、キャシュからあふれて速度低下がおきるぜ

531 :
うちの会社では入力系のプログラムが実行時パッケージを使わないで一番大き
くて約7.3メガ

532 :
でかいね
社内配布だから大きくてよい
て理由なら、
社内使用だから .NET ランタイムのインストールは前提で良い
て理由も通るな。

533 :
>>526
GCとは、”不要”になった領域を自動的に解放する機能。

534 :
デルの実行ファイルが大きい理由って、使ってないVCLとかも含むから?

535 :
デルはVCL使用しなければ小さくなる

536 :
それなら FPC/らざるすでも良いな。

537 :
>>533
そうだなんだよな。だから>>507はGCとは言えない。
どういう手法のGCも、ルートが生きてて参照も残ったままの領域は不要かどうか判断ができないからな。
不要になったメモリとリークしてるメモリは全然別物だという認識が無いんだろうね。
Wikipediaにもこういう記述がある。
>ただしガベージコレクションにおいても、今後使用することのないオブジェクトへのポインタを
>いつまでも保持しているようなコードでは、いつまでもオブジェクトが解放されず、メモリ不足を起こしてしまう。
>これは論理的な設計の問題であり、ガベージコレクションを持つ処理系においてもこの種のメモリリークは発生する。
GCがあっても発生するようなリークを、終了時にまとめて解放する処理がGCだなんて言えるわけがない。
まだゴチャゴチャ言うんだったら、まずこの記述を「正しい」記述に書き換えて欲しいね。

538 :
>>536
あっちは何もしなくてもDelphiよりでかい

539 :
>>537
>ただしガベージコレクションにおいても、今後使用することのないオブジェクトへのポインタをいつまでも保持しているようなコードでは、
>いつまでもオブジェクトが解放されず、メモリ不足を起こしてしまう。これは論理的な設計の問題であり、
>ガベージコレクションを持つ処理系においてもこの種のメモリリークは発生する。
Wikipediaの要約:GCにおいても論理的な設計の問題でメモリリークは発生する。
>GCがあっても発生するようなリークを、終了時にまとめて解放する処理がGCだなんて言えるわけがない。
上のWikipediaとまったく関係がない。上はGCでもメモリリークは発生すると書いてあるだけ。
それを「終了時にまとめて解放するのがGCではない」と、どうしたら読み取れるんだ?
そもそも前半の「GCがあっても発生するようなリークを」と後半の「終了時にまとめて解放する処理がGCだなんて言えるわけがない」が繋がっていない。
論理的思考が欠如している。
>まだゴチャゴチャ言うんだったら、まずこの記述を「正しい」記述に書き換えて欲しいね。
Wikipediaは正しく書いてある。読み手の問題。

540 :
>>537
脳内変換が凄w

541 :
>>538
付属のstrip.exeを使うとよいよ

542 :
そろそろスレチだと気づいてくれ。

543 :
delphi6 personalをインストールしたいのですがググってもリンクが切れてるページしか出てきません。
どなたかダウンロードできるページを張っていただけませんか?

544 :
GC キチガイは RAN かな Fusa かな?

545 :
あいつら以外にもバカはたくさんいるだろ?

546 :
バカでも、日本語が読めないバカは少ないだろう?

547 :
質問させてください。
TIdTelnetを使って開発しています。
例えばAとBというパソコンで開発していたとして、
IdTelnetのプロパティを適切に設定した後、
procedure TForm1.FormCreate(Sender: TObject);
begin
 IdTelnet1.Connect();
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 IdTelnet1.Disconnect;
end;
上のコードをAのパソコンで実行すると全く問題なく動くのですが、
Bのパソコンで実行すると、IdTelnet1.Disconnect;のところで以下のようなエラーが出ます。
---------------------------
プロジェクト Project1.exe が EAccessViolation クラスの例外を生成しました。
'モジュール 'Project1.exe' のアドレス 00459D8C でアドレス 0000006C に対する読み込み違反がおきました。'
---------------------------
これの原因としては、どのようなことが考えられるのでしょうか?
一方ではうまくいくのに、もう一方ではエラーが出るというのがよく分らなくて。
PC側の設定とかでしょうか。

548 :
XE3 でたか?

549 :
Disconnectするまでは動いてるってこと? その部分だけが問題ならトラップして無視すればいいだろ

550 :
Cというパソコンで実行してみて、その結果がAと同じかBと同じかによって、
A&C と B&C との共通点と相違点を探る。

551 :
>その部分だけが問題ならトラップして無視すればいいだろ
そんなヤツの作ったプログラムは使いたくないなぁ...

552 :
ありがとうございます。
>>549
はい、Disconnectするまでは普通に動いてます。
自分でもいろいろ、原因を探ってみたのですが、そうするしかなさそうです。
>>550
いまんとこ2台しかPCがないのですが、今度別のPCで試さしてもらおうと思います。

553 :
>>543
ttp://delwiki.info/

554 :
D7でつくったDBアプリを数台のクライアントに入れてるんですが
アップデートするたびにいちいち全部に入れて回るの面倒なので
簡単に配布する方法ってないですか
更新するのはEXEファイル1つだけです
ネットワークの構成は2008サーバーとクライアントにwin7が5台です

555 :
>>554
http://localserver/yourapp/latest.txt調べて
バージョンが食い違ってたらwget yourapp.exeでダウンロードして
taskkill /im yourapp.exeしてexe上書きして再起動
みたいなスクリプトをクライアント側で走らせておくしか

556 :
XE3出たか?

557 :
>>554
共有フォルダを作って毎回xcopyしてからexeを起動する

558 :
もっと簡単に配布する方法ってないですか?

559 :
>>558
自分でも少しはアイデア出せよ

560 :
リモートデスクトップ

561 :
クライアントにアップデートボタンをつける
押す→ランチャー起動→クライアント終了
WEBからコピーしてくる→クライアント上書き
クライアント再起動→ランチャー終了
これでおk

562 :
コード書かないで、コンポ一発でできないものでしょうかねぇ

563 :
だめだこりゃ

564 :
XE3出たか?

565 :
JavaWebStartで作り直せ

566 :
>>554
クライアントPCでDBアプリを直接起動させるんじゃなくてさ
DBアプリのバージョンを確認してからDBアプリをShellExecute 起動させるか
上位バージョンがあったらコピーしてきてからShellExecute させる実行ファイルを作って使ってもらえばええがな

567 :
AppWaveという手も

568 :
.NET なら配布簡単だよ

569 :
そーだね

570 :
馬鹿には無理

571 :
そーだね

572 :
色々な意見ありがとうございました
これから試してみます

573 :
XE3出たか?

574 :
XE3出たか?

575 :
XE3出たか?

576 :
夜型ですね

577 :
多い日の夜用薄型

578 :
Tiobe で Ruby にも抜かれきったか

579 :
さすがにPL/SQLには勝つだろ

580 :
XE3出たか?

581 :
>>579
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
いゃ〜、日本国内でもDelphiよりPL/SQLの方が案件は多い。
しかしVBとBasicが同じで、DelphiとPascalを分けてカウントしているのは納得出来ない。

582 :
Delphi7を使用してます。
プロジェクト内にあるフォーム&ソースをコピーして新規フォームを
作りたいのですが、スマートに行う方法はないでしょうか。
今は、フォームAからフォームA'を作成する際
新規フォーム作成,A'に名称変更→フォームAのコンポーネントをA'にコピペ→
フォームAのPASをA'にコピペして名称置換 とやっているのですが、
もっとまともなやり方があるような・・・

583 :
フォームの継承とか言ってくる奴がいると思うが
絶対に耳を貸すんじゃないぞ。

584 :
フレームでやれ

585 :
>>582
コピーであって継承ではない、というのは意味わかってやってんだよね?
フォームAの.pasと.dfmを別ファイルにコピーして新しいユニット名に合わせたファイル名にして、
この状態でエディタで.pasと.dfmを開いて、.pasの先頭のユニット名をファイル名に変更、
.pasにあるフォームクラス(TForm1とか)を新しいものに一括置換、その下にあるフォームの
変数(Form1)をフォームクラス名に合わせたものに変更、.dfmの先頭の
object フォーム変数名: フォームクラス名の部分を上に合わせて変更、これでエディタを終了、
IDEでプロジェクトにこのユニットを追加、という手順でいいはず。

586 :
>>585
アホだな〜w、ファイル名とUnit名だけ変えればいいだよ。
カプセル化とかの概念を理解出来ている?

587 :
>Delphi7

588 :
>>586
まあそれもそうだな。ユニット名以外はあとでIDEで変えれば問題ないか。
カプセル化の概念とはあんまり関係ないけど。最近知った言葉だから使ってみたかったの?

589 :
AをA'にリネームしてから名前を付けて保存
プロジェクトを保存せずに閉じる
再びプロジェクトを開いてA'をプロジェクトに追加
俺はいつもこうやってるけどなんか問題ある?
うっかりAを上書き保存しちゃうとかプロジェクトを保存しちゃうと涙目になるけど

590 :
>>588
やっぱりアホだ〜w、Unit名だけが変わっていればいいんだよ。
Unit自体がカプセル化だと理解出来ていないだろうw

591 :
>>585
似たようなプログラムを量産する時は、
フォルダにベースとなるプロジェクトを作っておいて
後は新規フォルダにコピーして作ってる(プロジェクト名だけ別にして保存)
Unit1.pas などの構成する名前は共通にしてるよ
TForm1.〜
そうすると関数の使いまわしが楽だから
WHD を使って相互にデータをやりとりするようなのは、TForm1.〜 も変更してるが
Form1.Caption なんかも const で書いてFormCreate で入れるようにしてる。

592 :
>>583-591
ありがとうございます。
>>589氏のやり方をしていて、修正後うっかりF9押して自動保存→涙目
はやったことが・・・
今回はベースとなるものをある程度作ってあるので
>>585氏のやり方を使わせていただいて
今後同じようなことがある場合は
>>584,591氏の方法を合わせて使わせて頂きます。
ありがとうございました。

593 :
つーかコピーしたいユニットをIDEから名前付けて別名で保存→元の名前のユニットをプロジェクトに追加でよくね?

594 :
それが普通じゃないのかw

595 :
アホだ〜とか言いながら普通のことを難しくやる人がこのスレにはいるからなw

596 :
インスタントラーメンを作るのにいちいち講釈たれるようなもんだな

597 :
アホだな〜w、カップヌードルにお湯入れたらセロハンテープ貼ればいいだよ。
蓋を閉じるって概念を理解出来ている?

つーかシール付いてんじゃん
こうですか?分かりません><

598 :
漏れはシール捨てて蓋の端に箸乗せてるだけだわ

599 :
>>594-598
惨めにアホの上塗りか〜w、お前は、本当に可哀想だなw。
結果が「ファイル名とUnit名だけ変えればいい」で
その為の手段が「名前付けて保存」なんだよ。
結果と手段も分からんバカとはw

600 :
delphi6 personalのインストーラをダウンロードしたけど、
インストール番号とキーがわからないからインストールできないです。
誰か助けて。

601 :
馬鹿には無理

602 :
C#でもやればいいんじゃないですか?(笑)

603 :
>>601
うるせぇ。平日のこんな時間から暇なことしてんな。
早く、勉強か仕事に戻るんだ。

604 :
ほらよ
http://www.dotup.org/uploda/www.dotup.org2977741.zip.html

605 :
>>599
ファイル名だけ変えればUnit名も変わるから、
「ファイル名とUnit名だけ変えればいい」って書くのはおかしいね
馬鹿なんだね

606 :
>>599みたいに後から「実は知ってたけど」って書くのが一番恥ずかしいわ。
必死に煽って自分の惨めさを誤魔化してるようだけど。
この後も必死に言い訳するんだろうけど頑張ってね。

607 :
馬鹿には無理

608 :
>>605-607
今日もアホだな〜w
>>582への回答じゃなく>>585への
突っ込みで書いたんだから>>586でいいんだよ。
>>585みたいなアホの事を書いたからって必死になるなよw

609 :
自分以外の全員が敵に見えるのは病気だから気をつけなさいよ
すくなくとも>>585以降は一人じゃない

610 :
>>600
http://edn.embarcadero.com/article/33580

611 :
組込用のスクリプトでDelphi側で個別のアクセス用関数を定義することなく自由に
application.title = "hello"
form1.listbox.items.add("world")
と書けるものあったら教えて下さい。

612 :
つまりは出来合いのものはないかという質問だと思うが、
RTTIさえ理解してれば簡単に作れるよ

613 :
>>609
相変わらずのアホ〜ぷりw、逆も一人じゃないと思わないのかw
お前は、なんでもかんでも考えが浅はかなんだよw
結局、技術や知識でまけると人間性しか批判出来ない負け犬根性がw

614 :
:::::::::::::::::::::::::::::::>-、,     /
::::::::::::::::::::::::::::,::::::::::::::ヘ    /    . 自  母  半  こ  実  で
::::::::::::::::::::::::/   .∨ヘ:ヽ  |       演 . ち  数  の . は  も
:::::::::::::::::::::/      ',:',  人    . な   ゃ  以  ス    . ね
:::::::::::::::/       ヽヘ  \    ん . ん  上  レ     . ・
::::::::ィ-、、,        ',.}  /    よ . の  は  の  .     ・
:::ノ  _``ヽ‐ィ  、____ lリ /      ・                  ・
:ハ =イ、__〇、   ./__´| 人     . . ・
.l | ´`ー─‐'   /<´〇    \.  .   ・
 |        ヘ ̄` /  .   \
../ |        ヘ . '     /イ、_____________,,,/
  .|      __ ,,,〉. '        ,,、、─-、、_
  .|l     _、´  /       /──-、__ \
  .J  ,'イ─-> /       /‐、_  、___,,,、\ ヘ        ____
        ̄ /       |イnヽ) ィn.ヾ,,.〈 .ハ      ∠´   .>、
>、      /         | ̄(´`   ̄  |ィヽ'    ./'´ ̄`'´ ̄`ヽ ヽ
、  > _,/          /  ,二、    .リ6/    〈 '>、、 `-<.ヽ l
ヘヘ  |||ヽ___          ヽ 〈三三〉 レ  _ノ     (.} b__<  b_) リハ
ヽヽヽ..||| ヽ `ヽ、     _,,、--\ ‐    ,, |ヽ      Y  ,--、.   /ノ
 ヽヽ、|||  .ヽ  ヘ    / 二二:{ )ゝ--イ ∠ ヘ__   \ -=-`  /´
  .ヽヽ,'.|   ',   \  / ──ヽ /, == イ   /  / ヘ   〉、__,,,イ,,ハ
   .∨/   l    ヘ .|  r- ///〇 \  |  /  ヽ  / \ /  .ヘ

615 :
ってか恥ずかしいやつが居るな。思わず読んでて赤面しちまったよ。

616 :
>>613
>結局、技術や知識でまけると人間性しか批判出来ない負け犬根性がw
お前自己紹介うまいな!

617 :
>>612
簡単なら作って

618 :
馬鹿には無理

619 :
言うだけならタダだしな

620 :
簡単詐欺

621 :
>>616
今日も誹謗中傷だけとはアホ過ぎるw
>>588
>まあそれもそうだな。ユニット名以外はあとでIDEで変えれば問題ないか。
自分で間違いを認めといて、お前って本当に女々しいぞw
知識もないくせに、超初心者向けだからってアホなことばかり書くな、アホがw

622 :
アホ以外に知ってる言葉無いのかなこの人

623 :
スルーしろ

624 :
質問です。
DelphiのUnitはカプセル化だと主張している人がいたのですが、
これまでそういう主張をした本やサイトを見たことがありません。
公式のヘルプでUnitについて調べてもそのような記述はありませんでした。
具体的にどういうことなのか分かる方はいないでしょうか?
もしくはそれを説明した本やサイトを紹介して頂けるとありがたいです。

625 :
確かにDelphiのユニットは事実上のネームスペースとして機能するので、
カプセル化だといえばその通りの側面はある。
ttp://docwiki.embarcadero.com/RADStudio/XE2/ja/Delphi_%E3%81%A7%E3%81%AE%E5%90%8D%E5%89%8D%E7%A9%BA%E9%96%93%E3%81%AE%E4%BD%BF%E3%81%84%E6%96%B9
XE2では公式に名前空間としてユニットが位置付けられた。

626 :
>>624
初心者は、難しいことを考えず
Unitの使い方を覚えれば大丈夫

627 :
>>624
interface=public=c言語の.h部分
implementation=private=c言語の.c部分
という意図でそう言っているのだろう。
delphiをpascalに変えて検索してみればoop以前の情報が色々引っかかるかも。

628 :
>という意図でそう言っているのだろう。
違います

629 :
>>624
>具体的にどういうことなのか分かる方はいないでしょうか?
つまり、カプセル化やUnitの意味が分からないということ?

630 :
>>624
酷い質問だ。
>>588
>カプセル化の概念とはあんまり関係ないけど。最近知った言葉だから使ってみたかったの?
を真っ向から否定するような、質問をしなくても...
いくら相手がトンJンなことを書いていても
もう少し相手の身になって質問しないと、スレが荒れるから。

631 :
>>617
3桁ぐらい貰えれば作るよ

632 :
100円?

633 :
>>632
馬鹿、500円だよ

634 :
>>630
相変わらずアホだな〜w
Unitがカプセル化だと理解出来ていないだろうw
結局、技術や知識でまけると人間性しか批判出来ない負け犬根性がw

635 :
( ´_ゝ`)フーン

636 :
質問です。
TBottun1を押した時に、TMemoに直前に打ち込まれた1文字(1byteか2byte)を削除するにはどうしたらよいですか?
また、複数回押した時には複数文字削除したいのですが、よろしくお願い致します。

637 :
何が分かんないの?
TMemoの文字列を取得/設定する方法?
文字列を削除する方法?
ボタンを押した時に処理する方法?

638 :
>>637
・TMemoの文字列を取得/設定する方法
・文字列を削除する方法
取得する方法もわからなかったので、できれば両方教えていただきたいです。

639 :
>>636
procedure TForm1.Button1Click(Sender: TObject);
var
WorkStr: string;
WorkInt: Smallint;
begin
WorkStr := Memo1.Lines[Memo1.Lines.Count - 1];
WorkInt := Length(Memo1.Lines[Memo1.Lines.Count - 1]);
Delete(WorkStr, WorkInt, 1);
Memo1.Lines[Memo1.Lines.Count - 1] := WorkStr;
end;

640 :
Backspace送った方が楽じゃね?

641 :
>>639
ありがとうございます!
とりあえず動作できました。
>>640
送るとはどういうことでしょうか(汗

642 :
>>639
質問者が納得してるんならいいんだけど、このコード厳密には一番下の行の右端を削ってるだけで
最後に書かれた文字とは限らないよね。

643 :
>>639
いろいろバグっている。

644 :
>>642
先ほどそれに気づいて今悪戦苦闘していますが…
無理です。どうしたらいいのでしょうか。

645 :
なぜそういう動作を実現したいの?
あとDelphiのバージョン書いた方がいいんじゃない

646 :
>>641
PostMessageでWM_CHAR,使ってキーコードをメモに送りつける。
まぁWM_CHARでググれ。

647 :
>>644
ググったらすぐ出てきたぞ。
procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Undo;
end;

648 :
>>647
ま〜たアホが一人w

649 :
直前に打ち込まれた文字が最終行の最終文字とは限らないんだったら、結構めんどくさい気がするんだが

650 :
最後コピペで貼り付けられたら
どういう動作をする仕様かまだわかってないもんな

651 :
別にキャレットの位置だけ把握してりゃBSだけで済むってのに

652 :
>>649
俺もそう思う。
単純にバックスペース送るのも違うし。
入力される直前の状態を記憶しておいて、ボタンがクリックされたら
無条件に最後に記憶しているものに置き換えるのはどうだろう。
同じなら同じで問題ないと思うし。

653 :
>>636
こんな感じで仕様を出してくるSEがいるが、
本当に駄目SEの典型だよ。
この仕様でいくと、まずTABや改行も一文字と考えるのかが疑問で、実装方法として
BSで実装するのは、カーソルが移動可能だから前が直前の文字とは限らない。
Undoで実装は、1文字だけならいいが
>また、複数回押した時には複数文字削除したいのです
という仕様もあるから駄目。しかし>>648が言うようなアホじゃない。逆に考えの浅いコイツの方がアホだと思うが。
エディターの「元に戻す」みたいな機能を実装したいなら? 
TMomoじゃなく無限Undoを備えたエディターコンポーネントを使うのが楽。

654 :
Tea桃

655 :
なんかすごく品の良いフレーバーティーを想像した

656 :
TMomoとかTOppaiとかの話か

657 :
>>654-656
ま〜たアホが三人w

658 :
TSumomo = class(TSumomomomomomomomonouchi);
TMomo = class(TSumomomomomomomomonouchi);

659 :
ずいぶんと、フラストレーションが溜まっている人がいるな。

660 :
打ち直したいってことなら、前回の入力を記憶しておいて、書き戻せばいい

661 :
本多さんのエディターを使いたいために、未だ7を使ってるんだけど、
新しいデルファイでなんか良さげなコンポある?

662 :
>>661
LazarusのSynEditとか

663 :
>>661
Unicode対応版出てるよ

664 :
Unicode対応版っていってもまともにUnicodeを扱ってないSynEditとか、ホンダさんエディタ
にもう意味はねぇよーな。そもそも固定フォント専用だし。

665 :
俺みたいに固定フォントで不満がない人間にはホンダさんエディタ便利なんだよ。
あんな凄いの作れるホンダさんでもUnicode対応は大変なんだろうか。
たぶん、円馬鹿の迷走ぶりにやんなったんだろうけど。

666 :
Unicodeって言っても日本語だけじゃないんだって。日本語メインだと、1コードポイント=1文字みたいな
イメージあるけど、カーソル配置にしたって、書記素という境界におかなきゃいけないし、RTLとLTRの切り替えとか
まともにやると死ぬというか無理。WinではDirectWrite使えば、えらい楽になるけど、Uniscribe使うと
幾分楽になるがそれでもUniscribe自体がLowlevelだし。UniSynEditのUniscribe版の使い方は
はっきりいって無意味でハンドリングまったくできてない。というか、DirectWrite使えば、
エディタ作成で、テキストのレイアウトやカーソル配置やヒットテスト全部やってくれるから
前に比べれば結構楽だぞ。

667 :
というかエディタメインのプログラム作るならみんなのために作ってよ。今、ホンダさんソースをさらりと
みたけど、メインのHEditor.pasは1万2千行くらいで、色々、文字の操作や折り返しやキャレット配置・レイアウト
などでごみごみしてやってるけど、DirectWrite使えば、それら全部ごっそり削除して
3千行くらいに圧縮できると思うから。まぁ、他のコントロール同様、基本的なキーボード、マウス、スクロールメッセージの
処理とかは他と一緒でやらなきゃいけんけど、
後、Highlighterをプラグインできるようにするならそこらへも必要だけど。
DirectWriteは最強だよ。XPで使えんけど・・

668 :
今のデルファイ用コンポーネントでホンダさんエディタくらい、インパクトのあるものって何?

669 :
エディタはビュジュアルコンポーネントだし、それだけで、インパクトあるからね・・
他の分野のコンポと比較しするのはちょっとあれだけど。俺は信頼性に重きおいてるから、
外部コンポ使うのはよほどの事ないと。HTTPなら、Indyより、WinInet,WinHTTPとかちょっと
したマルチフォーマットのテキスト表示するならWindowsのRichEditや今回のDirectWrite使うし。
外部コンポ探すより最初はWinAPIの方優先するからよくわからんということで
他の人頼む。スクリプト絡みで、作者がずっと頑張ってるDWScriptなら使ってもいいかなと。

670 :
後、Delphiで今のところ、クロスプラットフォームのアプリ作る予定なんて全くないから
ブラウザ埋め込む場合は標準のTWebBrowserでいいけど、Delphi Chromium Embedded
の作者は応援してる。

671 :
>>667
3桁ぐらいもらえればいつでも作るよ

672 :
>>671
頼む、お願いします。

673 :
>>672
じゃあtorcoloor467あっとyahoo.co.jpまで連絡を。

674 :
3桁なら、どっか自販機あされば、100円くらいはみつかるだろうから、
それでお願い。

675 :
>>673
999円って言われるぞw

676 :
馬鹿野郎、3桁つったら001円だよ

677 :
111(2進)円で

678 :
小数点以下3桁かもしれない

679 :
Delphiで使えるx86とx64用のディスアセンブルライブラリってありますか?

680 :
俺のおしっこ100ccで。

681 :
>>673
作れるなら金とっていいからぜひ作って公開し下さい。

682 :
>>673じゃないけど有料ライブラリとして公開した場合リアルな話いくらまで出す?

683 :
個人的には2500円位出しても良いかな。
たくさんの人に払ってもらうとなると、1000とかじゃなかろか。

684 :
有料なら、こんな物もある。
http://www.tmssoftware.com/site/advmemo.asp

685 :
>>682
ソース付きなら TEditor と同額出す

686 :
>>684
昔、使ったことあるな。
これもいいよね。

687 :
へぇ結構金出すもんなんだ

688 :
技量がない分は金でカバー

689 :
金がない分はごまかしでカバー

690 :
偉い方教えてください。よろしくお願いします。
DELPHI2005を使って、SQLSERVER2000へアクセスしてきました。
このほど、SQLSERVER2008にアップしましたがDELPHI2005から
ADO(dbGO)またはODBCで可能かどうか知りたいです。
ADOだと接続テストは成功するのですが、
実際にコンポーネントを配置して、アクセスすると。
ログインのダイアログはでるのですが、ログインできませんでした。
私のミスかしれないです。
ODBCはまだ試していません。

691 :
普通は接続できるぞ。

692 :
訳あってDelphi5を使ってるんだけど、
ビットマップの上に重ねたビットマップを半透明表示したい。
上のbitmapのPixelFormatをpf32bitにする
Scanlineしてalphaをいじって再描画
ってのが浮かんだんだけど、このバージョンって32bitのbmpって扱えなかった筈
何か良い方法は無いかな・・・。

693 :
自分でアルファ処理をするんだよ。scanline つかって。

694 :
RGB値の半分だけ足せばいいんじゃないかな それで半透明っぽくなるはず

695 :
>>689
ごまかせるのなら技量があるってことだぜ

696 :
つかアルファチャンネルが必要な意味がわからない
2枚をただ合成すればいいんでしょ 足し算するだけだから楽勝だ
32bit BMP って R G B A の4つの情報か アルファチャンネルいらねーしw
24bitで十分いける

697 :
>>692
32bitのビットマップ自体は扱えるよ。透過処理がされないだけ
半透明ってのが50:50で合成するって意味なら>>696の言う通り24bitでいけるが、
足しただけじゃなくて2で割らないといけない(単純に足すだけの方法は加算合成)
古いOSで実行しないのならWin32APIにAlphaBlendというそのままのAPIもある
こいつは計算方法がちょっと特殊だけど、半透明ぽく見せたいだけなら全然問題ない

698 :
ありがとう。
やりたいことは、フォームに複数のビットマップが貼られてて、全部の明度を一度に下げたいんだ。
なら黒いビットマップを上からかぶせて、透明度を変えればいいんじゃねピコーンってなったんだけど、
やっぱり全部列挙してRGBをいじるか、Windows.AlphaBlendになるか。

699 :
それならAlphaBlendプロパティを弄ったフォームを上から被せるだけでもいいんじゃね?

700 :
>>699
TFormのAlphaBlendプロパティはDelphi6からですよ。

701 :
690です。
恥ずかしいことに、プログラムのミスでした。すません。
レスをサンクスです>691

702 :
>>700
そっか
なら普通にAPIでレイヤード化で

703 :
ちょっと初歩的な質問で恐縮ですが

いつのまにか、デバッグ時にエラーが発生しても
デバッグ画面の対応行で止まってくれなくなりました。
どこの設定を変更すると、本来の状態に戻るんでしょうか?
よろしくお願いします。

704 :
バージョンも書かずに質問とな
オプションのデバッグ関係のところに例外で停止とかなんとかいう項目があってoffに
なっているはずなのでこれをonにする、でどうよ

705 :
>>704
済みませんでした
なんか突然"runtime error 216"が出始めて

706 :
って、またバージョン書くのを忘れました
XEです

707 :
最適化のチェックを外して、「再構築」を行う。これでデバッグモードでビルドできる

708 :
>>707
ありがとうございます。
ただ、Debugの「最適化」はfalseになっています。

709 :
後出し細切れいくない
ちゃんと全部まとめて書け

710 :
プロジェクトのdcuが古くなって再構築されない状態になってんのかね
デバッグの位置がずれるソースmysource.pasに対応する
myproject\win32\debug\mysource.dcu(または*.dcu全部)を消してみるとか

711 :
>>708
再構築に最適化は関係ないので大丈夫。
逆に変えると動作が違ってくる可能性もあるから。
>なんか突然"runtime error 216"が出始めて
ウィルスでは?

712 :
"runtime error 216"で検索すると
確かにウイルス関係がヒットするな

713 :
今回の原因かどうか分かりませんが、
また最近のバージョンは分かりませんが
Delphiのランタイムエラー216は一般保護例外です。
ユニットファイルの初期化部(initiailzation)や終了処理部(finalization)で
まだ実体を生成していないオブジェクトのプロパティを読み書きしようとしたりすると
デフォルトの例外処理は行われず、Runtime error 216のメッセージボックスが表示されます。
もしプログラムの起動直後に起きるのならこの可能性がありますので
F7キーでトレースしていくと良いと思います。
------------------------
○おまけ Runtime error 216を起こすサンプル
メインフォームForm1を持つUnit1と以下のようなUnit2があるプロジェクトを実行すると
※のところでエラーが発生、Runtime error 216ダイアログが表示されます。
unit Unit2;
interface
implementation
uses Unit1;
initialization // ここはフォームが生成される前に呼び出される
 Form1.Left := Form1.Left + 1; // ※まだForm1 = nilなのでここで発生!
end;

714 :
ヌルポってことか

715 :
ナマポか

716 :
Delphi7です
新規アプリでXPManをUsesしてボタン3個設置でコンパイルします
出来上がったExeをWindows7で実行し、おもむろにAltキーを押すと
フォーカスが無いボタンは消えてしまいます
誰か直し方知らない?

717 :
消えたように見えるだけってことだろ 再描画せぇ

718 :
ものっそい基本的なこと聞いてごめん。
Timageを配置して、
image.picture.loadfromfile('なんとかbmp')をすると、image.picture.bitmapにbmpが入る。
image.pictureがnilでなければ画像が保持されてるってことで、image.picture:=nil ってやると画像がクリアされる。
ここまで理解した後、Tbitmapをcreateして、
bitmap.loadfromfile('なんとかbmp')ってやった後、初期化しようとしてbitmap:=nilってやったら、
インスタンス自体がどっか行ってしまった。
初期化したければbitmap.assign(nil)で、画像がassignされてるかはbitmap.emptyで判定、が正解?

719 :
>>717
たしかに再描画すれば出てくるんだけど、Altキー押されるたびに
フォームの全コントロール再描画するのってスマートじゃないなーと

720 :
VistaAltFixUnitってのを使えばいいと聞いた事があるぞ。

721 :
Vista騒動の時にさんざん見たなあw

722 :
TBitmapをCreateしてから、何度も使いまわす意味がわからない Freeしときゃいいのに
nilを代入するのはただヌルポにするだけで、初期化処理をしているとは言えない
厳密に初期化したいならばCreateしなおすべきだ

723 :
VistaAltFixUnitでぐぐったら色々出てきた
再描画するのは同じやったけど参考になったわ

724 :
Formを doublebuffered := true すればいいってわけじゃないのか

725 :
>>724
やってみたら酷いことになったじゃないか

726 :
TImage.Pictureにnilを代入するとクリアされるという仕様を作った馬鹿は
>>718みたいな勘違い馬鹿を大量に生み出したことを反省すべき

727 :
こんなこと書いてる人がいるんだけど、本当?
この検索で出てくる、「天 徳 院」とかいう人のブログ記事。
http://www.google.co.jp/search?q=Delphi+%E3%82%AD%E3%83%A3%E3%82%B9%E3%83%88+%E3%83%96%E3%83%AD%E3%82%B0

728 :
なわけねーだろw

729 :
すみません、質問です。
C/Sで2層のWin32アプリを.NET Frameworkのアプリに変更したい場合
何か注意点ありますか? やはり最低でも3層にしないと
.NETでは、クライアントから直にDBをみにいけないんでしょうか?
環境的にはVPNやイントラも可能です
またEXEの配布はサーバー上のhttp://www.xxx.com/xxxx.exe
直に実行しいつでも最新が実行されるように考えています。

730 :
何でそれをこのスレで聞こうと思ったのか、私気になります!

731 :
>>727
PCharへのキャストは文字列が空ならnil、そうでなければ先頭文字のアドレス。

732 :
                     /j
                   /__/ ‘,
                  //  ヽ  ', 、
                    //    ‘  ! ヽ             …わかった この話はやめよう
                /イ       ', l  ’
               iヘヘ,       l |  ’
               | nヘヘ _      | |   l            ハイ!! やめやめ
               | l_| | | ゝ ̄`ヽ | |〈 ̄ノ
               ゝソノノ   `ー‐' l ! ¨/
            n/7./7 ∧        j/ /     iヽiヽn
              |! |///7/:::ゝ   r===オ        | ! | |/~7
             i~| | | ,' '/:::::::::::ゝ、 l_こ./ヾ..     nl l .||/
             | | | | l {':j`i::::::::::::::::`ーr '         ||ー---{
              | '" ̄ ̄iノ .l::::::::::::::::::::::∧       | ゝ    ',
      , 一 r‐‐l   γ /、::::::::::::::::::::::::〉ー= ___  ヘ  ヽ   }
    / o  |!:::::}     / o` ー 、::::::::::::i o ,':::::::{`ヽ ヘ     ノ
   / o    ノ:::::∧   /ヽ  o  ヽ::::::::| o i::::::::ヽ、 /   /
   /    ノ::::::/    /::::::::ヽ  o  ヽ:::| o {::::::::::::::Υ   /

733 :
>>728>>731
ですよね。
DelphiのStringは賢いのでヌル文字入りになってるから、余計なことはしなくて良いはず、
しかしこの人はStringから作ったポインタの有効期間について思い違いをしたので迷走…
そういうことでしょうかね?

734 :
何でそれをこのスレで聞こうと思ったのか、私気になります! > 733
つか、本人に聞いたら?

735 :
>>731,733
本当にそんな初心者レベルの話なのか?
文字の最後に2バイトヌルを追加しないと
相手が正しく文字を判断してくれないケースとか考えると
例えば、64bitOSとかUTF-8のBOMの影響とか?
まっ理由が書いてないから、なんともいえないけど。

736 :
間違えた
>相手が正しく文字を判断してくれないケースとか考えると
>PCharが正しく文字を判断してくれないケースとか考えると

737 :
>>735,736
また間違えた。
よく見たら別に文字列に#0#0を加えているわけじゃなかった。

738 :
                     /j
                   /__/ ‘,
                  //  ヽ  ', 、
                    //    ‘  ! ヽ             
                /イ       ', l  ’
               iヘヘ,       l |  ’
               | nヘヘ _      | |   l           
               | l_| | | ゝ ̄`ヽ | |〈 ̄ノ
               ゝソノノ   `ー‐' l ! ¨/
            n/7./7 ∧        j/ /     iヽiヽn
              |! |///7/:::ゝ   r===オ        | ! | |/~7
             i~| | | ,' '/:::::::::::ゝ、 l_こ./ヾ..     nl l .||/
             | | | | l {':j`i::::::::::::::::`ーr '         ||ー---{
              | '" ̄ ̄iノ .l::::::::::::::::::::::∧       | ゝ    ',
      , 一 r‐‐l   γ /、::::::::::::::::::::::::〉ー= ___  ヘ  ヽ   }
    / o  |!:::::}     / o` ー 、::::::::::::i o ,':::::::{`ヽ ヘ     ノ
   / o    ノ:::::∧   /ヽ  o  ヽ::::::::| o i::::::::ヽ、 /   /
   /    ノ::::::/    /::::::::ヽ  o  ヽ:::| o {::::::::::::::Υ   /

739 :
>>734
すでに聞いているのですか、返答がないのです。
>>738
あの、何か言ってください。

740 :
                     /j
                   /__/ ‘,
                  //  ヽ  ', 、
                    //    ‘  ! ヽ             いないいない…
                /イ       ', l  ’
               iヘヘ,       l |  ’
               | nヘヘ _      | |   l           バァ!
               | l_| | | ゝ ̄`ヽ | |〈 ̄ノ
               ゝソノノ   `ー‐' l ! ¨/
            n/7./7 ∧        j/ /     iヽiヽn
              |! |///7/:::ゝ   r===オ        | ! | |/~7
             i~| | | ,' '/:::::::::::ゝ、 l_こ./ヾ..     nl l .||/
             | | | | l {':j`i::::::::::::::::`ーr '         ||ー---{
              | '" ̄ ̄iノ .l::::::::::::::::::::::∧       | ゝ    ',
      , 一 r‐‐l   γ /、::::::::::::::::::::::::〉ー= ___  ヘ  ヽ   }
    / o  |!:::::}     / o` ー 、::::::::::::i o ,':::::::{`ヽ ヘ     ノ
   / o    ノ:::::∧   /ヽ  o  ヽ::::::::| o i::::::::ヽ、 /   /
   /    ノ::::::/    /::::::::ヽ  o  ヽ:::| o {::::::::::::::Υ   /

741 :
>>735
ダブルヌルターミネートが必要なShell系のAPIとか?

742 :
>>731
違うんじゃ?
文字列Sが空の時、
PChar(S)は空文字列へのポインタ(#0へのポインタ),
Pointer(S)はnil.
というか、型システムとしてstring型はnilと空文字列区別してほしかった・・

743 :
と、俺はWinAPIに渡すとき、文字列が空の時を踏まえて
PCharにキャストすべきかPointerにキャストすべきか
使い分けてるけど。

744 :
>>742
なるほど、文字列(長い文字列)がカラの時は変数の中身はnilポインターになるが
PCharでキャストするとわざわざカラのブロックを作って
そこを指すようになっているのですね。

745 :
まぁ、そんな感じ。実際はソース見ると、グローバル定数の#0へのポインタが返されるようになってけど。
string型はnilと空文字列区別して2012 Surveyであった、.NETと同じようなRooted Type Systemお願い・・

746 :
どちらにせよ「○○に渡す場合は」等の限定が無く、
一般的な話として書かれている時点で完全に間違い

747 :
文字列型なのにnil値と空文字列を区別する言語の方が変。

748 :
ポインタの話だが?

749 :
みんな普通にスルーしてたとこみると、勘違いしてたっぽさそうだけど。
文字列が空の時PCharへのキャストがnilになると勘違いして、実際違うのを知った時は
おいら小便ちびったけどね。

750 :
値型/参照型とNull許容性はhejiも別にすべきだったといってるらしいが、
ttp://ufcpp.wordpress.com/2012/04/10/null%E9%9D%9E%E8%A8%B1%E5%AE%B9/
まぁ、ここまではやらんでもいいが。

751 :
GCネタといい10年遅れの議論が好きだねここw

752 :
GCといや、WinRTもC++/CXで参照カウントによる自動解放が標準で実装されるね。
ttp://msdn.microsoft.com/en-us/library/windows/apps/hh699870%28v=vs.110%29.aspx
非同期前提の時代はそういう流れ。

753 :
Boost の Smart pointer が実装されたの何年前だとおもってる? > 752


754 :
>>752
イラネ

755 :
ARC は所詮 GC ではないので、Free を呼ばなくてもよい。くらいのものだぞ
xocde 並みにコンパイラ/IDE がソースコードを変換してくれるなら良いけど

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

757 :
初心者向けの機能は初心者向けの言語に任せとけばよい。
何でもかんでも取り込もうとするのは間違い。

758 :
と初心者が申しております

759 :
いつもの「標準ライブラリ以外使わない」君、乙

760 :
本物は標準ライブラリの代替物から自作

761 :
かっこいい

762 :
C言語のプログラムをDelphiに移植しようとしています。
long s0[1024], s1[1024], s2[1024], s3[1024];
static long *sa[4] = {s0, s1, s2, s3};
このように宣言されていて、sa[i][j]=〜; とか s0〜s3として使われています。
Delphiだと2次元配列にして、変数名を s0→sa[0] に置換するしかないでしょうか?

C言語の知識がほぼゼロなので、演算子とか確認しながら手探り状態で進めています。
不思議に思ったのは、定数も変数もただ static long〜 と書いてあるだけなのですが、
なぜconstしないのでしょうか?
Delphiと違って、初期値の設定に制限が無いため、わざわざconstする文化が薄いから?
それとも、当該のプログラムが制作されたのが1990年代初頭だからでしょうか??

763 :
まずはやったら?
そんなこと聞いて何の意味があるの?

764 :
大半の人は、実は釣り質問。
単に馬鹿な回答者がいればそれでいい。

765 :
Delphiとは全く関係ない質問だな

766 :
答える気がない人は書き込まないでください

767 :
断る

768 :
>>766
お前が教えてやれ

769 :
:type
: Long = LongInt;
: TLongArray1024 = array [0..1023] of Long;
: PLongArray1024 = ^TLongArray1024;
:var
: s0, s1, s2, s3: TLongArray1024;
: sa: array[0..3] of PLongArray1024 = ( @s0, @s1, @s2, @s3 );
:var
: I, J: Integer;
:begin
: for I := Low(sa) to High(sa) do
: for J := Low(sa) to High(sa) do
: sa[I][J] := 0;
:end.

770 :
>>769
質問には答えていただけないんでしょうか?

771 :
>>762
その意味について論文でも書くの?

772 :
大半の人は、実は釣り質問。
単に馬鹿な回答者がいればそれでいい。

773 :
よろしくお願いします。
TCalendarで複数のクリックした日の色を変えるにはどのようにしたらいいのでしょうか?
normal色を青などに変えたいです。
delphi7のpersonal、windows7を使用。

774 :
Gridなので、派生クラスを作ってDrawCellメソッドをoverrideする

775 :
大半の人は、実は釣り回答。
単に馬鹿な質問者がいればそれでいい。

776 :
delphi6、win7の環境ですが、コンポーネントが古臭く見えます。
実害はないのですが改善できないものですか?

777 :
眼科に行ったら

778 :
>>776
http://www.delphi-gems.com/index.php/controls/windows-xp-theme-manager

779 :
>>778
ありがとうございました
試してみます

780 :
>>776
http://www.geocities.jp/asumaroyuumaro/program/tips/xpstyle.html
これとかも

781 :
大半の人は、実は釣り回答。
単に馬鹿な質問者がいればそれでいい。

782 :
TComboBoxの基本的な使い方が分かりません。
実行中、Edit部分に文字列を入力すれば、特に何もしなくてもItemsに追加されるのかと
思ってましたが、違うようです。
どのようにしたら追加できるでしょうか?

783 :
>>782
AddItem
Items.Add
Items.AddObject
Items.AddStrings
Items.Append
Items.Assign
Items.Insert
Items.InsertObject
Items.LoadFromFile
Items.LoadFromStream
Items.SetText
Items.SetTextStr
Items.CommaText
Items.DelimitedText
Items.Text
好きなのを使いたまえ

784 :
>>782
ComboBox内に入力した文字列をそのままItemsに追加したいのであれば
procedure TForm1.ComboBox1KeyPress(Sender: TObject; var Key: Char);
begin
 // Enterキーで追加する場合
 if Ord(Key)=VK_RETURN then ComboBox1.Items.Add(ComboBox1.Text);
end;

785 :
釣りでした

786 :
>>783
列挙していただき、ありがとうございます。
個々のメソッドやプロパティは理解できるのですが、知りたいことは、入力したものを
とりあえずItemsに保管しておいてくれるようにするにはどうすればよいかということなんです。

787 :
>>784
できました。ありがとうございます!
そのままItemsに追加だと同じものがたくさん入ってしまうので、それは防止しました。
procedure TForm1.ComboBox1KeyPress(Sender: TObject; var Key: Char);
var
  T: String;
begin
  if Ord(Key)<>VK_RETURN then Exit;      // Enterキー以外なら何もしないで帰る
  T:=Trim(ComboBox1.Text);                   // 空白除去
  if T='' then Exit;                                 // 空文字なら何もしないで帰る
  if ComboBox1.Items.IndexOf(T)=-1 then // もしComboBox内に存在しなければ
    ComboBox1.Items.Append(T);             // 追加する
end;

TComboBox自体にこういう機能があるはずで、きっと何か見落としているんじゃないかと疑って
質問させてもらいましたが、結局自分でやる必要があったんですね。
こういう勘違いをするのは自分の考え方がおかしいのかな、とも思ったんですが…
D6ヘルプの「TComboBox の使い方」をよく見ると、このような記述がありました。
>CLX では,コンボボックスの編集フィールドにテキストを入力して〔Enter〕を押すと,
>ドロップダウンリストに項目を追加できます(VCL のコンボボックスではできません)。
これに早く気付くべきでした。

788 :
大半の人は、実は釣り回答。
単に馬鹿な質問者がいればそれでいい。

789 :
XE2でDataModuleにActionList置こうとすると
コンポーネントパレットから消えちゃうんだけどどうやって置けばいいですか?
ビジュアルコンポーネントのタブが消えるのはいいとして
System, Dialogsといった非ビジュアルコンポーネントまで消えてしまう…

790 :
TDataModuleのClassGroupプロパティをVcl.Controls.TControlに変えてF12を2回押しなさい

791 :
うまくいきました。ありがとうございます。

792 :
>>787
>if ComboBox1.Items.IndexOf(T)=-1 then // もしComboBox内に存在しなければ
これ(IndexOf)知らなかったw便利ですね
今までItemsやらLinesやら全部時前でCount分検索してた><

793 :
>>780の方法は反映されないコンポーネントもあってちょっと残念でした
結局Delphi7で難なく解決しました
せっかくなのでいろいろなバージョンで試してみたけど、
同じソースでもバージョンを上げるごとに、作成されるファイルサイズが大きくなっていくので
困っています

794 :
ということは、D6以前でXPテーマを適用させた場合に出る表示の不都合は、
D7ならすっかり直ってるのね。
XPに対応してないD6と対応してるD7だから、当たり前なのか。
>>793
何か特別にファイルサイズを小さくしたい事情でもあるの?
UPXとか結構みんな使ってるよね。
私は使ったことないけど。

795 :
>>793
そんなので困ってるって…
ファイルサイズが大きくなると具体的にどう困るの??

796 :
>>794
D6はThemeManagerを使えばほぼ問題ナッシング
D7はそれをVCLに組み込んだだけ

797 :
>>795
メモリ占有量が増える

798 :
>>795
技術力を疑う

799 :
そんなので技術力を疑う奴は頭の弱い奴だけだから大丈夫

800 :
昔からメモリ(ファイルサイズ)と速度はトレードオフの関係にあるけど、
最近はメモリもディスクスペースも余り気味だから、
速度を優先してメモリやサイズが増えるケースの方がほとんどだよ。
そもそもバージョンアップしたら普通は機能が増加してサイズが増えるのは当たり前だしね。
ファイルサイズを減らすだけの最適化しかしてない新しい環境をわざわざ買う人なんていないし。
だからもしメモリやサイズが増えただけで技術力を疑う人がいたら、
その人の技術センスは10年以上前で止まってるんだろうね。そんな人はいないと思うけど。
あ、いたかw > 798

801 :
ちょっとしたアプリ作って、EXEサイズが100MBいくなら死ぬけど、10MBぐらいまでなら
全く気にならん。

802 :
最近のDelphiでメモリリークってどうやって検出するの?
メモリマネージャの性能がよくなったからか、解放済みの領域アクセスしてもすぐにエラー吐かなくて
どこがエラーか分からん

803 :
間違えたメモリリークじゃなくてアクセスバイオレーション

804 :
>>800
それをいかに抑えるかって話なんだけど・・・

805 :
俺バカだった。忘れてね

806 :
俺もバカだった。忘れてね…

807 :
俺はホモ

808 :
だが firefox のメモリリークは今だに酷い
技術力を疑わざるを得ない

809 :
俺もバカだった。忘れてね…

810 :
玄人の俺が質問すっけど、Windowsのヘッダとか移植するとき、おまえら
どういうルールで移植してる?varつかうかoutパラメータ使うかそれともポインタ型使うかとか。
ポインタ型はいちいちtypeで宣言しなきゃいけんのがうざいし・・Rよ。
Delphiの前方宣言も何げに制限が厳しすぎてRなんだよなぁ・・

811 :
DelphiってPASCALだろ
PASCALを改善したのがCだからな
Cにかなう訳ないよ

812 :
やっぱ、深く考えないって事が正解か。毎回ヘッダ移植するたびに
悩むんだよな。気にしないということで、移植の続きでもやるか。ありがとう。

813 :
NULL(nil)を渡すかどうかで決めてるな。あとは手抜きでJEDIのをもらってくる。

814 :
JEDIになかったらとりあえず移植してる。
>>813
それも悩むよね。前まではnil渡しても問答無用でout,varで宣言して、nil渡す時、
PMyRecord(nil)^とかで無理やり渡す方針でいたけど、今回はnil渡せるメソッドが
多くて、再び悩みだした。

815 :
そういうときは両方とも定義するという手も。

816 :
移植する時は手間だけど、nilが渡せるのはvarとポインタ版両方作って
ポインタの方はnilをデフォルト引数にしておくと使う時は楽だな
RTLでもそうやって書いてある関数あるし

817 :
あとそういうのを用意しておくと、nil渡してもいいパラメータだったかどうか確認する手間が省けるし

818 :
移植だいたい終わったけど、移植前のCソースが3万行近くあって、移植後が1万数千行だから、
両方用意するのメンドイな。まぁ、もうちょっとどうするか考えるわ。

819 :
多くて面倒な時は一方だけ書いておいて、
その時に対象の引数の後ろ等に決まったコメントを埋め込んで
あとでそれを読み取って一括変換かけてるな
自分で形式さえ決めておけば、専用ツールこさえなくてもその辺のテキストエディタの正規表現でいけるし

820 :
Interfaceの定義だと両方書いておけないんだよなあ
ぜんぶせっせこnil渡せるかチェックしてるわ

821 :
GUIDが同じでインターフェース名を変えて定義すればいいだけじゃ?

822 :
質問です。よろしくお願い致します。
文字列'abc123'をasciiで数値に直すことはできたのですが、
この逆ができません。
どのようにしたら数値を元の文字列に直せるのでしょうか?
delphi7使用です。

823 :
http://docwiki.embarcadero.com/Libraries/ja/System.Chr

824 :
D7で作ったFirebirdDBアプリはwin8で動きますか

825 :
何をもって動くとするかが分からないので、実際にWin8上で試してください

826 :
継承したフォームで、派生元でのプロパティ値(ClientHeightとか)を取得する方法はありますか?

827 :
はぁぁぁぁぁ?? 継承したプロパティは全部見れるだろ じゃあなんのための継承だ?
オブジェクト指向をイチから勉強し直せ

828 :
TForm1からTForm2を派生しておいて、それぞれ違うClientHeightを指定したときに
TForm2でTForm1に指定してあったClientHeightを知る方法があるか、って意味だろ。
継承元(TForm1)のLoadedをoverrideして値を取っておくくらいかなぁ。

829 :
じゃあ最初からそう書いたらいいんじゃないですかぁ???

830 :
派生元での値って書いてあるんですが…
>>828
Loadedだと、inherited実行前とかで見てみましたが、新しい値しか取れませんでした。

831 :
同名のプロパティやらを追加したってことなら T親クラス(Self).Hoge で取れなかったっけ
>>827はバカだが>>826も分かりにくい

832 :
>>826,828,831
アホ、>>827の言うようにOOを一から勉強しろ。

833 :
>>831
828氏の指摘の通りです。
オブジェクトインスペクタでの「敬称元の値に戻す」のように、元の値を取得したいんです。

834 :
自己解決しました。

835 :
自己解決したんだ。よかったね。
アホは>>832だったというわけだ。

836 :
継承した値とか言ってるけど、TForm1に指定してあったClientHeightってことはオブジェクトインスペクタ等で指定したもの(dfmの値)だろ?
あれはOO的に言えばクラスの初期値じゃなくてインスタンスに代入される値だから、継承はそこまで関係ないと思うんだが
OOの仕組みが分かってないというより、VCLの仕組みが分かってないと言った方が正しい

837 :
>>836
じゃあ親クラスのClientHeightってどうやって知るのかコード書いてよ。

838 :
ちょっろっと追ってみたけど、一般論的にはうまくやる方法はない。
ユニットローカルな関数とかその内部関数とかで処理されているので。
あとはそのプロパティのSetメソッドをoverrideして書き込みを捕捉する、という手は考えられるかなぁ。

839 :
>>837
リソースからTForm1のClientHeightにセットされている値を読み出せば良い

840 :
まだできてない人いるんですね(笑)

841 :
             __、、 , ___
             ,≠=ミYムェ、`
             ,r'ァ'x='く彡'ハミ}
           / '//,イl!lハ.ヽノハヘ}
             i|イik!川l|!|| !|〃,!`l!  夏だねぇ・・・・
          }i!l't、  _ヽ!l!|'ィi |
          |liヽ '._ `’川<ヽj
.            |!|!  ー 1イ!リ, ニヽ
                  /:'/イ:::::.:. :.:ヽ
                j:l:.i:.:l:j:::::.:. :.:}ハ,rァ-、
.        _    ,∠ン‐、:.〉:::::.:, :.:.i:_;マハ/
      , ‐ ´ ,、`ア´__{:.:. :.:.:\::::{: 〈:.l/〉心、
    r,iヒ.ィf´ Y .ィ´   ̄T:ー-: ニヽ_:.:!./. V 〉}
      l! `   〈,リ'!   丶|:、:.. : :.`ニ_:.:!-イl下ヽ
   `、ッ|,hィ /l!: 丶.   |:.:ヽ:..:_:ィ:/.:.:ノ:::Yヽ 〉
  ”_'En,i:.l! : :i::.::\ |:.:;:i:.:` ̄::.::/:::::.:.i ̄
   ,*'jlゞ` |:ll: : :l::.::::i:.:|::.i:.|:l:.:.:.:,∠_:::::.:.:ノ
.         |:ll: : :.l:;r' ¬__,rL: ィ ヽヽ ̄
         ヽ-- '        _〉 ; ヽ}
                  ,rf,‐,-ュ-イ」
                ゞ== " ̄

842 :
>>834,835
アホすぎる、自作自演がばれているw

843 :
HTML+JavaScriptでよく半透明のDIVを画面全体に広げて、
その上に別の要素を置くことでモーダルダイアログ的な操作を実現していますが、
Delphiで似たようなこと(他のコントロールを半透明のコントロールで覆う)はできますか?

844 :
できません。

845 :
alphaを128とかにした真っ黒フォームを表示して、さらにその上にフォーム

846 :
そのモーダルダイアログ風のインターフェース嫌い

847 :
質問に回答ではなく好き嫌いで返す頭の湧いた人がいると聞いて

848 :
845で十分だろw

849 :
誰も十分じゃないとは言ってないけど

850 :
Delphi XE starterで勉強し始めたものですが
ちょっと教えてください。
訳あってプロジェクトを保存したフォルダを
リネームしたいんですが、単にリネームする
だけじゃダメですよね。
プロジェクトの一部の設定ファイルに絶対パスが
書き込まれてるみたいですが、リネームした後、
どうすれば、新しいフォルダでDelphiの開発を継続できますか?

851 :
>>850
できません。

852 :
>>850
*.localと*.identcacheを消せばそれ以外は問題ないと思うが。モデリングとかは別だろうけど。

853 :
>>852
ありがとうございます。
試してみます。
サンプルなんかにプロジェクト単位のがあるから
可能だと思っていたんですが、何を消していいのか
分からなくて...

854 :
主に設定ファイル用の、テキストエディタでも手書きしやすい
listとhashの複合データ構造のフォーマットで何か良さ気なのってないですか。
今のところJSON,YAML,luaのテーブルコンストラクタあたりを候補に考えているんですが。

855 :
じゃあその中から用途にあったものを選べばいいんじゃね?

856 :
YAML

857 :
YMCA

858 :
YAMEL

859 :
                                 ,.へ
  ___                             ム  i
 「 ヒ_i〉                            ゝ 〈
 ト ノ                           iニ(()
 i  {              ____           |  ヽ
 i  i           /__,  , ‐-\           i   }
 |   i         /(●)   ( ● )\       {、  λ
 ト−┤.      /    (__人__)    \    ,ノ  ̄ ,!
 i   ゝ、_     |     ´ ̄`       | ,. '´ハ   ,!
. ヽ、    `` 、,__\              /" \  ヽ/
   \ノ ノ   ハ ̄r/:::r―--―/::7   ノ    /
       ヽ.      ヽ::〈; . '::. :' |::/   /   ,. "
        `ー 、    \ヽ::. ;:::|/     r'"
     / ̄二二二二二二二二二二二二二二二二ヽ
     | 答 |     YAMEL        │|
     \_二二二二二二二二二二二二二二二二ノ

860 :
>>210
                                             ,r'^''=ァ-
                                        , -、  , -''´_,,r ''"
                      _______.. 、、-ァr|   i´_ ,r'_´__ _ _
                               ̄¨``…=''|-─ヒ!--−… '' "゛´
            il「~lii                        r亠、  |
            ''rへ,、                        |・._    |
 __.. 、、---‐─…!  ├^ー‐_: =====━…         , -| `´   |
  ̄  ̄ ̄  ̄二ニ! ̄ |`¨ ̄                 _,. -1  |¨¨i   |        _
            | 。  ⌒L、         _ , 、-_''´‐''" _,ゝ._|    /7        / `l
          | rz─=,ニ=-─===z二 ̄ _< _,. - ''"   _」  = 「´        /  .|
   .        | ( ' ̄//  ̄`l¨`i  ``T'F ̄    ̄丶. -<´  l凹   |        /   |
            | /´ ̄rュ`'ー┘ ° L0!_    r‐、 ` ''┴==-┴−-、__/   |
        …==i=(_  o  。 °    ロ      ̄ ‐┴-⊥., -‐- 、     _≦'、_   |
             |┘゙コド"−-、- -         _   /F、-、    )イ ̄        ̄´
           ̄ (O  ̄ ̄"``ー- 二 _    ̄  __王ニ-‐ ´ ̄´
                          r !!、 ̄ ¨¨ ̄(.○゙
                          ゙‐'-'
                      //Λ_Λ  | |
                      | |( ´Д`)// <うるせぇ、オスプレイぶつけんぞ
                      \      |

861 :
D6です。
動画合成用の素材動画データを作りたく
数値データから文字を avi ファイル(1 〜10 fps)に出力するプログラムを組みたいのです
どういう手順がベストでしょうか?
作業目的の全体像は
(1)テキストの計測文字データを時間軸で動画にして
 〜.txt(例)
 09:59:58 計測値1
 09:59:59 計測値2
 10:00:00 計測値3
 10:00:01 計測値4
  ↓出力
 〜.avi
 ┌────────┐
 │09:59:59 計測値2
 └────────┘
(2)同時間実写ビデオ映像 と 時間+数値などの(1)を合成する。← これはフリーの動画合成を探します。

862 :
procedure TForm1.〜 (.txt は読み込んであるとして)
 Var Bmp : TBitmap;
begin
 BMP :=TBitmap.Create;
 { Bitmap の範囲を決めて文字情報を描画
 { avi データに Bitmap バイナリを書き足す
 { 繰り返し
 BMP.Free;
end;
このような流れですか?

863 :
えくりぷす
http://gamers-park.com/node/147

864 :
>>861-862
聞く必要あるんですか、それ?

865 :
>>861
こういうのでやった方がよくないか?
ttp://www.avisynth.info/?%A5%B5%A5%F3%A5%D7%A5%EB%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8%2F%A5%C6%A5%ED%A5%C3%A5%D7%A4%CE%C1%DE%C6%FE

866 :
>>865
テキスト加工出力の方が楽なので、ソレを調べてみます。
ありがとう
他のツールや方法があればご指摘ください。

867 :


868 :
オートパイロット・自動操作ツールを作っています
対象ウィンドウにWM_LBUTTONDOWN/UPを送ることでクリックの再現には成功したのですが
その際に、そのウィンドウがアクティブになってしまい、フォーカスが奪われます。
フォーカスさせないでクリックさせることは可能ですか?
フォアグラウンドにしない方法というのはググったら見つかって
Get/SetForegroundWindowで直前のウィンドウを呼び戻したり
hPMHandle := FindWindow(null, PChar('Program Manager')); SetParent(hTargetHandle,hPMHandle);
というようにProgram Managerの養子にするという方法で実現できました。
が、フォーカスは相変わらず奪われます。特に文字入力中にはにゅうりょくがちゅ
うだんされこのようになります。

869 :
すみません。自己解決したかもしれません。(たまたま今うまくいっているだけかも)
>>868の非フォアグラウンド化とあわせて
Get/SetWindowLongで拡張スタイルのWS_EX_NOACTIVATEを追加指定してやるとうまく?いきます。
それと
fore := GetForegroundWindow();
SendMessage(hoge);
SetForegroundWindow(fore);
SetActiveWindow(fore); <- New!
するといいかも。とりあえず思いつく限りいろいろやったらうまく動いたっぽいです。
 □←明日になると(なぜか)動かなくなるスイッチ
どれがキモ、無駄か判明してないけど、もうねるぽ…

870 :
ここは ぼくの にっきちょう です

871 :
キモ、い。 >870

872 :
ここ は ぼく の にっきちょう です。

873 :
D4でのフォームの継承について教えてください。
あるフォーム(このフォーム自体も多重継承しています)を継承して
新しくフォームを作ろうとしているのですが、
この継承元フォームのコンポーネントを継承先フォーム設計時に
表示するにはどうすれば良いのでしょう。
実行時はコンポが表示されますが、設計時には表示されないので
レイアウトが決めにくく悩んでいます。
<やってみたこと>
継承元のdfmがあるので、それを流用すれば何とかなるのではと
思ってdfmの先頭行を
inherited oldForm:ToldForm → inherited newForm:TnewForm
のように書き換えて新規フォームのdfmと入れ替えてみたのですが
フォーム読み込み中のエラー(中略)読み込み違反がおきました 
とメッセージが出て上手くいきませんでした。


874 :
>>873
 _i^i__i^i_                  i^i ._i^i_ __, -―- 、___
 |*||*| ∩___∩    i^i _i^i_  | | |@ll|(_/,,,,   ,,,,   ヽ_)  山で出会った時は
 |≡||≡|| ノ       ヽ  ([])|;□;|.(≡)|_| |●  ●   |    とりあえず「こんにちわ」が基本だよな
 . 二二/       ● |二二( (二二二二 彡(_●_ )   ミ   
     |          ミ    ) )       / ` ''∪''  / ヽ
    彡、      _ノ Gノ'フ=  ___  / /i  ` ー '"  iヽ |
     /        ヽ / /     | ! / / |       | | .l.
 ..──|ヽ         ヽ/─==i─Y-(_ノ──i二i───(⌒)
 ___ヽ       /ヽノ   └-┘ ┴     ..└┘    . ̄
      | ___ i ̄ そうだよな。 いきなり銃向けられるって、どこのスラム街だよって話だよな

875 :
>>873
D4より新しいバージョンを使って下さい

876 :
>>875
ありがとうございます。
個人的にももっと新しいバージョンを使いたいのですが
業務関係でD4しか使用出来ない状況です。
D4では無理なのでしょうか。

877 :
>>873
1.継承元フォーム上で右クリックして「リポジトリに追加」を選択
2.「リポジトリに追加」ダイアログで「タイトル」に「Hoge」と入力して「OK」クリック
3.メニュー「ツール」「リポジトリ」を選択
4.「オブジェクトリポジトリ」ダイアログで「ページ」リストから「オブジェクトリポジトリ」を選択
5.「オブジェクト」リストから「Hoge」を「ページ」リスト内の「フォーム」へドラッグ
6.「ページ」リストから「フォーム」を選択し「Hoge」が追加されているのを確認して「OK」クリック
--- ここまでが準備 ---
1.適当なプロジェクトでメニュー「ファイル」「新規作成」を選択
2.「新規作成」ダイアログで「フォーム」タブを開く
3.「Hoge」を選択し「継承」を選択したら「OK」をクリック

878 :
>>877
週明けに記載の通り実行してみます。
詳細な手順まで書いていただいて
本当にありがとうございます。

879 :
いえいえ、どういたしまして

880 :


881 :
Delphi XE で、Bluetooth のデバイス名を列挙して、
選択して、接続、切断するサンプル無いですか?
「WCL_Developer_Demo_VCL.zip」は、見つけたのですが、
最終的に200ドル程必要なので、無料のを探しているんですけど。

882 :
>>881
そうですか。

883 :
>>882
はい、そうです。

884 :
はいさおじさん

885 :
Acrobat Readerが入っている(Acrobatは入っていない)環境で、閲覧パスワードがかかっているPDFに対し、
PDFのパスワード入力画面をすっ飛ばして(パスワードはあらかじめわかっている)、PDFを単語検索しながら
表示する手段って何かあるでしょうか?
(特定場所にジャンプできれば、単語検索でなくても構いません)
一応3つほど試してみましたが、どれもだめな感じで、手詰りな状況です…。
1. コマンドライン引数でReader起動 → 単語検索しつつ開くことはできるが、パスワードを指定する方法がない
AcroRd32 /a "search=ABCDEFG" "d:\a.pdf"
2. タイプライブラリ(Acrobat 7.0 Browser Control)の取り込み → 検索しつつ開くことも、パスワード指定するメソッドもない
3. Acrobat SDKを使用する → 動作前提にAcrobatが必要?
ttp://mrxray.on.coocan.jp/Delphi/plSamples/724_Acrobat_TAcroApp.htmを参考にさせて頂きつつ、
AAcroApp := CreateOleObject('AcroExch.App') as CAcroApp;で落ちることを確認
(そもそも冒頭にAcrobatが必要って書いていますが…)

886 :
>>885
その手のはSendMessageないしはSendInput,keybd_eventで操作するのが王道かなぁ?

887 :
>>885
pdftk等で暗号解除済みPDFを一時的に生成してそれを表示ってのは?

888 :
>>886
なるほど、やっぱメッセージを使用するしかないんですかね…
どうもありがとうございます
>>887
なるほど。一時的とはいえ、生PDFがローカルに存在してしまいますよね。それを避けたいのです

889 :
えっ

890 :
delphiの文法って、Cよりも優れてるといってもよい?
ポインタの宣言や参照する演算子の使い方を見てもそういう気がするんだけど

891 :
コンパイラの視点から言えば優れてると言ってもいいかもしれませんが、
単に一言語として見た場合の評価は個人の好みでしかないと思います

892 :
コンパイラの最適化が1段階しかないのが不満 Cみたいに /O2 で徹底的な最適化ができない

893 :
イラネ

894 :
objectpascal

895 :
Cの機能が欲しいならC使えばいいだけじゃん

896 :
だよね
頭おかしいわ

897 :
低レベルのキーフックで入力を改変したいのですが出来ません
http://mrxray.on.coocan.jp/Delphi/plSamples/250_SystemKeyHook.htm#03
CallNextHookExのwpar値を改変すれば入力されるキーが改変されるというのを見かけたのですが、どう改変すればいいのでしょうか?
wparが仮想キーコードだからそこを改変すれば入力も改変できる、というのも見かけたのでwparをいじってみたのですが変わりませんでした


898 :
ウィルスはだめです

899 :
lParamじゃねーの?

900 :
D6 です
Integer を 2進数文字列に変換するのに
http://delfusa.main.jp/delfusafloor/technic/technic/099_IntToBin.html
function IntToBin(x:Integer) : String;
var
i : Integer;
const
nbyte: Integer = 4;
{上:Integerは符号付き32bitなので4byte}
begin
Result := StringOfChar(' ', (nbyte*10-1)); {←長さ10の文字列がnbyte個}
for i:=nbyte*8 downto 1 do begin
if ((x And 1) = 1) then Result[i+((i-1) shr 2)] := '1'
else Result[i+((i-1) shr 2)] := '0';
x := x shr 1;
end;
end;
を参照しているのですが、戻り値をスペース無しで行うにはどう変更すれば良いのでしょうか?
0000 0000 0000 0000 0000 0000 0000 0001
 ↓単純にこういう余分なスペースが入らないのが希望
00000000000000000000000000000001
StringOfChar(' ', (nbyte*10-1)); char($20) を39個並べて0 1 を埋めているのだろうとは感じるのですが
なぜ4ビット分ごとにスペースで間が開くのかわかりません orz
今は for 文でスペースを抜いています

901 :
((i-1) shr 2)

902 :2012/10/31
>>901
原理はまだ分からないけど
Result := StringOfChar(chr($20), (nbyte*8)); ← 32-bit 幅にして
if ((x And 1) = 1) then Result[ia] := '1' else Result[ia] := '0';
で余分なスペースが消えました。
ありがとう
TOP カテ一覧 スレ一覧 2ch元 削除依頼
***Javaのオススメ入門書*** 『創るJava』 3.0 (563)
【会津】パソコン甲子園2004【若松】 (779)
【注意】STLの落とし穴【危険】 (918)
D言語 Part30 (551)
小学生プログラマだけど質問ある (236)
Borland Developer Studio 2006 No.13 (268)
--log9.info------------------
☆Berryz工房のブログとツイッターを温かく見守るスレ☆Season559 (482)
来週発売の「週刊プレイボーイ」の表紙グラビアモーニング娘がブサイク軍団すぎるwwwwwwwwwwwwwwwww2 (658)
勝パラ〜読者欄〜その282 (279)
【モーニング娘。】東北の星☆石田亜佑美ちゃんを家族総出で応援するスレ Part.60【10期メンバー】 (344)
ハロメンが選んだハロプロ歌唱力1位鈴木愛理!2位菅谷梨沙子!3位田中れいな (876)
やっぱり☆ごっちんの笑顔が最高!2933 (410)
街から消えたもの (252)
【お試し●を貰おう】ニダーランやろうぜ【規制されても快適2ch生活】 (867)
10期メンバー西遊記【動画】のお知らせ (236)
ノリo‘ο’) 田辺奈菜美ちゃん本スレPart73【祝!グラビアデビュー】 (981)
もしかして亀井絵里ってハロプロで一番可愛い?734 (263)
おまえらいい加減石川離れしろよPART168 (745)
【2周年記念】スマイレージ焼肉事件を語ろう! (571)
エロ漫画家の歴代ベスト5を決めるとしたら (267)
東京女子流* Part675 (880)
女生主ってけしからんな その1053 (975)
--log55.com------------------
【WF&S】Mount&Blade 128馬力【Warband】
Civilization6 (Civ6) Vol.95
【LoL】League of Legends ARAMスレ Part75
The Elder Scrolls V: SKYRIM その562
【アトリエ】ガスト PC総合 8【ブルリフ】
【EU4】 Europa Universalis IV Part87
【HoI4】第111次 Hearts of Iron 4【Paradox】
【ATS】 トラックゲー総合スレ Part82 【ETS2】