2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

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

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

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

<雑談・討論などはこちらへ> 
バカボンのDelphi不買談話室その28
http://pc8.2ch.net/test/read.cgi/tech/1134668922

<その他> 
Borland Home Page 
http://www.borland.com/jp/ 
DelWiki 避難所 
http://wiki.s54.xrea.com/delphi/ 
BDN (Borland Developer Network) ※英語 
http://bdn.borland.com/delphi/ 

# 過去スレは >>2-10 のどこかに 

2 :デフォルトの名無しさん:2006/05/23(火) 19:08:59
過去スレ 
01: http://pc5.2ch.net/tech/kako/1051/10518/1051882835.html 
02: http://pc5.2ch.net/tech/kako/1053/10537/1053757982.html 
03: http://pc5.2ch.net/tech/kako/1055/10559/1055986736.html 
04: http://pc5.2ch.net/tech/kako/1058/10588/1058834815.html 
05: http://pc5.2ch.net/tech/kako/1061/10610/1061090908.html 
06: http://pc5.2ch.net/tech/kako/1063/10632/1063202727.html 
07: http://pc5.2ch.net/tech/kako/1065/10651/1065195699.html 
08: http://pc5.2ch.net/tech/kako/1068/10682/1068201045.html 
09: http://pc5.2ch.net/test/read.cgi/tech/1071294733/ 
10: http://pc5.2ch.net/test/read.cgi/tech/1074523803/ 
11: http://pc5.2ch.net/test/read.cgi/tech/1076609666/ 
12: http://pc5.2ch.net/test/read.cgi/tech/1076610073/ 
13: http://pc5.2ch.net/test/read.cgi/tech/1081003641/ 
14: http://pc5.2ch.net/test/read.cgi/tech/1085239007/ 
15: http://pc5.2ch.net/test/read.cgi/tech/1087823906/ 

3 :デフォルトの名無しさん:2006/05/23(火) 19:09:20
2
とったぞー

4 :デフォルトの名無しさん:2006/05/23(火) 19:09:41
16: http://pc5.2ch.net/test/read.cgi/tech/1089779142/ 
17: http://pc5.2ch.net/test/read.cgi/tech/1091671391/ 
18: http://pc5.2ch.net/test/read.cgi/tech/1093996761/ 
19: http://pc5.2ch.net/test/read.cgi/tech/1097454588/ 
20: http://pc5.2ch.net/test/read.cgi/tech/1101530485/ 
21: http://pc5.2ch.net/test/read.cgi/tech/1104511938/ 
22: http://pc5.2ch.net/test/read.cgi/tech/1107332482/ 
23: http://pc8.2ch.net/test/read.cgi/tech/1110470895/ 
24: http://pc8.2ch.net/test/read.cgi/tech/1115581376/ 
25: http://pc8.2ch.net/test/read.cgi/tech/1119008091/ 
27: http://pc8.2ch.net/test/read.cgi/tech/1126590039/ 
28: http://pc8.2ch.net/test/read.cgi/tech/1131168199/ 
29: http://pc8.2ch.net/test/read.cgi/tech/1135866929/ 
30: http://pc8.2ch.net/test/read.cgi/tech/1138370150/ 
31: http://pc8.2ch.net/test/read.cgi/tech/1142594051/ 

5 :デフォルトの名無しさん:2006/05/23(火) 19:10:19
おk立てたぞ
ではどうぞ↓

6 :デフォルトの名無しさん:2006/05/23(火) 19:19:33
>>1
おつかれさまです。
999を再投下させていただきます。
すいません上で書いた者ですが、サーバーが繋がっていない時にSocket.SendTextで例外が発生しないのは仕様なんでしょうか?D5です。

7 :デフォルトの名無しさん:2006/05/23(火) 19:54:00
>>3
(ΦωΦ) ブブッ

8 :デフォルトの名無しさん:2006/05/23(火) 23:02:25
procedure XXXX(var message: TMessage); message WM_XXXX;

procedure XXXX(var message: TMessage);
begin
message.Msg := WM_HOGE;
end;

WM_XXXXを処理させたくないのですが、
こんなふうに勝手にメッセージを変更してもいいのでしょうか?

9 :デフォルトの名無しさん:2006/05/24(水) 00:25:20
ダメ。とりあえずコメントにしておけ。

10 :デフォルトの名無しさん:2006/05/24(水) 00:40:01
procedure XXXX(var message: TMessage); 
begin 
 //
end; 

これでいいの?
ありがとう

11 :デフォルトの名無しさん:2006/05/24(水) 02:07:13
それ何か意味あるんか?
あとメッセージメソッドは inherited しとけ。

12 :デフォルトの名無しさん:2006/05/24(水) 02:31:34
普通にinheritedしたらメッセージ処理しちゃうじゃん

message.Msg := WM_NULL;
inherited;

とかすればいいのでは

13 :デフォルトの名無しさん:2006/05/24(水) 08:57:41
>>6
ヘルプから

非ブロッキングソケットの場合,データは独自の内部バッファを持つ WinSock DLL に送られます。
WinSock が追加のデータを受け付ける場合,SendBuf はキューにあるバイト数を直ちに返します。
WinSock の内部バッファスペースが送信されるバッファを受け付けられない場合,SendBuf は -1 を返し,
キューにはデータが入りません。
この場合は,WinSock がすでにキューにあるデータを送信する機会を得るのを少し待ってから,再試行します。

ブロッキングソケットの場合,SendBuf は実際に書き込まれたバイト数を返します。

接続への書き込み中にエラーが発生した場合は,SendBuf は接続を終了し,ESocketError 例外を生成します。


非ブロッキングにしているのなら仕様です。
OnErrorが発生しなければ送信できたものと解釈してください。

14 :デフォルトの名無しさん:2006/05/24(水) 10:21:55
>>13
やはり仕様なのですね。
ブロッキングにする方向で考えてみたいと思います。
ありがとうございました。


15 :デフォルトの名無しさん:2006/05/24(水) 22:01:42
DelphiだとInt型の数値を表示するときは
IntToStrで変換しないといけんの?
C言語みたいに%dや%fみたいな自動的に変換してくれる(?)記号はないの?

16 :デフォルトの名無しさん:2006/05/24(水) 22:11:21
つ Format

17 :デフォルトの名無しさん:2006/05/24(水) 22:27:32
IntToStr() は Format() の簡易版、だよね

18 :デフォルトの名無しさん:2006/05/24(水) 22:44:25
Thx・・・
Writelnでいろいろやってみたんだが
Writeln(111)はちゃんと動くし
Writeln('Hello,World')もうごくんだね。。。

で、ちょっと今コンソールアプリケーション作ってるんですが

十進数を二進数に変えるプログラムなるものを勝手に作ってみた

var
i,j:integer;
begin
i:=9;
While i<>0 do
begin
j:=i mod 2;
writeln(j);
i:=(i-(i mod 2)) div 2;

end;
readln;
end.

たとえばこれで実行したら
1
0
0
1
って縦に表示されちゃうんだけど
1001っていう風に横に表示させるにはどうすればいいの・・・

19 :デフォルトの名無しさん:2006/05/24(水) 22:59:58
>17
違いますよ?

20 :デフォルトの名無しさん:2006/05/24(水) 23:05:15
writelnじゃなくてwriteという関数を使うんだ。

21 :Delフサギコ ◆A6VzDeLphI :2006/05/24(水) 23:12:13
 ∫,,,,,,,,,∧,,∧  
⊂,,,,,,,,,つ,,゚Д゚ミつ

前スレのこれ。

> 985 名前:デフォルトの名無しさん[sage] 投稿日:2006/05/23(火) 16:04:28 ID:
> 実行中アプリのフルパスからトップレベルウィンドウのハンドルを得るにはどうすればいいでしょうか?
> 988 名前:985[sage] 投稿日:2006/05/23(火) 17:03:59 ID:
> テキストファイルにアプリのパスをずらずらっと書いてだ
> そやつらにWM_CLOSEを送って終了させたい訳だ。
> んでWM_CLOSEをPostMessageする為にはウィンドウハンドルがいると。
> あらかじめクラス名とかを調べておくのは面倒なのでフルパスからなんとかトップレベルウィンドウのハンドルが得られないかと。
> EnumWindowsとかやってみたんだがどれがトップレベルウィンドウかコードから判別する方法が知りたい訳だ。
> パスが一致する物全てにWM_CLOSE送ってもいいんだが、かっちょ悪いっしょ?
> 989 名前:名無し募集中。。。[sage] 投稿日:2006/05/23(火) 17:14:50 ID:
> テキストファイルにずらずらっと書いたアプリを
> CreateProccess使って自前で起動したのなら
> プロセスIDからウィンドウハンドル取得が出来る
> そうでないなら俺もやり方知らんから
> 知ってる人いたら教えて欲しい
> 990 名前:デフォルトの名無しさん[sage] 投稿日:2006/05/23(火) 17:18:56 ID:
> CreateToolhelp32Snapshot は使えないかな

発想を変えて、Windowをすべて列挙して
プロセスパスを求めて、そいつが該当したらWM_CLOSEを送信する。

トップレベルウィンドウはWindow列挙してOwnerなしとかの条件で
タスクマネージャーのタスク表示と互換にしとけばいいんじゃないの?

22 :Delフサギコ ◆A6VzDeLphI :2006/05/24(水) 23:12:54
 ∫,,,,,,,,,∧,,∧  ツコトデ
⊂,,,,,,,,,つ,,゚Д゚ミつ

たぶん、Win2K以降。

function GetProcesFileNameFromWinHandle(Handle: hWnd): String;
var
 PID: Cardinal;
 SnapShot: THandle;
 ModuleEntry32: TModuleEntry32;
begin
 Result := '';
 // ハンドルから作成スレッドを調べてプロセスIDを得る
 GetWindowThreadProcessId(Handle, PID);

 // TModuleEntry32構造体の初期化
 ModuleEntry32.dwSize := SizeOf( TModuleEntry32 );

 // システム中の情報のスナップショットをとる
 SnapShot := CreateToolhelp32Snapshot( TH32CS_SNAPMODULE, PID);
 try
  // 最初のモジュールの検索
  if Module32First( SnapShot, ModuleEntry32 ) then
   Result := string( ModuleEntry32.szExePath );
 finally
  CloseHandle( SnapShot );
 end;
end;


23 :Delフサギコ ◆A6VzDeLphI :2006/05/24(水) 23:19:14
 ∫,,,,,,,,,∧,,∧  ワスレテタ
⊂,,,,,,,,,つ,,゚Д゚ミつ

備考: uses TLHelp32;
参考:[Delphi:70691] Re: 実行ファイルのフルパスの取得(win2000)

24 :デフォルトの名無しさん:2006/05/24(水) 23:23:42
>20さん
できますた!ありがとんです

25 :デフォルトの名無しさん:2006/05/24(水) 23:28:51
lnは改行して表示だっけか

>Writeln(111)はちゃんと動くし
>Writeln('Hello,World')もうごくんだね。。。
が動くのはoverloadされてるから

26 :前スレ985:2006/05/25(木) 00:10:21
>>21,22,23
フサフサヌコタソあんがとさん。
んで今まさにそのなんちゃらsnapshotとウィンドウ列挙で色々やってる所なんだが(Halbow氏の所のとググリ先で拾ったソース合体で)

>>トップレベルウィンドウはWindow列挙してOwnerなしとかの条件で
>>タスクマネージャーのタスク表示と互換にしとけばいいんじゃないの?

↑これで詰まってる所(´・ω・`)トップレベルウィンドウ"だけ"の列挙ムズス。
条件をきつくするとリストアップして欲しいアプリが漏れ、ゆるくすると大量のウィンドウがリストアップされる。
例えばJane2ch.exeならウィンドウクラス名がTApplication以外のウィンドウが54個!!
unDonut.exeならメインウィンドウ以外が21個!!も列挙されてしまう。

ちょっち諦めムードが漂ってきた所。

27 :デフォルトの名無しさん:2006/05/25(木) 00:19:46
WS_EX_APPWINDOWが付いてるか確認するんじゃ駄目だった?

28 :デフォルトの名無しさん:2006/05/25(木) 00:28:55
Owner なし、Visible である、って条件だけでかなり、タスクバーの数に近づくはずだけど。

29 :Delフサギコ ◆A6VzDeLphI :2006/05/25(木) 01:34:06
 ∫,,,,,,,,,∧,,∧  ヌコタンですが
⊂,,,,,,,,,つ,,゚Д゚ミつ

Owner なし、Visible である、
WM_GETTEXTで文字がある、
([Windows タスク マネージャ]や[Program Manager]じゃない)

ってのでタスクマネジャ互換だよ。



30 :Delフサギコ ◆A6VzDeLphI :2006/05/25(木) 01:38:03
 ∫,,,,,,,,,∧,,∧  そいえば
⊂,,,,,,,,,つ,,゚Д゚ミつ

EnumChildWindowsは必要ねーぞ。
EnumWindowsで十分。

列挙コードに問題があるんちゃうかと。



31 :Delフサギコ ◆A6VzDeLphI :2006/05/25(木) 01:45:42
|,,∧   トコロデ
|゚Д゚彡  漏レモ質問
|⊂ミ     エエカ?
| ミ
|`J

THotkeyでWinキーも認識するように
するにはどうしたらええん?



32 :デフォルトの名無しさん:2006/05/25(木) 02:13:13
MSDN を読んだ限りでは無理っぽいが

33 :前スレ985:2006/05/25(木) 02:39:26
>>30
>>列挙コードに問題があるんちゃうかと。

どう考えても列挙コードに問題ありのようです。
ちょっち改造実験中。
つうか、理解出来ていないコードがあるのがそもそも問題っぽいw コールバックとか。

34 :デフォルトの名無しさん:2006/05/25(木) 03:45:59
>>31
俺も気になる。
ランチャーとかでWinキー対応しているのもあるからな。

35 :デフォルトの名無しさん:2006/05/25(木) 06:31:30
>>22 こういうコードとか フック系のAPIの紹介コードは 作成罪が成立したら注意しないといけないね

36 :デフォルトの名無しさん:2006/05/25(木) 07:03:35
>>31
つ THotKeyManager
http://www.torry.net/quicksearchd.php?String=HotKeyManager&Title=Yes

37 :デフォルトの名無しさん:2006/05/25(木) 12:16:10
InputBoxのようなダイアログを自前で作っています。

EditBoxに入力してエンターキーを押すと
OKボタンを押してフォームを閉じるという処理を行っているのですが、
Winの警告音が鳴って閉じる現象をどうにかしたいです。

改行出来ないEditBoxで改行しようとして警告されているのは分かります。
どうにかしてEditBoxで出来ないでしょうか?

procedure TDiarogForm.Edit1KeyDown(Sender: TObject; var Key: Word;
 Shift: TShiftState);
begin
 if Key = VK_RETURN then begin
  OKButton.SetFocus;
  OKButton.Click;
 end;
end;


38 :デフォルトの名無しさん:2006/05/25(木) 12:23:06
ヒント:var Key

39 :デフォルトの名無しさん:2006/05/25(木) 12:51:26
>>37
Key := 0;

40 :デフォルトの名無しさん:2006/05/25(木) 12:58:56
>>37
OKButton.Default := True;

41 :デフォルトの名無しさん:2006/05/25(木) 17:04:04
>>35

それって MSDN の例を Delphi に移植しただけだし、フックだって似たようなもの。
それがひっかかるようだと MSDN は閉鎖だな

42 :デフォルトの名無しさん:2006/05/25(木) 17:53:25
TQueryで取得したフィールドがNULLかどうかを調べる方法は無いでしょうか?
具体的に言うと、

var
 query: TQuery;
begin
 query := TQuery.Create(nil);
 query.DatabaseName := データベース名

 query.SQL.Add('SELECT foo, bar FROM hoge');

 try
  query.Open();

 ※1

 finally
  query.Close();
  query.Free();
 end;

end;

上記のコードでフィールドfooとbarがNULLのときの処理を書きたいのです

43 :デフォルトの名無しさん:2006/05/25(木) 18:38:12
if query.FieldByName('foo').IsNull then

44 :42:2006/05/25(木) 19:09:24
IsNullなんてものがあったのか・・・
IDEの入力候補に出てこなかったからてっきり無いものだと思ってました(;´Д`)

つまらん質問でスレ汚してごめんなさい。お騒がせしました

45 :デフォルトの名無しさん:2006/05/25(木) 19:16:56
delphi今日からはじめました。
くだらnことだが、repeat文なんですけど、
複文であってもbegin-end要らないらしいですが、それはなぜですか?
文法や変数の型にうるさいといわれるPascalなのにそういうことには
ルーズなんですね。

46 :デフォルトの名無しさん:2006/05/25(木) 19:21:04
repeatと書いたら必ず例外なくuntilがあるから

47 :デフォルトの名無しさん:2006/05/25(木) 19:30:18
>>46
でもbegin endつけても問題ないんでしょ?

48 :デフォルトの名無しさん:2006/05/25(木) 19:39:22
begin end;なんてどこに書いたって処理されるでしょ
ただbeginの数とend;の数が合わなかったら怒られるけど。
procedure TForm1.Button1Click(Sender: TObject);
begin
begin
begin
begin
showmessage('あほー');
end;
end;
end;
end;
end.
こんなコードも余裕で通る


49 :デフォルトの名無しさん:2006/05/25(木) 19:39:36
そりゃ単文でも複文でも入るから当たり前でしょ

50 :デフォルトの名無しさん:2006/05/25(木) 20:01:14
クラス名を文字列で受け取って、そのクラスのインスタンスを作成することは出来ますか?

以下のような事をしたいのですが・・・

var A:TObject;
begin

A := CreateForClassName('TStringList');

51 :デフォルトの名無しさん:2006/05/25(木) 20:03:39
できません。

52 :デフォルトの名無しさん:2006/05/25(木) 20:16:55
即レス感謝です

やっぱり無理ですか。

DMS使ってスクリプト上でなら実現できそうな気がしてきました・・・が、
素直に諦めます;

53 :デフォルトの名無しさん:2006/05/25(木) 20:19:06
>>52
その調子でDelもやめて、
他の将来性のある言語にシフトしましょう。

54 :デフォルトの名無しさん:2006/05/25(木) 20:21:09
よろしくお願いします。
Delphi6PersonalとTntコンポとIndyを使って
フォーム上にWebページ(文字コードUTF8N)のソースを表示しようと思い、

var
Html : WideString;
begin
 Html := IdHTTP1.Get('http://hoge.com);
 TntMemo1.Text := Html;
end;

こういう風に書いたんですが、文字化けまくりです。
あと何を書けばよいのでしょうか?

55 :デフォルトの名無しさん:2006/05/25(木) 22:43:30
>>50
RegisterClasses してたり、
実行時型情報を持っていれば可能
GetClass/FindClass でヘルプを見るといい
FindClass は GetClassを呼んで、nilなら例外を出すだけ

ソースを持っていればClasses のTReader.GetFieldClass  で使ってる



56 :前スレ966:2006/05/26(金) 00:19:14
おかげさまで自作プログラムのボタンは無事押せました。
返信いただいた皆様有難うございます。

今度は親ウインドウのキャプションがバージョンアップで変わってしまう
アプリケーションなんですがどうしたらこのハンドルを取得できるのでしょうか?

hWindow := FindWindow('TMainForm','');
hChild := FindWindowEx(hWindow, 0, 'TBitBtn', '開始');

例えばこんな感じでやってみたのですがhWindowには0が入ってしまって・・・
GetWindowTextを使うのかなとも思いますがFindWindowの後に発行してループで回しながら検索するのかなぁ

57 :デフォルトの名無しさん:2006/05/26(金) 01:14:16
EnumWindowsでなんとか汁。

58 :デフォルトの名無しさん:2006/05/26(金) 01:17:11
FindWindow('TMainForm', nil);



59 :デフォルトの名無しさん:2006/05/26(金) 04:31:14
>>54
WideStringの文字コードはUTF8ではなくUTF16です。
TntMemo1.Text := UTF8Decode(IdHTTP1.Get('http://localhost/'));

60 :デフォルトの名無しさん:2006/05/26(金) 07:44:23
>55
Thxです

DelphiMLの39569の記事にサンプル載ってました
要は、クラス名(文字列)とクラス参照を紐付けとくワケですか

61 :デフォルトの名無しさん:2006/05/26(金) 14:50:09
>>56
自前のアプリならプログラムのメインフォームのクラス名が
FindWindowの第1引数に指定する値だぞ

62 :前スレ985:2006/05/26(金) 16:52:16
という事で実行中アプリのフルパスのみからのトップレベルウィンドウのハンドル取得は諦めました。
列挙条件をきつくすれば確かにある程度のアプリはトップレベルウィンドウだけの列挙に成功しましたが、
どうにも限界があるようなので(自分に)フルパスとウィンドウクラス名を指定する事にしました。
もしうまくいけばプロセスIDが同じ子ウィンドウから導き出されたトップレベルウィンドウのハンドルは
一致して然るべきだが、どうにもうまくいかない。

WM_CLOSEを送るべきウィンドウクラス名を調べていた時に発見した事。
当たり前だろうが、閉じるボタンでHideするようなアプリは終了出来ない。
ObjectDockの、ウィンドウクラス名がObjectDockの物にWM_CLOSEを送ると設定が吹き飛ぶ。
ObjectDockServerに送れば正常に終了される。
これにより、あるフリーソフトで終了させるとObjectDockの設定が吹き飛ぶ事からそのソフトは恐らく
パスの一致するウィンドウ全てにWM_CLOSEを送っている疑惑が浮上。
同名の複数プロセスを全て終了させる事からもこれは濃厚である。ってどうでもいいか。

んじゃ、さいなら。

63 :デフォルトの名無しさん:2006/05/26(金) 19:39:15
厨房アプリ作成、乙

64 :デフォルトの名無しさん:2006/05/26(金) 19:39:44
いつも読み書きされているファイルを他のフォルダーにコピーしたいのですが、
これを追記可能モードでコピーするにはどうすればいいのでしょうか?

65 :54:2006/05/26(金) 20:06:14
>>59
できました! ありがとうございます!

ところで、UTF8DecodeすればTNTコンポじゃなくても日本語表示されるんですね。
それが意外でした。

66 :デフォルトの名無しさん:2006/05/26(金) 20:13:16
>>64
日本語でおk

67 :デフォルトの名無しさん:2006/05/26(金) 20:45:35
>>66
他のプログラムが読み書きしてるファイルを更新可能な状態のまま、コピーするにはどうしたらいいの?

68 :デフォルトの名無しさん:2006/05/27(土) 00:45:43
できない。

69 :デフォルトの名無しさん:2006/05/27(土) 01:35:43
なぜそんな事が必要になるのか理解すらできない

70 :デフォルトの名無しさん:2006/05/27(土) 02:38:40
思い出しカキコですんません。

アニキがDelphiやってて、そんな流れでボクも最近パソコンにインスコしてみたんですが、
初めは5からインストールして、しばらくいじった後、比較的新しいDelphi7を入れました。

それで初回起動のとき、「Delphi5の設定になっています。Delphi7の設定にしてもいいですか?」っていう内容のダイアログがでたので、「はい」って選んだんですが、これでよかったんですかね?
5はもう使っちゃまずいのかな、5と7は同一環境に入れては駄目だったのかな?などと考えてしまう時があるんですが、問題ありませんか?

71 :デフォルトの名無しさん:2006/05/27(土) 03:51:48
俺5,6,7入れてるけど何も問題ないよ

72 :デフォルトの名無しさん:2006/05/27(土) 04:51:33
>>71
Thanxです。
じゃ、なんだったんだろうな…

使えるなら、このまんまでいきます!

73 :デフォルトの名無しさん:2006/05/27(土) 12:21:38
>>69
バックアップをしたいのですけど、時々他のプログラムがデータを読み書きしに来るので
エラーになってしまうのですよ。

なので、追記可能モードとかでファイルのコピーが出来ればよかったのですが。

データベースとかだといつも使ってるファイルをバックアップしてそうだけどどうやっているんでしょ?

74 :デフォルトの名無しさん:2006/05/27(土) 12:40:26
そもそも変更途中のファイルをコピーしたってバックアップにならないと思うぞ

75 :デフォルトの名無しさん:2006/05/27(土) 12:53:46
行列を読み込みたいんだけど・・・Unko[i,j]
8 9 9 9
2 3 3 4
iとjの数の指定なしにどうやったらできる?
stringlist.countで列は取得できたけど・・
行はコンマの数かぞえなきゃだめ?
それとももしかしてpascal言語だと一発で読みこめたりする?w


76 :デフォルトの名無しさん:2006/05/27(土) 13:32:27
>>75
CVS形式を動的配列に読むってことだろうか
だったら要素数が分からなければムリ

もっと詳しく

77 :デフォルトの名無しさん:2006/05/27(土) 13:43:38
空白区切りが欲しいのかカンマ区切りか判らないから両方に対応させるとしたら

type TExtArray= array of Extended;

function StrToExtArray(s:string):TExtArray;
var i,i0,n:Integer;
var w:string;
begin
SetLength(Result,100);
i:=1;
n:=0;
while length(s)>=i do begin
while s[i] in[',',' ',#9] do inc(i);//セパレータの連続状態
i0:=i;
while s[i] in['0'..'9','.'] do inc(i);//数値連続状態
w:=copy(s,i0,i-i0);
if w='' then break;
Result[n]:=StrToFloat(w);
inc(n);
if n>=length(Result) then SetLength(Result,n*2+100);
end;
SetLength(Result,n);
end;


78 :デフォルトの名無しさん:2006/05/27(土) 18:36:22
VBの.NET化により旧VBの独壇場であったデータベースを利用した小規模なスタンドアローンアプリ市場が空白地帯となった。
驚くべきことに、旧VBのライバルだったDelphiはその空白地帯を戦わずして得ることが出来たにもかかわらず、わざわざ.NET化してしまった。
しかも営業不振でIDE売却という憂き目にすらあっている。
Delphiにとっては明らかにチャンスであるにもかかわらず、この有様である。
まことに哀れみを誘う。

79 :sage:2006/05/27(土) 23:45:42
.NETリストラ組乙

80 :デフォルトの名無しさん:2006/05/28(日) 02:29:58
こんばんは。本当の初心者で質問するのも恥ずかしいのですが、1つ教えてほしいことがあります。
画像ファイル(GIF)を表示させる記述をしたのですが、「拡張子gifの画像形式は処理できません。」と
エラーになってしまいます。

delphiでは本当にgifは対応していないのでしょうか?
それとも別の書き方をすればちゃんと表示できるのでしょうか?
使っているのはDelphi6パーソナルです。

procedure TForm1.Button1Click(Sender: TObject);
begin
image1.Picture.LoadFromFile('〜画像ファイルまでのパス〜\risa1.gif');
end;


81 :デフォルトの名無しさん:2006/05/28(日) 02:51:42
対応していない。

英語で書かれたGIFのライブラリを使うか、
imgctl.dllを使うか、
どうにか工夫するしかない

82 :デフォルトの名無しさん:2006/05/28(日) 03:13:51
「delphi gif」で検索すれば幾つか出てくる
ただしアニメーションgifの表示は無理だと思ったほうがいい

83 :デフォルトの名無しさん:2006/05/28(日) 06:06:21
80じゃないけど
> アニメーションgifの表示は無理
これって無理なの?

84 :デフォルトの名無しさん:2006/05/28(日) 06:56:39
出来るでしょ。
http://finn.mobilixnet.dk/delphi/

85 :デフォルトの名無しさん:2006/05/28(日) 06:57:51
>83
Delphiより日本語勉強したら?


86 :デフォルトの名無しさん:2006/05/28(日) 07:33:44
>>85
どっか変?それともこういう風に引用しろってこと?
> アニメーションgifの表示は無理だと思ったほうがいい
それなら悪かったです

87 :デフォルトの名無しさん:2006/05/28(日) 08:16:22
82だが>>84は知らなかった
今は反省している

88 :デフォルトの名無しさん:2006/05/28(日) 11:54:24
Delphiにgcを搭載して欲しい

89 :73:2006/05/28(日) 12:14:34
>>74
いや、そうじゃないんですよ。
変更途中のファイルをバックアップするんじゃなくて、しょっちゅう変更されているファイルのバックアップです。
変更途中のファイルは、相手のプログラムが占有しているので読みにもいけませんよね。
でも、こっちが読んでいるときには相手のプログラムからの書き込みは許可したいってことです。

バックアップしたファイルが若干古くなってしまうのはバックアップできないよりマシなので気にしないです。

90 :デフォルトの名無しさん:2006/05/28(日) 12:27:05
>>89
http://www.microsoft.com/JAPAN/developer/library/jpwinpf/_win32_createfile.htm

fmShareDenyWrite他のアプリケーションは読み出し用にファイルを開くことはできるが,書き込み用に開くことはできない
fmShareDenyRead他のアプリケーションは書き込み用にファイルを開くことはできるが,読み出し用に開くことはできない
fmShareDenyNone他のアプリケーションからのファイルの読み出しおよび書き込みを妨げる処理は行われない


91 :デフォルトの名無しさん:2006/05/28(日) 12:35:34
>>89
>でも、こっちが読んでいるときには相手のプログラムからの書き込みは許可したいってことです。
このタイミングでは、相手のプログラムにはちょっと待ってもらえばいいんじゃないの?


92 :デフォルトの名無しさん:2006/05/28(日) 14:37:34
最近はどんなソフトでも、ひと段落したら Ctrl + F9 をつい押してしまう。

93 :デフォルトの名無しさん:2006/05/28(日) 14:59:37
>>90
これは自分でファイルを作る場合ですよね。

>>91
相手のプログラムに待たせる方法なんてあるのでしょうか?

94 :デフォルトの名無しさん:2006/05/28(日) 15:08:15
>>93
 えっと、今現在、どうやってファイルをコピーしてるわけ?

95 :91:2006/05/28(日) 15:08:44
>>93
あー、相手プログラムのソースがなきゃ出来ないね。
(パラサイトで出来なくもないけど)

96 :デフォルトの名無しさん:2006/05/28(日) 15:20:23
>>94
バックアップしてないです。。。
なので、きちんと定期的にバックアップしようと思っていまして。

97 :デフォルトの名無しさん:2006/05/28(日) 17:09:01
>>96 Delphiで、
1、バックアップしたいファイルを読出+fmShareDenyNoneで開いて
2、バックアップ先のファイルを新規作成で開いて
3、1をメモリに読んで2に書き出すのを繰り返す

98 :80:2006/05/28(日) 19:53:21
>>81,82
レスどうも有難うございます。
delphi以外なにもやったことがなく、しかも独学なので
2ちゃんの初心者スレだけが頼りです。
どうもありがとうございました。


99 :デフォルトの名無しさん:2006/05/28(日) 22:05:44
>>97
いまいち分からないけど、やってみます。

100 :デフォルトの名無しさん:2006/05/28(日) 22:08:29
Paradoxって、もうバージョンアップしないというようなことを聞いたんですが、使うのはやめたほうがいいですか?
未来のOSで動く保証がないってことなんですか?

101 :デフォルトの名無しさん:2006/05/28(日) 22:49:41
そりゃいずれ32bitプログラムがサポートされなくなる頃には
使えなくなるだろうが、あと10年は大丈夫だろう。

ただOracleやSQLServerがタダで手にはいるようになった今
あえてParadoxを使う必要があるかどうかは解らない。

102 :デフォルトの名無しさん:2006/05/28(日) 22:57:33
Oracleって、有名ですね。
使ってみたいですけど、参考になるDelphi本ってみつからないですね。
Paradoxのなら何冊かみつかってるんですが。

初心者には手が出しづらいです。
MySQLをいれてみましたが、軽くて速くていいですね。
使ってみたいとも思ってますが。

103 :デフォルトの名無しさん:2006/05/28(日) 23:05:56
ローカルDBにOracle やSQLServer は重すぎだろ。
Delphi ならInterbase が一番充実していると思うが。

> Paradoxって、もうバージョンアップしない
1995年からね。

> MySQLをいれてみましたが
dbExpress だと古いバージョンしか使えないから注意。

104 :デフォルトの名無しさん:2006/05/28(日) 23:09:16
Paradox、使います。
SQLとか覚えると他のDBの勉強にもなると思うので。

ありがとうございます。

105 :デフォルトの名無しさん:2006/05/28(日) 23:23:46
Oracleのフリー版てあるんすか?ぜひ使ってみたい
詳細教えて

106 :デフォルトの名無しさん:2006/05/28(日) 23:52:39
つ Oracle Database 10g XE

107 :デフォルトの名無しさん:2006/05/28(日) 23:54:32
Express Edition か。

108 :デフォルトの名無しさん:2006/05/29(月) 02:08:28
昨日Delphiを始めてみたばかりなんですが
「とりあえずこの辺読んどけ」的なサイトを
教えてくれませんか?

109 :デフォルトの名無しさん:2006/05/29(月) 03:00:37
http://delwiki.info/?%A5%EA%A5%F3%A5%AF%2F%BD%E9%BF%B4%BC%D4

110 :デフォルトの名無しさん:2006/05/29(月) 14:14:12
ParadoxってBDEでしか扱えないんじゃなかったっけ?
もしそうならParadoxはやめとけ。

>>103の言うInterbaseもしくはFirebirdがお手軽かと。

111 :デフォルトの名無しさん:2006/05/29(月) 16:01:04
Interbase の日本語PDF マニュアル嫁ば。

112 :デフォルトの名無しさん:2006/05/29(月) 22:14:58
Delphiで無料なのはバージョン6だけですか?

113 :デフォルトの名無しさん:2006/05/29(月) 22:16:11
Delphiで作成したDLLをCやC#やJAVAで使用することは出来ますか?
また、どのようにすれば使用できるんでしょうか?

114 :デフォルトの名無しさん:2006/05/29(月) 22:24:48
>>112
Delphi 2005 Personal ドイツ語版

>>113
C ... エクスポートしてある関数を呼び出すだけ
C# ... PInvoke
Java ... DLL をWeb サービス化

115 :デフォルトの名無しさん:2006/05/29(月) 23:12:04
C/DelにDLLの区別はない
JavaはJNIで相互参照可能
C#はしらね

116 :デフォルトの名無しさん:2006/05/29(月) 23:22:40
>>109
すいません&ありがとうございます
そこだけ見落としてました(汗

117 :115:2006/05/29(月) 23:23:00
すまそ>114さんが正しい
JNIはJavaで使うことを前提に作られたDLLのみだ

118 :デフォルトの名無しさん:2006/05/29(月) 23:35:26
2ストロークショートカットを実装したいのですがそういったコンポーネントはありますか?
それとも自前で作らないとダメですか?

119 :デフォルトの名無しさん:2006/05/30(火) 00:06:40
Delphi用のJNIユニットがある。JavaからDelphiのコードを呼ぶことも逆も可能。
"Delphi JNI"でググれ。

120 :デフォルトの名無しさん:2006/05/30(火) 08:46:35
>>118
探してみたが、見つからなかった。
自分で作った方が早いかも。

121 :デフォルトの名無しさん:2006/05/30(火) 14:54:31
DelphiのTCP/IPの初歩でよく作られるホスト、ポートを通知して行うチャットツールなようなものがありますよね?
あれのサーバー側のプログラムを自宅鯖で常時起動、ポート開けて待機状態にしておいていつでもクライアント側から繋いで
チャットができるようにしたいと思ったのですが、可能ですよね?

それと、そうした場合自宅鯖の方のセキュリティがなんとなく不安なんですが大丈夫なのでしょうか?


122 :デフォルトの名無しさん:2006/05/30(火) 14:56:51
可能
サーバープログラムで使用するポート以外を閉じておけばまず大丈夫

123 :デフォルトの名無しさん:2006/05/30(火) 14:58:02
それを考えるのもプログラマー

124 :デフォルトの名無しさん:2006/05/30(火) 15:10:22
>>122
つまり100番ポートをサーバープログラムで開けた場合でもそれが原因で不正な進入などが増加することは
無いってことですね?
ありがとうございました

125 :デフォルトの名無しさん:2006/05/30(火) 15:12:55
100番ポートを通って進入してきたらどうしょうもないけどなw
あと、ポート番号は60000以降を使用すべき

126 :デフォルトの名無しさん:2006/05/30(火) 15:22:00
>>123
繋いできたときに特定のメッセージが送られてこなかったら強制切断するとかそーいうことですか?
>>125
60000以降ってのはポートスキャン対策ということでしょうか?


127 :デフォルトの名無しさん:2006/05/30(火) 15:26:30
自前のソフトでポート番号を使用する場合は
出来るだけ重複のしない60000台以降を使えって
どっかで読んだ、ただそれだけ

ちなみに100番はTCPでnewacctに割り当てられてるから使えないな

128 :デフォルトの名無しさん:2006/05/30(火) 15:27:31
>>127
なるほど、気をつけます

129 :デフォルトの名無しさん:2006/05/30(火) 16:46:20
Delphiと関係ない。

130 :デフォルトの名無しさん:2006/05/30(火) 20:16:00
すんません。中級者以上の人のコードをみてると、
procedure hogehoge(hogeparam: boolean; var hogeInt: integer);

みたいに手続きの引数の中でvarを入れてるのをみるんですが、これは「扱いはローカル変数じゃないよ」ってことなんですか?
仮に、
procedure hogehoge(hogeparam: boolean; hogeInt: integer);
としたときとの違いがイマイチよくわからないんですけど。

131 :デフォルトの名無しさん:2006/05/30(火) 20:27:20
はぁ?
var つけると、参照渡しになるから、プロシージャ内での変更が呼び出し元にも反映される。

ヘルプ読みなよ。基本中の基本。

132 :デフォルトの名無しさん:2006/05/30(火) 20:55:19
procedure Hoge(var iVal:Integer);//参照渡し
begin
 iVal:=1;//WriteLnの結果は'1'
end;

procedure Hoge(iVal:Integer);//値渡し
begin
 iVal:=1;//WriteLnの結果は'0'
end;

procedure Hoge(const iVal:Integer);//定数渡し
begin
 iVal:=1;//コンパイルエラー
end;


var
 I:Integer;
begin
  I:=0;
  Hoge(I);
  WriteLn(I);
end;



133 :デフォルトの名無しさん:2006/05/30(火) 22:58:10
今初級本を読みながら勉強中で、質問が1つあります。
初級本の例題を見ると、classの宣言の部分にあるprocedureの位置が、
以前の例題と今取り掛かっている例題とでは違います。

procedureをclassの宣言のすぐ下(@)とpublicの下(A)に書くのでは、
どのような違いがあるのでしょうか?よろしくお願いします。

type
TForm1 = class(TForm)
             ←以前の例題ではこの辺り(@)
  Image1: TImage;  
Image2: TImage;
Timer1: TTimer;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
procedure Timer1Timer(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private 宣言 }
public
img1 : integer;
img2 : integer;
state : boolean;
procedure check; ←今作業中の例題ではここ(A)
end;


134 :デフォルトの名無しさん:2006/05/30(火) 23:01:37
>>132
関数でポインタを引数にしたときみたいに呼び出し元もかわるんですね。
constがローカル内では変更できないのは知ってましたが・・
ありがとうございます。助かります。

>>131
偉そうな書き方するくらいなら、ナンも書かんとけや!!!
読んでて気分悪くなるだけだからよ! な? 頃すぞ? プゲラ

135 :デフォルトの名無しさん:2006/05/30(火) 23:09:45
態度のよい質問者だな。最近はこんな奴らばかり。

136 :デフォルトの名無しさん:2006/05/30(火) 23:16:05
131=132 の可能性はないのか?

一般論としては 131 が正しい。ヘルプ嫁 >>134

137 :デフォルトの名無しさん:2006/05/30(火) 23:17:39
ヘルプ嫁ですんだら、このスレいらねーよ プゲラ

138 :デフォルトの名無しさん:2006/05/30(火) 23:39:09
漏れも131が正しいと思うぞ。
134は131の2行目が読めなかったのか?

139 :デフォルトの名無しさん:2006/05/30(火) 23:54:31
>133
クラス宣言の直下はDelphiのIDEが自動的に書き込む場所なので、
慣れない間は触らない方がよい。
自分で定義するフィールドやメソッドはprivateまたはpublicの所に書くべき。

なお、プログラム的にはpublic扱い。自分で作ったクラスなら何ら問題ない。







140 :デフォルトの名無しさん:2006/05/30(火) 23:55:51
質問させてください。

(Hairetsuはinteger型の配列)
Hairetsu[1] := StrToInt(Edit1.Text);
Hairetsu[2] := StrToInt(Edit2.Text);
Hairetsu[3] := StrToInt(Edit3.Text);

というようなものがあるのですが、
これをfor文を使ってまとめることはできますか?
試しにfor文の中に、

Hairetsu[i] := StrToInt('Edit' + i + '.Text');
というように記述してやってみたのですが、これだと
Edit1.Textの中身ではなく、Edit1.Textという文字列自体を
Integerに変えようとしてエラーが起きてしまうのですが、
どのようにすればいいのでしょうか?

141 :デフォルトの名無しさん:2006/05/31(水) 00:15:10
var
 CP:TComponent;
begin

  for i:=1 to 3 do
  begin
    CP := Self.FindComponent("Edit"+IntToStr(I));
    If(Assigned(CP)then
    begin
      Hiretsu[i]:=(CP as TEdit).Text;
    end;
  end;

end;

142 :デフォルトの名無しさん:2006/05/31(水) 00:23:54
>>141
ありがとうございました。
これは自分では思いつきそうもなかった。


143 :133:2006/05/31(水) 00:25:33
>>139 どうもありがとうございました。
「プログラム的にはpublic扱い」とか、初心者からみると詳しそうですごいなー、と思います。
また質問するかもしれないので、その時もよろしくお願いします。

144 :デフォルトの名無しさん:2006/05/31(水) 00:30:35
大域変数Edit[1..3]:TEdit を宣言してFormのonCreateに
Edit[1]:=Edit1;
Edit[2]:=Edit2;
Edit[3]:=Edit3;

でやってた・・

145 :デフォルトの名無しさん:2006/05/31(水) 00:44:58
質問の仕方が悪い奴にそれなりのレスがつくのはしょうがない。
ヘルプ嫁で済むならこんなスレいらないし、なんつーか、初心者との対話っていうか触れ合いっていうかコミュニティがいいんじゃないか?
ムカつかせるような返事なら最初から書くべきでないと思う。荒れるから。

146 :デフォルトの名無しさん:2006/05/31(水) 00:50:37
状況次第ですな。
141の方法は汎用性は高いが、名前で捜しているので効率が悪い。
144はポインタを使っているのでこっちの方がずっと速度が速い。


147 :デフォルトの名無しさん:2006/05/31(水) 00:53:24
質問者じゃないけど
>>141のやりかたってなんかいい事あるんですか?
俺ならたぶんこう書いてしまうと思う
var
 i:integer;
begin
 for i:=1 to 3 do
  hairetsu[i] := strtoint(tedit(findcomponent('edit'+inttostr(i)).text);
end;

148 :デフォルトの名無しさん:2006/05/31(水) 01:01:53
> ヘルプ嫁で済むならこんなスレいらないし

そんなことない。>>131 の説明と >>132 の例文は、もっと詳しくちゃんとヘルプに
のっている。おそらく >>130 はヘルプも見てないと思われ。

D6per のヘルプのキーワード に var を入れると一目瞭然。

値パラメータと変数パラメータ
大部分のパラメータは,値パラメータ(デフォルト)か変数パラメータ(var)のどちらかになります。値パラメータは値で渡され,変数パラメータは参照で渡されます。以下の 2 つの関数を例にとって,これを具体的に見てみます。

function DoubleByValue(X: Integer): Integer; // X は値パラメータ
begin
X := X * 2;
Result := X;
end;
function DoubleByRef(var X: Integer): Integer; // X は変数パラメータ
begin
X := X * 2;
Result := X;
end;

どちらの関数も返す結果は同じですが,渡される変数の値を変更できるのは 2 番目の DoubleByRef 関数だけです。これらの関数を次のように呼び出してみます。

(以下省略するがかなり詳しく書いてある)

149 :デフォルトの名無しさん:2006/05/31(水) 01:06:49
もうよくね?

150 :デフォルトの名無しさん:2006/05/31(水) 01:15:34
>147
ってか普通はEdit1とかそのままの名前で使わないっしょ?
そういう場合は>144のようなやりかた(ただしグローバルじゃなくて
フォームのprivate変数で)が柔軟でよいのでは?

151 :デフォルトの名無しさん:2006/05/31(水) 01:42:11
質問のレベルを一気に下げてしまう内容ですが、教えてください。
さっきまで書いていたソースを画面上の緑三角ボタンで実行しようと思ったら、
グレーアウトしていて実行できません。(隣の一時停止ボタンも同様です。)

どこか設定を変えてしまったのか、必要なファイルを消してしまったのでしょうか?
どうすれば実行できるようになるでしょうか?


152 :デフォルトの名無しさん:2006/05/31(水) 01:44:17
コンパイルはF9かCtrl+F9が便利だと思うよ

153 :151:2006/05/31(水) 01:53:03
>>152 回答ありがとうございます。
F9とctrl+F9をやってみましたが、今回は反応ありませんでした・・・。
記述した内容が間違いまくっている?とかで、実行できないのかな・・・。
もう一度書いた内容を見直してみます。

154 :デフォルトの名無しさん:2006/05/31(水) 02:33:57
再起動すれ

155 :デフォルトの名無しさん:2006/05/31(水) 03:49:26
>>139
Publishedじゃないの?

156 :デフォルトの名無しさん:2006/05/31(水) 08:59:03
publishedに書けばプロパティとして公開されるからpublicと同じ扱いだと言っているのでは?

157 :デフォルトの名無しさん:2006/05/31(水) 10:17:38
StringList型のデータを受け取ときは下のように書いていた
procedure hoge(var aList: TStringList);

でも、TStringListtって実際はオブジェクトへのポインタだから
var付けなくても参照渡しになるんだよね、最近知った。

158 :デフォルトの名無しさん:2006/05/31(水) 10:40:56
正しくは、参照の値渡しなわけだが。参照自体を変更したいときはやはり var を
つけなければならない。

159 :デフォルトの名無しさん:2006/05/31(水) 10:50:38
素人な質問で初歩的な質問で恐縮ですが
教えて頂けますでしょうか。

ホイールマウス(真ん中のスクロール用)に対応させたいのですが
どのようにすればよろしいのでしょうか?

FormのonMouseWheelあたりが関係するのかな?と思いましたが
イベントの書き方がよく分かりません。
Memoなどの例で具体的なコードで教えて頂ければ幸いです。

160 :デフォルトの名無しさん:2006/05/31(水) 11:27:49
マウスドライバに依存するらしいよ。

俺の環境 Del6Per Win2k USB でないマウス では一行もコード書かなくても
TMemo はホイールでスクロールする

161 :デフォルトの名無しさん:2006/05/31(水) 11:43:04
>>160
さっそくのレス、ありがとうございます。
Del7+Win2k+PS2(ロジクール)下ではピクリとも動きませんでした…

たとえば2つ以上、スクロール可能なコンポーネントがあった時は
どちらがスクロールするのかしないのか、また同時にケースがあると思うので
基本的には、コードを書かないとダメだと思いますので
恐れ入りますが、引き続きご意見をお待ちしております。

162 :デフォルトの名無しさん:2006/05/31(水) 11:56:24
何もコード書かない場合、通常はフォーカスのあるコントロールがスクロール。

フォームのOnMouseWheelでHandledをTrueにすれば、コントロールにはメッセージが行かない。

Del7+WinXP+MSマウス

163 :デフォルトの名無しさん:2006/05/31(水) 13:14:12
10秒ごとに1足していくっていうプログラムはどうすれば書けますか?
TIMEERイベントを10秒にして1+1しても10秒後に2と表示されるだけで
その後ずっと2で止まってしまいます。for文使っても10秒後にfor文で指定した
上限の値が出力され結局2で止まってしまいます。どなたか教えてください

164 :デフォルトの名無しさん:2006/05/31(水) 13:20:35
Delphi6 の quickreportで、グループが変わったらページ番号のリセットを
したいのですが、PageNumberプロパティは読みとり専用で直接書き込めません。

ページ番号をリセットするにはどうしたらよいでしょうか?

165 :デフォルトの名無しさん:2006/05/31(水) 13:29:15
>>163
コードが示されないことには返答のしようがない・・・

166 :159:2006/05/31(水) 13:43:56
>>162
こちらもレス、ありがとうございます。

ゴメンなさい、初歩な質問で恐縮ですが
> HandledをTrue
と言うのは、どの項目・箇所で指定する物なのでしょうか?

167 :デフォルトの名無しさん:2006/05/31(水) 13:44:48
>>165
Label1.Caption := IntToStr(1+1);
こんなふうにやってんじゃね?

168 :163:2006/05/31(水) 13:45:46
今こんな感じです。Timerのプロパティの方でインターバルを10000にしてます
procedure TForm1.Timer1Timer(Sender: TObject);
var
k:integer;
begin
k:=1+1;
label1.Caption:=IntToStr(k);

end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Timer1.Enabled := True;
end;

end.

169 :デフォルトの名無しさん:2006/05/31(水) 13:49:06
>>166
>フォームのOnMouseWheelでHandledをTrueにすれば、コントロールにはメッセージが行かない。
って書いてあるけどこれの意味が解らない(通じない)の?
フォームの OnMouseWheel イベントの Handled 引数を True にするって意味だと俺は理解したけど・・・

170 :デフォルトの名無しさん:2006/05/31(水) 13:49:57
>>168
ローカル変数をいじっても意味ないじょ・・・

171 :デフォルトの名無しさん:2006/05/31(水) 13:50:25
>>168
おんなじ事じゃ!

var
k:integer; //←こいつをこの辺にくっつけとけ

procedure TForm1.Timer1Timer(Sender: TObject);
begin
k:=1+1;
label1.Caption:=IntToStr(k);

end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Timer1.Enabled := True;
end;

172 :デフォルトの名無しさん:2006/05/31(水) 13:53:46
>>168
変数のスコープだけかと思ってたら
他にもおかしいじゃねぇか!!

こいつは
k:=1+1;

こうじゃ!!
k:=k+1;

173 :デフォルトの名無しさん:2006/05/31(水) 14:09:37
>>172
何よりもまずそこがツッコミどころ

174 :デフォルトの名無しさん:2006/05/31(水) 14:23:36
>>172
そこが最初に突っ込むべき場所だと思うお
1ずつ足すだけなら Inc(k); でもいいんじゃない

175 :163:2006/05/31(水) 14:44:59
わー!!超恥ずかしいミス!!みんなありがと!

176 :159:2006/05/31(水) 14:57:32
>>169
そうです、超初心者なので意味が分からないです。
申し訳ないです・・・

177 :デフォルトの名無しさん:2006/05/31(水) 15:06:26
>>176
procedure TForm1.FormMouseWheel(Sender: TObject; Shift: TShiftState;
WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
begin
Handled := True;
end;

ただし、コントロールにはメッセージが行かない。かは、俺は試してない・・・

178 :159:2006/05/31(水) 17:31:14
>>177
重ね重ね、ありがとうございます。
Handled := True; と直接書くとは思いませんでした・・・

それで試した結果ですが、memoはクリアしたのですが
QuickReportは動きませんでした。

どのコンポーネントを動かすか選んでコードを書く方法はあるのでしょうか?
恐れ入りますがよろしくお願いいたします。

179 :デフォルトの名無しさん:2006/05/31(水) 19:05:47
>>178
QuickReportは使ったことないのでうまくいくのか解らないけど
フォームの OnMouseWheel イベントでアクティブなコントロールを調べて
スクロールバーの位置を変えれば出来るんじゃない?


180 :デフォルトの名無しさん:2006/05/31(水) 19:24:55
>>164
PageNumber は使わずに、自分で変数を用意する。

181 :デフォルトの名無しさん:2006/05/31(水) 20:18:58
>>179
QuickReportはアクティブでは調べられないみたいなのでマウス位置で判断すれば出来そうですな

182 :デフォルトの名無しさん:2006/05/31(水) 21:52:17
TabControl や PageControl の OnDrawTab で自前で描画しているのですが、
選択ページのフォーカスマークって言うんですか、あれを消すには
どうしたらいいでしょう。

183 :デフォルトの名無しさん:2006/05/31(水) 22:01:35
派生して CreateParams() を override して TCS_FOCUSNEVER = $8000; をセットする

184 :デフォルトの名無しさん:2006/06/01(木) 02:38:34
ClientSocket、ServerSocketを使用したTCP/IP通信で連続して通信するときに繋がらないように

ClientSocket.Socket.SendText('hoge');
sleep(20);
ClientSocket.Socket.SendText('hoge');

といつもやってるのですが、もっとうまい方法は無いでしょうか?

185 :デフォルトの名無しさん:2006/06/01(木) 07:20:48
>>184
Timer使えば?

186 :デフォルトの名無しさん:2006/06/01(木) 09:56:42
>>183 回答ありがとうございます。ちょっと試してみます。

187 :デフォルトの名無しさん:2006/06/01(木) 14:23:14
何らかのセパレータ挟んだ方がいいと思うけどね。
ソケット通信で時間的な要素に意味を求めるのは危険というかナンセンスというか・・・
良くないと思う。

188 :デフォルトの名無しさん:2006/06/01(木) 16:23:56
Delphiでメモリーリークが激しいのですが、何かチェックしておくべきことがありましたら教えてください。

容疑者としてはStringlistが一番怪しいのですが、finallyできちんと開放しています。
他は計算とファイル出力のループだけなので怪しいのはいないのですけど、小さなデータを2Mbyteぐらいのテキストファイルに
出力を繰り返すだけなのに3日後に使用メモリ量が180Mbyte超えるとは思えないので。

189 :デフォルトの名無しさん:2006/06/01(木) 16:27:12
それだけならソースうpしたほうが早いと思うよ
怪しいと思ってるstringlistはかならず開放してるとか言われてもどうアドバイスしていいかわからない

190 :デフォルトの名無しさん:2006/06/01(木) 16:27:29
つ MEMCheck
http://v.mahon.free.fr/pro/freeware/memcheck/

191 :デフォルトの名無しさん:2006/06/01(木) 16:34:47
>>188
とりあえず怪しげな部分のソースうp

192 :デフォルトの名無しさん:2006/06/01(木) 16:49:17
Delphiで作ったアプリをLinuxで動くようにすることはできますか?
また、どのような方法があるのでしょうか?

193 :デフォルトの名無しさん:2006/06/01(木) 16:51:27
プラットフォームに依存する処理をしていなければ
Kylixで開いてコンパイルするだけで実行ファイル作られる、はず・・・

194 :デフォルトの名無しさん:2006/06/01(木) 16:56:43
そのKylixとやらは無料ですか・・?

195 :デフォルトの名無しさん:2006/06/01(木) 16:58:56
Delphi7 Enterpriseに付いてきたような

196 :デフォルトの名無しさん:2006/06/01(木) 17:33:36
>>188
Delphiのバージョンは?



197 :デフォルトの名無しさん:2006/06/01(木) 17:35:25
ちょっとふとした質問

コマンドラインで、引数をチェックする関数はありませんでしたっけ。
今は、ParamCountでまわして、ParamStrで文字列比較してます。

Delphiでなくて他の言語でしたっけ・・・

198 :デフォルトの名無しさん:2006/06/01(木) 18:52:33
>>197
あってる

199 :デフォルトの名無しさん:2006/06/01(木) 19:33:39
FindCmdLineSwitchなんてのもあるよ

200 :デフォルトの名無しさん:2006/06/01(木) 19:46:53
>>199
それだ(・∀・)
サンクス

201 :デフォルトの名無しさん:2006/06/01(木) 20:16:57
質問です

Cの strpbrk と同じ動作する関数はありませんか?

202 :デフォルトの名無しさん:2006/06/01(木) 21:03:02
対象の文字列が ' であるかどうか調べたいのですが
' 自体どうやって指定すればよいのでしょうか

JavaScriptやPerlみたいに
if str[i] = '\'' then ..
とかやってみたけど無理でした..。


203 :デフォルトの名無しさん:2006/06/01(木) 21:08:13
''''

204 :デフォルトの名無しさん:2006/06/01(木) 21:10:58
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

205 :デフォルトの名無しさん:2006/06/01(木) 21:15:17
>201
ありません。

>202
シングルクォートを2つ並べると一文字の'と同じ扱いになる。
この場合なら

if str[i]='''' then.....




206 :202:2006/06/01(木) 21:19:45
>>205
ありがとうございました。
覚えておきます。

207 :デフォルトの名無しさん:2006/06/01(木) 21:35:26
>>205
ないですか・・・

ふぅむ、1つづつ比較するのは面倒ですね。

208 :デフォルトの名無しさん:2006/06/01(木) 21:43:05
>>207
そういう関数を作ればいいじゃん。

209 :デフォルトの名無しさん:2006/06/01(木) 21:44:05
>>208
自分で作れるならここに質問してません・゚・(ノД`)・゚・

210 :デフォルトの名無しさん:2006/06/01(木) 21:47:17
>>209
>ふぅむ、1つづつ比較するのは面倒ですね。
面倒ってことはやり方は分かるんじゃないのか?

211 :デフォルトの名無しさん:2006/06/01(木) 21:53:33
>209
実は一つだけ逃げ道があるんだな。
StrPBrkという関数がShlwapi.dllの中にあるので、
これをインポートすればほとんど同じ事が出来る筈。
C言語スタイルなのでString型変数をそのまま使えないけど。


212 :デフォルトの名無しさん:2006/06/01(木) 22:05:58
ユニットのinterfaceの最後辺りに、

 function StrPBrkA(psz:LPCSTR;pszSet:LPCSTR):LPSTR;stdcall;external 'Shlwapi.dll';

とexternal命令でインポートすればおけ。あとは普通の関数と同じように使える。
なお、これはASCII用の関数。UNICODE用はStrPBrkW。

213 :デフォルトの名無しさん:2006/06/01(木) 22:12:22
>>209
glibcとかBSDのlibcからパクってくればいいじゃん。
そのまま使うならBCCで、単純な文字列操作だけだろうからDelphiに書き直すのも簡単。

214 :デフォルトの名無しさん:2006/06/01(木) 22:21:50
・・・。 おおぉ、ありがとうございます。 試してきますm(_ _)m

215 :デフォルトの名無しさん:2006/06/01(木) 22:59:57
その前に、自力で試したぶんを書きます。
スマートにできるならご教授下さい。


function strpchk (s:string; target:string):string;
var
 TPos, TLen, i, j : integer;
 str : string;
begin
 j:= Length(s) -1;
 for i:=0 to j do
 begin
  str := copy(s, i+1, 1);
  TPos := pos(str,target);
  TLen := Length(target);
  if TPos <> 0 then
  Result :=copy(target, TPos, TLen-(TPos-1));
 end;
end;


216 :デフォルトの名無しさん:2006/06/01(木) 23:05:37
あれ・・・? これだったら、見つからなかったら戻り値がないですね・・・

217 :デフォルトの名無しさん:2006/06/02(金) 00:13:47
function StrPBrk2(S:String; sTarget:String):String;
var
  I:Integer;
begin
  Result := '';
  for I:=0 to Length(S)-1 do
  begin
    if Pos(S[I],sTarget)>=1 then
    begin
      Result := String(@S[I]); //←ポインタ使ってるんで注意
      Exit;
    end;
  end;
end;


218 :デフォルトの名無しさん:2006/06/02(金) 01:04:11
Stringって1..Length(S)じゃなかったけ?

219 :デフォルトの名無しさん:2006/06/02(金) 01:08:22
>>218
そそ、0には要素数がはいってるとかなんとか。

220 :デフォルトの名無しさん:2006/06/02(金) 01:45:08
ん? 仮に選択文字が100個あったら、100回繰り返すよな

while文の方がいいんじゃないか?

221 :デフォルトの名無しさん:2006/06/02(金) 02:14:30
Exit

222 :デフォルトの名無しさん:2006/06/02(金) 03:01:31
Break じゃなくて Exit ? Breakじゃなくて?

223 :デフォルトの名無しさん:2006/06/02(金) 03:09:59
この場合どっちも変わらん

224 :デフォルトの名無しさん:2006/06/02(金) 06:55:25
売却されるって話どうなったの?


225 :デフォルトの名無しさん:2006/06/02(金) 08:52:18
再就職の話どうなったの?

226 :デフォルトの名無しさん:2006/06/02(金) 09:06:59
VCLにはベクトル演算関連のユニットは含まれていないようですが、
サードパーティ製のライブラリで定番のものは何かありますか?

227 :デフォルトの名無しさん:2006/06/02(金) 10:07:45
ない

228 :デフォルトの名無しさん:2006/06/02(金) 12:33:18
ていうか、あまり深く考えなくても
C向けのDLLをインポートして用が済んでしまうので、
わざわざDel用のライブラリ作ろうとする人がいないんだな。

ということで、まずはDLLを探してみることをお薦めしてみる。

229 :デフォルトの名無しさん:2006/06/02(金) 13:27:33
計算アルゴリズム
ttp://pc8.2ch.net/test/read.cgi/tech/1090227743/939
とするとまぁ、線分は方向ベクトルであらわしておいて内積とるのが無難だね。
いろいろポカがあったんで極力ちゃんと書いてみた。

#include<cmath>

struct Point2D {
double x;
double y;
Point2D(x, y) : x(x), y(y) {;}
};

struct Vector2D {
double x;
double y;
Vector2D(const Point2D& p)
: x(p.x), y(p.y) {;}
Vector2D(const Point2D& p1, const Point2D& p2)
: x(p1.x-p2.x), y(p1.y-p2.y) {;}
Vector2D getUnitVector(void) const;
};

230 :デフォルトの名無しさん:2006/06/02(金) 13:28:15
940 名前: 子供の頃から忘れ物の多い924 [sage] 投稿日: 2005/10/12(水) 15:10:14
inline double innerProduct(const Vector2D& v1, const Vector2D& v2){
return(v1.x*v2.x+v1.y*v2.y);
}

inline double norm(const Vector2D& v){
return(innerProduct(v,v));
}

inline double abs(const Vector2D& v){
return(sqrt(norm(v,v)));
}

inline Vector2D Vector2D::getUnitVector(void) const {
double absv = abs(*this);
return(Vector2D(x/absv, y/absv));
}

inline double getRadian(const Vector2D& v1, const Vector2D& v2) {
return (acos(innerProduct(v1.getUnitVector(), v2.getUnitVector()));
}

231 :デフォルトの名無しさん:2006/06/02(金) 13:29:55
942 名前: デフォルトの名無しさん [sage] 投稿日: 2005/10/12(水) 15:25:08
>モジュラ演算は無視して良いですか?
 結果が-300度とかになっても問題なければ無視してもいい
 +90度と-90度も 線分の場合は区別する場合と、区別しない場合もあるしね

>ベクトルの内積とは、x1*x2 + y1*y2、で良いですか?
>absのaとbは何を表すのでしょうか?
 a,bが判らないのと同じく x1 x2も判らんけど、座標っぽい雰囲気があるなあ
 座標じゃなくて方向ベクトルだから線分の終点-始点 でなければいけないよ。

 でabsはその方向ベクトルの絶対値 sqr( x2^2+y2^2 )* abs( x1^2+x1^2)

950 名前: 949 [sage] 投稿日: 2005/10/12(水) 16:43:38
ちなみに正確な距離を出したいのではなく遠い近いを比較したいだけならnorm()で十分。

951 名前: デフォルトの名無しさん [sage] 投稿日: 2005/10/12(水) 16:45:04
hypotを使った方がいいよ
sqr(dx^2+dy^2) == hypot(dx,dy)

232 :デフォルトの名無しさん:2006/06/02(金) 18:19:27
Delphi6のアップデート2パックを実行しようとしているのですが、
delphi6update2.exeを実行しても解凍していますの表示は出てくるのですがその後の画面が表示されません。
タスクマネージャーを見るとdelphi6update2.exeはタスクに残っていますが1時間待っても動きません。
D6はもちろん終了させています。
TempFolderに解凍されたUpdate関係のファイルがあったのでそこのSetup.exeを実行しても何も表示されません。
このSetup.exeもタスクマネージャーにはずっと残っています。

これを回避する方法がありましたら教えてください。

233 :デフォルトの名無しさん:2006/06/02(金) 18:50:47
>>232
ダウンロードしなおしてみたら?

234 :デフォルトの名無しさん:2006/06/02(金) 19:02:30
>>233
もちろんやってみましたが、駄目でした。
ファイルサイズは同じです。

235 :デフォルトの名無しさん:2006/06/02(金) 19:09:28
c:\ に置いて実行してみるとか。

236 :デフォルトの名無しさん:2006/06/02(金) 19:46:20
ユーザー名に2バイト文字が含まれるとか、そんなので不具合の出るアプリがあったりするが、どうか?

237 :デフォルトの名無しさん:2006/06/02(金) 20:30:18
IEだと駄目だと思ってFlashGetで別フォルダにDownLoadしてみたけど駄目でした。
>>235
駄目ぽ。

>>236
デフォルトのフォルダ名ぽ。

238 :デフォルトの名無しさん:2006/06/02(金) 21:00:14
もうDel6は使うな、という某のシグナルかもね

239 :デフォルトの名無しさん:2006/06/02(金) 21:16:41
Delphi をデフォルトのディレクトリにインストールしていないとか。
http://support.borland.com/entry.jspa?externalID=4324#del6up2

240 :デフォルトの名無しさん:2006/06/02(金) 21:43:42
な、なあ、>>236,237,239の流れおかしくないか?
>>237のデフォ(ryは>>236では無く>>239へのレスじゃん?
予知能力?

241 :デフォルトの名無しさん:2006/06/02(金) 21:52:33
>237は未来人。ハルヒと戯れてやってください

非公式パッチ当てたとかは?
Del6にあったかどうか知らんが。

242 :デフォルトの名無しさん:2006/06/03(土) 00:38:29
>>211,212

そういう情報はどこを見ればわかりますか?


243 :デフォルトの名無しさん:2006/06/03(土) 01:24:53
タイマーを使って心電図のようなグラフィックをつくりたいんですがうまくいきません。
ボタンを押したらタイマーが起動しMoveTo、LineToを使って10秒おきに座標与えて
10秒おきに描かれていくっていうのが理想なんですが何か良い方法ありませんか?

244 :デフォルトの名無しさん:2006/06/03(土) 01:28:25
「何がうまく行かないのか」書かないと。

245 :デフォルトの名無しさん:2006/06/03(土) 01:38:42
Delphi 2005とVB 2005でどちらが優れていますか?

246 :デフォルトの名無しさん:2006/06/03(土) 01:39:08
今、
procedure TForm1.Timer1Timer(Sender: TObject);
begin
PaintBox1.Canvas.MoveTo(0,0);
PaintBox1.Canvas.LineTo(50,50);
PaintBox1.Canvas.LineTo(100,100);
PaintBox1.Canvas.LineTo(200,150);
PaintBox1.Canvas.LineTo(300,200);

みたいな感じで書いていてintervalは10秒おきにしてるんですが私のやりたい事は

時間経過  0秒   10秒   20秒    30秒
座標     (0,0)→(50,50)→(200,150)→(300,200)

って感じで10秒おきに折れ線グラフのようなグラフを描画していきたいのですが
上記のコードだと10秒間で、(0,0)→(50,50)→(200,150)→(300,200)の折れ線グラフが一気に描画されてしまいます

247 :デフォルトの名無しさん:2006/06/03(土) 02:01:06
>>245 優劣を付ける基準が解らないと何とも言えない。

>>246 そりゃそうだろう。

248 :デフォルトの名無しさん:2006/06/03(土) 02:10:55
初心者向けなら、
var
 Counter: Integer;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
 with PaintBox1.Canvas do
 begin
  FillRect(PaintBox1.ClientRect);
  MoveTo(0,0);
  if Counter > 0 then LineTo(50,50);
  if Counter > 1 then LineTo(100,100);
  if Counter > 2 then LineTo(200,150);
  if Counter > 3 then LineTo(300,200);
 end;
 Inc(Counter);

249 :デフォルトの名無しさん:2006/06/03(土) 07:12:35
初心者だって配列使うぐらいできるだろう。それはあまりにもひどい。

250 :デフォルトの名無しさん:2006/06/03(土) 08:40:49
>>249
いや、ランダムにしる

251 :56:2006/06/03(土) 09:30:41
キャプションが不定の親ウインドウを検索するのはキャプションをnilにしてうまく出来ました!

それで次は同じクラスを持つ複数の子ウインドウのうち1つを選択したいのですがキャプションがありません。
選択したいウインドウはTPanelなんですがFSDevで見ても違うのは座標くらい、
その座標も親ウインドウから見た相対座標でないので使えそうもありません。

どうしたらうまく選択できるのでしょうか?
よろしくお願いします。



252 :デフォルトの名無しさん:2006/06/03(土) 10:40:39
クラス名でも検索できるよ

253 :デフォルトの名無しさん:2006/06/03(土) 11:31:02
>>239
そのデフォルト以外のディレクトリを指定する画面すら表示されないぽ。

254 :デフォルトの名無しさん:2006/06/03(土) 11:34:33
>>241
非公式のパッチは当ててないぽ。

255 :デフォルトの名無しさん:2006/06/03(土) 12:25:38
>>246
TForm1 = class
〜〜
private
x,y: integer; ←onCreateとかで初期化

PaintBox1.Canvas.MoveTo(0,0);←これはonShowで

あとはtimerイベントの中でLineTo(x,y);の後に次の数値をx,yに代入しておくとか
かな?

256 :デフォルトの名無しさん:2006/06/03(土) 13:59:53
.jsファイルを開くメソッドってありますか?

WinExec(C:\hoge.js, SW_SHOW)

とかやってみたんですがダメでした。

257 :デフォルトの名無しさん:2006/06/03(土) 16:18:39
普通は、関連付けを利用するなら WinExec() じゃなくて ShellExecute() だろ

258 :デフォルトの名無しさん:2006/06/03(土) 16:23:01
実行したいのか?
それとも開いて内容を見たいのか?

259 :デフォルトの名無しさん:2006/06/03(土) 16:31:30
>>254
再インストールしたほうがいいのかも
ファイルが破損してて読み込めないとか


260 :デフォルトの名無しさん:2006/06/03(土) 16:41:51
関連付けられたアプリで開くならShellExecute
開くアプリを指定したいならCreateProcess
中を見たいならテキストファイルだからAssignFileなりTStringList.LoadFromFileなりTFileStream

261 :256:2006/06/03(土) 16:48:42
>>257
>>258
>>260

なるほど! ShellExecuteで実行できました。ありがとうございました!

262 :56:2006/06/03(土) 17:00:46
>>252

うーん、検索は出来るんですけど押したいボタンのあるウインドウかをどうやって判断するんでしょう?

263 :デフォルトの名無しさん:2006/06/03(土) 21:13:21
プログラム可能なら、へなちょこなクラス名にするといい。
可能でないなら、具体例を示さないとアドバイスできない。

264 :246:2006/06/03(土) 21:59:53
>>248さん
返信ありがとう!無事に出来ました!!

ただ、もう一つ悩んでいる事があります。
配列の要素から最大の値を取るものと最小の値を取るものを抽出したいのですが可能ですか?

265 :246:2006/06/03(土) 22:01:04
>>255さんもありがとう!!

266 :デフォルトの名無しさん:2006/06/03(土) 22:05:37
可能ってか、if 文で大小比較するだけ。

267 :246:2006/06/03(土) 22:35:23
すいません。言葉足りませんでした。if文でやってるんですけど
配列の要素が300近くあるのでなんか一発で出来るような関数ってないのかな〜
と思ってきいてみました!
あと246でも書いたんですけど10秒おきにじょじょに描画されるグラフの
最大値と最小値を10秒ごとの値を確認しながら更新するってのをやりたいんですけど
うまくいきません。

具体的にはif文で最大値と最小値を模索して表示しているんですが(下記コード参照)
if a[2] > a[3] then label3.Caption:=IntToStr(a[2]);
if a[3] > a[4] then label3.Caption:=IntToStr(a[3]);
if a[4] > a[5] then label3.Caption:=IntToStr(a[4]);
これだと10秒後にいきなり最大値と最小値がキャプションされてしまいます。
株ゲームなのでいきなり最高値と最安値が表示されては意味無いので困っています・・。
上で教わったとおりカウンタを使って
if Counter > 0 and kabuka[1] > kabuka[2] then label3.Caption:=IntToStr(kabuka[1]);
としてみましたが型が合わないと言われコンパイルと降りませんでした。
聞いてばっかですいません。

268 :デフォルトの名無しさん:2006/06/03(土) 22:36:21
WideString用のTStringListって有りますか?

269 :デフォルトの名無しさん:2006/06/03(土) 22:37:41
まずは文法から覚えるといい

if (Counter > 0) and (kabuka[1] > kabuka[2]) then label3.caption := InttoStr(kabuka[1]);

270 :デフォルトの名無しさん:2006/06/03(土) 23:03:25
>>268
ここにUnicodeに対応したVCLクラスライブラリがある
http://www.tntware.com/delphicontrols/unicode/

インストールすれば中にTTntStringListっていう
WideString用のTStringListがある
フリーのライブラリ使うの嫌ならTListで代用するしかない

271 :デフォルトの名無しさん:2006/06/04(日) 00:13:50
>>251
EnumChildWindows で全部列挙し、それらしいのを探すしかない。

272 :デフォルトの名無しさん:2006/06/04(日) 00:14:05
>>267

最大値、最小値の値を保持する変数 max と min を使って、最後に表示した部分と比較
するんだよ。

で、最大値だったら、max にその値を代入する。最小値も同じ。そうすると、更新される
たびに max と min を表示するだけでリアルタイムで最大、最小を表示することが出来る。

プログラミングのコードより、論理を考えたほうがいいよ。

273 :デフォルトの名無しさん:2006/06/04(日) 00:51:49
教えてください。「procedure ******」というようにメソッドの定義をする場合、
必ず定義の中身はbegin/endでくくる(※@)ものなのでしょうか?
それとも場合によってはbegin/endは不要(※A)なのでしょうか?
begin・endの使い方を完全に理解できているわけではないため、時々書き忘れてしまいます。
-----------------------------
@procedure ******;
begin
・・・・・・・・・;
end;
-----------------------------
Aprocedure ******;
・・・・・・・・・;
-----------------------------
よろしくお願いします。

274 :デフォルトの名無しさん:2006/06/04(日) 00:52:34


275 :273:2006/06/04(日) 01:00:23
どうもありがとうございます。ちゃんと書くようにします。

276 :デフォルトの名無しさん:2006/06/04(日) 01:35:45
質問させてください。
AとBという画像ファイルがあって、それらが同じ画像かどうかを判別するにはどうしたらいいですか?

作ろうと思っているのは、デジカメの管理ソフトなんですが。
今やってみたのは、TStringListでそのまま読み込んで、
if StrList1 = StrList2 then 〜
とやったんですが、同じ画像なはずなのに上手くいきません。

277 :デフォルトの名無しさん:2006/06/04(日) 01:40:56
参照を比較してもダメ。中身を比較しないと。
っていうか、それ以前に画像なのにTStringListつかってどうする。

278 :デフォルトの名無しさん:2006/06/04(日) 01:54:50
TStringListでやると手軽に開けたんでw
中身の比較というと、どういったのを書けばいいですか?

279 :デフォルトの名無しさん:2006/06/04(日) 02:01:11
バイナリの比較でいいなら

var
 Mem1, Mem2: TMemoryStream;
begin
 Mem1 := TMemoryStream.Create;
 try
  Mem2 := TMemoryStream.Create;
  try
   Mem1.LoadFromFile('Hoge');
   Mem2.LoadFromFile('Hige');

   if (Mem1.Size = Mem2.Size) and CompareMem(Mem1.Memory, Mem2.Memory, Mem1.Size) then
    ShowMessage('同じだタコ')
   else
    ShowMessage('ちげーよカス');
  finally
   Mem2.Free;
  end;
 finally
  Mem1.Free;
 end;

280 :デフォルトの名無しさん:2006/06/04(日) 02:01:44
end; がいっこ足りんかった

281 :デフォルトの名無しさん:2006/06/04(日) 03:03:12
ありがとうございます。できました。TMemoryStreamという便利なのがあるんですね。
知らなかったんで、いちいちBMPに保存してRGBを調べないといけないのかと思ってました。

282 :56:2006/06/04(日) 09:12:16
>>271
有難うございます
またも新しい関数なのでmsdn見ながらいろいろやってみます。

283 :デフォルトの名無しさん:2006/06/04(日) 19:09:36
前スレで他のアプリを強制的に終了させるのはWM_TERMINATEって言われたんだけど、そんなコマンド無いって怒られてしまいます。
WM_CLOSEで終了できないアプリを終了させるにはどうすればいいのでしょうか?

284 :デフォルトの名無しさん:2006/06/04(日) 19:17:25
WM_CLOSEをシカトするアプリに強制退去を願うなら
DestroyWindowで無理矢理ぶっ壊すとか?

285 :デフォルトの名無しさん:2006/06/04(日) 21:15:40
TerminateProcessに終了したいプロセスハンドルをセットして実行汁。
プロセスハンドルはOpenProcessでPIDをセットして取得する。


286 :デフォルトの名無しさん:2006/06/04(日) 21:24:14
てか、コマンドってなんだ?

287 :デフォルトの名無しさん:2006/06/05(月) 00:10:35
WM_CLOSE はアプリを終了するメッセージじゃないよ。

288 :デフォルトの名無しさん:2006/06/05(月) 00:50:34
WM_QUITの間違いじゃない?
それと、Delphiで作ったアプリなら DestroyWindow じゃ駄目でしょ。

289 :デフォルトの名無しさん:2006/06/05(月) 01:00:05
DestroyWindow もアプリを終了する API じゃないよ。
強制終了なら、上にある TerminateProcess 使うべき。

290 :デフォルトの名無しさん:2006/06/05(月) 11:32:29
hndl := FindWindow(nil, '電卓'));

if hndl<>0 then begin
ProcessID := GetWindowThreadProcessId(hndl, @PID);
hProcess := OpenProcess(PROCESS_TERMINATE, False, ProcessID);
TerminateProcess(hProcess , 0 );
CloseHandle(hProcess);
end;
これでやったらマシン自体が暴走してしまいます。

M$は暴走してるもの意外ではTerminateを使うな、って言ってるみたいだけど、
タスクマネージャーできちんと終了できるのだから何かきちんと終了させる方法はあると思うのですけど、
どうすればできるのでしょうか?


291 :デフォルトの名無しさん:2006/06/05(月) 11:43:08
SendMessageでWM_CLOSE送ればいいんじゃない

292 :デフォルトの名無しさん:2006/06/05(月) 11:47:56
('・ω・`)

293 :デフォルトの名無しさん:2006/06/05(月) 11:54:01
見えない

294 :デフォルトの名無しさん:2006/06/05(月) 11:54:27
>>291
暴走しててそれでも終了できないのがあるんですよ。

295 :デフォルトの名無しさん:2006/06/05(月) 12:08:45
まずはTerminateProcessの戻り値を見て
正常に終了出来てるか確認したほうがいいんじゃないかな

296 :デフォルトの名無しさん:2006/06/05(月) 16:11:13
>>290
ThreadID := GetWindowThreadProcessId(hndl, @ProcessID);

297 :デフォルトの名無しさん:2006/06/05(月) 18:13:44
>>294
SendMessageTimeout で WM_CLOSE してシカトされたら Terminate とかじゃなかったっけ?

298 :デフォルトの名無しさん:2006/06/05(月) 19:32:14
TThreadのExecuteが終了したことを知る手段はないでしょうか。
OnTerminateで知るのがよいのか、Executeを最後にフラグを立てるのがよいのか・・・

299 :デフォルトの名無しさん:2006/06/05(月) 21:12:38
basic の GOTO みたいに、処理を途中で違う場所へ飛ばす命令はありますか?

if ( i <> 0 ) then begin
 処理...
end else begin

end;

300 :デフォルトの名無しさん:2006/06/05(月) 21:14:34
>>298
Executeの終わりでSetEventするなり、スレッドのハンドルをWaitForSingleObjectするなり。

301 :デフォルトの名無しさん:2006/06/05(月) 21:14:57
おかしな所で送ってしまいましたΣ

basic の GOTO みたいに、処理を途中で違う場所へ飛ばす命令はありますか?

if ( i <> 0 ) then begin
 処理...
end else begin
 アプリを終了
end;

if (j <> 0) then begin
 処理...
end else begin
 アプリを終了
end;

というように、if 文を連続で書いている状態でして、
見やすくする方法はありますか?

302 :デフォルトの名無しさん:2006/06/05(月) 21:15:00
>>299
goto
てか、gotoなんて使うな

303 :デフォルトの名無しさん:2006/06/05(月) 21:15:50
>>299
Delphiにもgoto文あります。ヘルプを見れ。

304 :デフォルトの名無しさん:2006/06/05(月) 21:22:26
>>302
goto以外で、実現する方法ありませんか?

>>303
ありました・・・ ありがとうございます。
Basic だけの命令だと思いこんでいて、調べていませんでした。

305 :デフォルトの名無しさん:2006/06/05(月) 21:30:22
>>304
実現って、既にif文で書けてるんじゃないの?

306 :305:2006/06/05(月) 21:31:12
やべ、途中送信。

goto なんて使ったら尚更可読性落ちるぞ。

307 :デフォルトの名無しさん:2006/06/05(月) 21:43:36
if 文ネストになっていて、どうにか脱却できないかなと思いまして。

このまま続けてみます。

308 :デフォルトの名無しさん:2006/06/05(月) 21:49:31
加算された値に加算するにはどうすれば良いんですか?
例えば、初期値100にeditから受け取った値5を加算し、105を表示。
次にまた、8を入力し加算し113にしたいときなんかどうすればいいんでしょう?
a:=100;
b:=a+StrToInt(edit.text);
label1:=IntToStr(b);
みたいに書いてるんですがこれだと何度加算しても105になっちゃうんで困ってます。

309 :デフォルトの名無しさん:2006/06/05(月) 21:53:40
ifのネストになっているならExitを効果的に使うんだ

if Hoge = 0 then
 form1.Close
else
 if Uho = 'otoko' then
  form1.caption
end;

↑こんなのならform1.Closeの後にExitを入れれば次のelseはいらなくなる

310 :デフォルトの名無しさん:2006/06/05(月) 21:55:12
>>308
Delphiというよりプログラムの基礎をもう少し勉強するんだ

311 :デフォルトの名無しさん:2006/06/05(月) 21:56:50
>>308
初期化は1回だけにしないと・・・てか、こんな例じゃダメだ端折りすぎ。

312 :デフォルトの名無しさん:2006/06/05(月) 22:03:37
> label1:=IntToStr(b);

ありえない。質問するときは、ちゃんと動くコードをしめすこと。

313 :デフォルトの名無しさん:2006/06/05(月) 22:09:08
>>308
bを上に定義しといて
b:=b+a+StrToInt(edit.text);
だろ?普通

314 :デフォルトの名無しさん:2006/06/05(月) 22:45:07
>>309
わかりました。やってみます。


ヘルプで Exit 手続き の例を見ようとしたら、
追加情報はありません(141)
と出ます。
何が書かれてるんでしょうか。

315 :デフォルトの名無しさん:2006/06/05(月) 22:52:44
delphiのgotoは使い方によってはありだと思うよ

316 :デフォルトの名無しさん:2006/06/05(月) 23:03:07
可読性上げるのなら、ifの条件判定部を関数化して
その関数をまとめたチェッカークラス作るのも手だね
再利用する時には関数名からチェック内容も推測出来るし一石二鳥。


317 :デフォルトの名無しさん:2006/06/05(月) 23:12:31
>>315 たとえば?

318 :デフォルトの名無しさん:2006/06/05(月) 23:20:03
ある文から、複数の文のどれかを検索し、
HITした文字以下を返すプログラムはどう書けばいいですか?

○○%#△△ からは %#△△ を
○○&#△△%#◇◇ からは &#△△ と %#◇◇ を
という風に % & ' って文字のどれかがHITした後の文字を切り出すのです。
300行くらいある文からそれぞれ取り出したいんです。

319 :デフォルトの名無しさん:2006/06/05(月) 23:20:08
多重ネストしたループで、任意の階層だけループを抜ける場合とか

320 :デフォルトの名無しさん:2006/06/05(月) 23:21:25
数が多いなら関数作っても良いし、少ないなら単にExit使えば良い
ifのネストを減らすとか、可読性を大事にすることは凄く良いことだ
間違っても10階層ネスト朝飯前のようなイタ飯屋になってはいけない

321 :デフォルトの名無しさん:2006/06/05(月) 23:22:33
>>318
AnsiPosとCopyで頑張れ

322 :デフォルトの名無しさん:2006/06/05(月) 23:27:53
>318
特定の文字列を捜すにはPos関数を使う。
文字列の一部を切り出すにはCopy関数を使う。
ただし%&' 別個に捜す必要があるわけだから、%&' を別個に捜して、
一番最初に見つかった位置に対して切り出しする必要があるのでちょっと大変。
(Cならstrpbrkという便利な関数が有るんだけどねぇ…)








323 :デフォルトの名無しさん:2006/06/05(月) 23:38:02
>>322
その strpbrk というものを delphi で再現できないんですか?

324 :デフォルトの名無しさん:2006/06/05(月) 23:40:33
一文字ずつ調べてった方が速いんじゃ……(Cの時も

325 :デフォルトの名無しさん:2006/06/05(月) 23:43:09
>>320
話は全然変わるが
例外処理やらif、whileやらを併せて使うと5重ネストとか朝飯前になってしまって非常に見づらくて困る。
おまけにifとifとの間にコメントが挟まれててどっちのコメントかもわかりにくい。
しかも現行で稼動実績のある部分なので修正入れることもできず・・・

今後こうならないためにどうすべきですかね(´・ω・`)

326 :デフォルトの名無しさん:2006/06/06(火) 00:06:43
>322

>212辺りを参照。ただしC言語仕様なので、
Del用に転用するにはそれなりの知識が必要なのです。

>325
if文での処理をarray[boolan] of で宣言した配列で代用できるであります!
これは代入する値をif文で切り替えるようなケースだけではなく、
関数ポインタやクラスへのポインタを使用することで、処理自体の分岐も実現できる可能性があるであります!
同様にcaseの代わりも範囲型の配列で代用できるであります!


327 :デフォルトの名無しさん:2006/06/06(火) 00:07:50
例外処理一つにできないか考えるべき。
>>279 のコードは駄目。
後は関数内関数を使って見やすくする。


328 :デフォルトの名無しさん:2006/06/06(火) 15:51:49
PaintBox1.Canvas.Brush.Color:=clWhite;
PaintBox1.Canvas.Brush.Style:=bsHorizontal;

キャンバスに描いたグラフの後ろに等間隔でメモリ線を敷きたいと思い
Brush.Style:=bsHorizontalで線を敷いてみたんですが黒地に白線の背景になってしまいました。
これを白地の黒線にしたいのですがどうやればできますか?
一応Brush.color:=clWhiteとかやってみたんですが効果無しです。
どなたか教えてください。

329 :デフォルトの名無しさん:2006/06/06(火) 16:12:52
>>328
Penの設定は?

330 :329:2006/06/06(火) 16:20:16
>>328
ここでも参考に
ttp://www.h5.dion.ne.jp/~tuyano/DlphTutor/DlphTutor5.html

331 :デフォルトの名無しさん:2006/06/06(火) 16:46:30
返信ありがとうございます!

>>329
Pen.color:=clWhite(白線にする)
と書いても無反応です。

>>328
そこみたんですがわかりませんでした。

332 :デフォルトの名無しさん:2006/06/06(火) 16:56:16
白でFillRectして黒でstyleにps何がしを設定してからLineToした後にグラフ書くとか

333 :デフォルトの名無しさん:2006/06/06(火) 17:21:33
>>331
Brush.Styleが合ってないと思われる。線を引くだけなら背景の塗りつぶしはしない

334 :デフォルトの名無しさん:2006/06/06(火) 17:32:16
>>328
これだけでは判断できないんですけど、LineToで線引いてるんだよねぇ?

335 :デフォルトの名無しさん:2006/06/06(火) 17:38:32
いや、ハッチブラシを使いたかったんでしょ。こんな場合はありえないが。

336 :デフォルトの名無しさん:2006/06/06(火) 17:47:43
タイマー使って徐々にグラフを描くっていう感じの仕様にしたいので
その都度、LineToで線を引くのはだるくてBrushStyleで代用できないかな〜
と思ったんですけどテキスト見ながらコンパイルしたらなぜか
黒地に白線になってしまい困っています。

337 :デフォルトの名無しさん:2006/06/06(火) 18:08:36
MoveTo() LineTo() を使った方が簡単。間隔とか背景色といろんなことが自由にできるし。

338 :デフォルトの名無しさん:2006/06/06(火) 21:22:51
Posは最初のマッチを返しますが、
最後にマッチした位置を返す関数はありますか?


339 :デフォルトの名無しさん:2006/06/06(火) 21:32:05
while pos<>0 do でまわす

340 :デフォルトの名無しさん:2006/06/06(火) 21:37:28
ふざけないでください

341 :デフォルトの名無しさん:2006/06/06(火) 21:49:25
ttp://hp.vector.co.jp/authors/VA015850/delphi/fragments/RPos.html

342 :デフォルトの名無しさん:2006/06/06(火) 21:53:31
>>341
ありがとう

343 :デフォルトの名無しさん:2006/06/06(火) 22:01:32
var hoge; でグローバル変数にする方が
classの変数にするよりメモリ消費が少ないのは何故ですか?


344 :デフォルトの名無しさん:2006/06/06(火) 22:03:36
そんなことを気にするのは何故ですか?

345 :デフォルトの名無しさん:2006/06/06(火) 22:04:57
逆にメモリ消費が多いと期待どおりなのか?

346 :343:2006/06/06(火) 22:05:23
同じなら期待通りです

347 :デフォルトの名無しさん:2006/06/06(火) 22:06:54
ファイル名に使えない文字が入力されたか調べるためにStringListに禁止文字を格納し
EditのOnChangeイベントで一文字ずつIndexOfを使って、該当したら削り取るような処理をしています。

var
 i:Integer;
 tmp:String;
begin
 for i := 1 to Length(Edit1.Text) do begin
  if SL.IndexOf(Edit1.Text[i]) = -1 then
   tmp := tmp + Edit1.Text[i];
 end;
 Edit1.Text := tmp;
end;

もっとスマートなやり方があるのではないかと思いますのでヒントでも頂けたらと。

348 :343:2006/06/06(火) 22:09:00
>>344
え?気になりませんか?

>>345
同じなら期待通りです


349 :デフォルトの名無しさん:2006/06/06(火) 22:19:41
オブジェクト参照がある分、クラス内変数がメモリ消費が多いのは当たり前。
メモリ効率より便利さを優先してのクラスライブラリである VCL 使ってて、
メモリ消費を気にするのは、ちょっと理解に苦しむ。

350 :デフォルトの名無しさん:2006/06/06(火) 22:23:23
Pos 関数みたいに、前から検索していき
見つかった箇所以下の文字列を取得するのは、

RightStr関数 使うより楽な方法ありますか?

351 :デフォルトの名無しさん:2006/06/06(火) 22:25:18
>>347
TStringList より列挙型使ったほうがいいんでない?
const
 InvalidChar = [' ', #9, '\', '/', ':', ',', ';', '*', '?', '"', '<', '>', '|'];
var
 i: Integer;
 Source, Dest: String;
begin
 Source := 'hogehog\e.txt';
 Dest := '';
 for i := 1 to Length(Source) do
  if not(Source[i] in InvalidChar) then
   Dest := Dest + Source[i];
end;

352 :351:2006/06/06(火) 22:26:34
ありゃ、InvalidChar にスペースとか含んでら。
その辺は適宜修正してくれ

353 :デフォルトの名無しさん:2006/06/06(火) 22:28:15
>>349
なんとなく分かったような・・・
大きい変数はclassに入れない方がいいんですね。

354 :デフォルトの名無しさん:2006/06/06(火) 22:31:40
>>347
KeyPressで弾けばいいんじゃね?例はアルファベットのみ
procedure TMainForm.Edit1KeyPress(Sender: TObject; var Key : Char);
const
Arrow_Keys := ['a'..'z','A'..'Z'] ;
begin
if not Key in Arrow_keys then Exit ;
end;

355 :デフォルトの名無しさん:2006/06/06(火) 22:32:57
>>354
Key := #0 にするの忘れてた・・・

356 :デフォルトの名無しさん:2006/06/06(火) 22:35:48
>>350
Copy関数使え。あるいはSetStringとか

357 :デフォルトの名無しさん:2006/06/06(火) 22:42:21
> 大きい変数はclassに入れない方がいいんですね。

メモリ消費の多い少ないは、クラス変数にするかどうかと全く関係ないです。

クラスのインスタンスと1対1の関係がある場合は、クラスのフィールド変数にすべきです。
基本的には、クラスに密着して、クラスのメソッド内で参照・変更される変数は
すべてクラスのフィールド変数にすべきです。

グローバル変数とは使い方がまったく違います。

358 :デフォルトの名無しさん:2006/06/06(火) 22:50:16
>>357
それを分かった上で>>343の質問をしたのですが

359 :デフォルトの名無しさん:2006/06/06(火) 22:53:04
それを分かった上でなんでその疑問が出てくるんだ・・・

360 :デフォルトの名無しさん:2006/06/06(火) 22:54:56
http://anime.2ch.net/test/read.cgi/shar/1149395940

ここを荒らしてください 荒らしでもいないかぎり1000いきません

         お願いします

色んな所で見るが マジでうるさいからやめろ馬鹿 死ねオタク http://anime.2ch.net/test/read.cgi/shar/1149395940

ここを荒らしてください 荒らしでもいないかぎり1000いきません

         お願いします

色んな所で見るが マジでうるさいからやめろ馬鹿 死ねオタク http://anime.2ch.net/test/read.cgi/shar/1149395940

ここを荒らしてください 荒らしでもいないかぎり1000いきません

         お願いします

色んな所で見るが マジでうるさいからやめろ馬鹿 死ねオタク

361 :デフォルトの名無しさん:2006/06/06(火) 23:03:31
delphi使いはメモリ消費を気にしないんですね

362 :デフォルトの名無しさん:2006/06/06(火) 23:07:22
メモリ消費を気にするなら Delphi つかってらんないだろ

363 :デフォルトの名無しさん:2006/06/06(火) 23:23:35
メモリマネージャは1M単位でメモリを確保していると言うのに…。

364 :デフォルトの名無しさん:2006/06/06(火) 23:37:40
>>361
まずちゃんと動く物を作るのが先だろ

それが難しいからみんな頑張ってるのに・・・

365 :347:2006/06/06(火) 23:43:46
>>351
はぁー、列挙型使うんですか、つうか列挙型ってこんな風に使えるんですね。
inですか、in。なるほどー、勉強になります。
#9ってTab文字なんですね、今知りました。
どうでもいいですが","はファイル名に使えるようです。
さらにどうでもいいですが、XPの場合ですがファイル名を変更しようとして入力中に出るバルーンと
決定しようとした時に出るダイアログの表示文字列が違うのはなんなんでしょうねw
(バルーンには禁止文字がダイアログと比べて2文字足りない上にダイアログに表示される","はファイル名に使えるw)

>>354
KeyPressではじくのもやってたんですが、BackSpaceが入力出来なくなるのとコピペされるとだめなのでやめました。
っていうかコピペは出来るようにしておきたいので。


366 :デフォルトの名無しさん:2006/06/07(水) 07:18:11
>>365
Chr(VK_BACK)

367 :デフォルトの名無しさん:2006/06/07(水) 08:27:55
まぁVB使いなんでしょう

仕事にしろ趣味にしろ、普通のプログラマならメモリの使用量より可読性や保守性を重視すると思いますが。

VBの場合はメモリ最適化テクニックが色々と出回っていますが
Delphiではコンパイラが最適化を行うので、メモリの使用量を意識する必要はありません
(メモリ解放等は必須)

368 :デフォルトの名無しさん:2006/06/07(水) 08:40:57
>>366
コピペもしたかったのか、こんなんでどう?

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
const
Arrow_Keys = ['1'..'9','0','a'..'z','A'..'Z',Chr(VK_BACK)];
begin
// 対象キーが押されていれば最上位ビットがONになる(マイナス値)
if GetKeyState(VK_CONTROL) < 0 then begin
end else begin
if not (Key in Arrow_keys) then begin Key := #0; Exit end;
end;
end;


369 :デフォルトの名無しさん:2006/06/07(水) 09:00:03
いまどきのPCならそんなにメモリ使用量を気にしなくてもいいのでは?
Win3.1やWin95の頃だったら結構気にしたが・・・
それよりも、メモリリークを絶対に起こさないようにするのが大事。
以下は必ず実装するように。
ttp://sourceforge.net/projects/fastmm/

370 :デフォルトの名無しさん:2006/06/07(水) 10:05:44
D6の古い環境にD7を入れたらシリアルが不正って言われる。。。
Borlandに電話したら明るい声で「OSを再インストールしてください」。

これってどうしようもないのでしょうか。

Win2000 memory1024M
念のためにD6を削除してレジストリのHKCUのBorlandの項をすべて消したのですけど駄目でした。

371 :デフォルトの名無しさん:2006/06/07(水) 10:42:53
関係ないかも試練が
C:\Documents and Settings\ユーザー名\.borland
にあるファイル全部削除したらどうよ

どうなるかは知らないので試す前にバックアップとっといてくれ

372 :347:2006/06/07(水) 15:23:09
>>368
なるほどというか、目から鱗です。「はぁー!なるほどー!」っていう気持ちが伝わるでしょうか。
ソースだけがどんどんレベルアップして私はおいてけぼり状態ですw
ホントにいいスレです、レス下さった皆さんありがとう。

373 :デフォルトの名無しさん:2006/06/07(水) 16:07:20
>>369
     ∧_∧∩ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
    ( ´∀`)/< 先生!どう使うかわかりません!
 _ / /   /   \
\⊂ノ ̄ ̄ ̄ ̄\   ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ||\        \
 ||\|| ̄ ̄ ̄ ̄ ̄||
 ||  || ̄ ̄ ̄ ̄ ̄||
    .||          ||

374 :デフォルトの名無しさん:2006/06/07(水) 16:10:54
>>372
ただし、コピペ可能にすると検査なしで入力されてしまうから
きちんと弾きたいのならChangeで検査したほうがいい。
あと、Changeで検査するときはコピペのときにカーソル位置を考慮しないとダメだったような?

375 :デフォルトの名無しさん:2006/06/07(水) 16:13:23
>>373
これなら簡単てか、日本語で説明
ttp://www.yks.ne.jp/~hori/MemCheck.html
または
ttp://delwiki.info/?%A5%B3%A1%BC%A5%C9%C1%D2%B8%CB%2FHeapChecker

376 :デフォルトの名無しさん:2006/06/07(水) 17:10:49
こっちじゃないか。

>>369
http://homepage2.nifty.com/Mr_XRAY/Delphi/CompoInstall/UsageFastMM.htm

377 :デフォルトの名無しさん:2006/06/07(水) 17:42:58
>>363
k w s k
もしかして、最近のFastMMってそうなん?
メモリプールしてくれてんのかな?

378 :デフォルトの名無しさん:2006/06/07(水) 18:04:28
http://bdn.borland.com/article/0,1410,33416,00.html#27ImplementationDetails

379 :デフォルトの名無しさん:2006/06/07(水) 18:22:48
>>378
サンクス。
プールしてんのね。
どうりで、メモリ確保が早くなったわけだ

380 :347:2006/06/07(水) 19:06:58
>>374
どうもです。なんとかうまくいきそうな感じになりました。
どうやらKeyPressでChangeも発生するようなので全部Changeでやる事にしました。
GetKeyState関数やら列挙型の使い方とか知ることが出来て満足です。みなさんありがとう。


381 :デフォルトの名無しさん:2006/06/07(水) 20:19:39
初歩的な質問かもしれませんが、
ttp://www.uploda.org/uporg411046.jpg.html
のようなリストを作りたいのですが、どうやればできますか?

382 :デフォルトの名無しさん:2006/06/07(水) 20:27:25
コンポーネントパレットをじっと見つめるんだ

383 :デフォルトの名無しさん:2006/06/07(水) 20:33:50
何も浮かび上がってきません><

384 :デフォルトの名無しさん:2006/06/07(水) 20:37:54
ListViewじゃね?

385 :デフォルトの名無しさん:2006/06/07(水) 20:41:30
>>383
まじかよ
installフォルダにDemosってあるだろ
そのなかにVirtual Listviewってのががあるから見てみろりん

386 :381:2006/06/07(水) 20:47:45
>>385
Demoの中に見つかりました〜。ありがとうございます(_ _)

387 :デフォルトの名無しさん:2006/06/07(水) 22:45:37
>>375-376
ありがとぅ 見て実装してみる

388 :デフォルトの名無しさん:2006/06/07(水) 23:34:51
へなちょこです。
OpenJaneのソースが面白くて眺めてます。
特に階層メニューの作成が面白いです(procedure TMainWnd.CommandCreate;という所です)
が、このソースではサブメニューが1階層しか出来ないようです。
現在自分が使っているJaneViewではTABの付け方でいくらでも(?)サブメニューを階層化出来ています。
再帰処理にでもなっているのかと思っているのですが、そこはへなちょこ、全くアルゴリズムの想像がつきません。
そこでぜひともソースがどうなっているのか知りたいのです。
何処かで閲覧出来ませんでしょうか?

389 :デフォルトの名無しさん:2006/06/08(木) 00:12:22
板違い。ソフトウェア板に行け。

390 :215:2006/06/08(木) 01:12:16
気になるから納得いくまでやってみた。

// strpchk(比較文字群, 対象物, io)
{////////////////////////////////////////////////////////////////////
strpbrk もどき //例) strpchk('+-*/' , 'アンソニ-1' , 0)
 io = 0: 見つかった位置からの文字列を返す
 io = 1: 見つかった位置の場所を返す (string)
 io = 0,1以外 '0' を返す。
}////////////////////////////////////////////////////////////////////
function strpchk (s:string; target:string; io:integer):string;
var
 sLen, MaePos, TPos, TLen, i: integer;
 str : string;
begin
 str := '0';
 Result := '0';
 TLen := Length(target);
 sLen := Length(s);
 MaePos := TLen ;

 for i:=0 to sLen-1 do
 begin
  TPos := pos(s[i+1], target);
  if TPos <> 0 then begin
   if TPos < MaePos then begin
    if io = 0 then begin
     str := copy(target, TPos, TLen - (TPos-1) );
    end else
    if io = 1 then begin
     str := IntToStr(TPos) ;


391 :215:2006/06/08(木) 01:13:02
    end else begin
     str := '0' ;
     end;
    MaePos := TPos ;
   end;
  end;
 end;
 Result := str ;
end;


392 :デフォルトの名無しさん:2006/06/08(木) 03:08:42
もしかして LastDelimiter ?


393 :デフォルトの名無しさん:2006/06/08(木) 05:06:12
C言語の\n(改行)にあたる文字は何でしょうか

394 :デフォルトの名無しさん:2006/06/08(木) 05:53:06
>>393
LF=#$0A;
CR=#$0D;


395 :デフォルトの名無しさん:2006/06/08(木) 09:08:09
いつの間にか良スレ

396 :デフォルトの名無しさん:2006/06/08(木) 10:12:25
>>394
CRLF=#13#10

397 :デフォルトの名無しさん:2006/06/08(木) 10:59:51
Delphi2005で使えるIndy10の最新版ってどこにありますか?
公式サイトにはD4-7まではあるんだけど、それ以降で使えるものがありませんのでお手数ですが教えてください。

398 :デフォルトの名無しさん:2006/06/08(木) 11:16:47
配布しているソースコードにはD2005, 2006 も含まれている。
http://www.indyproject.org/Sockets/Download/Files/Indy10.en.aspx

末尾が100のパッケージが2005用。

399 :デフォルトの名無しさん:2006/06/08(木) 13:40:41
>>392
それって場所返す関数じゃなかった?

400 :デフォルトの名無しさん:2006/06/08(木) 13:56:48
関数1つで戻り値の型をstringとintegerの2つ準備させる方法は copy 関数みたいに2つ用意しないとダメですか?


401 :デフォルトの名無しさん:2006/06/08(木) 14:06:31
>>400
record使えばよろしかろ

initializeが必要になるんだっけ?

402 :デフォルトの名無しさん:2006/06/08(木) 14:06:33
ダメですね。

403 :デフォルトの名無しさん:2006/06/08(木) 14:07:26
memoコンポーネントを使ったのですが
文字をどんどん入力してった時に
縦にスクロールするのは良いのですが
横はスクロールをしない設定はできますか?

決めた枠の中で入力をできるようにしたいです
ScrollBarsをssVerticalにしてるだけじゃダメでした
チョー初心者な僕にやさしく教えてください

404 :デフォルトの名無しさん:2006/06/08(木) 14:08:59
WordWrap := True;

405 :デフォルトの名無しさん:2006/06/08(木) 14:23:46
できました!
お兄さんありがとう

406 :デフォルトの名無しさん:2006/06/08(木) 16:08:56
対象の文字が数値型かどうか調べるにはどうしたらいいですか

if 0 = integer then

じゃ無理でした

407 :デフォルトの名無しさん:2006/06/08(木) 16:15:20
> if 0 = integer then

この例の 0 は数値リテラルなので調べるまでもなく数値以外の型にはなり得ません。

408 :デフォルトの名無しさん:2006/06/08(木) 16:16:44
StrToIntで例外発生したらFalseを返す関数を作ればどうだろう
↓こんな感じ

function IsNumber(AStr: String):Boolean;
begin
Result := True;
try
StrToInt(pString);
except
Result := False;
end;
end;

VCL内に一発で判断出来る関数あれば他の人教えて

409 :デフォルトの名無しさん:2006/06/08(木) 16:17:30
えっと、簡単に書きすぎました。

0の部分は変数なんです。それを整数型かどうかチェックしたいのです。

>if s = integer then

410 :デフォルトの名無しさん:2006/06/08(木) 16:20:30
・・・言ってる事が変ですね。
変数なら整数以外入ってないし・・・

えっと、 数値(0〜9)かどうかのチェックでした。

411 :デフォルトの名無しさん:2006/06/08(木) 16:21:42
>>408に答えあるじゃん

412 :デフォルトの名無しさん:2006/06/08(木) 16:28:06
>>410
StrToInt(pString); の行を
if (StrToInt(AStr) < 0) or (StrToInt(AStr) > 9) then Result := False;


413 :デフォルトの名無しさん:2006/06/08(木) 16:32:28
>>408
>>412
同じ人かな?

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

414 :デフォルトの名無しさん:2006/06/08(木) 17:00:05
テキストエディタを作ってるんですが、JIS/S-JIS/EUCはどうやって見分けるんですか?

415 :デフォルトの名無しさん:2006/06/08(木) 17:28:55
function IsNumerical(c: widechar): boolean;
begin
case c of
'0','1','2','3','4','5','6','7','8','9': Result:=True;
else
Result:=False;
end;
end;

416 :デフォルトの名無しさん:2006/06/08(木) 18:29:27
>>414
Delphi関係ないような気が…。nkfのソースでも読んでみれば?

417 :デフォルトの名無しさん:2006/06/08(木) 18:56:03
>>392
それ、見つかった一番前の奴調べる奴ないん?

418 :デフォルトの名無しさん:2006/06/08(木) 19:37:11
ヘルプには載ってないがTryStrToIntぐらい常識だろ

419 :デフォルトの名無しさん:2006/06/08(木) 19:47:02
Delphi 2005よりVB 2005の方が優れていてしかも安いって本当ですか?

420 :デフォルトの名無しさん:2006/06/08(木) 20:56:06
>>418
どこらへんの地域の常識か構文で提示願いたい

421 :デフォルトの名無しさん:2006/06/08(木) 20:59:19
ヘルプには載ってないのが常識なわけないだろ・・・ってDelのヘルプが糞なのは常識だが

422 :デフォルトの名無しさん:2006/06/08(木) 21:02:02
>>421
同意

・・・ヘルプよりヘルプらしいサイトないだろか

423 :デフォルトの名無しさん:2006/06/08(木) 21:47:35
VCLはヘルプ見るよりソース読むのがよっぽどよく分かる

424 :デフォルトの名無しさん:2006/06/09(金) 00:31:01
Delphi6を使っています。
MenuにはFontやParentFontプロパティが無いのですが、そのあたりを変えたい場合どうすればいいんでしょう?

425 :デフォルトの名無しさん:2006/06/09(金) 00:39:51
メニューのフォントはシステム設定で固定なので設定不可
どうしてもシステムの設定に依存させたくなければ、オーナードロー(自分で描く)しか方法がない。

TToolBarのMenuプロパティにMainMenuを割り当てれば
最上位のメニュー項目だけは任意のフォントを使うことも出来るが。


426 :デフォルトの名無しさん:2006/06/09(金) 01:11:01
>>414
それは意外と難しい
変換するコードはあちこちに転がってるがどのコードかを判別するのは案外ない
俺は結局某雑誌の記事を元に自分で実装した

427 :424:2006/06/09(金) 01:14:28
>>425
そうですか・・・、とりあえず諦めます。
もうちょっと色々身に付けてからチャレンジしようと思います。

428 :デフォルトの名無しさん:2006/06/09(金) 01:14:28
xyzzyみたいな自動判別しててソース公開されているのを参考にしたらどうか

429 :デフォルトの名無しさん:2006/06/09(金) 01:29:44
>>426
横からで申し訳ありませんが、その雑誌名(判れば刊行年月も)
教えてもらう訳にはいかないでしょうか

430 :414:2006/06/09(金) 08:34:58
>>426
自分もお願いします。
Delマガとかですか?

431 :デフォルトの名無しさん:2006/06/09(金) 09:10:40
サイトのアクセス解析するソフトを作りたいんですが、GoogleやYahooとかの検索ワードってURLエンコードされてますよね?
あれのデコード・エンコードをしたいんですが、どのようにやればよいのでしょうか?

432 :デフォルトの名無しさん:2006/06/09(金) 09:19:30
>>429-430
翔泳社のWindowsデベロッパーマガジン2006年1月号の記事
「文字コードなんて怖くない!」ってやつ。
JIS(iso-2022-jp)/SJIS/EUC/Unicode/UTF-8の判別方法が載ってた
サンプルコードで載ってたのはVBだったけどそんなに難しくなさそう
だったんでdelphiに翻訳した

433 :431:2006/06/09(金) 09:19:32
ごめんなさい。ありました。
ttp://wiki.landhere.info/index.php?cmd=read&page=Delphi%2FURL%E3%82%A8%E3%83%B3%E3%82%B3%E3%83%BC%E3%83%89

434 :デフォルトの名無しさん:2006/06/09(金) 10:33:52
タスクバーのヒントはどうすれば表示されるように出来ますか?

435 :デフォルトの名無しさん:2006/06/09(金) 10:40:08
Application.Hintにヒント文字列を設定

436 :デフォルトの名無しさん:2006/06/09(金) 10:48:27
>>435
やはりApplication.Hintでいいんだ
でもApplication.ShowHint := True;もやったけど表示しなかった・・・

437 :デフォルトの名無しさん:2006/06/09(金) 10:55:44
すまん、タスクバーとタスクトレイを混同してた
タスクバーのヒントはApplication.Titleに文字列を設定すればいい

438 :デフォルトの名無しさん:2006/06/09(金) 12:21:42
>>437
Application.Title も設定してるけど・・・

439 :デフォルトの名無しさん:2006/06/09(金) 15:13:56
タスクバーのタスクスイッチボタンの上にマウスを置いたときに表示する
ヒントは、タスクバーが表示してるんです。表示されるのは、ボタンに
Application.Title 相当が収まりきれない場合だけです。

procedure TForm1.FormCreate(Sender: TObject);
begin
Application.Title := 'Short';
end;

これでは、ヒントは表示されませんが

procedure TForm1.FormCreate(Sender: TObject);
begin
Application.Title := 'Loooooooooooooooooong';
end;

これだと表示されます。

440 :デフォルトの名無しさん:2006/06/09(金) 15:28:54
>>439
>Application.Title 相当が収まりきれない場合だけです。
知らなかった・・・ありがとう (収まってるからだったのか)


441 :デフォルトの名無しさん:2006/06/09(金) 15:41:59
mp3のタグを扱いたいんだけどいいコンポーネントある?
タグを読むのはあっても、タグを書き込めるコンポーネントがみつからない。

442 :デフォルトの名無しさん:2006/06/09(金) 16:39:11
あるPopupMenuのサブメニュー(menuList(TMenuItem))に個数不定の項目を、メニューを表示する度にOnPopupで作りなおしています。
作りなおす前に'MenuList.Clear'としているのですが、こんなんでいいんでしょうか?
作成したサブメニュー項目1つ1つに対してFreeしなければいけないんでしょうか?

443 :デフォルトの名無しさん:2006/06/09(金) 17:04:11
>>442
Clearで開放されます。

444 :442:2006/06/09(金) 17:15:38
>>443
そうでしたか、レスありがとうございます。

445 :デフォルトの名無しさん:2006/06/09(金) 17:53:13
DelphiでCのfmodに相当する関数はありますか?
実数型の剰余を求めるものです。

446 :デフォルトの名無しさん:2006/06/09(金) 17:58:48
ない、と思う。5分で作れる、とも思う。

447 :デフォルトの名無しさん:2006/06/09(金) 18:04:55
function FMod(const X, Y: Extended): Extended;
begin
 if IsNan(X) or IsNan(Y) or IsInfinite(X) or (Y = 0) then
  Result := NaN
 else if IsInfinite(Y) or (X = 0) then
  Result := X
 else
  Result := Sign(X) * (Abs(X) - Abs(Int(X / Y) * Y));
end;

これであってる?

448 :デフォルトの名無しさん:2006/06/09(金) 18:09:56
うーむ、Abs() は必要ですか?

449 :447:2006/06/09(金) 18:56:42
>>448
あら、必要ないですね・・
無駄に考えすぎでした。

450 :デフォルトの名無しさん:2006/06/09(金) 19:09:53
先生質問です。
つい最近Delphi始めたもので、質問するのも恥ずかしいのですが・・・

base := StrtoInt(base2);

base2の文字列を整数値に変換しようとこう入力すると、
「StrtoIntは未定義の識別子」と出てしまいます。
何故でしょうか?

451 :デフォルトの名無しさん:2006/06/09(金) 19:16:52
>>450
uses に SysUtils があるかな?

452 :デフォルトの名無しさん:2006/06/09(金) 19:21:08
>451
書き忘れてました。ありがとうございます!

453 :デフォルトの名無しさん:2006/06/09(金) 21:16:05
>>441
DLLならいくらでもあるっす。コンポだけが全てじゃないが。

454 :デフォルトの名無しさん:2006/06/09(金) 21:18:51
質問です。
Delphi2005のIDEで簡単なプログラムを組んでみたのですが、
実行してみると「プロセスが生成できません」とエラーウィンドウが出て、実行出来ません。

とんでもなくしょーもないミスをしてそうなのですが、Delphiは始めたばかりで分かりません・・・。

教えてえろい人

455 :デフォルトの名無しさん:2006/06/09(金) 21:26:40
非公式パッチを当ててVCL.NETを起動してないか?
VCL.NETには対応していないから注意。

456 :デフォルトの名無しさん:2006/06/09(金) 21:51:52
いまどきD2005を使ってるのが驚き。

457 :441:2006/06/09(金) 22:44:40
>>453
ありがd
もっと探してみます。

458 :デフォルトの名無しさん:2006/06/10(土) 00:37:25
>>426,>>432
丁寧にお教えいただき本当にありがとうございました。

459 :デフォルトの名無しさん:2006/06/10(土) 00:42:43
>>454
そのプログラムをエクスプローラーから実行していない?
すでに実行済みのプログラムは終了させないと作れないよ。


460 :デフォルトの名無しさん:2006/06/10(土) 00:48:28
>>454
インストールしたばかりで使用許諾を受けてない…
なんて事はない?

461 :デフォルトの名無しさん:2006/06/10(土) 09:44:16
2005は使用許諾を受けないと動かないんだ?


ふーん。

使用許諾のためのサイトが運営されなくなるとIDEはまったく使い物にならなくなるってことでつか?

462 :デフォルトの名無しさん:2006/06/10(土) 12:23:00
ヴビ厨が解雇されるまでの時間よりは長いのではないかと。

463 :デフォルトの名無しさん:2006/06/10(土) 12:32:58
かちゅ〜しゃの左側のカテゴリー表示って、どのコンポーネント使ってるの?

464 :デフォルトの名無しさん:2006/06/10(土) 19:07:31
>>454
実際に使用許諾を受けていなくても
webやメールで取得のチェックボックスをを選んでいればコンパイル出来るが
何も選んでいないとコンパイル前にはじかれるんだよ

465 :デフォルトの名無しさん:2006/06/10(土) 20:37:14
10個くらいの画像を重ねて印刷するために、
1.TBitmap の Transparent を True にして
2.TMetafile の Canvas に Draw してから
3.Printerの Canvas に Draw
してます。うちのインクジェットプリンタではちゃんと印刷されるのですが、
知り合いのカラーレーザープリンタでは印刷されません。
このような現象について、何かヒントでも何でもありましたら
お願いします(Delphi7で、Windowsは両方ともXPです)

466 :デフォルトの名無しさん:2006/06/10(土) 21:12:39
ビットマップがプリンタに印刷できない

http://www.asahi-net.or.jp/~HA3T-NKMR/tips004.htm

ほとんど常識。

467 :465:2006/06/10(土) 21:44:45
これってStretchDrawだけじゃ無くてただのDrawでも該当するのでしょうか?
何はともあれ、ちょっとここに書いてある手続きを取り入れて試してみます。
ありがとうございました。

468 :デフォルトの名無しさん:2006/06/10(土) 23:27:11
>465
商用ソフトならば、サードパーティのレポートフォームを使えば
面倒なこと考えずに済むかもしれない。

469 :454:2006/06/11(日) 13:22:13
実行>実行が出来ないだけで、デバッグ無しで実行、コンパイルなどは正常に出来ました。
何故でしょうか。

470 :デフォルトの名無しさん:2006/06/11(日) 13:30:12
>>469
取り合えず再インスコぐらいしたんだろうな?

471 :デフォルトの名無しさん:2006/06/11(日) 13:54:38
BDS2006 にバージョンアップするか、D7 以下の旧バージョン使うのを推奨する。
D2005 はまじめに使うものじゃない。

472 :454:2006/06/11(日) 14:06:50
>470
2回やり直した

>471
ググってみました。
この程度の問題なら、自分が使うにあたって問題無いと思います。
不快に感じる事があれば、その言葉を思い出して変えてみます。

473 :デフォルトの名無しさん:2006/06/11(日) 18:05:01
[致命的エラー]
Project1.dpr(15): 'Unit1.pas' ユニットはコンパイルできませんでした

実行したらこんなん出てきたんですが・・・まずいですか?

474 :デフォルトの名無しさん:2006/06/11(日) 18:13:29
うん、どう見てもまずいじゃん

475 :デフォルトの名無しさん:2006/06/11(日) 18:16:37
何がまずいんですか?

根本的に作り直さなきゃいけないんですか?
それとも
インストールしなおすとかですか? 

どうかご教授おねがいします。


476 :デフォルトの名無しさん:2006/06/11(日) 18:23:43
お前が出してる情報が少なすぎて分からんが、
少なくともUnit1に問題があるのは確かだ
とりあえずUnit1を洗いなおすんだ

477 :デフォルトの名無しさん:2006/06/11(日) 18:32:43
わかりました、やってみます。

478 :465:2006/06/11(日) 18:34:35
色々調べてたら分かったんですが、あのサイトの中村さんって本まで出してる
凄腕の方だったんですね。図書館で借りてきてしまいました。
で、ビットマップの印刷って実はとっても難しいものだったんですね。
とりあえず、対策版を先方に送って結果待ちです。また、>>468さんありがとう
ございます。検討したいと思います。

479 :デフォルトの名無しさん:2006/06/11(日) 18:34:36
ジャブジャブと勢いよくな!

480 :477:2006/06/11(日) 18:47:37
もしかして、FormでやることってFrameじゃできないんですか?

481 :デフォルトの名無しさん:2006/06/11(日) 19:22:43
エラー全部貼ればすむものを

482 :デフォルトの名無しさん:2006/06/11(日) 19:32:16
使用承諾未承認みたいのが立ち上げるときに出るのに
普通に使えるんですがいいんですか?
ちなみにDelphi6の体験版です。

483 :デフォルトの名無しさん:2006/06/11(日) 19:32:25
Q&A掲示板にマルチポスト止め。

484 :デフォルトの名無しさん:2006/06/11(日) 19:33:40
>>482
体験版?Personal ならいいんじゃね。

>>483
>>473のことね

485 :477:2006/06/11(日) 19:40:11
マルチポスト止めってなんですか?

半年ググレは勘弁してください。

486 :デフォルトの名無しさん:2006/06/11(日) 19:45:13
プログラムを保存しようとするとusesに「StdCtrls」って
でてくるんですけどなぜですか?

コンパイルしてもエラーはでないんですが実行してもどなにもおこりません

487 :251:2006/06/11(日) 20:23:48
キャプションを持たない特定ウインドウを判定するのはGetWindowRectを使って何とか出来ました。
助言くださった方有難うございます。

で、次の問題なのですがポップアップウインドウがなぜか選択できないのです。

postMessage(hcWindow, WM_LBUTTONDOWN,0,MakeLParam(100,15));
postMessage(hcWindow, WM_LBUTTONUP,0,MakeLParam(100,15));
//ここでポップアップメニューが開く
hChild1 := FindWindowEx(hcWindow, 0,'#32768',nil);
//ここでポップアップメニューのハンドルを取得したい
if hChild1 > 0 then
begin
postMessage(hChild1, WM_LBUTTONDOWN,0,MakeLParam(100,15));
postMessage(hChild1, WM_LBUTTONUP,0,MakeLParam(100,15));
end;

このように記述してもhChild1には0が入ってしまいます。
よろしくお願いします。

488 :デフォルトの名無しさん:2006/06/11(日) 21:06:34
>>486
>StdCtrls
そのユニットが StdCtrls を使ってるから。

>実行してもどなにもおこりません
日本語でおk or おまいのコードが間違ってるから。

489 :デフォルトの名無しさん:2006/06/11(日) 21:32:18
>>487
ポップアップメニューは子ウィンドウじゃないから。
Exじゃない方のFindWindowで取れたと思うよ。

490 :251:2006/06/11(日) 22:01:18
>489
有難うございます
早速下のようにやってみたのですがやはりhChild1には0が・・・
どこかおかしいんでしょうか?

hChild1 := FindWindow('#32768',nil);


491 :デフォルトの名無しさん:2006/06/11(日) 22:16:19
>>488
一回実行できたのに、保存してDelphi消して、また立ち上げて
実行すると何にも起きないんです。なぜですかね?

ちなみにProjectのprogramはこんな感じなんですが問題ありますか?

program Project1;

uses
Forms;

{$R *.res}

begin
Application.Initialize;
Application.Run;
end.


492 :491:2006/06/11(日) 22:28:16
unit1のprogramは↓なんですが何かおかしいですか?
これだけじゃわからないのかもしれませんが(汗)

unit Unit1;

interface

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

type
TForm1 = class(TForm)
Label1: TLabel;
RadioGroup1: TRadioGroup;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private 宣言 }
public
{ Public 宣言 }
 end;


493 :491:2006/06/11(日) 22:29:24
続きです。
var
Form1: TForm1;

implementation

uses Unit2;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
Form1.Visible:=False;
Form2.Visible:=True;
end;
end.

494 :デフォルトの名無しさん:2006/06/11(日) 22:45:04
>>491

begin
Application.Initialize;
Application.CreateForm(TForm1, Form1); ←ココ重要
Application.Run;
end.


495 :デフォルトの名無しさん:2006/06/11(日) 22:53:29
>>494
同時に
 uses
   Forms, Unit1;
にしとかないとコンパイルとおらないぞ

496 :デフォルトの名無しさん:2006/06/11(日) 23:00:44
>>491
program Project1;

uses
Forms,
Unit1 in 'Unit1.pas' {Form1};

{$R *.res}

begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.

意味分かるよな?

497 :デフォルトの名無しさん:2006/06/11(日) 23:16:57
つか、デフォルトでいじらなきゃ、まんまなわけだが。なにやってるんだ・・・

498 :491:2006/06/11(日) 23:17:41
えっと意味はわかりませんがそれに書き直せばいいんですね?

ありがとうございます。やってみます。

499 :491:2006/06/11(日) 23:27:04
>>497
それがなぜだか勝手にかわってしまうですよ。
Projectを保存しますか?とか出るのを「はい」にしたらいけないのでしょうか?


500 :デフォルトの名無しさん:2006/06/11(日) 23:31:15
新規作成で最初からやり直した方が早くね?

501 :491:2006/06/11(日) 23:44:31
>>500
また全部(ボタンとかラベルとか)を作るのがめんどかったので・・・

っていうかできました。後はUnit2,3,4,5....をProjectに打ち込めば
いいんですよね?ホントありがとうございました。


502 :デフォルトの名無しさん:2006/06/12(月) 00:12:58
delphiのお試し版しか持っていないので、製品版を購入しようと思います。
ビックカメラとか、そういうところに売っていますか?
(電気屋さんにはあまり行かないので、分かりません。)
アマゾンでは絶版/売り切れという扱いになっていました・・・。

503 :デフォルトの名無しさん:2006/06/12(月) 00:15:28
http://www.borland.com/jp/company/where_to_buy.html

504 :502:2006/06/12(月) 00:38:26
>>503 どうもありがとうございます。
delphiってあんなに種類があるんですね。
プロフェッショナルって、値段も結構するんですね(--;)

505 :デフォルトの名無しさん:2006/06/12(月) 00:47:41
>>504
ソース的にはあやふやなのだが
しばらくするとTurbo 版という物が出るらしい。
廉価版なのではという噂もある。

と言うわけで急いでなければ、秋まで待ってみるという手もある。
外れたら御免なさい。

506 :502:2006/06/12(月) 00:57:44
>>505 情報どうもありがとうございます。
デルファイってあんまり初心者本が出てないから、ヘルプの機能を使いながら
勉強したかった(今のお試し版ではヘルプが見れません)ので、
急ぐ理由はないけれど、製品版が早く手に入れば嬉しいという感じです。

買おうかどうか迷っているうちに秋になったりして・・・(^0^;)

507 :デフォルトの名無しさん:2006/06/12(月) 01:10:10
Delphi6Personalを使ってソフトを作っているんですが
色んなケースに対応したりスレッドを使ったり、
GUIのコントロールの数が増えていくうちに、
イベントハンドラを含めた関数が膨大になってしまって
クラスビューや関数ジャンプもないので
大きくなればなるほど保守に困っています。

数万行〜のソースをDelphiで管理するときどうされてますか?

508 :デフォルトの名無しさん:2006/06/12(月) 01:16:33
>>507
1人で数十万〜数百万のソース書いて保守してるけど
GExpertsを使ったり上手くクラスを使ったりしてやってるよ。
保守を楽にする為には設計で苦労する。
設計を楽にする為には保守で苦労する。
どちらかに偏ると思うけどがんばるしかないねぇ〜。

509 :デフォルトの名無しさん:2006/06/12(月) 02:45:13
>>508
数百万のソースを書いてるって、1人でできるもんなのかよ。


510 :デフォルトの名無しさん:2006/06/12(月) 05:53:19
>>507
Pro版ならCtrl+上下でinterface/implementationを行き来できるので
interface節の宣言がそのままクラスビューや関数ジャンプのかわりになってたりして。
まあ構造ツリーだかクラスエクスプローラだかもあるし。

511 :デフォルトの名無しさん:2006/06/12(月) 06:43:46
ちょっと待て
数十万から数百万て範囲アバウト過ぎね?

512 :デフォルトの名無しさん:2006/06/12(月) 07:46:27
>>507
UNITという単位を旨く使って、出来るだけ独立性が高くて再利用可能にしてゆくしかないよ

513 :デフォルトの名無しさん:2006/06/12(月) 09:23:02
>>509
数百万「行」じゃないの?

514 :デフォルトの名無しさん:2006/06/12(月) 10:50:11
行でもすげぇな
でも数年弄ってればそれぐらいになるな
俺のも

515 :デフォルトの名無しさん:2006/06/12(月) 11:00:41
いま担当してるソフトのソース行数約5万行だった

516 :デフォルトの名無しさん:2006/06/12(月) 12:14:54
コメントは4万行くらい?

517 :デフォルトの名無しさん:2006/06/12(月) 12:49:21
>>506
商用で、使わないんなら
Delphi6のPersonalが無料ですよ

518 :デフォルトの名無しさん:2006/06/12(月) 12:53:02
>>516
ステップ数で4万ぐらいだった

519 :デフォルトの名無しさん:2006/06/12(月) 13:02:45
>>517
ソースないけど。

520 :デフォルトの名無しさん:2006/06/12(月) 20:07:52
質問です。URLエンコードしたものがYahooで使えないんですけど、どーしたらいいですか?
Googleでは使えました。

521 :デフォルトの名無しさん:2006/06/12(月) 20:47:14
エスパーの出番ですよ

522 :伊藤:2006/06/12(月) 20:49:28
GOOGLEでやれ

523 :デフォルトの名無しさん:2006/06/12(月) 20:54:07

Str := HTTPEncode('ほげほげ');

でエンコードしたものを

http://www.google.co.jp/search?hl=ja&q=%82%D9%82%B0%82%D9%82%B0

では「ほげほげ」で開けるにに

http://search.yahoo.co.jp/search?ei=UTF-8&fr=sfp&p=%82%D9%82%B0%82%D9%82%B0&meta=vc%3D

で開くと「?・??・?」といったキーワードになってしまいます。
Yahooでも開けるようにするにはどうすればいいですか?


524 :デフォルトの名無しさん:2006/06/12(月) 20:56:30
YAHOOのアドレス間違ってる

525 :デフォルトの名無しさん:2006/06/12(月) 21:27:16
>UTF-8

526 :デフォルトの名無しさん:2006/06/12(月) 23:12:22
ステップ数って行数の事じゃないの?

527 :デフォルトの名無しさん:2006/06/12(月) 23:36:39
1つのステップを複数行に分けて書くことも出来る。
複数のステップを1行に纏めて書くことも出来る。

528 :251:2006/06/12(月) 23:45:13
postMessage(hcWindow, WM_LBUTTONDOWN,0,MakeLParam(100,15));
postMessage(hcWindow, WM_LBUTTONUP,0,MakeLParam(100,15));
sleep(500);
hChild1 := FindWindow('#32768',nil);
if hChild1 > 0 then
begin
postMessage(hChild1, WM_LBUTTONDOWN,0,MakeLParam(10,15));
postMessage(hChild1, WM_LBUTTONUP,0,MakeLParam(10,15));
end;

487の件ですが判りました
sleepを取っていなかったのでプップアップメニューウインドウを捕まえきれていませんでした。
しかし、その後ポップアップメニューを選択しようとウインドウに対してメッセージを送信したのですが
ポップアップメッセージが閉じてしまうのです。
これはどういうことでしょう?

529 :デフォルトの名無しさん:2006/06/12(月) 23:57:43
ポップアップて右栗で出てくるヤツか?
あれは確かOSが管理するモーダルループに入るから
ハンドルなんて絶対に取れない気がする

530 :251:2006/06/13(火) 00:05:46
>529
クラス#32768の普通のPopupMenuで489さんのおかげでハンドルは取れるようになりました。
ただ選択しようとクリックをメッセージで送信すると閉じてしまうんです・・・

531 :デフォルトの名無しさん:2006/06/13(火) 00:16:05
そりゃクリックしたら閉じるだろう

532 :デフォルトの名無しさん:2006/06/13(火) 00:39:33
とある2つあるのボタンのイベントが、
一つのイベントハンドラを共有しているか論理評価したいのですが、

boolval := (Button1.OnClick = Button2.OnClick);

とかやってもコンパイルエラーで蹴られます。なぜですか?
普通の関数ポインタとかでは出来るんですが…

533 :デフォルトの名無しさん:2006/06/13(火) 01:13:36
>>532
こうするらしい。
BoolVal := (@Button1.OnClick = @Button2.OnClick);

534 :デフォルトの名無しさん:2006/06/13(火) 01:21:08
Button1.OnClick はメソッドだから、そのような文では参照できない。

Label1.Caption := IntToStr(SizeOf(TNotifyEvent));

では、8と表示されて、メソッドはオブジェクト参照を持つので普通の関数ポインタではなく、
6ビットの長さ。

procedure TForm1.Button2Click(Sender: TObject);
begin
if Int64(@Button1.OnClick) = Int64(@Button2.OnClick) then
ShowMessage('true')
else
ShowMessage('false');
end;

これではどうでしょう?

535 :デフォルトの名無しさん:2006/06/13(火) 01:22:17
× 6ビットの長さ。
○ 64ビットの長さ。

536 :デフォルトの名無しさん:2006/06/13(火) 01:39:12
ܷܵܶ

537 :デフォルトの名無しさん:2006/06/13(火) 02:45:50
あっ、>>534>>532 あて。

>>533 とバッティングした。気を悪くしたなら、ごめん >>533

538 :デフォルトの名無しさん:2006/06/13(火) 16:14:55
TMediaPlayerにリソースからMIDIを読み込ませたいと思ったんですが、LoadFromResourceみたいなメソッドがありません。

で、いろいろ調べてるうちにMIDIをアプリケーションから一度ファイルに落として、それをMediaPlayerに読み込ませるって手法(.FileName:='hoge.mid'みたいに)を見つけたんですが、
Stream経由や、直でリソースを読ませる方法って無いんですか?

539 :デフォルトの名無しさん:2006/06/13(火) 16:18:41
ボタンを押したら3分後にbeepで警告音を鳴らし
毎日5時になったらbeepで音を鳴らすというプログラム作ってるのですが

TTimerコンポーネントを二つ配置し
ボタンを押したらTimer1コンポーネントをEnalbe:=Trueにして
Timer1をインターバル180000にしてBeepにするといった感じでいいのでしょうか・・・

5時になったらbeepで音を鳴らすのは
Timer2のインターバルを1000にして
1秒ごとに今の時間をチェック→5時だったら音を鳴らす
そうじゃなかったら何もしない

といったのがいいのかな?
もっと効率の良いやり方あります?

540 :デフォルトの名無しさん:2006/06/13(火) 16:20:40
つ ベクターでダウソ

541 :デフォルトの名無しさん:2006/06/13(火) 17:06:39
>>538
つ AVIStream

542 :デフォルトの名無しさん:2006/06/13(火) 17:52:52
>>541さんへ

AVIStream Delphiなどでググってみたんですが、3件とかしか出ません。
あまり熟成されてないようです。

APIを使うようですが、APIをバリバリ使えるテクニックが未だないもので…
ちょっとあきらめようかと思います。
ヒント、ありがとうございます。

543 :デフォルトの名無しさん:2006/06/13(火) 17:55:50
AVIStream Delphi の検索結果 約 293 件
AVIStream の検索結果 約 1,730 件

( ゚Д゚)?

544 :デフォルトの名無しさん:2006/06/13(火) 17:55:53
DirectShow を使うという手も。
http://www.progdigy.com/modules.php?name=DSPack

545 :デフォルトの名無しさん:2006/06/13(火) 18:03:30
midi だったらsndPlaySound でいけるかも。
mmsystem をuses する。

546 :デフォルトの名無しさん:2006/06/13(火) 18:10:38
>>543さんへ
あ、日本語のサイトだけっす。英語サイトは工房にはキツイ・・

>>544さんへ
DirectXはDDDDとかのコンポ使えるだけっす orz

>>545さんへ
sndPlaySoundやってみたんですけど、リソースからの読み込みがうまくできなくて。
Waveの方はリソースから読めたんですけど、MIDIはリソースコンパイラが対応してないんですかね?

547 :デフォルトの名無しさん:2006/06/13(火) 18:20:53
使った事無いから駄目って意見よく聞くけど、わからないから質問してきてる以上、
回答は全て知らない方法じゃね?

548 :デフォルトの名無しさん:2006/06/13(火) 18:23:42
工房のくせにDelphiなんてやってんじゃねーよ。
Delphiが許されるのは30過ぎのオサーンまでだぞ。

549 :デフォルトの名無しさん:2006/06/13(火) 18:36:57
>>546
> リソースからの読み込みがうまくできなくて。
TResourceStream

550 :デフォルトの名無しさん:2006/06/13(火) 18:48:13
まで

551 :デフォルトの名無しさん:2006/06/13(火) 20:37:04
>Delphiが許されるのは30過ぎのオサーンまでだぞ。

だって、タダだもん。
30過ぎのオサンまでってことは、30過ぎたら使うの恥ずかしいってことですか?見当外れのこと言ってたらごめんなさい。

>>549
どうやらリソースからMIDIは無理なようです。
ttp://hpcgi1.nifty.com/MADIA/DelphiBBS/wwwlng.cgi?print+200502/05020033.txt

ありがとうございました。
ありがとうございました。

552 :デフォルトの名無しさん:2006/06/13(火) 21:05:44
あらら、いい加減な事教えてゴメン。

553 :デフォルトの名無しさん:2006/06/13(火) 22:15:15
>>548 がいいたいのは、30歳以上のおさーんだけってことじゃないか。

俺はあと2日で30なんだが、この場合もアウトか。

554 :デフォルトの名無しさん:2006/06/13(火) 22:37:24
>>553
おめ。

555 :デフォルトの名無しさん:2006/06/13(火) 23:07:49
>>553
オサーンオメ

556 :デフォルトの名無しさん:2006/06/13(火) 23:18:44
>>553
おめ

557 :デフォルトの名無しさん:2006/06/14(水) 03:46:57
midiStreamOpenとかは駄目なの?


558 :デフォルトの名無しさん:2006/06/14(水) 04:02:03
しすもんです。

CoolBarにToolBarをのっけて、Menuプロパティでメニューを設定して、
移動可能なメニューを作ったのですが、XPManifistを乗っけると、
挙動が変です。
なんというか、ボタン?みたいに盛り上がるんです。
盛り上がらずに、Flatにする方法はないでしょうか

559 :デフォルトの名無しさん:2006/06/14(水) 05:29:04
Delphiは30過ぎのオサーンしか使ってないアダルトソフト
若者はみんなVB.NET

560 :528:2006/06/14(水) 06:50:07
うーん WIN32 APIの板で聞いた方がいいのかな
じゃね

561 :デフォルトの名無しさん:2006/06/14(水) 07:46:29
>558
Buttonも配置してみてちゃんとスタイルが適用されているか確認してみれ。

562 :デフォルトの名無しさん:2006/06/14(水) 10:34:06
その不具合、けっこう有名だ。>CoolBarにToolBarをのっけて

563 :デフォルトの名無しさん:2006/06/14(水) 15:19:31
フォームを一番右上に配置するときは
Form1.Top:=0;
Form1.Left:=0;
でできますが
フォームをちょうど右下になるようにするにはどうしたらよいでしょう・・・

564 :デフォルトの名無しさん:2006/06/14(水) 15:24:52
それだと左上になるだろ?

ちなみに右下は
DskhWnd := GetDesktopWindow;
nhDc := GetDC(DskhWnd);
nWidth := GetDeviceCaps(nhDc, HORZRES);
nHeight := GetDeviceCaps(nhDc, VERTRES);
で解像度とってフォームのwidthとheight引いてtopとleft出せ

565 :デフォルトの名無しさん:2006/06/14(水) 15:27:37
Self.Left := Screen.Width - Self.Width;
Self.Top := Screen.Height - Self.Height;

566 :デフォルトの名無しさん:2006/06/14(水) 15:31:38
できました
わざわざありがとうございました(´・ω・`)

567 :デフォルトの名無しさん:2006/06/14(水) 16:17:36
漫才かよ、こいつら

568 :558:2006/06/14(水) 16:45:35
http://tinymouse.cocolog-nifty.com/log/2006/02/xpmenu_7dfd.html
↑ここ見てると、メニューもFlatにできるようなのですが、なんとかできないのかな?

569 :558:2006/06/14(水) 16:53:52
コンポーネントのXPMenu使ってるんですね。試してみます。

570 :558:2006/06/14(水) 17:37:42
XPMenu本家でもできているようですが、いったいどうやったら
http://www.shagrouni.com/images/xpm2.gif

571 :デフォルトの名無しさん:2006/06/14(水) 18:41:44
>>558
Delphi2006用ソースをDelphi6でコンパイルしたときに同じような感じになった

572 :558:2006/06/14(水) 18:57:28
XPMenuの作者にメールだしても、エラーで帰ってくる。鬱だ・・・

573 :デフォルトの名無しさん:2006/06/14(水) 19:27:14
アクションを実行したいのですが、
Action1.Execute; と
Action1Execute(nil); と
どう違うのでしょうか。両方ともアクションが実行後に戻ってくるのでしょうか。

574 :デフォルトの名無しさん:2006/06/14(水) 19:44:06
>>573
VCLのソース見たら、OnExecuteイベント呼んでるだけだった。
つまり、Action1.Executeと、Action1.Execute(Action1)は一緒

575 :デフォルトの名無しさん:2006/06/14(水) 22:06:51
>>574 ありがとうござんす。ソースを見てみましたが、良く分かりませんでした。
で、何となくですが、Action1Execute(Action1);
としました。

576 :デフォルトの名無しさん:2006/06/14(水) 22:11:52
いや、Action1.Execute を呼ぶべきじゃないのか。

577 :デフォルトの名無しさん:2006/06/14(水) 22:42:55
SenderにNIL代入してイベントハンドラ呼ぶのは止めておけ。思わぬ例外に泣くぞ。

578 :デフォルトの名無しさん:2006/06/14(水) 22:49:51
それは一個人の流儀だろ

579 :デフォルトの名無しさん:2006/06/14(水) 23:08:03
>>558
ttp://tinymouse.cocolog-nifty.com/log/
の2006/2/15に対応策が書いてある。

580 :デフォルトの名無しさん:2006/06/15(木) 06:01:23
>>558
TToolBar.FlatをTrueじゃだめなのか?

581 :デフォルトの名無しさん:2006/06/15(木) 10:22:16
if文に論理(かつ、または、ノット等)を入れるときはどうしたらいいの?
たとえば
if 1+1=2 then Label1.caption:='正しい';

これはちゃんと通るんだけど

if 1+1=2 and 2+2=4 then Label1.caption:='正しい';

は互換性の無いとか言われてコンパイルエラーでます・・・

582 :デフォルトの名無しさん:2006/06/15(木) 10:23:29
if (1+1=2) and (2+2=4) then

583 :デフォルトの名無しさん:2006/06/15(木) 10:32:20
if (1+1=2) and (2+2=4) then

論理演算子andの方が=より優先順位高いので
カッコを付けないとコンパイラは if (1 + 1 = (2 and 2))と解釈してしまう


584 :デフォルトの名無しさん:2006/06/15(木) 11:20:10
>>583
括弧は省かない方がいいぞ
優先順位が決まってるからいらないって意見もあるけど・・・
明示的に付けておいたほうが後々のトラブルはない。

585 :デフォルトの名無しさん:2006/06/15(木) 11:35:15
良いも悪いもつけないとビルドが通らん

586 :デフォルトの名無しさん:2006/06/15(木) 14:01:26
ほんと、国語力ないのが多いな・・・

587 :デフォルトの名無しさん:2006/06/15(木) 15:44:46
しろーとな質問ですみません

memoで、文章内容が変更されたどーかを知りたいんですが
onChangeだと、マウス操作だけでフラグが立っちゃいます

内容変更があった時に、保存ボタンを使えるようにしたいです

588 :デフォルトの名無しさん:2006/06/15(木) 15:45:42
modified

589 :デフォルトの名無しさん:2006/06/15(木) 15:51:40
ܷܵܶ

590 :デフォルトの名無しさん:2006/06/15(木) 15:55:54
TMemoのModifiedプロパティを使用する。
Trueなら変更有り、Falseなら変更無し

注意点としてソース内でTMemo.Textを変更した場合は
Modifiedプロパティは変化しないので自前で管理する必要がある

591 :デフォルトの名無しさん:2006/06/15(木) 16:08:42
>>584
エラーになるならないではなくて、頭の中では括弧つきでコーディングしてるのだから
コードも省かないでおけってことだよ・・・

592 :デフォルトの名無しさん:2006/06/15(木) 16:10:46
ありがとー!バッチリです!
Modifiedなんてとってもグレイトな物があるのを知りませんでした
それと注意点まで教えてくれて、ホントに感謝です

593 :デフォルトの名無しさん:2006/06/15(木) 16:11:16
>>591
いみふめ

594 :デフォルトの名無しさん:2006/06/15(木) 16:20:17
>>593
if とか演算の括弧は省くなってことを言いたいだけですよ。

595 :デフォルトの名無しさん:2006/06/15(木) 16:24:14
あまりそいつには触らない方がいいと思うよ

596 :デフォルトの名無しさん:2006/06/15(木) 20:16:43
andの優先順位が高いことには不条理を感じることもあるな
まあ後からソース見ると見やすくなってることがあるから否定まではしないけど

597 :デフォルトの名無しさん:2006/06/15(木) 21:10:38
ビット演算子のアンドと論理演算子のアンドで記法が同じなのが混乱の原因

598 :デフォルトの名無しさん:2006/06/15(木) 21:39:47
だってTrue/Falseは1/0じゃん?

まぁ互換性エラーになるが。

599 :デフォルトの名無しさん:2006/06/15(木) 21:46:59
delphi2005と7の違いは大雑把にどんなところが違うのでしょうか?
また、2005で作成したソースを7で開いたり実行したりすることは可能でしょうか?

600 :デフォルトの名無しさん:2006/06/15(木) 22:22:36
>>599
.netが使える
可能

601 :デフォルトの名無しさん:2006/06/15(木) 22:40:08
>>599
2005: 重い、落ちる、バグ多い
2005使うくらいなら、2006の方を進める

602 :599:2006/06/15(木) 22:48:20
>>600 ありがとん。でも.netて何だろ(・ω・)?
当分初心者だから使わなさそう。

603 :599:2006/06/15(木) 23:06:34
>>601 あれっ、2006なんて出てるんだ・・・。
ますます選べなくなりそう。

604 :デフォルトの名無しさん:2006/06/15(木) 23:09:53
>>603
2006はfor〜inとか構文拡張も多いしFastMMだし、2006>7>>>>>>2005と思っときゃ間違い無いよ。
ただIDEの日本語対応度だけは7が上かも。

605 :デフォルトの名無しさん:2006/06/15(木) 23:18:58
>>605 >>>>>の付き具合からすると、2005は余程不便なのかな・・・。
>ただIDEの日本語対応度だけは7が上かも。 
この1行で7に決めました。ありがとう。

606 :558:2006/06/15(木) 23:34:12
>>580
駄目っす

>>579
なるほ。試してみる

607 :デフォルトの名無しさん:2006/06/15(木) 23:35:56
>>605
不便っつーより、機能だけ見れば順当にバージョン順なんだけど、2005はIDEがよく落ちる。それだけ。


608 :デフォルトの名無しさん:2006/06/16(金) 00:01:51
マシンスペックが今時のなら、間違いなく2006薦めるが

609 :デフォルトの名無しさん:2006/06/16(金) 00:01:57
VS2005にしとけ

610 :デフォルトの名無しさん:2006/06/16(金) 00:56:42
なぁ、2007日本語版出るのかな?
とんと噂聞かねぇ・・

611 :デフォルトの名無しさん:2006/06/16(金) 01:08:23
便乗して質問、Del6のソースをBDS2006で開けますか?(そのままコンパイル可能?)

612 :デフォルトの名無しさん:2006/06/16(金) 02:26:45
>>611
うちでは、基本的には大丈夫だった

613 :デフォルトの名無しさん:2006/06/16(金) 02:49:04
>>605
バッチ当てればD2005もD2006も同じ。
だからこんな感じ。
D7>>>>>>>>D2006>D2005

最新のPCだろうが何だろうが
D2005以降はもっさりするのでお勧めできない。
後デザイナの挙動も少しおかしい。

よってその選択で正解。

614 :デフォルトの名無しさん:2006/06/16(金) 04:35:43
>>613
同じじゃない

615 :デフォルトの名無しさん:2006/06/16(金) 05:39:00
Delphi6パーソナル版で
他のプログラムに干渉することできる?
たとえば他のプログラムを最小化したり、Windowを移動したり
キーボードを押したり・・・

616 :デフォルトの名無しさん:2006/06/16(金) 05:45:09
FindWindow, EnumWindowsでウィンドウハンドルとってSendMessage

617 :デフォルトの名無しさん:2006/06/16(金) 07:28:40
>>613
全然同じじゃねーて D2006>D2005 は同意

618 :デフォルトの名無しさん:2006/06/16(金) 08:04:53
プログラムで音量上げるにはどうすればいいですか?


619 :デフォルトの名無しさん:2006/06/16(金) 08:08:18
ちょっと説明不足ですね
TrackBarやEditコンポーネントで入力した数値で音量を変える
みたいなことをやりたいんです

620 :デフォルトの名無しさん:2006/06/16(金) 08:29:13
ファイルをネットで更新するコンポーネントってないですか?
ようは、Windows Updateみたいなことをアプリケーションに乗せたいのですが

621 :デフォルトの名無しさん:2006/06/16(金) 08:31:01
この辺を見てみようと思います。国内では見つからないみたい
http://www.torry.net/pages.php?id=56

622 :デフォルトの名無しさん:2006/06/16(金) 08:39:37
>>618
TMixerで検索

623 :デフォルトの名無しさん:2006/06/16(金) 08:48:31
>>618
http://www.fi.muni.cz/~xkovalc/index.php?lang=en§ion=delphi


624 :デフォルトの名無しさん:2006/06/16(金) 16:10:56
でlpひ2006のことなんだけど、デバック時のロー
カル変数ウインドですが、配列の中身を展開したま
まステップ実行することはできないのですか?
ステップすると閉じちゃうんですけど。
あと、これもデバック中なんですけど、エディタ内
の変数にマウスポインタをあわせるとツールチップ
で変数が確認できますが、これの反応も鈍いです。
ヒントが出たままだと次の変数にポインタを持っ
ていっても反応しないんですけど・・・。
これは仕様でしょうか?


625 :デフォルトの名無しさん:2006/06/16(金) 16:28:53
そういうのはBDSスレへ

626 :デフォルトの名無しさん:2006/06/16(金) 16:45:38
TListViewで、Ctrl++ キーを押すと列の幅が自動調整されますが、
これをコードではどのように書けばいいのでしょうか?


627 :デフォルトの名無しさん:2006/06/16(金) 16:49:11
とりあえずスレのレベルが低いということだけはガチ

628 :デフォルトの名無しさん:2006/06/16(金) 16:57:26
くだすれにいるくせにスレのレベルが低いとはどういう事なんだろう

629 :デフォルトの名無しさん:2006/06/16(金) 17:20:31
>>626
Ctrl + +キーで列の幅が自動調整されるなんて今知ったw

 for i := 0 to ListView1.Columns.Count -1 do
  ListView1.Column[i].Width := LVSCW_AUTOSIZE;

LVSCW_AUTOSIZEをLVSCW_AUTOSIZE_USEHEADERにすると
カラム長に合わさるよ

630 :デフォルトの名無しさん:2006/06/16(金) 17:50:55
ダウンローダーみたいなのを作りたいのですが
ファイルのダウンロードってどうやればいいんでしょうか?

631 :デフォルトの名無しさん:2006/06/16(金) 17:53:41
Indy

632 :デフォルトの名無しさん:2006/06/16(金) 18:33:59
そのindyでどうやればいいんですか?

633 :デフォルトの名無しさん:2006/06/16(金) 18:41:38
procedure TForm1.Button1Click(Sender: TObject);
var
 fs: TFileStream;
begin
 fs := TFileStream.Create('hoge.dat', fmCreate);
 try
  IdHTTP1.Get('http://hogehoge/hoge.dat', fs);
 finally
 fs.Free;
 end;
end;

634 :デフォルトの名無しさん:2006/06/16(金) 19:36:05
Webの巡回ソフトの用のものをTWebBrowserを使って作ろうとしています
巡回先にJavaScriptでconfirm()メソッドによる確認ダイアログが
でるところがあり,自動でOKボタンを押したいのですが
うまくいきません.現在は以下のようなやり方を試しています.
どなたか,よい方法があれば教えてください.

var
DlgWhnd :HWnd;
begin
DlgWHnd := FindWindow(NIL,'Windows Internet Explorer');
SendMessage(DlgWHnd,WM_COMMAND,IDOK,0);
end;


635 :デフォルトの名無しさん:2006/06/16(金) 19:37:58
マルチポストは良くない。
なんか思いついたらQ&A 掲示板の方に書くから。

636 :デフォルトの名無しさん:2006/06/16(金) 19:44:41
>>635
ありがと...Q&Aで返信つかないままどんどん下がるので
さびしくなってこっちにもかいてしまいました

みんなどんどん返信つくのに..

637 :デフォルトの名無しさん:2006/06/16(金) 20:36:05
イミフメだから。そのコード、どんなタイミングで実行してるの?

638 :デフォルトの名無しさん:2006/06/16(金) 20:37:31
フォーカスあるなら Returnキー押すコード書くだけ。

639 :デフォルトの名無しさん:2006/06/16(金) 22:04:49
フォーカスはあるようです
エンターキー押すコードっていうと
keybd_event(VK_RETURN,0,0,0);
??

これだと、でてくるダイアログには効かないようで
ダイアログを手動で閉じた後に実行されます

640 :デフォルトの名無しさん:2006/06/17(土) 00:12:11
だから、いつ実行してるの? モーダルダイアログなんだろ。
ShowMessage() の後にコード書いても、閉じるまで実行されないのと同じ。

641 :デフォルトの名無しさん:2006/06/17(土) 00:23:36
ダイアログのOKボタンを押さないと駄目では?
タイマー使うか、
Form1.Handle に PostMessage しても上手く行くかもね。

642 :デフォルトの名無しさん:2006/06/17(土) 01:07:26
WebBrowserのonCommandState
にkeybd_event(VK_RETURN,0,0,0);
でいけそうです

643 :デフォルトの名無しさん:2006/06/17(土) 01:08:17
↑onCommandStateChange
のまちがい

644 :デフォルトの名無しさん:2006/06/17(土) 02:32:04
>>642 キー押したら離すコードも忘れずに

645 :デフォルトの名無しさん:2006/06/17(土) 14:59:48
Editコンポーネントで数値以外の入力を禁止するには何すればいいんでしょうか

646 :デフォルトの名無しさん:2006/06/17(土) 15:38:12
つ TMaskEdit

647 :デフォルトの名無しさん:2006/06/17(土) 16:02:16
メッセージダイアログの中で改行するにはどうすればいいのでしょうか?

648 :デフォルトの名無しさん:2006/06/17(土) 16:11:06
FindFirstでファイル、フォルダの検索をした場合に検索される順番に決まりはあるのでしょうか?
フォルダ→ファイルの順番のように見えますが。

649 :デフォルトの名無しさん:2006/06/17(土) 16:12:31
>>647
#13#10

650 :デフォルトの名無しさん:2006/06/17(土) 16:14:47
>>648
ファイルシステムの実装による。
大抵作っていった順序。. ..が先に来るな。

651 :デフォルトの名無しさん:2006/06/17(土) 16:20:56
>>648
FATは作成順。
NTFSは名前順。
検索順を変えたいなら、十分でソートする。

652 :デフォルトの名無しさん:2006/06/17(土) 16:48:07
>>647
sLineBreak

653 :デフォルトの名無しさん:2006/06/17(土) 16:50:25
命名スレで暴れているDel厨君うざいですよ

654 :648:2006/06/17(土) 16:55:16
>>650,651
早速の回答ありがとうございます。
なるほど、ファイルシステム依存なんですね。こりゃまいった。
んで
>>十分でソート
ってなんざんしょ?


655 :デフォルトの名無しさん:2006/06/17(土) 16:59:57
自前で

656 :648:2006/06/17(土) 17:16:13
>>655
あっ、自分でって事ですね?すんません想像力無くて。

657 :デフォルトの名無しさん:2006/06/17(土) 18:55:12
じっぶん で十分って変換されるのか
初めて知った

658 :デフォルトの名無しさん:2006/06/17(土) 18:57:21
じゅぶん かもしれん

659 :デフォルトの名無しさん:2006/06/17(土) 19:44:36
昨日はじめたばかりです。

質問するのもおこがましいレベルだと思ったんですが
2時間ほどググってもわからなかったので、
もしよかったら教えてください。

Form1の上にEditをいくつか並べました。
コンパイルしたアプリを起動して、
一度どれかのEditをクリックしてフォーカスさせたとします。

この状態から、フォーカスを解除させる方法はありませんでしょうか?
(他のEditにフォーカスを移動、ではなく、起動直後のように完全に解除する方法です)

Form1.SetFoccus;ではダメみたいなのですが。。。。
どうやるのでしょう。。。。?
はずかしいしつもんですみません。。。。orz

660 :デフォルトの名無しさん:2006/06/17(土) 19:53:36
>>659
FocusControl(nil);

661 :デフォルトの名無しさん:2006/06/17(土) 19:56:34
>>660
本当にありがとうございます!!!!!!
精進します!

662 :デフォルトの名無しさん:2006/06/17(土) 20:09:58
>。。。。
とか
>!!!!!!
とか
自虐、ウザイ

663 :デフォルトの名無しさん:2006/06/17(土) 20:42:59
なんだと!!!!!!!!!

664 :デフォルトの名無しさん:2006/06/17(土) 20:55:04
ごめんなさい。。。。orz
ごんどからきおつけます。。。。

665 :デフォルトの名無しさん:2006/06/17(土) 22:09:43
>645
OnKeyPressで必要ない文字の場合はKey=#0でなかったことにする
Ctrl-Vに対策したければOnChangeで必要ない文字を削除

666 :665:2006/06/17(土) 22:10:50
× Key=#0
○ Key := #0;

667 :デフォルトの名無しさん:2006/06/17(土) 23:39:10
D6です。メニューにフォルダを展開し、クリックすると開くようにしたいのですが、
サブメニューのある項目のOnClickイベントが暴発します(選択状態になるとOnClickが呼ばれます)
どのようにすれば暴発を防げるでしょうか?

668 :デフォルトの名無しさん:2006/06/18(日) 00:58:18
ツリービューつかったダイアログつくれ

669 :デフォルトの名無しさん:2006/06/18(日) 00:59:30
「ある項目」ったって誰も知らない

670 :デフォルトの名無しさん:2006/06/18(日) 01:26:32
try
...
except
end;
で囲むとか。


671 :667:2006/06/18(日) 02:26:47
>>669
すまんね、'サブメニューのある'項目だな。
つまり、'サブメニューのある'項目にもOnClickハンドラがあるのですよ。
すると'サブメニューのある'項目をマウスポインタが通過するだけでOnClickが呼ばれる。
>>670
例外が発生するとかではないので無理っぽい。

本来'サブメニューのある'項目自体にOnClickを割り当てるのがおかしいとは思うがどうにかならんのか、と。

672 :デフォルトの名無しさん:2006/06/18(日) 03:49:32
> マウスポインタが通過するだけでOnClickが呼ばれる

OnClickが呼ばれる過程を鑑みればそんなことありえない
諦めてサッカー見てろよ

ガーナおめ

673 :デフォルトの名無しさん:2006/06/18(日) 03:52:56
と思ったけどそうなるみたいだな
諦めてサッカー見てくる

674 :デフォルトの名無しさん:2006/06/18(日) 04:01:13
最小再現コードを見せて。

675 :デフォルトの名無しさん:2006/06/18(日) 04:06:38
目的にメニューの機能がフィットしてないので諦めれ
>>667でフォルダをメニューに展開とか言ってるがファイル数が1000とかあったらどうなるよ?

676 :デフォルトの名無しさん:2006/06/18(日) 04:17:42
似たようなもの作ったことがある。

フォルダを表す項目の OnClick でフォルダを開くのではなく、
サブメニューにそのフォルダを開く為の項目を入れればよい。
フォルダの OnClick ではサブアイテムを作成して掘り下げていく。

一定個以上のファイルやフォルダがあったら超過分は切り捨てて ... とかにしとけばおk。

677 :デフォルトの名無しさん:2006/06/18(日) 04:19:35
ランチャーでも作ってるんだろうか
解決したらぜひ教えてほしい

678 :デフォルトの名無しさん:2006/06/18(日) 05:03:29
レコード型で、

TMyMenu=record
 MenuNum: integer;  // で、このMenuNumの宣言と同時に3を代入してしまいたい!const MenuNum = 3;みたいに。
 MenuCaption: array [0..MenuNum-1] of string; //で、こういうふうに使いたい。
  ・
  ・
end;

んですが、レコード型のメンバーで宣言と同時に代入みたいなことができないようです。
代替方法としてはどうすればいいですか?

679 :デフォルトの名無しさん:2006/06/18(日) 05:36:32
const MenuNum = 3
でいいんじゃないの?

680 :デフォルトの名無しさん:2006/06/18(日) 05:53:47
サブメニューを変更すると、親メニューのハンドルが無効にならなかった?

>>678
グローバル変数なら、宣言と同時に初期化が可能。
var
P: TPoint = (X:0; Y:0);

ただその例はおかしい。 MenuCaption は動的配列にしないと駄目。
そうなると動的配列の初期化は出来ない。
classで実装するべき。

681 :デフォルトの名無しさん:2006/06/18(日) 06:02:16
その部分はTStringList型を使うべき。

682 :678:2006/06/18(日) 07:10:59
ご意見、ありがとうございます。

やっぱクラスにするか、679さんの言うとおりただの定数にするかどっちかかなぁ…
この部分だけなのでわざわざクラスにするのも何かなぁって思ってたんです。

普通の定数にすることにします。

683 :デフォルトの名無しさん:2006/06/18(日) 10:47:14
わざわざ、という発想がわからんなぁ。クラスでいいと思うが。

684 :デフォルトの名無しさん:2006/06/18(日) 10:58:54
GCがないからインスタンス生成に対する心理的抵抗が非常に大きいというのは非常に理解できるよ。

685 :デフォルトの名無しさん:2006/06/18(日) 11:31:31
QDのDDSDコンポーネントとTMediaPlayerコンポーネントを両方使うと
TMediaPlayerでOpen;した時に不明なエラーが〜って出てしまうのですが、
これはDDSDを使うのをあきらめるしか無いですか?

686 :デフォルトの名無しさん:2006/06/18(日) 11:35:49
よくわからんが
各プロシージャの繋がりをナビゲーターで視覚的に見れるVerってあるの?
あとハイパーリンクとかポップアップで見れるとか?
プログラムの世界って上下スクロール環境を当たり前のものとして考えすぎてない?


687 :デフォルトの名無しさん:2006/06/18(日) 11:46:52
>>684
横槍ですが、GCってなんですか?

688 :デフォルトの名無しさん:2006/06/18(日) 11:52:59
>>687
GreatCunt

689 :デフォルトの名無しさん:2006/06/18(日) 13:52:08
>>684
うむ。こういうときばかりは、Delphi.NETがうらやましくなる・・・

>>687
ガーベジコレクション。ゴミ集め。
つまり、Object.Freeしなくても勝手に開放してくれるということ。

690 :デフォルトの名無しさん:2006/06/18(日) 14:51:02
>>645
SetWindowLong(Edit1.Handle, GWL_STYLE, GetWindowsLong(Edit1.Handle, GWL_STYLE) or ES_NUMBER);

691 :デフォルトの名無しさん:2006/06/18(日) 14:59:53
>>686
マウス世代からするとスクロールしか念頭にないんじゃない?

というか普通に教えてくれ。
スクロールが当たりませじゃないものって何がある?

692 :デフォルトの名無しさん:2006/06/18(日) 15:00:55
>当たりませ

693 :デフォルトの名無しさん:2006/06/18(日) 15:06:22
GC まかせは気持ち悪いところもあるんだよ。ちゃんと Free をすれば済むことを
なんでためらって、動的に配列数を可変にしようとするのを諦めるのか、わからん。

694 :デフォルトの名無しさん:2006/06/18(日) 15:14:54
>693
動的配列はいまいち使い方がわからないんだけど、
詳しくというか使い方の例題が乗っているサイト知らない?

動的配列使いたいんだけど StringList ばかり使ってる。

695 :デフォルトの名無しさん:2006/06/18(日) 15:19:00
俺もStringListばっかり使ってる

696 :デフォルトの名無しさん:2006/06/18(日) 15:34:13
>>694-695

例えば、

var
  StrArr: array of string;
  count: integer = 0;

procedure TForm1.Button1Click(Sender: TObject);
var
  i: integer;
begin
  if (Length(StrArr) <= count) then SetLength(StrArr, Length(StrArr) + 10);
  StrArr[count] := IntToStr(count);
  Inc(count);

  Memo1.Lines.BeginUpdate;
  Memo1.Clear;
  for i := 0 to count-1 do
    Memo1.Lines.Add(StrArr[i]);
  Memo1.Lines.EndUpdate;
end;

のようにすると、メモリが許す限りいくらでも増やせる。開放も気にしなくよい。
配列要素数を減少させるときも SetLength() を使う。

697 :667:2006/06/18(日) 16:10:33
>>672,673
なぜかなるんですねぇ・・・。
>>674
メニューを作成し、項目aを作成、項目aにサブメニューbを作成、項目aのOnClickにShowMessageでも書く。
実行し、メニュー項目aをポイントするとShowMessageされてしまう・・・、ってな感じ。
>>675
そうですよねぇ、本来のメニューの使い方ではないんですよねぇ。
>ファイル数が1000とか
ファイルは表示してませんが、サブフォルダがあるかどうかの判定に時間がかかる場合があって大変です(´・ω・`)
>>676
どうやらそういう方向で考えないとだめっぽいですね。
>>677
ランチャー'のような物'を目指してたんですが、皆さんのレスを見てると普通のメニューでは無理っぽい模様です(´・ω・`)


698 :デフォルトの名無しさん:2006/06/18(日) 22:41:43
>>676でやれば普通のメニューでいいじゃん

699 :デフォルトの名無しさん:2006/06/19(月) 10:02:31
常にプログラムを常駐させて
キーボードを別のキーに置き換える
(F1キーを押したらCTRL+Aと同じ動作をさせるとか)
動作をさせるのはどうすればいいんでしょうか。

700 :デフォルトの名無しさん:2006/06/19(月) 10:22:11
APIでタスクトレイに登録、キーフック

701 :デフォルトの名無しさん:2006/06/19(月) 16:20:46
今日初心者本を見ながらDelphi始めたのですが、
「FileListBox」と「DirectoryListBox」と「DriveComboBox」を連動させるのに
DriveBomboBoxのOnChangeイベントに
Dir_main.Drive := Drv_main.Drive; を記入しろとあるのですが、
これを記入してもDir_main.Drive := Drv_main.Drive;は適切な識別子ではありませんとエラーが出て
先に進めません。
どうすればいいのでしょうか。

702 :デフォルトの名無しさん:2006/06/19(月) 17:14:15
それは、Win16 の名残り。使わない方がいいよ。

703 :デフォルトの名無しさん:2006/06/19(月) 20:11:21
TStrings (List) で、区切る文字列の指定を , だけにしたいのですがどうしたらいいでしょうか。
通常だと、半角スペースも区切り文字に指定されてしまいます。

704 :デフォルトの名無しさん:2006/06/19(月) 20:14:42
>>703
に便乗。

CommaText を使うと格納されているリストを文字列として取得できるんだけど、
それを , じゃなくて半角スペースで取得する方法知らない?

705 :デフォルトの名無しさん:2006/06/19(月) 20:18:22
半角スペースでも区切られるでしょ。試したの?

706 :デフォルトの名無しさん:2006/06/19(月) 20:20:08
あ、アホレスだった。リストの方なら、A + ' ' + B + ' ' + ... 簡単に作れる。

707 :デフォルトの名無しさん:2006/06/19(月) 20:39:09
>>703
半角、全角スペースを含む文字が区切り文字に含まれている場合は
区切り文字をダブルクォーテションで囲めば半角、全角スペースで区切られない

>>704
Delimiterプロパティを変更すれば任意の文字を区切り文字に設定可能

あるいはベタにStringReplace
半角、全角スペースを無視したい場合は別の文字に置換してCommaTextにブチ込む
sTemp := StringReplace(sTemp, ' ', 'hankaku', [rfReplaceAll]);
sTemp := StringReplace(sTemp, ' ', 'zenkaku', [rfReplaceAll]);
sTempList.CommaText := sTemp;
値が必要な時になったら
Strings[0] := StringReplace(Strings[0], 'hankaku', ' ', [rfRelaceAll]);

区切り文字を指定したいなら区切り文字をカンマに、半角、全角、カンマを
別の文字に置換してCommaTextに(ry
sTemp := StringReplace(sTemp, '&', ',', [rfReplaceAll]);
sTemp := StringReplace(sTemp, ' ', 'hankaku', [rfRplaceAll]);
sTemp := StringReplace(sTemp, ' ', 'zenkaku', [rfReplaceAll]);
sTemp := StringReplace(sTemp, ',', 'kanmma', [rfRplaceAll]);



708 :デフォルトの名無しさん:2006/06/19(月) 20:42:37
>>706
A := a[i] + ' ' ;
という風に for i:= 0 to a.count -1 do 文で回してるんだけど、最後にスペースつくからそれを回避したくて。

・・・って、 a.count を取得しといて if で最後つけないように指定すればいいのか。
空白区切りで取得できたら楽なのに。

709 :デフォルトの名無しさん:2006/06/19(月) 20:50:38
>>708
最初の項目 a[0] に i=1 から順に + ' ' + a[i];

710 :デフォルトの名無しさん:2006/06/19(月) 20:55:00
>>707
置換かー・・・ なんか余計手間に思えるけど結果それのが分かりやすい・・・かな?
ありがとう試してみる。

区切り文字は、create のあとに Delimiter を指定すればいいってのはわかってるんだけどね。
それを取得する方法がカンマしかないのかなーと。
分解を取得で違う方法にするってのは、通常考えない事だから仕様にないのは当然か。うーん。

711 :デフォルトの名無しさん:2006/06/19(月) 20:56:31
>>709
それだと a[0] の文字列が取得できないじゃない?

712 :デフォルトの名無しさん:2006/06/19(月) 21:00:01
リロードしろ俺。
というか回答者いっぱい居てなんだか優しいなここの人らは。

>>709
よくわからんのだけど?
a[0] を ' ' + a[i] で書き換えて行けって事?

713 :デフォルトの名無しさん:2006/06/19(月) 21:16:31
>>707
ご飯から返ってきたら返答がありました。
それでやってみたら、できました。 ありがとうございましたm(_ _)m

714 :デフォルトの名無しさん:2006/06/19(月) 21:33:19
s := a[0];
for i := 1 to count - 1 do s := s + ' ' + a[i];



715 :デフォルトの名無しさん:2006/06/19(月) 22:40:22
>>714
おー! なるほど。

716 :701:2006/06/19(月) 22:45:10
これを入力しないと次の項目に進めないのですが
使わない方がいいってこの本自体の事でしょうか?

717 :デフォルトの名無しさん:2006/06/19(月) 22:50:28
「FileListBox」と「DirectoryListBox」と「DriveComboBox」のことだ。
それは Windows3.1 の残党。Windows95 以降は TTreeView と TListView を
使うべきだし、実際世の中のアプリはそうなってる。

718 :デフォルトの名無しさん:2006/06/19(月) 23:06:04
Internet Explorer をDelphiで操作するプログラムを作りたいんですが、どのようにやったらいいでしょうか?

719 :デフォルトの名無しさん:2006/06/19(月) 23:17:58
ヒント1:ActiveX
ヒント2:OLE2


720 :デフォルトの名無しさん:2006/06/19(月) 23:18:50
「Internet Explorer をDelphiで操作する」って、具体的にどうしたいの?
外から制御するのは変態プログラム。普通は TWebBrowser をつかって、間接的にコンポとして
使う。誰か初心者スレを紹介してくれるはず。

721 :デフォルトの名無しさん:2006/06/19(月) 23:20:08
>>701 その本古すぎ。初心者スレで勉強すべし。

722 :デフォルトの名無しさん:2006/06/19(月) 23:20:58
× 初心者スレで
○ 入門サイトで

723 :718:2006/06/20(火) 00:26:01
>>720

Webメーラーを使ったSPAM送信するプログラムを作りたいんです。

724 :デフォルトの名無しさん:2006/06/20(火) 00:31:32
そんなのは教える気はないな。

725 :718:2006/06/20(火) 00:47:45
何故ですか?

726 :デフォルトの名無しさん:2006/06/20(火) 00:49:06
正直、SPAMをDelphi+IEで送ろうとする>723の涙ぐましい努力に敬意を表する。

727 :デフォルトの名無しさん:2006/06/20(火) 01:05:41
なんか使い方にもよるかもしれないけどStringReplaceてめっちゃ遅くない?
あまりにうざかったんんで自力で書いたのは俺だけかな

728 :デフォルトの名無しさん:2006/06/20(火) 01:07:12
>>727
何に使ったんだよ。

729 :デフォルトの名無しさん:2006/06/20(火) 01:08:37
はっきり言って遅いよ。
特に文字列が長ければ長いほど対数的に遅くなる。

730 :デフォルトの名無しさん:2006/06/20(火) 01:12:31
>>729
何か他の言語と比べて遅いならわかるけど、
体感で遅いと感じるんだよね?
それだと使いどころを間違ってるとしか言えない。

731 :デフォルトの名無しさん:2006/06/20(火) 01:16:10
勿論。使い所が悪いとダメ。


732 :デフォルトの名無しさん:2006/06/20(火) 01:18:24
>>727
こいつは「StringReplaceより優れた関数つくったぜぇー」って勘違いして自慢したいだけだからほっとけ

733 :デフォルトの名無しさん:2006/06/20(火) 02:10:42
StringReplace って、初心者用でしょ。ちょっと考えれば、あんなものよりマシなのは
だれでも作れるわな。ってか、文字列操作用には Delphi のライブラリはダメダメだな。

734 :デフォルトの名無しさん:2006/06/20(火) 02:47:15
なんでことさらに>>732みたいな書き込みをしたがるのかわからん。

以前も「けなすくらいなら書き込まんとけ!」みたいなことでもめてたことがあったが、関係ないもんから見てても気分悪くなるよ。


735 :デフォルトの名無しさん:2006/06/20(火) 02:50:41
>>734
そんなん主張する為にいちいち上げんな

736 :デフォルトの名無しさん:2006/06/20(火) 02:54:22
ぶっちゃけ標準ライブラリに似たような機能あるのに
自作ライブラリで自己満足して、保守で他人に迷惑かける奴って協調性無い奴おおいよな。

737 :デフォルトの名無しさん:2006/06/20(火) 02:56:00
なんだ?Del厨は口が悪いなw

貧乏臭いてか、育ち悪いの丸出しww
たぶんカーチャンがパートから帰ってきてブツクサ職場の文句なんか言ってるのを聞いて育ってるからだろうなぁ。

余裕をもてよ、Del厨諸君。

て、無理か?     プププ

738 :デフォルトの名無しさん:2006/06/20(火) 02:58:35
余裕がない奴が多い、ってのは一理あるかも

739 :デフォルトの名無しさん:2006/06/20(火) 02:59:41
>>737
よっぽどコンプレックスをお持ちでなによりです。
今日も生きててご苦労様です。

740 :デフォルトの名無しさん:2006/06/20(火) 03:05:40
もうやめようぜ。

741 :デフォルトの名無しさん:2006/06/20(火) 03:06:14
Delphiの話しようぜ

742 :デフォルトの名無しさん:2006/06/20(火) 03:10:17
DelphiのStringReplaceは初心者用とかいてありますが
中級車は何をつかうのでしょうか?
そして上級者は何をつかうのでしょうか?
さらにその上のひとは何を使うのでしょうか?
わたしは調初心者です。
教えてください。

743 :デフォルトの名無しさん:2006/06/20(火) 03:19:08
わざとからかって質問してんだろう?

744 :超初心者:2006/06/20(火) 03:24:26
もしよかったら他の関数もレベル分けされているものがあれば教えてください。
とりあえずStringReplaceは初心者用ですね。c⌒っ*゚∀゚)φ メモメモ...

745 :デフォルトの名無しさん:2006/06/20(火) 03:28:47
TStringList に入れて、一行づつ StringReplace で置換すれば速くなるよ。


746 :デフォルトの名無しさん:2006/06/20(火) 03:31:34
てか、数十バイト程度の文字列処理用だね。処理速度が欲しければ自分で書くか、
誰かが書いたヤツを使う。

747 :デフォルトの名無しさん:2006/06/20(火) 03:32:52
コードでスクリーンショット(PrintScreen押すだけ)を撮りたいのですが
どうやればできるのでしょうか?
そこからImageなんかに貼り付ける事は可能でしょうか?
よろしくお願いします

748 :デフォルトの名無しさん:2006/06/20(火) 03:35:32
いづれにしても、AnsiPos() や Copy() を多用して、切った貼ったを繰り返す関数は
遅い。AnsiStrPos() 系のポインタ操作系で、一度に位置を取得してコピーする回数を
最小限にする関数を作らないといけない。ほんと、Delphi は標準ライブラリだけでは
満足な文字列操作なんかできないよ。

749 :デフォルトの名無しさん:2006/06/20(火) 03:41:37
>>747
keybd_event(VK_SNAPSHOT, 0, 0, 0);
keybd_event(VK_SNAPSHOT, 0, KEYEVENTF_KEYUP, 0);

これでPrintScreenを押したことになる
あとはImageのキャンバスに貼り付けるだけ

750 :デフォルトの名無しさん:2006/06/20(火) 03:46:02
745より速くしたい場合は、標準ライブラリでは無理だから自分で書く。
Boyer-Moore法で位置を探し、メモリの確保を一度に行えば速くなる。

751 :747:2006/06/20(火) 03:59:45
>>749
できました。ありがとうございました。

752 :デフォルトの名無しさん:2006/06/20(火) 06:33:02
FAQだが遅いのはStringの長さの拡張&コピー。
for i := 1 to 100000 do
 s := s + '*';
とやってくと何度もバッファの拡張されデータがコピーされる。これが文字列が長いとかなり遅くなる。
StringReplaceが場合によって遅いのは内部でこれをやっているから。
毎回毎回ヒープ+PCharはなにかと面倒なのでStringBuilder的なクラスを作ればかなり現実的な速度に収まる。
で、その上にSR相当のものを構築する。
別にSRは初心者用というわけじゃないよ。性質を理解していれば。

753 :デフォルトの名無しさん:2006/06/20(火) 09:45:55
速い関数を作れる人がわざわざ遅い関数を使うことなんかあり得ない。そう言う意味では
StringReplace() は初心者専用とは言える。

754 :デフォルトの名無しさん:2006/06/20(火) 09:53:25
StringReplaceの速度が問題になることなんてまずないから安心して使うといいよ
問題になった時は既に君はこのスレを卒業してる

755 :デフォルトの名無しさん:2006/06/20(火) 09:57:14
ありえないって断言しちゃったよこの人。
速度最優先で組んでるならCでもやればいいのに。

756 :デフォルトの名無しさん:2006/06/20(火) 10:23:59
初心者でもながぁーい文字列を操作することもあるでしょ。
スカな実装の StringReplace() を擁護したり、使用を勧めるのはアフォだけ。

757 :デフォルトの名無しさん:2006/06/20(火) 10:25:43
> 速度最優先で組んでるならCでもやればいいのに。

速度を重視しないなら、ライブラリが充実している .NET アプリの方がマシですね。
それに C で組むと速度が上がる、とかにはなんの根拠もない。

758 :デフォルトの名無しさん:2006/06/20(火) 10:27:16
> 速度最優先で組んでるならCでもやればいいのに。

なるほど、Delphi では遅いアプリしかつくれないんだな・・・

759 :デフォルトの名無しさん:2006/06/20(火) 10:32:23
文字列を操作するツール以外なら
正規表現ライブラリもあるし別に自作で作る必要性がないな。
数十万行のソースの中でそんな関数あると邪魔。

そんな些細なことにこだわるのは学生ぐらいだろ。
プロほど可読性、保守性を考えてるというのに。

760 :デフォルトの名無しさん:2006/06/20(火) 10:37:35
速度で言うとC>=C++>Delphi>>>>>>.Netだな。
.Net以外はたいしてかわりゃしねぇがな。

761 :デフォルトの名無しさん:2006/06/20(火) 10:42:05
> 速度で言うとC>=C++>Delphi>>>>>>.Netだな。

なんの根拠もないし。言語とコンパイラ実装をごっちゃにしてる時点でアウト。

762 :デフォルトの名無しさん:2006/06/20(火) 10:46:17
要は、Delphi の文字列処理用ライブラリはダメダメだってことだ。
それを「可読性、保守性」とかいって放置するのはプログラマの怠慢。

763 :デフォルトの名無しさん:2006/06/20(火) 11:06:01
マウスホイールを回すとDBGridの選択行がスクロールしてしまいます。
実際の行(インジケーター)は移動していないので、表示がおかしくなります。
これを防止する方法はありますか。

764 :初心者:2006/06/20(火) 11:38:28
いや、なんかすごいですね。
よかったらStringReplaceExみたいな関数つくってあげてくれませんか?

765 :デフォルトの名無しさん:2006/06/20(火) 11:51:18
>>764
うーん。 
遅い原因は 複数の置換を行うと O^2 とデータ量x置換数に比例する事にあるんで
目的に応じて設計しないといけないからなわけで

置換といっても正規置換もやりたいの? とかによって規模が一気に巨大になるし

766 :初心者その2:2006/06/20(火) 12:57:05
StringReplaceって、OldStr、NewStr、Strを入れたらOldStrをNewStrに置き換えてくれるやつでそ?
だったらこいつの高速版で長い文字列でも問題なし版ってことじゃダメなの?

767 :デフォルトの名無しさん:2006/06/20(火) 13:11:04
まぁStringReplace使ったぐらいで初心者あつかいされるなら
ほとんどのDel使いは初心者だわな。

768 :デフォルトの名無しさん:2006/06/20(火) 13:18:06
>>764
根拠、根拠言ってる奴に作ってもらうとよろし。
もう作ってるらしいから。

つーか、もうどうせならHalbowのサイトでも見ながらWin32 APIで実装したらいいんじゃない。
速度を追い求め非効率生産、勝手にやってろって感じだな。

769 :デフォルトの名無しさん:2006/06/20(火) 13:27:55
> ほとんどのDel使いは初心者だわな。

いや、実際キロバイト級の文字列に StringReplace を使うようじゃ、初心者並みといえるんじゃない?

770 :デフォルトの名無しさん:2006/06/20(火) 13:31:46
> だったらこいつの高速版で長い文字列でも問題なし版ってことじゃダメなの?

そうなんだ。話を言語のせいにしたり、正規表現に拡大したり、API を使うとか
極論に走るのは、頭悪い香具師がDel厨に多いってことだ。検索一回、メモリ確保一回
で済むように書くだけなのに、なにを騒いでるんだか。

771 :デフォルトの名無しさん:2006/06/20(火) 13:38:26
>>769
IndyやOpenJaneみてるとそれぐらいの規模でもStringReplace使ってるみたいだよ。

772 :デフォルトの名無しさん:2006/06/20(火) 13:44:12
だから、だめライブラリなんだけどね。

773 :デフォルトの名無しさん:2006/06/20(火) 15:15:53
俺は別に動けば速くても遅くても関係ない。自分が使うわけじゃないし。
客なんてほとんど素人だからStringReplaceが遅いから処理が遅いなんて言い出すわけねーっつの。

774 :デフォルトの名無しさん:2006/06/20(火) 15:25:32
StringReplace論議はこれぐらいにして

次の質問者どうぞ↓

775 :718:2006/06/20(火) 16:27:28
Internet Explorer をDelphiで操作するプログラムを作りたいんですが、どのようにやったらいいでしょうか?

776 :デフォルトの名無しさん:2006/06/20(火) 16:36:46
操作って具体的に何がしたいのか

777 :デフォルトの名無しさん:2006/06/20(火) 16:39:16
>>776
>>723

778 :デフォルトの名無しさん:2006/06/20(火) 16:46:51
StringReplaceが遅いって言うやつはよくいるけど、速いソースを出してくるやつは見たこと無いな

779 :デフォルトの名無しさん:2006/06/20(火) 16:52:00
それだったらIEなんか使わないでIndyのhttpコンポーネント使えばいいじゃない

780 :デフォルトの名無しさん:2006/06/20(火) 16:56:09
汎用性と速度は反比例する物だからね

速いソースはそれぞれの目的に特化した物になってるから公開しても意味無いからじゃないの

781 :デフォルトの名無しさん:2006/06/20(火) 17:31:11
> 速いソースはそれぞれの目的に特化した物になってるから公開しても意味無いからじゃないの

外観が StrngReplace() とまったく一緒にすることは簡単。文字列処理用のライブラリ
なら探せばいっぱいあるよ。

782 :デフォルトの名無しさん:2006/06/20(火) 17:32:59

>探せばいっぱいあるよ。
>探せばいっぱいあるよ。
>探せばいっぱいあるよ。
>探せばいっぱいあるよ。
>探せばいっぱいあるよ。
>探せばいっぱいあるよ。



783 :デフォルトの名無しさん:2006/06/20(火) 17:35:16
srはもういいっていってんのがわかんねえの?
続きやりたきゃStringReplace板でも作ってそこでやれ

784 :デフォルトの名無しさん:2006/06/20(火) 17:43:06
>>779
indyは初心者が作ってるらしいので嫌です

785 :デフォルトの名無しさん:2006/06/20(火) 17:45:57
>>783
そんな下らん事言う前に、お前がソース出せば一瞬で終わるよw

786 :デフォルトの名無しさん:2006/06/20(火) 18:04:01
StringReplaceは存在しなくていいと思ってる厨の考え
1.StrngReplace使う奴は初心者で作成物も駄目ライブラリ。
2.速い関数を作れる人がわざわざ遅い関数を使うことなんかあり得ない。
3.いまから使用を進めるのアホだけ。
4.保守を理由に速度の遅い標準ライブラリを使う奴は駄目な奴。
5.宣言が一緒のStringReplaceは簡単に作れるしライブラリも探せばいっぱいある。
etc...

すばらしいお考えです。
論破されて何もいえません。
今までくちごたえしてごめんなさい。
ほんとうにごめんなさい。ごめんなさい。ごめんなさい。

787 :デフォルトの名無しさん:2006/06/20(火) 18:09:45
ぱぱっとStringReplace互換のソースを書いてここに貼り付けたらみんなハッピーになれるのにねw

788 :デフォルトの名無しさん:2006/06/20(火) 18:22:46
Del厨ってスクリプト書けば5分で終わるCUIなフィルタも
String使ってチマチマチマチマその10倍時間かけてGUIアプリ書くしなんか思考に柔軟性がないんだよな。
ケースバイケースという言葉を学習していただきたい。

789 :デフォルトの名無しさん:2006/06/20(火) 18:25:29
いえてる。

790 :デフォルトの名無しさん:2006/06/20(火) 18:26:36
>>787

寺子屋スレでやってたでしょ。ああいう感じ。

791 :デフォルトの名無しさん:2006/06/20(火) 18:28:24
ここはDelスレだろ
>スクリプト書けば5分で終わるCUIなフィルタ
はスクリプトのスレに行けばいいだけで。


792 :デフォルトの名無しさん:2006/06/20(火) 18:28:44
GUI 以外は、ダメダメな標準ライブラリしか持たない厨たちの悲哀・・・

793 :デフォルトの名無しさん:2006/06/20(火) 18:32:11
>>792とかの方がよっぽどひとつの環境で全て済ますことにこだわってるじゃねーかww

794 :デフォルトの名無しさん:2006/06/20(火) 18:38:38
comettrees.pasてどこにあるか知っていませんか?

795 :デフォルトの名無しさん:2006/06/20(火) 18:39:10
>>793

ちょ・・・
本人気づいてないんだから、そっとしておいてあげようよ

796 :デフォルトの名無しさん:2006/06/20(火) 18:40:35
知りません。

797 :デフォルトの名無しさん:2006/06/20(火) 18:41:45

GUI 以外は、ダメダメな標準ライブラリしか持たない厨たちの悲哀・・・



798 :デフォルトの名無しさん:2006/06/20(火) 18:58:04
ライブラリがダメなところは、いくらでも改変可能なのが利点だからね

799 :デフォルトの名無しさん:2006/06/20(火) 19:00:28
StringReplaceを試しにVB.NETで書き直して1MBのテキスト処理させてみたら3.7倍高速化されたよ。
なんかショック。
今まで積み上げてきた自信が足元から崩れ去ったような感じだ・・・

800 :デフォルトの名無しさん:2006/06/20(火) 19:05:39
そらまー、処理系云々よりデータ量と実装方針で決まるタイプの処理だからな。
ちょっとしゃれた実装のスクリプト言語が一位に来ても驚かんよ。


801 :デフォルトの名無しさん:2006/06/20(火) 19:21:40
>>799

でも、チマチマした最適化よりPCのスペックアップの方が有効だけどね。

802 :デフォルトの名無しさん:2006/06/20(火) 19:29:19
>>753からここまでは見る価値ないから透明あぼーんでいいよ
連鎖あぼーんすればこのレスも見えなくなるな

803 :デフォルトの名無しさん:2006/06/20(火) 19:46:00
脱Delphi初心者の基準はStringReplaceを10倍高速化できるかどうかということだね。
むなしい抗弁をしている暇があったら一度チャレンジしてもらいたい。

804 :デフォルトの名無しさん:2006/06/20(火) 19:56:23
>>803
「10倍」ってのが厨っぽい。
まず元の長さとパターンと一致数と云々……に対するオーダーを下げるのが目標。
それができたら同じアルゴリズムに対して効果的な機械語の吐かせ方を模索。

805 :デフォルトの名無しさん:2006/06/20(火) 19:57:19
これは酷い
IDが出ない板ならではの展開だなこれは

806 :デフォルトの名無しさん:2006/06/20(火) 20:11:21
srはもういいっていってんのがわかんねえの?
続きやりたきゃStringReplace板でも作ってそこでやれ
何回でも書くぞ

運営がIDださないのなんでなん?

807 :デフォルトの名無しさん:2006/06/20(火) 20:14:40
>>806
ID出すように設定変更するのが面倒だから

808 :デフォルトの名無しさん:2006/06/20(火) 20:25:12
質問があります。
Internet Explorer をDelphiで操作するプログラムを作りたいんですが、どのようにやったらいいでしょうか?

809 :デフォルトの名無しさん:2006/06/20(火) 20:27:55
>>808
何をしたいか書け

起動したいのならShellExecute
組み込みたいのならTWebBrowser
ActiveXつくりたいならPro版以上でウィザード起動

810 :デフォルトの名無しさん:2006/06/20(火) 20:35:01
>>808
一番簡単なのはStringReplace。
ただパフォーマンスに難ありだからあまり複雑なことには向かないかも。

811 :デフォルトの名無しさん:2006/06/20(火) 20:35:55
今日は暑いからな…

812 :デフォルトの名無しさん:2006/06/20(火) 22:05:30
へぇー、StringReplace って IE も操作できるのか、すげぇ

813 :デフォルトの名無しさん:2006/06/20(火) 22:07:28
VB使いの方がよっぽどレベル高いね

814 :デフォルトの名無しさん:2006/06/20(火) 22:07:41
Del 厨は StringReplace でなんでもできる。

815 :デフォルトの名無しさん:2006/06/20(火) 22:19:39
>>809

>>808の人は、スパムソフトを作りたいらしいよ


816 :デフォルトの名無しさん:2006/06/20(火) 22:23:55
>>814
だね。正規表現も否定してたし。

817 :デフォルトの名無しさん:2006/06/20(火) 22:27:48
>>816
だね。とにかく欠点を直視しないのが特徴。そこらへんが徹底してる。痛々しい。

818 :初心者3:2006/06/20(火) 22:37:07
>StringReplace() は初心者専用とは言える。
>スカな実装の StringReplace() を擁護したり、使用を勧めるのはアフォだけ。
>脱Delphi初心者の基準はStringReplaceを10倍高速化できるかどうかということだね。

なんでぃ!!
たいそうな御託ならべたってソースの一つも張れないじゃないか!

謝罪と賠償汁!!

819 :デフォルトの名無しさん:2006/06/20(火) 22:39:02
賠償をするのか

820 :デフォルトの名無しさん:2006/06/20(火) 22:41:05
RegExpとWSHどっちが速い?

821 :デフォルトの名無しさん:2006/06/20(火) 22:44:26
MLにあったReplaceStringとかじゃあかんの?

822 :デフォルトの名無しさん:2006/06/20(火) 22:48:56
http://fastcode.sourceforge.net/のでFAでいいだろ

823 :デフォルトの名無しさん:2006/06/20(火) 22:53:56
いまだStringReplaceな流れの中すみませんが質問
他アプリのコンポーネントのプロパティって取得したりできますか?
もしくは、他アプリのボタンが押されたタイミングでフックさせてイベントを起こしたりできるのでしょうか?
可能なのであれば実現方法等教えて頂きたいです。宜しくお願いします。

824 :デフォルトの名無しさん:2006/06/20(火) 23:04:56
>>他アプリのコンポーネントのプロパティ
他アプリが別プロセスを意味するなら一般には不可能。
マップファイルが手に入っている等ならやり方次第で可能かも。

>フック
可能。SetWindowsHookExとかそのへん。

825 :デフォルトの名無しさん:2006/06/20(火) 23:51:00
> たいそうな御託ならべたってソースの一つも張れないじゃないか!

そうだね。残念でしたね。初心者は素直に StringReplace つかっとけ。

826 :823:2006/06/21(水) 00:13:33
>>824
ありがとうございます。
調べてみたらなんかいろいろ難しそうなのでえっちらおっちらやってみます。

827 :デフォルトの名無しさん:2006/06/21(水) 00:35:29
DelphiでAjaxは使えますか?
VBには専用フレームワークもあるそうですが。

828 :デフォルトの名無しさん:2006/06/21(水) 00:45:45
コンポーネントライブラリの
TarSock ネットワーク関連コンポーネント・クラス集

これが目的にあいそうと思ったけどDLできないorz

TCP/IP で、サーバークライアント型のソフトを作り
たいと思うのですが、どこか参考になるサイト等は
ありませんか?

829 :デフォルトの名無しさん:2006/06/21(水) 00:52:37
>>827
IntraWebが吐くJSばりばりのページってAjaxの一種じゃね?

>>828
http://www.indyproject.org/Docs/Articles.htmlとか?

830 :デフォルトの名無しさん:2006/06/21(水) 01:04:42
>>829
英語サイト・・・orz

日本語でないですか?

831 :デフォルトの名無しさん:2006/06/21(水) 01:22:04
>>763
>>159からの事例で解決できないか?

832 :デフォルトの名無しさん:2006/06/21(水) 11:47:03
delphiでエレベータの制御はできますか?

833 :デフォルトの名無しさん:2006/06/21(水) 12:03:41

   ̄ ̄ ̄|/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ∧_∧       / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ( ・∀・)  ∧ ∧ < 二度と口にするなゴルァ!!
 (  ⊃ )  (゚Д゚;)  \____________
 ̄ ̄ ̄ ̄ ̄ (つ_つ__
 ̄ ̄ ̄日∇ ̄\| BIBLO |\
       ̄   =======  \

834 :デフォルトの名無しさん:2006/06/21(水) 12:40:22
シンドラー社のはVB製だろ

835 :デフォルトの名無しさん:2006/06/21(水) 13:47:14
エレベーターの制御にStringReplaceは使えますか?

836 :デフォルトの名無しさん:2006/06/21(水) 13:48:50
遅くて指定階を通り過ぎることがあってもいいなら、使える。

837 :デフォルトの名無しさん:2006/06/21(水) 16:34:44
StringReplaceまた盛り上がってきました!


838 :デフォルトの名無しさん:2006/06/21(水) 17:39:24
どこが?835と836で頭が冷えました。なんであんなに熱くなってたんだろ…

839 :デフォルトの名無しさん:2006/06/21(水) 18:15:04
NGWord: StringReplace

840 :デフォルトの名無しさん:2006/06/21(水) 18:47:47
だれかWifeReplace関数作ってください。

841 :デフォルトの名無しさん:2006/06/21(水) 18:50:02
>>834
やっぱりそうだったか

842 :デフォルトの名無しさん:2006/06/21(水) 18:53:05
StringReplaceにバグ見つけたんですが
なんだか報告して良いようなふいんきでもないですね・・・

843 :デフォルトの名無しさん:2006/06/21(水) 19:00:52
いいえ、構いません。
どうぞ報告してくださいカス。

844 :デフォルトの名無しさん:2006/06/21(水) 20:11:07
StringReplaceで
>>822
を知ることができたので大満足です。

845 :デフォルトの名無しさん:2006/06/21(水) 20:32:20
良かったね。つーか、文字列を操作するのに string なんてほとんど使わないし。

846 :デフォルトの名無しさん:2006/06/21(水) 21:47:04
>>845
そうなん?
文字列処理ルーチンばっかり使ってるんだけど、
何が良い?

847 :デフォルトの名無しさん:2006/06/21(水) 21:47:57
ポインタ使えよww

848 :デフォルトの名無しさん:2006/06/21(水) 21:49:46
別に相当シビアに速度求めなければどうでもいいし

849 :デフォルトの名無しさん:2006/06/21(水) 21:52:24
ダメ

850 :デフォルトの名無しさん:2006/06/21(水) 22:13:12
そこはらめぇ・・・

851 :デフォルトの名無しさん:2006/06/21(水) 22:20:54
MEMOのコンポーネントを使ってなのですが・・・

・プログラム中で(ボタンを押しで)、MEMOの文章を入れ替えたいのですが
 TStringListとかエラーが出て、ぜんぜんよく分からないです。。。

・MEMOのコンポーネント表示枠中だけで操作が出来るよう固定したいです。
 スクロールバーを付けて無くても、勝手に下側にスクロールしてしまって
 困っています。(本当はそのほうが便利だと思うのですが)

とっても素人な質問ですみません・・・


852 :デフォルトの名無しさん:2006/06/21(水) 22:31:24
>>822
それMBCS非対応
対応版がNiftyのMLやCodeCentralにあるけど
他にもBM法組み込んだのとか異人さんはいろいろ出してるよね

>>842
Null文字も処理したいなら関数らんとね

853 :デフォルトの名無しさん:2006/06/21(水) 22:55:21
> 別に相当シビアに速度求めなければどうでもいいし

処理するテキストのサイズと置換する数にもよるが10倍以上はやくなる場合は普通にあるよ。
チャレンジする(ググって探す)価値はある。

854 :デフォルトの名無しさん:2006/06/21(水) 23:03:00
このオッサンはいつまで初心者スレで粘るつもりなんだろうか・・・

855 :デフォルトの名無しさん:2006/06/21(水) 23:15:41
>>840

function WifeReplace(var OldWife: TWife): TWife;
begin
 dispose(OldWife);
 result := Kekkonsoudansyo.getNewWife;
end;

856 :デフォルトの名無しさん:2006/06/21(水) 23:22:10
関係ないが、ループさせてベンチ採るとCompareString(NORM_IGNORECASE)より
CompareStringを呼び出すAnsiStrLIComp使った方がちょと早い

857 :デフォルトの名無しさん:2006/06/21(水) 23:26:03
ポインタ覚えたばかりの学生だろ。

858 :デフォルトの名無しさん:2006/06/21(水) 23:50:09
>>853
そういうことはやりたい奴だけやればいいじゃん
普通に使う分には10倍程度早くなったところでどうでもいい

859 :デフォルトの名無しさん:2006/06/22(木) 00:16:37
Del 厨って不思議。.NET アプリが遅いからネイティブマンセーなのか、と思ったら
10倍遅くてもOKだってさ。

もっとも C# なら、StringReplace() より速いけどね。

860 :デフォルトの名無しさん:2006/06/22(木) 00:20:05
VB.NET で3.7倍。

861 :デフォルトの名無しさん:2006/06/22(木) 00:24:32
>>859
10msで終わる処理を1msにする必要がないんだが、
たった9ms縮めるのに労力を使うのが.NETなのかい?

862 :デフォルトの名無しさん:2006/06/22(木) 00:27:30
.NETは逆にその速度以上にするにはMSに頑張ってもらうしかないからな
自分で思い通りに書き換えられないとは可哀想で仕方がないよ

863 :デフォルトの名無しさん:2006/06/22(木) 00:58:05
1GBのテキストファイルを処理しなけりゃならないなら考えるけど、
せいぜい数百KBのテキストなら処理に一秒もかからないからなあ。

864 :デフォルトの名無しさん:2006/06/22(木) 02:20:40
stringは確かに遅い。
プロファイルとったら、文字列の操作部分だったので、
stringから、PCharにしたら、10倍速くなった。

とはいえ、よほどクリティカルな部分でもない限り、
最適化はしないと思うよ。
速度より、開発効率だからな

865 :デフォルトの名無しさん:2006/06/22(木) 02:31:25
つーか.NETで速くなった云々の例って、+演算子じゃなくStringBuilder使用してるだろ?

Delphiのstringの+は.NETのstringの+より速く
DelphiのPChar使用コードは.NETのStringBuilderより速いのに

Delphiのstringの+と.NETのStringBuilder比べてる馬鹿がいたんだ、昔。
それやってること違うじゃんと小一時間(ry

866 :デフォルトの名無しさん:2006/06/22(木) 02:43:27
どうしてDelスレ住民はこんなに釣れるかね。
ほかの言語の初心者スレに比べるとかなり荒らしが多いスレなんだから
そろそろ慣れてもいいと思うんだが

867 :デフォルトの名無しさん:2006/06/22(木) 03:07:34
>>855
dispose(OldWife);でクラッシュするみたいです

868 :デフォルトの名無しさん:2006/06/22(木) 03:24:42
Baby.Parent.mother が OldWife を参照しているのが原因です。

869 :デフォルトの名無しさん:2006/06/22(木) 04:08:36
Dispose(Me);

これで解決しますよ^^

870 :デフォルトの名無しさん:2006/06/22(木) 04:25:54
>>864
開発効率重視するのがどうしてStringReplaceなんて原始的な手段を選ぶの?
言い訳に必死杉。

VB使いがStringBuilderや正規表現を当たり前のように使えるのがそんなにうらやましいの?

871 :デフォルトの名無しさん:2006/06/22(木) 04:35:23
はいはいうらやましいです
VBはいいですねうわあびっくりだこれはすごい

872 :デフォルトの名無しさん:2006/06/22(木) 04:38:42
>>870
釘を打つのに重機持ち出してきて不満が出ない境遇(客とか)は確かに羨ましい。


873 :デフォルトの名無しさん:2006/06/22(木) 04:41:46
>>870
なんか言葉の意味すら分からなくなったようで可哀想だから説明するけど、
開発効率重視ってのは、車輪の再発明せずに既存のもので作るって話。これは「開発」速度ね。
速度重視ってのは自分で関数を作り直すってこと。インラインアセンブラで組んだり。こちらはコードの「実行」速度ね。
VBではMSに貰った関数以上のものは使えないし作れないから、そういう発想がないのかな?
まあこれでひとつ賢くなったね。良かった良かった。

874 :デフォルトの名無しさん:2006/06/22(木) 04:44:47
VB厨はそろそろ後釣り宣言を出すと思いますけど、
優しいDelphi使いさんたちは彼を笑顔で見守ってあげて下さいね^^

875 :デフォルトの名無しさん:2006/06/22(木) 04:47:25
>>873
へー。車輪の再発明をしないとStringReplace以外の選択肢がないんだ。
VCLって機能豊富なんだね。

876 :デフォルトの名無しさん:2006/06/22(木) 04:51:10
>>874
後釣り宣言は既出。にも拘らず粘ってるものだからみなかわいそうになって相手してるものと^^

877 :デフォルトの名無しさん:2006/06/22(木) 05:39:09
function WifeReplace(var OldWife: TWife): TWife;
var
i:integer;
begin
 OldWife.setISyaryou(Me.getMoney);
 dispose(OldWife);

 for i:=0 to OldWife.Kodomo.Age20 - 1 do
  OldWife.Kodomo.getYouikuhi(Me.getMoney);

 result := Kekkonsoudansyo.getNewWife;
end;


878 :デフォルトの名無しさん:2006/06/22(木) 05:45:21
>OldWife.setISyaryou(Me.getMoney);

OldWife.setIsyaryou(慰謝料)ね。

こんなものに丁寧になってもしょうがないが・・

879 :デフォルトの名無しさん:2006/06/22(木) 08:41:56
VB使いでさえ今やAjaxぐらいのことはやってるのに、Del厨は未だにWin GUIに文字列操作か。

880 :デフォルトの名無しさん:2006/06/22(木) 09:16:32
↑ブビ厨のフリするな。この基地外Del厨。

881 :デフォルトの名無しさん:2006/06/22(木) 10:29:08
まぁ、なんにしろ StringReplace() の実装が糞なことが原因なわけで、
こんなものをライブラリに入れている某もひどいが、開発効率重視とかいって
それを使っている Del ユーザは、どうかしてると思う。

882 :デフォルトの名無しさん:2006/06/22(木) 10:32:25
いまだにDel使ってる時点でどうかしてるだろ・・・

883 :デフォルトの名無しさん:2006/06/22(木) 10:40:13
ふつうVB使うよね?

884 :デフォルトの名無しさん:2006/06/22(木) 10:47:33
Delphi超初心者スレだぜここ…て
VB営業か一連のレスかw

885 :デフォルトの名無しさん:2006/06/22(木) 10:48:09
>>883が自動あぼ〜んされてて見えない

886 :デフォルトの名無しさん:2006/06/22(木) 10:48:21
まだやってるな・・・
別に誰がStringReplace使おうといいじゃんよ。初心者スレだし。
粘着うざすぎ。

887 :デフォルトの名無しさん:2006/06/22(木) 11:05:04
StringReplace は初心者専用だしね。

888 :デフォルトの名無しさん:2006/06/22(木) 11:45:51
でも、正規表現の方が柔軟性があるよ。
どうしてそれを認めようとしないの?

889 :デフォルトの名無しさん:2006/06/22(木) 11:53:55
柔軟性あるけど、単機能じゃないから、使いにくい。それだけ。

890 :デフォルトの名無しさん:2006/06/22(木) 11:57:53
正規表現を使った部分文字列の置換って、速度的にはどうなの?

891 :デフォルトの名無しさん:2006/06/22(木) 12:03:32
まぁすべてがVBに軍配が上がるし

892 :デフォルトの名無しさん:2006/06/22(木) 12:23:55
( ´,_ゝ`)プッ

893 :デフォルトの名無しさん:2006/06/22(木) 12:28:13
↑そんなに悔しかったの?w

894 :デフォルトの名無しさん:2006/06/22(木) 12:33:29
VB厨の見分け方

VB厨はコードが読めないのでスレにコードを貼り付けると急に静かになるぞ!
みんなもやってみよう。

895 :デフォルトの名無しさん:2006/06/22(木) 12:42:27
つーか粘着基地外の黙らせ方も教えてください。おながいします

896 :デフォルトの名無しさん:2006/06/22(木) 12:43:22
Delphiで、1つのプロジェクトを複数人で開発する場合の開発手法について教えてください。
ACCESS+Oracleで作成していた社内アプリをDelphiで再作成しようとしています。
ACCESSの構成は、1つのサブシステムあたり10画面+10帳票程度程度のものが4つで、各サブシステム間で画面の行き来をする必要が
発生したので、Delphiではこれらの4つのサブシステムを統合し、1つのプロジェクトにしようと思っています。
アプリケーションとしては今まで通りC/S型にしたいのですが、複数人で効率よく1つのプロジェクトを開発をするにはどのような
手法が一般的でしょうか。

897 :896:2006/06/22(木) 13:02:59
↑について、開発環境はDelphi7でWin32アプリを作成したいと思っています。

898 :デフォルトの名無しさん:2006/06/22(木) 13:04:51
つStarTeam

899 :デフォルトの名無しさん:2006/06/22(木) 13:17:26
つ WinCVS
(お金が無い場合)


900 :デフォルトの名無しさん:2006/06/22(木) 13:36:01
>>877
やっぱりdispose(OldWife);で落ちるね。エラー処理しておいた方がいいかも

try
  dispose(OldWife);
except
  dispose(Me);
finally
  kodomo.getHokenkin;
end;

901 :デフォルトの名無しさん:2006/06/22(木) 13:37:27
VB厨はDelphiでも正規表現使えるの知らないのかな?
RegExp移植されてるし、WSHも簡単に使えるんだが。


ところで64bit版にはDelphi7では対応できない?
タブへのOwnerDrawがうまくいかないんだが。

902 :デフォルトの名無しさん:2006/06/22(木) 13:39:39
VB厨はデフォルト以外に関しては考えが及ばないんだよ。ほっといてやれ。

903 :デフォルトの名無しさん:2006/06/22(木) 13:44:34
>>896
つSubversion(&ToritoiseSVN)

904 :896:2006/06/22(木) 14:18:41
レスありがとうございます。資源を一元管理するツールなんてのがあるんですね。
資源管理のためのツールを使うための勉強しなければいけないというのは大変ですが。
StarTeamというのはボーランド製なので、Delphiとの相性は抜群なんでしょうが、これ以上
お金はかけられないので、WinCVSかSubversionでいってみようと思います。
どうもありがとうございました。

905 :デフォルトの名無しさん:2006/06/22(木) 14:43:55
MEMOのコンポーネントを使ってなのですが・・・

・プログラム中で(ボタンを押しで)、MEMOの文章を入れ替えたいのですが
 TStringListとかエラーが出て、ぜんぜんよく分からないです。。。

・MEMOのコンポーネント表示枠中だけで操作が出来るよう固定したいです。
 スクロールバーを付けて無くても、勝手に下側にスクロールしてしまって
 困っています。(本当はそのほうが便利だと思うのですが)

とっても素人な質問ですみません・・・


906 :デフォルトの名無しさん:2006/06/22(木) 15:04:57
>>904みたいなのばかりだから某の事業が行き詰るんだよ。もっとお布施しろ。

907 :デフォルトの名無しさん:2006/06/22(木) 15:16:28
スレタイ読めない奴は死ね
氏ねじゃなくて死ね

908 :デフォルトの名無しさん:2006/06/22(木) 15:42:25
>>907
お前はいくらお布施したんだ。あぁ?

909 :デフォルトの名無しさん:2006/06/22(木) 16:04:34
−−−−■−−−−−■−−−−−−−−−−−−−−−−−−−−−
−−−■■−−−−−■−−−−−−−■■■■■■■■■■■■−−
−−■■−−−−−■■■■■■−−−−−−−−−−−−−■■−−
−■■−−■−−−■−−−−■−−−−−−−−−−−−■■−−−
−−■−■■−−■■■−−■■−−−−−−−−−−−■■−−−−
−−−■■−−■■−■■■■−−−−−−−−−−−■■−−−−−
−−■■−−−−−−−■■−−−−−−−−−−−■■−−−−−−
−−■−−−■−−−■■■■−−−−−−−−−−■−−−−−−−
−■■■■■■−−■■−−■■−−−−−−−−−■−−−−−−−
−−−−■−−−■■−−−−■■−−−−−−−−■−−−−−−−
−−■−■−■−−−−■■−−−−−−−−−−−■−−−−−−−
−−■−■−■−−−−−■■−−−−−−−−−−■−−−−−−−
−■■−■−■−−−−−−−−−−−−−−−−−■−−−−−−−
−■−−■−−−−■■■−−−−−−−−−−−−■−−−−−−−
−−−−■−−−−−−■■■−−−−−−−−−−■−−−−−−−
−−−−■−−−−−−−−■■−−−−−−■■■■−−−−−−−

910 :デフォルトの名無しさん:2006/06/22(木) 16:20:31
>>909

すれ違いだ

911 :デフォルトの名無しさん:2006/06/22(木) 16:22:04
>>908
覚えてるだけで100万はしたよ
あなたは?

>>905
私の知る限り現世に神はいないので、
それだけの情報で全てを解決できる人はいません
もっと詳細に書きましょう
前者はTMemo同士の文章を入れ替えるのか、
別で確保してある文字列と入れ替えるのか分かりません。
後者は困ってることが分かっただけで何をしたいのか分かりません。

912 :デフォルトの名無しさん:2006/06/22(木) 16:30:37
スレタイ読めない奴は死ね
氏ねじゃなくて死ね


913 :デフォルトの名無しさん:2006/06/22(木) 16:33:00
↑ こんな書き込みするやつが100万お布施するような会社だから、事業が行き詰るんだよ。

914 :デフォルトの名無しさん:2006/06/22(木) 16:55:57
荒らしの書き込みをStringReplace()で消し去ることはできますか?

915 :デフォルトの名無しさん:2006/06/22(木) 17:02:51
今日もやることがなくひたすら初心者スレを荒らし続ける孤独なBorland信者のオッサンサミシス

916 :デフォルトの名無しさん:2006/06/22(木) 17:04:15
今日もやることがなくひたすら初心者スレを荒らし続ける孤独な元VB厨のオッサンサミシス

917 :デフォルトの名無しさん:2006/06/22(木) 17:18:31
>>905
Memo1.Lines.Text = 入れ替えたい文章

TMemoのスクロールバーを表示しないようにするのか?
それならMemo1.ScrollBars := ssNone

918 :905:2006/06/22(木) 17:19:08
すみません、説明不足でしたか・・・

2つの質問は共にMEMOコンポーネントを使った事なのですが

・ボタンを押す事によって、MEMOのLinesに書かれてる文章を
 プログラムコードに事前に書いておいた文章に差し替えたいです。

 Editだと、Edit.Text := '入換えたいよ〜'と掛けるのですが
 Memoだと、Memo.Lines := ?????なのです・・・

 Memoコンポーネントを複数貼っておいて
 その中身同士をコピーもしくはMemoその物を見せたり消したり
 と言うのを思いついたのですが、たぶん良くない方法だと思いましたし
 ここで賢人に教えて頂ければ、Delphiのプログラミングを始め色々壁に当たってる事にも
 一人で悶々としてる状態から、新しい見方・考え方で突破できるかと思い
 ここに書きました。

・もう一つは、サイズを決めておいたMemoコンポーネントの中だけで
 入力を受付け制限をしたいです。

 WordWrapを設定すると、右側(行方向の文字数)は制限できるのですが
 下側(列方向)は、ScrollBarsをssNoneに設定しておいても
 文字入力がどんどんあればいくらでも改行して
 どんどん下側にスクロールしてしまいます。

>>1に書かれていた超低レベルなのですが
すみませんがやさしく教えて下さい。
お願いいたします。

919 :905:2006/06/22(木) 17:25:38
>>917
レスありがとうございます!
長文を書いている間で気がつきませんでした。

〜nes. "Text" が抜けてたのですね。
さっそくやってみました、行けました!
改行も '+ #13'を足してクリアーできました。

もう一つの質問ですが、スクロールバーの表示を消したいだけじゃなくて
用意しておいたMemoコンポーネントの四角内だけで文字入力を制限したいです。

920 :デフォルトの名無しさん:2006/06/22(木) 17:30:27
>>918
OnKeyPress内で行数調べて、超えてるようならReturnの入力を無効にする

921 :905:2006/06/22(木) 17:35:59
>>920
ありがとうございます
なるほど方法は理解できました!

でも行数を調べる方法が分からないのと
コピペの時はダメっぽい方法ですよね。。。
ゴメンなさい、もう少しヒントをくださいませ・・・

922 :デフォルトの名無しさん:2006/06/22(木) 17:43:03
ttp://www.jnishida.com/faq/archives/2001/12/del0031.htm

923 :デフォルトの名無しさん:2006/06/22(木) 18:02:49
memo1.Lines.Count

924 :デフォルトの名無しさん:2006/06/22(木) 18:31:07
>>750の探した位置の保持て、Array of Integer で適時SetLengthするか
TListかCardinalListみたいなもの使うのんですか?

925 :デフォルトの名無しさん:2006/06/22(木) 19:28:17
TMemoのonChangeで指定行数以降を削除するとか。

ってonChangeはあったかのぉ

926 :デフォルトの名無しさん:2006/06/22(木) 19:47:47
まさにStringReplaceの出番だな。

927 :デフォルトの名無しさん:2006/06/22(木) 19:55:57
残念ながら無い

928 :デフォルトの名無しさん:2006/06/22(木) 19:59:03
なにが?

929 :デフォルトの名無しさん:2006/06/22(木) 19:59:24
>用意しておいたMemoコンポーネントの四角内だけで文字入力を制限したいです。

難しそう。最後の行での改行入力、途中行での削除、挿入、矢印キー、、、、一つ一つ
つぶしていくのは大変。ま、初心者なら無理。


930 :デフォルトの名無しさん:2006/06/22(木) 20:38:57
そんなつまんないレスしかできないなんて初心者以下ですね^^;

931 :デフォルトの名無しさん:2006/06/22(木) 20:44:03
面白い事を言うスレじゃないし

932 :デフォルトの名無しさん:2006/06/22(木) 20:47:08
いや、つまらないかもしれんが、それが現実。上級者なら、そもそもそんな仕様を
思いつかない。初級者は限界を知らないから、ものすごいことを考えるものだな。

933 :デフォルトの名無しさん:2006/06/22(木) 21:01:28
なんだかんだ言って雑談するの好きなのな

934 :デフォルトの名無しさん:2006/06/22(木) 21:29:34
自称上級者のミジンコが初心者を見下して楽しむスレですよ

935 :デフォルトの名無しさん:2006/06/22(木) 22:11:45
Delphi5を友達にすすめられたんだけど…

「プロジェクトを開く」をするとUnit1だけはソースのタブが出るけど、その他のUnitのタブは「表示→ユニットの表示」をしないと開かれません…
これって、プロジェクトを開けばプロジェクトに追加しているすべてのUnitが自動でひらかれるように設定できませんか?

936 :デフォルトの名無しさん:2006/06/22(木) 22:17:17
> 自称上級者のミジンコが初心者を見下して楽しむスレですよ

そんなこというなら、>>918 の二番目の回答を書いたらどうだ?
最低だなおまえら。

937 :デフォルトの名無しさん:2006/06/22(木) 22:25:42
Javaみたいにソースでコンポーネントを宣言して配列にしたりとかできますか?

938 :925:2006/06/22(木) 22:49:40
onChange利用してみましたよぉ

procedure TForm1.Memo1Change(Sender: TObject);
const
MaxRows = 10;
begin
with Memo1.Lines do
if Count > MaxRows then begin
BeginUpdate;
while (Count > MaxRows) do
Memo1.Lines.Delete(MaxRows);
EndUpdate;
end;
end;

テストしてて気づいた
・数百行のテキストをコピペするとうっとまる
・指定行数+1までカーソルが動いてしまう(入力は不可)

指定行以降削除なんて非効率で間違いでしたすいません

939 :925:2006/06/22(木) 22:52:49
あーインデント消えてもうた
まぁ使い物にならんソースなので別にいいだろう

940 :デフォルトの名無しさん:2006/06/22(木) 22:58:12
>>936
じゃあお前が書いてやれよ

941 :デフォルトの名無しさん:2006/06/22(木) 23:00:49
なんでこうPCに詳しいやつって陰険なのが多いんだ?

942 :936:2006/06/22(木) 23:01:00
>>940
俺はお前ら神の如き上級者に見下されてるただの超初心者だからな。

943 :デフォルトの名無しさん:2006/06/22(木) 23:09:15
・オブジェクトの配列を作ることは出来る
・でもnew[]のように1回で全要素のコンストラクタを呼ぶことが出来ない。(delete[]も同じ)
 一つ一つCreateするしかない。

944 :デフォルトの名無しさん:2006/06/22(木) 23:11:11
>941
逆。陰険だからこそPCに依存するようになったの。

945 :デフォルトの名無しさん:2006/06/22(木) 23:13:32
と陰険なミジンコが申しております

946 :デフォルトの名無しさん:2006/06/22(木) 23:24:01
本当に気になるところ全部直したいなら、
TMemo(つーかEDITコントロール)弄り回すよか、エディタコンポ見繕ってきて改造するべきだろうなあ、と思いつつも

>>938
一旦TStringListにでも移して処理したら軽くなるんじゃね?

947 :デフォルトの名無しさん:2006/06/22(木) 23:24:32
正規表現ならPerlが一番いいね。

948 :デフォルトの名無しさん:2006/06/22(木) 23:26:17
>>943
なるほど方法はあるわけですか
ソースファイルにコンポーネントの情報を格納しているようなところが見当たらないんですけど
別にファイルにあるんですかね?

949 :デフォルトの名無しさん:2006/06/22(木) 23:29:27
>>948
言ってることがよーわからんがデザイナで設定した内容のことなら
.dfmをエディタで開くとわかるかも

950 :デフォルトの名無しさん:2006/06/22(木) 23:39:30
>>949
おお!本当だ
ありがとうございました

951 :デフォルトの名無しさん:2006/06/22(木) 23:47:07
こんばんは。1つ質問があります。
「1÷2=0.5」のような割り算をさせる方法を教えてください。

最初y,s,wをreal型に指定したあと、
y := strtofloat(edit1.text);
s := strtofloat(edit2.text);
w := y div s;
としたところ、「div演算子は使えません」とエラーになってしまいます。

「1÷2=0.5」のような割り算をさせる場合、どのような記載をすればいいのでしょうか?
よろしくお願いします。

952 :デフォルトの名無しさん:2006/06/22(木) 23:50:04
>>951
div …… 整数の割り算(対応する余りは mod )
/  …… 実数の割り算(結果は小数なので余りの概念なし)

953 :951:2006/06/22(木) 23:56:11
>>952 どうもありがとうございます!
割り算もできないようじゃ先は長いな・・・(´ー`;)

954 :デフォルトの名無しさん:2006/06/22(木) 23:59:11
StringReplaceさえ使えれば大丈夫

955 :デフォルトの名無しさん:2006/06/23(金) 00:06:55
いい加減StringReplaceウザイ

956 :デフォルトの名無しさん:2006/06/23(金) 00:08:58
NGWordに入れとけ>StringReplace

957 :デフォルトの名無しさん:2006/06/23(金) 00:48:36
3つもあぼーん続いてるが何があったんだ

958 :デフォルトの名無しさん:2006/06/23(金) 00:55:48
↑あぼーんして、そこ気にしてる馬鹿

959 :デフォルトの名無しさん:2006/06/23(金) 01:23:40
StringReplaceが遅い事がなぜVB厨の琴線に触れたのか、私には理解できない。

960 :デフォルトの名無しさん:2006/06/23(金) 01:28:01
↑デル厨のフリするな。この基地外VB厨。


961 :デフォルトの名無しさん:2006/06/23(金) 01:38:21
のついでにデル厨とVB厨も指定しとけ

962 :デフォルトの名無しさん:2006/06/23(金) 01:53:01
>>958が見えない><

963 :デフォルトの名無しさん:2006/06/23(金) 01:54:54
お前ら低レベル過ぎてワロタw
デル厨もVB厨も頭の中が平和で羨ましいよww
外に出てこられると迷惑なんで一生ここで罵り合ってて下さいwwwwwww

964 :デフォルトの名無しさん:2006/06/23(金) 02:07:18
あのさあ、BDSスレの流れを初心者スレにもちこまんでくれんかな?

965 :デフォルトの名無しさん:2006/06/23(金) 09:09:54
>919
>用意しておいたMemoコンポーネントの四角内だけで文字入力を制限したいです。

入力する文字数を制限するのはどうですか?
以下の記事が参考になるんじゃないでしょうか。

プログラミングの覚え書き: [Delphi] Memoで座標から文字位置へ変換する
http://kwi.cocolog-nifty.com/blog/2005/12/delphi_memo_22e5.html

966 :デフォルトの名無しさん:2006/06/23(金) 10:22:47
>入力する文字数を制限するのはどうですか?

これじゃ、全然だめだろ。一行に1文字だけの場合もあるし、100文字の場合もあるし。
改行を考えれば破綻する。

967 :デフォルトの名無しさん:2006/06/23(金) 10:52:21
922 じゃ駄目なのか?

968 :デフォルトの名無しさん:2006/06/23(金) 10:57:46
StringReplaceじゃ駄目なのか?

969 :デフォルトの名無しさん:2006/06/23(金) 19:36:45
いい加減StringReplaceウザイ

970 :デフォルトの名無しさん:2006/06/23(金) 19:40:04
NGWordに入れとけ>StringReplace

971 :デフォルトの名無しさん:2006/06/23(金) 19:43:38
3つもあぼーん続いてるが何があったんだ

972 :デフォルトの名無しさん:2006/06/23(金) 19:44:09
            ____
         __,,/  _, ----`ヽ  :.
     :.  / _     ___   、\
       / /   i      \   \\ :.
     :. ,'./       i  ヽ:.   ヽ:.:.. ヽ.ヽ
      ,'/    / .ハ ヽ ヽ:.:.:.:. ヽ::.. ヽヽ :.
     :. |i .i i  .i /  ヽ ト 、 \、:.:.:. ',:.',:.:.lヽ}
       |i .i l  :N_, -弋 \弌弋ナ:}:.:}
    :. |i∧ ', :{ ,ィjモト \  イjミトイイV :.  な…
       .|  :メヽ.', `ozZ}      izN。ハ::{     なんなんですか?
      :. |  :ヾ_! ゝ "゙゙    '  `゙ ハ.:', :.   ここ、どこですか?
      |  :.:_イ .:.ヽ.   (二フ , イ :.:.:!:.ヽ     なんで壁にお尻付けると
   :.  / rィイ | :.:.ヽ: >r/`<ノ .:.::.}ヽ、\:.   前屈出来なくなるんですか?
      / ∧l;l ! :.:.:.://{二 ̄ .} ..:..::リ//ハ.:\
 :.  / .{. ',ヾ、ヽi .:.:.{ /(^`  |.:.:.:.//: : :.}: . ヽ.:.
   / /  ) ヽ ヾ、ヽ:.ハ ヤ{   ∧/.-‐'": : |:.:. i ',
  ./ .,イ .:..} : :\ヾレ'ハ ∧__ノノハヾ、  : : : l:.:.: .ハ ',
  { /| .:.:ハ : : :i Y {ヾ`Yヽニン'ノ}: : } : : : :/:.:.:/ }:.}
  V | .:.:/:.:|_,ィ' ̄  ヽ三{ `ー-ノ : イ : : :/:.:i.:{  リ
    ヽ:.:{、.:.V     : : ヘ     : : {: : :/:.::∧|
     ヽ! )人    : : :人      : : : / \! :.
      "  ヽ : : : : :/イ{     :.ノ: : : :.\ :.
       :.  \__///: :\______/: : : : : : : ヽ
           / //: : :|;|: : : : : : i: : : __: : : : ',
       :.     / 、 {;{   |;|   . : i/. : : : : : :|
          / `Y;{. . . .|;|. : : : /i: : : : : : : : :l

973 :デフォルトの名無しさん:2006/06/23(金) 19:48:07
↑あぼーんして、そこ気にしてる馬鹿

974 :デフォルトの名無しさん:2006/06/23(金) 21:00:28
    /    ヽ
    i' i'⌒`i `i\
    i  i   i i  \
    i  i   i j\  \
    i  i   i i  \  \
    i  ヽ  ヾ   \ ,. \
    .i   \  \   \  \
    i    \  ヽ   \  (`) _______,.,.、
    i     /,.,.,.,.,jk ,._  / _/ ̄|::::::| (二二二) )
    /     i i i i i  ̄i `)=[ll|ヾ,.,.,|::::::| (二二二) )
    i  ノi   ̄i ̄) ̄ ̄ ∪000:::.l::::::|;;;;(;;;;;;;;;;;;;;;;);)
    i       i ̄         ̄ ̄ ̄ ̄ ̄ ̄ ̄
    ヽ、    i
     |     i
     i     i
     i     i

975 :デフォルトの名無しさん:2006/06/23(金) 21:58:48
ジーコ「Delphiが売れないのは電通のせい」

976 :デフォルトの名無しさん:2006/06/23(金) 21:59:43
あげ

977 :デフォルトの名無しさん:2006/06/23(金) 22:08:49
ジーコ「Del厨に一番足りないのはプロフェッショナリズム。
プログラマは自分の欠点を知らなくてはいけないし、それは日常のなかでも、会社のなかでも同じことだ。
業務で開発しているプログラマは数人で、全員が仕事を持っているわけではない。
自分の会社で、実務をこなし続ける必要がある。」

978 :デフォルトの名無しさん:2006/06/23(金) 23:00:07
すぐ荒らしか。分かり易すぎる。

979 :デフォルトの名無しさん:2006/06/24(土) 04:32:49
次スレもう要らないよね?

980 :デフォルトの名無しさん:2006/06/24(土) 08:51:35
むしろ荒らし隔離用が2スレあってもこれだけもれてくるんだから
20スレくらい次スレ作ったほうがいいんじゃないか

981 :デフォルトの名無しさん:2006/06/24(土) 14:01:43
てか荒らししかいないんだから、このすれいらない

982 :デフォルトの名無しさん:2006/06/24(土) 15:41:11
もうDelphiっていらないよね!

983 :デフォルトの名無しさん:2006/06/24(土) 15:50:50
Delphi使いにお勧め。無料だよ!
http://msdn.microsoft.com/vstudio/express/vb/

984 :デフォルトの名無しさん:2006/06/24(土) 15:53:49
勧めるならC#の方にしなさい。

985 :デフォルトの名無しさん:2006/06/24(土) 15:56:41
あ、でもDel使いのほとんどは C# にはもう行っちゃてるでしょ。
いまから VB.NET はないだろな・・・

986 :デフォルトの名無しさん:2006/06/24(土) 16:58:02
Delphi初心者スレで
他言語の営業
最低だ・・・

987 :デフォルトの名無しさん:2006/06/24(土) 17:34:26
>>986
Del厨が他スレでよくやってたことだよ

988 :デフォルトの名無しさん:2006/06/24(土) 17:42:08
Del厨って言動がチョンみたい

989 :デフォルトの名無しさん:2006/06/24(土) 17:42:44
989

990 :デフォルトの名無しさん:2006/06/24(土) 17:43:18
990

991 :デフォルトの名無しさん:2006/06/24(土) 17:43:49
991

992 :デフォルトの名無しさん:2006/06/24(土) 17:45:31
992

993 :デフォルトの名無しさん:2006/06/24(土) 17:46:35
993

994 :デフォルトの名無しさん:2006/06/24(土) 17:47:09
994

995 :デフォルトの名無しさん:2006/06/24(土) 17:47:46
995

996 :デフォルトの名無しさん:2006/06/24(土) 17:48:21
996

997 :デフォルトの名無しさん:2006/06/24(土) 17:49:22
997

998 :デフォルトの名無しさん:2006/06/24(土) 17:50:09
Del厨って何で初心者スレ荒らすの?
信じられない。

999 :デフォルトの名無しさん:2006/06/24(土) 17:51:10
次スレは要らない

1000 :デフォルトの名無しさん:2006/06/24(土) 17:55:06
1000も要らない

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

229 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)