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

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
このスレッドはBorland(ボーランド)のDelphi(デルファイ)について、
他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を
勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが
お礼はDelphiの布教と初心者の救済をお願いします。

<前スレ>
くだすれDelphi(超初心者用)その36
http://pc8.2ch.net/test/read.cgi/tech/1159485364/

<過去スレ>
http://delwiki.info/?Delphi+%B4%D8%CF%A2%A4%CE%B2%E1%B5%EE%A5%B9%A5%EC%A5%C3%A5%C9 (上のDelWiki避難所内)
または>>2-10あたりにある過去スレURL

<関連スレ>
※Delphiに関係してる雑談および関係してない雑談については以下でどうぞ
バカボンのDelphi不買・販促・その他談話室その29
http://pc8.2ch.net/test/read.cgi/tech/1153227982/

<その他>
BorlandHomePage
http://www.borland.com/jp/
DelWiki避難所
http://delwiki.info/
BDN(BorlandDeveloperNetwork)
http://bdn.borland.com/jp/delphi

過去スレは>>2-10あたりのどこかに
2デフォルトの名無しさん:2006/12/08(金) 16:05:57
3デフォルトの名無しさん:2006/12/08(金) 16:06:27
4デフォルトの名無しさん:2006/12/08(金) 16:06:59
5デフォルトの名無しさん:2006/12/08(金) 16:08:06
スレ番変えるの忘れてたごめん

<前スレ>
くだすれDelphi(超初心者用)その37
http://pc8.2ch.net/test/read.cgi/tech/1162458229/
6デフォルトの名無しさん:2006/12/08(金) 16:17:34
> スレ番変えるの忘れてたごめん
どんまい。
7デフォルトの名無しさん:2006/12/08(金) 17:30:19
どどんまい
8デフォルトの名無しさん:2006/12/08(金) 17:33:27
どるふぁい
9デフォルトの名無しさん:2006/12/08(金) 18:49:40
D7付属のクイックレポートで連続用紙への印刷って出来ないんでしょうか。
レポートの設定の用紙サイズに出てこないのですが。
10デフォルトの名無しさん:2006/12/08(金) 20:19:47
前スレでシャッフルネタやってたけど、順列の数字を入れた配列から
ランダムに値を一個選んで、そのたびにその値を配列から
削除していく方法があるけど駄目か?
11デフォルトの名無しさん:2006/12/08(金) 20:25:34
前スレ>>970

IDEっていうのは、統合開発環境のこと。ソフトを作るソフトのことです。
Delphiで言えば、Delphi自身ですね。

で、ターボの開発環境は、前スレにも出ていましたが、Delphi6に比べ、*重い*、*バグバグ*なわけです。
ただ、ターボの方が、新機能が追加されていたりします。

IDEから出力したソフト、つまり、あなたが、開発したソフト自身は、IDEとは、別です。
普通に動きます。キビキビ動きます。ターボでもDelphi6でもどちらも問題はありません。
12デフォルトの名無しさん:2006/12/08(金) 20:46:18
> Delphi6に比べ、*重い*、*バグバグ*なわけです。

Win2000 とVista みたいなものだな。
13ななしへたぐらま ◆XcB18Bks.Y :2006/12/08(金) 22:01:53
>>1お疲れさまでした.

>>11
統合開発環境といわれてもピンと来ない方も多そうですね.

その昔,Windowsが普及する前,MS-DOSというOSが使われていた時代は

・ソースコードを編集するソフト(テキストエディタ)と
・ソースコードを実行ファイルに変換するソフト(コンパイラ,リンカ)と
・実行ファイルをデバッグするソフト(デバッガ)は

それぞれ別のソフトであり,別々に実行する必要がありました.
これらをひとつのソフトで全部行えるようにしたのが統合開発環境です.
BASIC言語ではかなり昔から統合開発環境になっていましたが機能は今に比べると貧弱でした.
現在のような統合開発環境を実現したのがボーランドのターボパスカル,Delphiの先祖です.
14デフォルトの名無しさん:2006/12/08(金) 23:16:23
どどんまい使われてるの久しぶりに見た
15デフォルトの名無しさん:2006/12/08(金) 23:19:19
今、一部の界隈で大ブレイクしてるからな
16デフォルトの名無しさん:2006/12/08(金) 23:52:09
>>12
Vistaは、重いだけでなくバグバグなんすかw
きっついな
17デフォルトの名無しさん:2006/12/09(土) 00:45:14
> http://delwiki.info/?%A5%B3%A5%F3%A5%DD%A1%BC%A5%CD%A5%F3%A5%C8%2FToolbar2000
> rmklever.com というサイトでいくつかの追加テーマや、
> TBX 用追加コンポーネントが公開されています。Toolbar2000 や
> TBX の実力を確認したい人は、ページ左下にある EXE demo がおすすめ。

http://www.rmklever.com/delphitbx
の左下のEXE demoですが、ダウンロードできますか?
リンク切れしてるのかな・・・
18デフォルトの名無しさん:2006/12/09(土) 00:51:14
>>10
それじゃ遅い。配列から削除するのは後方の項目をコピーしなきゃならんので、
シャッフルで内容交換するより、遅い。10万項目あったら100倍以上
時間がかかるだろうよ。
19デフォルトの名無しさん:2006/12/09(土) 01:00:53
>>17
> ダウンロードできますか?
できませんね。

メールで聞いてみたらどうでしょう。
20デフォルトの名無しさん:2006/12/09(土) 01:11:31
>>1
スレ立て乙です。

>>11
> 普通に動きます。キビキビ動きます
D6はメモリマネージャが〜とか、要らないツッコミ入れる香具師が出る悪寒…。
21デフォルトの名無しさん:2006/12/09(土) 01:30:52
>>20
くあしく
22デフォルトの名無しさん:2006/12/09(土) 01:50:11
C#で以下のように記述するのを、Delphiでやりたいんですが・・・

Form1 f1 = new Form1();
f1.Show();

誰か教えてください><
23デフォルトの名無しさん:2006/12/09(土) 01:52:43
 Form1 := TForm1.Create(Self);
 Form1.Show;

てことじゃなくて?
24デフォルトの名無しさん:2006/12/09(土) 01:55:02
>>23
早速ありがとうございました。
そういうことでした。
タスクバーに表示されないのか・・・
25デフォルトの名無しさん:2006/12/09(土) 01:55:22
>>21
TurboはFastMMやFastCodeなんかの在野の成果物をライブラリに取り込んでいる。
D6でもライブラリを落とせば普通に使用できるけど。
26デフォルトの名無しさん:2006/12/09(土) 02:01:06
>>24
SetWindowLong で WS_EX_APPWINDOW 追加する
27デフォルトの名無しさん:2006/12/09(土) 02:14:36
>>19
問い合わせてみました。

BDS2006で、TBXインストール成功した方いませんか?
いまいちわかんない・・・。
2822:2006/12/09(土) 02:47:32
>>26 ありがとう

SetWindowLong(Application.Handle,GWL_EXSTYLE,WS_EX_APPWINDOW);
Form1 := TForm1.Create(Self);
Form1.Show();

表示されないよ(つд`
ぐぐったら表示されないようにする方法はでてくるんだけど・・・
29デフォルトの名無しさん:2006/12/09(土) 03:04:42
アプリケーションのメインフォームとは別のフォームも
タスクバーに表示したいってこと?
MS-Excelで複数のファイルを開いたときみたいに

だったらCreateParamsメソッドをオーバーライドしてそこでWS_EX_APPWINDOW;
procedure TForm1.CreateParams(var Params: TCreateParams);
begin
 inherited CreateParams(Params);
 Params.ExStyle := Params.ExStyle or WS_EX_APPWINDOW;
end;

ちなみにShowメソッドでフォーム表示する場合は
フォームのonCloseイベントで解放処理を入れないとメモリリークする
下の2行を忘れずに
Action := caFree;
Form1 := nil;


30デフォルトの名無しさん:2006/12/09(土) 03:13:21
BDS2006のC#Builderのように、Delphiでも、コード補完の一覧で、説明文を表示させることは出来ますか
31デフォルトの名無しさん:2006/12/09(土) 03:49:32
>>28
先にGetWindowLongを使って既に設定されているスタイルを取得するんだ
そうしないと他のスタイルが消えてしまうぜ
ちなみに渡すのはForm1.Handleだぜ
Applicationてのは見えないウインドウでありForm1のオーナーなんだ
3222:2006/12/09(土) 04:26:47
>>29>>31
ありがとう
Delphiの人は親切だな・・・

でもどうもうまくいきません。
おとなしく本買ってきます
33デフォルトの名無しさん:2006/12/09(土) 08:22:56
俺がD6PersonalからTrubo Exprolerに乗り換えた理由がひとつだけある。
[Ctrl]+[Shift]+↑↓で宣言とコードを移動できること。
34デフォルトの名無しさん:2006/12/09(土) 09:26:11
116 名前:デフォルトの名無しさん[sage] 投稿日:2006/11/04(土) 17:25:13
ttp://beeography.wordpress.com/2006/09/12/just-wanna-let-you-know/
ここに書いてある方法でTurbo Exprorerでも合法にコンポ入れれるよ

117 名前:デフォルトの名無しさん[sage] 投稿日:2006/11/04(土) 18:02:21
あとこれ。
dclusr経由のコンポーネントインストールが、ライセンス違反かどうかの話。
ttp://hpcgi1.nifty.com/MADIA/DelphiBBS/wwwlng.cgi?print+200609/06090014.txt
35デフォルトの名無しさん:2006/12/09(土) 12:55:43
>>33
D6Proは出来るけど、Personalは出来ないのか
36デフォルトの名無しさん:2006/12/09(土) 16:47:00
ほんとだ、出来た。こんなやり方もあったのか… D7 pro ですが
37デフォルトの名無しさん:2006/12/09(土) 17:07:00
>>34
追ってなかったんだが、それ、結局は白ということに落ちついてたんだ。へぇ。
38デフォルトの名無しさん:2006/12/09(土) 17:25:38
>>34
下っかわ、涙目で粘着してるやつ笑えるねw
39デフォルトの名無しさん:2006/12/09(土) 17:58:29
> 結局は白ということに
アップデートで抜け道消滅だけどね。
40デフォルトの名無しさん:2006/12/09(土) 20:39:14
ifのときだけインデントを2文字じゃなくて3文字にするのは俺だけじゃないはず
つまり:
if hoge then
hoge;
じゃなくて:
if hoge then
hoge;
41デフォルトの名無しさん:2006/12/09(土) 20:39:48
インデント修正

ifのときだけインデントを2文字じゃなくて3文字にするのは俺だけじゃないはず
つまり:
if hoge then
  hoge;
じゃなくて:
if hoge then
   hoge;
42デフォルトの名無しさん:2006/12/09(土) 20:41:57
そういうの後で手入れる時うぜーんだよ
43デフォルトの名無しさん:2006/12/09(土) 21:06:29
今はじめてプログラム組んでるんですけど変数をテキストに保存して次回起動時に呼び出すというものができません。
ヒントをください。

type
xxx = record
a: array[1..3] of Integer;
b: array[1..3] of Integer;
c: array[1..3] of Integer;
end;
var
  yyy:xxx;
zzz:TextFile;
m: array[1..3] of Integer;
n: array[1..3] of Integer;
o: array[1..3] of Integer;

a[1...3]はm[1..3]と同値をとらせる
同様に、bはn、cはoと対応させる
保存時に対応する変数をレコード変数にいれて保存し
次回起動時にテキストから呼び出した値を適切な変数に代入

というのを、プログラムが閉じるときかなにかに自動で保存して呼び出したいのです。
レコードをつかわずに簡単な方法とかこうすれば軽くなるとかいうのもあれば教えてほしいです。
釣りかと思う人もいるかもしれませんけど、本当に困ってます。
44デフォルトの名無しさん:2006/12/09(土) 21:26:49
TStringListじゃダメなの?
savetofileとloadtofileを使えば簡単に
ファイルに読み書きできるぞ
45デフォルトの名無しさん:2006/12/09(土) 21:42:18
>>44
ぐぐってみましたが例文が見つかりません。
良ければ使い方を例文でおしえてくれませんか?
46デフォルトの名無しさん:2006/12/09(土) 21:45:18
あるいは、TRegIniFileとか。
47デフォルトの名無しさん:2006/12/09(土) 21:58:16
Wikiの「米 Borland の Delphi 6 Personal の使用者登録ページ」ってところがリンク切れになってるようですが、
今はどこを見ればいいのでしょうか?
48デフォルトの名無しさん:2006/12/09(土) 22:05:55
>>45
どの部分がわからないのか。
・起動時と終了時に処理させる方法。
・変数の中身をファイルに保存する方法。
・Integer を文字列にする方法。
49デフォルトの名無しさん:2006/12/09(土) 22:13:01
>>48
まず、保存したい変数がintgerなのでInttoStrにするまではわかるんですけど
それを狙った行に保存する方法がわからないのと

起動時に処理はメインフォームのonCreateで手続きすればいいのはわかりますが
終了時に関してはわかりません。

たびたびすみません
50デフォルトの名無しさん:2006/12/09(土) 22:37:02
>>47
Wiki を直しておきました。
51デフォルトの名無しさん:2006/12/09(土) 22:45:41
>>48
起動時にiniファイルがないまま起動したらエラーがでました。
エラーを出さずにiniファイルを作成し、仮にiniファイルがあるばあいは上書きしない方法がありましたらおしえてください。
52デフォルトの名無しさん:2006/12/10(日) 00:20:45
Turbo Delphi Explorer使ってるんですが、コードのところで右クリックすると、
『オブジェクト参照がオブジェクトインスタンスに設定されていません。』と出て
右クリックメニューが使えないのですが、これはバグですか?
53デフォルトの名無しさん:2006/12/10(日) 00:30:31
はい。
54デフォルトの名無しさん:2006/12/10(日) 00:33:36
D7Ent版ですがIDEを終了させると読み込みエラーが延々と出るんですが同じような症状の人居ます?

55デフォルトの名無しさん:2006/12/10(日) 00:55:40
あんたが追加したコンポーネントがバグってるんだろ。
56デフォルトの名無しさん:2006/12/10(日) 02:42:06
設計時ではなく実行時にイベントハンドラを動的に割り当てたいのですが、
どうすればいいのでしょう。
57デフォルトの名無しさん:2006/12/10(日) 02:50:38
button2.onclick:=button1click;
58デフォルトの名無しさん:2006/12/10(日) 02:55:12
実行中にコンポーネントのプロパティを設計時に設定した値に戻すにはどうしたらよいのでしょうか?
59デフォルトの名無しさん:2006/12/10(日) 02:57:12
>>57
できました。
ありがとうございます。
60デフォルトの名無しさん:2006/12/10(日) 03:01:32
既にあるコンポーネントのプロパティを変えるんじゃなくて
既にあるコンポーネントは消して同じコンポーネントを作り直せ
61デフォルトの名無しさん:2006/12/10(日) 03:06:55
で、どうやって設計時の値を取得するの?
62デフォルトの名無しさん:2006/12/10(日) 03:08:45
設計時なら決めうちだろうが
63デフォルトの名無しさん:2006/12/10(日) 04:49:46
決めうちならプロパティーをセットするのも簡単だわな。
64デフォルトの名無しさん:2006/12/10(日) 06:13:28
TControlを継承しているTWinControlにはなぜOnDblClickが無いのですか。
TControl、TWinControl、OnDblClickに限ったことではないのですが
TTabSheetでダブルクリックイベントを使いたいと思って
ヘルプで上位コンポーネントをたどって行ったところ
TControlではOnDblClickがあるのに、それより下位のコンポーネントでは
OnDblClickが無かったので不思議に思いました。
65デフォルトの名無しさん:2006/12/10(日) 07:21:37
別にTControlにしかないわけではなく、きちんと下位クラスにも継承されてる。
プロテクトメンバだからオーバーライドして可視性を変更しない限り外から見えないだけ。
ヘルプに書いてないのは、上位クラスから変化がなければ何も書かないのが習わしだから。
FreeがTObjectのところにしか載ってないのと同じ。

ただし自分で既存のクラスを継承してOnDblClickをpublicやpublishにするなら、
プロパティの可視性以外に、ControlStyleを適切に設定するなど、
その処理をサポートするためのコードを自分で追加しないといけない。
66デフォルトの名無しさん:2006/12/10(日) 11:30:14
>>39
リンク先をよく読めば分かるけどアップデートしてもコンポ追加できるよ
67デフォルトの名無しさん:2006/12/10(日) 11:47:58
>>66
でも今度は不正行為になるんじゃないの。
68デフォルトの名無しさん:2006/12/10(日) 12:19:24
>>49-51
も答えてください、お願いします。
69デフォルトの名無しさん:2006/12/10(日) 13:16:21
>>68
FileExists で判定するとか。
70デフォルトの名無しさん:2006/12/10(日) 13:19:05
>>65
ありがとうございます。
上位にあるものは無条件で下位でも使える、オブジェクトインスペクタでも可視になる、と思ってました。
71デフォルトの名無しさん:2006/12/10(日) 13:49:18
>>68
やっつけた間違いあったらだれか補完よろ

var
TempList: TStrings; Filename : string;
a: array of integer; i: integer; Max: Integer;

Filename := GetCurrentDir + '\test.txt';
//GetCurrentDir=実行中のプログラムのフォルダを表わす
//ファイルからの読み込み
TempList := TStringList.Create;
try
TempList.LoadFromFile(Filename);
if TempList.Count <> 0 then
begin
SetLength(a,TempList.Count);
for i:= 0 to TempList.Count - 1 do
begin
a[i] := StrToInt(TempList.Strings[i]);
end;
end;
finally
TempList.Free;
end;
72デフォルトの名無しさん:2006/12/10(日) 13:54:01
//ファイルへの保存
TempList := TStringList.Create;
try
for i:= 0 to Max -1 do //Maxは全変数の数を代入
begin
TempList.Add(IntToStr(a[i])); //挿入の場合はInsert(行番号(先頭は0),値)
end;
TempList.SaveToFile(FileName); //任意のファイル名にしたいならSaveDialogを使う
finally
TempList.Free;
end;

わからない関数などが出てきたら
反転させてF1押すとその関数のメソッドやプロパティ
場合によっては使いかたの凡例もみることができますよ

onCreatに対応するのは
onDestroy
ただこのイベントは通常メモリの開放などの後処理を記述するところ
ここにデータ保存処理を記述するのはお勧めしない
フォームの破棄時に呼び出されるので
ここでデータ保存処理に何らかのエラーが出ても
データは破棄されるのでやり直しが効かないよ
73デフォルトの名無しさん:2006/12/10(日) 13:58:07
DBGRIDで自動的に次の行が挿入されるのを禁止して挿入ボタンが押されたときだけ行追加したいんですが
どうすればいいですか。

74デフォルトの名無しさん:2006/12/10(日) 14:05:33
DataSet のBeforeInsertイベントで条件判定
75デフォルトの名無しさん:2006/12/10(日) 14:22:02
>>74
中止する場合はAbort;
76デフォルトの名無しさん:2006/12/10(日) 15:35:11
アプリケーションを起動して、その最中にロードされた内容をwriteprocessmemoryで書き換えながら起動しようとしてるのですが、
なんどやっても(sleepなどをしても)EacsessViolationのエラーが出てしまいます。
こういう事はもともとできないのでしょうか??
77デフォルトの名無しさん:2006/12/10(日) 15:57:24
>>69 >>71-72
ありがとうございます。
おかげでデータを保存するアプリが作れました。
78デフォルトの名無しさん:2006/12/10(日) 17:51:09
<vector>みたいのないの?
TListってやつ使ってるのか?
79デフォルトの名無しさん:2006/12/10(日) 18:01:00
もろに動的配列があるじゃん
80デフォルトの名無しさん:2006/12/10(日) 18:15:00
クラスのリストを作りたいとき
動的配列とTObjectListどちらがいいですか。
81デフォルトの名無しさん:2006/12/10(日) 18:24:11
要件次第だが、おれはTObjectList使うことが多い。
82デフォルトの名無しさん:2006/12/10(日) 18:35:21
クラスのリストならTClassListだろ。
83デフォルトの名無しさん:2006/12/10(日) 18:41:59
>>82
まあそりゃそうだ
84デフォルトの名無しさん:2006/12/10(日) 18:53:37
>82
>80の文意を考えればやりたいのはクラス"インスタンス"のリストの実現手法を
知りたいのではないか?ということでTObjectListで。
85デフォルトの名無しさん:2006/12/10(日) 20:28:53
タイマーと音量をいじるプログラムを組みたいんだけど
今の時間を取得する方法とパソコン自体の今の音量の変数をかえる方法を教えてください。

何時になったら音量を0にするとかそういうプログラムにする予定です。
86デフォルトの名無しさん:2006/12/10(日) 20:42:55
>>85
> 今の時間を取得する方法
now

> パソコン自体の今の音量
mixerSetControlDetails
87デフォルトの名無しさん:2006/12/10(日) 22:34:21
>>86
下の変数の使い方がよくわかりません。
見ればいいサイトとかありますか?

なければ例文で教えてください。
88デフォルトの名無しさん:2006/12/10(日) 22:35:34
89デフォルトの名無しさん:2006/12/10(日) 23:44:48
>>58
保存されている値なら、リソースに格納されている。
詳しく知りたいなら、Classes.pasを解読する。
保存されていない値は通常constructorで初期化されている。
>60と近いけど、値取得用のコンポーネントを動的に作れば良いと思う。

>>76
モジュール読み込み中に別スレッドから書き換えたいの?
90デフォルトの名無しさん:2006/12/11(月) 00:32:36
空のテキストファイルをカレントディレクトリに作成する方法を教えてください。
91デフォルトの名無しさん:2006/12/11(月) 00:36:14
92デフォルトの名無しさん:2006/12/11(月) 00:37:06
>>90
空のテキストファイルってのは、単なる0バイトのファイルと一緒。
93デフォルトの名無しさん:2006/12/11(月) 00:39:02
>>92
すみません、今回作りたかったのがテキストファイルなだけで、サイズが0のファイルの作り方がわからないんです。
94デフォルトの名無しさん:2006/12/11(月) 00:50:03
じゃあ、まあわかりやすいのやっとくと

uses
classes;

とかしておいて

var
sl : TStringList;
begin

sl := TStringList.create;
sl.savetofile(保存したいパス);
sl.free;

end;
95デフォルトの名無しさん:2006/12/11(月) 01:00:53
くだすれってどういう意味ですか?
96デフォルトの名無しさん:2006/12/11(月) 01:10:24
>>95みたいなくだらない質問にも耐えるスレ
97デフォルトの名無しさん:2006/12/11(月) 01:36:55
じゃあどうでもいい質問


var
 i: Integer;
begin
 i := 5;

ここの、 i := 5 という場面で、
 1. 新しくSizeOf(Integer)分のメモリの領域を得て、そこに 5 を配置する
 2. i のアドレスに、先程の領域をコピーする
 3. 1.で、 5 が置かれていたメモリを解放する
もしくは
 1. どこか使ってない、4バイトのレジスタに 5 を置く
 2. i のアドレスに、先程のレジスタをコピーする

こんな感じですか?

 DoSomething(i);

こう手続きが呼ばれたら、どのような処理をして、関数を実行するのでしょうか。
呼び出し規約とかで違いがありそうですが。
98デフォルトの名無しさん:2006/12/11(月) 01:44:25
>>97
君が書いている処理をする関数なら書いてあるとおりの処理をするだろう
99デフォルトの名無しさん:2006/12/11(月) 02:12:03
>>97
日本語でおk

まじで意味が分からん
そこまでの知識があるなら、ブレークポイントを置いてCPU窓開いてアセンブラコード見てみろよ
10058:2006/12/11(月) 02:15:58
>>60 >>89
ありがとうございます。
Classes.pasとにらめっこしながら考えたいと思います。
101デフォルトの名無しさん:2006/12/11(月) 04:14:27
>>97
> var
>  i: Integer;
> begin
>  i := 5
最適化とその後ろのコードによる.
レジスタに乗りっぱなしかも知れないし、そもそも削除されるかもしれないし、
どっかの即値になって消えるかもしれないし、どっかでレジスタから退避されるかもしれないし
そんなの分からんがな.

> DoSomething(i);
デフォルトは fastcall だから fastcall の呼び出し規約調べれよ.
102デフォルトの名無しさん:2006/12/11(月) 08:35:36
>>97 は i := 5 と DoSomething(i); がそれぞれどんな機械コードに展開されるか聞きたいってこと?
103デフォルトの名無しさん:2006/12/11(月) 10:21:37
Delphi 6 ProでTheme Managerを試してみたのですが、
メインメニューの項目を動的に変更すると、Theme Manager
適用前と同じ状態になります(選択項目が凹むクラシックスタイル?)。
いかにTheme Managerでもこれはどうしようもないのでしょうか。
10476:2006/12/11(月) 10:55:52
>>89
そうです。
読み込み中はできない物なのでしょうか?
105デフォルトの名無しさん:2006/12/11(月) 12:33:30
>>67
英語のみならず日本語も読めないの?
106デフォルトの名無しさん:2006/12/11(月) 13:33:18
Formの中とかで、

>Frame1 := TFrame1.Create(this);
>Frame2 := TFrame1.Create(this);

って2回やると、コンポーネント名称が衝突してエラーになるおね?
この場合、Frame1.Name = ''; とクリアしてやれば良いんですか?
107デフォルトの名無しさん:2006/12/11(月) 14:41:07
>>105
あたりまえだろwww
delphiなんか使うような奴だぞ?www
108デフォルトの名無しさん:2006/12/11(月) 16:08:41
>>106
そもそもその状況ではエラーにはならない。
Frame1はTFrame1型のインスタンス、
Frame2もTFrame1型のインスタンスとして扱われ、Frame1とは別のインスタンスとなっている。

いつも使っているフォームだって、implementationの上あたりでグローバル変数として宣言されてるのがわかると思う。
var
 Form1: TForm1;
こんな風に。

ちなみにこの変数Form1に値を代入しているのはプロジェクトソース中の
Application.CreateForm(TForm1, Form1); の部分。
(Delphi5ではプロジェクト(P)>ソース表示(V)で確認できるけど他のバージョンはわからん。.dprを直接見てちょ)
※あとthisじゃなくてSelfな。
109デフォルトの名無しさん:2006/12/11(月) 16:21:29
>>93
こんなのもあるよ。

var
  F: File;
begin
  AssignFile(F,'asdf.txt');
  Rewrite(F);
  CloseFile(F);
110デフォルトの名無しさん:2006/12/11(月) 16:25:40
>>108
実行してみれば分かるけどエラーになるよ
111デフォルトの名無しさん:2006/12/11(月) 16:26:55
>>110
俺はエラーにならんかったが…。まあDelphi5だしな。
112デフォルトの名無しさん:2006/12/11(月) 16:45:08
>>108
Self
├Frame1
└Frame1

所有構造がこうなるからSelfの中でFrame1がドッペルゲンガーと遭遇してあぼんする。
改名して別人に成りすませばおk。
113デフォルトの名無しさん:2006/12/11(月) 16:49:34
Delphianの好きなアニメを教えてください
114デフォルトの名無しさん:2006/12/11(月) 16:58:01
だが断る
115デフォルトの名無しさん:2006/12/11(月) 17:06:45
>>112

それってNameプロパティを直接書き換えるしか、回避方法無かったでしたっけ?

何か強引な気がして。

それと、Nameをプロパティを空文字なんかにしたら問題起きますか?
親の管理対象外になってメモリリークとか。
116デフォルトの名無しさん:2006/12/11(月) 20:20:40
ある文字列をCanvas.TextOutで描画する時に、
その文字列の横幅が合計何ピクセルあるのかを知りたいのですが、
調べる方法はありますか?
(例えば文字列が'abc'なら、aの左端からcの右端までで何ピクセルあるのかが知りたいです)

よろしくお願いします。
117デフォルトの名無しさん:2006/12/11(月) 20:34:26
>>116
Canvas.TextWidth('abc')
118116:2006/12/11(月) 20:37:13
>>117さん
ありがとうございますm(__)m
119デフォルトの名無しさん:2006/12/11(月) 22:27:15
質問です。
初期設定(定数)で、大量の配列データを記述する必要があります。

DATA[0]:= 'abc';
DATA[1]:= 'def';
DATA[2]:= 'ghi';

といった感じです。

この行数が多いとソースの可読性が悪くなるので、
この配列DATAを別のユニット(Unit2)に独立させ、
メイン(Unit1)から参照できるようにしたいのですが、やり方が分かりません。

Unit1(メイン)のuse節にUnit2を加えるとして、
Unit2にはどのように記述すればよいでしょうか。

よろしくお願いします。
120デフォルトの名無しさん:2006/12/11(月) 22:33:18
unit Unit2;

interface

var
gData:array of string;

implementation

initialization
setlength(gData,3)
gDATA[0]:= 'abc';
gDATA[1]:= 'def';
gDATA[2]:= 'ghi';

end.
121119:2006/12/11(月) 22:36:33
>>120
ありがとうございます!
122デフォルトの名無しさん:2006/12/11(月) 22:40:13
>>119
>>120の方法でも良いけど
データが大量にあるならいちいち書くのもめんどいし
データの総量が増えても対応できるように
データ本体をファイルに保管して
それを読み込んで配列に代入する関数or手続きを考えた方がよいかも…
123ななしへたぐらま ◆XcB18Bks.Y :2006/12/11(月) 22:45:51
>>71
> Filename := GetCurrentDir + '\test.txt';

実行ファイルのあるディレクトリとカレントディレクトリは同じとは限りません.
またカレントディレクトリがルートディレクトリの場合にGetCurrentDirは C:\ などと \ 付きで返してくるのでうまくいきません.

Filename := ExtractFilePath(Application.ExeName) + 'test.txt';

実行ファイルのフルパスを返すApplication.ExeNameと
フルパスからディレクトリを末尾の\付きで返すExtractFilePath関数を組み合わせることで
実行ファイルのディレクトリを取得しています.

なおコンソールアプリではApplication.ExeNameの代わりにParamStr(0)を使います.
(ウィンドウアプリでも使えます)
124デフォルトの名無しさん:2006/12/11(月) 23:28:21
>>104
知らない。
モジュールを読み込んで初期化が始まる前に、コードを書き換えたいとか、
そんなの?
なんだか大変そうですねぇ〜。
12576:2006/12/11(月) 23:28:55
>>124
そうですー
僕がんばります
126デフォルトの名無しさん:2006/12/12(火) 00:23:27
プロジェクトで使用しているコンポーネントや関数、手続きの一覧を出力してくれるツールはないですか?
127デフォルトの名無しさん:2006/12/12(火) 00:38:57
tdump.exe
128デフォルトの名無しさん:2006/12/12(火) 01:01:03
突然の質問ですみません。
TurboDelphiのインストールに必須な
「Microsoft XML Core Services (MSXML) v4.0 SP2」をインストールしようとすると、
エラーコード2755が返って来てインストールに失敗してしまいます。
解決法がないか誰か教えてもらえないでしょうか?

当方の環境はWindowsXP(SP2)です。
宜しくお願いします。
129デフォルトの名無しさん:2006/12/12(火) 03:30:43
キーボードで数字の1が押下された時ってVK_1ですよね?

動作確認済みソースのVK_UPをVK_1に書き換えただけでコンパイルできないのは何故でしょうか??
130デフォルトの名無しさん:2006/12/12(火) 05:00:30
>>129
Windows.pas で、VK_0〜VK_9、VK_A〜VK_Z が
定義されていないからではないかと思われ。
(D6の場合。他バージョンについては不明)

VK_1 のところを Ord('1') にすれば動くかも。
131129:2006/12/12(火) 05:26:28
>>130
ありがとうございます。
見事に動きました。
標準で定義されないって
需要少ないんですかね。
本当に助かりました。
感謝いたします
132デフォルトの名無しさん:2006/12/12(火) 06:29:03
このスレでDelphiはじめて3時間・・・
プログラム経験は、なし。すこし、以前、Delphiいじって1,2回ほど適当なプログラム作ったくらい。
まだまだ、みんなの語ってる話題が未知の宇宙のように思えます。
はぁ・・・道は、遠いな。
このHPが勉強になるとかあれば紹介お願いします。
133デフォルトの名無しさん:2006/12/12(火) 06:46:36
Seventh Delphi
134デフォルトの名無しさん:2006/12/12(火) 06:49:15
>>132
Delphiのソコソコの知識がついたら、次はWin32を勉強しよう。
そしてVCLのソースを解析。
135デフォルトの名無しさん:2006/12/12(火) 07:05:14
>>134
ラジャ
いまは、コンソールであれこれしてたほうが、文法覚えるのはいいってことで、
http://oto.chu.jp/kujira/text/delphi/zero/index.htm
なるとこをうろうろしてます。
とりあえず、これが済んだら、そこらへんに進んで見ようと思います。
136デフォルトの名無しさん:2006/12/12(火) 08:59:08
Windows.pasって編集して上書き保存しただけじゃ反映されないの?
137デフォルトの名無しさん:2006/12/12(火) 09:24:40
ヒント: .pas → .dcu
138デフォルトの名無しさん:2006/12/12(火) 10:19:40
>>135
あぁ、3時間か。てっきり3年かと思った。3時間でいきなり、
VCLのソース解析はむちゃだ。なんか、やっぱ、自分の作りたいソフト見っけて、
ソレ作りながら覚える方が俺的にはお勧め。そうしないと俺はモチベーションがもたん。

139デフォルトの名無しさん:2006/12/12(火) 10:21:57
>>137
dクス
そっかソースフォルダのはあくまでもソースで
システムには参加してなかったのね。勉強になりました
140デフォルトの名無しさん:2006/12/12(火) 10:35:39
俺が最初に作ったソフトは
フォルダにあるファイルを自動的に指定した場所に振り分けるってやつ
自分で作った奴だから好きなようにカスタマイズ出来るし今でも使ってる
141デフォルトの名無しさん:2006/12/12(火) 10:39:37
142デフォルトの名無しさん:2006/12/12(火) 11:26:20
>>113
まじかるぽかーん

>>132
Seventh Delphi
http://kakinotane.s7.xrea.com/index.html

flow of water: Delphi
http://wblue.web.infoseek.co.jp/delphi.htm
143デフォルトの名無しさん:2006/12/12(火) 12:32:03
TTabSheetでポップアップメニューを使いたいと思っているのですが
Bの場所ではできたのですが、タブの耳?(Aの部分)で
ポップアップメニューを出すにはどうすればよいでしょうか。

   ┏━┓
   ┃  ┃← A
 ┏┛  ┗━━━━━┓
 ┃            ┃
 ┃            ┃
 ┃            ┃← B
 ┃            ┃
 ┃            ┃
 ┗━━━━━━━━┛
144デフォルトの名無しさん:2006/12/12(火) 12:55:10
TPageControl.Popupメニューにポップアップメニューを割り当てる
145デフォルトの名無しさん:2006/12/12(火) 13:53:00
>>144
できました。
ありがとうございます。
146デフォルトの名無しさん:2006/12/12(火) 20:23:12
クラスとか継承とかオブジェクトとかの概念がいまいち理解できてないのですが、
たぶんコンポーネントとかは関係のないと思われるパスカルな単純な処理を関数にするには、
privateかpublicにprocedureじゃなくてfunctionで宣言すればいいのでしょうか?
147デフォルトの名無しさん:2006/12/12(火) 20:27:42
procedureは戻り値がない
functionは戻り値がある

private
 procedure hoge;
 function hage : boolean;
148デフォルトの名無しさん:2006/12/12(火) 20:34:08
なるほどそういう違いだったんですね。
助かりましたありがとうございます。
149デフォルトの名無しさん:2006/12/12(火) 20:45:14
TListBoxのアイテム毎ではなく、アイテム内の文字ごとに Fontを変えたいの…
できます?
150デフォルトの名無しさん:2006/12/12(火) 21:29:02
コンポーネントの登録とコンポーネントのインストールの違いがよくわからない…

あとBPL,DPK,DCU,DCPファイルもググったけどよく分からない…
誰かおおざっぱでいいので教えてもらえます?
151デフォルトの名無しさん:2006/12/12(火) 22:11:16
>>150
pas (ソース)-> コンパイル -> dcu(中間ファイル)
dpk (プロジェクト) -> コンパイル -> dcp(中間ファイル) -> bpl(実行形式。DLL相当)

> コンポーネントのインストール
設計時用のパッケージ -> コンパイルしてbpl 作成 -> IDE にインストールして使えるようにする。
152デフォルトの名無しさん:2006/12/12(火) 22:11:24
>>149
OwnerDrawにして自力で描写すればできる。
153デフォルトの名無しさん:2006/12/12(火) 22:14:30
>>149
つ OnDrawItem イベント
154デフォルトの名無しさん:2006/12/12(火) 22:22:08
>>150
> コンポーネントの登録

タイプライブラリの作成のこと?
ソースからActiveXなどを使えるように、宣言ユニットを作成。
155デフォルトの名無しさん:2006/12/12(火) 22:22:59
>>151
サンクスです。続けて質問で申し訳ないですが
ということはdcu,dcpは中間物であって、いらないっちゃいらないってことすね?
bplは実行形式(ダイナミックリンク)なのにIDEにインストールするの?
156デフォルトの名無しさん:2006/12/12(火) 22:23:55
>>154
いえ、ヘルプのコンポーネント作成の項に
「コンポーネントの登録」ってのが出てきてたので。
157デフォルトの名無しさん:2006/12/12(火) 22:32:26
>>151
> いらないっちゃいらないってことすね?

まあ基本的には。
ただしパッケージに他のパッケージを含める場合はdcp を使う必要があったような。

> bplは実行形式(ダイナミックリンク)なのにIDEにインストールするの?

起動時に全部読み込まれる。
IDEにプロパティを操作するエディタなどが作成される。

設計時パッケージは、コンポーネントをコードでCreate してプロパティを設定なら不要。
158デフォルトの名無しさん:2006/12/12(火) 22:38:16
dcu,dcpは条件次第だ。パッケージをDLLのLoadLibraryみたく、明示的リンクするなら
必要ないけど、暗黙的リンクなら必要になるとか。ちょびっとややこしい。
159デフォルトの名無しさん:2006/12/12(火) 22:42:47
なるほど。めちゃ参考になりました。
160デフォルトの名無しさん:2006/12/13(水) 01:00:25
>>126
tdump.exeは外部の関数・クラスだけだから、マップファイルがいいかも。
161デフォルトの名無しさん:2006/12/13(水) 06:29:47
>>142
Seventh Delphiのほうは、いまやってるとこと内容が同じようでした。
Flow Of Water Delphiは、GUIアプリとかのやつもあるので、BMしました。
ありがとー。
162132:2006/12/13(水) 06:42:59
http://oto.chu.jp/kujira/text/delphi/zero/index.htm
  ↑
ここの15番目まで完了したよ。

これ終わったら、Flow Of Water Delphiのやつやってみようと思う。
functionとかProcedureで使う、引数と変数の違いが分かりづらかったけど、
まあ、変数は、字のまんま、みんなが考えてる変数の通りで、
引数は、プログラムの本文で、プログラマーが指定して決める数って理解してていい?
たとえば、

function Sansuu(a:integer;b:integer):Integer;
begin
Result:=a+b;
Writeln(Result);
end;

begin
Sansuu(1,6);
Readln;
end.

見たいに、あとで関数を利用するときに、本文で、決められる数が引数ってことで。
最初、引数と変数ってドウ違うのか戸惑ってしまった・・・
163デフォルトの名無しさん:2006/12/13(水) 08:17:31
ひきすう
164デフォルトの名無しさん:2006/12/13(水) 10:17:39
Explorerから自作アプリへD&Dする方法は見つかったんですがその逆に
ListViewの項目を他のアプリへD&Dするのってどうやるんですか?
165デフォルトの名無しさん:2006/12/13(水) 10:24:27
そんなの相手先に依存するだろ
166デフォルトの名無しさん:2006/12/13(水) 10:25:29
これどっちがおかしいの?

procedure TForm1.Button1Click(Sender: TObject);
var
t: TDateTime;
v: Variant;
s: String;
begin
t := Now;
v := t;
s := DateTimeToStr(t);
ShowMessage(String(v)+sLineBreak+s);
end;

---------------------------
Project1
---------------------------
2006/12/13 10:21:12
2006/12/13 10:21:11
---------------------------
OK
---------------------------
167デフォルトの名無しさん:2006/12/13(水) 10:33:33
エスパー求む
168デフォルトの名無しさん:2006/12/13(水) 10:57:14
>>162
スコープを知るともう少し簡単に理解できるかも

それと引数には4種類あるから知っておくと良いよ(最初のうちは理解しなくてもOK)
値引数
変数引数
定数引数
デフォルト引数
169デフォルトの名無しさん:2006/12/13(水) 11:12:56
TListBoxで文字ごとにフォントを変える、ですが、DrawItem イベントで
TextWidth と TextOut をぐちゃっとコーディングして出来ました。サンキュス
170デフォルトの名無しさん:2006/12/13(水) 12:14:00
>>166
試してないけどバリアントで精度が変わるからかね?
TDateTimeは確か小数点だし。
171デフォルトの名無しさん:2006/12/14(木) 01:20:16
Rave ReportsってQuickReportと比べてどう?
機能とかバグとか作りやすさとか。
慣れればQuickReportより良いんなら使ってみようと思うんだけど。

172デフォルトの名無しさん:2006/12/14(木) 07:46:01
初心者以前のインストールの段階で引っ掛かってます。
http://bdn.borland.com/article/33580  ここに
1. Windowsのスタートメニューより[スタート|プログラム|Borland Delphi 6|使用許諾コードの取得]で、使用許諾コードの取得画面が表示されます。
とありますが、 |Borland Delphi 6| が見つかりません。
他にインストールする方法が有りますでしょうか?
173デフォルトの名無しさん:2006/12/14(木) 09:46:25
>>172
もれも初めて2,3日くらいの初心者だが、いちいち使用承諾とらないでも
普通に使えるから気にするな。キャンセルしたら、後で承諾をとるみたいなダイアログがでてOK
押したら、未承諾でも使える。
とりあえず、おなじくらいの時期にはじめたみたいだから、がんばろうぜ。
174デフォルトの名無しさん:2006/12/14(木) 11:06:07
>>172
インストール失敗してるんじゃないの?
175デフォルトの名無しさん:2006/12/14(木) 13:07:08
TImageListのWidth、Heightに収まるようにイメージ(bmp)を伸縮したいのですが
TImageListに設計時ではなく実行時にイメージを追加する場合、
イメージリストエディタの「そのまま」、「引き伸ばし」、「中央に置く」に相当する操作は
どこをいじればいいのでしょう。
176デフォルトの名無しさん:2006/12/14(木) 13:25:56
セットアップランチャ→ Delphi 6 →キャンセル にすると 
「キャンセルしますか」 と出て終了してしまいます。
セットアップランチャ→ Delphi 6 →次へ にするとキーがないので
インストールできません。
ProgramFiles内にdelphiフォルダは出来ていますが、これはセットアップランチャな気がします。
ネットで落とす前に書籍付属のCDでインストールしようとしたので、
残骸が邪魔をしてるのかも知れません。
アンインストールもできないのですが、手動で引っぺがして良い物でしょうか?
177デフォルトの名無しさん:2006/12/14(木) 13:28:27
OK。
レジストリも消すと良い。
HKEY_CURRENT_USER->Software->Borlandあたり。
178デフォルトの名無しさん:2006/12/14(木) 13:29:36
C++BuilderでのSubStringに当たるモノってDelphiにないの?
179デフォルトの名無しさん:2006/12/14(木) 13:29:46
> キーがないのでインストールできません。

これは何?インストール用のキーを持ってないの?
180デフォルトの名無しさん:2006/12/14(木) 13:31:04
>>178
Copy関数?
181デフォルトの名無しさん:2006/12/14(木) 13:36:48
> キーがないのでインストールできません。

インスト用のキーと
登録用でもらえるキーは別物だぞ?
182175:2006/12/14(木) 13:42:09
bmp.Canvas.StretchDraw( Types.Rect(0,0,ImageList1.Width, ImageList1.Height), bmp );
ImageList1.Add(bmp, nil);

でできました。
183デフォルトの名無しさん:2006/12/14(木) 13:48:00
>>182
解答つけなくて、ごめん。
184デフォルトの名無しさん:2006/12/14(木) 13:49:37
>>171
日本語対応に不安が。

メーカーはDelphiがUnicode化するまで
完全対応は無理と宣言しているし。
185デフォルトの名無しさん:2006/12/14(木) 17:57:37
>>184
そうですか。
何か良いレポートツール無いかなぁ。
みんな何使ってるの?

186デフォルトの名無しさん:2006/12/14(木) 18:37:34
インストールが成功してないの?
インスト用のキーはまとめサイトのやつで普通に使えるぞ。
ただ、使用承諾のキー(インストール後)をいれようとすると、サーバーにつながらないから
出来ない。
インストール用のキーは、普通に使えるから、どっかやり方間違ってるよ。
187デフォルトの名無しさん:2006/12/14(木) 19:59:33
>>185
LightReport。完全日本製
またはFastReport

188デフォルトの名無しさん:2006/12/14(木) 21:31:54
コンパネにあるキーボードのプロパティで設定できる
キーボードの長押しに対する一時的な制御って
どうすればいいのでしょ?
単純に
if key VK_* then 未処理ならスルー
としても
OS側がVK_*を未処理なのに全部引き受けちゃって
OSがフラグ見た時には処理済になってる感じで
結局コケちってるみたいで、それを何とかしたいのですが。
189デフォルトの名無しさん:2006/12/14(木) 23:27:06
良く解からんが、WM_KEYDOWN にリピートか否かの情報があるよ。
190デフォルトの名無しさん:2006/12/15(金) 00:10:23
Delphiのお勧めの書籍は何かありませんか?
191デフォルトの名無しさん:2006/12/15(金) 00:34:41
>>190
かなり古い本だが愛用してるやつらを一部紹介します。

ど素人向け
http://www.amazon.co.jp/exec/obidos/ASIN/4774104272/

手軽なリファレンスとして手放せない
http://www.amazon.co.jp/exec/obidos/ASIN/477410891X/

お金持ちならドウゾ
http://www.amazon.co.jp/exec/obidos/ASIN/4756130917/
http://www.amazon.co.jp/exec/obidos/ASIN/4844349147/

最近の本は知らん
もっといいのが出てるかも
192デフォルトの名無しさん:2006/12/15(金) 00:54:58
>>189
説明下手ですみません。
リピートという単語をど忘れしてしまってうまく表現できませんでした。
一時的にリピートを停止、あるいはインターバルを長くとるなどして
ちゃんとひとつの処理が終わってから次のキー入力を受け付ける、
みたいなことがやりたかったのでした。
WM_KEYDOWNを調べてみます。ありがとうございます。

193デフォルトの名無しさん:2006/12/15(金) 01:05:51
Turbo Delphiを使用しています。
ADODataSetのConnectionStringsプロパティのデータベースに接続するためのパスが絶対参照から相対参照にする方法はありますか?
ConnectionStringsプロパティのダイアログで相対参照にしようとしても、C:\Documents and Settings\ユーザー名\データベースのファイル
と言うように認識するらしくうまくいきません。
194デフォルトの名無しさん:2006/12/15(金) 02:32:16
Turbo Delphiをこれから 使おうとしてます 超初心者です ExplorerかProどちらを使ったほうが良いでしょうか? またこれから学習する人向けの書物とかございましたら 教えてください! お願いします! 
195デフォルトの名無しさん:2006/12/15(金) 02:33:14
quickreportのTQRDBTextってフィールドがnullの時はonPrintイベント発生しないんですか?
nullなら別の値を表示させようとしたら華麗にスルーされました。
196デフォルトの名無しさん:2006/12/15(金) 02:38:21
>>194
マルチやめれ
197デフォルトの名無しさん:2006/12/15(金) 03:35:07
これから Delphi 入門はちょとつらいような・・・
198デフォルトの名無しさん:2006/12/15(金) 04:05:49
>>194
超初心者ならExplorerなんじゃね?フツー
199デフォルトの名無しさん:2006/12/15(金) 04:26:15
直接指定。
200188=192:2006/12/15(金) 09:03:14
Win32APIヘルプのWM_KEYDOWN、keybd_eventや
message.pas、windows.pas、delphiヘルプのTWMKeyを見ても
理解が及ばずどう書けばいいのか見当がつきませんでしたorz

そこで、検索して見つけたコード

procedure TForm1.WMKeyDown(var message: TWMKeyDown);
begin
 if message.KeyData and $40000000 = 0 then inherited;
end;

をコンパイルすると
Illegal character in input file: ''
というErrorでコンパイルできず、行き詰ってしまいました。
たびたびすみませんが、お助けください
201デフォルトの名無しさん:2006/12/15(金) 14:17:19
不正な文字が入力ファイルにある。か、なんか、他の部分に変な文字追加してない?
うちではコンパイルとおるし。
202デフォルトの名無しさん:2006/12/15(金) 14:23:00
>>200
全角空白

ところでD5は全角空白を赤表示してくれるがD7はしてくれないので判らないんだよな。
どこで設定するんだろ。
203デフォルトの名無しさん:2006/12/15(金) 14:29:19
>>185
ttp://www.devexpress.com/のレポートツール使え
ここなら不具合あって、報告すれば、1ヶ月には、修正されるぐらいサービスはすばらしいし、
ソースコード見ても、明らかにプロの仕事だとわかるくらい安心できる。
204200:2006/12/15(金) 20:06:11
全角空白でしたorz
まったく疑いもしなかった原因で勉強になりました。
ありがとうございます
205デフォルトの名無しさん:2006/12/15(金) 21:49:08
Delphi6を使っているのですが、よく専ブラにあるような

記事のタイトル|レス数|最終読み込み|最終書き込み

みたいなリストボックス?でそのレス数などをクリックすればそれが昇順にならんだりするコントロールみたいのはどうやってつくればいいんですか?
206デフォルトの名無しさん:2006/12/15(金) 21:58:33
TListItem
207デフォルトの名無しさん:2006/12/15(金) 22:59:09
>>202
D7ってエディタオプションの不正な文字で認識してくれないの?

つか常に半角スペースを入力にIME設定すればいいと思うのは俺だけか?
208デフォルトの名無しさん:2006/12/15(金) 23:01:09
>>205
TListView
209デフォルトの名無しさん:2006/12/15(金) 23:09:36
>>207
デフォルトだとしてくれない。
さっき色々調べてようやくエディタのオプションで不正な文字の色が
文字色黒、背景白なんつー設定になってるのを発見した。
背景赤にして全角空白もめでたく赤表示になった。
210デフォルトの名無しさん:2006/12/15(金) 23:23:56
>>206,208
ありがとうございます。
211デフォルトの名無しさん:2006/12/15(金) 23:33:46
あれ、ClientDataSetのBOFとEOFってカレントレコードが最初のレコードか最後のレコードかを
判別するプロパティじゃないんですか???
ローカルデータセットで1000件ぐらいデータ作って、グリッド上にカレントレコード変更して、
BOFかEOFかチェックしてもなんかめちゃくちゃです。

誰かお願いします。Turboです。

212デフォルトの名無しさん:2006/12/15(金) 23:39:01
おさわがせしました。BOFの前、EOFの後ろにもう1個なんかあるっぽいですね。
213デフォルトの名無しさん:2006/12/16(土) 05:36:27
QuadrupleDの質問もここでいいですか?

WindowModeで使っていて、ユーザがフォームをリサイズしたときなどに、サイズを変更したい場合、
もう一度 WindowMode(ClientWidth, ClientHeight, []); と呼ぶだけではダメですか?
自分の環境だと、テクスチャの量に比例した時間、固まってしまったり、
一部のテクスチャが壊れてしまったり、画面にゴミがでます。
214デフォルトの名無しさん:2006/12/16(土) 05:48:16
超初心者ですけど、
TListViewとか使って、ソートは一種類のみでエクセル、Accsess出力なし 表計算機能なしの
DBソフトっぽいもの作りたいんですが、DB専用のコンポーネント使わないと無理ですか?
なんか、pro版じゃないとDBのコンポーネントは扱えないとかWEBで見たので、どうだか
気になってます。DBデータファイルはバイナリーじゃなく普通にテキスト形式のファイルで
扱おうと思ってます。まあ、まだ、あんま頭の中でアイディア固めてないのであやふやでもうしわけない
です。
215デフォルトの名無しさん:2006/12/16(土) 06:39:24
>>211
TClientDataSetがグリッドの位置なんてしるかよ。
RecNoみるなり、グリッドの相対位置を教えてくれるプロパティを見ろ。
216デフォルトの名無しさん:2006/12/16(土) 09:51:48
>>213
知らん
ゲ製で聞いてみたらどうか

【Delphi】 ゲームつくるぞ(゚Д゚)ゴルァ 2【Delphi】
http://pc8.2ch.net/test/read.cgi/gamedev/1097836469/
217デフォルトの名無しさん:2006/12/16(土) 12:10:43
>>214
TListView使ってできるなら必要ないんじゃないの。
218デフォルトの名無しさん:2006/12/16(土) 13:15:40
>>215
あほか。おまぇ。グリッドの位置なんて一言も書いてねぇよ。
219デフォルトの名無しさん:2006/12/16(土) 13:40:48
ListViewとTListViewの違いってなんですか?
220デフォルトの名無しさん:2006/12/16(土) 13:52:27
>>209
IDE のエディタの全角空白の件、こんな設定あるんですね。ちと便利になりました。
221デフォルトの名無しさん:2006/12/16(土) 18:14:50
>>219
ListViewはコンポーネント
コンポーネントを使わずにコード上で同じような処理をしたい時に
TListViewクラスを使う
T名前は基本的にクラスの名前
222デフォルトの名無しさん:2006/12/16(土) 18:53:24
>>221
レスどうもありがとうございました!
けれども、コンポーネントを使うのとコード上でやるのとはどう違うのですか?
223デフォルトの名無しさん:2006/12/16(土) 19:16:51
設計時と実行時。あとプロパティやイベントなどを追加する場合。
224デフォルトの名無しさん:2006/12/16(土) 19:50:08
>>218
Bof, Eof。
これが不満なら>>215の言うようにRecNoやキャストしてグリッドの位置をみるしかない。
自分の無能を棚にあげて、あんた失礼な人だね。
225デフォルトの名無しさん:2006/12/16(土) 21:31:22
>>223
ありがとうございました。

ListViewは分かったのですが、選択したときに1列いっぺんに選択させるにはどうすればいいのですかね?
あと列のどこでも選択すればその列が選択される状態にするにはどうすればいいんですか?
226>>225:2006/12/16(土) 21:48:37
自己解決しました
227デフォルトの名無しさん:2006/12/17(日) 00:20:04
manifest.rcってどのようにコンパイルすればいいのですか?
228デフォルトの名無しさん:2006/12/17(日) 00:23:57
C:\>brcc32 manifest.rc
229デフォルトの名無しさん:2006/12/17(日) 00:34:24
>>228
即レスあがとうございます

あと、manifestでLunaスタイルに変更されないPageなんたらをビジュアルスタイルでちゃんと表示するためには
ttp://www.vector.co.jp/soft/win95/prog/se219006.html
これを使用しないと無理なんですかね?
230デフォルトの名無しさん:2006/12/17(日) 04:58:54
>>229
最近のdelphiでは元から入ってるVCLでもxpmanifest使えばxpスタイルで表示されるよ
231デフォルトの名無しさん:2006/12/17(日) 07:07:16
たぶんDelphi6なんだろう
232デフォルトの名無しさん:2006/12/17(日) 08:49:26
>>230
231
D6のPersonalです
233デフォルトの名無しさん:2006/12/17(日) 12:24:17
>>232
Turbo Delphi使えば?
234デフォルトの名無しさん:2006/12/17(日) 13:50:43
>>233
エクスプローラー版はコンポーネントが追加できないとか不安定ときいたので…
235デフォルトの名無しさん:2006/12/17(日) 13:57:06
  ク    ク   || プ  / ク   ク  || プ  /
  ス  ク ス _  | | │ //. ス ク ス _ | | │ //
  / ス   ─  | | ッ // /  ス   ─ | | ッ //
  / _____  // /          //
.  /   l⌒l l⌒l \  ))   ____
. / / ̄| ,=| |=、| ̄ヾ   / ____ヽ
/ ̄/ ̄.  ー'●ー'  ̄l ̄ |  | /, −、, -、l  ))
| ̄l ̄ ̄  __ |.    ̄l ̄.| _| -| ,=|=、 ||
|. ̄| ̄ ̄  `Y⌒l__ ̄ノ ̄ (6.   ー っ-´、}
ヽ  ヽ    人_(  ヾ    ヽ    `Y⌒l_ノ
  >〓〓〓〓〓〓-イ   /ヽ  人_(  ヽ
/   /  Θ  ヽ|  /    ̄ ̄ ̄ ヽ-イ
236デフォルトの名無しさん:2006/12/17(日) 14:24:49
D6ならこれを入れる。

http://www.delphi-gems.com/ThemeManager.php
237デフォルトの名無しさん:2006/12/17(日) 14:25:33
>>229
無理だと思う。
ビジュアルスタイル対応コンポーネントはいろいろあるから試してみたら?

>>234
賢明な選択w
238デフォルトの名無しさん:2006/12/17(日) 15:05:30
D6なら>>236の入れるのが無難だな
239デフォルトの名無しさん:2006/12/17(日) 15:07:14
メインフォームからフォームA を ShowModal 後、すぐにフォームA を
非表示にしてフォームB を ShowModal する必要があります。
これを実現するために、フォームA の OnShow イベントでフォームA の
Visible を False にしてフォームB へ ShowModal したいのですが、
フォームA.Visible := False; のところでエラーとなります。
どのように非表示にすれば良いか分かりますでしょうか。(できれば
フォームA は見えない方が見栄えが良いのですが)Delphi7proです。
240デフォルトの名無しさん:2006/12/17(日) 15:11:11
>(できればフォームA は見えない方が見栄えが良いのですが
フォームAもShowModalする理由がわからん
見えないほうがいいならいきなりフォームBを表示すればいいのい
241デフォルトの名無しさん:2006/12/17(日) 15:20:17
>>240
おっしゃる通りです。ちとはしょって書いてしまいましたが、
メインフォームから フォームA に行く場合と B に行く場合がありまして、
B に行った場合、フォームを閉じたら A を表示させたいのです。
242デフォルトの名無しさん:2006/12/17(日) 15:24:51
フォームXに「行く」ってどういう意味だ?
あとエラーの内容くらい書け。
243デフォルトの名無しさん:2006/12/17(日) 15:30:48
procedure MainForm.FormBにいく;
begin
 FormB.ShowModal;
 FormA.ShowModal;
end;
244デフォルトの名無しさん:2006/12/17(日) 15:45:51
onShow/onHideイベントの中でVisible変えちゃいけないみたいだね
onShowでやるならメッセージを使う方法があるみたい
ttp://www.din.or.jp/~egawa-n/delphi/tips/form_showed.html
245デフォルトの名無しさん:2006/12/17(日) 15:58:01
>>242
エラーは「OnShow/OnHide イベントの処理中は表示状態の変更はできません.」
です。書きもれていましてすみません。また、「行く」とはShowModalで
制御を渡すという意味で使いました。一般的ではない言葉でしょうか。
>>244
ありがとうございます。この方法で正常に制御が渡せました。ただ少し
フォームが見えてしまいますので、
>>243
さんのやり方も検討したいと思います。
246デフォルトの名無しさん:2006/12/17(日) 16:22:05
そもそも画面遷移のロジックをフォーム側に持たせるのがおかしいと思うけど。
247デフォルトの名無しさん:2006/12/17(日) 21:04:34
Proを買うなら、TurboDelphiとDelphiどっちがいいんですか?
248デフォルトの名無しさん:2006/12/17(日) 21:28:21
>>245
FormAからFormBを呼び出して自身を消す手もあるね
質問するならもうちょっと具体的に状況説明したほうがいいと思うよ
249デフォルトの名無しさん:2006/12/17(日) 21:31:32
>>236
見に行ったのですが、英語で使い方がいまいちよくわからんでした・・・^^;
250デフォルトの名無しさん:2006/12/17(日) 21:31:45
251デフォルトの名無しさん:2006/12/17(日) 21:50:20
クラスのメソッドに class とつけるのは、Javaでいう static みたいなものでしょうか。
これを利用して、クラス名を名前空間のように使うこともありますか?
252デフォルトの名無しさん:2006/12/17(日) 22:02:42
あるよ
253デフォルトの名無しさん:2006/12/17(日) 23:58:54
Vista RC1にTurboExplorerをインストールしてみたいのですが無理なのでしょうか?
ホームディレクトリと思われる所にreg736.txtを置くのですが、
シリアルナンバーを求められます。

認証ファイルを置くべき位置をご存じの方がいらっしゃいましたら教えていただけませんでしょうか。宜しくお願いします。
254デフォルトの名無しさん:2006/12/17(日) 23:59:49
あるけど、ほとんど使わない。
Delphi ではユニット名そのものが名前空間になるし、クラスと関係ない
関数も定義できるから。
255デフォルトの名無しさん:2006/12/18(月) 00:04:57
>>253
使用許諾マネージャでreg736.txt読み込んでみれば?
256sage:2006/12/18(月) 01:31:33
>>255
ありがとうございました。動きました。

参考にならないかもしれませんが、Vistaのスタート>すべてのプログラム>Borland Developer Studio2006>ツール>使用許諾マネージャで読み込めました。
最初reg736.txtはTurboExplorer発表時に発行したものを使っていたのですが、
再度取り直したものをドキュメントと同じ階層に置きました。

摺りガラスのようなエアロ効果新鮮っす。


257デフォルトの名無しさん:2006/12/18(月) 18:48:32
Form2の表示について教えてください。

unit2 をusesに追加した後ボタンのクリックイベントに
Form2.showという風にしても表示されません。
後何をすればいいんでしょうか?
258デフォルトの名無しさん:2006/12/18(月) 19:04:06
コンパイル、実行してクリックする。
259デフォルトの名無しさん:2006/12/18(月) 19:43:01
>>247
ヴァージョンかけ

>>251
unit HogeUnit;
interface
const
 Hoge = 1234;

とした場合、
HogeUnit.Hoge
と参照できるからなー、ほとんどいらん。

260257:2006/12/18(月) 20:02:50
TurboDelphiです。
261デフォルトの名無しさん:2006/12/18(月) 20:03:43
>>258
実行はしてますよ。
262デフォルトの名無しさん:2006/12/18(月) 20:38:30
create してないとかw
263257:2006/12/18(月) 20:40:01
すいません、今やったらすんなりと出来ました。
失礼しました。なにが悪かったんだろう?
264デフォルトの名無しさん:2006/12/18(月) 21:22:43
StringGridでColCountプロパティに10を指定しています。
で、プログラムで間違えて
for i := 0 to 99 do
StringGrid1.Cells[i,0] := IntToStr(i);
としてしまいました。99をColCount-1にすべきだったのですが
上記のロジックでもうまく?動作しているようです。これはこれで
大丈夫なものなのでしょうか。
265デフォルトの名無しさん:2006/12/18(月) 21:47:44
>>259
Delphi7くらいまでだと、ユニットって入力補完効いたっけ?
というわけで、俺は確実に入力補完が効くクラス.クラスメソッドが好き。
266200:2006/12/18(月) 22:40:48
>>200のコードなのですが、これは

WM_KEYDOWN
http://yokohama.cool.ne.jp/chokuto/urawaza/message/WM_KEYDOWN.html

の30ビット目を参照してオートリピートを判断してるんですよね?
$40000000を2進数にすると31桁(1000000000000000000000000000000)です。
また、別のサンプルで、24ビット目の拡張キーを参照し判断する場合、
$1000000(2進数だと25桁の1000000000000000000000000)とありました。

何故、30ビットで31桁、24ビットで25桁なのか腑に落ちません。
そういうもんだ、と暗記してしまえば済むことなのですが、
どなたかご存知の方いらっしゃいましたら教えていただけないでしょうか?
よろしくお願いいたします。
267デフォルトの名無しさん:2006/12/18(月) 22:56:46
たんに最小ビットをゼロビットと言うからでしょ。
268デフォルトの名無しさん:2006/12/18(月) 22:58:14
>>266
あのな。先頭ビットを0としてんじゃん。よって、
>>の30ビット目を参照してオートリピートを判断してるんですよね?
は31ビットめもしくは、先頭をビット0としたときのビット30ってこと。
269268:2006/12/18(月) 23:01:59
先頭ビットってあまり適切な表現じゃなかったかもしれん。
最下位ビットっていうほうがよかったかもな。
最上位ビット(MSB)とか最下位ビット(LSB)とか。
http://www.x-media.co.jp/jiten/index.cfm?ID=3052
270デフォルトの名無しさん:2006/12/18(月) 23:27:59
ダイアログを表示させようとして、Delphiの新規作成の標準ダイアログというテンプレを使ってやっているのですが、

Dialog.show;
で表示させたダイアログはどのように終了させるのですか?
Dialog.Close;
Dialog.Hide;
Dialog.Release;
の3つくらい調べてて出てきたのですが、CloseとHideとReleaseの違いがわかりません。
271デフォルトの名無しさん:2006/12/18(月) 23:36:34
>>264
ソースちょっと見たけど良く解からないから、トレースしてみて。
でも、ColCount-1とやるべきだろうね。
272200:2006/12/18(月) 23:42:44
あ、そういう考え方だったのですね。
配列の10個目を見る時にarray[9]ってするみたいな感覚なのか。
スッキリしました!ありがとうございます。
273デフォルトの名無しさん:2006/12/19(火) 00:14:42
それはケースバイケースだろう。
ttp://pc8.2ch.net/test/read.cgi/tech/1162262669/l50
では、最下位ビット0ってなってるから、ビット30は「31番目のビット」ってことで。
後、Delphiでは何も配列の最初の要素の添え字は0になるとは限らんし、
a: array [ 1..10 ] of DataTypeで宣言されていたら、
10個目はまさしく、a[10]だが、
a: array [ 0..9 ] of DataTypeと宣言されてたら、
a[9]になるわけで、ただの言葉というか表現の違いだけだろーーーーーーーーーー。


274デフォルトの名無しさん:2006/12/19(火) 03:09:55
よくURLが書いてあるラベルをクリックするとデフォルト用のブラウザとして設定されてるブラウザを起動させて(すでに起動してある場合はブラウザをアクティブにして)指定されたURLのページを開くっていう機能があるじゃないですか
あれってどうやって実現してるんでしょうか?
275デフォルトの名無しさん:2006/12/19(火) 03:16:54
api
276デフォルトの名無しさん:2006/12/19(火) 03:17:25
>>273
キミは序数と番号付けを混同している。
277デフォルトの名無しさん:2006/12/19(火) 03:17:37
ごめん、DelphianWorldの適当なコンポを拾って解析したらわかった
278デフォルトの名無しさん:2006/12/19(火) 08:11:12
>>270
Close→閉じる
Hide→隠す
Release→解放
279デフォルトの名無しさん:2006/12/19(火) 12:36:09

procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
begin
for i:=1 to 10 do
begin
Memo1.Lines[i]:=IntToStr(i);
end;

これを実行したら、Memo1の一行目にしか表示されないんだけど、
Memo1の行全体に

1
2
3
4
5
とか表示させるにはどうしたらいいでしょうか?
280デフォルトの名無しさん:2006/12/19(火) 12:49:54
Linesがいつ10行に設定されてんだよとか思わない?
TStringsのプロパティとメソッドをヘルプで調べてご覧
281デフォルトの名無しさん:2006/12/19(火) 13:02:23
procedure TForm1.Button1Click(Sender: TObject);
var
 i: Integer;
begin
 for i := 1 to 5 do
  Memo1.Liens.Add(IntToStr(i));
end;
282デフォルトの名無しさん:2006/12/19(火) 13:02:44
つまりMemo1.Lines.Add(IntToStr(i));
逆にするならMemo1.Lines.Insert(0,IntToStr(i));
283デフォルトの名無しさん:2006/12/19(火) 13:03:18
やっちゃった・・・
284デフォルトの名無しさん:2006/12/19(火) 13:05:37
いいんです、僕>>282-283みたいな人好きですから・・・
285デフォルトの名無しさん:2006/12/19(火) 15:11:08
TLabelとTStaticTextってどう使い分けるといいんでしょうかね?
継承元が違うってのは分かるんだけど、具体的なシュチュエーションが思い浮かばん…
286デフォルトの名無しさん:2006/12/19(火) 15:45:59
TStaticTextはウィンドウハンドルを持ってるから
フォームの最前面に表示したい場合などに使える
(ラベルが特定条件で隠れるUIが良いかどうかは置いといて)

あとは・・・枠を表示出来たり、D&Dで移動する事が出来たり、
実用的じゃないなw
287デフォルトの名無しさん:2006/12/19(火) 17:23:28
>>278
HideとCloseの違いについてはわかりました。
CloseとReleaseの違いについてなんですが、特に関数やらを定義していなければReleaseではなくCloseでいいのですか?
それとも、Releaseで閉じたほうがいいんですか?
288デフォルトの名無しさん:2006/12/19(火) 17:57:55
>>285
ウィンドウハンドルを持っているコントロールの下にラベルを置いて文字列を表示しようとすると
ラベルの文字列が隠れてどうしようもない場合に使ってみる。
289デフォルトの名無しさん:2006/12/19(火) 18:30:53
$quot;を ' に置き換えたいんですけど、クォートってどう書いたらいいの?
290デフォルトの名無しさん:2006/12/19(火) 18:35:41
' '' '
291デフォルトの名無しさん:2006/12/19(火) 21:52:15
>>287
Closeメソッドはフォームを破棄するときにいろいろ配慮してくれるので、
普通はCloseでいい。
292ななしへたぐらま ◆XcB18Bks.Y :2006/12/19(火) 23:24:53
>>270,287
Hide…常に隠す
Close…
 ・メインフォーム…プログラムを終了する
 ・サブフォーム…隠す(ただしOnCloseイベントで変更可能)
 ・MDIの子フォーム…最小化する(同上)
Release…解放(破壊)

Releaseメソッドは実行時に生成したフォームを解放するときにFreeの代わりに使います.

dlg := TMyDialog.Create(nil);
try
 dlg.ShowModal;
finally
 dlg.Free;
end;

>>274
・usesにShellApiユニットを追加
・URLを書いたラベルなどをフォームに貼る
・そのラベルのイベントハンドラに以下のようなコードを貼る.

 ShellExecute(Handle, 'OPEN', 'http://pc8.2ch.net/tech/', '', '', SW_SHOW);
293デフォルトの名無しさん:2006/12/19(火) 23:37:33
>>292
> Releaseメソッドは実行時に生成したフォームを解放するときにFreeの代わりに使います.

微妙に使い分けが要る。
Mastering Delphiなんかを見るとFreeでいいとかなってる。

実際に問題になるのは、メインウインドウのOnDestroyの中で他のウインドウを消すとき、
Releaseだと例外を発生することがあった。
その場合、Releaseの後にApplication.Processmessages()をかませると例外がでなかったので、
どうやらタイミングの問題があるらしい。

まあとにかくFreeが無難だと思う。
294デフォルトの名無しさん:2006/12/19(火) 23:42:54
基本的にフォームのハンドラで自フォームを廃棄したいときのみReleaseを使えばいいと思われ。
295デフォルトの名無しさん:2006/12/20(水) 08:07:49
Free 他殺
Release 自殺
296デフォルトの名無しさん:2006/12/20(水) 08:17:39
分かりやすい
297デフォルトの名無しさん:2006/12/20(水) 08:19:50
Free 即死
Release 悶絶死
298デフォルトの名無しさん:2006/12/20(水) 08:58:24
↑いやな例えだなw
299デフォルトの名無しさん:2006/12/20(水) 09:40:41
デスクトップ(色んなウインドウのトップ)に指定した長方形を書きたいのですが
どのようにすればよいのでしょうか?
300デフォルトの名無しさん:2006/12/20(水) 09:41:44
要するに、サブフォーム上のボタンを押してそのサブフォーム自身を閉じる場合は
自殺のReleaseで、メインフォームからサブフォームを消すときはFreeを使うってことですかね?
んで、サブフォームをCloseすることはHideすることと同じってことですか?
301デフォルトの名無しさん:2006/12/20(水) 10:16:11
デフォルトではそう。OnClose イベントで自動で Free に設定することもできる。
302デフォルトの名無しさん:2006/12/20(水) 10:58:13
文字列の質問です。
マニュアルによると、長い文字列(AnsiString),ワイド文字列(WideString)型の変数は動的に割り当て
られたメモリブロックへのポインタで、文字列が空(長さ0)の時は、メモリブロックは割り当てられず、nil
になるとあるので、以下のコードを試したました。
var
 S: string;
begin
 S := '';
 if PAnsiChar(S) = nil then ShowMessage('nil');
Sの型がAnsiStringの時は確かにnilになるのですが、WideStringの時は、nilになりません。
これはマニュアルがバグってるのでしょうか?コンパイラがばくってるのでしょうか??
環境はTurboです。



303デフォルトの名無しさん:2006/12/20(水) 11:13:16
302です。
訂正です。AnsiString、WideString共にnilになりませんでした。
というより、Assignedや<>nilでチェックすればいいようですね。
頭がこんがらがってきた。以前、ここであがったassignedの記事を読みましたが、
理解不能です。
ためしに、
var
 P: Pointer;
begin
 P := nil;
 if P = nil then ShowMessage('nil')
だとチェックできますね。
304デフォルトの名無しさん:2006/12/20(水) 13:27:15
ローカルに置いてあるHTMLのフォームから
HTTPリクエストを同じフォルダのアプリケーションに飛ばして、
ファイル書き込みをやらせようとしています。

TCGIApplicationあたりを使ってそれらしいものを作ってみたのですが、
実際ブラウザでHTMLを開いてsubmitしてみたら、
なぜかアプリケーションのダウンロードになってしまいました。

作り方が悪いのでしょうか?それともDelphiでは不可能なんでしょうか?
環境はTurbo Delphi Explorerです。
305デフォルトの名無しさん:2006/12/20(水) 13:34:32
>>303
PAnsiCharじゃなくてPointerでキャストすればOK
306デフォルトの名無しさん:2006/12/20(水) 13:51:12
最近Delphiを始めた初心者です。

FolderList: TStrings; は定義、Create済み

var
Count: Integer;
DriveName: PChar;
SearchRec: TSearchRec;
begin
Count:= 0;
GetMem(DriveName, 4);
StrCopy(DriveName, PChar(Drive + ':\'));

if (FindFirst(DriveName+'*', faDirectory, SearchRec) = 0) then begin
repeat
Inc(Count);
FolderList.Add(DriveName + SearchRec.Name + '\');
until (FindNext(SearchRec) <> 0);
end;
FreeMem(DriveName);
end;

こんなプログラムでフォルダ検索をしようとしているのですが、フォルダは検索できたものの、
フォルダでないもの '*.txt' や '*.csv' などがいくつか引っかかってしまいます。

どうしたらこのような問題を回避できるのでしょうか?
フォルダにも '.' が使われた名前があるケースも考えられるので、単純に '.' 入りのものを弾くなどはしたくありません。
どなたかご指導のほど、よろしくお願い致します。
307デフォルトの名無しさん:2006/12/20(水) 13:54:37
スペースつぶれてコード見づらいですね。

var
 Count: Integer;
 DriveName: PChar;
 SearchRec: TSearchRec;
begin
 Count:= 0;
 GetMem(DriveName, 4);
 StrCopy(DriveName, PChar(Drive + ':\'));

 if (FindFirst(DriveName+'*', faDirectory, SearchRec) = 0) then begin
  repeat
   Inc(Count);
   FolderList.Add(DriveName + SearchRec.Name + '\');
  until (FindNext(SearchRec) <> 0);
 end;
FreeMem(DriveName);
end;
308デフォルトの名無しさん:2006/12/20(水) 14:00:01
((SearchRec.Attr and faDirectory) <> 0)が真ならディレクトリだから
ループ中にこれで判別できると思う。カレントディレクトリの「.」とか「..」は自前ではじくしかないかな
309デフォルトの名無しさん:2006/12/20(水) 14:06:58
repeatループ内で
if (SearchRec.Name <> '.') and (SearchRec.Name <> '..') then
これで.と..を弾いて
if SearchRec.Attr = faDirectory then
これでディレクトリだけ引っ張ってこれるよ
310デフォルトの名無しさん:2006/12/20(水) 14:08:50
>>308-309
素早いレス、ありがとうございました。
仰る通りの方法で回避することができました。

それにしても FindFirst の faフラグの実装は謎ですね。
検索後に更に判定が必要とは・・・

とても勉強になりました。ありがとうございます。
311デフォルトの名無しさん:2006/12/20(水) 14:15:32
>>310
faDirectory有:無属性とフォルダが列挙
faDirectory無:無属性を列挙

無属性のファイルはフラグとは関係なしに列挙される。
それに加えてフラグで指定した物も列挙される。
312デフォルトの名無しさん:2006/12/20(水) 14:52:18
>>311
なるほどそういう仕組みだったのですね。

ありがとうございました。
313デフォルトの名無しさん:2006/12/20(水) 18:53:01
ホントにホントに初心者的な質問ですみませんが、
IntraWebで作ったアプリはインターネットに公開して
動作させることができるのでしょうか?
Delphi7のEnterprise版を使用しています。
314デフォルトの名無しさん:2006/12/20(水) 18:59:15
>>313
出来ますが、何か?
315デフォルトの名無しさん:2006/12/20(水) 21:25:26
つい最近Delphiをインスコしたばかりの漏れは、とりあえず他の人の作ったソフトのソースを見てみてるんだけど、
TEditorなるものが必要らしいソフトがあって、TEditorをインスコしようとしたんだけど、
コンポーネントのインストールの段階で、
[致命的エラー] HEDITREG.PAS(19): ファイル 'DsgnIntf.dcu' が見つかりません
って弾かれちゃう(´・ω・`)
多分漏れがDelphiの基本を理解していないからなんだろうけど、何か解決策あったら教えて。

ちなみにXPでDelphi6 Personalを使ってるお。
316デフォルトの名無しさん:2006/12/20(水) 22:03:27
HelpでDsgnIntfで検索→DsgnIntf の名前変更および関連する変更
317デフォルトの名無しさん:2006/12/20(水) 22:43:54
他のアプリのメッセージ(WM_ERASEBKGND)を横取りしたいのですが
どのようにすればよいのでしょうか?
318デフォルトの名無しさん:2006/12/20(水) 23:01:30
フック
319デフォルトの名無しさん:2006/12/20(水) 23:50:45
>>299
GetDC(0)
320デフォルトの名無しさん:2006/12/21(木) 07:56:19
>>315
プロジェクトオプション
検索パス
321デフォルトの名無しさん:2006/12/21(木) 09:50:43
インラインアセンブラでxmmレジスタを保存する必要はありますか?
322デフォルトの名無しさん:2006/12/21(木) 10:51:18
D5でPARADOX+BDEで作ったアプリがキー違反で悩まされています。
6年ほど前に作りずっと安定して動いていたのですが最近キー違反が多発するようになりました。
主キーはautoinc型で2次インデックスに無重複の物が1つあります。
post前にデバッガで2次インデックスで使われているフィールドの値をチェックして
重複していないのにpostするとキー違反になるので何が何だか判りません。
テーブルを作り直してみたのですが直りませんでした。
エラーメッセージがキー違反ですとしか出ないのでエラーの詳細を調べる方法とか
キー違反で考えられる原因とか有りましたら教えてください。


323デフォルトの名無しさん:2006/12/21(木) 10:54:12
>>322
ちなみにレコード数はどれくらい?
324デフォルトの名無しさん:2006/12/21(木) 11:17:03
>>323
1万レコードくらいです。
以前は10万レコードくらい有ったときもありました。
325デフォルトの名無しさん:2006/12/21(木) 12:01:43
try

except
 on E: Exception do
  ShowMessage(E.Message);
end

で例外メッセージを詳しく捕まえるとか
あと、インデックスが壊れてる場合にキー違反が出ることあるって聞いた
326デフォルトの名無しさん:2006/12/21(木) 12:12:52
>>324
Paradoxでテーブルの修復はためした?
ためすと重複してるレコードを抽出してくれるよ。
327デフォルトの名無しさん:2006/12/21(木) 12:26:26
>>325
ありがとうございます。試してみます。

>>326
TUTIL32を使った修復ツールを作っていて普段はそれで直るのですが今回はそれがメッセージもなく落ちてしまって
使えなかったのでテーブルを作り直しました。
でもその後に修復をかけて成功しても再発するのです。
328デフォルトの名無しさん:2006/12/21(木) 13:13:26
DVD等を再生している動画の白を採取したいのですが
GetDCではうまくいきません。

何かよい方法は無いものでしょうか?
329デフォルトの名無しさん:2006/12/21(木) 13:14:15
>>328
×白
○色

どうぞよろしくお願いします。
330デフォルトの名無しさん:2006/12/21(木) 16:38:40
>>328
デジャブ?

DVDとかメディアプレイヤーは、オーバーレイを使ってるから、GetDCでは無理。
どうしてもやりたかったら、先にメディアプレイヤーで動画再生しておいて、
DVDを再生すると、後に再生する方は、オーバーレイを使えないのでできるはず。
スマートじゃないけどな。
331デフォルトの名無しさん:2006/12/21(木) 19:58:40
Masks.dcuを使っているソースをコンパイルしたいのですが、
Delphi6 Personalには、Masks.dcuが付いていないようなのです。
何か代用できるものってありませんか?
332デフォルトの名無しさん:2006/12/21(木) 20:34:35
>>331
体験版からdcuを抜くとか出来ないの?
333デフォルトの名無しさん:2006/12/21(木) 20:39:03
>>327
PXUPGR なんてツールもあるよ。
http://www.rksolution.cz/delphi/delphi.htm
334333:2006/12/21(木) 20:39:44
Pdxrbld でした orz
335331:2006/12/21(木) 22:12:14
>>332
ありがとうございます。抜くことはできました。
ただ、今度は「Masks.pas」が無いと怒られましたorz
336デフォルトの名無しさん:2006/12/21(木) 22:58:11
>>331
TurboDelphiのMasks.pasを適当な別の場所にコピーして、
D6のライブラリパスにコピーした場所を追加してみたら?
ライセンス的に疑問が残るが。
337デフォルトの名無しさん:2006/12/21(木) 23:03:12
お、お前ら鬼だ。
俺は今、鬼を見てるぅー。
338デフォルトの名無しさん:2006/12/21(木) 23:22:02
>>335
素直にTurbe Delphiに以降しる
339デフォルトの名無しさん:2006/12/21(木) 23:37:17
超初心者なんですが・・・質問させてください。
あるファイル(名前をData.dat、中身はテキスト形式で一行目に番号、2行目に名前、3行目に性別)
が数十人繰り返し書いてあるファイルを、一行づつLoadしていき、各行でレコード型の変数に
代入していく手続き?(または関数)って、どうすればできますか?
だれか、教えて><

procedure TForm1.TextOperation;
var
Doc: TStringList;
Ws: WideString;
begin
if not FileExists('C:\Program Files\Borland\Delphi6\Projects\製作ソフト\recoad.dat') then
ShowMessage('データファイルが見つかりません');
Doc := TStringList.Create;
Doc.LoadFromFile('C:\Program Files\Borland\Delphi6\Projects\製作ソフト\recoad.dat');
Ws := Doc.Text;
ShowMessage(Ws);
doc.Free;

end;
と書いて、ロードした中身確認したところ、recoad.datの全ての行を読み込んで一個の変数に格納してしまい
ました・・・・orz。ファイルの一行づつロードして、一行目をレコード型変数の[1,A]で二行目を[1,B]で
3行目を[1,C]で4行目を[2,A]で5行目を[2,B]・・・・・・・とやっていきたいんです。
340デフォルトの名無しさん:2006/12/21(木) 23:43:08
Doc[行番号] で、その行の文字列を得られる。
341デフォルトの名無しさん:2006/12/21(木) 23:52:46
俺はプログラムを書く前にどういうことをしたいのか日本語でコメント行に書くよ

//StringListを生成する

//ファイルを読み込む

//1行目をHoge[1,1]に代入する

//2行目をHoge[1,2]に代入する

//x行目をHoge[ここは自分で考えよう]に代入する
342デフォルトの名無しさん:2006/12/22(金) 00:02:07
>>341
それは超初心者だけにしておけ。

コードを変えるたびにコメントを変える羽目になる。
失敗すると無関係なコメントが残って被害甚大。
343デフォルトの名無しさん:2006/12/22(金) 00:04:17
>>341
コメントにせずにやるべきことを書けばいいんだよ
そこを実装するときに消していくんだ
そうすればすべきことをしない限りコンパイルを通らん
344デフォルトの名無しさん:2006/12/22(金) 00:04:36
delphiごときにコメントなんぞいらん
345341:2006/12/22(金) 00:08:38
すまん、>>339が超初心者っていうからそれにあわせて答えたつもりだった
いまは頭の中で思いながらコード化してる
346デフォルトの名無しさん:2006/12/22(金) 00:10:24
>>345
了解。

そういえばToDo なんてのもあるけど、使ってる?
347デフォルトの名無しさん:2006/12/22(金) 01:35:59
>>342
仕事でふつーに書くぞ?
348デフォルトの名無しさん:2006/12/22(金) 01:42:04
まぁ、342は適当にコメントの中身考えたと思うけど、コメントの中身の悪い例だな。
//StringListを生成する
List := TStringList.Create;
なんて、コード見れば、TStringListのインスタンスを生成してるのは、誰にでも
わかることで、コメント書くなら何のためにインスタンスを生成したかとか書くべきだ。
とどっかで読んだような気がする。
349デフォルトの名無しさん:2006/12/22(金) 01:48:07
俺はただ単純に自分が何するか分かるようにってことだと思ったんだけどそう言うことじゃないのか・・・
350デフォルトの名無しさん:2006/12/22(金) 01:51:11
自分で実装するなら書かないな、実装後コメント残す事はあっても。
351デフォルトの名無しさん:2006/12/22(金) 01:52:35
コメントは誰が読むかを意識するべきであって
誰もが読む文学とは違う
352デフォルトの名無しさん:2006/12/22(金) 02:00:37
俺のプルグラムはコメントは少ないが、関数ヘッダー(関数名や概要・引数)?みたいのを付けてしまった。
とりあえず、今のアプリはヘッダー消すのも面倒だから、とりあえず、付けてる。
おかげで、俺のプログラムの3分の1くらいの行数は関数ヘッダーで占められてる。
消してぇ。
353デフォルトの名無しさん:2006/12/22(金) 02:08:59
Perlがあれば整形楽ちん
ついでにdoxygenか類似ツールを導入すればドキュメント管理にもなる
354デフォルトの名無しさん:2006/12/22(金) 03:40:28
QDでDirectShowも可能?
355303:2006/12/22(金) 06:27:36
>>305さんの言う通りにPointerでキャストすればいけました。
で、色々調べたら、PointerへのキャストとPCharへのキャストで、文字列が空の時
次のような違いがあるっぽいですね。
C言語で書くと
char^ p1 = null;
char[] p2 = { '\0' };
って、C言語の正確な構文忘れましたが、上記のようなイメージで、
Delphiの文字列は空の時に、Pointerだと上、PCharだと下の状態になるっぽいですね。
今ごろ知った。orz
356デフォルトの名無しさん:2006/12/22(金) 07:22:27
「何をやってるか」はソースから読めないとおかしくて、
コメントとソースが食い違ってるとどっちが正しいのかわからなくなる。
「何のためにやってるか」をコメントするならOKだけど、
それを意味付けして命名するとそのコメントも消せるようになる。

関数ヘッダは、cvsとかで管理されてたら全く要らない。
JavaDocみたいに抽出する場合もあるかも知れんが、
内容と合ってないと気づいた分は消すだけでもしないとな。
特に多人数開発で、コピペで体裁だけ整えて間違ったまま放置とかされるとうざい。
関数コピペしてヘッダごとコピペされるとか、
コピー先にあわせて修正したのにヘッダがそのままとか良くあったよ。
357デフォルトの名無しさん:2006/12/22(金) 09:57:03
コピペでじゃんじゃん重複コードを製造してるような所もあるからな。
ま、確かに速いし、仕事してるっぽいんだけど

そういうコードを長年保守して使おうとか考えちゃうのが考え物。
358デフォルトの名無しさん:2006/12/22(金) 10:03:43
>>355
そらそうよ
PChar(PAnsiChar)やPWideCharはCの文字列と同じで
ヌル文字列を末尾に必ず付加するからな
359デフォルトの名無しさん:2006/12/22(金) 10:16:28
ありがとうございます。その続きなんですが、Win32APIで文字列返す関数のバッファとして、
stringやWideStringを使いたいのですが、その時は、どうすればいいのでしょうか??
もちろん、呼ぶWin32APIは末尾のNULL文字の分のバッファも要求してきます。
で、Win32APIがNULL文字分のバッファだけが必要なとき、
SetLength(S, 0);
Win32API(PChar(S))
で、オッケーでしょうか?Sの長さは0だけど、PCharとして、キャストしたので、
1バイト分だけ確保されたと考えても差し支えないでしょうか??

360デフォルトの名無しさん:2006/12/22(金) 11:19:23
文字列のバッファにString型を使いたい場合は
↓こんな感じで(あんまりお勧めしないけど)
procedure TForm1.Button3Click(Sender: TObject);
var
 buff: String;
 Len: Cardinal;
begin
 Len := 256;
 buff := StringOfChar(#0, 256);
 GetUserName(PChar(buff), Len);
 ShowMessage(buff);
end;
361デフォルトの名無しさん:2006/12/22(金) 12:15:37
ButtonをClickすると新しいウィンドが開いて、
そこに保存してあるtxtファイルを表示させたいんですがどうすればよいでしょうか?
362デフォルトの名無しさん:2006/12/22(金) 12:54:28
TForm2.Create(Self).Memo1.LoadFromFile(FileName);
363339:2006/12/22(金) 15:10:25
>>340
>>341
その他の人アドバイスありがとうです。
参考にします。
コメントをコードよりさきに書いといたらやりやすいってのはちょっと納得してしまいました。

>>361
おれの書いてるコードが少し参考になるよ。あれは、新しいウィンドウが出てきてそこにテキストファイル
の内容がフォーム上に出てくるけど。
364デフォルトの名無しさん:2006/12/22(金) 20:25:56
>>354
QDに動画再生機能はない。
365デフォルトの名無しさん:2006/12/23(土) 05:24:47
TStringListは末尾に自動で改行コード付加するのにはまいったなぁ。
GetTextStrをオーバーライドするTOhMyGreateStringListでも作るかなぁ。
366デフォルトの名無しさん:2006/12/23(土) 05:27:07
いや、やっぱ、Saveするときだけ、独自の関数かますか。。
367デフォルトの名無しさん:2006/12/23(土) 05:40:14
TStringStreamってなんだ誰も使わないんだろうな
368デフォルトの名無しさん:2006/12/23(土) 05:42:18
聞いたこともないな。
369デフォルトの名無しさん:2006/12/23(土) 15:19:40
torbo delphi と torbo delpji for net インストールするならどっち?

すみません。こんな中途半端な質問で・・・。
370デフォルトの名無しさん:2006/12/23(土) 15:27:46
>>369
vista→torbo delpji for net
vista以外→torbo delphi
とturbo使ってない俺が逝ってみる
371デフォルトの名無しさん:2006/12/23(土) 15:30:56
ありがとうございます。
では,今後を考えると,for net なのでしょうか。
372デフォルトの名無しさん:2006/12/23(土) 15:37:00
>>371
7割方期待が占めてる
ホントの所は作る物次第
373デフォルトの名無しさん:2006/12/23(土) 15:42:10
ありがとうございました。
turbo delphi for net をインストールします。
374デフォルトの名無しさん:2006/12/23(土) 16:47:22
BDS持ってるが、Delphi .NETって使ったこと無いんだけど、
これってGCなの?
375デフォルトの名無しさん:2006/12/23(土) 16:53:11
.NETである自体で、GC
.NETアプリは言語によらず、CLR上で動作し、GC
376デフォルトの名無しさん:2006/12/23(土) 18:52:42
>>367
TTextStreamじゃなくて?
377デフォルトの名無しさん:2006/12/23(土) 18:53:33
>>373
.netすんならC#にしとけ
378デフォルトの名無しさん:2006/12/23(土) 19:39:12
win32のほうがいいよ。Delphi使うなら。
379デフォルトの名無しさん:2006/12/23(土) 20:01:32
>>376
うん、TStringStreamの方。
便利げなんだが、何故かあんまり使われているという話をきかない。

つか、TTextStreamってなんじゃらほい
380デフォルトの名無しさん:2006/12/23(土) 21:01:35
delphiするので,win32の方にしますが,delphi6よりturbo delphiが
良いんですよね(いずれも無償Ver)
381デフォルトの名無しさん:2006/12/23(土) 21:09:33
>380
標準以外のコンポーネントを使いたいならD6、標準だけでいいならTurbo Explorerで。
382デフォルトの名無しさん:2006/12/23(土) 21:47:33
ありがとうございました。
383デフォルトの名無しさん:2006/12/23(土) 22:06:09
>>380
ヘルプがしっかりしていて動作が軽快でバグが少ない D6 の方を勧めるよ。
384デフォルトの名無しさん:2006/12/23(土) 22:19:18
VistaだとDelphi6のヘルプは起動しない。
385デフォルトの名無しさん:2006/12/23(土) 22:25:14
>>379
エンコードやデコード、暗号とかの変換系で
stringから変換するときに使った。
いったんTMemoryStreamに渡すよりも読みやすい。
386デフォルトの名無しさん:2006/12/23(土) 22:37:18
>>385
TTextStreamのこと?
なんかDelphi7のヘルプを見ても、TTextStreamって載ってないんだよね
387デフォルトの名無しさん:2006/12/23(土) 23:15:43
delphi5のプロフェッショナルを使っているのですが、
ADOコンポーネントを追加したいのです。
delphi5用のADOコンポーネントは入手可能でしょうか?。
388デフォルトの名無しさん:2006/12/23(土) 23:40:21
Delphiでプロセスメモリの読み書きはできますか?ざっと探してみたんですが
俺が馬鹿なので有力なのが見つかりませんでした・・・。
ありましたら、教えていただければと思います。。
389デフォルトの名無しさん:2006/12/23(土) 23:53:07
>vista→torbo delpji for net
>vista以外→torbo delphi

えー? そうなの?
Vistaってネイティブ動かんの??
390デフォルトの名無しさん:2006/12/24(日) 01:11:29
>>388
違うプロセスを弄ったことが無いのでよくわからんけど、
ReadProcessMemory, WriteProcessMemory, CreateToolhelp32Snapshot
などのAPI関数名とDelphiをくっ付けてググればいろいろ出てくるんではないかと。

>>389
VCで作られている某ファイラもVista上ではまともに動かないそうで、
Vista上でWin32用アプリを動かすのはなかなか難しいようだ。
391ミ,,゚Д゚ミノ ◆A6VzDeLphI :2006/12/24(日) 01:25:20
392デフォルトの名無しさん:2006/12/24(日) 08:10:30
う・・・またまた、質問です。ちなみに超初心者です。
TlistViewでViewスタイルvsReportにしてて
________________________________________________________________________________________________
番号__|名前_____________________________|年齢|性別|備考_____________________|
________|____________________________________|______|______|____________________________|
________|____________________________________|______|______|____________________________|
________|____________________________________|______|______|____________________________|
________|____________________________________|______|______|____________________________|
________|____________________________________|______|______|____________________________|
________|____________________________________|______|______|____________________________|
________|____________________________________|______|______|____________________________|
________|____________________________________|______|______|____________________________|
________|____________________________________|______|______|____________________________|
________|____________________________________|______|______|____________________________|
________|____________________________________|______|______|____________________________|
________|____________________________________|______|______|____________________________|

って空のTListViewがあるわけですが。。。
前もってレコード変数に代入してるperson[0].bangou とかperson[0].nameとかperson[0].ageとかPerson[0].genderとか
person[0].other......以降 person[1].bangou.....とつづく
のデーターをこのListViewのセルに入れたいのです。
TListView + Delphiでググって調べてhttp://totonica.s41.xrea.com/blog/log/eid229.html#sequel
のようなサイトとか読んだのですが、よく分からなかったでした。
だれか、教えてください。
393デフォルトの名無しさん:2006/12/24(日) 08:33:16
var
 NewItem: TListItem;
 I: Integer;
begin
 ListView.Items.BeginUpdate;
 try
  ListView.Items.Clear;
  for I := 0 to RecordCount - 1 do
  begin
   NewItem := ListView.Items.Add;
   NewItem.Caption := person[I].bangou;
   NewItem.SubItems.Add(person[I].name);
   NewItem.SubItems.Add(person[I].age);
   NewItem.SubItems.Add(person[I].gender); 
  end;
 finally
  ListView.Items.EndUpdate;
 end;
end;
394デフォルトの名無しさん:2006/12/24(日) 08:33:46
>Vista上でWin32用アプリを動かすのはなかなか難しいようだ。

マジでつか!?
Vistaで正常に動かすにはVista対応Delphiのリリースまで待たなくてはならないんでつか?
395デフォルトの名無しさん:2006/12/24(日) 09:51:25
どこまでVistaの機能に対応してVista対応というかの問題だな。
少なくとも、お行儀の良いプログラムならVista上でも動くには動くだろう。
まぁ、Delphi特有の大きさ0のアプリケーションウィンドウの問題とかあるが。
とりあえず、
http://dn.codegear.com/article/33747
を読んだら?
396デフォルトの名無しさん:2006/12/24(日) 16:17:52
お初にお目にかかります。
TChartを使ってグラフを表示しているのですが、
起動直後にポップアップメニューのメニューアイテムクリックイベントで
Chart2.BottomAxis.Maximum:=strtointdef(inputbox('最大値入力','最大値を入力してください。','100'),100);
としても最大値に変化が無く一旦Chart2を右ドラッグするとこのメソッドが適応されるようです。

検索ワードでもいいのでどなたか教えていただけませんか?

環境はD5 Ent+UP2 + XP
397396:2006/12/24(日) 16:21:02
訂正 XP→XP SP2
398デフォルトの名無しさん:2006/12/24(日) 18:52:00
TChartのことなんて知らんがな。
最大値を変えた後、とりあえず、TChartのUpdateか、Invlidateか、repaintメソッド呼んでだら、どうなる?
399ミ,,゚Д゚ミノ ◆A6VzDeLphI :2006/12/24(日) 21:50:26
>>395さん
それを読んだ上で
D_DevLog アプリケーションウィンドウに対する対処 (4)
http://ddev.blog46.fc2.com/blog-entry-70.html#more

を使うと、かなり楽々にVista対応できますね。

漏れは、AppWinFixを改造してTCustomSubFormも作って
便利に使っています。

AppWinFixをIDEにパッケージインストールしたとたん
Delphi自体が、Vista対応挙動にして藁太ですが。

400デフォルトの名無しさん:2006/12/24(日) 21:51:17
>>392
> Person[0].gender
政治的に正しいレコード型かww

>>393
RecordCountが「未定義の識別子」になる悪寒。
401392:2006/12/25(月) 07:00:46
>>400
Person[0].sexとしてほしかったのか・・・w
たしかにResordCountでエラーになるよ。
そこの部分は省いて、
NewItem.SubItems.Add(person[I].name);
   NewItem.SubItems.Add(person[I].age);
   NewItem.SubItems.Add(person[I].gender); 
だけ、付け加えても、えらーにはならなかったけど、ListViewになにも表示されてなかった
空のまんま。どうやったらいいでしょう・・・
402デフォルトの名無しさん:2006/12/25(月) 07:28:42
>>401
I に値が代入されてないんじゃね。
403デフォルトの名無しさん:2006/12/25(月) 09:54:14
>>386
TStringStreamのほうです。
TTextStreamって、
ttp://www.castle-cadenza.demon.co.uk/decorate.htm
ここが出典なのかな?
404デフォルトの名無しさん:2006/12/25(月) 09:58:46
おいおい、RecordCountって名前見りゃ何だか判断できるだろ。
君の問題はリストビューに項目を追加することだろ??for文の使い方まで、教えなきゃいけないのか。
適切に置き換えろよ。
405デフォルトの名無しさん:2006/12/25(月) 16:52:22
>>404
出来ました。
ありがとうです。
406デフォルトの名無しさん:2006/12/25(月) 23:53:00
>>399
それやると、たとえばフォームの状態を復元する
既存コンポーネントとかと互換性がなくなるよね。
407デフォルトの名無しさん:2006/12/26(火) 01:51:19
いわゆるスキンを実装しようと考えています。
BMP、WAV、TXTの3種類のファイル群を
EXEとは別にスキンファイルとしてひとつにまとめ
実行時はメモリ内部にスキンファイルを展開し
TBitmap、TImagelist、SndPlaySound、SND_ASYNCなどで処理する、
という流れを考えているのですが、実際これをやるには
どのあたりの知識が必要でしょうか、ヒントください。
雛形になる、というか参考になるソースってありますでしょうか?
よろしくお願いいたします。
408デフォルトの名無しさん:2006/12/26(火) 02:07:14

コンポーネント使うとか・・・
http://www.tmssoftware.com/
TMS Skin Factory
http://www.tmssoftware.com/tsf.htm
409デフォルトの名無しさん:2006/12/26(火) 02:09:05
410デフォルトの名無しさん:2006/12/26(火) 02:10:58
SXSkinComponents v.1.1.0 がデモみるかぎりよさそうだな・・・
411デフォルトの名無しさん:2006/12/26(火) 02:24:01
そうかコンポーネントか!
その発想、選択肢はありませんでした。
ありがとうございます。勉強してきます。
412デフォルトの名無しさん:2006/12/26(火) 02:52:59
コンポーネントのソースを見て実装という手もあるので、いかようにでも
413デフォルトの名無しさん:2006/12/26(火) 05:17:48
ですね。都合により標準設定でコンパイルできるようにしたいので
ソースで勉強して実装したいと思います。
414デフォルトの名無しさん:2006/12/26(火) 09:07:49
>AppWinFixをIDEにパッケージインストールしたとたん Delphi自体が、Vista対応挙動にして藁太ですが。

kwsk
415デフォルトの名無しさん:2006/12/26(火) 10:50:51
Delphi6mEnterpriseを使用してソフトを作っています。

指定した入力が入るまでBEEP音を鳴動させようと
windowsAPIのBeepを使用しました。

リファレンスでは、第二引数の値を「-1」にすると
非同期で動作し再度コールされるまでBEEP音が鳴動するとかいてありました、
引数を「-1」にするとコンパイルエラーが発生します。

そこで、最新のリファレンスをみるとその部分の記述が消えていました。

上記のようなことを実現したいのですが、方法がありましたお教え頂けませんか。
416デフォルトの名無しさん:2006/12/26(火) 11:12:43
DWord(-1)とか
417デフォルトの名無しさん:2006/12/26(火) 11:22:57
var
 M := TMemoryStream ;
begin
 M := TMemoryStream.Create ;
 M.LoadFromFile('test.wav') ;
 SndPlaySound(PChar(M), SND_ASYNC) ;
end;

コンパイルは通ったのですがtest.wavが鳴りません。単純に
 SndPlaySound(PChar(test.wav), SND_ASYNC) ;
とすれば鳴りますが、一旦メモリにプールしたいんですよね。
TMemoryStreamの使い方が間違ってるのでしょうか?
418デフォルトの名無しさん:2006/12/26(火) 11:26:54
>>417
思いっきり間違っとる
オブジェクト指向の勉強をまずしたほうがいいな
クラスと配列は全然違う

TMemoryStreamの内容は、Memoryプロパティだ。
419デフォルトの名無しさん:2006/12/26(火) 11:27:01
M.Memory
SND_MEMORY
420デフォルトの名無しさん:2006/12/26(火) 11:43:22
ありがとうございました!!
 SndPlaySound(PChar(M.Memory), SND_MEMORY or SND_ASYNC) ;
に書き直すことでtest.wavの再生に成功しました。
本当に助かりました。ありがとうございます。
421デフォルトの名無しさん:2006/12/26(火) 11:53:34
横から失礼。
M.Free; しなくてもいいの?
422デフォルトの名無しさん:2006/12/26(火) 15:08:30
Delphiのコンパイラオプションのデバックオプションのデバッグ情報やローカルシンボル情報の
オプションはリリースするときもチェックついたままでよろしいのでしょうか??
ヘルプによると、dcuファイルはこれらの影響を受けるような事が書いてありますが、
生成されるEXEも影響を受けるんでしょうか?
423デフォルトの名無しさん:2006/12/26(火) 15:37:51
>>421
すみません。M.Free;は質問した時点で書き忘れていました。ご指摘ありがとうございます。
424ななしへたぐらま ◆XcB18Bks.Y :2006/12/26(火) 20:56:43
>>420
ちなみに最初のパラメータはキャストしなくてもOKです.

TMemoryStream.Memoryはpointer型(汎用のポインター型)で,これは
あらゆるポインター型の変数(とパラメータ)に代入できるからです.

>>422
それらのオプションでは影響を受けないと思われます.
(少なくとも手持ちのDelphi 5は)

ヘルプの説明にに『実行ファイル』という言葉があったと思います.
これは簡単に言うと .exe ファイルのことです.
(厳密には .exe でない実行ファイルも存在します)
425デフォルトの名無しさん:2006/12/26(火) 21:30:48
ゲームパッドで自由に音が鳴らせるアプリを組みました。
音は出るようになったんですが、
微妙なタイムラグが気になって仕方がないです。
ソースは
ttp://codezine.jp/a/article.aspx?aid=172
を参考にしました。
midiOutShortMsgを使っています。Sleepは使っていません。
Timerでintervalを1で使っています。

タイムラグ0は物理的に不可能と思うんですが、もっとレスポンスのいい方法はないでしょうか?
426デフォルトの名無しさん:2006/12/26(火) 22:03:36
あなたの使ってるMIDI音源はソフトウェアですか、ハードウェアですか?
ソフトウェアなら、どうしても発音が遅れます。
427デフォルトの名無しさん:2006/12/26(火) 22:21:26
ソフトウェアMIDIです。Windows付属の
428デフォルトの名無しさん:2006/12/26(火) 23:39:41
Delphiのエディタのマウス右メニューに
コピペ機能を使えるようにするツールが昔あった記憶があるのですが
(メモと同じ機能化)ツール名やある場所しりませんでしょうか?
429デフォルトの名無しさん:2006/12/26(火) 23:44:36
そもそもデフォルトでコピペ位できますが。
430デフォルトの名無しさん:2006/12/26(火) 23:50:24
>>429
古いノートで使ってるんで、
最新バージョンは入れてない
431デフォルトの名無しさん:2006/12/26(火) 23:58:00
これか

デルファイ アルファ 
Delphiのコードエディッタ上で右クリックするとコピー、貼付け等のPopupmenuを表示する。


ttp://www.delphianworld.com/ の Toolsにあるけど
432デフォルトの名無しさん:2006/12/27(水) 00:13:48
>>431
それです!
ありがとうがざいます。
433デフォルトの名無しさん:2006/12/27(水) 01:47:33
>>424
ありがとうございます。これで、いちいち、リリース用とかデバッグ用とか設定変える手間が省けます。
434デフォルトの名無しさん:2006/12/27(水) 01:57:40
>>425
Timerは、TTimerかな?これは、最高でも精度が、20、30msecくらいしかでないっつーのと、
ソフトウェアMIDI音源なら、さらに遅れる。
435デフォルトの名無しさん:2006/12/27(水) 02:13:45
恐れ入ります。Delphi6Personalを使っている者なのですが、
コンポーネントを使うときに「DesignIntf.dcuが無い」
というエラーがでまして、
インストールフォルダに入っていた"DesignIntf.int"の
内容がPascalソースっぽかったので
*.pasにリネームしてライブラリパスに追加したのですが、
今度はDesignMenus.dcuが無いと言われてしまい、
はまってしまいました。
お助け願えないでしょうか、、

436デフォルトの名無しさん:2006/12/27(水) 02:17:22
437デフォルトの名無しさん:2006/12/27(水) 23:54:36
Delphiで宣言されているWindowsの型で、
type
 TFoo = packed record
  A: Integer;
  B: array [0..0] of Byte;
 end;
と宣言されているレコードのメンバBに必要なメモリ領域を割り当てるにはどうすれば、
いいでしょうか?
var S: array [0..127] of Byte;
とし、Foo.B = SやらFoo.B = Pointer(B)やらやっても型の互換性がないとエラーになります。
438デフォルトの名無しさん:2006/12/28(木) 00:18:22
長さ固定でいいのなら新たにレコードを宣言してキャストして使う。

TFoo32 = packed record
 A: Integer;
 B: array[0..31] of Byte;
end;

そうでなければ TFoo 全体を自分で適量確保する。

GetMem(SizeOf(Integer) + SizeOf(Byte) * x)
439デフォルトの名無しさん:2006/12/28(木) 00:20:23
vat
Foo:TFoo;
begin
FillChar(Foo,SizeOf(Foo),0);
かな
440デフォルトの名無しさん:2006/12/28(木) 00:25:16
>>439
そのコードが何なんだ?
441デフォルトの名無しさん:2006/12/28(木) 00:26:51
ああ、[0..0]か・・・
Windows.pasでそんなの使ってるのか
442デフォルトの名無しさん:2006/12/28(木) 01:40:46
>>447です。
ぐぉ。めんどっちいですね。長さ固定は困るので、動的な方でトライしてみます。
443デフォルトの名無しさん:2006/12/28(木) 02:03:01
すみません。ぜんぜん面倒でありませんでした。ありがとうございました。
444デフォルトの名無しさん:2006/12/28(木) 12:08:07
いいえどういたしまして。
445デフォルトの名無しさん:2006/12/28(木) 17:34:51
画像ファイルをテキストに変換したいです。
いきなり漢字は無理でしょうから
最初は0〜9までのひと桁の数字を判別できれば
と考えています。
実現には技術的にどういった知識が必要でしょう?
446デフォルトの名無しさん:2006/12/28(木) 17:41:33
パターンマッチング法
ゾンデ法
ストロークアナリシス法
ニューラルネットワーク
ファジィ
カオス
447デフォルトの名無しさん:2006/12/28(木) 17:43:15
Delphiとは何の関係もないけど、
単純なニューラルネットワークを使ったパターン認識が一番取っ付きやすいと思う。
448イタリア人(ItalianA):2006/12/28(木) 19:07:24
これからDelphiをDLして勉強しようと思っています。
で、手元にナツメ社のDelphi3.1ハンドブックがあるのですが
これは役立たずになっているのでしょうか?
449デフォルトの名無しさん:2006/12/28(木) 19:12:03
>>448
おれもDelphi勉強中。まだ、Delphi歴1ヶ月。
3.1は古いんじゃない?
450イタリア人(ItalianA):2006/12/28(木) 19:24:43
>>449
ありがとう。とりあえず試してみるよ
451デフォルトの名無しさん:2006/12/28(木) 19:40:54
Delphi2〜7は基本的な部分は変わってないから
3.1時代の参考書も使えるかと
コンポーネントとかは違うけど
452イタリア人(ItalianA):2006/12/28(木) 19:53:21
>>451
わかりました。勇気がわいてきました。
コンポーネントの違いはなんとなく空気読んでいきますわ
453デフォルトの名無しさん:2006/12/28(木) 20:03:14
3.1っつーと、動的配列がないのが辛いな
454デフォルトの名無しさん:2006/12/29(金) 00:14:04
SHGetDesktopFolderで取得したIShellFolderは
使用後は必ず_Releaseメソッドを使うべきなんでしょうか?
455デフォルトの名無しさん:2006/12/29(金) 00:21:54
_AddRefを自分で呼んだのなら対になる_Releaseも必ず呼ばないとダメ。
そうでないならコンパイラに任せておけばいい。
456デフォルトの名無しさん:2006/12/29(金) 00:33:23
>>455
ありがとうございます。
_AddRefメソッドは呼んでいないのでコンパイラに任せます。
457デフォルトの名無しさん:2006/12/29(金) 05:13:34
ところで、Vista対応の現行TurboDelphi後継は出る予定あるんでしょうか??
458デフォルトの名無しさん:2006/12/29(金) 05:35:40
459デフォルトの名無しさん:2006/12/29(金) 10:50:21
Vista対応って、どういうレベル?ただ、IDE自体が動けばいいだけ?
Delphiで作ったアプリが>>395のような追加コードなしに問題なく表示できなきゃだめ?
どの機能に対応するかによって答えは変わってくるよ。
なんったて、Windows2000で使えるようになったUnicode文字でさえ、現状のDelphiは標準の
コントロールで表示できないし。そういう意味で言うと、2000すら対応していない。
460デフォルトの名無しさん:2006/12/29(金) 15:05:26
またまた、質問なんですが・・・
毎回親切に答えてくれてありがとうございます。

今回の質問なんですが・・・
ユーザーの入力データーから名簿のデーターを読み込み、IndexOfでユーザーが入力した名簿のデーター
がすでにあればOKなんですが、ユーザーが入力したデータが既存の名簿データにない場合、
ダイアログ(入力用の新規フレーム)を出して、ユーザーに名簿にないので、その他のデーターの入力
を促して、その間はプログラムの流れは止まってるみたいな処理にしたいのですが・・・

i := 0;
Dir:=GetCurrentDir;
Doc := TStringList.Create;
Doc.LoadFromFile(Dir+'\record.dat');        //既存のデーターを読み込み
Ws := Doc.Text;                     //データーの内容保存

repeat
Position := Doc.IndexOf(Person[h].Name);
if Position = -1 then                 //既存のデーターにユーザーの名前が存在しない場合
             begin
//ここらへんにユーザーにダイアログを提示して
                               //入力を促す処理を書いて
                               //その入力が終わるまでプログラムの流れは一時停止
//しておいて欲しいです。Readlnみたいな・・・で、ユーザ
                          //で入力が終わったらそれを変数に代入して、プログラム
end;               //再生・・
i := i+1;
Until
i > Ninzuu - 1;
end;
お願いします。
461デフォルトの名無しさん:2006/12/29(金) 15:14:45
,:::-、       __
      ,,r::::::::::::〈:::::::::)    ィ::::::ヽ
      〃::::::::::::;r‐''´:::::::::::::::::::::ヽ::ノ
    ,'::;'::::::::::::::/::::::::::::::::::::::::::::::::::::
     l::::::::::::::::::l::::::::::●::::::::::::::●:::::ji
    |::::::::::::::::::、::::::::::::::( _●_)::::::,j:l  クマー!
    }::::::::::::::::::::ゝ、::::::::::|∪|_ノ::;!
.    {::::::::::::::::::::::::::::`='=::ヽノ:::::/     
    ';::::::::::::ト、::::::::::::::i^i::::::::::::/
      `ー--' ヽ:::::::::::l l;;;;::::ノ
【ラッキーレス】
このレスを見た人はコピペでもいいので
10分以内に3つのスレへ貼り付けてください。
そうすれば14日後好きな人から告白されるわ株は上がるわ
出世しまくるわ体の悪い所全部治るわでえらい事です
462デフォルトの名無しさん:2006/12/29(金) 15:32:10
>>460
入力が1行で良いのならInputBox使えばいいし、もっと入力項目
が多いんだったら、フォームを作ってShowModalで表示すれば
入力が終わるまでメインの方は止まる。

ただ、キャンセルされた場合の処理をどうするかを考える必要が
ある。
463デフォルトの名無しさん:2006/12/29(金) 17:00:43
>>462
ありがとうです。できました。
value := InputQuery(Person[h].Name+'の所在地',Person[h].name+'の所在地情報を入力してください。',NewPlace);
if not value then
begin
ShowMessage('入力がキャンセルされました。処理を中断します。');
exit;
end
else
Person[h].Place := NewPlace;
InputBox調べてたら、似たようなやつでInputQueryってのがあって、Boolean型でキャンセル押したらFalse返して
それ以外は、Trueを返して変数に入力内容をテキスト型にして返すって関数があってそれ使ったら
うまくいきました。
464デフォルトの名無しさん:2006/12/30(土) 17:39:26
Delphi初心者です。
ListBoxにアイテムを追加していき、常に最後(一番下)のアイテムを選択しておく
にはどうすればいいのでしょうか?
つまりスクロールバーを下げなくても最後のアイテムを見えるようにしておきたい
のです。
よろしくお願いします。
465デフォルトの名無しさん:2006/12/30(土) 17:57:07
教えてくださいませ。
指定したWebサイトを開くにはどうすればよいでしょうか?
(その後にブラウザの制御などは行わない場合)


466デフォルトの名無しさん:2006/12/30(土) 18:43:49
>>464
ListBox1.Items.Add('HOGE');
ListBox1.ItemIndex := ListBox1.Count-1;


>>465
ShellExecute(0, nil, 'http://www.2ch.net/', nil, nil, SW_NORMAL);
467464:2006/12/31(日) 01:36:20
>>466
できました!ありがとうございました。
ItemIndexプロパティはアイテムの位置を取得するだけでなく、コードから
アイテムを選択するのにも使えるのですね。
これからもよろしくお願いします。
468デフォルトの名無しさん:2006/12/31(日) 15:52:10
Delphiっつかobject pascalではビット演算と論理演算が同じ演算子
(andやor)のようですけど
そうなるとビット演算のばやいCみたく
if (Value and A_FLAG) then ... だとだめなの?
469デフォルトの名無しさん:2006/12/31(日) 15:53:37
ダメだよ
470468:2006/12/31(日) 15:54:35
サンクス
if ((Value and A_FLAG) <> 0) then
こうならいいの?
471デフォルトの名無しさん:2006/12/31(日) 15:55:25
いいよ><
472デフォルトの名無しさん:2006/12/31(日) 15:55:51
俺も久しぶりにシフト演算使おうとして、おとといあたり、Delphiの算術シフトと論理シフトの違いどうなってったっけ?
って調べたな。シフト演算を随分使ってないと忘れる。ヘルプにのってんじゃん?
473468:2006/12/31(日) 15:55:54
ベリーサンクス><
474468:2006/12/31(日) 15:59:14
しかしこれはメンドイな(俺だけ?)
Cみたいに演算子分けなかった理由とかあるのかな?
475デフォルトの名無しさん:2006/12/31(日) 15:59:25
他アプリのウィンドウを自アプリの子供(または孫以下)として扱いたいと思っているのですが実現は可能なのでしょうか?
可能なのであれば実現方法を教えて下さい。宜しくお願いします。
476デフォルトの名無しさん:2006/12/31(日) 16:01:58
Windows.SetParent
477デフォルトの名無しさん:2006/12/31(日) 17:03:10
ん?C言語に二つも演算子用意されてる??ビット演算と論理演算
478デフォルトの名無しさん:2006/12/31(日) 17:08:57
あぁ、&と&&のことか。ごめん。
479デフォルトの名無しさん:2006/12/31(日) 17:10:59
>>476
できましたーありがとうございましたー
480デフォルトの名無しさん:2006/12/31(日) 17:56:21
>>474

Cと比べて型に厳しいから、 対象が論理型の場合論理演算、整数型ならビット演算
というように判別可能だからじゃないかな。
481468:2006/12/31(日) 18:09:10
>>480
なななるほど
俺みたいな初心者にはややこしいですわ
482デフォルトの名無しさん:2006/12/31(日) 18:55:04
バグを生み出しにくい、初心者に優しい仕様なんだけどね
483デフォルトの名無しさん:2006/12/31(日) 19:22:04
>>472
これがバージョンによって挙動が違うから困る
484デフォルトの名無しさん:2006/12/31(日) 21:31:05
Delphiで使えるパーサってTPLexとかぐらいしかないですか?
485デフォルトの名無しさん:2007/01/01(月) 03:31:16
486デフォルトの名無しさん:2007/01/01(月) 10:32:38
>468
回答者も初心者ばっかみたいだから信用しない方が・・・・
487デフォルトの名無しさん:2007/01/01(月) 15:20:52
>>486
識者自負してんなら答えだせハゲ
488デフォルトの名無しさん:2007/01/01(月) 23:37:02
>487
うるせぇよ、500円ハゲ。
489デフォルトの名無しさん:2007/01/02(火) 02:04:26
DelphiでiTunesをコントロールしたいんですけど、入口でつまずいています。
ググってiTunesCOMWindowsSDKをダウンロードしたけど、さっぱり使い方が判りません。

英語はソースのコメント程度ならなんとなく分かるんですけど、文章になるとてんでダメです。

よろしくお願いします。
490489:2007/01/02(火) 02:07:00
>>489
補足
使い方がわからないというのは、Delphiへのインストール(?)の仕方とか宣言のしかたからです。
Delphi6を使っています。
491デフォルトの名無しさん:2007/01/02(火) 02:37:19
>インストール

.idlが入ってないみたいだから他のタイプライブラリとか参考に
手書きでPascalに直すしかしょうがないんじゃね?
492デフォルトの名無しさん:2007/01/02(火) 11:34:00
タスクトレイのチップヘルプっていうのかな? マウス合わせると出てくるやつ。
それを取得する方法ってありますか?
493489:2007/01/02(火) 14:00:58
自己レスです。
iTunesをコントロールするのは、プロジェクト>タイプライブラリの取り込みでタイプライブラリーを取り込んで簡単にできました。
ググってもなかなか出てこなかった…。SDKとか関係なかった。
494デフォルトの名無しさん:2007/01/02(火) 14:04:56
くだらない質問!

utftosjis.pas
ttp://homepage3.nifty.com/m-and-i/tips/utftosjis.htm

↑これ使おうと思って↑に書いてある通りに↓をした!

C:\Program Files\Borland\Delphi6\Lib に utftosjis.pas という名前で保存した。
(utftosjis.pas保存時のエンコードはshift_jis、改行コードはCRLF)

だけど unit Utf8tosjis; の行で↓のエラーが出る!

[エラー] utftosjis.pas(16): Unit で指定された 'Utf8tosjis' がファイル名と一致しません
[致命的エラー] Unit1.pas(7): 'utftosjis.pas' ユニットはコンパイルできませんでした

なんで??? 先生! 教えてプリ〜〜〜ズ!
495494:2007/01/02(火) 14:07:50
情報不足な気がするから一応実際に書いたコードを晒しちゃうぞ!

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, utftosjis;

         :
         :

procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Lines.Text := UTF82Sjis(Memo1.Lines.Text);
Memo1.Lines.SaveToFile('utf-8text.txt');
end;
496デフォルトの名無しさん:2007/01/02(火) 14:12:05
>>494
utftosjis.pas → Utf8tosjis.pas
unitの識別子とファイル名は同じでなければならない。
497494:2007/01/02(火) 14:20:12
>>496
ありがとうございます! やっぱしサイトのほうが間違ってたのか〜、
うp前に確認くらいしてくれって感じっすorz これからいじってみますわ。
498494:2007/01/02(火) 14:42:32
Utf8tosjis.pas という名前で保存したら↑のエラーは出なくなった!
でも↓のエラーが出てしまいます。

[エラー] Unit1.pas(29): 未定義の識別子 : 'SJIS2UTF'
[致命的エラー] Project1.dpr(6): 'Unit1.pas' ユニットはコンパイルできませんでした

ちゃんとuses節に Utf8tosjis を追加してるのに何故 未定義 になるの? 先生教えて!m(><)m
______________________________
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Utf8tosjis;
         :
         :
procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Lines.Text := SJIS2UTF(Memo1.Lines.Text);
Memo1.Lines.SaveToFile('utf-8text.txt');
end;
499494:2007/01/02(火) 14:50:19
Utf8tosjis.SJIStoUTF( 〜 )

とすれば良いみたいです、お騒がせしました!
ダメ元で色々な書き方しててこれ見付けました!
ユニット名.関数名( ) なんて書き方は今まで見た事なかったから動いてビビッた(汗
500デフォルトの名無しさん:2007/01/02(火) 15:44:02
>>494は正月早々色々と大変だな・・・
まぁアレだ・・・

  あ  き  ら  め  ろ
501デフォルトの名無しさん:2007/01/02(火) 15:56:23
Delphi6です。
非アクティブ時に[Alt]+H とかのキー入力を受け取りたいんですけど、どうすればいいんでしょう?
502デフォルトの名無しさん:2007/01/02(火) 15:59:40
>>501
グローバルホットキーを登録する。
503デフォルトの名無しさん:2007/01/02(火) 17:59:04
>501
SetWindowsHookExでいけるんじゃね?
詳しくはぐぐるか、Windows Programer's Reference参照。

ここを読めばわかる
www.kab-studio.biz/Programing/Codian/DLL_Hook_SClass/06.html
504デフォルトの名無しさん:2007/01/02(火) 18:00:27
>494
>498
一度Delphiのマニュアル読んだほうがええぞ。
そんなくだらんことでいちいち質問してたら、しまいには誰も回答して
くれんぞ。
505デフォルトの名無しさん:2007/01/02(火) 18:04:55
>492
取得って?
今表示されているヘルプの内容が知りたいとか?

バルーンヘルプの表示方法ではないよね?
506デフォルトの名無しさん:2007/01/02(火) 20:00:30
ステータスバーをオーナードローしてるんだが、
ごくまれに意図していない変な描画になる(メニュー文字が表示)のはなんでだろ?VCLのバグ?
507デフォルトの名無しさん:2007/01/02(火) 20:04:26
変じゃ分からん。
SS見せてくれ。
508デフォルトの名無しさん:2007/01/02(火) 20:52:42
ステータスパネルを追加してそのパネルのStyleをオーナードローにし、
DrawPanelイベントでCanvasに描画してる。ヘルプどおり。
その現象が発生するのがごくまれってのがよくわからない。
509デフォルトの名無しさん:2007/01/02(火) 21:27:52
誠にお恥ずかしい限りですが、質問させていただきます。

(質問)
2005と2006(TurboDelphi)では文法に変更があったのでしょうか?

(理由)
カットシステム社のDelphi2005Vol1入門編を購入し、掲載されていた
簡易エディタをそっくりそのまま入力してみたのですが、エラーだらけでにっちも
さっちも行かなくなりました。

(試したこと)
ソースリストの誤入力、プロバティの誤設定がないか → 昨日から都合8回見直しましたが発見できませんでした。
カットシステム社のHPで記事訂正の告知がないか → なし

(環境)
アスロンXP2800+
Mem 1GB*1
HDD 250GB*3
GeForce6800
WindowsXP Pro SP2
TurboDelphi2006
510訂正です:2007/01/02(火) 21:29:37
× プロバティ → ○プロパティ
511デフォルトの名無しさん:2007/01/02(火) 21:34:08
>>509
エラーと該当ソースを張ろう
512デフォルトの名無しさん:2007/01/02(火) 21:56:02
>508
もよかったらソース晒してくれい。
その話だけではさぱーりわからん。
513デフォルトの名無しさん:2007/01/02(火) 21:59:50
VCLのバグを疑う前に自分が書いたプログラムを疑ってみるといい。
514デフォルトの名無しさん:2007/01/02(火) 22:05:56
>>509
でたエラーとエラーが出ている行くらい出してくれないと誰も答えられないと思うぞ。
変更はあるにはあるがそれほどの修正は必要ない。
515デフォルトの名無しさん:2007/01/02(火) 22:13:26
質問の仕方は>>494のほうが100倍分かってるな。 意味ぷーだよおまえら。
516509:2007/01/02(火) 22:16:49
遅くなりました。
まずはこれです。
(ソース)
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Borland.Vcl.Menus, System.ComponentModel, Borland.Vcl.StdCtrls,
Borland.Vcl.Clipbrd, Menus, StdCtrls;

(エラー)
[Pascal 致命的エラー] main.pas(7): F1026 ファイル 'Borland.Vcl.Menus.dcu' が見つかりません
517509:2007/01/02(火) 22:31:32
全体は以下のとおりです。

ttp://zetubou.mine.nu/timer/file/bomber33624_h24.txt
及び
ttp://zetubou.mine.nu/timer/file/bomber33621_h24.txt

それと、慌てていて恐縮ですが、516でupしました部分の訂正です
○ unit main;

  interface

 uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, Borland.Vcl.Menus, System.ComponentModel, Borland.Vcl.StdCtrls,
 Borland.Vcl.Clipbrd;
518デフォルトの名無しさん:2007/01/02(火) 22:47:07
>>516
これはVCL.NET?
519デフォルトの名無しさん:2007/01/02(火) 22:57:07
>518
え、これって.ニートなん?
なんかusesの書き方が全然違うとおもたけど...

実は.ニートじゃなくてDelphi for Win32なので
Borland.Vcl.Menusという指定の仕方ができない...とか?
520デフォルトの名無しさん:2007/01/02(火) 22:58:17
> uses
> Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
> Dialogs, Borland.Vcl.Menus, System.ComponentModel, Borland.Vcl.StdCtrls,
> Borland.Vcl.Clipbrd;

Delphi WIN32 なら

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, StdCtrls, Clipbrd;

で、どうでしょ。
521デフォルトの名無しさん:2007/01/02(火) 23:04:24
>>519
> Borland.Vcl.Menusという指定の仕方ができない...とか?

この形式はWIN32でも使えると思いますけど
Borland.Vcl はVCL.NET のソースなので、WIN32 パーソナリティでは
パスが通っておらず、エラーが出るのだと思います。
522509,516:2007/01/02(火) 23:09:23
あ、なるほど、.NET(テキストはコレに準拠しているとの記述がありました。)
に対して私がインストールしたのはWin32でした。

根本的に間違っていたということですね。
ご指摘ありがとうございました。

Delphi6のオフィシャルコースウェアを参考に勉強してみます。

(補足)uses節ですが、当初は別の場所でエラーが出たため、テキストのソースリストと突合してみて、
手動で書き直した結果新たなエラーを呼んでしまった次第です。
お手間を取らせてしまって申し訳ありませんでした。

なんだか、FM-7用のプログラムをそのままX1に打ち込んで
「動かない?」と言っているような感じですね orz

523デフォルトの名無しさん:2007/01/02(火) 23:56:08
よくわからん例えだが、とりあえず
 が ん が れ !
524デフォルトの名無しさん:2007/01/03(水) 00:12:01
>なんだか、FM-7用のプログラムをそのままX1に打ち込んで
>「動かない?」と言っているような感じですね orz
ワロタ

がんがれ
525ミ,,゚Д゚ミノ ◆A6VzDeLphI :2007/01/03(水) 00:59:50
>>501さんへ
VirtualKeyにはOrd('A')
と、値を渡してやればいいっす。

procedure SetHotKeyToOS(Handle: THandle; HotKeyNumber: Integer; VirtualKey: Word;
Shift, Ctrl, Alt, Win: Boolean);
var
 Modifiers: Word;
begin
 Modifiers := 0;
 if Shift then Modifiers := Modifiers or MOD_SHIFT;
 if Ctrl then Modifiers := Modifiers or MOD_CONTROL;
 if Alt then Modifiers := Modifiers or MOD_ALT;
 if Win then Modifiers := Modifiers or MOD_WIN;
 RegisterHotKey(Handle, HotKeyNumber, Modifiers, VirtualKey);
end;

procedure TForm1.WMHotKey(var Msg: TWMHotKey);
begin
 case Msg.HotKey of
  HotKeyID:
   PopupCtrlWindow;
 end;
end;
526デフォルトの名無しさん:2007/01/03(水) 01:39:53
('A')
527デフォルトの名無しさん:2007/01/03(水) 09:03:09
>508
PanelのTextを変えたりするとそれが出る事がある。(D6パー)
528デフォルトの名無しさん:2007/01/04(木) 10:44:51
Turbo Delphi Expressのソースを引っこ抜いて宣言とか切り貼りしてDelphi6 Perに移植すると便利だな。
529デフォルトの名無しさん:2007/01/04(木) 15:21:07
ライセンス違反
530デフォルトの名無しさん:2007/01/04(木) 16:24:03
LANで繋がった別のマシンに簡単な文字列を送りたいんですが、
どうやるのが簡単ですか?
531デフォルトの名無しさん:2007/01/04(木) 16:29:54
メール
532デフォルトの名無しさん:2007/01/04(木) 16:31:41
TCP/IPコンポ
533デフォルトの名無しさん:2007/01/04(木) 16:42:03
>>530
いやらしいこと考えてないですか?
534デフォルトの名無しさん:2007/01/04(木) 18:42:29
>530
Socketコンポ貼り付けてそれで通信じゃね?
1方はサーバーで受信待ち、もう片方から文字列を送信
製品のサンプルでそんなやつなかったっけ?
535デフォルトの名無しさん:2007/01/04(木) 22:34:10
C:\Program Files\Internet Explorer\iexplore.exe http://送り先/文字列
なCreateProccessまたはWinExec
536530:2007/01/04(木) 23:23:51
うは。できた。サンクスです。
サンプルソースがわかりやすかった。
ぐぐる前にマイパソの中身を確認しないとな…。

>>533
かわいいあの子のパソコンに卑猥なメッセージをポップアップとか、キーロガーとかは全然発想もつかないです><;。

家庭内LANにぶら下がったiTunes専用マシンを遠隔操作するアプリを作るだけです。
これで技術的問題はすべてクリア。あとは組むだけ。
537デフォルトの名無しさん:2007/01/05(金) 00:22:14
スレ違いだけど、 net send 〜 っていうコマンドなかったっけ。
538デフォルトの名無しさん:2007/01/05(金) 07:01:47
net snedはMessengerサービスがないとだめぽ。
539デフォルトの名無しさん:2007/01/05(金) 09:41:12
UNIXにも文字列を送るコマンドがあったような記憶。
540デフォルトの名無しさん:2007/01/05(金) 10:24:56
マイコンピュータのグループ表示みたいなのって
DelのListViewじゃ出来ないの?
541デフォルトの名無しさん:2007/01/05(金) 11:17:36
Delphi2005からVB6で作成したDLLを呼び出し、
結果を取得したいのですが、どうすればいいでしょうか
542デフォルトの名無しさん:2007/01/05(金) 11:27:02
>>540
出来る
>>541
VB6で作成したDLLが分からないから答えようがない
543デフォルトの名無しさん:2007/01/05(金) 11:28:09
ValueOf(>>542)=0
544デフォルトの名無しさん:2007/01/05(金) 11:32:52
ValueOf(笑)
545デフォルトの名無しさん:2007/01/05(金) 14:21:10
実行時にform内でラベルとかのオブジェクトを移動させるってどうやればいいんですか?
546デフォルトの名無しさん:2007/01/05(金) 14:32:36
TopとLeftプロパティを変更すればいい
547デフォルトの名無しさん:2007/01/05(金) 15:37:48
すみません質問させてください
スロットマシンつくってるんですが
image1とimage2とimage3が同じ画像になったときに
labelに文字を表示したいのですができるでしょうか?
548デフォルトの名無しさん:2007/01/05(金) 15:41:20
できます。
549デフォルトの名無しさん:2007/01/05(金) 15:49:23
どうしたらいいか教えてください・・・ごめんなさい
550デフォルトの名無しさん:2007/01/05(金) 15:53:45
if (同じ画像になった) then label.caption:= 'aaaaaaaaaa';
551デフォルトの名無しさん:2007/01/05(金) 15:56:46
>>546
すいません、状況説明が足りませんでした。

マウスのドラッグで位置を変えるのはどうすればいいのでしょうか。
552デフォルトの名無しさん:2007/01/05(金) 15:58:59
>>550
ほんとすいません、
if の中がわからないんです
timerでloadfromfile、nam、couとかつかってやってるんですが、
どうしたらいいでしょうか??
553デフォルトの名無しさん:2007/01/05(金) 15:59:37
画像にキー情報を持たせてるならキー情報が一致したら同じと見なす
後は3つ画像のファイルサイズを調べて同じなら一致したと見なす
などなど、何を持って同じとするかは仕様による
554デフォルトの名無しさん:2007/01/05(金) 16:04:03
>>551
onMouseMoveを使えば出来るんじゃない?
555デフォルトの名無しさん:2007/01/05(金) 16:04:28
画像をImageList かなんかに入れて、乱数で表示させて
画像番号が3つとも一致したら・・・みたいな感じじゃないの?
556デフォルトの名無しさん:2007/01/05(金) 16:06:20
>>552
> loadfromfile
を使うのだったら、ファイル名が一致とか。
557デフォルトの名無しさん:2007/01/05(金) 16:18:08
>>553>>555
ありがとうございます!
でもちょっと自分にはむずかしいのでそこは調べてやってみます

>>556
ファイル名一致でいくには、どううちこんだらいいでしょうか?
ifでイコールとかいろいろうちこんでるんですがよくわからなくて・・・
質問ばっかりですみません
558デフォルトの名無しさん:2007/01/05(金) 16:22:00
> timerでloadfromfile、nam、couとかつかってやってるんですが、

nam とcou って何?
コードで示して。
559ミ,,゚Д゚ミノ ◆A6VzDeLphI :2007/01/05(金) 16:28:03
>>545さん

ラベルが動かせるかどうかは知らんが、
つまり、こういうことでしょ。
Delphiサンプルプログラム集[Mr.XRAY]
http://homepage2.nifty.com/Mr_XRAY/Delphi/plSamples/index.htm
http://homepage2.nifty.com/Mr_XRAY/Delphi/plSamples/T_ControlDrag1.htm
560デフォルトの名無しさん:2007/01/05(金) 16:33:48
>>554
レスありがとうございます。
if Shift=[ssLeft] then
begin
imgBack.Top:=Y;
imgBack.Left:=X;
end;
とコーディングしたんですが、予想外の動きをしてしまいます。
この、X,Yはなんの座標なんでしょう?
561デフォルトの名無しさん:2007/01/05(金) 16:36:29
var
nam:array[0..7]of string
=('1.jpg','2.jpg','3.jpg','4.jpg','5.jpg','6.jpg','7.jpg','8.jpg');

var
cou:integer;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
image1.Picture.LoadFromFile(nam[cou]);
cou:=cou+1;
if cou=8 then
cou:=0;
end;

これで短いインターバルでまわして、
timerを止めたときに絵が出るようにしています
もしかしたらすごく効率悪いやり方なのかもしれないです;
562デフォルトの名無しさん:2007/01/05(金) 16:36:42
>>551
それならそうと言ってくれ
TLabelはハンドル持ってないから却下(不可能じゃないけど非常に面倒くさい)
変わりにTStaticTextを使った方法で
Borland公式からのパクリだけど

procedure TForm1.StaticText1MouseDown(Sender: TObject;
 Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
const
 SC_DRAGMOVE=$F012;
begin
 ReleaseCapture;
 TWinControl(Sender).Perform(WM_SYSCOMMAND,SC_DRAGMOVE,0);
end;
563デフォルトの名無しさん:2007/01/05(金) 17:05:52
>>561
var
cou:integer;
s1, s2, s3: String;

//Timer2、Timer3も同様にLoadFromFileの直後にs2, s3にファイル名を代入
procedure TForm1.Timer1Timer(Sender: TObject);
begin
image1.Picture.LoadFromFile(nam[cou]);
s1 := nam[cou];
cou:=cou+1;
if cou=8 then
cou:=0;
end;

ストップボタンのクリックイベントで
if (s1 = s2) and (s2 = s3) then
Label1.caption := 'ヘーイ!!キタコレ!!!';
あんまいいやり方じゃないな
564デフォルトの名無しさん:2007/01/05(金) 17:07:49
>>561
cou1, cou2, cou3 にして
if (cou1 = cou2 = cou3) then
565デフォルトの名無しさん:2007/01/05(金) 17:20:41
あれ、
if (cou1 = cou2 = cou3) then
なんてコンパイル通るんだっけ?
566デフォルトの名無しさん:2007/01/05(金) 17:21:22
Hint: 冬休み
567デフォルトの名無しさん:2007/01/05(金) 17:41:41
タスクトレイ常駐アプリを作ってるんですが、
CloseQueryでFalseにするとWindowsのシャットダウンが出来ません。
どう対応すればいいんでしょうか。
568デフォルトの名無しさん:2007/01/05(金) 17:48:44
>>565
爆死。ごめんなさい。
569デフォルトの名無しさん:2007/01/05(金) 17:55:04
if (cou1+cou2)=(cou3*2) thenでおk
570デフォルトの名無しさん:2007/01/05(金) 17:55:49
>567
CloseQueryでFalseを返すとフォームのクローズを拒否するのでだめ。
Trueを返せ。

つうかな、ヘルプぐらい嫁や!
571デフォルトの名無しさん:2007/01/05(金) 17:57:09
>>570
シャットダウンによるアプリケーション終了をどう検出するかって話なんですが
572デフォルトの名無しさん:2007/01/05(金) 18:14:46
WM_QUERYENDSESSIONメッセージを捕まえればおk
573デフォルトの名無しさん:2007/01/05(金) 21:41:11
>CloseQueryでFalseにするとWindowsのシャットダウンが出来ません。
だろ?
だから、Trueを返すようにすればシャットダウンとまらんようになるんじゃない?
と言いたかったのだが。

>567の書き方じゃ、>571のことだとわからんぞ!
574デフォルトの名無しさん:2007/01/05(金) 23:59:20
まじでこのスレのお世話になっています。
>>559>>562などなどレスありがとうございます。

今、iTunesをコントロールするアプリを作っているわけですが、
表示等のカスタマイズ性をなるべく持たせようとセコセコ設定画面を作っているんですが、
項目が多くなる(50項目ぐらい)のと、Dialogを4つぐらい貼り付ける予定なんですけど、
メモリの占有的にはどうなんでしょう?
設定は別アプリにした方がいいんでしょうか? 気にするほどじゃないんでしょうか?
575554:2007/01/06(土) 00:00:45
>>560
どう予想外の動きなの?XYの座標の意味はヘルプに書いてある。
576Delフサギコ ◆A6VzDeLphI :2007/01/06(土) 00:05:02
     ∧,,∧
     ミ,,゚Д゚彡  
     ミ つ且~~
     ミ,,__ ヾ,
 ⊂二二二∪∪二二⊃

そういうときは、とりあえず楽な
やり方で作ってから
それでも
メモリ占有率が気になるなら
そこから改造。

と、いう手段に出るのがよろしきかな。
>>574

577561:2007/01/06(土) 00:23:03
遅くなってすみません
できましたー!!
みなさんほんとありがとうございます!!
まじ助かりました。ありがとうございます!!
578デフォルトの名無しさん:2007/01/06(土) 00:26:13
>574
ここにある
www.delphianworld.com/
WZ風パラメータ設定ダイアログなんかどおよ?
579デフォルトの名無しさん:2007/01/06(土) 00:26:55
>574
あと、ダイアログにページコントロール貼り付けてタブ分ければ
ダイアログ4つもいらんのじゃない?
580574:2007/01/06(土) 01:53:12
>>575
X,YはTop,Leftとは違うというのは判りました。けど、まだよく分かってないです。作業的にはサンプルをそのままコピーしてって感じで動いています。

>>576
どっちが楽かが判断つかない状態に…。仕様書を作らずに組んでいるので、自分の中の人が仕様変更や仕様追加をばんばん行ってきてて…

>>578
設定が多すぎて、脳が追いつきません…。一件一件iniに読み書きしていきます。

>>579
言葉足らずでした。Daialog4つというのは、Open、OpenPicture、Font、Colorの4種類です。
581デフォルトの名無しさん:2007/01/06(土) 02:18:51
超初心者の質問ですみません。
for文でカウンタ変数の値を2ずつ増やすにはどうすればいいのですか?
582デフォルトの名無しさん:2007/01/06(土) 02:19:59
>580
ダイアログはWindowsのやつだからたいしてメモリくわねんじゃね?
WZ風だめなんか...
まあ、気長にがんがれ。
583デフォルトの名無しさん:2007/01/06(土) 02:24:21
>581
だめ。
VBみたいにfor i = 1 to 10 step 2とかはできん。
変わりに

i := 1;
while i <= 10 do
begin
処理

i := i + 2;
end;
とするしかない。
584581:2007/01/06(土) 02:41:52
>>583
ありがとうございます。
CやVBでは簡単にできたのでDelphiでもできるかと思いました。
while文でやってみます。
585デフォルトの名無しさん:2007/01/06(土) 04:09:10
for i := 0 to hoge do
begin
 if Odd(i) then continue;
 〜;
end;

俺はこういう書き方してた・・・
最近のDelphiなら

for i in [0, 2, 4, 6, 8, 10] do

ってのもアリか。でもこれだと自由じゃないので
初心者の俺が考えてみたんだが、

function MakeArray(AFrom, ATo, AStep: Integer): TBoundArray;
var
 i: Integer;
begin
 i := AFrom;
 while i <= ATo do
 begin
  SetLength(result, Length(result) + 1);
  result[Length(result) - 1] := i;
  Inc(i, AStep);
 end;
end;

こんな感じの関数作って

for i in MakeArray(0, 10, 2) do // 0, 2, 4, 6, 8, 10 のループ

ってのはアリですか?それともバカでしょうか。
586デフォルトの名無しさん:2007/01/06(土) 04:13:33
その関数の存在意義がわからん。
587デフォルトの名無しさん:2007/01/06(土) 04:19:48
それとfor文で何回もSetLengthしなおすとまずいって話題無かったっけ?
588デフォルトの名無しさん:2007/01/06(土) 05:15:43
つうか、エレガントではないがwhileで書いた方がよっぽど
すっきりしていると思うのだが...
まあ、書き方は個人の自由やからね。

>for i in [0, 2, 4, 6, 8, 10] do
新しいバージョンはこんな書き方できるのか。
foreachとかサポートして欲しいな。
Rubyとか見てると、( ・∀・)イイ!と思うし、羨ましい
589デフォルトの名無しさん:2007/01/06(土) 05:20:33
i*2でいいじゃんかよ。ループ回数固定なら。
590デフォルトの名無しさん:2007/01/06(土) 05:25:25
>>589
それは気がつきませんでした、目から鱗です
591デフォルトの名無しさん:2007/01/06(土) 06:47:35
589だけど、ワロタ。まぁ、俺も使いはじめの頃は、同じ事で悩んだものだ。
592デフォルトの名無しさん:2007/01/06(土) 07:12:13
VBなら云々 っていうレスがないな
593デフォルトの名無しさん:2007/01/06(土) 09:26:47
もうVB厨にさえ無視されるようになったか・・・
594デフォルトの名無しさん:2007/01/06(土) 09:50:25
だって、Delphiに未来ねーもんw
バグは多いわ、バージョンアップしても大して変わらないわ
とうとう売却されるわ、名前変わるわで散々。

個人的には言語はRubyで、DelphiのIDEが最強じゃないかと
思うけど、どお?
595デフォルトの名無しさん:2007/01/06(土) 10:48:29
DelphiのIDEってより、VCLがWin32ネイティブアプリの開発において最強なのは、俺も思う。
まぁ、VCLとIDEのデザイナなどはお互い関係あるけど。後、厳密に言うと、最強だった(過去形が適切かもね。)
Unicodeコントロールが標準で存在しないことに、コントロール以外にも、ファイル名とかAnsiで渡さなきゃいけんし、
俺的には、それでもうアウト。DelphiVistaでUnicode完全対応したらまた最強の座をあげていいとは思うが、
時代は.NET3.0なんてことになってたら、もう手遅れ。
596デフォルトの名無しさん:2007/01/06(土) 11:11:02
俺Del7で時間が止まってるんだけど今だとTurbo Delphiだっけ?
あれってDel7よりええの?
597574:2007/01/06(土) 11:29:02
Delphiに将来はないのかぁ。
でも、他の言語を覚えるゆとりが脳にない…。

Delphiに高性能のTMemoと正規表現の対応と単純なCSVコンポーネントが標準だったらニッチに大活躍したなぁと思います。
フリーのコンポーネントで実現できますけど(それがDelphiのいいところではあるけど)

以前、印刷系の会社にいた時に、テキストをタグつけて整形→DTPソフトで取り込み自動組版 とかのアプリを組みました。
印刷業界はそういった自動組版の需要がそれなりにあると思います。
ただ、どこもプログラマーを専属で雇う余裕はなくて、ちょっと詳しい人が単純なのを組んでいる感じです。
通販カタログとかのデータをDB化して、レイアウトをリアルタイム更新とか本格的なことをやってる人もいますが。
知り合いはRubyとDelphi使ってるって言ってました。
598デフォルトの名無しさん:2007/01/06(土) 11:56:19
ゲイツに喧嘩売っても勝てないから。
599デフォルトの名無しさん:2007/01/06(土) 12:28:30
ゲイツはVista で引責辞任。
600デフォルトの名無しさん:2007/01/06(土) 16:24:30
まあ、自分はDel7まんせーなので別にいいんだけどね
>将来なくても。
ただ、あと何年で陳腐化するかなぁという不安はある。
601Delフサギコ ◆A6VzDeLphI :2007/01/06(土) 16:48:27
            _____________
   ∧,,∧    /いまでも
  _ ミ,,゚Д゚彡 _<  ニッチでは
.=| |==U=U==| |= \ 大活躍だと思いますが
 | | .ミ   ミ | |    ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 | |ノ∪''∪. | |
 | |      | |

Unicode化は、確かに急いで欲しいですね。
Vista対応のAppWinFixは標準の実装をさっさとやってもらいたい。

とりあえず、
ネイティブアプリ開発において最強環境を
こってり、使いこなしてみましょうぜ。
602デフォルトの名無しさん:2007/01/06(土) 22:04:32
Delphi5はVistaじゃ使えないの?
603デフォルトの名無しさん:2007/01/06(土) 22:09:58
よくゲームなんかで波紋が広がるような画面効果やモヤがかかったような画面の切り替えがあったりして、
TBitmapに何かの演算をしたりしてるんだと思うんだけど、これをDelphiで実現するライブラリや計算方法を紹介してるサイトって、知りません?
604デフォルトの名無しさん:2007/01/06(土) 22:18:35
DirectXつかえば?
605デフォルトの名無しさん:2007/01/06(土) 22:41:13
>>602
細かい挙動を気にしなければ、使えるらしい。
606デフォルトの名無しさん:2007/01/07(日) 00:01:29
>>605
細かい挙動っての、気になりますね(^^;
Unicodeに対応じゃないみたいだけど、文字化けとかは、とりあえずないんですか?
607Delフサギコ ◆A6VzDeLphI :2007/01/07(日) 00:13:01

          ∧,,∧   ・・・
        ミ,,゚Д゚彡
        ⊂    つ
         〜ミ  * )
            し'´`J
正月で太った

気が汁

>>603さん

めもニャンだむ:Delphi 関連への目次
http://blog.livedoor.jp/junki560/archives/30287059.html
Ak's Laboratory <Delphi Construction>
http://www2s.biglobe.ne.jp/~aks-lab/delphi_lecture.htm
Delphiのページ
http://homepage1.nifty.com/MADIA/delphi/index.html
608デフォルトの名無しさん:2007/01/07(日) 01:06:31
>Delフサギコさんへ

ウンコが漏れそうなほどステキな情報ありがとうございます!
エンボス、反転、グレースケール化、ホワイトアウトとかは一応やってたんですが、二つの画像をホイール状にかき混ぜたりウェーブをかけたり、ブラー系が弱かったのでいろいろ試してみます。

しかし、scanlineで取らないと、Pixelに1個1個アクセスしたのではちょっと遅くて実用性が?ですね…
609デフォルトの名無しさん:2007/01/07(日) 01:45:06
別のdelphiアプリのアイコン化された状態を元に戻すにはどうすればいいですか?
ShowWindowやってもフォームが表示されるだけで、アイコンが残ったままなんですけど
610デフォルトの名無しさん:2007/01/07(日) 02:16:55
611デフォルトの名無しさん:2007/01/07(日) 02:30:43
やっぱ粘着してきたねw
想定内だけど
612デフォルトの名無しさん:2007/01/07(日) 02:53:28
>609
いらっしゃい。こっちに来いと振った以上は多少お付き合いします。あっちで罵倒の
応酬してもしょうがないっしょ?
一般的なタスクトレイアイコンものをDelphiで作る場合で考えると、ご所望の動作は
内部的にはApplication.Restoreメソッドの呼び出しになるものと思います。これを
外部から引き起こすにはWM_SYSCOMMANDメッセージのwParamにSC_RESTOREを
格納したものをApplicationウィンドウに送ればいいのではないかと思われます。
Applicationウィンドウとは例のDelphi特有の隠しメインウィンドウです。
ただしこれは一般論で、そのアプリケーションの作り方によっては違うアプローチが
必要かもしれません。
613デフォルトの名無しさん:2007/01/07(日) 03:33:43
>>612
ありがとうございます


あそこで質問するまでにあらゆる手段を使って試したので
>>612
> >609
> いらっしゃい。こっちに来いと振った以上は多少お付き合いします。あっちで罵倒の
> 応酬してもしょうがないっしょ?
> 一般的なタスクトレイアイコンものをDelphiで作る場合で考えると、ご所望の動作は
> 内部的にはApplication.Restoreメソッドの呼び出しになるものと思います。これを
> 外部から引き起こすにはWM_SYSCOMMANDメッセージのwParamにSC_RESTOREを
> 格納したものをApplicationウィンドウに送ればいいのではないかと思われます。
それもすでに実行済みです。
> Applicationウィンドウとは例のDelphi特有の隠しメインウィンドウです。
TApplicaitionというのがそうですか?
delphiで調べると、アイコン化ができないとかそういう類のtipsが多くあって
TAppからMINIMIZEすればいいとかなんとか多く見られるけど
614デフォルトの名無しさん:2007/01/07(日) 08:54:39
>>606
> 細かい挙動っての
http://dn.codegear.com/article/33747
http://dn.codegear.com/article/33753

> Unicodeに対応じゃないみたいだけど、
サードパーティを使えば
http://www.tntware.com/delphicontrols/unicode/

> 文字化けとかは、とりあえずないんですか?
http://itpro.nikkeibp.co.jp/article/COLUMN/20061221/257533/

ちなみにDelphi7 のインストールはこのあたり
http://www.drbob42.com/examines/examin84.htm
615デフォルトの名無しさん:2007/01/07(日) 10:37:51
アップダウンボタンをしばらく押しっぱなしにしてると増え方が加速するのってありますよね?
あれってどうやってるんでしょう?隠しプロパティでさくっと設定・・・な筈ないですよね。
616デフォルトの名無しさん:2007/01/07(日) 11:03:11
>615
一応それっぽいことできた
TForm1 = class(TForm)
UpDown1: TUpDown;
Edit1: TEdit;
procedure UpDown1Click(Sender: TObject; Button: TUDBtnType);
procedure UpDown1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
private
FDown : Boolean;
FInc : Integer;
public
end;
(中略)
procedure TForm1.UpDown1Click(Sender: TObject; Button: TUDBtnType);
begin
if (FDown = False) then
begin
FDown := True;
FInc := TUpDown(sender).Position;
end;
if abs(TUpDown(sender).Position - FInc) > 2000 then
begin
TUpDown(sender).Increment := 1000;
end
else
begin
if abs(TUpDown(sender).Position - FInc) > 200 then
begin
TUpDown(sender).Increment := 100;
end
続く
617デフォルトの名無しさん:2007/01/07(日) 11:05:50
続き
else
begin
if abs(TUpDown(sender).Position - FInc) > 20 then
begin
TUpDown(sender).Increment := 10;
end
end
end;
end;

procedure TForm1.UpDown1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if (FDown = True) then
begin
FDown := False;
TUpDown(sender).Increment := 1;
end;
end;

まあ、Clickイベントで初クリック時の値を覚えておき、値がある閾値を超えたら、
増減値を増やす
で、マウスボタンUpイベントで、初クリックのフラグを消して、増減値を元に戻す
加速が3段階なのであまりなめらかではないが、段階増やすかなんらかの式で
計算するようにすれば、なめらかに加速していくと思う
618デフォルトの名無しさん:2007/01/07(日) 11:56:08
>>616,617氏ありがとうございます。完全なコードまで書いて頂き感謝です。
+側も-側もちゃんと動きました、勉強になります。
押しっぱなしでずっとクリックイベントが発生しているのは知りませんでした。
ので実はタイマー使ってやろうとしていたのは内緒です。
619デフォルトの名無しさん:2007/01/07(日) 12:47:46
String型の16進数の数値の文字列をByte配列に格納するにはどうすればいいのでしょうか?
たとえば
data:='50006C0065006100'
この文字列を先頭からdata[0]:=5 data[1]:=0のように格納したいのですが。。。
知恵を貸してください。
620デフォルトの名無しさん:2007/01/07(日) 13:52:57
C は12として数値で格納したいの?
621Delフサギコ ◆A6VzDeLphI :2007/01/07(日) 14:13:16
    ∧,,∧    まったりとこんにちは。
   ミ,,゚Д゚ミζ
    ミ  つ旦
  〜と,,,~),,~) 

CPU使用率を求めたいのですが
どうすればいいんでしょうか?

タスクマネージャーにでてるアレです。

よろしくおねがいします。

CPU占有率を調べる
http://hpcgi1.nifty.com/MADIA/DelphiBBS/wwwlng.cgi?print+200606/06060020.txt
こんなリンクはみつけたのですが
内容が、さっぱりです。
622デフォルトの名無しさん:2007/01/07(日) 14:15:43
>>619
Move手続きじゃだめ?
623デフォルトの名無しさん:2007/01/07(日) 14:50:35
624デフォルトの名無しさん:2007/01/07(日) 15:26:02
625デフォルトの名無しさん:2007/01/07(日) 15:34:01
>619
何をやりたいのか不明。
もっと詳しく書いてください。
String型の16進数の数値 -> '7C56102A'という値でString型の変数に入ってる?
それとも String型の変数に入ってる'ABCDEF'という値を16進数にしたもの?

数値の文字列をByte配列に -> 7C56102Aという数字を文字列'7C56102A'にして
更にByte[0] := '7', Byte[1] := 'C'...という風にしたい?
626デフォルトの名無しさん:2007/01/07(日) 17:23:06
ToolBarの一部のボタンだけキャプションを表示させるにはどうすれば良いのですか?
ToolBar本体のShopCaptionではボタン全部が切り替わってしまいます。
バージョンはDel6です
627デフォルトの名無しさん:2007/01/07(日) 20:13:57
>626
無理。
自分でコンポーネント作ってカスタマイズしないとだめ。
ShowCaption変更時はウインドゥ作り直しているみたいだから
いろいろいじらんとだめかもね。
後はTorry'sのページにある海外の方のコンポを片っ端から
試してみるとか。
力になれなくてすまぽ。
628デフォルトの名無しさん:2007/01/07(日) 20:17:21
USBメモリーにDelphiをインストールしてどのPCでも作業できるなんて出来ないですかね。

629デフォルトの名無しさん:2007/01/07(日) 20:27:17
無理。
630デフォルトの名無しさん:2007/01/07(日) 20:28:40
USBメモリにOS一式とDelphi入れて、USBメモリからブート


ってできる?
631デフォルトの名無しさん:2007/01/07(日) 20:43:59
できる。
632デフォルトの名無しさん:2007/01/07(日) 22:31:55
LAN内でプログラムのアップデートを簡単にしたいのですが
プログラムを起動プログラムと本体に分けて、起動プログラムで更新をチェックして
更新されてたら本体をコピーして上書きってやるのが簡単ですかね。
本体だけで自分自身を書き換えるってのは無理ですか?
633Delフサギコ ◆A6VzDeLphI :2007/01/07(日) 22:37:07
  ∧,, ∧
  ミ。_。彡   ペコッ
〜ミ,,,U U,,ミ 且~~  

>>623さん、>>624さん。

ありがとう。
634デフォルトの名無しさん:2007/01/07(日) 22:55:48
お作法についての質問なのですが、コントロールバーにツールバーをたくさん
乗せるとき、イメージリストはそれぞれのツールバーに別に作るものなのでしょうか?
それとも全部一緒でいいのでしょうか?お願いします。
635デフォルトの名無しさん:2007/01/07(日) 23:02:04
好きなようにしたらいい。
636デフォルトの名無しさん:2007/01/07(日) 23:33:19
保守性を考えたら、別々の方が再利用しやすいと思われ。
使い捨てなら635 の言うとおり。
637デフォルトの名無しさん:2007/01/07(日) 23:36:50
>632
プログラム実行してる時はファイルを占有しているから上書きとか移動とかは
無理だったと思う。
なので、更新プログラムと本体を分けて、更新プログラムでチェック+更新する
のがいい。
MMOも全部そんな作りだし。

>634
マジでどちらでも。
イメージ自体を入れ替えのであれば、自分が管理しやすい方法にすればいい。
イメージを使用者がカスタマイズできるようにするのであれば、イメージリストが
散らばっているのはよくないかもね。
638634:2007/01/08(月) 01:19:38
>>635>>636>>637

丁寧に教えてくれてありがとう。
639デフォルトの名無しさん:2007/01/08(月) 01:34:01
>>622
>>625
ありがとうございます。moveをつかって試行錯誤してみることにします。

>数値の文字列をByte配列に -> 7C56102Aという数字を文字列'7C56102A'にして
>更にByte[0] := '7', Byte[1] := 'C'...という風にしたい?
仰るとおりです。
640デフォルトの名無しさん:2007/01/08(月) 01:46:56
┌─┬────┐
│  │      │
│  │      │
│  ├────┤
│  │    ココ│
└─┴────┘

こういう3ペインのソフトを作っていて、上の図の「ココ」のところに
ControlBarをおいて、その上にPageControlを載せたいのですが・・・
PageControlのAlignをalClientにしてもいっぱいになってくれません。
ControlBarもalClientになってます。
どうすれば良いでしょう?
図の「ココ」と上の部分はsplitterで区切ってあります。
バージョンはDelphi6です。お願いします。
641デフォルトの名無しさん:2007/01/08(月) 02:08:35
>>640
どういう目的でControlBarにPageControlを載せるのかわからないけど
自前でControlBarのリサイズの度にサイズ変更するしかないと思う
procedure TForm1.ControlBar1Resize(Sender: TObject);
begin
 PageControl1.SetBounds(0,0,ControlBar1.Width,ControlBar1.Height);
end;
みたいな感じで
642640:2007/01/08(月) 03:59:08
>>641
.NETのIDEみたいに取り外せるようにしたかったんです。
参考になりました。ありがとう。
643デフォルトの名無しさん:2007/01/08(月) 04:56:05
なんでDelphi厨は自分のサイトで音楽を流したがるんですか
644デフォルトの名無しさん:2007/01/08(月) 05:38:42
>>643
それは永遠の謎
645デフォルトの名無しさん:2007/01/08(月) 05:43:18
デルポイといえば音楽(竪琴)を司るアポロン神の神託所ではないか。
646デフォルトの名無しさん:2007/01/08(月) 08:24:33
>639
こんな感じか?
procedure TForm1.Button2Click(Sender: TObject);
var
Idx : Integer; // カウンタ
Str2: AnsiString; // 16進数変換後文字列
Str3: AnsiString; // 画面表示用
BAry: Array[1..128] of Byte; // バイト配列
begin
Str3 := '';
for Idx := 1 to Length(edit2.Text) do
begin
// 画面入力 -> "ABCD"
// 16進数変換 -> 41424344
// バイト配列 -> 34 31 34 32 34 33 34 34(4 1 4 2 4 3 4 4)
Str2 := IntToHex(Ord(edit2.Text[Idx]), 2); // 入力した文字列を16進数に
Str3 := Str3 + Str2; // 画面表示用
Bary[(Idx - 1) * 2 + 1] := Ord(Str2[1]); // バイト配列に16進数の1桁目を転記
Bary[(Idx - 1) * 2 + 2] := Ord(Str2[2]); // バイト配列に16進数の2桁目を転記
end;
edit3.Text := Str3;
end;
647デフォルトの名無しさん:2007/01/08(月) 11:31:46
>>645
すげー勉強になった
今まで俺のサイトで音楽流してなかったのが恥ずかしいです
648デフォルトの名無しさん:2007/01/08(月) 18:59:09
ポインタの演算は不可能?
var p: PInteger;
begin
 ...;
 p := @hoge + 1;
 hoge := (p + 5)^;
 (p + 6)^ := (@hoge + 2)^;
って感じで
649デフォルトの名無しさん:2007/01/08(月) 19:55:31
Delphiのポインタで+演算子を使えるのはpcharとあとなんかだけ

というわけで、普通は配列のポインタを使えばOK
var p: PIntegerArray;
begin
 ...;
 p := @hoge [1];
 hoge := p [5];
 p [6] := hoge [2];
650デフォルトの名無しさん:2007/01/08(月) 21:49:48
Inc/DecはいちおうOKらしい。
651デフォルトの名無しさん:2007/01/08(月) 22:34:55
Turbo Delphiを使っています。
DBGridのColomのWidthプロパティを変更して、実行しても幅がデフォルトの長さのまま変わりません、これはバグでしょうか?
652デフォルトの名無しさん:2007/01/08(月) 23:46:48
>>648
Integerにキャストする手もある
653デフォルトの名無しさん:2007/01/09(火) 00:10:21
TDataSetのDisplayWidthに依存
654デフォルトの名無しさん:2007/01/09(火) 02:51:51
「if not value then 中断 else 文字列追加」じゃなくて「if value <> '' then 文字列追加 else 中断」にしたほうがスマートなような
655デフォルトの名無しさん:2007/01/09(火) 04:19:04
なぜか>>463までしか見えてなかった
浦島太郎気分
656デフォルトの名無しさん:2007/01/09(火) 16:44:40
CreateOleObjectで宣言したオブジェクトは、
どうやって開放してやればいいでしょうか?
何もしなくもても、自動的に開放されるものなのでしょうか?

常駐系のプログラムで、定期的にCreateOleObjectを実行するので、
きちんとオブジェクトが消えるようにしたいのですが
657デフォルトの名無しさん:2007/01/09(火) 17:10:40
Unassignedを代入じゃなかったか?
658デフォルトの名無しさん:2007/01/09(火) 17:45:02
おれも音楽ながそう
659デフォルトの名無しさん:2007/01/09(火) 17:49:53
おれもおれも
660デフォルトの名無しさん:2007/01/09(火) 18:01:39
>656
Delphi7のヘルプから
ヒント:例で示されているように,CreateOleObject の返すインターフェースが
Variant に割り当てられている場合は,Unassigned 定数をその Variant に
割り当てることでインターフェースを解放できます。
661656:2007/01/09(火) 20:46:25
>>657,660
有難うございます、わかりました。
662デフォルトの名無しさん:2007/01/09(火) 23:16:30
このスレを見ている人はこんなスレも見ています。(ver 0.20)
過去ログ [おいらロビー]
【VB】ウイルスバスター2007 Part26【TrendMicro】 [セキュリティ]
綜合警備保障(ALSOK)ってどうよ? その3 [転職]
45歳以上の転職Part7 -25 OR 6 TO 4- [転職]
●●オブジェクト設計は何故流行らないの?●● [プログラマー]

45歳以上でプログラマーから警備員に転職か。 ちょっとキツイね。
663デフォルトの名無しさん:2007/01/09(火) 23:22:19
自分43でプログラマからヘリ操縦士に転進した。
664デフォルトの名無しさん:2007/01/09(火) 23:53:39
俺も自宅警備員に転職した
665デフォルトの名無しさん:2007/01/10(水) 00:04:44
俺もDel厨に転落s
666デフォルトの名無しさん:2007/01/10(水) 00:42:08
質問します。

ttp://www.swissdelphicenter.com/en/showcode.php?id=2300
にある、指定されたURLをMHTMLで保存するコードなのですが
文字列を渡して関数を呼び出しても
oMSG.CreateMHTMLBody(AUrl); の部分で ”構文が無効です”と警告されます。

ttp://delphi.about.com/od/internetintranet/l/aa062904a.htm
にもWebBrowserを併用したサンプルコードがあり、
こちらはそのままだと問題なく動きます。しかし、
Msg.CreateMHTMLBody(URL, cdoSuppressAll, '', '');
のWideString型のURLという変数にWebBrowserのLocationURLではなく
自分で文字列を代入させると、やはり ”構文が無効です”と警告されます。

変数に代入した時点で同じ文字列なのに何故このような事が起こるのでしょうか。
それともこれはWebBrowserを併用しなければいけないものなのでしょうか。
667デフォルトの名無しさん:2007/01/10(水) 00:52:50
>>666
> oMSG.CreateMHTMLBody(AUrl); の部分で ”構文が無効です”と警告されます。

再現しません。
delphi2006 Update2 + XP SP2 + IE6 です。

uses ComObj; を忘れているなんて事はありませんよね。
668デフォルトの名無しさん:2007/01/10(水) 01:16:58
ComObjはuses節に追加してあります
コンパイルは通りますが
いざ実行する時にエラーが出ます

//関数呼び出し
procedure TForm1.Button1Click(Sender: TObject);
begin
SaveToMHT('http://www.google.co.jp/', 'tmp');
end;

>oMSG.CreateMHTMLBody(AUrl);
プロジェクト Project1.exe が EOleExceptiopnクラスの例外を生成しました。
'構文が無効です'
669デフォルトの名無しさん:2007/01/10(水) 01:18:25
無限ループを、ユーザーからの操作でBreakさせるいい方法ないでしょうか?
ループ中はウィンドウが固まっているので、ホットキーで抜けられるようにしたいです。
670デフォルトの名無しさん:2007/01/10(水) 01:55:50
プログラマは無限ループができるようなコードを書いてはいけない
671デフォルトの名無しさん:2007/01/10(水) 02:41:19
>>669
無限ループって怖くね?
672デフォルトの名無しさん:2007/01/10(水) 02:50:00
やるにしてもメインスレッドでなんて・・・
673デフォルトの名無しさん:2007/01/10(水) 03:40:37
ホットキーで抜けれるってことは…
そもそも何かの操作をするまでループという処理は
無限ループではないんじゃね?
674デフォルトの名無しさん:2007/01/10(水) 03:58:27
ていうかメインのメッセージループがまさにそれだろ。
ユーザーまたはシステムが WM_QUIT 投げるまでループし続けるんだから。
それと同じ処理を書いてやればいいだけ。
675デフォルトの名無しさん:2007/01/10(水) 04:33:44
プログラマは無限ループができるようなコードを書いてはいけない
676デフォルトの名無しさん:2007/01/10(水) 04:45:10
for i := MinInt To MaxInt do
にしとけ。
677デフォルトの名無しさん:2007/01/10(水) 06:34:12
ループ中で、Application.なんとか(忘れた
呼び出して、KeyDownかなんかで、フラグ立てて、停止

ほかは、ループ内で、GetAsyncKeyStateで停止
678デフォルトの名無しさん:2007/01/10(水) 07:06:23
ただ単にループ作業中でウインドウが一時固まって操作不能の状態を無限ループと表現しているのかな。
679デフォルトの名無しさん:2007/01/10(水) 08:26:03
無限ループの処理を別スレッド内にブチ込む
680デフォルトの名無しさん:2007/01/10(水) 10:58:30
ProcessMessage
681デフォルトの名無しさん:2007/01/10(水) 11:52:54
>>668
> いざ実行する時にエラーが出ます

http://www.google.co.jp/ は駄目みたいです。
http://www.yomiuri.co.jp/
http://www.yahoo.co.jp/ は上手くいきました。
682デフォルトの名無しさん:2007/01/10(水) 13:08:00
無限ループの質問をした者です。たくさんの助言ありがとうございます。
GetAsyncKeyState関数を使うことによって解決できました。
どうもありがとうございました!
683681:2007/01/10(水) 13:54:20
たぶん、原因はこれです。

CreateMHTMLBody Won't Read Web Pages Compressed with GZIP
https://blogs.msdn.com/jasonjoh/archive/2005/12/08/501760.aspx
684デフォルトの名無しさん:2007/01/10(水) 15:07:18
Delphi2005で作成したDLLを、同じくDelphi2005で使った時に、
「読み込み違反」がでて正常に動作しません

何が原因で、どこを直せばいいのでしょうか?

DLL側のソース
  function call1(intNo : integer; varParam:PChar): PChar; stdcall;
   Result := PChar('a');
  end

呼び出す方のソース

  function call1(intNo : integer; varParam:PChar): PChar; stdcall; external 'test.dll' name 'stadcall';

  procedure TForm1.Button1Click(Sender: TObject);
    var param : PChar;
    var ret : PChar;
    var buff : String;
    var intNo : integer;
  begin
    intNo := 1;
    param := PChar('1234');
    ret := call1(intNo,param);
    buff := ret; //← ここでエラー(コメントにすると動きます)
  end;
685デフォルトの名無しさん:2007/01/10(水) 15:28:52
> external 'test.dll' name 'stadcall';
686684:2007/01/10(水) 15:39:05
>>685
ありがとうございます
687684:2007/01/10(水) 15:43:50
何度も質問ばかりで、すいません

DLL側でCoInitialize(最初に)、CoUninitialize(最後に)
を使ってCOMの初期化を行っているのですが
処理の中で、CreateOleObjectを使った後にCoUninitializeをすると、
DLLの終了時に「読み込み違反」が発生します。

どうすればいいのでしょうか?

688デフォルトの名無しさん:2007/01/10(水) 16:58:41
CreateOleObject で作ったオブジェクトが開放される前に CoUninitialize してるんじゃない?
689デフォルトの名無しさん:2007/01/10(水) 17:03:06
>>687
> DLL側でCoInitialize(最初に)、CoUninitialize(最後に)

これはinitialization とfinalization で呼んでいるという事?
690684:2007/01/10(水) 17:09:02
DLLの呼ばれる関数の先頭と最後にやってます。
initialization とfinalization は何も書いてません。
691デフォルトの名無しさん:2007/01/10(水) 17:10:43
>>688 みたいな事があるから
場所を移してみたら、どう?
692デフォルトの名無しさん:2007/01/10(水) 18:14:16
procedure hoge;
var
 Obj: IDispatch;
begin
 CoInitialize(nil);
 Obj := CreateOleObject(...);
  ...
 CoUninitialize;
end;

Delphi ではインターフェースオブジェクトの AddRef/Release が参照数の変化に応じて自動的に呼ばれる。
上記の場合、ローカル変数 Obj の寿命、即ち関数の終了時に最終的な _Release が呼ばれ、インスタンスが破棄されることになり、
その前に CoUninitialize する事になるので問題が発生する。
CoInitialize/CoUninitialize を関数外に出すか、下記のように手動で変数の寿命を示す事で解決できる。

var
 Obj: ^IInterface;
begin
 CoInitialize(nil);
 New(Obj);
 Obj^ := CreateOleObject(...);
 ...
 Dispose(Obj);
 CoUninitialize;
end;
693デフォルトの名無しさん:2007/01/10(水) 18:52:07
デスクトップの左上隅に常に文字を表示させるにはどうしたら良いのでしょうか?
描画が必要になったら関数を呼び出して描画すれば済むのでしょうが、
どう書けば良いのかわかりません><
694デフォルトの名無しさん:2007/01/10(水) 18:56:19
>>681=683
ありがとうございます。
とりあえずHTTP/1.1を使用しない事でエラーは回避出来ました。
ウェブブラウザで読み込んだ後だと1.1でも問題ないのは
キャッシュを参照していたからでしょうかね。
695デフォルトの名無しさん:2007/01/10(水) 19:02:15
>>693
スマートなやり方じゃないけど
新しいフォーム作ってLeft0Top0にLabel置いて
フォームもLeft0Top0
フォームのAlphaBlendValueは0にして
FormStyleはStayOnTopで
Showすればいいんじゃない
696デフォルトの名無しさん:2007/01/10(水) 19:08:53
>>695
AlphaBlendValue 0 にしたら見えないじゃん
697693:2007/01/10(水) 19:09:31
>>695
できればTextOutで文字を描画したいです・・・><
698デフォルトの名無しさん:2007/01/10(水) 19:14:52
>>696
ああすまんTransParentColor=FormColorと間違えてたわ
699デフォルトの名無しさん:2007/01/10(水) 19:26:35
GetDC(0)とかだったっけ
700デフォルトの名無しさん:2007/01/10(水) 19:32:00
>>697
んじゃLabel使わずにOnPaintでTextOutして書き込めばええ
701デフォルトの名無しさん:2007/01/10(水) 20:37:05
GetDC(0)でデスクトップウィンドウのデバイスコンテキストのハンドルを取得し、描画できるけど、
「常に」描画するとなると、うーーーん(こ)。
702693,697:2007/01/10(水) 21:12:18
>>701
まさにその状態です・・・

描画が必要だよー\(^o^)/ → 文字描画/(^o^)\

ってやりたいんですが、どうやってメッセージを
取得すりゃいいんだろう・・・
703デフォルトの名無しさん:2007/01/10(水) 21:29:24
オワタ フンカ?
704694:2007/01/10(水) 21:36:28
度々失礼します。掲示していただいた
https://blogs.msdn.com/jasonjoh/archive/2005/12/08/501760.aspx
のVBのコードをDelphiに書き直しているのですが

uses wininet;

procedure TForm1.Button1Click(Sender: TObject);
var
 verInfo: INTERNET_VERSION_INFO;
begin

 verInfo.dwMajorVersion := 1;
 verInfo.dwMinorVersion := 0;

 InternetSetOption(nil, INTERNET_OPTION_HTTP_VERSION
, verInfo, SizeOf(verInfo));
end;

のSizeOf(verInfo)の部分で
INTERNET_OPTION_HTTP_VERSION と Pointer には互換性がありませんと警告されるのですが
この部分はどの様に書けばいいのでしょうか。
705649:2007/01/10(水) 21:46:45
連投失礼します。
自己解決できました。

× InternetSetOption(nil, INTERNET_OPTION_HTTP_VERSION , verInfo, SizeOf(verInfo));
○ InternetSetOption(nil, INTERNET_OPTION_HTTP_VERSION, @verInfo, SizeOf(verInfo));

第三引数の変数の前に@が無かったのが原因でした。(@の意味が良く分かりませんが)
参考:ttp://forum.nifty.com/fdelphi/samples/01105.html
706デフォルトの名無しさん:2007/01/10(水) 21:47:20
> , verInfo, SizeOf(verInfo));

, @verInfo, SizeOf(verInfo)); かな。
707デフォルトの名無しさん:2007/01/10(水) 21:48:39
あらら、かぶった。

> 。(@の意味が良く分かりませんが
アドレスを返す演算子。
708デフォルトの名無しさん:2007/01/10(水) 21:56:02
>>707
ありがとうございます。覚えておきます。
709デフォルトの名無しさん:2007/01/10(水) 23:07:28
色の定数clNoneとclDefaultについて教えて下さい。これは何のためにあるのでしょうか??
Windowsのシステムカラーでもなさそうですし。この色を設定したとき、どんな色が使われると
考えていいのでしょうか?
710デフォルトの名無しさん:2007/01/10(水) 23:59:32
>>709
Graphics.int には
clNone = TColor($1FFFFFFF);
clDefault = TColor($20000000);
となってる。
多分、VCLオリジナルで、VCL内部で解釈されるのだと思う。
APIにこの数値は渡していないみたいだよ。
VCLソースを検索すればどう使われているか解かるよ。
711デフォルトの名無しさん:2007/01/11(木) 00:25:23
>>710
そうですか、ちょっと検索かけてみます。今コンポーネントを製作中でそれらの色を
どうコンポーネントで解釈していいのか悩んでいました。これらの値をAPIに渡していないなら
自作コンポの方でも指定された時に、別の色に置き換えて内部で使用します。
ありがとうございます。
712デフォルトの名無しさん:2007/01/11(木) 00:32:49
>711
つ ColorToRGB
713684:2007/01/11(木) 11:09:08
>>691
DLLなので、initializationを書く位置がわからず手間取ってました、
別unitを作り、
そこにinitialization、finalizationを書いて実行させたところ、
エラーも無く動作しました。

ありがとうございます m(__)m

691 :デフォルトの名無しさん :2007/01/10(水) 17:10:43
>>688 みたいな事があるから
場所を移してみたら、どう?
714デフォルトの名無しさん:2007/01/11(木) 15:37:25
Turbo Delphiをインストールしたのですが、ヘルプが使用できなくて困っています。

具体的には、Turbo Delphiを起動したあと、メニューバーの[ヘルプ]→
[Borland ヘルプ]を選択すると、「名前空間が定義されていません」という
エラーダイアログが出ます。画面内の[ファーストステップ]をクリックすると
Microsoft Document Explorerが起動しますが、一瞬タイトルバーやタブに
「Internet Explorer ではこのページを表示できません」と出た後、
「ナビゲーションは取り消されました」と表示されます。

ちなみにユーザーズガイドなどのPDFファイルや、Borlandのサイトなどは
画面内に正常に表示されます。

どうしたらヘルプが表示できるでしょうか。
715デフォルトの名無しさん:2007/01/11(木) 16:56:42
Turbo のヘルプは調子が悪いので

IDE のメニューからではなく、ヘルプのショートカットを作って
そこから起動した方が確実です。
716デフォルトの名無しさん:2007/01/11(木) 19:23:13
>>715
レスありがとうございます。
書き忘れていましたが、スタートメニューから[ドキュメンテーション]を
起動した場合も駄目なのです。Microsoft Document Explorerは起動するのですが、
about:blank(IE7のホームページ)が開き、目次には何も表示されません。
検索すると、「名前空間が指定されていません。: ms-help://borland.bds4」という
エラーダイアログが出ます。
717デフォルトの名無しさん:2007/01/11(木) 21:06:03
> エラーダイアログが出ます。
ヘルプが壊れているようですね。

コマンドラインで
BDS\4.0\Help\Common\regHelp.exe -7 と
BDS\4.0\Help\Common\regHelp.exe 7 を実行してみたら
どうでしょう。
718デフォルトの名無しさん:2007/01/11(木) 22:48:13
>>717
ありがとうございます。表示されました。

・[ドキュメンテーション]からではなくDelphi IDEから開いた場合には目次が表示されない
・ページが表示される前にいったん「Internet Explorer ではこのページを表示できません」と出る

という不都合は残っていますが、使用には耐えそうなのでこれで行ってみます。
719デフォルトの名無しさん:2007/01/11(木) 22:57:36
>>718
IE7 がインストールされているPC でTurbo を使う場合は
レジストリを変更しておいた方が良いです。
http://www.stevetrefethen.com/files/FEATURE_OBJECT_CACHING.reg
720デフォルトの名無しさん:2007/01/12(金) 03:16:44
ListBoxを表示、OKボタン、キャンセルボタンがあり、
OKボタンが押されたら選択されているアイテムのパラメータを返すという子窓を作成したいです。
ゲームのアイテム選択画面みたいなものを作成したいのですが、
まず小窓をどうやって作成するのかがわかりません。
どなたか教えていただけないでしょうか
721デフォルトの名無しさん:2007/01/12(金) 03:21:43
セレクトされてるItemIndexを取得
取得したItemIndexのリストの文字列を取得
グローバル変数なんかに入れて
新しいフォームをShowして表示
とかじゃだめ?
722デフォルトの名無しさん:2007/01/12(金) 20:39:51
フォントダイアログで取得したフォントを使うとき

procedure TForm1.Button1Click(Sender: TObject);
var
MyFont:TFont;
begin
if not FontDialog1.Execute then exit;
MyFont:=TFont.Create;
//MyFont:=FontDialog1.Font; // @
//MyFont.Assign(FontDialog1.Font); // A
MyFont.Free;
end;

@にすると終了時にエラーが出ます。どぼじで?
723デフォルトの名無しさん:2007/01/12(金) 21:05:32
MyFont.FreeでTFontオブジェクトが破棄されてるから、FontDialog1.Fontが無効な参照になる。
724デフォルトの名無しさん:2007/01/12(金) 22:36:11
MyFontはCreateしてインスタンス化する必要ないんでは?
725ななしへたぐらま ◆XcB18Bks.Y :2007/01/12(金) 23:24:56
>>722
Delphiのオブジェクト変数はC++と違ってオブジェクトのある場所を指しているに過ぎません.
そのため@のコードは

  変数MyFontの中身(ひとつ上の行で生成したオブジェクトの場所が書いてある)を
  FontDialog1.Fontが指している場所で書き換えた

に過ぎません.ゆえに

最後のMyFont.FreeはFontDialog1.Fontが指しているオブジェクトを勝手に解放することになってしまいますし,
@の直前に生成したTFont型オブジェクトは解放されることもなくそのまま残ってしまいます.

その後はFontDialog1が次にFontプロパティを参照しようとしてもすでにそこにはオブジェクトが存在しません.
Delphiのランタイムルーチンがその場所を別な用途に使っていれば混乱して誤動作するでしょう.
もしすでにその場所をWindowsに返している場合はWindowsによってプログラムからの読み書き(アクセス)が禁止されていますので
読み書きしようとした時点でアクセス違反というWindowsのエラーになります.

一方AのコードはFontDialog1.Fontというプロパティが返してくる場所にあるオブジェクトのフォント情報を
変数MyFontが指している場所にあるオブジェクトに書き写しています.
726デフォルトの名無しさん:2007/01/12(金) 23:32:51
>>724
え、TFontはレコード型ではないけど、Createはしなくてもいいの?
コンストラクタ・デストラクタにFontManager.AllocResourceとかFontManager.FreeResourceとか書かれてるので、
ちゃんとCreate…Freeしないといけないと思ってた・・・

あれ、でもDelphiにおける「クラス」って、
C++でいうと TFont *font = new TFont(); みたいなもんで、
Createしてフィールドにメモリの領域を与えないと、使えないような・・・
うーん。知識が中途半端だから分からん・・・

とりあえず、クラスはヒープ、レコード型は(New、GetMemを使うとかでなければ)スタックでOK?
727デフォルトの名無しさん:2007/01/12(金) 23:50:56
>>725
C++もクラス型の変数ってオブジェクトのある場所を指しているんじゃないか??
>>726
TFontはクラス型だから、自分でインスタンス作る場合はCreateしなくちゃいけん。
728ななしへたぐらま ◆XcB18Bks.Y :2007/01/12(金) 23:51:26
>>720
普通のフォームをもう1個作ってそれを子窓にすることができます.

[ファイル]→[フォームの新規作成]を実行すると新しいフォームができるので
ここにリストボックスやボタンを貼り付けてください.

フォームのNameプロパティにわかりやすい名前(KomadoFormとか)をつけて
ファイル名にもわかりやすい名前(Komadoとか)を付けて保存してください.

ほかのフォームから呼び出すためには
ほかのフォームがアクティブになっている状態で
[ファイル]→[ユニットを使う]を実行し,上で保存したファイル名を選んでください.
729デフォルトの名無しさん:2007/01/12(金) 23:52:53
MyFont:=FontDialog1.Font;
をしたらMyFontもFontDialog1.Fontも同一のTFontインスタンスを指すようになるんだよ。
730ななしへたぐらま ◆XcB18Bks.Y :2007/01/12(金) 23:58:51
>>726
フォントダイアログを使って何かのフォントを変更する場合は
if FontDialog1.Execute then
 Memo1.Font.Assign(FontDialog1.Font);
みたいな感じのコードになると思うのですよ.

>>724でわざわざCreateする必要はないというのはもしかしたらこういう事なの…かも?

>>727
C++はもう5年以上やっていないので忘れまくっているかも(汗)
間違ってたらごめんなさいね.
731デフォルトの名無しさん:2007/01/13(土) 00:08:35
727だけど、おれもかれこれ5年以上さわってなくて。今調べたら、2種類インスタンスの実体化の方法があったのね。
TFont afont;
TFont *bfont;
みたいな感じで。
メンゴ。
>>724
つまり、
//MyFont:=FontDialog1.Font; // @
の場合、C++で書くと、 bfont = &afont
//MyFont:=FontDialog1.Font; // A
の場合、
bfont = new TFont;
bfont = afont
かな?
732デフォルトの名無しさん:2007/01/13(土) 00:08:54
>>727
C++だとstruct(レコード型)とclassは大差ないから、

TMyClass myclass(123); // myclass := TMyClass.Create(123);

みたいな静的?利用ができるじゃん。
ここでmyclassは TMyClass * じゃなくて TMyClass。
デストラクタが呼び出されるのは、スコープの範囲外になったらなので、解放を明示しなくてもいい感じで。

ちなみに、C++BuilderでVCLのクラス(TObjectを継承したもの全て)
を使う場合は、Delphiと同様に

TFont *font = new TFont();
...;
delete font; // font->Free();

ってやらないとダメ。(だったと思う
733デフォルトの名無しさん:2007/01/13(土) 00:09:58
//MyFont.Assign(FontDialog1.Font); // A
bfont = new TFont;
bfont = afont
だった。
734デフォルトの名無しさん:2007/01/13(土) 00:17:28
//MyFont.Assign(FontDialog1.Font); // A
いや、bfont = afont じゃなく、
うーん。参照演算子忘れたので、やめとく。
735デフォルトの名無しさん:2007/01/13(土) 00:53:39
おいおい、どいつもこいつもあやふやなこと書くなよー

クラス型変数が参照あるいはポインタそのものである開発言語の例:
Delphi(class型)・C#・JAVA・PHP5

クラス型変数が値である開発言語の例:
Delphi(object型)・C++・PHP4まで

むろん、C++では、クラス型変数のポインタを使ってnewで動的に扱うことも出来る。
今時のDelphiでobject型なんぞ使わんように。
736デフォルトの名無しさん:2007/01/13(土) 00:54:20
ゆえに、クラス型変数同士で代入した場合、Delphiのclassでは参照渡しになるし、 C++では値渡しになる。
737デフォルトの名無しさん:2007/01/13(土) 01:24:49
そして>>735はクラスとオブジェクトの違いが分かってない・・・と
738デフォルトの名無しさん:2007/01/13(土) 03:20:06
>>737
そう偉そうにいうなら説明してみそ
クラスとインスタンスの違いのことを言いたいのかねちみは
739デフォルトの名無しさん:2007/01/13(土) 05:36:55
>>737
あそこまで、えらそうにでてきて、それはないww」
740デフォルトの名無しさん:2007/01/13(土) 06:35:59
質問です
とあるツールのフォーム内にPanelがあり、その中にMemoやButtonがあります
このような場合、Memoのハンドルを取得するにはどうすれば良いでしょうか?
741デフォルトの名無しさん:2007/01/13(土) 07:54:12
Memo.Handle
742デフォルトの名無しさん:2007/01/13(土) 07:56:22
他のアプリのMemoのハンドルだろ?
743740:2007/01/13(土) 09:40:32
>>742
そうでございます
744デフォルトの名無しさん:2007/01/13(土) 11:20:49
ファイルの作成日時の変更ってどうやるんでしょうか?
745デフォルトの名無しさん:2007/01/13(土) 12:52:32
超初心者の質問です。Turbo Delphiを使ってます。

既に作ってあるプロジェクト(P1)のソースを一部変更して
新しいプロジェクト(P2)として名前を付けて保存すると、P1の
ソースまで変更されてしまうのですが、これは何がいけないの
でしょうか?

つまり、EXCELなんかでは既存のシートを変更しても名前を
変えて保存すれば既存のシートの内容は元のままですが、
これと同じことをDelphiでもしたいのです。

746デフォルトの名無しさん:2007/01/13(土) 13:13:27
>>745
> これと同じことをDelphiでもしたいのです。
Excel と違って1つのファイルに全部収まっている訳ではないから無理。

> 一部変更して
変更しているのだから
2つのプロジェクトから同じファイルを参照する意味はない。

プロジェクトごとにソースをコピーして、別々に管理するのが良い。
747デフォルトの名無しさん:2007/01/13(土) 13:16:06
>>744
つ FileSetDate
748デフォルトの名無しさん:2007/01/13(土) 13:16:56
プロジェクトを「名前を付けて保存」で別名保存しても、
プロジェクトに登録されているソースは元のままで、
元のプロジェクトとソースを共有する状態でしょ。

プロジェクトのディレクトリごとコピーしてから、localとdskファイルを削除し
コピーした方のプロジェクトを開いて同じことをすればいいのでは。
749デフォルトの名無しさん:2007/01/13(土) 13:21:37
>>745
どーせバックアップとかって話しじゃないの?
svnなりcvsなり使いなよ
750745:2007/01/13(土) 14:36:24
>>746>>748
ありがとうございます。
ソースをコピーして使ってみます。
751デフォルトの名無しさん:2007/01/13(土) 16:00:04
そうそうw
localとdsk削除し忘れて、コピー前のを書き換えて死んだ覚えがある。
今は、svn使ってるが、
svnでも、localとdskはもちろん対象外にしてる
752デフォルトの名無しさん:2007/01/13(土) 16:16:07
>>751
delphisvn使ってる?
753デフォルトの名無しさん:2007/01/13(土) 18:50:09
delphisvnってのがあんの?
うちは、TortoiseSVNで、ふつーに。
754デフォルトの名無しさん:2007/01/13(土) 19:13:01
>>753
同じくTortoiseSVNを使ってます。

delphisvnはこんな感じで統合されていて、なかなかよさげですが
実際乃使い勝手はどうかなーって思ったんですが。

http://tondrej.blogspot.com/2006/11/delphisvn-for-delphi-7.html
755デフォルトの名無しさん:2007/01/14(日) 00:29:03
秒数を分数に直すにはどうすればいいですか?

具体的には

90秒→1:30

90秒→1分30秒

に変換したいと思っています。
よろしくお願いします。
756デフォルトの名無しさん:2007/01/14(日) 00:42:58
60でdivしたりmodすればいいとおもうお
場合によっては、divmod使えば高速にできる
757デフォルトの名無しさん:2007/01/14(日) 00:43:47
Min := T div 60;
Sec := T mod 60;
758デフォルトの名無しさん:2007/01/14(日) 00:52:22
>>756-757
ありがとうございます。
同様の方法で時間表示もできそうですね。
759デフォルトの名無しさん:2007/01/14(日) 01:50:51
プログラムの前に別の勉強したほうがいいな・・・
760デフォルトの名無しさん:2007/01/14(日) 01:56:32
これがゆとり教育の成果です
761デフォルトの名無しさん:2007/01/14(日) 01:57:47
>>760
こんなのいい方だろ
762720:2007/01/14(日) 02:24:59
みなさんありがとうございました。>>728が決め手で、おかげで解決することができました。
763デフォルトの名無しさん:2007/01/14(日) 02:25:10
あ?死ねよ昭和生まれのオッサンwwwwww
764デフォルトの名無しさん:2007/01/14(日) 07:35:14
まともな奴は塾通ったり家庭教師雇って勉強するのが普通だしな
ゆとり教育は学校の負担減らすものだし
765デフォルトの名無しさん:2007/01/14(日) 10:00:37
>>763みたいなバカって生きてる価値無いよね
766デフォルトの名無しさん:2007/01/14(日) 13:53:35
//サンプルここから
procedure ProcedureTest;
begin
Edit.Text := 'プロシージャ内でコントロールを制御するの...成功ですね!!';
end;
//ここまで
Delphi6 Personalを使用している初心者です。
早速本題なのですが、上のサンプルのように、プロシージャの中でコントロールを制御するような文を書くと「未定義の識別子:'Edit'」というようなエラーが出ます。
初歩的なものなのだろうと思い、検索してもヒットせず、自分でいろいろと研究してみたのですが、どうしても分からないため、質問させていただきます。
恐らく、コントロールの作成よりプロシージャの箇所などを先に読み込んでるのが原因だと思うのですが、解決法をご存知の方、ご返答いただけないでしょうか?よろしくお願いいたします。
767デフォルトの名無しさん:2007/01/14(日) 14:24:58
> 「未定義の識別子:'Edit'」
Edit1 とかじゃないの?
768デフォルトの名無しさん:2007/01/14(日) 15:37:20
>>766
Form1.Editにしてみ
769デフォルトの名無しさん:2007/01/14(日) 16:15:03
自作の関数や手続き内で勝手にeditなどのクラス使えばそれは未定義になるのは当たり前w
var以下でeditの属するクラスを宣言してあげればおk
770デフォルトの名無しさん:2007/01/14(日) 16:32:20
>>767-769
ご回答ありがとうございます。
とりあえず、「MainForm.Edit」にしてみたら(何故「MainForm.Edit」かと言うと、自動的につく名前が気に入らないから変更していたためです)解決しました。ありがとうございました。
771デフォルトの名無しさん:2007/01/14(日) 16:38:22
>>765
夢がないよね
772デフォルトの名無しさん:2007/01/14(日) 16:41:52
>>771
失業中の歯医者の俺をバカにしてんのか
773デフォルトの名無しさん:2007/01/14(日) 16:43:26
>>772
だからバカに用はねーよ
774デフォルトの名無しさん:2007/01/14(日) 17:56:35
歯医者だってよ。また、中途半端な職業だな。普通の外科医・内科医になれなかったおちこぼれ。ってイメージだよな。
775デフォルトの名無しさん:2007/01/14(日) 18:03:20
お前ら新しい暗号化アルゴリズムでも考えて落ち着けよ
776デフォルトの名無しさん:2007/01/14(日) 20:26:39
>>774
世の中は外科医・内科医だけでは回らんぞ
777デフォルトの名無しさん:2007/01/14(日) 21:14:33
俺、失業中の歯医者だけど、あきらめて大学院に入り直すことにしたよ
778デフォルトの名無しさん:2007/01/14(日) 21:22:33
今度は何を専攻するの?
779デフォルトの名無しさん:2007/01/14(日) 21:27:42
またVB厨が自作自演でスレ荒らしているのか?
780デフォルトの名無しさん:2007/01/14(日) 21:45:26
VBなら虫歯にならないのにね
781デフォルトの名無しさん:2007/01/15(月) 04:54:53
ありがとう・・・

(´;ω;`)ブワッ
782デフォルトの名無しさん:2007/01/15(月) 05:10:44
( ´`ω´)フフフ
783デフォルトの名無しさん:2007/01/15(月) 07:51:38
VBならばらばらにしなくてもよかったのにね
784デフォルトの名無しさん:2007/01/15(月) 09:28:36
いま、例外が前提なのを書いているんですが、
try文を使っているのにデバッカが例外メッセージを出していちいち止まってめんどくさいです。
コンパイル後にできるバイナリはちゃんと動きます。

デバッカが例外メッセージを拾わないようにする方法はあるでしょうか?
(すべて例外を無視したらデバックの意味がないのはわかりますが…)
785デフォルトの名無しさん:2007/01/15(月) 09:47:42
>>784
EAbort から派生させた例外クラスを使うか、
IDE の環境設定で「無視する例外の種類」のリストに無視したい例外クラスを追加する
786デフォルトの名無しさん:2007/01/15(月) 11:33:13
虫歯は歯医者が設けるためにまいたウィルスのせいだから、歯医者は氏ね
787デフォルトの名無しさん:2007/01/15(月) 11:42:24
>>785
ありがとうございました。
EAbortをググって解決しました。
IDEのデバックの設定の方は、設定してやると実行時無反応になったので断念。
788デフォルトの名無しさん:2007/01/15(月) 11:48:53
今、メインformのcreateイベントでiniファイルからの読み出し部分をコーディングしています。
で、そこで、form2にあるオブジェクトに値を渡すと例外が起きます。

例外が起きる理由は分かるんですが、できればiniからの読み出し部分はひとつのfunctionですませたいと思っています。
この場合、エラーをtryで弾くか、別のイベントをつかうがどちらがいいのでしょう?
それとも、読み出し部分をフォーム数だけ分けた方がいいのでしょうか?
789デフォルトの名無しさん:2007/01/15(月) 11:53:52
>>788
そのタイミングだと、form2が生成されていないからだよね。
俺の場合は、よきタイミングで、
iniクラスのインスタンスを引数にして、各フォームにたらいまわしにしている。
まあ、つまり、フォーム数分だけ、分けてる。

他の人はどうしてるのかな?
790デフォルトの名無しさん:2007/01/15(月) 11:59:47
>>788
ケースバイケースかな。
各フォームのOnCreateに書く場合もあるし、
メインフォームで変数に読み出しておいてForm2の表示時に設定する場合もあるし
メインフォームのOnShowに書く場合もある。
791デフォルトの名無しさん:2007/01/15(月) 12:41:33
>>786
俺、失業中の歯医者だけど、その発想は無かった
792デフォルトの名無しさん:2007/01/15(月) 15:18:20
起動時に一度しか読まないもので、なおかつ複数のフォームにからむ処理なら
 .dpr の  Application.Run; の直前に入れるのが普通じゃないのかな

何でもかんでも フォームに押し込めるは悪いクセを付けちゃうよ
DOC/VIEWモデル程じゃなくても、ある程度分離しようよ
793デフォルトの名無しさん:2007/01/15(月) 15:31:24
>>792
できました。
.dprをいじるって発想がありませんでした。
(昔、二重起動防止とかでいじったのを忘れてた)

趣味でプログラムしているのと、過去の蓄積もほとんど無いので、
こういった設計手法(?)とかが全然つかめなくて。

勉強になります。
794デフォルトの名無しさん:2007/01/15(月) 15:36:06
いま、スクロールするラベルを探しています。
msgscrはためしてみたんですけど、イベントが全くなくて使いづらく、
TMarqueeもためしてみたんですけど、
文字の色がfont.colorで変更できず、textの頭に色コードを整数で入れる仕様で、
ちょっと生理的に受け付けなかったです…。
なんかいいコンポーネントはないでしょうか?
ラベルのイベントを継承してて、文字を流すのと止めるのができればいいんですけど。
795デフォルトの名無しさん:2007/01/15(月) 15:50:57
パクって作ればいいじゃん
796デフォルトの名無しさん:2007/01/15(月) 18:22:52
テレビ見て気づいたんだけど、なにげに>>771の「夢がないよね」って、
バラバラ殺人の事件とかけていたのか。きづかねぇよ。んなこと。
797デフォルトの名無しさん:2007/01/15(月) 18:39:00
>>792
俺は、そのタイミングで、各フォームの読み込み関数にまわしてる
798デフォルトの名無しさん:2007/01/15(月) 18:57:05
俺はデータモジュールに色々共通なものまとめてるな。
799ななしへたぐらま ◆XcB18Bks.Y :2007/01/15(月) 23:38:54
私もデータモジュールにアプリケーション全体で扱う情報まとめています.
というかひとつのユニットにまとめないと悲惨です.

(昔やった他人が作ったプロジェクトの修正のお仕事で
フォームが60以上あってその中のいくつかのフォームに
アプリケーション全体で使う情報が分散しているという恐ろしいものがありました.
ちなみに仕様書無しです)

比較的小さいプログラムを作るときもデータモジュールは作っています.
800ななしへたぐらま ◆XcB18Bks.Y :2007/01/15(月) 23:59:09
>>770
自動的に付く名前はあくまで仮のものですし
わかりやすい名前を付けることはわかりやすいソースコードにつながります.
これはプログラミングでは重要ですので
名前を変えてしまうのはむしろ良いことです.

ちなみにその手続きが作ったフォームに関する処理を行うものなら
(普通の)手続きよりもフォームの「メソッド」にしたほうがよいでしょう.
理由はいろいろあるのですが
フォームの名前を書かなくても良いので今回みたいなトラブルが初めから起きないというメリットもあります.

(普通の)手続きや関数は主にフォームとの関連性がない処理(たとえば何らかの計算処理,文字列と数値の変換など)
にだけ使うのがよいと思います.
801Delフサギコ ◆A6VzDeLphI :2007/01/16(火) 00:27:15
    ∧,,∧  
   ミ,,゚Д゚彡
    ミ つ旦)~~
  〜と,,,~),,~)  旦~~
]]]]]]]]]]]]]]]]]]]]]]]]]]]]

なるほどなあ。俺も参考にするぞ。
802デフォルトの名無しさん:2007/01/16(火) 00:44:23
えーと、データモジュールでiniの読み込み等初期設定をするのは
プロジェクトが
begin
 Application.Initialize;
 Application.CreateForm(TForm1, Form1);
 Application.CreateForm(TForm2, Form2);
 Application.CreateForm(TDataModule3, DataModule3);
 Application.Run;
end.
っていう風になって
Form1とForm2が生成されたあとにデータモジュールができるから、
データモジュールのonCreateに各オブジェクトに数値を渡すのを書けばいい
ってことですよね? 先にFrom1,2が生成されるから参照しても例外にならないと

すごく便利。データモジュールってデータベース系の非ビジュアルコンポーネント置き場としか思ってなかった。
次からはそういう設定にします。

>>799
…。似たようなことやった記憶が(汗
現役時代(8年ぐらい前)、業務用アプリのメニューの制作を担当したんですけど、
メニュー1ページごとにIDEでパネルをおいて、ボタンを置きまくって
ってのを十数ページやった記憶が。デザイン時、どこをクリックしたらいいのかわからん状態w
さすがにイベントは共通化してtagで振り分けてましたが…。

今思えば、なんでオブジェクトの動的生成をしなかったのかと…。知識がなかったからですが。
803Delフサギコ ◆A6VzDeLphI :2007/01/16(火) 01:13:30
    ∧,,∧  コロコロ
    ミ゚Д゚,,彡 
  σ⊂  ∪ミ  
┳┳ (~,,(~,,,ミ@   

>>621>>633でお世話になったフサギコです。
こんばんは。

こんどは、メモリ使用量=PF使用量を
求めたいのですが、どーしたらよいでしょうか?

    ∧,,∧   知っとったら
   ミ*゚Д゚彡   おせて。
  σ⊂  ∪ミ  
┳┳ (~,,(~,,,ミ@   

ヨロシコ
804デフォルトの名無しさん:2007/01/16(火) 04:03:25
俺はアプリケーションの設定情報を表すクラスを一つ作成して、そのクラスのpublishedなプロパティすべてを
をRTTIを使ってINIまたはレジストリに自動で読み書きするメソッド用意し、データモジュールのOnCreateでそのメソッド呼んでるな。
で、そのクラスのインタンスをグローバルにするか、もしくは、データモジュールのメンバとするかは気分次第。
>>802
どういこと??
>>Application.CreateForm(TForm1, Form1);
を呼んだ段階でフォームのOnCreateイベントが発生するから、ここで、データモジュールを
参照したら、あきらかに、まだ、作られていないので、アクセス違反になる。
データモジュールのOnCreateでINI読むなら、データモジュールをフォームより先に作成すればいいだけ。
begin
 Application.Initialize;
 Application.CreateForm(TDataModule3, DataModule3);
 Application.CreateForm(TForm1, Form1);
 Application.CreateForm(TForm2, Form2);
 Application.Run;
end.
805デフォルトの名無しさん:2007/01/16(火) 05:09:45
>>803
> こんどは、メモリ使用量=PF使用量を

GetPerformanceInfo でコミットチャージ(合計)を取得して
1024で割る。
806デフォルトの名無しさん:2007/01/16(火) 12:50:45
>>803
PDHでやってみるのはどうでしょう?管理ツール→パフォーマンスの奴です。
CPU、メモリ、ネットワーク、ディスク、なんでもいけますよ。
http://www.delphi-jedi.org/apilibrary.html
ここのPERFORMANCE MONITORとか。
807デフォルトの名無しさん:2007/01/16(火) 15:05:53
>>804
DMのOnCreateで読み込む。
因みにDMはFormよりも後にCreateFormされる。
808デフォルトの名無しさん:2007/01/16(火) 15:23:07
(゚Д゚)ハァ?
809デフォルトの名無しさん:2007/01/16(火) 18:11:19
Delphi6でデバッグ中に、OutputDebugStringを見るには?
810デフォルトの名無しさん:2007/01/16(火) 18:53:51
Delphi6です。
簡単にフォームのみを透明にする方法はないでしょうか?
AlphaBlendを使ったら全部透明になってしまいました。
ファームを透明にしつつ、ラベルとかボタンを表示する方法はないでしょうか。
ググったらリージョンってのに行き着いたんですが、手間がかかりすぎるので…。
811デフォルトの名無しさん:2007/01/16(火) 19:24:34
>>809
Perなら無理だったような。
812デフォルトの名無しさん:2007/01/16(火) 21:30:53
>>807
意味不明です。
813デフォルトの名無しさん:2007/01/16(火) 22:29:00
ホントに超初心者的な質問です。

昔で言うところのサブルーチンを作る際、引数も戻り値もない場合はなにで宣言すればいいんでしょう?
自分はfunctionで宣言して、戻り値は適当にIntegerとかに。
で、コンパイルで警告がばんばん出ます。
814デフォルトの名無しさん:2007/01/16(火) 22:33:59
procedure Hoge;
815デフォルトの名無しさん:2007/01/16(火) 22:45:25
>>814

procedureって引数が必須と思いこんでいました。ありがとうございました。
816デフォルトの名無しさん:2007/01/16(火) 23:36:47
WindowsMe&Delphi6で
with MediaPlayer1 do
begin //ExePathはString型の変数で実行ファイルのフォルダのパスが入ってます
 FileName := ExePath + 'Music\a.mp3';
 Open;
 Rewind;
 Play;
end;

こう書いて実行するとなぜかフリーズ&パソ落ちします…
しかもXpが入ったPCで実行した時は正常に動く…

何故でしょうか…
817デフォルトの名無しさん:2007/01/16(火) 23:43:20
>>810
こういうのがあるが

Windows2000の新APIを使った半透明ウィンドウ
http://www2.big.or.jp/~osamu/Delphi/Tips/key.cgi?key=10

2000とXPで使える(Vistaは分からん)



んで俺も質問
TWebBrowserはウェブページは勿論
画像とかもNavigateして見られるけど
それらの区別をするって事出来ますか?
ウェブページであるかを判別したいのですが。
818デフォルトの名無しさん:2007/01/16(火) 23:46:44
>>816
マルチ乙
819デフォルトの名無しさん:2007/01/17(水) 00:08:41
>>817
ありがとです…
ためしてみましたが、AlphaBlendを使ったのと同じく、すべて透明になってしまいましたorz
820デフォルトの名無しさん:2007/01/17(水) 00:09:59
>>816
Windows98を入れてみる
821デフォルトの名無しさん:2007/01/17(水) 00:26:20
AlphaBlendはWindows2000の新APIを使った半透明だよ。。。
822デフォルトの名無しさん:2007/01/17(水) 00:41:36
>>804
意味不明。
DMとFormは、逆だろ?
823デフォルトの名無しさん:2007/01/17(水) 00:54:07
>>822
FormがDMのコンフィグ情報を取得するのか、
DMからFormへ情報を設定しに行くのかによるでしょ。
824デフォルトの名無しさん:2007/01/17(水) 02:03:46
>>819
UpdateLayeredWindowを使えばおk
825デフォルトの名無しさん:2007/01/17(水) 02:26:40
>>823
FormがDMへのコンフィグ情報を取得する場合、
FormとDMで、二つのメンバー(もしくは、片方がプロパティで片方メンバ)を記憶させる必要があり、
冗長ではないのか?

>>816
アプリがどうこうして、OSが落ちることは考えられない。
デバイスドライバのせいではないか?

>>804
RTTIで、うまく読み書きする方法をご教授願いたい。
一括で、すべてのプロパティを保存するのか?
826デフォルトの名無しさん:2007/01/17(水) 09:18:31
>>819
Delphi6はしらんが、Delphi7でなら
TransparentColorとTransparentColorValueでフォームのみの透明化は可能。
827デフォルトの名無しさん:2007/01/17(水) 10:06:05
>>826
できた!
感謝です。
828デフォルトの名無しさん:2007/01/17(水) 12:48:33
TPictureの質問です。

TPicture.で実行時に画像を指定する方法は分かったんですが、
表示している画像のファイルパスを取得する方法はありますか?

もうひとつ
TPictureで表示している画像を初期状態の(なし)に戻す方法はありますか?

よろしくおねがいします
829デフォルトの名無しさん:2007/01/17(水) 13:04:02
>>828
>TPicture.で実行時に画像を指定する方法は分かったんですが、
>表示している画像のファイルパスを取得する方法はありますか?
無いはず
ファイル名をプロパティとして持つ派生クラスを作ると楽かな

>TPictureで表示している画像を初期状態の(なし)に戻す方法はありますか?
TPicture.Grahpic := nil;
830デフォルトの名無しさん:2007/01/17(水) 17:58:00
Socketを利用してLAN内のPC同士でやり取りをしようと思っていますが、
IPアドレスが動的割り振りの場合、どうやって相手のIPアドレスを取得するのがいいですかね?
ネットワークコンピュータ名からIPアドレスを取得できますか?

こういう機能って固定IPアドレス前提なのが当たり前なのでしょうか?

自分が思いついたのは、共有フォルダの範囲内にiniを置いて読み出す方法
ですが、他人に使ってもらえる仕様じゃないと思います(汗
(フリーウェア公開を目指しています)
831デフォルトの名無しさん:2007/01/17(水) 18:27:33
簡単な方法としては ttp://www.ipmsg.org/ を参考にしてはどう?

ようするに全員に問い合わせると
832デフォルトの名無しさん:2007/01/17(水) 18:48:13
>>831
レスありがとうございます。
ソースが理解の範囲を超えていました(汗

全員に問い合わせるっていうと、
サブネットマスクの範囲内で0〜255全部にメッセージを送って成功したアドレスを取得って事ですかね
バグだすとエラいことになりそうな。
833デフォルトの名無しさん:2007/01/17(水) 19:05:47
Delphiで、

#define { begin
#define } end;

とかやれば、Cっぽく書けますか?
834デフォルトの名無しさん:2007/01/17(水) 19:11:38
そもそも#defineから定義しないとダメ
835デフォルトの名無しさん:2007/01/17(水) 19:18:07
ワロタ
836デフォルトの名無しさん:2007/01/17(水) 20:06:01
DBについての質問です。

Int64の値をDBに入れたいのでBigIntで定義したのですが、エラーが出てしまいます。
どちらも8バイトなので問題ないと思うのですが、何故なんでしょうか?

DB: MySQL
接続: ODBC
IDE: Delphi7
OS: XP
837836:2007/01/17(水) 20:11:34
追記
あとクラスはBDEのTDatabaseとTTableを使ってます。

Table1.InsertRecord([Int64(10)]);

こんな感じでレコードを挿入するとエラーが出ます。
宜しくお願いします。
838デフォルトの名無しさん:2007/01/17(水) 20:18:43
>>832
ブロードキャストアドレス で問い合わせるんだよ。
でも普段は出来るだけブロードキャストしなくていいように
自分の情報が変更される時は、その情報を全員に伝えるようにしておけばいいでしょ?
839デフォルトの名無しさん:2007/01/17(水) 21:14:40
>>837
フィールドタイプが間違っているとか。
840デフォルトの名無しさん:2007/01/17(水) 21:34:06
>>837
BDEを使っている場合は

ドライバのオプションで
Don't optimize column widths
Return matching rows
を設定する必要がある。
841デフォルトの名無しさん:2007/01/17(水) 21:41:44
Gridを改造して、選択範囲をドラッグ&ドロップで移動できるようにしたいのですが、
選択範囲をクリックした瞬間に範囲が解除されてしまうので実現できません。
クリックしても範囲が解除されないにはどうすればいいですか?
842837:2007/01/17(水) 22:39:51
レスありがとうございます。

>>839
フィールドタイプとはテーブルの型って事ですか?
create table test (test bigint);
こんな感じでやってます。

>>840
二つのオプションをつけてみましたが、改善されないようです。
一応このオプションつけなくてもIntegerだと普通にインサートできるんですが、
これはInt64或いはBigIntを使う場合に必要って事なんでしょうか?
843デフォルトの名無しさん:2007/01/17(水) 22:48:04
>>842
> フィールドタイプとはテーブルの型って事ですか?

TTable のフィールド(項目コンポーネント)の型
844837:2007/01/17(水) 23:10:10
>>843
失礼しました。項目の型でしたね。
TTableの項目は特に何も設定していなかったりします。

フォームにTDatabaseとTTableを貼り付けて
以下のソースを書いただけです。

procedure TForm1.FormCreate(Sender: TObject);
begin
Database1.AliasName := 'TestDB';
Database1.DatabaseName := 'Test_DB';
Database1.LoginPrompt := False;
Database1.Params.Add('USER NAME=root');
Database1.Params.Add('PASSWORD=password');
Database1.Connected := True;

Table1.DatabaseName := Database1.DatabaseName;
Table1.TableName := 'test';
Table1.Active := True;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Table1.InsertRecord([21474836691]);
end;

ちなみにTDataSourceでTDBGridと関連付けてやると
コマンドプロンプトからMySQLに直接入力した値は問題なく読み出せます。
845Delフサギコ ◆A6VzDeLphI :2007/01/17(水) 23:19:05
>>825さん
> FormがDMへのコンフィグ情報を取得する場合、
> FormとDMで、二つのメンバー(もしくは、片方がプロパティで片方メンバ)を記憶させる必要があり、
> 冗長ではないのか?
>
> RTTIで、うまく読み書きする方法をご教授願いたい。
> 一括で、すべてのプロパティを保存するのか?

            ___________
    ∧,,∧    /TMemoryStreamの
  _ ミ,,゚Д゚彡_<  WriteComponent/ReadComponent
.=| |=U=U=| |= \ を調べてみてみ〜♪
 | | .ミ   ミ | |    ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 | |ノ∪''∪. | |
 | |      | |
846Delフサギコ ◆A6VzDeLphI :2007/01/17(水) 23:22:28
> FormがDMへのコンフィグ情報を取得する場合、
> FormとDMで、二つのメンバー(もしくは、片方がプロパティで片方メンバ)を記憶させる必要があり、
> 冗長ではないのか?

            _____________
   ∧,,∧    /
  _ ミ,,゚Д゚彡 _<  レスし忘れた.....
.=| |=U===U=| |= \
 | | .ミ   ミ | |     ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 | |ノ∪''∪. | |
 | |      | |

冗長というかFormのプロパティはViewなので
Modelとして、DataModuleのメンバーを持たせるんだと思うよ。

というか、DataModuleでプロパティをつくるのが
よりベターなんだろうね。

847837:2007/01/17(水) 23:25:30
なんか解決したようです。
フィールドを追加して型を確認したところ
Table1test: TFloatField;
となっていたので、Float?と思いつつ末尾に.0をつけてやったらうまくいきました。
ん〜なんか良くわかってないんですが取りあえず解決です。
お付き合いありがとうございました。
848デフォルトの名無しさん:2007/01/18(木) 00:41:10
>>846
ほんとにくだらない質問だけど、
数年前(4、5年?)にもDelphiの質問スレに来たことあって
そのときもフサギコさんいたんだけど、ひょっとして中の人同じ?
849デフォルトの名無しさん:2007/01/18(木) 00:54:09
Delフサの中身がいつの間にか変わっていたら、その方が驚きだな
850デフォルトの名無しさん:2007/01/18(木) 02:09:31
delphi6を使っています

テキストファイルやバイナリファイルの一部
例えば10バイト目から12バイト目だけを書き換えるにはどうすれば良いですか?
851デフォルトの名無しさん:2007/01/18(木) 02:09:38
まったくだw
852デフォルトの名無しさん:2007/01/18(木) 03:37:40
>>850
TFileStream
853デフォルトの名無しさん:2007/01/18(木) 07:51:53
>>850
TMemoryStream
854850:2007/01/18(木) 09:08:22
>>852-853
できました、ありがとうございました!
855デフォルトの名無しさん:2007/01/18(木) 12:53:44
MDI親フォームが2つで、子フォームが1つある時、親フォームを行き来させたいのですが、Parentを変更しても移動してくれません。
何か方法は無いものでしょうか?
856デフォルトの名無しさん:2007/01/18(木) 13:56:42
> Parentを変更しても
Parent はストリーム書き込みの関係だから、意味がない。

> 移動してくれません。
何がしたいのか良く分からんが
子フォームの状態を保存して、作り直せばいいじゃん。
857デフォルトの名無しさん:2007/01/18(木) 14:24:41
Parent はストリーム書き込みの関係だから、意味がない。
858856:2007/01/18(木) 15:08:59
>>857
と聞いているのだが、違うの?

俺初心者なんで、違うなら教えて。
859856:2007/01/18(木) 16:12:42
ストリームの件はコンポーネントの話で
今回の質問はウィンドウの話だから、ちょっと違うって事でOK?
860デフォルトの名無しさん:2007/01/18(木) 16:14:10
Delphi2005を使っています。
掲示板にテキストデータをpostする際、Tmemoの1番最初の行しかpostされません。
どうすればいいでしょうか?
861デフォルトの名無しさん:2007/01/18(木) 20:50:12
急募 エスパー
862デフォルトの名無しさん:2007/01/18(木) 20:54:38
>>860
ヒント:改行
863デフォルトの名無しさん:2007/01/18(木) 21:05:29
どこの新興2ちゃんブラウザ作者だよ。
864860:2007/01/18(木) 21:08:45
掲示板に広告を自動で投稿するプログラムです>>860
865デフォルトの名無しさん:2007/01/18(木) 21:25:23
誰か>>864通報しといて
866デフォルトの名無しさん:2007/01/18(木) 23:28:08
>864
1行広告でがまんする。
867デフォルトの名無しさん:2007/01/18(木) 23:49:33
Delphiで、コマンドプロンプトの出力を得たいです。
コマンドプロンプトは非表示で、perlのファイルを実行、
その出力をEUCでエンコードしてMemoあたりに表示したいです。
一応、C#のソースならあります。誰か、Delphiに翻訳して下さい・・・

Process p = new Process() ;
p.StartInfo.FileName = Environment.GetEnvironmentVariable("ComSpec");
p.StartInfo.CreateNoWindow = true ; // 起動に ウィンドウ を使用しない
p.StartInfo.UseShellExecute = false ; // 起動に OS のシェルを使用しない
p.StartInfo.RedirectStandardInput = false ; // 標準リダイレクト入力を不許可
p.StartInfo.RedirectStandardOutput = true ; // 標準リダイレクト出力を許可
p.StartInfo.Arguments = @"/C cd C:\hogehoge && perl hoge" ; // コマンド設定(/C = 実行後 終了)
p.Start() ; // 起動

StreamReader output = new StreamReader(p.StandardOutput.BaseStream,Encoding.GetEncoding("EUC-JP")) ; // 出力を取得(参照の宣言のみ)
p.WaitForExit() ; // プロセスが終了するまで待つ

// 表示(出力を実際に取得)

output.Close();
868867:2007/01/18(木) 23:57:33
つづき

Delphiのバージョンは6です。
下記のURLを参照しましたが、コマンドの設定方法などがよく分からなくて・・・
サンプルを示して頂けたら嬉しいです。

参考にしたURL
ttp://www.autch.net/tips/delphi_anonymous_pipe.php
ttp://forum.nifty.com/fdelphi/faq/00029.htm
ttp://forum.nifty.com/fdelphi/samples/01207.html
ttp://homepage2.nifty.com/Mr_XRAY/Delphi/plSamples/T_ConsoleBat3.htm
869デフォルトの名無しさん:2007/01/19(金) 00:17:02
リダイレクトでググル。いっぱいあるわな
870デフォルトの名無しさん:2007/01/19(金) 00:27:18
>>848-849
Delフサって、まめにレスしてたから、
今まで、共通コテハンみたいなものかと思っていた・・・

>>860
氏ね ><
871デフォルトの名無しさん:2007/01/19(金) 00:33:07
>>867
>>868にすべて書いてあるじゃないか・・・
872デフォルトの名無しさん:2007/01/19(金) 04:51:12
>>640
>掲示板にテキストデータをpost
これはどうすればできますか?
ゲームの得点等を送信してランキングを作りたいのですが・・・
873デフォルトの名無しさん:2007/01/19(金) 06:38:56
874デフォルトの名無しさん:2007/01/19(金) 12:03:35
質問です
Delphi6を使用しています

マウスカーソルがどこにあっても、
マウスの状態(左右・ホイールボタンが押されているかどうか等)を取得するにはどうすればいいですか?
875デフォルトの名無しさん:2007/01/19(金) 12:04:29
SHGetFileInfoを呼ぶとメモリ使用量が1MBぐらい増えて、
そのあとも終了するまで増えたままになるんだけどこれは仕様ですか
メモリリークにはなってないみたいだけど
win2k+del7
876デフォルトの名無しさん:2007/01/19(金) 12:06:26
>>874
getcursorpos

誰か俺のも頼む>>875
877デフォルトの名無しさん:2007/01/19(金) 12:12:25
ああ場所じゃなくてボタンか

マウス フック で調べてみ
878デフォルトの名無しさん:2007/01/19(金) 12:17:57
>>876
それだと座標だけではないですか?
879874,878:2007/01/19(金) 12:20:13
>>877
あ リロードしてませんでした
探してみます
880デフォルトの名無しさん:2007/01/19(金) 12:28:41
>>875
DestroyIcon してる?

> If SHGetFileInfo returns an icon handle in the hIcon member of the SHFILEINFO structure
> pointed to by psfi, you are responsible for freeing it with DestroyIcon when you no longer need it.
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/functions/shgetfileinfo.asp
881デフォルトの名無しさん:2007/01/19(金) 12:32:00
SetCapture
882デフォルトの名無しさん:2007/01/19(金) 13:20:50
>>880
してるしてる
それにアイコンハンドルつっても4byteでしょ

1MB増えるのってみんなも同じなのか?
これほっといてもいいのか?
883デフォルトの名無しさん:2007/01/19(金) 14:02:20
>それにアイコンハンドルつっても4byteでしょ
4byteはハンドルの長さだろw
DestroyIcon はハンドルの参照してるアイコンのデータのインスタンスを破棄するもんだ。
884デフォルトの名無しさん:2007/01/19(金) 14:16:32
確かに1M増えるね。
しかもフラグに0渡しても同じ。
最初に呼出した時にシステムイメージリストが作られるからじゃない?
885デフォルトの名無しさん:2007/01/19(金) 14:36:41
>>884
ImageList_Destroy使ってみたけど削除できねーみたいだ
もういいや諦めよう・・・
みんなありがとう
さようなら・・・
886デフォルトの名無しさん:2007/01/19(金) 16:44:00
タイトルメニューを右クリックした時にポップアップメニューを出すやり方が分かりません。どうやればいいのでしょうか?
http://www.apionet.or.jp/~tubokura/k_tips.html#19970129
↑のサンプルを参考にしましたが、イベントが発生してないみたいです。コンパイルエラーは出ません
887デフォルトの名無しさん:2007/01/19(金) 16:54:22
>>886
そのコードでちゃんといける。
もっかい見直せ。
888デフォルトの名無しさん:2007/01/19(金) 17:31:01
>>887
やっぱりできません(汗 最小構成で試しに組んでみたんですがダメでした↓

unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,ShellAPI, Menus;
type
TForm1 = class(TForm)
PopupMenu1: TPopupMenu;
test1: TMenuItem;
private
procedure WMNCRButtonDown(var Msg: TWMNCHitMessage); message WM_NCRButtonDown;
{ Private 宣言 }
public
{ Public 宣言 }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.WMNCRButtonDown(var Msg: TWMNCHitMessage);
begin
PopupMenu1.Popup(Msg.XCursor, Msg.YCursor)
end;
end.
889デフォルトの名無しさん:2007/01/19(金) 17:43:07
よくリモートホストなんかの切り出しをする場合、IP部分や接続によって変わる部分を「*」で表記するようになっていますが
内部的にはどういう処理の仕方がベターなのでしょうか
私はposとcopyとstringreplaceを使いまくる方法しか思いつかないのですがこれじゃあまりにも遅すぎますよね
890デフォルトの名無しさん:2007/01/19(金) 17:52:44
>>889
正規表現でググレ
891デフォルトの名無しさん:2007/01/19(金) 17:55:45
>>888
PopupMenu1が空っぽのメニューとかいうボケじゃないよね?
892デフォルトの名無しさん:2007/01/19(金) 18:42:55
>>890
ありがとうございます。
コンポーネントが見つかったので勉強してみます。
893デフォルトの名無しさん:2007/01/19(金) 20:23:13
>>891
フォーム上で右クリックすると自分で設定したポップのが表示されます。
タイトルバーで右クリックすると、最小化、閉じるしかでてきません。
894デフォルトの名無しさん:2007/01/19(金) 20:43:11
それはタスクバーじゃないの?
895デフォルトの名無しさん:2007/01/19(金) 21:23:56
>>894
あ…
タイトルバーとタスクバーとタスクトレイを混同してた(恥
896デフォルトの名無しさん:2007/01/19(金) 21:26:46

       ヽ(・ω・)/   ズコー
      \(.\ ノ
897デフォルトの名無しさん:2007/01/19(金) 22:15:27
生成したMDI子フォームを、そのまま他のMDIフォームへ移動させる事はできないという事ですか?
プロパティ保存して再生成すれば同じようなことはできるのでしょうけど、
処理を実行したまま移動したり、フォームのポインタの更新を避けたいので、
できればそのまま移動させたいのですが、難しいのでしょうか。
898デフォルトの名無しさん:2007/01/19(金) 22:59:05
>897
というかメインフォーム以外のフォームをMDIの親フォームとして動作させられないような希ガス。
MDI親フォームにはなってもMDI子フォームを入れる手段がない。
899デフォルトの名無しさん:2007/01/20(土) 01:33:42
>>897
Windows.SetParent(MDIChild.Handle, MDIForm.ClientHandle);
副作用は知らない。

900デフォルトの名無しさん:2007/01/20(土) 03:52:26
助かります!
副作用は調べてみます。
901デフォルトの名無しさん:2007/01/20(土) 07:56:03
質問です
D6使ってます

Delphi使ってる人をDelphianと呼ぶのですか?
C使ってる人はCゲンガーですか?
902デフォルトの名無しさん:2007/01/20(土) 13:27:57
今、ポップアップのようなモノを作っているのですが、
自分のアプリケーション以外がクリックされた時も消してやりたいです。
どうすればいいでしょうか?
903デフォルトの名無しさん:2007/01/20(土) 13:45:11
>>901
ゲンガー懐かしい
904デフォルトの名無しさん:2007/01/20(土) 13:45:56
>>902
????
日本語でお願いします
905デフォルトの名無しさん:2007/01/20(土) 14:00:26
>>904
すいません。
具体的に書きます。

いま、ミュージックプレイヤーを作っています。
それをボリュームのコントロールを、別フォームで表示させています。

この別フォームを、たとえば、デスクトップをクリックした時に消してやりたいのです。
イメージとしてはTPopupMenuみたいな感じです。
906デフォルトの名無しさん:2007/01/20(土) 14:03:56
それだけなら WM_ACTIVATEAPP 捕まえればいいような
907デフォルトの名無しさん:2007/01/20(土) 14:04:08
TPopupMenuの挙動のようなTFormか
908デフォルトの名無しさん:2007/01/20(土) 14:05:29
デスクトップをクリックとなると
マウスボタンのフックとかになるんかね
909デフォルトの名無しさん:2007/01/20(土) 14:14:56
フォームにApplicationEvents貼り付けて、
そこのOnActiveとDeActiveで消したり表示したりじゃダメか
910デフォルトの名無しさん:2007/01/20(土) 14:31:12
レスありがとうございます
>>909
の方法でそれらしいのができました。

WM_ACTIVATEAPP捕まえるってのはさっぱり分からなくて、ググってもよく分からなかったんですが
WinAPIですよね? ちゃんと把握しておいた方がいいですか?
911デフォルトの名無しさん:2007/01/20(土) 14:31:57
知っていて損は無いという程度
912デフォルトの名無しさん:2007/01/20(土) 19:14:25
低レベルな質問すまそ。

Integer型の変数aのランダムをLabelに表示したいのですが、
a:=Random(10);とやっても最初が0しか表示されないのですがこれは偶然0なのですが?
何か違って最初が必ず0になってしまうのですか?

あと、Label2.Captionにaとbの変数の足し算
(計算はせず、String型の計算式)を表示させたいのですが
Label2.Caption:=(IntToStr(a))'+'(IntToStr(b))'=' ;
これは全く違いますか??

913Delphi初心者:2007/01/20(土) 19:17:46
>>912
Randomize;
TForm1.FormCreateに↑の入力すればできると思うよ^^
914デフォルトの名無しさん:2007/01/20(土) 19:19:17
ランダムしてる部分のソース貼ってみ

あとLabel2.Caption:=(IntToStr(a))'+'(IntToStr(b))'=' ;
これはLabel2.Caption:=IntToStr(a)+'+'+IntToStr(b)+'=' ;
こうだな
915デフォルトの名無しさん:2007/01/20(土) 19:20:22
>>913
そのRandomize;とは何でしょうか;?
TForm1.FormCreateには入力しています。
916デフォルトの名無しさん:2007/01/20(土) 19:20:58
ヘルプ読め
917デフォルトの名無しさん:2007/01/20(土) 19:21:58
聞く前にヘルプで調べろ
全部書いてある
918Delphi初心者:2007/01/20(土) 19:22:49
>>915
Delphi6のヘルプより引用

Randomize 手続きは,現在の時刻を元に組み込みの乱数生成関数を初期化します。通常は,アプリケーションの起動時に一度呼ぶだけで十分です。
乱数生成関数を初期化するには,Randomize を呼び出すか,RandSeed に値を割り当ててください。
ループ内の Randomize 呼び出しと Random 関数の呼び出しを組み合わせないでください。通常,Randomize は,すべての Random の呼び出しの前に一度だけ呼び出されます。
919デフォルトの名無しさん:2007/01/20(土) 19:22:58
調子乗った…すいませんorz
920Delphi初心者:2007/01/20(土) 19:24:24
>>919

開発がんばってね
921Delphi初心者:2007/01/20(土) 19:32:18
>>919

http://eztools.no.land.to/random.zip

あいよ
今作ってみた
922デフォルトの名無しさん:2007/01/20(土) 19:33:43
乱数も、+や=の表示もなんとかできました(´;ω;`)
本当にありがとうございます!!

procedure TForm1.FormCreate(Sender: TObject);

var
a,b,I:Integer;
begin
Randomize;
for I := 1 to 10 do begin
Label2.Caption:=IntToStr(a)+'+'+IntToStr(b)+'='


end;
end;
こんな感じでエラーは出なかったのですが、
やはり再生すると、0+0=の計算しかならないのが気になります。
いきなり4+5=などの数字にはならないのでしょうか?
さっきと同じことを聞いていたらすいません。
ちなみに、ランダムで出てくる数字の足し算のプログラムです。


923デフォルトの名無しさん:2007/01/20(土) 19:35:08
リロってなかったorz
>>921さん本当まりがです。
924デフォルトの名無しさん:2007/01/20(土) 19:42:23
>Delphi初心者
調子に乗って構いすぎるなよ
912に為にならんだろが
925デフォルトの名無しさん:2007/01/20(土) 19:54:05
for文の意味が分からん
同じLabelに繰り返し表示してどんな意味があるの
926デフォルトの名無しさん:2007/01/20(土) 19:55:43
ひっさしぶりの初心者だからって、うれしがってあんまりかまうなよ・・・
927デフォルトの名無しさん:2007/01/20(土) 19:58:59
procedure TForm1.FormCreate(Sender: TObject);
const
 i = 10;
var
 a,b:integer;
begin
 Randomize;
 a := Random(i);
 b := Random(i);
 Label2.Caption := IntToStr(a)+'+'+IntToStr(b)+'=';
end;
928デフォルトの名無しさん:2007/01/20(土) 19:59:48
>>926
自演乙
sageろ
929デフォルトの名無しさん:2007/01/20(土) 20:04:39
naze?
930デフォルトの名無しさん:2007/01/20(土) 20:17:46
どうでも良いことで上げるなDelphi初心者
931デフォルトの名無しさん:2007/01/20(土) 20:21:29
Tmemoの中から一文字だけ取得したい場合はどうすればよいのでしょうか?

例えば、

「あいう
えお」 とメモに書いた場合に、

「ういあ
おえ」

と文字を入れ替えたいのです(「かぎ括弧はわかりやすくするためにつけたものです。)
932デフォルトの名無しさん:2007/01/20(土) 20:25:21
取得したいのか置き換えたいのかはっきり
933デフォルトの名無しさん:2007/01/20(土) 20:28:11
>>932
置き換えをしたいのですが、おそらく置き換えに必要な取得がそもそもできません。

「置き換え」そのものを教えていただけるとありがたいのですが、まずは「取得」のほうから勉強したいと思います。
934デフォルトの名無しさん:2007/01/20(土) 20:36:04
//文字列strからchr1とchr2を探して置き換える
function Rep(str,chr1,chr2:String):String;
begin
p1 := Pos('chr1', str);
p2 := Pos('chr2', str);
str[p1] := chr2;
str[p2] := chr1;
Result := str;
end;
935デフォルトの名無しさん:2007/01/20(土) 20:38:12
どうでもよいから age
936デフォルトの名無しさん:2007/01/20(土) 20:39:41
どうでも良いことで上げるなDelphi初心者
937デフォルトの名無しさん:2007/01/20(土) 20:40:45
>>834
ちゃんと AnsiPos() つかえよ
あと、一文字っても2バイトかもよ
938デフォルトの名無しさん:2007/01/20(土) 20:42:04
いちいちうるさいんだよDelphi初心者
939デフォルトの名無しさん:2007/01/20(土) 20:42:13
んじゃWideStringでいいか
940デフォルトの名無しさん:2007/01/20(土) 20:43:03
Delphi初心者必死
941デフォルトの名無しさん:2007/01/20(土) 20:44:01
>>934
p1、p2とは何のことでしょうか?
すいません。
942デフォルトの名無しさん:2007/01/20(土) 20:45:35
>>934
宣言抜けてるな
var
p1,p2:Integer;

943デフォルトの名無しさん:2007/01/20(土) 20:48:35
>>942
ありがとうございます。
何か特殊なものだと勘違いしておりました。
ご丁寧にすいません。
944デフォルトの名無しさん:2007/01/20(土) 20:52:23
度々申し訳ないのですが、str[p1] := chr2;のところで
型が合わないといわれてしまいます。
945デフォルトの名無しさん:2007/01/20(土) 21:37:42
型合せれば良いじゃん
946デフォルトの名無しさん:2007/01/20(土) 23:09:54
934のコードを読んでまともに動作すると考える方がどうかしてる
947デフォルトの名無しさん:2007/01/20(土) 23:14:18
何故誰もStringReplaceを出さないんだ・・・
948デフォルトの名無しさん:2007/01/20(土) 23:15:20
ReplaceRegExpr
949デフォルトの名無しさん:2007/01/20(土) 23:17:00
p1とかp2ってのは、ポインタにつけるような変数名だな
950867:2007/01/20(土) 23:44:28
>>869
ありがとう。リダイレクトでぐぐって以下のソースを見つけました。

http://www.smart-bbl.info/CQN/FAQ/delphi/d0009376.html

で、コマンドを渡して出力を得ることはできるのですが、
あるコマンドを入れると出力を取得できなくなってしまいます。

例えば上記URLのソースの

Command = 'C:\tools\lha.exe'; // 実行するDOSプログラム

の部分を

Command = 'COMMAND.COM /c dir'; // 実行するDOSプログラム

とすると、上手く出力を得られるのですが、

Command = 'COMMAND.COM /c cd C:\hogehoge && perl hoge'; // 実行するDOSプログラム

とすると何も返ってきません。
普通にコマンドプロンプトで打ち込んだ時には取得できるのですが・・・

どのように入力すれば出力を得られるでしょうか?教えてください。

951デフォルトの名無しさん:2007/01/20(土) 23:51:02
D7のアクションメニューバーのようなXPスタイルをポップアップメニューでも使いたいです。
いろいろ調べているうちにTStandardPopupMenuというものを使えばいいようなことまでは分かりましたが、
そこから先が分かりません。というのもIDE上からは作成できないようですし。。。
TStandardPopupMenuを動的に作る方法などありましたら教えてくださいm(_ _)m
952デフォルトの名無しさん:2007/01/21(日) 00:56:06
>>951
> いろいろ調べているうちにTStandardPopupMenuというものを使えばいい
ソースプリーズ。

> D7のアクションメニューバー
D7 ならパッチを当てればPopupActionBar が使えるけど。
http://cc.codegear.com/Item.aspx?id=19151

Toolbar2000 + TBX でも出来たような気がする。
953デフォルトの名無しさん:2007/01/21(日) 01:19:14
>>952
おーまじありがとう^^
これでできそうだよ

> ソースプリーズ。
ソースっていうかアクションバンドのVCLソース読んでたらそう思っただけなんだが・・・。
954デフォルトの名無しさん:2007/01/21(日) 03:25:27
VistaにBDS2006をインストールすると、インストールは終わるものの、起動すると回復不能なエラーで終了してしまいます。
で、アップデートをしようと思って bds2006_jp_pro_upd2.msp を実行したんですが、

---------------------------
エラー
---------------------------
インストールできません。このファイルは Borland Developer Studio 2006 Professional 版 版用のアップデート 2 です。
セットアップを中止し, 版のアップデート 2 をインストールし直してください。
---------------------------

・・と出て、アップデートできません。
勿論、Proを入れて、Pro用のパッチを当てたのですが、うまくいきません。

どなたか、うまく回避できてるかたいませんか?
955デフォルトの名無しさん:2007/01/21(日) 03:45:51
>>954
回避方法: Vistaを使うのをやめる
956デフォルトの名無しさん:2007/01/21(日) 03:50:12
だったらどっちかっつーと、Delphi使うのをやめるな。
957デフォルトの名無しさん:2007/01/21(日) 03:55:40
CodeGearに聞けよww
958デフォルトの名無しさん:2007/01/21(日) 04:03:27
---------------------------
エラー
---------------------------
EPackageRegistrationException がモジュール coreide100.bpl の 000DB245 で発生しました。
登録プロシージャ Pasdotnetreg.IDERegister (パッケージ C:\Program Files\Borland\BDS\4.0\Bin\delphidotnetide100.bpl) が例外クラス EOSError を生成しました: システムエラー。コード:5.
アクセスが拒否されました。.

次に Borland Developer Studio 2006 を起動するときにも、この IDE パッケージを読み込みますか?
---------------------------
はい(Y) いいえ(N)
---------------------------
959デフォルトの名無しさん:2007/01/21(日) 04:04:39
N
960デフォルトの名無しさん:2007/01/21(日) 10:57:10
constで配列を指定することはできますか?

const
ExeModeName array [0..2] of string = ['aaa','bbb','ccc'];

みたいなことがやりたいのです。
961デフォルトの名無しさん:2007/01/21(日) 11:10:41
const
ExeModeName: array [0..2] of string = ('aaa','bbb','ccc');
962デフォルトの名無しさん:2007/01/21(日) 11:26:59
963デフォルトの名無しさん:2007/01/21(日) 11:31:42
>>961
ありがとうございます。基本的な文法ミスでしたorz
boolean型での[]と混同してました。
964デフォルトの名無しさん:2007/01/21(日) 11:38:34
>>954
> アップデートをしようと思って
コマンドラインで、 msiexec /update bds2006_jp_pro_upd2.msp

>>958
> EPackageRegistrationException
IDE を管理者権限で実行するか
ユーザーにBDS/4.0/bin フォルダのアクセス権を設定するか
いずれかが必要みたい。
965954:2007/01/21(日) 11:45:30
>>962 >>964
ありがとう、無事起動できました!
966デフォルトの名無しさん:2007/01/21(日) 13:31:41
>>961
こういう1行で、実行文(procedure内とか)に配列の変数に代入するにはどうやって書けばいいのでしょう?
967デフォルトの名無しさん:2007/01/21(日) 13:39:00
配列を初期化するためには残念ながら書けない。
配列リテラルが許されるのはオープン配列引数を持つ関数やプロシージャの引数くらい。
968デフォルトの名無しさん:2007/01/21(日) 13:39:13
>>963
Delphiでは、>>961みたいな型付き定数は、デフォルトでは真の定数ではないので念のため。
書き換え可能。
969デフォルトの名無しさん:2007/01/21(日) 14:57:13
エラーがでる可能性があるところを
try
 hogehoge;
except
end;
と書いているんですが、実行時エラーがでた時にエラーメッセージがでます。
このエラーメッセージをでないようにする方法はありますか?
970デフォルトの名無しさん:2007/01/21(日) 15:24:16
>>969
通常の例外であればそのコードで握りつぶせるはずだけど。
hogehogeの中で例外ハンドリングしてメッセージを表示しているのでは?
971950:2007/01/21(日) 15:30:41
>>969

Delphiはよく分からんが
raise Exception.Create('hogehoge');
とか?
↓になんかかいてあるぞ。
http://forum.nifty.com/fdelphi/faq/00236.htm

だれかもれのも頼む
972デフォルトの名無しさん:2007/01/21(日) 15:33:56
ごめん>>971だとエラーメッセージ出るわ
973デフォルトの名無しさん:2007/01/21(日) 15:34:59
>>970
レスありがとうございます。socketを利用したプログラムを組んで居るんですけど、
クライアントタイプをctBlockingにしたらメッセージはでなくなりました。
ctNonBlockingだとメッセージがでます。

ヘルプ読んでも違いがよく分からない…

とりあえずクライアントタイプをctBlockingで組んでいきます。
974デフォルトの名無しさん:2007/01/21(日) 15:51:37
ctNonBlocking のソケットは非同期で読み書きが行われるので、
実際は >>969 の例外ブロックの外で例外が発生しているというオチの予感。
975デフォルトの名無しさん:2007/01/21(日) 16:17:35
エラーメッセージが出るっていうのはIDEから実行したときだけの話だろうね。
976デフォルトの名無しさん:2007/01/21(日) 16:21:06
>>950
Command = 'COMMAND.COM /c "cd C:\hogehoge && perl hoge"'

では駄目?
977デフォルトの名無しさん:2007/01/21(日) 17:00:23
>>950のは単純にPerlのコマンド実行だからスレ違いじゃね?
コマンドラインオプションでディレクトリ指定すればいい
978950:2007/01/21(日) 17:31:51
>>976>>977
ありがとう。

>>976のは何も返ってこなくて、
Command = 'COMMAND.COM /k "cd C:\hogehoge && perl hoge"'
                   ~~~
にしてみたら
・・・略・・・
KKCFUNCが組み込まれました.

マイクロソフトかな漢字変換 バージョン2.51
・・・略・・・
コマンドまたはファイル名が違います.

とDOS画面に表示されていました。

>>977
えっ
979デフォルトの名無しさん:2007/01/21(日) 17:34:27
>>978
COMMAND.COMのオプションじゃなくてw
Perl -xとかのこと。 Perl -h叩いて確認しれ
980950:2007/01/21(日) 17:45:32
>>979
ありがとう。みたけど英語でわかんなかった

&&の使い方がおかしいのかな?
コマンドプロンプトで

(カレントディレクトリ)>cd C:\hogehoge
C:\hogehoge>perl hoge

というようなことをやりたいんですが・・
981デフォルトの名無しさん:2007/01/21(日) 17:46:35
>>978
perlにパスが通ってないとかそういうのは大丈夫だよね。
982950:2007/01/21(日) 17:50:09
>>981
えっ・・
コマンドプロンプトとかC#で作ったやつからはできるから大丈夫・・・だと思う・・
983デフォルトの名無しさん:2007/01/21(日) 18:02:46
>>982
ディレクトリ移動がなぜ必要なのか
'perl C:\hogehoge\hoge' ではなぜだめなのか?
つかこれ以上はPerlスレ池
984デフォルトの名無しさん:2007/01/21(日) 18:12:33
"Textout"を使って、
文字列をウィンドウの中央に
表示したいのですが、
どうすれば良いでしょうか?
985デフォルトの名無しさん:2007/01/21(日) 18:19:51
var
 S: string;
 W, H: Integer;
begin
 S := 'hoge';
 W := Canvas.TextWidth(S);
 H := Canvas.TextHeight(S);
 Canvas.TextOut((Width - W) div 2, (Height - H) div 2, S);
end;
986950:2007/01/21(日) 18:24:49
>>983

できたーーーーーーーーーーーーーーー!!!!!!
できました!!!!!!

ありがとうございます!!!!!!!!!!!!!!!!!!


でもまだエンコードが・・・orz
また分からなかったら聞きにきます。ありがとうございました!
987q:2007/01/21(日) 20:10:09
[質問]
「上から○(円)が落ちてきて、
ウィンドウの1番下に達したら
その円は止まり、新しい円が
また落ちてくるプログラムを作れ
(ただしfor文を使うこと)。」
という宿題が出たのですが、
よく分かりません。

どなたか分かる方、教えて下さいm(__)m
988デフォルトの名無しさん:2007/01/21(日) 20:17:04
989デフォルトの名無しさん:2007/01/21(日) 20:25:26
990デフォルトの名無しさん:2007/01/21(日) 20:50:07
ローカルドライブから特定のファイルを検索し、
そのファイルがあるディレクトリのフルパスを取得する方法を教えてください。
991デフォルトの名無しさん:2007/01/21(日) 20:54:58
>>990
findfirst,findnext
992デフォルトの名無しさん:2007/01/21(日) 22:43:29
次スレ

くだすれDelphi(超初心者用)その39
http://pc10.2ch.net/test/read.cgi/tech/1169386914/
993990:2007/01/21(日) 23:44:13
>>991
ありがとうございます。できました。
994デフォルトの名無しさん:2007/01/22(月) 06:37:57
TADOTableについて質問です。

mdbファイルをTADOConnectionで開き、TADOTableでテーブルを開こうとしているのですが、
テーブル名に + - / ( ) & 等、演算子を含むものがうまく開けません。

命名ルールとしておかしいのはわかっているのですが、実際Access上に存在してしまっており、
テーブル名の変更などができません。

うまく開く方法がありましたら教えていただけないでしょうか。
995デフォルトの名無しさん:2007/01/22(月) 06:44:09
[]で囲んでもだめですか?
996デフォルトの名無しさん:2007/01/23(火) 00:41:56
>>994
" "でくくってみれ 
997デフォルトの名無しさん:2007/01/23(火) 01:28:06
[ ] でかこったらいけました。どうもありがとう。
998デフォルトの名無しさん:2007/01/23(火) 02:00:17
ume
999デフォルトの名無しさん:2007/01/23(火) 02:02:30
うめ
1000デフォルトの名無しさん:2007/01/23(火) 02:02:37
1000
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。