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


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

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



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

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

<過去スレ>
DelWiki避難所(Delphi 関連の過去スレッド)
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


433 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 00:44:16 ]
StringReplaceのWideString版ってありますか?

434 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 08:36:38 ]
>>421
Button1.Click;

435 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 09:33:40 ]
>>433
AnsiStringReplaceのことか?

436 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 14:31:08 ]
Memo1.Linesのそれぞれの行の文字数(全角文字は二文字と数える)を取得するにはどうすればいいですか?
-------
最初
12345
あほ
apple
-------
ならメモ1の最初の行文字数=4
二行目=5
三行目=4
四行目=5
といった感じです!

437 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 14:34:12 ]
>>436
普通にLength()でいいじゃん。

438 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 14:36:57 ]
length

439 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 14:37:01 ]
そんなコマンドがあったのか!ありがとうございます

440 名前:431 mailto:sage [2008/08/23(土) 19:21:21 ]
>>431の問題ってデフォですか、それともウチだけの不具合ですか
それだけでも教えてください

441 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 19:32:19 ]
>>435
それでも十分いけるんだけどいちいちWideString→Stringで置換→WideStringってやってるとなんか無駄っぽいので
WideStringのまま出来ないかなって思っただけです
TurboDelphiにWideStrUtilsってのがあったのでその中にある、
WideStringReplaceを使ってみたけどなんか不具合があるっぽくて正常に置換されなくて使えなかったんです
でもTntの関数使ったら出来ました
ありがとうございました



442 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 01:16:25 ]
>>440
カラムのドラッグによる位置変更で
データそのものの位置が変わっちゃったらえらい事になるでしょうよ

ListView_GetColumnOrderArray
ListView_SetColumnOrderArray

辺りで幸せになれるかもね

443 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 02:23:50 ]
TTrayIconを使用しているのですが、
TrayIconが表示されている状態でWindowsをシャットダウンすると、
「シェル通知アイコンが削除できません」
というエラーメッセージダイアログが発されて、正常にシャットダウンしません。
ダイアログを閉じるなりすれば、シャットダウンは進行するのですが。

アプリケーションでメッセージを補足して、WM_QUERYENDSESSIONを
受けたときに、TrayIconの表示をFalseにすれば何とかなるかと思ったのですが、
WM_QUERYENDSESSIONを受け取る以前に上記のエラーメッセージが
発されてしまっているようです。

対策をテストするにも、毎回Windowsをログアウトするなりしなければならないので、
非常に非効率的な事態に陥っています。

これらの問題をすでに解決済みの先哲がいらっしゃいましょうや。
なにとぞ愚人に叡智を授けて下されれば、この443、幸いに存じます。

444 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 05:30:02 ]
SDK32: 通知領域にアイコンが登録されないことがある
support.microsoft.com/default.aspx?scid=kb%3Bja%3B418138

445 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 05:45:16 ]
どうも、443っす。
結局のところ、自己解決したっす。
原因は、WM_QUERYENDSESSIONを補足しきれてなかったことみたいっす。
WM_QUERYENDSESSIONをちゃんと補足したときにTrayIconを非表示にするだけで何とかなったっす。
つまり、アプローチは間違って無かったっす。
汗顔のイタリーっす。板汚し、失礼したっす。
それじゃ、天上の調べをオリーブの枝に接ぐ作業に戻るっす。
チャオっす。

446 名前:431 mailto:sage [2008/08/24(日) 06:30:05 ]
>>442
ありがとうございました

447 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 14:13:11 ]
Excelで管理していたToDoのメモを使いやすくしたいと思い、
愛用のDelphiでDB化できないかと思っています。

可搬性を考え、Delphiの通常のアプリ同様インストールなしでDBを使いたいのですが、
なにかよいエンジンは何かないでしょうか?
手持ちの最新版は Delphi2006です。

448 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 15:21:06 ]
EmbeddedFirebirdとか
インタフェースはInterbaseそのままだからIBXとかも普通に使える。ただしDLLなので、動作時のカレントディレクトリに注意。

449 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 15:33:36 ]
プロパティを絶対に変更しないって前提なら
TTodoItem = class
published
にいろいろデータ溜め込んでTStream.WriteComponent, ReadComonentすればいいんだけど
リスク高すぎなんだよな。
ここら辺もうちょっと柔軟にXMLに対して読み書きしてくれるライブラリはないものか。

450 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 16:05:15 ]
>>447
SQLiteが一番手軽かと

451 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 16:15:53 ]
>>448-450
ありがとうございます。
Embedded Firebird(Interbase6互換)、Write(Read)Component、SQLite などですね。

あと、MyBaseも使えるようです。こちらが参考になりました。
Delphi@WCIMH
hp.vector.co.jp/authors/VA028375/delphi/db.html

SQLiteはビジュアルコンポーネントと連携できるのでしょうか?



452 名前:447=451 mailto:sage [2008/08/26(火) 16:28:25 ]
SQLiteのライブラリがいくつかありました。

Tim Anderson’s ITWriting - Tech writing blog ≫ A simple Delphi wrapper for Sqlite 3
www.itwriting.com/blog/a-simple-delphi-wrapper-for-sqlite-3

Aducom Software [Delphi SQLite Components]
www.aducom.com/sqlite/download.htm

18385 SQLite DbExpress driver
cc.codegear.com/Item.aspx?id=18385
Delphi8以降で使えない?

いくつか試してみます。ありがとうございました。

453 名前:322 mailto:sage [2008/08/26(火) 16:38:56 ]
>>369
遅レスですいません。

エンバカデロ日本に電話してみました。
直販はやってないとのことで、個人の場合は量販店やネットなどで買ってほしいとのことでした。

通販の値段はこちらを参考にすることにします。
ボーランド/Borland Borland Delphi 2007 for Win32 Professional R2 アップグレード版 価格比較 [coneco.net]
www.coneco.net/PriceList/1070922054/order/MONEY/

42000円前後でしょうか。
アップグレード割引期間内にアップグレードしておけばよかったと後悔してます。
2006の時は期間を延長したりしてくれてたのに・・・

454 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 19:34:14 ]
>>447
ToDo リスト程度なら、TcrientDataSet でも十分実用になると思います。

455 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 20:34:40 ]
つかDBいらねぇだろ。

456 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 20:55:00 ]
enterprise.watch.impress.co.jp/cda/software/2008/08/26/13696.html

>価格は、Delphi 2009、C++Builder 2009とも、
>Professional版が10万2900円、Enterprise版が25万2000円、Architect版が44万1000円。
>両製品のバンドルパッケージも用意されており、
>Professional版が13万4400円、Enterprise版が29万4000円、Architect版が50万4000円となっている。

どう考えても、高いよな。

457 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 20:56:48 ]
日本のPCゲーム業界みたいなことになってるな

458 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 21:13:14 ]
アカデミック無いのかな

459 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 21:16:02 ]
5年前にやっとけよといいたいがようやく標準でまともなUNICODEアプリが作れるようになったか。

 新版では、IDE、コンパイラ、フレームワーク、ランタイムがすべてUnicodeに対応し、
ANSIデータとUnicodeのシームレスな利用をサポートした。
また、新しいVCL(Visual Component Library)コンポーネントを搭載。
Office 2007から採用されたリボンをはじめとする、
新しいWindowsのルック&フィールに対応している。
さらに、RADテクノロジーを用いた多層データベースアプリケーションアーキテクチャ
「DataSnap」により、コンポーネントベースのデータベースアプリケーション開発を行えるとのこと。

 これらに加えてDelphiでは、ジェネリックスや無名メソッドなど、
Delphiが持つ言語機能を強化し、開発効率の向上を実現。
一方のC++Buildeでは、新しい言語標準「C++0x」などもサポートしたとしている。

460 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 21:17:34 ]
オッチャスレ池

461 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 21:28:23 ]
>>460
ここですか?><
food8.2ch.net/test/read.cgi/pot/1077358365/



462 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 03:54:49 ]
どんどん高くなっていくなぁ

463 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 06:16:53 ]
>>459
これは欲しい。
次のバージョンアップが待ち遠しいぜ。

464 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 08:01:15 ]
オッチャスレみていない俺のために張っておく

新規購入価格
Delphi 2009 Professional  ¥98,000  (税込:¥102,900)
Delphi 2009 Enterprise  ¥240,000  (税込:¥252,000)
Delphi 2009 Architect  ¥420,000  (税込:¥441,000)
C++Builder 2009 Professional  ¥98,000  (税込:¥102,900)
C++Builder 2009 Enterprise  ¥240,000  (税込:¥252,000)
C++Builder 2009 Architect  ¥420,000  (税込:¥441,000)
Delphi 2009 & C++Builder 2009 Bundle Professional  ¥128,000  (税込:¥134,400)
Delphi 2009 & C++Builder 2009 Bundle Enterprise  ¥280,000  (税込:¥294,000)
Delphi 2009 & C++Builder 2009 Bundle Architect  ¥480,000  (税込:¥504,000)
バージョンアップ価格
Delphi 2009 Professional  ¥46,000  (税込:¥48,300)
Delphi 2009 Enterprise  ¥160,000  (税込:¥168,000)
Delphi 2009 Architect  ¥280,000  (税込:¥294,000)
C++Builder 2009 Professional  ¥46,000  (税込:¥48,300)
C++Builder 2009 Enterprise  ¥160,000  (税込:¥168,000)
C++Builder 2009 Architect  ¥280,000  (税込:¥294,000)
Delphi 2009 & C++Builder 2009 Bundle Professional  ¥60,000  (税込:¥63,000)
Delphi 2009 & C++Builder 2009 Bundle Enterprise  ¥180,000  (税込:¥189,000)
Delphi 2009 & C++Builder 2009 Bundle Architect  ¥320,000  (税込:¥336,000)

465 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 08:40:21 ]
高すぎる

466 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 10:40:51 ]
Vistaがこけたおかげで、Delphi7が今でも現役だぜぇ。

467 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 10:59:26 ]
割れ厨急増ですねわかります

468 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 11:03:18 ]
>>466うんうん
助かるよねぇ
ってか2006買ったが7使ってる

469 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 15:17:18 ]
>>466
というか製品としても現役じゃないか、Del7とCBuilder6

470 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 16:49:25 ]
2007の拡張に慣れたらもう戻れない。

471 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 17:06:21 ]
>>470
kwsk



472 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 17:08:09 ]
以前買った「Delphi DB&Webプログラミング」を読んでいるのですが
DB初心者にすごくわかりやすくてよい本ですね。

ところで、Delphi7時代の本のせいか、いくつか用語かツールが変わっています。
例えば、SQLエクスプローラー相当はBDS2006時代では何にあたるんでしょうか?

473 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 21:13:03 ]
BDS2006はもう誰も使ってないんじゃないかな・・

474 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 21:19:07 ]
いや、俺使いまくってるけどw

475 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 00:05:29 ]
www.geocities.jp/teamhasebe/prgrming/delphi/tips/dupignre.htm
これを利用して多重起動させないようにしようとしてるんですが
新しい起動パラメータでリスタートさせるにはどうしたらいいでしょうか?

476 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 00:32:16 ]
起動させるためのexeを作る

477 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 02:30:28 ]
最初のexe起動。
次のexeをパラメータ付きで起動。
すでに起動済みならパラメータを最初のexeへ渡して自分は終了する。
タイミングによっては難しいかな。
最初のexeを終了させる方がいいかも。 いろいろ試して。

478 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 02:35:53 ]
>>476>>477
やっぱりそうゆうやり方しか無いんですかね。
やってみます。有難うございました。


479 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 05:23:51 ]
>>475
自分でExe側をコーディングしているのなら、起動パラメータを弄るのではなく、
多重起動した場合、前のを落として
起動パラメータによって変更されるパラメータを変更するだけではないのかな?

480 名前:475 mailto:sage [2008/08/28(木) 12:49:11 ]
>>479
すいません。
前のを落とす方法がわかりません。

481 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 14:22:09 ]
mutexで排他制御をして
すでに起動していたらWM_COPYDATAでパラメータを丸投げして
新しい方が自爆して
すでに起動している方がパラメータを受け取ってリスタートする。

あるいは
WM_COPYDATAで死ねというコマンドを送って古い方を終了させて
新しい方がそのままパラメータを処理する。

前者の方が初期化を省ける分軽くなる可能性はある。
後者の方が実装が楽になる可能性がある。



482 名前:475 mailto:sage [2008/08/28(木) 14:26:22 ]
いい機会だからWM勉強してみます。
みなさん有難うございましたm(_ _)m

483 名前:デフォルトの名無しさん [2008/08/28(木) 14:50:53 ]
TWebBrowserにhtmlでフォームを表示してるんですが
フォームのtextarea内で改行出来ません
ie・fxでは正常に改行できます

484 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 15:46:53 ]
UIWebBrowserとか使っとけ

485 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 16:33:06 ]
>>475
DDEを使って、既に起動している方に終了命令を送るかな

後から起動した方が、パラメータを既に起動している方に送って、
すぐに終了ってのはよくあるけど

486 名前:485 mailto:sage [2008/08/28(木) 16:59:49 ]
>>475 DDEを使うとこんな感じ

※同じプログラム内に送受信を書きます

【メッセージ受信】
1. Systemパレットから DdeServerConv をフォームに置く
2. DdeServerConv の Name プロパティを "AAA" とかにする ← 後でトピック名に使われる
3. DdeServerConv の OnExecuteMacro イベントに受け取ったときの記述をする 例) Caption := Msg.Text;

【メッセージ送信】
1. uses 節に DDEMan 等(Formsも?)を追加
2. DdeClientConv を使って送信項目を書く↓

// アプリケーションが HogeHoge.exe で、トピック名が AAA の場合
SendStr = 'Tojiro-Goma'; ←送信するメッセージ
with TDdeClientConv.Create(Application) do begin
    if SetLink('HogeHoge', 'AAA') then begin
        ExecuteMacro(PChar(SendStr), False);
        CloseLink;
    end;
    Free;
end;


487 名前:475 mailto:sage [2008/08/28(木) 17:02:44 ]
>>485
今回は>>481さんの前者の方で無事成功しました。
DDEは別のところで使えそうなので参考にさせていただきます。
有難うございました。

488 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 22:11:06 ]
文字列'ABCD'があって、その文字列に1文字置きに'#'を挿入したいのですがどのようにすればいいでしょうか?

こんな感じです。
A#B#C#D

よろしくお願いします。

489 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 22:13:35 ]
insert

490 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 23:01:40 ]
Insertとforループでどうにかできました
ありがとうございました

491 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 00:07:10 ]
二重ループの中で中側をブレークしてそのまま外をコンティニューするにはどうしたらいいで初夏?
取り敢えずフラグ立ててみたのですがこれしかないでしょうか?

for i:=0 to Files.Count-1 do
begin
while .. do
begin
case xx of
mrOk :zzz;
mrIgnore:begin
Flag:=True;
Break;
end;
else exit;
end;
xxxx
end;
if Flag then Continue;
zzzzzz;
end;

mrIgnoreの時はxxxxもzzzzzzを処理せずfor i:=ループを続けたい



492 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 03:55:45 ]
速度は遅いかもしれんけど中のループはbreakではなくcontinueで全部終わらせば
外のループへ出れる

493 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 07:52:05 ]
goto使え

494 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 08:49:03 ]
>>481
そっちのほうがスマートだな

495 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 13:36:05 ]
bsNoneに設定したフォームで
Form1.WindowState := wsmaximized
を実行するとタスクバーの領域を浸食してしまうんだがお手軽に
システムメニューの最大化を実装する方法ってあります?

496 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 21:31:01 ]
こちらのサイトの方法を汎用化する方法はありませんでしょうか?

Delphi VCL継承コンポーネントをインストールなしで使う/Tips & Tricks
www.geocities.jp/asumaroyuumaro/program/tips/replacecompo.html

Edti1 := CloneComponent(Edit1);
みたいな方法で使いたいのですが・・・。

Hoge.Createすると、生成されずに、Createだけよばれてしまいます。

class helper使えばできる気もするのですが、class helperの同時に1つしか使えないという制限から困っています。

497 名前:496 mailto:sage [2008/08/29(金) 21:40:44 ]
Result := TComponent(Original.ClassType).Create(Owner);
でいける気がしました。
ちょっと試してみます。

498 名前:496 mailto:sage [2008/08/29(金) 21:51:58 ]
>>497は勘違いでした。orz
とりあえずいけた気がします。

function CloneComponent(Owner, Original: TComponent; ClassType: TComponentClass): TComponent;
var
  Stream: TMemoryStream;
begin
  Result := ClassType.Create(Owner);
  if Original is TWinControl then
    (Result as TWinControl).Parent := (Original as TWinControl).Parent;

  Stream := TMemoryStream.Create;
  try
    Stream.WriteComponent(Original);
    Original.Free;
    Stream.Position := 0;
    Stream.ReadComponent(Result);
  finally
    Stream.Free;
  end;
end;


使い方:
Panel1 := CloneComponent(Self, Panel1, TPanelEx) as TPanel;

問題点は、PanelならPanelの上におかれたものが全部開放されちゃうことです・・・
なんとかならないかなあ・・・

499 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 23:08:08 ]
再帰

500 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 15:57:40 ]
2つのアプリを同じPCで動かしているのですが、
競合する動作があるので片方が動作すつときはもう片方の動作を止めるために
WM_COPYDATAを送っています。
開発環境はxpで正常に動作しますが動作環境は98で
「このプログラムは不正な処理をおこなったので・・・」とゆうエラーが出ます。
このエラーは送信側が送信した瞬間に送信側で出ますが受信側は受信できています。
片方を落として動作させたり、片方の受信機能を外して送信した場合はエラーが出ません。
こちらの1と2をほぼそのまま利用しました。
homepage2.nifty.com/Mr_XRAY/Delphi/plSamples/650_SendText.htm

501 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 16:12:36 ]





502 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 16:57:25 ]
>競合する動作があるので片方が動作すつときはもう片方の動作を止めるために
そういうときには「ミューテックス」というモンを使うんですわ。
ttp://docs.codegear.com/docs/radstudio/radstudio2007/RS2007_helpupdates/HUpdate4/JA/html/delphivclwin32/SyncObjs_TMutex.html

503 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 17:50:03 ]
Win98上での開発・デバッグ環境を用意しろとしか

504 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 03:59:43 ]
短い文字列型でやってみるとか。 ShortStringね。

送信側のEdit1.Textが空のときも問題ないのかな。
PCharでキャストすると、コード領域にある#0のアドレス返すから、
その辺でおかしくなるのかも。 良く分かりません。



505 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 11:32:33 ]
>>498
TReaderのメソッドの中に、
コンポーネントの構成を再帰的に追っかけて読み込んでくれるメソッドがあった希ガス

このメソッド使うと、イベントも含めたコンポーネントのクローンを作成することも可能。


506 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 19:37:44 ]
>>502
そこはもう通り過ぎてるだろw

507 名前:496 mailto:sage [2008/08/31(日) 19:49:11 ]
>>498のコードは不完全でして、イベントハンドラ等のコピーができません。
それらをカバーするにはこちらが参考になるようです。

DelFusaBlog コンポーネントをインストールせずに使う方法
delfusa.blog65.fc2.com/blog-entry-40.html#more

TMemoryStreamでイベントハンドラを別のオブジェクトにコピーするには?
hpcgi1.nifty.com/MADIA/DelphiBBS/wwwlng.cgi?print+200703/07030070.txt

私はも書いてみようと思います。

508 名前:デフォルトの名無しさん [2008/09/01(月) 11:01:26 ]
DLLについて質問です。
-----------------------------------
PCOPRS1CONTROL_RET Open(int port_no)

port_no
使用するCOMポート番号(0 - 255)

出力
PCOPRS1CONTROL_RET_OK = 0
成功
PCOPRS1CONTROL_RET_ERR = 1
失敗
-----------------------------------
DLL内の上のような関数をテストしようと以下のようなコードを書いて実行すると関数はちゃんと走っているようなんですが矢印のところで毎回'privileged instruction at 0x0012f6d6'とエラーがでてしまいます。
これはDLLの呼び出し方が悪いのでしょうか?それとも他に原因があるのでしょうか?
----------------------------------
function Open(port_no: Integer): Integer; stdcall; external 'hogehoge.dll';

procedure TForm1.Button1Click(Sender: TObject);
var i: Integer;
begin
 i := Open(0);
 ShowMessage(IntToStr(i));
end; //←
----------------------------------

509 名前:デフォルトの名無しさん [2008/09/01(月) 11:49:53 ]
>>500
メッセージと一緒にデータも送ってるのか?
サンプルはCDSがローカル変数になってるのが良くないと思われるが


別のやりかたとしては、wmuser,wmapp,resisterwindowmessage()、ファイルマッピングオブジェクト、ミューテックスあたり


510 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 18:18:00 ]
>>500
CDS.lpData:=PChar(Edit1.Text); がダメじゃないの?

S := Edit1.Text;
CDS.lpData := PChar(S);
でどうだ。

>>508
呼び出し規約が合ってないかもね。
Cならデフォルトはcdecl。

511 名前:508 mailto:sage [2008/09/01(月) 20:51:26 ]
>>510
function Open(port_no: Integer): Integer; cdecl; external 'hogehoge.dll';
ズバリその通りで上記のようにしたらエラーが出なくなりました。
ありがとうございます!



512 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 09:37:22 ]
すいません、listviewのコラムの順番を変えたいんですけど
ListView_SetColumnOrderArray(ListView1.Handle,3,pi);
これって、3番目を1番目に移動するには pi に何を指定すれば良いんですか

あと、これは全6個のうち3番目を1番目に移動するという事ですか
SendMessage(ListView1.Handle,LVM_SETCOLUMNORDERARRAY,6,3)

なんか、具体的な使い方が解からないので、お願いします

513 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 11:17:29 ]
>>512
少しはググろうぜ
ListView_SetColumnOrderArrayはLVM_SETCOLUMNORDERARRAYのマクロだからどちらも同じと受け取っておk
piにはarray of Integerへのポインタを指定するっぽい
三つのカラムのうち一番右のカラムを一番左に持ってくるときは
pi: array[0..2] of Integer
pi[0] := 2;
pi[1] := 0;
pi[2] := 1;
でいいと思う
んで第二引数のとこには並べ替えるカラムの個数を指定するんだと思う
だからListView_SetColumnOrderArray(ListView1.Handle, Length(pi), @pi);でいいような悪寒

以上ググった結果から適当に推測した結果でした

514 名前:512 mailto:sage [2008/09/02(火) 18:02:04 ]
>>513
うまく出来ました
しかし、コラムの内容は位置番号と一致してるけど
それ以下の内容は位置番号と一致しないです
やっぱり一致させるのは無理なのかな
でも、使い方が解かったんで助かりました、ありがとうございますw

515 名前:デフォルトの名無しさん [2008/09/03(水) 13:41:01 ]
SpTBXLibを使っている方は、おられませんでしょうか?
Silverpoint Development
club.telepolis.com/silverpointdev/sptbxlib/index.htm

SpTBXLibは標準で便利なドッカブルパネルがあるのですが、
いくつものドッカブルパネルを上に載せて設計時にGUIデザインすると、
画面が狭くなるためフレームを使って分離できないかと考えています。

しかし、TSpTBXMultiDock に載せた TSpTBXDockablePanel 上に
他の出作ったTFrameから継承したフレームを載せると、
載せたフレームが真っ黒になってしまいます orz

いままでSpTBXLib以外でのフレームでこのようなことはなかった気がします。
何か解決方法はないものでしょうか?
SpTBXLib 2.2です。OSは、Vista SP1、XP SP3で確認しました。

516 名前:515 mailto:sage [2008/09/03(水) 14:23:56 ]
どうやら、TSpTBXDockablePanel以外にも TSpTBXPanel 上にFrameを載せた場合にも起こるです。

上に載せたフレームの
ParentColor := True でも無効な様子で、
Color := clNone から、Color := clBtnFaceにしたところ、通常のように表示されました。
しかし、残念ながらフレーム上では SpTBXLib の Theme設定が効きません。
他の部分がTheme対応なので不恰好になってしまいます。

VCLのソースを覗いてみてわかったのですが、
TXPManifest を載せて ParentBackground を有効にさせると、
設計時はダメですが、実行時は一応、SpTBXLibのThemeが効いてくれます。
しかし、画面リサイズ時などで画面のフレームの描画が崩れることが多々あります。

バグっぽい仕様な気がしてきました。(もしくはFrameに対応してない)
ので公式サイトのリンク先のニュースグループで聞いてくることにします。
もし何かわかりましたら、こちらでも報告いたします。

517 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 15:25:20 ]
AVGがDelphi7で生成したexeをウィルス扱いしやがったぜというお話
www.delphipages.com/threads/thread.cfm?ID=199695&G=199691&SAR=TRUE

I have the new AVG 8 with Delphi 7 Pro
With AVG fully updated.

Create a new Delphi Project and add nothing and
no controls and try and run. AVG throws a false positive

Downloader.Banload.ZKA

And the exe cannot be created.
Add one piece of code or one simple component and
no problem and no warnings.

518 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 16:11:31 ]
Avast!もDelphiで生成したwin32コンソールアプリをたまに誤認するよ

519 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 16:28:11 ]
ICSというコンポーネントをインストールしたんですが、いざ使おうとすると
「ユニット名〜が解決できません」と出て使えないのです。
何か他に特別なことがいるのでしょうか?
インストールするのにに参照したサイトはここです。
mrxray.on.coocan.jp/Delphi/CompoInstall/index.htm
verは2007です

ICS
www.overbyte.be/eng/products/ics.html

520 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 17:59:24 ]
これIndyとどう違うの?

521 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 18:05:38 ]
It is yet another internet component.



522 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 18:08:36 ]
日本語でおk

523 名前:519 mailto:sage [2008/09/03(水) 18:40:06 ]
なんだか色々と弄ってたらどうにか使えるようになりました!
お騒がせしました

524 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 18:44:03 ]
.cbkってファイルがいつのまにかできていたのですが・・・?
これは一体どのようなファイル?
なのでしょう

HogeFrameUnit.dfm.cbk
というような

ファイルでした

環境:BDS2006

525 名前:デフォルトの名無しさん [2008/09/03(水) 20:05:26 ]
google ブラウザのせいでChromeがOxygeneに名前変わっててワロタ

RemObjects Software: Oxygene 3.0
www.remobjects.com/product/?id={DC0A9947-5FED-4D34-8CC8-F2DCFA87A1FE}

526 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 20:09:20 ]
質問させてください<(_ _)>

Delphiのボタンの色を変える方法ってありますでしょうか??
Bitボタンの文字の色を変えることはできるんですが
ボタン表面自体の色を変えたいです。
imageなどで画像貼り付けも試してみましたが
ボタン全体に被さってしまい、立体感がなくなってしまいます。
どなたかいい方法ご存知の方おられましたらぜひご教授ください。

527 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 20:24:03 ]
>>526
ボタンにピッタリサイズのimageを作ればいいんじゃないかな

528 名前:526 mailto:sage [2008/09/03(水) 20:45:28 ]
>>527
全体に合わせてしまうと立体感がなくなってしまうし
表面だけに会わせると、周りの色との違いがでてしまいます。
立体感含むボタンそのものの画像を作るしかないんでしょうか?
それだと大きさによって変わるからたいへんですね^^;

529 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 21:20:26 ]
>>528
WM_ERASEBKGNDを捕まえて適当に塗る

530 名前:デフォルトの名無しさん [2008/09/03(水) 21:29:20 ]
>>528
ちょっと大きいPanelに乗せれば立体的に

531 名前:526 mailto:sage [2008/09/03(水) 21:41:50 ]
>>529、530
それは実行時にボタンを押したときに
ちゃんと凹みますか??



532 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 21:44:19 ]
やってみればいいじゃない

533 名前:デフォルトの名無しさん [2008/09/03(水) 22:11:47 ]
>>526
TButtonの色変えは、かなーり昔からのFAQくさいw

色変更が可能なボタン
rakasaka.fc2web.com/delphi/odbtn.html






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

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

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