くだすれDelphi(超初心者用)その40
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2007/03/02(金) 23:06:07他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を
勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが
お礼はDelphiの布教と初心者の救済をお願いします。
<前スレ>
くだすれDelphi(超初心者用)その39
http://pc10.2ch.net/test/read.cgi/tech/1169386914/
<過去スレ>
DelWiki避難所
http://delwiki.info/?Delphi+%B4%D8%CF%A2%A4%CE%B2%E1%B5%EE%A5%B9%A5%EC%A5%C3%A5%C9
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/
32:http://pc8.2ch.net/test/read.cgi/tech/1145267913/
33:http://pc8.2ch.net/test/read.cgi/tech/1148378877/
34:http://pc8.2ch.net/test/read.cgi/tech/1151143010/
35:http://pc8.2ch.net/test/read.cgi/tech/1155263138/
36:http://pc8.2ch.net/test/read.cgi/tech/1159485364/
37:http://pc8.2ch.net/test/read.cgi/tech/1162458229/
39:http://pc10.2ch.net/test/read.cgi/tech/1169386914/
0002デフォルトの名無しさん
2007/03/02(金) 23:07:50※Delphiに関係してる雑談および関係してない雑談については以下でどうぞ
バカボンのDelphi不買・販促・その他談話室その29
http://pc8.2ch.net/test/read.cgi/tech/1153227982/
Delphi初心者のための寺子屋
http://pc8.2ch.net/test/read.cgi/tech/1132756268/
【Delphi】 Indyコンポーネント 【C++Builder】
http://pc8.2ch.net/test/read.cgi/tech/1093654251/
【Delphi】 ゲームつくるぞ(゚Д゚)ゴルァ 2【Delphi】 (※ゲーム制作技術板)
http://pc8.2ch.net/test/read.cgi/gamedev/1097836469/
※ほかにもスレッドあります。
<その他>
BorlandHomePage
http://www.borland.com/jp/
DelWiki避難所
http://delwiki.info/
BDN(BorlandDeveloperNetwork)
http://dn.codegear.com/jp/delphi
0003デフォルトの名無しさん
2007/03/03(土) 00:02:32化けてしまっているようで、正しい日本語にならないのです。
サイトのエンコードはUTF8で、このソースをSJISにしたいのですが、どういう処理をすると変換できるのでしょうか。
0004デフォルトの名無しさん
2007/03/03(土) 19:53:020005デフォルトの名無しさん
2007/03/04(日) 12:42:080006デフォルトの名無しさん
2007/03/04(日) 21:33:03たくさんある。手伝ってくれ。
0007デフォルトの名無しさん
2007/03/04(日) 21:51:01〜を作ってソースうpしろみたいな。
DBはFirebirdを指定してくれるとありがたい。
0008デフォルトの名無しさん
2007/03/04(日) 23:04:410009デフォルトの名無しさん
2007/03/05(月) 00:04:390010デフォルトの名無しさん
2007/03/05(月) 01:21:260011デフォルトの名無しさん
2007/03/05(月) 07:57:20ttp://beeography.wordpress.com/2006/09/12/just-wanna-let-you-know/
ここに書いてある方法でTurbo Exprorerでも合法にコンポ入れれるよ
117 名前:デフォルトの名無しさん[sage] 投稿日:2006/11/04(土) 18:02:21
あとこれ。
dclusr経由のコンポーネントインストールが、ライセンス違反かどうかの話。
ttp://hpcgi1.nifty.com/MADIA/DelphiBBS/wwwlng.cgi?print+200609/06090014.txt
0012デフォルトの名無しさん
2007/03/05(月) 13:36:45せっかく好意で無償公開してくれているのに
会社の利益を損なうような非常識なレスは慎んでください。
0013デフォルトの名無しさん
2007/03/05(月) 18:52:57言ってるのは、どうかしてる。ユーザの反感を煽るためのアンチ活動としか思えんな。
0014デフォルトの名無しさん
2007/03/05(月) 19:49:14>>11のリンク先に書かれている内容を最低でも256回読んでこい。
どこに「会社の利益を損なう」ことがある?
少なくともリンク先ではライセンスに関して真摯に討論されているし、
>>11を書いた人だって会社の利益を損なうことを意図してレスしたわけではないだろう。
一つめのリンクは呼び水で、二つめのリンクは事の是非を問うためのやりとりでしょう。
リンク先を読まずにレスの表面だけなぞればそのようにとる人が現れても仕方がないかもしれないが。
0015デフォルトの名無しさん
2007/03/05(月) 21:58:170016デフォルトの名無しさん
2007/03/05(月) 23:16:49VistaっぽいVCLが追加になった以外、BDS2006と大した違いがなさそうね。
まあ、GUIだけ変えて毎年3万取る弥生会計よりは遙かに良心的だけど。
0017デフォルトの名無しさん
2007/03/06(火) 01:27:010018sage
2007/03/06(火) 03:19:42delphiはじめてまだ数週間の漏れは今壁にぶつかってる。
TListBoxでアイテムが選択されたときに起きるイベントハンドラを書くには
どーしたらいいんだ。いや、いいんでしょうか・・。
説明難しいから例をだすと、
TListBOXのアイテムが選択された→Button1をEnableに。
こんな感じでやりたいんだ。
0019デフォルトの名無しさん
2007/03/06(火) 04:13:060020デフォルトの名無しさん
2007/03/06(火) 08:16:580021デフォルトの名無しさん
2007/03/06(火) 15:05:48'',Pchar('C:\'),SW_SHOWDEFAULT);
上記のように書いてnantoka.exeを実行させています。
ただ、実行させるexeによっては、
「ファイル○○がありません」「○○が見つかりません」とか出ます。
(ただ、エクスプローラからダブルクリックで起動させる際には
エラーは出ず、正常に動作します)
多分、引数を与えればいいと考えてるんですけど
教えていただきたいです。
0022デフォルトの名無しさん
2007/03/06(火) 18:43:360023デフォルトの名無しさん
2007/03/07(水) 05:04:27助けてください。。
起動時にアドレスの読み込み違反がどーのこーのってでるんだが…。
FormCreateの部分が問題なのかね?
自動作成フォームの順番とか、なにを参考に変えたらいいんだろうか…。
まじで泥沼なんです。どなたかご教授を。。
0024デフォルトの名無しさん
2007/03/07(水) 05:04:57たいてい配列。
以上。
0025デフォルトの名無しさん
2007/03/07(水) 07:47:34たいてい作成されていないフォームのオブジェクトを参照したときの問題。
以上
0026デフォルトの名無しさん
2007/03/07(水) 07:50:57win32に、WCaption: WideString みたいなメンバを追加して
さらにくそでかく遅いバイナリしか生成できなくする。
これなら.netでいいや、ってなりwin32死滅。
0027デフォルトの名無しさん
2007/03/07(水) 09:48:42くだすれDelphi(超初心者用)その39
http://pc11.2ch.net/test/read.cgi/tech/1169386914/l50
>>23
デバッグ機能を使って1行ずつ実行しましょう.
・FormCreateが怪しいかもとのことなのでここの最初の行(ただし青丸がつくところ)にブレークポイントを置く(F5)
・普通に実行(F9)
・ブレークポイントでプログラムが停止したら1行ずつ実行(F8)してエラーの出る行を見つけます.
ブレークポイントやステップ実行を使うこと自体は非常に簡単ですので使ってみてください.
00291
2007/03/07(水) 13:39:440030デフォルトの名無しさん
2007/03/07(水) 14:09:150031デフォルトの名無しさん
2007/03/07(水) 14:35:350032デフォルトの名無しさん
2007/03/07(水) 14:47:5400331
2007/03/09(金) 01:52:140034デフォルトの名無しさん
2007/03/10(土) 03:18:56最近はまった例。
TEditのonchangeで別のコンポーネントのプロパティを書き換えるコードを書いたら
起動時に書き換え対象コンポーネントが生成される前にonchangeイベントが発生した。
値を変更していないのに起動時にTEditのonchangeが発生するのはなぜだろう。
0035デフォルトの名無しさん
2007/03/10(土) 04:49:53↓
設計時のテキスト(デフォルトかもしれないが)が設定される
↓
OnChange イベントが起こる
なんの不思議もないと思うが
0036デフォルトの名無しさん
2007/03/10(土) 16:48:04最初ははまるよな
生成時に onchange イベントが発生する
生成時だけイベントをスルーさせる事
0037デフォルトの名無しさん
2007/03/10(土) 22:15:50OnDataイベントで、 Item.SubStr.Text:='AAA'#13#10'BBB';
一体何が気に入らなくてこういう現象に。
0038デフォルトの名無しさん
2007/03/12(月) 21:49:04BDEを使ってる自作ソフトが一つも起動できない。
データベース自体よくわからずにサンプルと上手作ったやつ。
どすればいいですか?
0039デフォルトの名無しさん
2007/03/12(月) 21:51:300040デフォルトの名無しさん
2007/03/12(月) 21:53:430041デフォルトの名無しさん
2007/03/12(月) 21:56:14> データベース自体よくわからずにサンプルと上手作ったやつ。
ってなにを書いてる?>おいら
サンプルとか見てつくったやつ
0042デフォルトの名無しさん
2007/03/12(月) 22:17:430043デフォルトの名無しさん
2007/03/12(月) 22:22:520044デフォルトの名無しさん
2007/03/12(月) 22:26:09BDE+パラドックスなんだけどソースとかそのままでいけるの?
0045デフォルトの名無しさん
2007/03/12(月) 22:27:400046デフォルトの名無しさん
2007/03/12(月) 22:30:21APIって必須?ややこ杉
0047デフォルトの名無しさん
2007/03/12(月) 22:30:50Access violation at address 004E2773 in module 'xx.exe'. Read of address 00000000.
やっぱだめ
0048デフォルトの名無しさん
2007/03/12(月) 22:32:06フリーのコンポがいっぱいある。
ターボでインストールできないなら、コンポのソースコピペするといい。
コピペも勉強。
0049デフォルトの名無しさん
2007/03/12(月) 22:39:32TrayIconとかそんな名前で探してみれば?
0050デフォルトの名無しさん
2007/03/12(月) 23:07:38あくせすばいおれーしょんはタダのバグだった。
これで寝れます。
お騒がせしますた。
0051デフォルトの名無しさん
2007/03/12(月) 23:54:590052デフォルトの名無しさん
2007/03/13(火) 00:20:04くだスレで何を・・・
0053デフォルトの名無しさん
2007/03/13(火) 00:48:240054デフォルトの名無しさん
2007/03/13(火) 02:00:350055デフォルトの名無しさん
2007/03/13(火) 07:13:27// ----- ここから ------
487 :デフォルトの名無しさん :2006/07/22(土) 23:46:26
Tlistのデータをファイルに出力したり、
そのファイルを読み込んでTlistを構築したりって
ことがしたいんですけど、どうやったらいいですか?
いろいろ調べたけど、わからなかった。
スレタイとおりの超初心者なんです。
教えてください。(あま〜いとか言わないでw)
MyList : TList;
New(ARecord);
ARecord^.name := FileRec.Name ;
ARecord^.Time := FileRec.Time;
MyList.Add(ARecord);
みたいににして作ったMyListをファイル出力。
また、そのファイルから後日再度MyListを構築したいんです。
---- つづく -----
0056デフォルトの名無しさん
2007/03/13(火) 07:14:39516 :ななしへたぐらま ◆XcB18Bks.Y :2006/07/24(月) 23:27:37
>>487
たとえばこんな感じで書き出せます.
procedure TForm1.SaveList;
var
fs: TFileStream;
i: integer;
begin
fs := TFileStream.Create(ListFileName, fmCreate);
try
for i := 0 to pred(FList.Count) do
fs.Write(PFileRec(FList[i])^, sizeof(TFileRec));
finally
fs.Free;
end;
end;
ただし,文字列は短い文字列かヌルで終わる文字列に格納しなければなりません.
TNantoka = packed record // ファイルに保存する場合は必ずpacked recoed
Name: shortstring; // 短い文字列.この場合256バイト使う.最大255バイト格納可能.
Time: TDateTime;
end;
// ----- ここまで ------
これって、書き出しはこれでいいとして、ファイルから読み込んでリストに展開するにはどうやればいいです?
0057デフォルトの名無しさん
2007/03/13(火) 07:20:57大きなリスト作っておいて、読みながらサイズが足りなければサイズを増やしてゆくか
0058デフォルトの名無しさん
2007/03/13(火) 07:24:590059デフォルトの名無しさん
2007/03/13(火) 07:25:580060前スレより持ち越し
2007/03/13(火) 07:36:42(Rangeに値を入れても無視される件について)
986 :デフォルトの名無しさん :2007/03/12(月) 19:17:42
アセンブラ版
function MyRand(Range:DWORD):DWORD;
asm
IMUL EDX,Seed,08088405H
Add EDX,1
MOV Seed,EDX
MUL EDX
MOV EAX,EDX
end;
0061デフォルトの名無しさん
2007/03/13(火) 07:37:38書き込み
var
fs: TFileStream;
i,siz: integer;
begin
fs := TFileStream.Create(ListFileName, fmCreate);
siz := FList.Count;
fs.Write(siz,sizeof(siz));
//あと同じ
これを逆に読めばいいけど、実体を入れる場所が必要だから、動的配列
var databuf:array of TNantoka; を関数の外に用意して
fs.Read(siz,sizeof(siz)); して
SetLength(databuf,siz);とサイズを指定
fs.Read(databuf[0],sizeof(databuf[0])*siz); で全部読んでおいて
後はひとつづつTListにポインタを割り当ててゆけばいいから
FList.Count:=siz;
for i := 0 to siz-1 do FList[i]=@databuf[i];
0062デフォルトの名無しさん
2007/03/13(火) 07:43:22フォーム新規作成後、メモとボタンを貼り付けて
ボタンをダブルクリック、 で、出た3行を以下と置き換えたら、普通に動いたよ
procedure TForm1.Button1Click(Sender: TObject);
var Seed:DWORD;
function MyRand(Range:DWORD):DWORD;
asm
IMUL EDX,Seed,08088405H
Add EDX,1
MOV Seed,EDX
MUL EDX
MOV EAX,EDX
end;
var
I: Integer;
begin
Seed:=Round(Now);
for I := 0 to 100 - 1 do
Memo1.Lines.Add(Format('%5d',[MyRand(100)] ));
end;
0063デフォルトの名無しさん
2007/03/13(火) 07:44:32あー、そうか。
どうもありがとう!
0064デフォルトの名無しさん
2007/03/13(火) 07:53:35function MyRand(Range:DWORD):DWORD; Rangeは レジスタEAXで渡される
asm
IMUL EDX,Seed,08088405H EDXにSeed*Seed,08088405H の下位32bitが入る
Add EDX,1 EDX:=EDX+1
MOV Seed,EDX Seed:=EDX
MUL EDX EAXに EDX*EAXの下位32bitの結果が EDXにEAX*EDXの上位32bitが
MOV EAX,EDX EAX:=EDX; 同時に Result:=EAX
end;
もしかして、アセンブラ関数じゃなく、インラインアセンブラにしてない?
つまり begin 〜 end 中に書いてない?
そうすると、変な事になっちゃうよ
0065デフォルトの名無しさん
2007/03/13(火) 07:58:18漏れも普通に動いたけど?
くだすれDelphi(超初心者用)その39
http://pc11.2ch.net/test/read.cgi/tech/1169386914/983
みたいにしたら、Random関数と同じ値だった。
0066デフォルトの名無しさん
2007/03/13(火) 08:11:03なにかが抜けてたらしい。
あんがと♥
0067デフォルトの名無しさん
2007/03/13(火) 09:27:490068デフォルトの名無しさん
2007/03/13(火) 09:43:350069デフォルトの名無しさん
2007/03/13(火) 12:32:56TCanvasの上に今回・前回・前々回分のデータを
レーダーチャート(星型のようなもの)で出力する物を作っているのですが
1つのチャートの上に出力した時に今回前回で値が同じになってしまっているような場合
線が重なってしまって最後に描写した線しか表示できません。
これでは他の値が出力されているのかどうかが判別できないため
何か判別ができるようになる良い方法はないものでしょうか。
私が考えたのが前回・前々回分の枠の内側に
それぞれ右斜線・左斜線の模様のようなものを描写し
重なっている部分は交差して表示するようにすれば
判別できるのではないかと思ったのですが、
どう実装すれば良いかが思いつきません
拙い質問ではありますが、諸兄の知恵を拝借できればと思います
以上、宜しくお願いします。
0070デフォルトの名無しさん
2007/03/13(火) 13:14:15座標が重なっていたら別の色で表示するとか
0071デフォルトの名無しさん
2007/03/14(水) 00:07:37その内容をTButtonやTMemoに反映するには、どうすればいいですか?
内容をすべて読み込むまでは自力でできました。
そこからオブジェクトに反映するには、どうすればいいのやら・・・
未定義うんぬん出てきてよくわからない。
implementで定義するのでしょうか?
0072デフォルトの名無しさん
2007/03/14(水) 00:29:14TButton.Caption に代入。
0073デフォルトの名無しさん
2007/03/14(水) 10:20:53起動時に以下のTextloadを実行させてるんですけど
ここからButton1(TButton)やMemo1(Tmemo)に
値を渡す方法がわかりません。
ボタンとかは押さずに(何もアクションなしに)値を反映させたいんです。
implementation
var
Text: String;
procedure Textload;
var
FileName,s: String;
LoadLine: TStringlist;
ltf: TextFile;
begin
FileName := 'text1.txt';
AssignFile( ltf, FileName );
Reset( ltf );
while not Eof( ltf ) do
begin
Readln( ltf, LoadLine );
Text := Text + LoadLine + #13#10;
end;
CloseFile( ltf );
end;
end;
0074デフォルトの名無しさん
2007/03/14(水) 10:29:59フォームをダブルクリックして そこに
Memo1.Lines.Text:=Text;
と書けばいいと思うよ
0075デフォルトの名無しさん
2007/03/14(水) 10:31:50Memoに追加したいならMemo1.Lines.Add(文字列)
ボタンに表示したいならButton1.Caption:=文字列
とか
0076デフォルトの名無しさん
2007/03/14(水) 10:41:47procedure TForm1.FormCreate(Sender: TObject);
begin
Memo1.Lines.LoadFromFile('text1.txt');
Button1.Caption:='文字列';
end;
でいいような気もするが
0077デフォルトの名無しさん
2007/03/14(水) 10:50:38Memo1Button1が未定義と出ます。
超初心者なものでスミマセン。
0078デフォルトの名無しさん
2007/03/14(水) 10:52:320079デフォルトの名無しさん
2007/03/14(水) 10:55:140080デフォルトの名無しさん
2007/03/14(水) 10:56:56>>78のいう通りフォームの何もない所をダブルクリックしてFormCreateを作りな
008169
2007/03/14(水) 12:36:14レスいただいていたのに、返事が遅れてしまい申し訳ないです。
線の太さを変えたり色を変えたりすることは検討してみたのですが
モノクロで出力(ペーパーアウト)したときに、判別出来なくなってしまうので
できれば他の方法を検討してみたいと思います。ありがとうございました。
0082デフォルトの名無しさん
2007/03/14(水) 12:39:29一番下を 特太黒で描画
2番目を 太い白で曲線描画 少しだけ細くした黒で描画
と白と黒で太さを換えるか、少しだけズラして重ね描画すれば それらしくなるよ
0083デフォルトの名無しさん
2007/03/14(水) 12:53:58輪郭データをarray of TPoint で作って
それを Polygon で描画
その時のBrushのStyleで模様を付ける
サンプルコード
Canvas .Brush.Color:=clBlack;
Canvas.Brush.Style:=bsBDiagonal ;
Canvas.Pen.Width:=6;
Canvas.Pen.Color:=clBlack;
Canvas.Polygon([Point(10,10),Point(50,150),Point(10,100)]);
Canvas.Brush.Style:=bsFDiagonal ;
Canvas.Pen.Color:=clWhite;
Canvas.Pen.Width:=4;
Canvas.Polygon([Point(10,10),Point(150,150),Point(10,150)]);
Canvas.Pen.Width:=2;
Canvas.Pen.Color:=clBlack;
Canvas.Polygon([Point(10,10),Point(150,150),Point(10,150)]);
0084ななしへたぐらま ◆XcB18Bks.Y
2007/03/14(水) 13:50:56CD-ROM版ソフトの自動起動メニューからインストーラーを実行するというソフトがあります.
Vistaだと実行ファイルに対する警告ダイアログが自動起動メニューのウィンドウの背後に出てきてしまいます.
これを回避するうまい方法はないものでしょうか.
やはり子プロセスを呼び出したら自分は隠れてしまうのが一番でしょうか.
0086デフォルトの名無しさん
2007/03/14(水) 19:14:34画像をツリーにD&Dして保存させるプログラムを書いている途中です。
0087デフォルトの名無しさん
2007/03/14(水) 19:29:410088デフォルトの名無しさん
2007/03/14(水) 20:46:47DirectXなら、海外に新しいヘッダーがあるぞ。
Delphi resources
http://www.clootie.ru/delphi/index.html
0089デフォルトの名無しさん
2007/03/14(水) 20:49:06record型で、クラスメソッドを定義したいのですが、どうしたらいいでしょうか?
Delphi 2006です。
static 使うのか?と思ったのですが、駄目な感じでした。
外部に関数を出すしかないですかね・・・
0090デフォルトの名無しさん
2007/03/14(水) 20:54:29おさわがせしますた。
0091デフォルトの名無しさん
2007/03/14(水) 22:25:180092デフォルトの名無しさん
2007/03/14(水) 22:28:50sまn
0093デフォルトの名無しさん
2007/03/14(水) 22:37:160094デフォルトの名無しさん
2007/03/14(水) 22:38:10誤爆
0095デフォルトの名無しさん
2007/03/14(水) 22:39:260096デフォルトの名無しさん
2007/03/14(水) 23:24:02例えば、
TMyPoint = record
X, Y :integer;
end;
で、それぞれ初期値を-1にするようにしたいのです
0097デフォルトの名無しさん
2007/03/14(水) 23:45:330098デフォルトの名無しさん
2007/03/15(木) 00:56:50初期値はコードや宣言で設定するものだ。
0099デフォルトの名無しさん
2007/03/15(木) 00:58:590100デフォルトの名無しさん
2007/03/15(木) 01:22:54良いでしょうか?
なお、こちら(ttp://www2.biglobe.ne.jp/~sakai/gensfaq2.htm#a012)に
Memoコンポーネントでのやり方が書いてありましたが、このままでは駄目でした。
Editor1.SelStart := SendMessage(Editor1.Handle,EM_LineIndex,intresult,0);
intresultは移動させたい行の番号が入っています。
わかる方お願いします。
0101デフォルトの名無しさん
2007/03/15(木) 01:25:39ないんじゃないかな
0103デフォルトの名無しさん
2007/03/15(木) 20:44:05"これは\"あれ\"です"
みたいな書き方はDelphiでどう書くのでしょうか
''内に'を含む書き方です
0104デフォルトの名無しさん
2007/03/15(木) 21:24:35質問とは違うのかもしれんが…
ShowMessage('hoge"hoge"hoge')
DelphiはStringを「’」〜「’」で表わし
その中で文字列として’を表示したければ「”」を使う
0105100
2007/03/15(木) 23:11:06単に
Editor1.SelStart := intresult;
とすると指定の列にキャレットが移動しました・・・
Editor1.Row := intresult;
としてもキャレットが動いてくれませんし・・・
誰かおながいします
0106デフォルトの名無しさん
2007/03/15(木) 23:16:12>>101
0107デフォルトの名無しさん
2007/03/15(木) 23:28:42procedure TForm1.SpeedButton1Click(Sender: TObject);
var
NewString:string;
begin
with Editor1 do
begin
if not InputQuery('指定行へ移動','数値で',NewString) then exit;
Row:=StrToIntDef(NewString,1)-1;
end;
end;
0108デフォルトの名無しさん
2007/03/15(木) 23:32:18Format 関数
http://forum.nifty.com/fdelphi/faq/00149.htm
0109デフォルトの名無しさん
2007/03/15(木) 23:34:03100 だが、Row:= でキャレットは移動した。
TEditor にフォーカスが無くてそう見えないだけでは……なさそうだな?
0110デフォルトの名無しさん
2007/03/15(木) 23:34:350111デフォルトの名無しさん
2007/03/15(木) 23:37:39できないので、
・constで定義して代入する
const DefaultMyPoint: TMyPoint = (X: -1; Y: -1);
var p: TMyPoint;
begin
p := DefaultMyPoint;
:
・TMyPointに初期化メソッドを定義して、呼び出す
TMyPoint = record
X, Y: Integer;
procedure Initialize;
end;
procedure TMyPoint.Initialize;
begin
X := -1;
Y := -1;
end;
var p: TMyPoint;
begin
p.Initialize;
:
0112100=105
2007/03/15(木) 23:50:50ありがとうございます
>>109
フォーカス当たってないだけでした・・・
Editor1.Row := intresult;
Editor1.TopRow :=intresult;
でそれっぽい感じになりました。
ありがとうございました。
011396
2007/03/16(金) 00:56:05いわれてみるとそうですね
ただ、クラスだとコンストラクターで初期値を設定できるので、
レコードでも同様にできそうな気がしてしまったもので…
>>111
一回ごとにそれぞれ代入するのが面倒だったので、
どちらかの方法を試してみます
ありがとうございました
0115デフォルトの名無しさん
2007/03/16(金) 03:58:51Delphi2005辺りからの機能なので、バージョンによってはできない。
どうしてもメソッドでやりたければ、recordをobjectにする。
0116デフォルトの名無しさん
2007/03/16(金) 11:07:42N: Dword;
begin
ReadProcessMemory(hProc,Ptr($004B9DB58),@i,2,N);
button2.Caption:=i;
end;
として文字列を読み込めないのです。
どうしたらよかですか
0117116
2007/03/16(金) 11:22:380118デフォルトの名無しさん
2007/03/16(金) 11:28:05Stringでなければならない理由があるの?そうなら少しString型のデータ構造を理解した方がよい。
0119デフォルトの名無しさん
2007/03/16(金) 14:20:19ゴメン、食うもんだけは。
ヤセの大食いって言われる。
0120デフォルトの名無しさん
2007/03/16(金) 14:34:50var s:string ;として
setlength(s,2); //文字列に2バイト分メモリを確保して( s:='xx';でもいいよ)
N :=0 ;//次のAPIがエラーでも0になるように
ReadProcessMemory(hProc,Ptr($004B9DB58),PChar(s),2,N);
0121デフォルトの名無しさん
2007/03/16(金) 16:39:59個人的に、そういうのは使わない方がいいと思う。
別の人がソースみて修正とか置換する時に大変なことになるから。
面倒でも
intLoop とか
strWork とか
プリフィックス+用途 で命名するクセを付けた方がいいと思う。
0122デフォルトの名無しさん
2007/03/16(金) 16:53:14だから今回のようなケースなら俺は i, s を支持。
0123デフォルトの名無しさん
2007/03/16(金) 17:59:15ループ変数は i,j,k をまず使うのが一般的なので
ループ変数には i,j,kを使いましょう
また個数を表現する変数にはM,Nを使いましょう
外に見えない、作業的に使うような短命な 変数に 1英字を使うのは悪い事ではありません。
そうする事で、それほど重要でなく短命である事を表現出来るからです。
0124デフォルトの名無しさん
2007/03/16(金) 18:07:54エラーを出した漏れがきますたよ(´・ω・`)
0125デフォルトの名無しさん
2007/03/16(金) 18:16:46A 3重以上のループにならないようにしましょう
Q コーデング規則で短い変数名は使ってはいけないと書いてあるのですが?
A あなたが指定された規則に従って下さい。
Q 短命な変数かどうかの目安は?
A もっとも内側の関数のローカル変数は短命です。
でもあなたが1関数を1画面からはみだすくらい長く書く習慣を持っているならその限りではありません
0126デフォルトの名無しさん
2007/03/16(金) 19:15:11昔の処理系では変数の文字数が長い=処理が重い
という時期があっただけ
これがいまでも習慣化してる
今は処理速度的にはそれほど気にする必要はないので
後でメンテするときのことも考えてなんのループかわかるような変数名にした方がbetter
特にループ内で配列のデータを変化させる場合などは
hoge[i]とかってすると他人が読む時にわかりにくい場合もある
何が言いたいかというと
ぶっちゃけどっちでも良い
あなたの環境で推奨されてる方法に従うのが吉
0127デフォルトの名無しさん
2007/03/16(金) 20:00:08リストボックスの要素を選択したとき、その要素(表示名)に
関連付けられた要素のID(string型)を取得したいと思って
います。
どんな方法がいいのでしょうか?
0128デフォルトの名無しさん
2007/03/16(金) 20:18:05自分は いっとき、実行時型情報を使って 列挙型を定義して
列挙型のpulishedプロパティを定義(そうすれば実行時型情報が登録されるから)
で、例えばMenuに追加するなら
procedure SetMenuEnumPropInit(TypeInfo: PTypeInfo;MenuItem:TMenuItem;Click:TNotifyEvent;ordNo:Cardinal);
var i:integer;
var T: PTypeData;
var s:string;
var nw:TMenuItem;
begin
T := GetTypeData(GetTypeData(TypeInfo)^.BaseType^);
for i:=T^.MinValue to T^.MaxValue do
begin
s:= GetEnumName(TypeInfo , i);
if i>=MenuItem.Count then begin
nw:=TMenuItem.Create(MenuItem);
MenuItem.Add(nw);
end else nw:=MenuItem.Items[i];
nw.Caption := s ;
nw.Visible := True;
nw.RadioItem:= True;
nw.OnClick := Click;
nw.Tag:=i;
nw.Checked:= ordNo=i;
end;
end;
みたいな手続き作って、コレでやってた。
0129デフォルトの名無しさん
2007/03/16(金) 20:21:42procedure GetEnumNameList(TypeInfo: PTypeInfo;str:TStrings);
var i:integer;
var T: PTypeData;
var s:string;
begin
T := GetTypeData(GetTypeData(TypeInfo)^.BaseType^);
for i:=T^.MinValue to T^.MaxValue do
begin
s:= GetEnumName(TypeInfo , i);
if s<>'' then str.Add(s) else break;
end;
end;
とやって、逆は文字列から GetEnumValue を使えばいい
THoge(GetEnumValue( TypeInfo(THoge) ,text))
なお、uses TypInfo;が必要
0130デフォルトの名無しさん
2007/03/16(金) 20:27:040131以下、名無しにかわりましてVIPが実況します
2007/03/16(金) 20:27:380132デフォルトの名無しさん
2007/03/16(金) 20:37:12今日 [email protected] にインストール番号をくれってメール送ったら、
昼飯食いに行ってるあいだ(2時間ぐらい)に返信が来たよ。
0133デフォルトの名無しさん
2007/03/16(金) 20:48:460134デフォルトの名無しさん
2007/03/16(金) 20:56:55Turbo Delphi/Explorer
今からいじるならどっちがおすすめ?
0135デフォルトの名無しさん
2007/03/16(金) 21:27:560136デフォルトの名無しさん
2007/03/16(金) 21:32:13何でか知らないけど、Beckyで送信しようとしたらダメで、
Thunderbirdだったら問題なく送れたよ。
0137デフォルトの名無しさん
2007/03/17(土) 00:53:28postMessage(TargetWnd,BM_CLICK,WM_LBUTTONDOWN ,0);
だとダメでしょうか?
第二引数がちがうようなきがします。
0138デフォルトの名無しさん
2007/03/17(土) 01:17:590139デフォルトの名無しさん
2007/03/17(土) 04:12:19それメチャクチャ。
0140デフォルトの名無しさん
2007/03/17(土) 04:18:500141デフォルトの名無しさん
2007/03/17(土) 04:23:140142デフォルトの名無しさん
2007/03/17(土) 04:59:110143デフォルトの名無しさん
2007/03/17(土) 08:26:25すみません、引数を見つけることが出来ず、CのページのでできるのかなとかんがえてできませんですたTT
0144デフォルトの名無しさん
2007/03/17(土) 08:40:101回送れば後はやってくれる
postMessage(TargetWnd,BM_CLICK,0 ,0);
とwParam lParam は0にする
WM_LBUTTONDOWN はWM_LBUTTONUP とセットにしないといけないし
マウスの座標も用意してやらないといけない
また2番目の引数に書かないといけない
0145デフォルトの名無しさん
2007/03/17(土) 08:52:44>OpenGL を使って 3D グラフィックスを描画するときは,すべての浮動小数点例外を無効にすることをお勧めします。
>これを行うには,メインフォームの OnCreate イベントで Set8087CW(0x133f) を呼び出してから OpenGL 関数を呼び出します。
0146デフォルトの名無しさん
2007/03/17(土) 09:26:23さんくすできたああ
こういうのってどうやって調べてるんですか??
0147デフォルトの名無しさん
2007/03/17(土) 15:01:39解説してるサイトはないでしょうか?
0148デフォルトの名無しさん
2007/03/17(土) 15:30:06「OpenGL Delphi」でググるといくらでも出てくるんだけど
0149デフォルトの名無しさん
2007/03/17(土) 15:36:14http://www.usefullcode.net/2006/12/windows_vista_5.html
Delphi での書き方を教えて
0150デフォルトの名無しさん
2007/03/17(土) 16:03:14まず関数ポインタ型を定義
HRESULT SHGetStockIconInfo( SHSTOCKICONID siid, UINT uFlags, SHSTOCKICONINFO *psii );
だから、
type TSHGetStockIconInfoProc = function (siid :TSHSTOCKICONID siid; uFlags:DWORD; var psii:TSHSTOCKICONINFO );
で、TSHSTOCKICONID とTSHSTOCKICONINFO をその前に定義しないといけない
type TSHSTOCKICONID=integer; でもとりあえずいいと思う
構造体の方は
typedef struct {
DWORD cbSize;
HICON hIcon;
int iSysImageIndex;
int iIcon;
WCHAR szPath[MAX_PATH];
} SHSTOCKICONINFO;
type TSHSTOCKICONINFO=packed record
cbSize:DWORD ;
hIcon:THandle;
iSysImageIndex:Integer;
iIcon:Integer;
szPath:array [0..MAX_PATH-1]: WideChar;
end;
みたいな感じ
0151デフォルトの名無しさん
2007/03/17(土) 16:08:28szPath:array [0..MAX_PATH-1] of WideChar; ね
で、後はそのコード通り、
hDLL := LoadLibrary( 'shell32.dll'); して
var SHGetStockIconInfo:TSHGetStockIconInfoProc;
SHGetStockIconInfo:=TSHGetStockIconInfoProc(GetProcAddress(hDLL,'SHGetStockIconInfo') );
と関数ポインタに割り当ててやれば
SHGetStockIconInfoが使える筈
0152デフォルトの名無しさん
2007/03/17(土) 16:11:34やってみまする
0153デフォルトの名無しさん
2007/03/17(土) 16:22:57gamdev.orgぐらいしか出てこないけど……
0154デフォルトの名無しさん
2007/03/17(土) 16:58:26コマンドプロンプトで、↓のプログラムを実行したいです。
Command = 'COMMAND.COM /c perl C:\hogehoge C:\index.html';
C:\hogehogeはperlのプログラムがおいてある場所です。
C:\index.htmlはファイルのパスです。
上記のように、ファイルのパスにスペースがない場合はうまくいくのですが、
Command = 'COMMAND.COM /c perl C:\hogehoge C:\Documents and Settings\hoge\デスクトップ\index.html';
のようにスペースがあるファイルを指定するとエラーで落ちてしまいます。
どうすればいいでしょうか。
また、ファイルパスを変数にしたい場合はどうすればいいでしょうか。
おねがいします。
0155デフォルトの名無しさん
2007/03/17(土) 17:25:02'COMMAND.COM /c perl "C:\hogehoge C:\Documents and Settings\hoge\デスクトップ\index.html"'
質問2は、どういうふうなコード書いてるのかその手前5〜10行くらいをコピペしてみて
0156デフォルトの名無しさん
2007/03/17(土) 17:32:21var
FilePath:string;
const
BaseCommand='COMMAND.COM /c perl C:\hogehoge '
begin
if not InputQuery('Input','FilePath',FilePath) then exit;
WinExec(PChar(BaseCommand+FilePath),CmdShow);
end;
0157デフォルトの名無しさん
2007/03/17(土) 18:46:06ばかりでDelphiのサンプルがありません。
正規表現とかは頭が沸騰しそうで、出来ればゴリゴリと書いたものが知りたいんですが。
0158154
2007/03/17(土) 19:11:23ありがとう。
>>155
単純に
Command = 'COMMAND.COM /c perl C:\hogehoge "C:\Documents and Settings\hoge\デスクトップ\index.html"';
で出来ました(汗)
コードは長いので分割して投下します。
>>156
WinExecなのか良く分かりません・・・
0159154
2007/03/17(土) 19:12:09procedure check(Command, Dest: String);
var
SI :TStartupInfo;
PI :TProcessInformation;
begin
FillChar(SI,SizeOf(SI),0);
SI.cb := SizeOf(SI);
SI.dwFlags:= STARTF_USESHOWWINDOW; // DOS プロンプトが表示
SI.wShowWindow := SW_HIDE; // されるのを抑止する
If Not CreateProcess(nil,
PChar(Format('%s > %s',[Command,Dest])),
nil,nil,False, 0, nil, nil, SI, PI) Then
Raise Exception.Create('Error!');
While WaitForSingleObject(PI.hProcess, 0) = WAIT_TIMEOUT Do
Application.ProcessMessages; // プロセス終了まで待機する
CloseHandle(PI.hProcess);
end;
0160154
2007/03/17(土) 19:14:17procedure TForm1.ToolButton12Click(Sender: TObject);
const
Command = 'COMMAND.COM /c perl C:\hogehoge "C:\Documents and Settings\hoge\デスクトップ\index.html"'; // 実行するDOSプログラム
var
TempFileBuff: array[0..MAX_PATH] of Char;
TempFileString: String;
begin
GetTempFileName('.','tmp',0,TempFileBuff); // テンポラリファイル
TempFileString := String(TempFileBuff); // の作成
try
check(Command,TempFileString); // 実行
finally
DeleteFile(TempFileString); // テンポラリファイル削除
end;
end;
0161154
2007/03/17(土) 19:16:09よく分からず使っていますが・・・
おねがいします。
0162デフォルトの名無しさん
2007/03/17(土) 20:19:07//プログラム部分を「実行ファイル名」+「半角スペース」に削る
const
Command = 'COMMAND.COM /c perl C:\hogehoge '; // 実行するDOSプログラム
var
TempFileBuff: array[0..MAX_PATH] of Char;
TempFileString: String;
FilePath:string;
begin
//ファイルパス部分を入力
if not InputQuery('Input','FilePath',FilePath) then exit;
//とにかくダブルクォートで挟んでしまう
if FilePath[1]<>'"' then FilePath:='"'+FilePath;
if LastDelimiter('"',FilePath)<>Length(FilePath) then
FilePath:=FilePath+'"';
GetTempFileName('.','tmp',0,TempFileBuff); // テンポラリファイル
くコ:彡同じ
0163154
2007/03/17(土) 20:39:29おおお〜。できました。ありがとう。
それはそうと、InputQueryというのを今知りました。
便利ですね。
ありがとうございました。
0164デフォルトの名無しさん
2007/03/17(土) 20:42:51この場合は普通オープンファイルダイアログを使う
0165以下、名無しにかわりましてVIPが実況します
2007/03/18(日) 08:33:48右クリックをどうやって拾うのかよくわかりません。誰か教えて下さい。
0166デフォルトの名無しさん
2007/03/18(日) 11:00:18PageControlとPopupメニューを用意、
PageControlのPopupMenuプロパティに先ほどのメニューを割り当てればOK
0167165
2007/03/18(日) 11:23:52ありがとうございます。
今やってみたら、タブシート上で右クリックしてもポップアップメニューが出てしまったのですが、これはこういう物なんでしょうか?
私は、タブのいわゆる耳(ページを切り替える際にクリックする場所)を右クリックした時に出るイメージだったのですが。
0168デフォルトの名無しさん
2007/03/18(日) 11:58:30メール英語で送ってみたが
うろ覚えの英語で通じるだろうか
0169デフォルトの名無しさん
2007/03/18(日) 12:20:07もうこのスレ金払ってないユーザーは質問禁止な。
0170デフォルトの名無しさん
2007/03/18(日) 12:34:260171デフォルトの名無しさん
2007/03/18(日) 12:59:240172デフォルトの名無しさん
2007/03/18(日) 14:05:51どのメールアドレスに送った?
英語って[email protected]じゃだめなの?
0173デフォルトの名無しさん
2007/03/18(日) 14:41:42本当に始めるなら買ったほうがいいよ。
0174デフォルトの名無しさん
2007/03/18(日) 14:42:270175デフォルトの名無しさん
2007/03/18(日) 14:46:14某のユーザ対応の良さがしのばれるよね。
0176デフォルトの名無しさん
2007/03/18(日) 14:48:38おまえらは何作ってんだ?
0177デフォルトの名無しさん
2007/03/18(日) 14:51:070178デフォルトの名無しさん
2007/03/18(日) 14:53:160179デフォルトの名無しさん
2007/03/18(日) 14:55:060180デフォルトの名無しさん
2007/03/18(日) 15:02:49Oracle(1000クライアント程度)クライアントの顧客、売上管理システムとデータウェアハウスの仕組み、
リアルタイム(とは言えない)株価チャート、社内電子承認システムのワークフローのパッケージなど。
0181デフォルトの名無しさん
2007/03/18(日) 15:04:19>>180
そのへんのこなれたもんは一人でくんでるよね?
チームならもっと効率いいのあるわけだし。
0182デフォルトの名無しさん
2007/03/18(日) 15:07:43一人で組めるからdelphiなのさ。
単価も半年で1000万〜とかだしね。
チームでなんてやってられんよ。
0183デフォルトの名無しさん
2007/03/18(日) 15:08:080184デフォルトの名無しさん
2007/03/18(日) 15:12:38販売やら給与やら株価やらは一人でも1ヶ月もかかんなくね?
UI変えて昔作った共通ライブラリ又はその客専用のライブラリを呼び出して終わりかと。
0185デフォルトの名無しさん
2007/03/18(日) 15:16:580186デフォルトの名無しさん
2007/03/18(日) 15:17:110187デフォルトの名無しさん
2007/03/18(日) 15:17:15じゃあこの方法で。
procedure TForm1.PageControl1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
I:Integer;
iInTab:Integer;
Pt:TPoint;
begin
iInTab := -1;
Pt := Point(X,Y);
with (Sender as TPageControl) do
begin
for I:=0 to PageCount-1 do
begin
if PtInRect(TabRect(I),Pt)then
begin
iInTab := I;
break;
end;
end;
if iInTab>-1 then
begin
Pt := ClientToScreen(Pt);
PopupMenu1.Popup(Pt.X,Pt.Y);
end;
end;
end;
0188デフォルトの名無しさん
2007/03/18(日) 15:30:380189デフォルトの名無しさん
2007/03/18(日) 15:36:500191デフォルトの名無しさん
2007/03/18(日) 20:12:360192デフォルトの名無しさん
2007/03/18(日) 20:21:46戻り値にrecord型を使う
引数にvarを指定する
もっとスマートな方法がありそうな気がする
0193デフォルトの名無しさん
2007/03/18(日) 20:32:49おーありがとう〜
レコード型というのもありますね〜
varを指定するというのはグローバル変数にして外からも使えるようにする、と言うことですか??
0194デフォルトの名無しさん
2007/03/18(日) 21:21:00何も付けない場合は値がコピーされて渡される。関数内部で変更できるけど呼び出し元に影響なし。
constを付けた場合は定数渡し。関数内部で変更しようとするとコンパイルエラーになる。
varを付けた場合は参照渡し。関数内部で変更すると呼び出し元に影響。
レコード型をやりとりするならvar渡しが一番スマート。Cのようにポインタを渡しても同じですが。
オブジェクト型はそれ自体がポインタ型の一種なので注意。
0195デフォルトの名無しさん
2007/03/18(日) 21:22:06function testSQR(var ret:Integer;x:integer):boolean;
begin
result:=x<=46340; //sqr(2^31-1) 以上だと平方すると桁溢れする
ret:=x*x;//平方をret 変数で返す
end;
として 呼び出す方は
var sqr:integer;
testSQR(sqr, 100); のように呼び出す
0196デフォルトの名無しさん
2007/03/19(月) 00:46:43そしてresultに渡されてるのは…
まあ良いや
次いってみよう
0197デフォルトの名無しさん
2007/03/19(月) 00:52:44戻り値は桁あふれしたかどうか。
resultに渡されているのは論理値(Boolean)だが?
0198デフォルトの名無しさん
2007/03/19(月) 01:08:43これは恥ずかしいw
0199デフォルトの名無しさん
2007/03/19(月) 01:17:580200デフォルトの名無しさん
2007/03/19(月) 01:20:53なんでヘルプ読まんかな・・・
0201デフォルトの名無しさん
2007/03/19(月) 01:41:56くだスレで何を(ry
0202デフォルトの名無しさん
2007/03/19(月) 04:21:090203デフォルトの名無しさん
2007/03/19(月) 04:22:14どうしてprivateにある変数をpublicに置いて直接取得変更しないで
わざわざpublicにpropertyというのを用意してその値を取得したりするんですか?
0204デフォルトの名無しさん
2007/03/19(月) 08:10:41各種設定を簡単に引き継げますか?
できるならやり方をお教えくださいませ。
by 22才 ♀ 保育士
0205デフォルトの名無しさん
2007/03/19(月) 08:14:060206デフォルトの名無しさん
2007/03/19(月) 08:30:051、後でインターフェースを変更しても良いようにする為
たとえば propertyだと var 引数に渡せませんから
2、そのクラスを継承してそのプロパティを publishedにすればRTTIを使って
実行中に型情報にアクセス出来るメリットが生まれます。
0207デフォルトの名無しさん
2007/03/19(月) 08:51:42どうか、
顔が誰に似ているか
体格の特徴
できれば、スリーさいずをお願いいたします。
0208デフォルトの名無しさん
2007/03/19(月) 08:53:07とかやると座標を代入するだけじゃなくその後の描画までやってくれるだろ。
そういう副作用を設定できる。
0209デフォルトの名無しさん
2007/03/19(月) 09:41:47>>206 なんか知らない単語が出てきて難しいですが、
拡張されることを考えるんだったら、そうしとけってことなんですね。
>>208 Form1が裏でやってた訳ですか〜。
目からうろこです。
今回は本当にありがとうございました。
0210デフォルトの名無しさん
2007/03/19(月) 11:13:21このネカマめ!!
俺はこういうのを見分ける嗅覚がすごいんだぜ。
0211デフォルトの名無しさん
2007/03/19(月) 11:18:42207もおねがい!
0212デフォルトの名無しさん
2007/03/19(月) 12:21:48連続して入力中にプライマリーキーが同じ場合に入力できないようにしたいのですが、どうしたらいいでしょうか。
0213デフォルトの名無しさん
2007/03/19(月) 18:44:10ボタンを押したらループで100回くらい回すのをしてるんですが、その時にリストボックスにADDしてるんですが
ループ中はフリーズのようになって100回終わったときに一気に描写されます。
これはこういう物なのでしょうか?
0214デフォルトの名無しさん
2007/03/19(月) 19:02:39カラム移動のイベントで一度ポストすりゃいいじゃん。
あとはプライマリつーことで同値は入力不可。
0215デフォルトの名無しさん
2007/03/19(月) 19:05:24Repaint すれば
0216デフォルトの名無しさん
2007/03/19(月) 19:07:44>>213そういうものです。
描画メッセージが発行されて、そのイベントが終わってから実行されますから、
途中描画させたいなら、
1、リストボックス.Updateとかで【さっさと描画しろ】と催促する
2、Application.ProcessMessages をループ中で呼び出して、溜まってるメッセージを処理させる
(ただしボタン操作なんかも受け付けるんで、再帰的に処理される事に耐えられるコードが要求される)
のどっちか
0217デフォルトの名無しさん
2007/03/19(月) 21:10:37>>216
ありがとうございます。
listbox1.Updateで出来ました〜。
このループに色々な判定を入れて、ずっと回そうと思うのですが、メイン関数からの場合もこうやるのですか?
0218ななしへたぐらま ◆XcB18Bks.Y
2007/03/19(月) 21:34:48Delphi における
参照パラメータと値パラメータは実際には値渡しだったり参照渡しだったりするので
必ずヘルプに目を通す必要がありますね.
>>203
・不用意に値を参照されたり書き換えられないようにするため
というのもあります.
たとえば時間のかかる計算処理をしていて結果を変数に書き込むとします.
これがただの変数だといつでも読み出せるので
計算前や計算途中に変数が変な値になっていても読み出せてしまうのです.
読み出す側はそれが正しい値なのかどうかはわかないのでそれが正しい値だと思いこんで処理をしてしまうかもしれません.
(処理中は読み出してはいけないという仕様を仕様書としてちゃんと用意すれば良いのですがそれでも使う側はかなり面倒です)
また自由に書き込めるということは計算中の値や計算結果を外部からいくらでも書き換えできてしまうのです.
このように公開された(だれでも読み書きできる)変数を用意するのはバグの元なので基本的にはやってはいけません.
0219デフォルトの名無しさん
2007/03/19(月) 22:40:15>参照パラメータと値パラメータは実際には値渡しだったり参照渡しだったりするので
????
0220デフォルトの名無しさん
2007/03/20(火) 00:28:380221デフォルトの名無しさん
2007/03/20(火) 07:45:50Displayformatにhh:mm Editmaskに!99:99;1を設定したのですが日付または時刻ではありません
というエラーになってしまいます。
環境はD3+interbase4.2です。
0222デフォルトの名無しさん
2007/03/20(火) 07:53:25無限ループで回すの?
それなら、タイマーコンポを貼り付けて、そのイベントで1件づつ処理するか
Application.OnIdleのイベントで1件づつ処理するか
0223デフォルトの名無しさん
2007/03/20(火) 08:09:22ActiveElement か、getSelectionかじゃないのかな
http://msdn2.microsoft.com/ja-jp/library/system.windows.forms.htmldocument_properties(VS.80).aspx
JavaScriptの解説が役立つと思うよ
http://www.tohoho-web.com/js/document.htm
0224デフォルトの名無しさん
2007/03/20(火) 08:36:29!99:99;1 の最後の1が何をしてるのか判らんから言うのだが
EditMaskを空白にして 同じかどうか試してみたら?
0225デフォルトの名無しさん
2007/03/20(火) 13:06:56どっかいいサイトないか?
0226ななしへたぐらま ◆XcB18Bks.Y
2007/03/20(火) 13:35:15書き方が不正確でした,すいません.
ヘルプの『パラメータと受け渡し』の項より.
> 変数パラメータ(var)は常に参照渡しです。つまり,実際の格納位置をポイントする 32 ビットポインタによって渡されます。
> 値パラメータと定数パラメータ(const)は,そのパラメータの型とサイズに応じて値渡しまたは参照渡しになります。
0227デフォルトの名無しさん
2007/03/20(火) 14:18:58A B Cと列があってAを入力したら次はBはコードで変更して表示だけ行い
Cに移動するようにしたいです。
0228デフォルトの名無しさん
2007/03/20(火) 15:11:250229デフォルトの名無しさん
2007/03/20(火) 21:47:23const はともかく、値パラメータがサイズや型によってころころと参照渡しに
変わる場合ってどんな場合? そんないい加減なことでいいのか?
0230デフォルトの名無しさん
2007/03/20(火) 21:59:160231デフォルトの名無しさん
2007/03/20(火) 22:22:370232デフォルトの名無しさん
2007/03/20(火) 23:08:34Panel1の上に、Image1とImage2があるときに、
Image1とImage2が重なったときにはImage2が常に前面に
表示されるようにするにはどうすればいいんでしょうか?
ヘルプ眺め回したんですがどうしても分かりません…orz
どうか御教授おねがいします><
0233デフォルトの名無しさん
2007/03/20(火) 23:30:02動的に作った場合はBringToFrontだっけ?
0234ななしへたぐらま ◆XcB18Bks.Y
2007/03/20(火) 23:41:11データサイズの大きな値を渡すときはコピーを取ってそのアドレスを渡すのだと思います.
constで値渡しされる場合もコンパイラが関数内での値の変更を許さなければ問題ないのでしょう.
>>232
設計時ならImage2を右クリック→[前面に移動(F)]
実行時なら>>233の通り, Image2.BringToFront でいけると思います.
0236デフォルトの名無しさん
2007/03/21(水) 01:04:26>データサイズの大きな値を渡すときはコピーを取ってそのアドレスを渡すのだと思います.
それでは、参照渡しであることをユーザは知る必要はないだろう。なんで、場合によっては
参照渡しであることを明記する必要があるの?
0237デフォルトの名無しさん
2007/03/21(水) 02:20:33存在すればその要素が最初に見つかった位置を返す関数(Posの整数配列版)って何なのでしょう?
探しても探しても見つかりません。。
0238デフォルトの名無しさん
2007/03/21(水) 04:01:48と言う処理があって。
1 x1 y1 z1
2 x2 y2 z2
3 x3 y3 z3
4 ・・・
と、xyzの値の組み合わせが200ぐらいあるのですが、こういう場合はどういう風に処理したらいいのでしょうか?
全部を処理するのではなく、2以外を全部処理とか操作できるようにしたいです。
そうした場合はこれらの値を別ファイルにして、csv?とかいうのにするのですか?
0239デフォルトの名無しさん
2007/03/21(水) 04:29:18そんな関数は自分でつくっても1分もかからないだろ。
>>238
csv は数値を文字列に置き換えてファイルにする一形式。
数値そのものをファイルにするほうが何倍も読み書きが効率的。
0240デフォルトの名無しさん
2007/03/21(水) 11:52:37どういう風にやったらいいのでしょう??
ファイル操作とか難しくてよくわからないんです。。
0241デフォルトの名無しさん
2007/03/21(水) 12:00:21ADOつかって操作するかコンバートして他のDBに落としたら?
何件あるかわからんけど、1万超えてるなら他のDBに落としたほうがいいよ。
0242デフォルトの名無しさん
2007/03/21(水) 13:30:49GofのデザインパターンってJAVAやC++での説明ばっかりでそ?
Pascalで説明してくれているサイトとかないんでしょうか?(ないだろうなぁ)
最近興味がわいてきたんだけど、JAVAでは読みこなせないのです…
0243デフォルトの名無しさん
2007/03/21(水) 13:32:16あのねー、
ありますけどねー
なんかねー
他の人に聞いてくださいって感じです。
0244デフォルトの名無しさん
2007/03/21(水) 13:35:02200件です
番号 住所で
番号入力されたら、住所とかを出力したいです。
0245デフォルトの名無しさん
2007/03/21(水) 13:38:23削除しないならADOで十分かと。
SQL使えるしかなり楽。
StringList使ってやってもいい件数だけどね。
0246デフォルトの名無しさん
2007/03/21(水) 13:40:020247デフォルトの名無しさん
2007/03/21(水) 13:42:04お前じゃない他の人に聞いたんだろう
0248242
2007/03/21(水) 13:43:48自己解決です(^^
0249デフォルトの名無しさん
2007/03/21(水) 13:44:460250デフォルトの名無しさん
2007/03/21(水) 14:02:23できた。ありがと。
0251デフォルトの名無しさん
2007/03/21(水) 14:05:27Win32用のプログラムでヘルプファイルが起動できなくなってしまいました。
Application.HelpFile := 'help.hlp';
Application.HelpCommand(HELP_FINDER, 0);
という風に書いてもヘルプが起動しません。
Del7でコンパイルしたものは正常に動作します。
BDS2006でコンパイルしたEXEを他のPCで起動しても駄目でした。
(ソースファイルは同一のものです)
ヘルプファイルの扱い方に変更でもあったのでしょうか。
ご存じのかたは教えてください。よろしくお願いします。
0252251
2007/03/21(水) 14:20:58WinHelpViewerユニットのUSESが必要になったのですね。
0253デフォルトの名無しさん
2007/03/21(水) 16:06:10そういう時は、まず構造体を定義する
type TMyRecode=record
x:Integer;
y:Integer;
z:string; //<---型は適切なものに
end;
この構造体の初期化付配列変数を定義する
var MyDatas : array[0..N-1] of TMyRecode=
((x: 0 ; y: 123; z:'abc')
,(x: 1 ; y: 456; z:'def')
......
);
このデータをfor 文でループして処理する
for i:=Low(MyDatas) to High(MyDatas) do
with MyDatas[i] do begin
if (A=x) and (B=y) then C:=z;
end;
0254デフォルトの名無しさん
2007/03/21(水) 16:13:03それやるならTListを隠蔽したクラスをつくったほうがよくね?
0255デフォルトの名無しさん
2007/03/21(水) 16:20:29じゃあ、ソレで説明してみてあげてヨ
コード書いてあげるの、案外大変だよ
0256デフォルトの名無しさん
2007/03/21(水) 16:37:22PRecHoge = ^TRecHoge;
TRecHoge = record
Index: Integer;
PostNo: string;
Addr: string;
end;
THogeList = class(TObject)
private
FList: TList;
public
constructor Create;
destructor Destroy; override;
function Add(const Hoge: TRecHoge): Integer;
procedure Assign(const Source: THogeList);
procedure Clear;
procedure Delete(const Index: Integer);
function IndexOf(const PostNo: string): Integer;
procedure LoadFromFile(const FileName: string);
procedure SaveToFile(const FileName: string);
property Count: Integer read GetCount;
property Indexes[Index: Integer]: Integer read GetIndexes write SetIndexes;
property PostNos[Index: Integer]: string read GetPostNos write SetPostNos;
property Addrs[Index: Integer]: string read GetAddrs write SetAddrs;
end;
クラスはこんな感じで全部に何かの更新をしたい時はそのメソッドを追加したりする。
実装部は自分で補完しておくれ。
TStringListのソースみたりすればわかると思うから。
0257デフォルトの名無しさん
2007/03/21(水) 16:49:340258デフォルトの名無しさん
2007/03/21(水) 16:53:32>>255
0259デフォルトの名無しさん
2007/03/21(水) 17:01:15ふと思ったんだけど動的配列を入れ物にするときって、サイズはどうすんの?
0..9999とかにするとか?
0260デフォルトの名無しさん
2007/03/21(水) 17:17:48そうすれば、コンポーネントとして初期化が楽に出来る。そうでないなら、わざわざ作るメリットは殆どない。専用のメンバーを色々作るより
THogeList = class(TComponent)
private
MyItems:array of TRecHoge;
FItems:TStrings;
public
function Add(const Hoge: TRecHoge): Integer;
property items:TStrings;
end;
と、定義はシンプルにしておいて、
実装部で
type TRecHogeStrings=class(TStrings)
parent:THogeList ;
function Get(Index: Integer): string; override;
function GetCount: Integer; override;
procedure Clear; override;
procedure Delete(Index: Integer); override;
procedure Insert(Index: Integer; const S: string); override;
end;
とローカルに定義して、例えば
function TRecHogeStrings.Get(Index: Integer): string;
begin
with parent.MyItems[Index] do begin
result:= IntToStr(Index)+':'+PostNo+':'+Addr;
end;
end;
のように、TRecHogeを変換するようにすれば、あとはTStringsと同じように扱える
0261デフォルトの名無しさん
2007/03/21(水) 17:20:51動的配列は、SetLengthでサイズを可変出来る。
また、インスタンス解放時に自動的にメモリ解放コードを書いてくれるので
TListのように自前でメモリの確保・解放のコードが不要になるので楽
0262デフォルトの名無しさん
2007/03/21(水) 17:21:55いや、あれはコンポーネントにする予定なんてないから・・・。
あぁいう簡単なリストでもコンポにするのがここでは普通なの?
あとさ、何でTListを隠蔽したのかわかっていないような・・・。
補完で不必要なものをかくすためだよ。
その辺の作法はオープンソースをみて、当たり前のものと思ってたけど
>>260みたいな手法がここではいいの?
0263デフォルトの名無しさん
2007/03/21(水) 17:23:08可変すると中身きえるから意味なくね?
その度にセーブ、リロードするの?
0264デフォルトの名無しさん
2007/03/21(水) 17:26:09可変すると全部が消えるわけじゃないから>>260の
procedure Delete(Index: Integer);
を実装する時は、データを削除点以後、1個上にコピーしてから、サイズを1減らす
procedure Insert(Index: Integer; const S: string);
は逆にサイズを1増やしてから、データを挿入
のように出来るから問題ないよ
0265デフォルトの名無しさん
2007/03/21(水) 17:27:15消えませんが・・・
0266デフォルトの名無しさん
2007/03/21(水) 17:31:59あ、勘違い。
今やってみたら消えないのね。
0267デフォルトの名無しさん
2007/03/21(水) 17:36:53そのあたりは難しい問題だね。
でも、実装の手間は >>256 も >>260も同じ程度でしょ?
そして手間が同じなら、コンポーネントにし易い方がいいじゃない
TStringsなプロパティをpublished にするだけで初期化が簡単に出来るんだからさ
0268デフォルトの名無しさん
2007/03/21(水) 17:37:28コンポーネント化は個人の自由として、リスト使用時に不必要なメソッドを隠すのは同意
0269デフォルトの名無しさん
2007/03/21(水) 17:43:02実装の手間は同じだね。
んー俺は簡単なものをコンポ化するのはなるべく避けるようにしてるからなぁ。
まぁその辺はケースバイケースでってことで。
>>268
それもそうだね。
0270デフォルトの名無しさん
2007/03/21(水) 17:46:44済みません、最近始めたのでADOとかSQLとかちんぷんかんぷんです
>>253
プログラム内に書いた方がいいのでしょうか?
>>254
>>255
>>256
>>257
クラスとかよく聞くのですが、まだそこまで行けてません。
クラスというのを導入した方がこれから技が広がりますか
0271デフォルトの名無しさん
2007/03/21(水) 17:47:23LoadFromFileとかDeleteとかの有る無しが特に明記しなくていい事かもな
0272デフォルトの名無しさん
2007/03/21(水) 17:49:03ならん。リストと配列は異なるデータ構造だよ。
0273デフォルトの名無しさん
2007/03/21(水) 17:50:32その段階なら、まだ>>253のような書き方(pascalレベル)で書いた方がいいとおもうよ
クラスとかのObjectPascalなレベルは、
コードをどんどん書いていけばいつの間にか必要に応じて身に付く人は身に付く。
そうでないひとは、しょうがない。
0274デフォルトの名無しさん
2007/03/21(水) 17:51:19リストと配列は異なるデータ構造だけど TListは名前と違ってVectorだよ
0275デフォルトの名無しさん
2007/03/21(水) 17:53:510276デフォルトの名無しさん
2007/03/21(水) 17:55:26これ>>260ってAddrの部分にセパレータが入ってたりする場合はどうすればいいの?
あと取り出して分割する処理は使用者側で書くの?
0277デフォルトの名無しさん
2007/03/21(水) 17:58:290278デフォルトの名無しさん
2007/03/21(水) 18:01:45そういう時はエンコード・デコードで Addrからセパレータを取り除かなければいけない
たとえば保存時
function EncodeSafe(const s:string):string;
var i:integer;
begin
Result:='';
i:=1;
while i<=length(s) do
begin
case s[i]of
#0..#31,'"','''',',',':','%':
Result:=Result+'%'+IntToHex(ord(s[i]),2);
else begin
Result:=Result+s[i];
end;
end;
inc(i);
end;
end;
0279デフォルトの名無しさん
2007/03/21(水) 18:08:42function DecodeSafe(const s:string):string;
var i:integer;
begin
Result:='';
i:=1;
while i<=length(s) do
begin
if s[i]='%' then
begin
try
Result:=Result+ char(StrToInt('$'+s[i+1]+s[i+2])) ;
except end;
inc(i,3);
end else begin
if not(s[i] in[#$0d,#$0a]) then
Result:=Result+s[i];
inc(i);
end;
end;
end;
あと取り出して分割する処理はTRecHogeStringsで
procedure Add(const Value: string);
function AddObject(const S: string; AObject: TObject): Integer;
procedure SetTextStr(const Value: string);
を継承して実装しないといけないね
0280デフォルトの名無しさん
2007/03/21(水) 18:22:18独立の文言なら>>272は何も間違っていないけど
このタイミングで >>272を書くと
まるでTListがリストのように初心者が勘違いするだろうから、書いたまで。
TListはリストではなく、動的配列と同じ種類のデータ構造で管理している。つまり
array of pointer をクラス化したものという感じ
0281デフォルトの名無しさん
2007/03/21(水) 18:40:20実際のコードを見ると、それらは全部、Insertを呼び出してるみたい。
だから、取り出して分割する処理は Insert で実装すればいいみたい。
そういうのに慣れてないならpos関数で分割すればいいと思う
0282デフォルトの名無しさん
2007/03/21(水) 19:09:54コード付きのレスありがとう
これまたふと思ったんだけど、こういうデータ構造を隠蔽してこそのクラスじゃないのかななんて思ったりして…
それともこのデコード部分もクラスに書くの?
指定Indexの要素を一つ取り出すのはこんなかんじでやるのかな?
TRecHogeStrings.DocodeSafe(TRecHogeStrings.Items[Index]);
なんか勘違いしてる予感
0283デフォルトの名無しさん
2007/03/21(水) 19:29:24違う。 要素はあくまでも MyItems[] に保存されているから、これを読み書きするインターフェースは
>>256のように
property Indexes[Index: Integer]: Integer read GetIndexes write SetIndexes;
property PostNos[Index: Integer]: string read GetPostNos write SetPostNos;
property Addrs[Index: Integer]: string read GetAddrs write SetAddrs;
と用意してやる。
Itemsはあくまでも、文字列用のインターフェースで
SaveToFileとか、コンポを貼り付けた時の初期値データの保持用
で、文字列から読み書きするItemsのメソッドでEncode/Decodeを
function TRecHogeStrings.Get(Index: Integer): string;
begin
with parent.MyItems[Index] do result:= IntToStr(Index)+':'+EncodeSafe(PostNo)+':'+EncodeSafe(Addr);
end;
procedure TRecHogeStrings.Insert(Index: Integer; const S: string);
begin
if Index= length(parent.MyItems) then InsertLast
else if Index< length(parent.MyItems) then InsertMove(Index)
else Error('%d行は行き過ぎでしょ',Index)
with parent.MyItems[Index] do begin
Index:= StrToInt( sprit(s,':') );
PostNo:=DecodeSafe( sprit(s,':') );
Addr:=DecodeSafe( s );
end;
end;
0284デフォルトの名無しさん
2007/03/21(水) 19:31:28おーなるほど
やっと理解出来ました
ほんとありがと
0285デフォルトの名無しさん
2007/03/21(水) 19:32:42これって超初心者スレ??
でもがんばるお(^w^)
0286デフォルトの名無しさん
2007/03/21(水) 19:39:29splitはsepまでの文字列を返して、渡した文字列をそこまで消す、こんな感じの処理
function TRecHogeStrings.split(var s:string ; sep:char);
var i:Integer;
begin
result:='';
for i:=1 to length(s) do
if s[i]=sep then begin
Result:=copy(s,1,i-1);
delete(s,1,i);
exit;
end;
//全部読んだがセパレータが無かった・・・Errorを呼ぶ方がいいかも
Result:=s;
s:='';
end;
0287デフォルトの名無しさん
2007/03/21(水) 21:08:45Delphi 6/Personal と Turbo Delphi/Explorer
どっち使ってますか?
0288デフォルトの名無しさん
2007/03/21(水) 21:13:15begin <
〜
end <
else
begin <
〜
end;
<の箇所が納得できない
0289デフォルトの名無しさん
2007/03/21(水) 21:13:54コンポインストールできないけど。
0290デフォルトの名無しさん
2007/03/21(水) 21:14:080291デフォルトの名無しさん
2007/03/21(水) 21:15:17きみはプログラミングのセンスがないねぇ。
ほかになにかみつけたほうがいいよ。
0292デフォルトの名無しさん
2007/03/21(水) 21:18:06それは実装がそうなってるだけで、ユーザが TList をリスト構造だと
思っても間違いじゃないさ。むしろその方が正しい。
0293デフォルトの名無しさん
2007/03/21(水) 21:21:49僕は if 1 に納得できない。
0294デフォルトの名無しさん
2007/03/21(水) 21:27:46begin <
・・・
end;
<この部分がしつこい
0295デフォルトの名無しさん
2007/03/21(水) 21:30:40Del6
OSがあれなもので…
>>288
if( is〜 ) then
proc_hoge;
else
func_hoge;
みたいなのでエラーが出るのに納得がいかない
仕方がないので常に
if( is〜 ) then
begin
proc_hoge;
end else
begin
func_hoge;
end;
みたいな感じにしてます
0296デフォルトの名無しさん
2007/03/21(水) 21:32:000297デフォルトの名無しさん
2007/03/21(水) 21:32:260298デフォルトの名無しさん
2007/03/21(水) 21:38:32if 〜 then
…
else if 〜 then
…
else
…;
で、…の部分が複数行になるときbegin,endで囲む
begin,endで囲まれた中は各命令に;をつける
0299デフォルトの名無しさん
2007/03/21(水) 21:46:070300デフォルトの名無しさん
2007/03/21(水) 21:48:33そういったものを読んだ方がいいよ
自己流で変な解釈のまま納得いかずに続けるのはやめたほうがいい
0301デフォルトの名無しさん
2007/03/21(水) 21:54:26言い直す、「気持ち悪い。」だ
正しく>>295のいってる内容まんま
他言語の仕様に慣れてるから、beginがしつこくて気持ち悪いだけ
0302デフォルトの名無しさん
2007/03/21(水) 22:11:33>>295の場合beginを書く必要はない
>>295に同意するってことは文法を理解してないってこと
まぁ、Delphiと相性悪いってことで
慣れてるほかの言語を使ったほうがいいんじゃない?
0303295
2007/03/21(水) 22:22:09文法は>>298さんのように言ってるようなものと理解してますが、
それでも;があったりなかったりするのが「気持ち悪い」ので、
たとえ一文でもbegin end;で囲っちゃってると言うだけですよ
そりゃエラー吐かれたら間違ってることに気付きますよ
常識的に考えて...orz
0304デフォルトの名無しさん
2007/03/21(水) 22:29:020305デフォルトの名無しさん
2007/03/21(水) 22:29:060306デフォルトの名無しさん
2007/03/21(水) 22:30:110307デフォルトの名無しさん
2007/03/21(水) 23:19:51具体的にはServerのMySQLのテーブルAにTADOTable1が接続、ローカル上のAccessの
テーブルBにTADOTable2が接続
TADOQuery1でTADOTable1とTADOTable2からフィールドを選択して表示ということを考えています。
何冊か本をみましたが、異なる種類のデータベースに同時に接続する方法については見つけることができませんでした。。。
Accessでいうとリンクテーブルとクエリを使うのと同じようなことができないかと考えています。
AccessのリンクテーブルでMySQLのテーブルに接続したのですが、MySQLのバージョンが古いのか
文字化けしてしまい、Delphiでなんとかならないかと思った次第です。
もっているのはDelphi6ProとDelphi2005Proです。
よろしくお願いします。
0308デフォルトの名無しさん
2007/03/22(木) 00:48:29気持ちはわからんでもないけど
delphiでは[;]は文の終端を表わすコード
例えば1行で書ける
Z:=X+Y;
を
Z
:=
X +
Y;
とか書いてもコンパイラーは上記のように認識してくれる(もちろんこんな書き方は論外だが…
同様に
if 式 then Z:=X+Y;
else Z:=X/Y;
とかってやると
if 式 then Z:=X+Y; と else Z:=X/Y;は2つの別々の文になってしまう
まあ別に短文の場合でも
begin
endで囲っても問題ないといえば無いけどね
(delphiの基本的な規則には反するけど)
歴史的理由で「くだすれDelphi」が事実上Delphi総合スレになっているのです.
>>292
プログラミングの世界ではよく使われる「リスト」というモノと一般的な言葉としての「リスト」との違いですね.
>>294,295
元々Pascalがプログラミング教育のために作られた言語なのでわかりやすさを重視しているのです.
一方Cはキーをタイプする数を減らすことを重視しています(その代わりカッコ地獄ですけど).
Cを作った人たちは「begin〜endウゼー」って感じだったみたいです.
>>308
> delphiでは[;]は文の終端を表わすコード
厳密に言うと違います.
『文と文を区切るコード』というのが正解.
(だからたとえばメソッドの最後の文の後ろにセミコロンをつけなくてもエラーになりません)
一方CやC++,Javaでは文の終端を表すコードです.
0310デフォルトの名無しさん
2007/03/22(木) 01:34:55ちょっと質問の意図が理解できませんでしたスイマセン.
とりあえずヘルプを読んで頂けると助かります.
ヘルプがダメダメなDelphiですがこの項目については明快に書かれていますので.
個人的にはこのパラメータ渡しの仕様で困ったことは一度もありません.
>>237
ありません.
同じ形のデータがいくつも並んでいてその中から目的のものを探す場合はfor文かwhile文を使います.
ここではサンプルとして適当に作ったのをおいておきます(テストしていませんが).
{ 整数配列から指定された整数を検索してそのインデックスを返します.
見つからない場合は-1を返します.
※配列のインデックスが0以外から始まる場合,返す値はインデックスから最初のインデックスを引いた値になります.
たとえばインデックスが1から始まる場合,インデックス5の値が一致すると4を返します.}
function IndexOf(Number: integer; const Numbers: array of integer): integer;
begin
for Result := 0 to High(Numbers) do
if Numbers[Result] = Number then
exit;
Result := -1;
end;
for文やwhile文などを使った繰り返し処理のことを『ループ』と言います.
0312デフォルトの名無しさん
2007/03/22(木) 07:08:36TListをリスト構造と呼ぶのは混乱の元
C++STLまでは リストと言えば ポインタでリンクしてゆく構造の事。
DelphiのコンポーネントでOwner/Parentでやってる事をリスト構造と呼ぶ
ただ、言葉は時代と共に変わるのも確か。
JAVAでは 重複を許すデータのインターフェースをListと呼ぶ
その中に ArrayList LinkedList とあって、 LinkedListが リスト構造
で、TListは ArrayList/Vectorなデータ構造 つまり可変長配列なのさ
0313デフォルトの名無しさん
2007/03/22(木) 09:22:48たとえば08:30だったら8.5時間というように変換するには単純に24を掛けてやればいいのでしょうか。
var
T:TDatetime;
H:Real;
としておいて
H := T * 24;
でOKですか?
0314デフォルトの名無しさん
2007/03/22(木) 10:22:42入っているなら、24で割ったあまりを出さないとだめかな。
0315デフォルトの名無しさん
2007/03/22(木) 10:50:030316デフォルトの名無しさん
2007/03/22(木) 10:57:500317デフォルトの名無しさん
2007/03/22(木) 17:01:23文字列を表示するときに、TABでスペースをあけて整えたいのですけど、そう言う特殊文字みたいなのはありますか?
0318デフォルトの名無しさん
2007/03/22(木) 17:03:120319デフォルトの名無しさん
2007/03/22(木) 18:29:46できないっす;;
ListBox1.Items.Add(OB+#09+inttostr(x)+#09+inttostr(w)+#09+inttostr(height));
じゃ間違ってますか??
あと、この個々の変数をIEとかエクセルみたいにテーブル代入する事って出来るのでしょうか?
0320デフォルトの名無しさん
2007/03/22(木) 18:30:35>>315
ありがとうございます。
うまくいきました。
0321デフォルトの名無しさん
2007/03/22(木) 20:21:430322デフォルトの名無しさん
2007/03/22(木) 20:39:56間違ってないけど、相手がListBoxだと 希望した表示にならないだろう
OnDrawItem イベントで自前で描画するか
いっそGridを利用したら?
0323デフォルトの名無しさん
2007/03/22(木) 21:17:36仕様許諾コードがとり難いところ
あとは
Web系のコンポが最初の時点では貧弱(用ダウソ)
データベース系のソフトの開発は無理
こんなところかな
0324デフォルトの名無しさん
2007/03/22(木) 23:00:08�d Web系のコンポのダウソは何でぐぐればいいですか?
わかりやすいとこ教えてもらえるとうれしいです
0325デフォルトの名無しさん
2007/03/22(木) 23:03:11と言う事は出来ますか?
0326デフォルトの名無しさん
2007/03/22(木) 23:13:37一つめ二つめって何を指しているんだ?
添字か?内容か?
0327デフォルトの名無しさん
2007/03/22(木) 23:30:23そめ字です。
xyの座標にして、その配列に文字列と数字の構造体を入れたいと思ってます。
もしくは構造体じゃなくて2か3の三次元配列で文字列を入れたいです
0328デフォルトの名無しさん
2007/03/22(木) 23:37:420329デフォルトの名無しさん
2007/03/22(木) 23:47:110330デフォルトの名無しさん
2007/03/22(木) 23:48:120331デフォルトの名無しさん
2007/03/22(木) 23:49:24ここから読み取るに
文字列と数字の構造体の2次元配列を作ればいいんじゃないかな?
0333デフォルトの名無しさん
2007/03/23(金) 02:01:32配列は>>328が言ってるように同じ型の変数列
var
hairetu1: array[0..1,0..1] of Integer;
これは
hairetu1[0][0]:=0;
hairetu1[0][1]:=1;
とかって数字しか格納できない
もし
hairetu1[0][0]:=名前; ←文字列
hairetu1[0][1]:=1000; ←売上(数値)
みたいに違う型のものを格納したいなら
type
MyRec = record
namae: string;
uriage: Integer;
end
とレコード型を宣言しておいて
var
hairetu1: array[0..1] of MyRec; ←レコード型を格納する配列を宣言
hairetu1[0].namae := 'hoge';
hairetu1[0].uriage := 1000;
とやると幸せになれる
0334デフォルトの名無しさん
2007/03/23(金) 02:20:36多次元配列は
a[0][0]
[1]
a[1][0]
[1]
とかってデータ構造になってる
座標全てにデータがあるなら
a[X][Y]でもかまわないと思うけど
特定の座標にしかデータがない場合
メモリの無駄使い&参照の時困る可能性があるんジャマイカ?
0335デフォルトの名無しさん
2007/03/23(金) 03:25:56treeviewでノード間の間隔を変えるにはどうすればよいのでしょうか?
0336デフォルトの名無しさん
2007/03/23(金) 05:57:020337デフォルトの名無しさん
2007/03/23(金) 06:09:56同じようにプロセスIDかスレッドを確認する方法はありますでしょうか?
0338デフォルトの名無しさん
2007/03/23(金) 09:13:21Win32API質問箱 Build51
http://pc11.2ch.net/test/read.cgi/tech/1174416295/
の方がいいだろう
いちおうヘルプの プロセスとスレッドの概要 を見ておくといいよ
0339デフォルトの名無しさん
2007/03/23(金) 10:29:11お手上げなのでそちらで質問させていただこうと思います。
0340デフォルトの名無しさん
2007/03/23(金) 14:26:120341デフォルトの名無しさん
2007/03/23(金) 14:30:08メッセージをAddしていきゃそれらしく見えないかな
0342デフォルトの名無しさん
2007/03/23(金) 14:31:52AllocConsole; してから wirte 文で出力すればコンソールに出せるよ
あと
1、TMemoを貼り付けただけのフォームを用意しておいて、そこにデバッグ用のメッセージを出す人は多いね
2、OutputDebugString( msg ) で出力して、 Ctrl+Alt+V で出す人もいる(重いけどね)
0343デフォルトの名無しさん
2007/03/23(金) 14:36:13>>340じゃないけど為になった
procedure TForm1.Button1Click(Sender: TObject);
begin
AllocConsole;
Writeln('Hello Delphi!');
end;
0344デフォルトの名無しさん
2007/03/23(金) 15:24:55これまだ改善されてないのかよ・・・
某はデバッグに使ってないのか
0345デフォルトの名無しさん
2007/03/23(金) 18:47:400346デフォルトの名無しさん
2007/03/23(金) 19:26:57>>343でコンソールにメッセージ吐いた後
コンソールを終了して
メインに復帰するにはどうしたらよいの?
アフォですまんが教えてくらさいorz
0347デフォルトの名無しさん
2007/03/23(金) 19:37:00コンソールが開いてる時にコンソール右上の×で閉じるとアプリが終わるので注意ね
0348デフォルトの名無しさん
2007/03/23(金) 20:04:19begin
Result:=True;
if CTRL_CLOSE_EVENT =fdwCtrlType then begin
fConsoleCloseReq:=true;
end;
end;
procedure TForm1.DebugConsole1Click(Sender: TObject);
begin
DebugConsole1.Checked:=not DebugConsole1.Checked;
if DebugConsole1.Checked then
begin
AllocConsole;
SetConsoleCtrlHandler( @CtrlHandler ,True);
end else
begin
FreeConsole;
end;
end;
とやれば、問い合わせてくれるようにはなるけど、問い合わせも出ないようにするのは無理なのかな
例外を投げてみたけど、なんかバグった
0349デフォルトの名無しさん
2007/03/23(金) 20:08:420350デフォルトの名無しさん
2007/03/23(金) 20:22:05CtrlHandler の中から例外を投げると、
なんかバグったというしかないよ。 IDEもその後落ちたので追跡も難しい
0351350
2007/03/23(金) 20:27:24ブレークポイントを仕掛けて止めた時のスレッドIDが違う。
これじゃ例外投げたらバグって当然だな
0352デフォルトの名無しさん
2007/03/23(金) 22:19:44フォーカスはそこに移るのですが、セルが選択状態にならず一見どこにフォーカスが有るのかわからなくなります。
selectedindexを指定しないと最初の列のセルが選択状態になります。
どうにかしたいのですが何か良い方法はないでしょうか。
0353デフォルトの名無しさん
2007/03/23(金) 23:22:43やってみたけど、スクロールが手動Orz
どこに設定あるんだろう
0354デフォルトの名無しさん
2007/03/24(土) 02:28:07DelphiってGCなんですか?
0355デフォルトの名無しさん
2007/03/24(土) 02:54:480356デフォルトの名無しさん
2007/03/24(土) 07:48:400357デフォルトの名無しさん
2007/03/24(土) 09:39:39Dephi Win32は無し。
0358デフォルトの名無しさん
2007/03/24(土) 13:23:210359デフォルトの名無しさん
2007/03/24(土) 13:43:01昔のbasicでコンパクションの事をガーベージコレクションと呼んでたようにも思うしさ、気にしない
0360デフォルトの名無しさん
2007/03/24(土) 14:46:590361デフォルトの名無しさん
2007/03/24(土) 14:59:38HDDVDの項に無理やりBDの宣伝ねじ込んであったりもうめちゃくちゃ。
0362デフォルトの名無しさん
2007/03/24(土) 17:09:53今はボタンが押されたらspineditの値を変えて、他のprocedure内でその値を判定して変えています。
0363デフォルトの名無しさん
2007/03/24(土) 17:24:380364デフォルトの名無しさん
2007/03/24(土) 18:57:36どういう事???
やっぱり変数を介さないとだめ??
0365デフォルトの名無しさん
2007/03/24(土) 19:03:03他のprocedure内の値ってのはなんだよだぜ?
0366デフォルトの名無しさん
2007/03/24(土) 19:20:12pascalは構造化がしっかりした言語だから
手続きの中で定義した変数は手続きの中だけで有効
ユニットのimplementationで定義した変数はユニットの中だけで有効
classのメンバは公開しなければクラスだけで有効
というのをふまえて聞いて欲しい。
procedure は手続きなので、別スレッドでループしてるのでなければ
ボタンイベントとは同時に実行はされない。
そして別スレッドからコンポーネントには基本的にアクセスしてはいけない。
という事で、
【peocedure にある値】 というのが皆んな判らないんだよ。
0367デフォルトの名無しさん
2007/03/24(土) 19:29:210368デフォルトの名無しさん
2007/03/24(土) 20:22:18「他のprocedure内で定義した変数の値」
だ
0369デフォルトの名無しさん
2007/03/24(土) 20:29:490370デフォルトの名無しさん
2007/03/24(土) 20:47:31>今はボタンが押されたらspineditの値を変えて、他のprocedure内でその値を判定して変えています。
これだな
この意味を解読すれば真相に近づく
0371デフォルトの名無しさん
2007/03/24(土) 23:18:09そこは今現在やっている処理で、本当はspineditを使わず直接他のprocedureの何かを変えたいんじゃないのかな。
0372デフォルトの名無しさん
2007/03/24(土) 23:42:50Win32の場合は、uses句にMidasLibを書けばOKでした。
0373デフォルトの名無しさん
2007/03/25(日) 01:03:030374デフォルトの名無しさん
2007/03/25(日) 09:08:46時刻値のみを取り出したいときはどうすればいいのでしょう?
いちいち DecodeTime と EncodeTime のコンボをかまさないと駄目なんでしょうか?
とか、書いてるうちに dt - Trunc(dt) でいけることに気がつきました。
チラシの裏でスマソ。
0375デフォルトの名無しさん
2007/03/25(日) 09:13:56Frac でいいじゃない
0377374
2007/03/25(日) 09:27:44Trunc は四捨五入の処理を書いたときに見かけたので知っていました。
実数のみ取り出す関数があるのだから
小数部のみ取り出す関数もあるだろうと予想はしていたし探しもしてみたんですよ。
今思うと探し方がぜんぜん甘かったわけですが。
ヘルプの Trunc ルーチン の関連情報とか参照とかの項目に Frac が載ってればこんな無駄な労力は・・
0378デフォルトの名無しさん
2007/03/25(日) 09:38:41>>374の dt - Trunc(dt) を中でやってるだけなので、特に無くても困らないからでしょ。
0379デフォルトの名無しさん
2007/03/25(日) 14:56:080380デフォルトの名無しさん
2007/03/25(日) 17:22:20確認がでて確認に行くんだけど、「サーバと繋がらないから今回はやめとくわ」で終わる。
https://community.borland.com/
にはちゃんとログインできるからパスとかは間違ってないと思うんだが
0381デフォルトの名無しさん
2007/03/25(日) 17:53:06レジストリエディタでHKEY_CURRENT_USER\Software\Borland以下から
見つけて、エクスポートで保存して持ってくるのが一案楽だよ
0382デフォルトの名無しさん
2007/03/25(日) 18:12:53あれってマシン固有のものも入ってなかったっけ?
0383デフォルトの名無しさん
2007/03/25(日) 18:17:17ユーザーのフォルダに認証ファイルをダウンロードしていたような気も。
0384デフォルトの名無しさん
2007/03/25(日) 18:18:410385デフォルトの名無しさん
2007/03/25(日) 18:20:05これですか?
0386デフォルトの名無しさん
2007/03/25(日) 18:25:34インストーラには違うって言われた。
フィルタが「*.slip;*.txt;*.eml」になってるね
0387デフォルトの名無しさん
2007/03/25(日) 18:47:53があったが、「読み込めん」だった(x.x)
0388デフォルトの名無しさん
2007/03/25(日) 19:14:30っていうメールを見つけたので、それを指定してみたら(添付ファイルでもやってみた)
「この製品のものではありません」
と言われた。
俺ってDQN?泣けてくる。
0389デフォルトの名無しさん
2007/03/25(日) 19:29:110390デフォルトの名無しさん
2007/03/25(日) 19:43:430391デフォルトの名無しさん
2007/03/25(日) 19:47:580392デフォルトの名無しさん
2007/03/25(日) 19:52:320393デフォルトの名無しさん
2007/03/25(日) 20:35:25あと、TStringList型の変数はポインタとして扱えますか?
0394デフォルトの名無しさん
2007/03/25(日) 20:47:29Ans いいえ
Q2 TStringList型の変数はポインタとして扱えますか
Ans レコード型と違って クラス型の変数は常に実体を参照しています。
ですから、変数への代入は 参照=アドレスの複製が行われます。
この意味で、ポインタと概念は似ています。
しかし、ポインタという呼び方はしません
0395デフォルトの名無しさん
2007/03/25(日) 20:58:520396デフォルトの名無しさん
2007/03/25(日) 21:06:13var
str1,str2,str3:TStrings;
ptr1:Pointer absolute str1;
ptr2:Pointer;
以下のように複製した時
str1:=TStringList.Create;
str2:=TStrings(ptr1);
ptr2:=str1;
str3:=TStrings(ptr2);
str1,str2,str3の3つは同じ実体(インスタンス)を示します。
Q3 アドレスの複製じゃなくて実体の複製はできるの?
Ans 出来るのではなく、出来るようにするかどうかはプログラマが決めます。
出来るようにプログラマが決めた場合、多くは、別のインスタンスを作ってからAssignで複製出来ます。
0397デフォルトの名無しさん
2007/03/25(日) 21:09:120398デフォルトの名無しさん
2007/03/25(日) 21:19:050399デフォルトの名無しさん
2007/03/25(日) 21:23:44考え方として、
1、 コントロールしなければ出来るようにして、出来ないようにする事も出来る
2、 コントロールしなければ出来ないようにして、出来るようにする事も出来る
という違いです。
メモリ内容を単純コピーして実体が2つになっては困る場合も多いので
(たとえばファイルアクセスハンドルを含んでるような場合)
2が最近の主流です。
0400デフォルトの名無しさん
2007/03/26(月) 16:19:33TQueryで検索した結果からClientDataSetのワークテーブルに書き込み帳票印刷をしようと
としたのですが、ワークテーブル作成中に「ロックファイルが大きくなりすぎています」というエラーが発生しました。
データが少ないときはエラーは出ません。
ClientDataSetには何かデータサイズの上限があるのでしょうか。
0401400
2007/03/26(月) 16:57:21クローズした後何か完全に開放するような処理が必要なのでしょうか。
0402ななしへたぐらま ◆XcB18Bks.Y
2007/03/26(月) 18:33:01>>362
『他のプロシージャにある値』を別なところに置くことを検討してみてください.
恐らくその『他のプロシージャ』の中で宣言し,保管しなければならない理由はないはずです.
具体的な例としてはそのボタンを載せているフォームのフィールド変数にすることです.
フォームの外部からアクセスする必要はないはずなので変数はprivate節に宣言します.
例のプロシージャがもし単独の手続きだとこの変数にアクセスできませんが,
このプロシージャはフォームに関連した処理をやっているようですので
フォームのメソッドにすればOKです.
(もし特定のフォームに依存しない処理をやっているなら変数をpublic節に宣言してください)
>>397
Delphiがなぜこういう仕様なのかはわかりませんが,
恐らくウィンドウの部品を扱う場合に便利なようにあえてこういう仕様にしたように思います.
領域もハンドルも同じボタンを複製することはありませんからね.
0403デフォルトの名無しさん
2007/03/26(月) 19:22:37インスタンスのメモリがそのままコピーされても、文字列の保存場所はコピーされず
そのポインタだけがコピーされる。
両方で同じ領域にアクセスするから、たぶんマズイ事になるだろう。
0404デフォルトの名無しさん
2007/03/26(月) 19:50:43ヘルプ見ても使い道の差がよくわからない。
0405デフォルトの名無しさん
2007/03/26(月) 20:03:58procedure TPersistent.Assign(Source: TPersistent);
begin
if Source <> nil then Source.AssignTo(Self) else AssignError(nil);
end;
A.AssignTo(B) は B.Assign(A) と等価が期待されてるみたい
でもAssignToは実装されてないものもあったりするみたい
0406デフォルトの名無しさん
2007/03/26(月) 20:14:250407デフォルトの名無しさん
2007/03/27(火) 12:21:410408デフォルトの名無しさん
2007/03/27(火) 12:33:54変数だけのユニットを定義したらどうでしょ?
0409デフォルトの名無しさん
2007/03/27(火) 13:13:43ありがとうございました。
0410デフォルトの名無しさん
2007/03/27(火) 14:47:38Intervalが短い場合はイベントの最初でEnableを
Falseにするべきなのでしょうか?
0411デフォルトの名無しさん
2007/03/27(火) 14:48:580412デフォルトの名無しさん
2007/03/27(火) 14:53:20今まではイベントが二重に呼ばれると思ってたので
タイマーイベント内で下のようなことをやっていました
try
Timer1.Enable := False;
//何らかの時間が掛かりそうな処理
finally
Timer1.Enable := True;
end;
こんなことはしなくていいってことですね
ありがとうございました
0413デフォルトの名無しさん
2007/03/27(火) 15:20:57時間のかかりそうな処理が5秒だとしたら
そのコードだと約15秒間隔でイベントが発生するようになる。
> Timer1.Enable := True;
でインターバルがリセットされるから。
逆にそのコード取っ払うと10秒間隔でイベントが発生して空き(余裕というべきか)時間は5秒になるという違いがあるよ。
なので処理が詰まってきそうならコード残したほうがいい場合もあるね。
0414デフォルトの名無しさん
2007/03/27(火) 15:48:01Timerイベントの最初にif Busy then Exitと書き、
直後にBusy := TrueとしてTimerイベントの終わりにBusy := Falseという感じなのを見た記憶がある。
が、これって意味ないのかな?
0415デフォルトの名無しさん
2007/03/27(火) 15:52:32そのコントロールのイベントが呼ばれてしまうんで、それを禁止する目的でやる場合はあるね
あるいは、もっと単純に、
AとBがあって、Aを変更したらB、Bを操作したらAを変更するような場合に常にを
それを使うから、ついクセでやってしまったのかもしれない。
0416デフォルトの名無しさん
2007/03/27(火) 15:54:090417412
2007/03/27(火) 15:57:00>インターバルが10秒で
>時間のかかりそうな処理が5秒だとしたら
>そのコードだと約15秒間隔でイベントが発生するようになる。
>> Timer1.Enable := True;
>でインターバルがリセットされるから。
この概念は気付きませんでした
道理でイベント周期が一定しなかったわけだ・・・
>>414
最初はそれを試してみたのですが制御がまちまちで意味無かったです
それでEnable変更にしたわけで・・・
0418デフォルトの名無しさん
2007/03/27(火) 16:12:20begin
IF X<Z THEN
INC(Z)
IF X>Z+20 THEN
DEC(Z)
end;
z < x < Z+20
にするために、zの方を動かすというプログラムを書こうと思うのですが、
↑だと同じ判定を二回しています。
これをもっとスマートにする事って出来ないでしょうか?
なんか、無駄な処理なきがしています。
0419デフォルトの名無しさん
2007/03/27(火) 16:14:44IF X<Z THEN Z=X;
IF X>Z+20 THEN Z:=X+20;
とすりゃいいんじゃないの?
0420デフォルトの名無しさん
2007/03/27(火) 16:17:15× IF X>Z+20 THEN Z:=X+20;
○ IF X>Z+20 THEN Z:=X-20;
こういうのは min/max関数を使って
Z:=min(Z,X);
Z:=max(Z,X-20);
0421デフォルトの名無しさん
2007/03/27(火) 16:35:040422デフォルトの名無しさん
2007/03/27(火) 16:40:04Paradoxのデータをデバッグするのに毎回ACCESS起動するのも・・・
なんかいいツール知りませんか?
0423デフォルトの名無しさん
2007/03/27(火) 17:01:07亀だけど。
http://nienie.com/~masapico/api_InternetCombineUrl.html
0424デフォルトの名無しさん
2007/03/27(火) 17:55:190425デフォルトの名無しさん
2007/03/27(火) 18:23:02すみません、
IF X<Z THEN
begin
INC(Z)
・・・・
end;
と、複数命令が入るのです
幅がずれてる分だけ処理を入れたかったです。
0426デフォルトの名無しさん
2007/03/27(火) 18:49:24では、最初の比較でどちらか判っているのだから
while (X<Z) or (X>Z+20) do
begin
IF X<Z THEN
INC(Z)
ELSE DEC(Z) ;
//その他の処理
end;
としたら?
その他の処理が共通でないなら
その2つの条件は同時には成立しないのだから
while X<Z do begin INC(Z) ; end;
while X>Z+20 do begin DEC(Z) ; end;
0427デフォルトの名無しさん
2007/03/27(火) 19:07:090428デフォルトの名無しさん
2007/03/27(火) 19:09:17そういうコンポーネント探した方が早いです。
0429デフォルトの名無しさん
2007/03/27(火) 19:13:33TEditから独自のコンポーネントを派生させて
そのコンストラクタ内でParams.Style := Params.Style or ES_RIGHT;
意味不明ならそういうコンポ探してきて
0430デフォルトの名無しさん
2007/03/27(火) 19:13:350431デフォルトの名無しさん
2007/03/27(火) 19:14:11うお!
下のがまさに願ったりかなったりです。
上のもelseで一つ減らせますね〜。ありがとうっす。
0432デフォルトの名無しさん
2007/03/27(火) 20:09:05コンストラクタじゃなくてCreateParamsをオーバライドしてでしょ。
0433デフォルトの名無しさん
2007/03/27(火) 20:18:450434デフォルトの名無しさん
2007/03/27(火) 20:39:490435デフォルトの名無しさん
2007/03/27(火) 20:52:48どっちがいいと思う?
0436デフォルトの名無しさん
2007/03/27(火) 20:52:48と言うのを作って、itemnameというのを他の関数でも使えるようにしたいのでVARで宣言してるのですが、
createはどこでやればいいのでしょうか?
0437デフォルトの名無しさん
2007/03/27(火) 20:58:34こんな感じ
var
sList: TStringList;
begin
sList := TStringList.Create;
try
//sListにAddしたりLoadFromFileしたりでデータセット
if itemsearch(sList, 1) then
ShowMessage('あるよ!')
else
ShowMessage('ないよ・・');
finally
sList.Free;
end;
end;
0438デフォルトの名無しさん
2007/03/27(火) 21:02:240439デフォルトの名無しさん
2007/03/27(火) 21:07:010440デフォルトの名無しさん
2007/03/27(火) 21:18:19アプリケーションのどこでCreateしたらいいかわからないって質問じゃないのか?
0441デフォルトの名無しさん
2007/03/27(火) 21:39:44空のテキストファイルの作成は仕様上不可、との理解でよろしいでしょうか?
0442デフォルトの名無しさん
2007/03/27(火) 21:47:02え?誰?
可能だけど。
0443デフォルトの名無しさん
2007/03/27(火) 22:09:23そうです。
すべてのところで使いたいので、procedureとかで宣言しないで、一番最初にしたいと思ったのですけど、
何処が一番最初なのかなぁっておもいますて
0444デフォルトの名無しさん
2007/03/27(火) 22:10:370445デフォルトの名無しさん
2007/03/27(火) 22:16:510446デフォルトの名無しさん
2007/03/27(火) 22:17:30CheckBoxを表示させているのですが、
OwnerData:=Trueにした場合、CheckBoxが表示されません。
OwnerData:=Trueの状態でCheckBoxを表示するにはどうしたらいいのでしょうか。
0447デフォルトの名無しさん
2007/03/27(火) 23:09:24Microsoftのコモンコントロールの制限で出来ない。
どうしてもやりたいならOwnerDrawにしてチェックボックスを描画したり、
マウスクリックでチェック状態を変えたりする処理を自前で実装する
しかないだろうね。
0448ななしへたぐらま ◆XcB18Bks.Y
2007/03/27(火) 23:14:52http://pc.2ch.net/tech/kako/1021/10212/1021201697.html
の471〜474あたりが参考になるかも.
>>446
私も前につまずいたことがありますが,Delphiに限らず,
仮想リストビュー(オーナーデータ)とチェックボックスの組み合わせはうまくいかないみたいですね.
0449デフォルトの名無しさん
2007/03/27(火) 23:34:28外部コンポーネントを使用してもいいのならVirtualTreeViewでそれ相当が出来ると思う。
0450デフォルトの名無しさん
2007/03/27(火) 23:37:51>>445
ありがとうございやす!
たすかりまっす
0451デフォルトの名無しさん
2007/03/27(火) 23:57:37>>448
>>449
制限で出来ないのですか…
DrawFrameControlを使い自前で描画する事にします。
(VirtualTreeViewも後で使ってみようと思います)
回答ありがとうございました。
0452デフォルトの名無しさん
2007/03/28(水) 00:24:59どーもです。
InternetCanonicalizeUrl ですか。
msdn ではコンテンツが見つからないといわれたんですが、
AtlCombineUrl
も同じでしょうか。
いずれにしても未定義っぽいです
0453デフォルトの名無しさん
2007/03/28(水) 00:44:02function ExpandURL(const BaseURL,SrcURL: string): string;
//一つ↑のディレクトリ
function ExtractURLDir(URL: string): string;
var
i:integer;
begin
//WSrash の最後の位置
i:=LastDelimiter('/',URL);
if (i>1) and (i=Length(URL)) then
begin
URL:=Copy(URL,1,i-1);
i:=LastDelimiter('/',URL);
end;
if (i>1) and (URL[i]='/') then Dec(i);
Result:=Copy(URL,1,i);
end;
0454デフォルトの名無しさん
2007/03/28(水) 00:44:45WDotsCount,
Idx,
i:integer;
CurrentPath:string;
const
WDots='..';
Dot='.';
WSlash='//';
Slash='/';
begin
Result:=SrcURL;
//BaseURL が絶対アドレスではない
Idx:=Pos(WSlash,BaseURL);
if Idx<1 then exit;
//最後が / で終わるまで(カレントディレクトリ)
CurrentPath:=BaseURL;
while LastDelimiter(Slash,CurrentPath)<>Length(CurrentPath) do
Delete(CurrentPath,Length(CurrentPath),1);
0455デフォルトの名無しさん
2007/03/28(水) 00:45:17if (Pos(Dot,SrcURL)=1)and(Pos(WDots,SrcURL)<1) then
begin
Result:=SrcURL;
Delete(Result,1,1);
Result:=CurrentPath+Result;
exit;
end;
Result:=SrcURL;
WDotsCount:=0;
while Pos(WDots,Result)>0 do
begin
Inc(WDotsCount);
Result[Pos(WDots,Result)]:='*';
end;
Result:=SrcURL;
if WDotsCount<1 then exit;
for i:=0 to WDotsCount-1 do
begin
CurrentPath:=ExtractURLDir(CurrentPath);
end;
Result:=Copy(SrcURL,Length(WDots+Slash)*WDotsCount,Length(SrcURL));
Result:=CurrentPath+Result;
end;
0456デフォルトの名無しさん
2007/03/28(水) 03:47:270457デフォルトの名無しさん
2007/03/28(水) 06:18:55コンソールアプリケーションで使うにはどうすればいいでしょうか?
0458デフォルトの名無しさん
2007/03/28(水) 06:36:47コンソールアプリではメッセージポンプを回してない事の方が多いと思うから状況が判らない。
一定時間休憩したいならSleepを使う。
一定時間毎に処理したいならSleepを繰り返してGetTickCountとか時計を見たりとか
0459457
2007/03/28(水) 07:07:54DLL等、フォームを使わないプログラムという事でした
0460デフォルトの名無しさん
2007/03/28(水) 07:13:49メッセージポンプが回っているなら、TTimerは使える。
隠れフォームを作るのが嫌なら、SetTimerで関数を呼び出して貰えばいい
そうじゃなく、メインスレッド負荷が100%なら、スレッド作るしかない
0461デフォルトの名無しさん
2007/03/28(水) 07:24:22もう少し簡単にできるかもしれないから
具体的にどういう処理を書きたいのかを説明したほうがいいかも。
0462デフォルトの名無しさん
2007/03/28(水) 08:43:45自分でもマウスを操作したいのですが、その時に同時に出来るのでしょうか?
例えば
マウスボタン押す→動かす→マウスボタン放す
と言ったD&D作業の時の「動かす」部分で、一時中断して自分の操作を優先させ、終わったらその途中からと言った具合です。
今は、そう言った対策をしていないのでD&D先が予期しない場所になったり、勝手にD&Dになったりと自分の操作と混ざってしまいます。
やはりこの一連の「押す放す」が終わるまで、自分のマウスメッセージを送らないようにする関数を作った方がいいのでしょうか?
0463デフォルトの名無しさん
2007/03/28(水) 09:41:41そりゃそうだ。受け取るほうは、ほんもののマウスメッセージかどうか分かるはずもないからな
0464デフォルトの名無しさん
2007/03/28(水) 09:45:26自分のアプリなら、なんでマウスカーソル動かすのか? 何かイライラ系のゲーム?
他人のアプリなの?
0465デフォルトの名無しさん
2007/03/28(水) 10:24:25EXEのソースを複数のパッケージに分割したいのですが、
そのパッケージを利用するときに「実行時パッケージを使って構築」という
チェックを入れるとおもうのですが、分割数が結構多いので
プロジェクトソースに記述しておきたいのですが
どのように書けばいいのでしょうか。
0466デフォルトの名無しさん
2007/03/28(水) 10:34:26たぶんユニットと混交していませんか?
0467デフォルトの名無しさん
2007/03/28(水) 10:36:29Object Pascal 言語では,「ユニット」と呼ばれる個別にコンパイルされた
コードモジュールをサポートしています。
ユニットを使うことによって,構造化された,プロジェクト間で再利用可能なコードを利用できます。
Delphi プロジェクトで最も一般的なユニットは,Delphi プロジェクトで使用される
フォームのイベントハンドラやその他のコードを含むフォームユニットです。
しかしユニットは,それに関連付けられたフォームを持つ必要はありません。
すべてのプロジェクトが使用できる単独のファイルを作成して,
それをユニットとして保存することができます。
たとえば,自分で手続き,関数,DLL,およびコンポーネントを書き,
そのソースコードをフォームに関連付けられていない別のユニットファイルに入れることができます。
0468デフォルトの名無しさん
2007/03/28(水) 10:36:490469465
2007/03/28(水) 10:46:24分割したパッケージを追加しておく、という手順は正しいでしょうか。
このパッケージリストに追記する数が結構多いので
コンパイルオプションのような記述方法があったら知りたいのですが。
0470465
2007/03/28(水) 10:47:470471デフォルトの名無しさん
2007/03/28(水) 11:03:430472デフォルトの名無しさん
2007/03/28(水) 11:08:00もしくはLinuxでのDelphiプログラミングをしたいのですが何かありませんか。
Kylix以外で。
0473デフォルトの名無しさん
2007/03/28(水) 11:08:54ない
0474デフォルトの名無しさん
2007/03/28(水) 11:17:36http://wiki.lazarus.freepascal.org/Main_Page/ja
0475デフォルトの名無しさん
2007/03/28(水) 11:37:45↓
ファックオーダー、サン
↓
ファッコォーダァーサン
↓
ファッコウダ、サン
↓
八甲田山
外人から恐れられている山だということが、これで、証明された。
0476デフォルトの名無しさん
2007/03/28(水) 12:19:57それを言うなら Fuck Orderson だろ。
ネイティブに発音したら、八甲田山(はっこうださん)には聞こえない。
0477デフォルトの名無しさん
2007/03/28(水) 12:22:47Fuck Orderson!
0478465
2007/03/28(水) 12:24:03無いようですね。失礼しました。
0479デフォルトの名無しさん
2007/03/28(水) 12:44:43What the sonに聞こえるって隣のジョージが言ってた
0480デフォルトの名無しさん
2007/03/28(水) 12:46:37だと
0481デフォルトの名無しさん
2007/03/28(水) 15:04:45さあ行こうPascal
Pascalをどこに連れて行こうとしているのか。
0482デフォルトの名無しさん
2007/03/28(水) 15:20:48ナツカシスwww
去年、リニューアルした「ぽかぽか森のPascal」というものもあった。
つーかPascalじゃねーよw
0483デフォルトの名無しさん
2007/03/28(水) 15:53:510484デフォルトの名無しさん
2007/03/28(水) 19:03:270485デフォルトの名無しさん
2007/03/28(水) 20:38:01type
TMyButton = class(TButton)
procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
end;
実装例:
procedure TMyButton.CMMouseEnter(var Message: TMessage);
begin
Caption := 'in';
end;
procedure TMyButton.CMMouseLeave(var Message: TMessage);
begin
Caption := 'out';
end;
0486デフォルトの名無しさん
2007/03/28(水) 20:39:34起動時に入替えてしまう。
function ChangeComponent( dst:TControl;NewClass:TControlClass):TControl;
var src:TControl;
Stream: TStream;
begin
Stream := TMemoryStream.Create;
try
Stream.WriteComponent(dst);
src:=NewClass.Create(dst.Owner);
src.Parent:=dst.Parent;
Stream.Position:=0;
dst.Free;
Stream.ReadComponent(src);
Result:=src;
finally Stream.free end;
end;
という関数を作って、
procedure TForm1.FormCreate(Sender: TObject);
begin
Button1:=ChangeComponent(Button1,TMyButton) as TButton;
end;
0487デフォルトの名無しさん
2007/03/28(水) 20:52:17>>442様、混乱させてしまい申し訳ありません。
当初、質問させていただこうと思った趣旨は以下のとおりです。
1 プログラムの目的
cドライブのルートに"New"フォルダを作成し、かつ、そのフォルダに空のテキストファイルを作成すること。
2 経過
NewDirectory := SetCurrentDir('C:\New');
if NewDirectory = False Then MkDir('C:\New');
まで記述し、正常動作しました。
3 質問のポイント
(1)"MkDir"のように、空のテキストファイルを作成するコマンドは無いものでしょうか?
(2)無いとしたら、どのような方法がありますでしょうか?
以上、お手数をおかけいたしますが、ご教示のほどよろしくお願い申し上げます。
0488デフォルトの名無しさん
2007/03/28(水) 21:08:58with TStringList.Create do
try
SaveToFile('空のファイル.txt');
finally free end;
で作れる筈だけど、シェル関係(新規作成)を使ってって事?
0489デフォルトの名無しさん
2007/03/28(水) 21:17:33面倒でやった事のなかったコンポーネントの作り方を勉強しながらぼちぼちとやってみます。
メッセージの捕まえ方がさっぱりだったので大変参考になりました。
ありがとうございました。
0490487
2007/03/28(水) 21:42:04ありがとうございます。
さっそく試してみます。
>シェル関係(新規作成)を使ってって事?
いえいえ、Tips集や入門書、オフィシャルコースウェアをめくってみたのですが、
フォルダの作り方やファイルの検索方法は書かれていても、新規ファイルの作り方は
何故か記載されていなかったものでお伺いした次第です。
0491デフォルトの名無しさん
2007/03/28(水) 22:47:15http://delwiki.info/?%A5%B3%A1%BC%A5%C9%C1%D2%B8%CB%2F%A5%B3%A5%F3%A5%DD%A4%CE%C9%D5%A4%B1%C2%D8%A4%A8
にイベントもコピーされる版を書きました
0492デフォルトの名無しさん
2007/03/29(木) 01:47:16という関数がある場合、@hogeで関数ポインタが得られますが、
function hoge(hoge: Integer):boolean;overload;
function hoge(hoge: String):boolean;overload;
といったようにオーバロード時に、それぞれの関数ポインタを得る方法はあるのでしょうか?
0493デフォルトの名無しさん
2007/03/29(木) 02:06:460494デフォルトの名無しさん
2007/03/29(木) 07:15:56Turbo Delphiを使ってます
ListBoxで選択されたアイテムは色が反転されますが
その反転した色を変更する事は出来ないでしょうか?
0495デフォルトの名無しさん
2007/03/29(木) 07:17:250496デフォルトの名無しさん
2007/03/29(木) 07:29:01関数ポインタって主にどういうときに使うのでしょうか?
0497デフォルトの名無しさん
2007/03/29(木) 07:34:19・言語レベルでのOOCに頼らないOOCプログラミングでの多態性実現
0498デフォルトの名無しさん
2007/03/29(木) 07:36:32Style を lbOwnerDrawVariable
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;Rect: TRect; State: TOwnerDrawState);
begin
with Control as TListBox do begin
if odSelected in State then
begin
Canvas.Brush.Color := clGreen;
Canvas.Font.Color := clYellow
end;
Canvas.FillRect(Rect);
Canvas.TextOut(Rect.Left + 2, Rect.Top, Items[Index]);
end;
end;
0499デフォルトの名無しさん
2007/03/29(木) 07:42:01メソッドポインタと違って関数ポインタは API回りやDLL類のインタフェースで良く利用される
>>497さんの言うコールバックはAPI呼び出しでは必須だし
DLLを動的に呼び出すとかでも必須
0500デフォルトの名無しさん
2007/03/29(木) 07:56:56コピペで使ってたEnumなんとかってのも関数ポインタだったんですか。
メッソッドポインタというまた違うのがあるんですか??
早速ぐぐってみようと思います。
0501デフォルトの名無しさん
2007/03/29(木) 08:10:15メソッドポインタを言語仕様で実装したのを見たのはDelphiだったな
0502デフォルトの名無しさん
2007/03/29(木) 08:26:200504デフォルトの名無しさん
2007/03/29(木) 08:36:13function func(const S: string): string; overload;
begin
result:=s+s;
end;
function func(const S: WideString): WideString; overload;
begin
result:=s+s;
end;
type TPfuncA=function(const S: string): string;
type TPfuncW=function(const S: WideString): WideString;
var pfuncA:TPfuncA;
var pfuncW:TPfuncW;
begin
pfuncA:=func;
pfuncW:=func;
caption:=pfuncA('ABC');
caption:=pfuncW('ABC');
区別できるぞ
0505デフォルトの名無しさん
2007/03/29(木) 08:45:20pfuncA:=@func;
pfuncW:=@func;
とやると pfuncWにもansiの方が呼ばれる
@を付けないとちゃんと区別出来る
0507デフォルトの名無しさん
2007/03/29(木) 17:50:44気圧で言うと3ヒークトパスコー(英語は発音大事)ってところか。
元になった言語がパスコー(英語は発音大事)なだけに。
0508デフォルトの名無しさん
2007/03/29(木) 17:56:26【審議中】
∧,,∧ ∧,,∧
∧ (´・ω・) (・ω・`) ∧∧
( ´・ω) U) ( つと ノ(ω・` )
| U ( ´・) (・` ) と ノ
u-u (l ) ( ノu-u
`u-u'. `u-u'
0509デフォルトの名無しさん
2007/03/29(木) 18:36:56どうやって貼り付けるの?どう使うの?
分かりません。だれか教えて下さい。
0510492
2007/03/29(木) 18:44:41関数ポインタ変数を定義するところまではよかったのですが、
おっしゃる通り@を付けてシグネチャを捨てていました。
どうもありがとうございました。
0511デフォルトの名無しさん
2007/03/29(木) 18:44:47「リンクをホイールクリックすると、新しいウィンドウで開く」機能はどのようにすればよいでしょうか?
0512デフォルトの名無しさん
2007/03/29(木) 18:47:45そうです。IEとかで自動でクリックさせながら、自分もその画面で操作したいなぁと
>>463
マウスのメッセージを送るときに
押し
↓
実際のマウス押される→「押し」をスタックして一時停止
実際のマウス処理終わったら続き
↓
放す
とかできかとおもっちゃったのですよ。。でも、D&Dだと「押し」からやり直ししないと意味ないしと。
それで、逆に実際のマウス押されたらその処理をキューに入れていって、
「放す」が終わったら順次処理できるかな〜と思ったり。。
でもそれも、時間とか長かったらアウトアウトかなぁって。
なので、押し〜放すまでは実際のマウス操作があっても処理しない。のがいいのかなと。
0513デフォルトの名無しさん
2007/03/29(木) 18:56:48そういう場合は、マウスメッセージではなく、
ボタンならボタンを押せとか
相当する制御方法がある筈で、ソッチを選ぶんじゃないのかな?
0514デフォルトの名無しさん
2007/03/29(木) 18:59:58「リンクをホイールクリックすると、新しいウィンドウで開く」
を分解しよう
1、ホイールクリックを検出
2、リンクの上である事を知る
3、リンクを新しいウィンドウで開く
どれが判らない?
0515デフォルトの名無しさん
2007/03/29(木) 19:04:19もういっそ、
VNC をインストールして、VNCサーバ起動してから
自分のIPアドレスをこのスレに書いたら?
親切な人が、操作してくれるかもしれないよ
0516デフォルトの名無しさん
2007/03/29(木) 19:40:302番でつまずいてます。
「リンク上であることを知り、そのリンク先のURLを取得」まで教えていただきたいです。
0517デフォルトの名無しさん
2007/03/29(木) 19:48:16TWebBrowserの情報が少なくて困ってるのでしょ?
その場合、JavaScriptのwindow/Navigator/documentを調べるといいです
たとえば、
http://www.tohoho-web.com/js/document.htm
elementFromPoint とか
0518デフォルトの名無しさん
2007/03/29(木) 23:57:10JavaScriptを使うことで着想を得、無事にホイールクリック対応しました!
ありがとうございました。
0519デフォルトの名無しさん
2007/03/30(金) 00:30:13ShellExecute(0, nil, 'mailto:アドレス?subject=件名', nil, nil, SW_NORMAL);
ってわかったんですが、これで件名までいれることができますけど、本文にテンプレ文をいれたりはできないんですか?
0520492
2007/03/30(金) 00:38:140521デフォルトの名無しさん
2007/03/30(金) 00:42:04ありがとう♥
0522デフォルトの名無しさん
2007/03/30(金) 02:32:55mailtoに件名/CC/BCC/本文を指定する方法 - HTML
ttp://www5e.biglobe.ne.jp/~access_r/hp/html/html_016.html
0523デフォルトの名無しさん
2007/03/30(金) 02:36:01>>関数ポインタって主にどういうときに使うのでしょうか?
異なる関数の結果の違いを比べたいときとか。特に微積分なんかで。
Cだけど。
http://www.gulf.or.jp/~damayan/saru/pointer5.html
0524デフォルトの名無しさん
2007/03/30(金) 03:03:21for文の中でifによる分岐をすると速度が如実に下がる場合、
for文の前で関数ポインタに関数を状況によって適したものを入れることで、
分岐の回数を減らすことで速度を上げたり出来るってのが中級者以上の使い方。
あとは、DLLを使うときに関数ポインタの知識は必須かも。
イベントはメソッドポインタで、関数ポインタの親戚。
0525デフォルトの名無しさん
2007/03/30(金) 06:48:430526デフォルトの名無しさん
2007/03/30(金) 14:20:20スクロールバーが消えるんですがこれはバグですか?
どうすれば直るんでしょうか
0527デフォルトの名無しさん
2007/03/30(金) 15:18:42コンソールアプリとのやりとりをGUI上で行いたいと思っています
(具体的にはGNUGoなんですが…)
例えばこんな感じのアプリです
program stdio;
{$APPTYPE CONSOLE}
uses SysUtils;
var str :string;
begin
repeat
Write('Enter a line of text: ');
Readln(str);
Writeln('You typed: ',str);
until( str = 'quit' );
end.
いろいろ調べると、どうやらGUIからコンソールアプリを起動する場合には
パイプ作ってコピーしてCreateProcessで起動して云々ということらしいとのことで、
ttp://www.autch.net/tips/delphi_anonymous_pipe.php
ttp://forum.nifty.com/fdelphi/samples/01507.html
あたりを参考にしました
command.com /c dir とかだと動くので、
単純に標準入力(stdin)にガンガン流せばいいだろうと考えてやってみたのですが
出力自体も取れていないようです
コンソールアプリが入力待ちの場合にはどうすればいいのでしょうか?
0528デフォルトの名無しさん
2007/03/30(金) 15:21:47Del側がGUIならたしかコンポーネントがあったはず。名前失念
0529デフォルトの名無しさん
2007/03/30(金) 15:28:25コンソールからの入力待ちなら
↓のコンポーネントが使えるかも
http://www.kobira.co.jp/FTP_win/crt32.zip
0530デフォルトの名無しさん
2007/03/30(金) 16:57:51マインスイーパのような物を作っていまして
■ボタンを配置するときの処理
var
i : Integer;
btn : TButton;
begin
list := TComponentlist.Create; //上部で宣言済み
For i := 0 to 399 do begin
btn := TButton.Create(nil);
list.Add(btn);
//ボタンの配置設定
〜
btn.Parent := Self;
end;
end;
■ボタンを消すときの処理
var
i : integer;
begin
for i := 0 to list.Count - 1 do begin
list.delete(0);
end;
end;
としているのですがボタンを消すときに
左上のボタンからじわじわじわー・・・と消えていきます。
ボタン数を設定で変更したりするので、フォームごと破棄はできません。
ボタンだけを一気に消す方法はないものでしょうか?
0531デフォルトの名無しさん
2007/03/30(金) 17:00:56ボタンを消すときはパネルを見えなくしてから消すとか?
0532デフォルトの名無しさん
2007/03/30(金) 17:15:24初めからパネルの上にボタンを設置し、
ボタン数を変更するときにパネルごと破棄した後
コンポーネントリストをクリアしたら高速に全て消せました。
0533デフォルトの名無しさん
2007/03/30(金) 17:43:04ボタンの絵を400個描いておいて、
マウスイベントで処理するとかさ
0534デフォルトの名無しさん
2007/03/30(金) 18:29:020535デフォルトの名無しさん
2007/03/30(金) 18:38:240536465
2007/03/30(金) 18:41:160537デフォルトの名無しさん
2007/03/30(金) 18:42:34読み飛ばしてた
0538デフォルトの名無しさん
2007/03/30(金) 18:58:490539デフォルトの名無しさん
2007/03/30(金) 19:04:45そこは
TBitBtnを使え! うわなにくぁwせdrftgyふじこ
0540デフォルトの名無しさん
2007/03/30(金) 20:50:21DrawFrameControl
0541デフォルトの名無しさん
2007/03/30(金) 21:45:10フォーカスを置くかどうかの違い?
0542デフォルトの名無しさん
2007/03/30(金) 23:14:270543デフォルトの名無しさん
2007/03/31(土) 00:51:09もつウィンドウのコントロールで TButton と似たようなもん。だから、リソース
を消費する。マインスイーパのようなアプリでは、ボタンはたんなる絵にして軽く
するんだな。何百個もウィンドウコントロールを使うと厨房であることがばれるし、
Win9X系では、ハンドルをめちゃくちゃ消費してほとんど犯罪アプリになる。
0544492
2007/03/31(土) 01:02:40一般的な関数ポインタの使い道とかけ離れてますね・・・
http://delwiki.info/?%A5%B3%A1%BC%A5%C9%C1%D2%B8%CB%2F%C8%F3%B8%F8%BC%B0%A5%D1%A5%C3%A5%C1
0545デフォルトの名無しさん
2007/03/31(土) 09:10:30こういうのは関数にして外に出した方がいいのでしょうか?
0546デフォルトの名無しさん
2007/03/31(土) 10:04:400547デフォルトの名無しさん
2007/03/31(土) 10:36:120548デフォルトの名無しさん
2007/03/31(土) 10:59:290549デフォルトの名無しさん
2007/03/31(土) 11:46:48http://maxxdelphisite.free.fr/doscmd.htm
0551デフォルトの名無しさん
2007/03/31(土) 19:29:09などをしようと思うと大変なんでしょうか?Wクリックして開いたりとか。
LsFilelistView28 が希望に近いのですが、ポップアップメニューがバタくさいのと
情報が少なそうなので、OSのエクスプローラに最も近い方法はどうすればいいのでしょうか?
よろしくお願いいたします
0552デフォルトの名無しさん
2007/03/31(土) 20:01:08スタートページを設定するにはどうすればいいのでしょうか?
0553デフォルトの名無しさん
2007/03/31(土) 20:16:02これを設定したいのです
0554デフォルトの名無しさん
2007/03/31(土) 20:37:25WebBrowser1.Navigate('スタートページ');
すればどうなる?
0555デフォルトの名無しさん
2007/03/31(土) 21:09:52本当にすみません、よくわかません
具体的にどこを変えればいいでしょうか
type
TForm1 = class(TForm)
ToolBar1: TToolBar;
ToolButton1: TToolButton;
ImageList1: TImageList;
WebBrowser1: TWebBrowser;
procedure ToolButton1Click(Sender: TObject);
private
{ Private 宣言 }
public
{ Public 宣言 }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.ToolButton1Click(Sender: TObject);
begin
WebBrowser1.Navigate('http://localhost:8080/');
end;
end.
0556デフォルトの名無しさん
2007/03/31(土) 21:15:27procedure FormCreate(Sender: TObject);
end.の下に
procedure TForm1.FormCreate(Sender: TObject);
begin〜〜〜〜〜
でいける
0557デフォルトの名無しさん
2007/03/31(土) 21:17:27procedure TForm1.FormCreate(Sender: TObject);
begin
WebBrowser1.Navigate('http://localhost:8080/');
end;
0558デフォルトの名無しさん
2007/03/31(土) 21:26:06試したのですがスタートページ(ブラウザ起動と同時に表示されるページ)にはなりませんでした
0559デフォルトの名無しさん
2007/03/31(土) 21:37:06FormCreateがでるからそこにWebBrowser1.Navigate('http://localhost:8080/');
と書き込むといい
0560デフォルトの名無しさん
2007/03/31(土) 21:39:12回答をしてくださったみなさん本当にありがとうございました
0561デフォルトの名無しさん
2007/03/31(土) 21:44:330562デフォルトの名無しさん
2007/03/31(土) 22:28:43エラーありそうな所に
memo1.text.add(inttostr(abc));
見たいにしてるのだけど、皆さんもこうしてますか?
0563デフォルトの名無しさん
2007/03/31(土) 22:31:14?????????????????????????????????????????????????????????????????????????????????????
0564デフォルトの名無しさん
2007/03/31(土) 22:36:57普通はデバッガ使うでしょ。
0565デフォルトの名無しさん
2007/03/31(土) 22:40:17俺はshowmessage
ちょっと複雑なときはデバッグ専用のファイル出力関数つくってる
0566デフォルトの名無しさん
2007/03/31(土) 23:42:26showmessageのが便利
×かOK押すまで処理も止まるし
プログラム全体が大きくなったり
複数のユニットを統合する場合は
ステップ実行を活用すると便利
エラー個所を特定したいなら
怪しいところを{}や//を使うと楽
こんなところかな
未だにCPU窓の見方がわからない初心者より
0567デフォルトの名無しさん
2007/03/31(土) 23:45:55F4
F5
F8
F7
の使い分けだね
0568デフォルトの名無しさん
2007/04/01(日) 00:26:05ShowMessageでいちいち止まるのは鬱陶しいし
ファイルに出力するよりリアルタイムに見やすい
デバッガで止めるのもリアルタイムな処理だとデバッグしにくい
まあ、状況によってやりかた使い分ければいいべ
0569デフォルトの名無しさん
2007/04/01(日) 00:39:03tail -fで
0570デフォルトの名無しさん
2007/04/01(日) 01:07:18log4delphi.log
0571デフォルトの名無しさん
2007/04/01(日) 01:20:050572デフォルトの名無しさん
2007/04/01(日) 04:01:46「2007/04/01 2:27:17」というように勝手に「2:27:17」が追加されるのですが、何故なのでしょうか?
また対処法等あれば教えていただけますでしょうか。
0573デフォルトの名無しさん
2007/04/01(日) 08:36:27誰かやり方教えてください…
0574デフォルトの名無しさん
2007/04/01(日) 12:17:38できません。他の方法を考えてください。
0575デフォルトの名無しさん
2007/04/01(日) 13:31:37残念・・
0576デフォルトの名無しさん
2007/04/01(日) 13:42:480577デフォルトの名無しさん
2007/04/01(日) 13:56:39type
TButtonOnIamge = record
biButton: TMouseButton;
biDown:Boolean;
end;
private
{ Private 宣言 }
ButtonOnIamge:TButtonOnIamge;
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
with ButtonOnIamge do
begin
biButton:=Button;
biDown:=True;
end;
end;
procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
ButtonOnIamge.biDown:=False;
end;
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if not ButtonOnIamge.biDown then exit;
end;
0578デフォルトの名無しさん
2007/04/01(日) 14:05:310579562
2007/04/01(日) 14:06:51サンデープログラマーなので(家で趣味程度に)
専門知識無く質問してしまいますた。
showmesseage便利ですね〜
特にリアルタイム制が必要なく、memo出力だと早すぎて終えてないことがあったので良かったです。
ただ、ステップ実行とかはよくわからなかったです。
一行ずつなのかなと思ったら、ボタン押したあとはそのまま実行されたりします。
ときたま、ソースファイルが見つかりませんとエラー出てCPU画面というのがでてさらにわけわかめに・・・
0580デフォルトの名無しさん
2007/04/01(日) 14:09:32トレース実行とステップ実行の違いについて考察してみましょう
わからなかったら、またここで聞いてみw
0582デフォルトの名無しさん
2007/04/01(日) 14:43:30実行のタブの中身ちょこちょこ触ってみればいいと思うおw
0583デフォルトの名無しさん
2007/04/01(日) 17:52:030584デフォルトの名無しさん
2007/04/01(日) 17:59:07sl2 := tstringlist.create;
sl.loadfromfile('data.csv');
for i := 0 to sl.count-1 do
begin
sl2.commatext := sl[i];
with listview1.add(sl2[0]) do
for j := 1 to sl2.count-1 do
subitems.add(sl2[j]);
end;
0585デフォルトの名無しさん
2007/04/01(日) 18:03:22(p,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,b,c,c,c,c,c,c,c,c,c,c,c,c,d,
o,p,a,a,a,a,a,a,a,a,a,a,a,a,a,a,b,c,c,c,c,c,c,c,c,c,c,c,d,e,
o,o,p,a,a,a,a,a,a,a,a,a,a,a,a,a,b,c,c,c,c,c,c,c,c,c,c,d,e,e,
o,o,o,p,a,a,a,a,a,a,a,a,a,a,a,a,b,c,c,c,c,c,c,c,c,c,d,e,e,e,
o,o,o,o,p,a,a,a,a,a,a,a,a,a,a,a,b,c,c,c,c,c,c,c,c,d,e,e,e,e,
o,o,o,o,o,p,a,a,a,a,a,a,a,a,a,a,b,c,c,c,c,c,c,c,d,e,e,e,e,e,
o,o,o,o,o,o,p,a,a,a,a,a,a,a,a,a,b,c,c,c,c,c,c,d,d,e,e,e,e,e,
o,o,o,o,o,o,o,p,a,a,a,a,a,a,a,a,b,c,c,c,c,c,c,d,d,e,e,e,e,e,
o,o,o,o,o,o,o,o,p,a,a,a,a,a,a,a,b,c,c,c,c,c,d,d,d,e,e,e,e,e,
o,o,o,o,o,o,o,o,o,p,a,a,a,a,a,a,b,c,c,c,c,c,c,d,e,e,e,e,e,e,
o,o,o,o,o,o,o,o,o,o,p,a,a,a,a,a,b,c,c,c,c,c,d,e,e,e,e,e,e,e,
o,o,o,o,o,o,o,o,o,o,o,p,a,a,a,a,b,c,c,c,c,d,e,e,e,e,e,e,e,e,
o,o,o,o,o,o,o,o,o,o,o,o,p,a,a,a,b,c,c,c,d,e,e,e,e,e,e,e,e,e,
o,o,o,o,o,o,o,o,o,o,o,o,o,p,a,a,b,c,c,d,e,e,e,e,e,e,e,e,e,e,
o,o,o,o,o,o,o,o,o,o,o,o,o,o,p,a,b,c,d,e,e,e,e,e,e,e,e,e,e,e,
o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,p,b,d,e,e,e,e,e,e,e,e,e,e,e,e,
n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,z,f,f,f,f,f,f,f,f,f,f,f,f,f,
m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,l,j,h,g,g,g,g,g,g,g,g,g,g,g,g,
m,m,m,m,m,m,m,m,m,m,m,m,m,m,l,k,j,i,h,g,g,g,g,g,g,g,g,g,g,g,
m,m,m,m,m,m,m,m,m,m,m,m,m,l,k,k,j,i,i,h,g,g,g,g,g,g,g,g,g,g,
m,m,m,m,m,m,m,m,m,m,m,m,l,k,k,k,j,i,i,i,h,g,g,g,g,g,g,g,g,g,
m,m,m,m,m,m,m,m,m,m,m,l,k,k,k,k,j,i,i,i,i,h,g,g,g,g,g,g,g,g,
m,m,m,m,m,m,m,m,m,m,l,k,k,k,k,k,j,i,i,i,i,i,h,g,g,g,g,g,g,g,
m,m,m,m,m,m,m,m,m,l,k,k,k,k,k,k,j,i,i,i,i,i,i,h,g,g,g,g,g,g,
m,m,m,m,m,m,m,m,l,k,k,k,k,k,k,k,j,i,i,i,i,i,i,i,h,g,g,g,g,g,
m,m,m,m,m,m,m,l,k,k,k,k,k,k,k,k,j,i,i,i,i,i,i,i,i,h,g,g,g,g,
m,m,m,m,m,m,l,k,k,k,k,k,k,k,k,k,j,i,i,i,i,i,i,i,i,i,h,g,g,g,
m,m,m,m,m,l,k,k,k,k,k,k,k,k,k,k,j,i,i,i,i,i,i,i,i,i,i,h,g,g,
m,m,m,m,l,k,k,k,k,k,k,k,k,k,k,k,j,i,i,i,i,i,i,i,i,i,i,i,h,g,
m,m,m,l,k,k,k,k,k,k,k,k,k,k,k,k,j,i,i,i,i,i,i,i,i,i,i,i,i,h) ;
0586デフォルトの名無しさん
2007/04/01(日) 18:04:33としてエラーが出てしまいます。なぜでしょう??
0587デフォルトの名無しさん
2007/04/01(日) 18:05:01tstringlist.commatext
tlistitem
0588デフォルトの名無しさん
2007/04/01(日) 18:08:460589デフォルトの名無しさん
2007/04/01(日) 18:17:540590デフォルトの名無しさん
2007/04/01(日) 18:58:43それは p,a,b,c等が定義されてないからでは?
const a='a'; のように定義しておくことと、
あと、2次元配列の場合 ( ) で区切らないといけないよ
0591デフォルトの名無しさん
2007/04/01(日) 21:33:53function GetMojimoji(T:Tstringlist) : string;
var P,Q: Pchar; i:integer;
begin
Result := '';
if T.Count < 1 then exit;
GetMem(P, Length(T.Text) + T.Count +1 );
Q := P;
try
for i:=0 to t.count -1 do begin
Strcopy(Q, Pchar(T[i]));
Inc(Q, Length(T[i]));
Q^ := #$20;
Inc(Q);
end;
Dec(Q);
Q^:=#0;
Result := P;
finally
Freemem(P);
end;
end;
0592デフォルトの名無しさん
2007/04/01(日) 21:38:150593デフォルトの名無しさん
2007/04/01(日) 21:52:590594デフォルトの名無しさん
2007/04/01(日) 22:01:37ShowMessage(t.DelimitedText);
0595デフォルトの名無しさん
2007/04/01(日) 22:14:24>StringReplace(t.Text, sLineBreak, ' ', [rfReplaceAll]);
なるほど、改行をスペースで置換するんですね。
これは、気がつきませんでした。
>>594 t.DelimitedTextでやると" "で囲まれて出てきて駄目ですた。
ありがとうございました。また明日お願いします。
0596583
2007/04/01(日) 22:20:49ありがとう。でも
[エラー] Unit1.pas(278): 未定義の識別子 : 'add'
[エラー] Unit1.pas(280): 未定義の識別子 : 'subitems'
と出ます。もうちょっと教えてください。
0597デフォルトの名無しさん
2007/04/01(日) 22:25:13↓
with listview1.items.add(sl2[0]) do
のような
0598デフォルトの名無しさん
2007/04/01(日) 22:50:38実行時型の変数はいつ初期化されているのでしょうか?
DBGridにデータソースを通じてTQueryを紐付けて
いるんですが、どのタイミングでデータソースが
DBGridに突っ込まれているかがわかりません。
Application.CreateFormが一番怪しいと思っているのですが。
0599デフォルトの名無しさん
2007/04/02(月) 00:56:08ありがとうございます。参考にがんばります。
>>576
コンニャロメガ!
0600583
2007/04/02(月) 02:22:38それだとパラメータが多すぎますと言われます
0601デフォルトの名無しさん
2007/04/02(月) 02:44:34↓
with listview1.items.add do
caption := sl2[0];
のような
0602デフォルトの名無しさん
2007/04/02(月) 02:52:19いくらくだスレだからってコピペで済ませようって言うのは感心できませんなぁ
0603デフォルトの名無しさん
2007/04/02(月) 05:36:55皆さんは実数型⇔整数型の変換はどうやってますか?
初心者の私には
StrToInt(FloatToStr(ExtendedHoge));
これぐらいしか思いつかないのですが
数値を文字列に置き換えるのは何か気持ち悪いので
なんか良い方法があったら教えて下さい
具体的には
divやInt()で求めた実数の整数部分(Extended型)と
Memo.Lines.Countなどの関数のInteger型の戻り値を
ifなどで比べる場合のスマートなやり方が知りたいのです orz
0604デフォルトの名無しさん
2007/04/02(月) 06:57:08RoundとかTruncとか。
0605デフォルトの名無しさん
2007/04/02(月) 07:03:49フォームに貼り付けたコンポーネントのインスタンスの事だよね?
Application.CreateForm で正解。
デバッグ版 DCUを使うにチェックを入れて、ブレークポイントしかけてトレース実行すれば判る
詳しい事は
Delphiコンポーネント設計&開発 完全解説
著: 中村拓男 発行: インプレス
を買って読むといいよ。
0606デフォルトの名無しさん
2007/04/02(月) 07:26:16Star: array[0..29, 0..29] of Char = (
('p','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','b','c','c','c','c','c','c','c','c','c','c','c','c','d'),
('o','p','a','a','a','a','a','a','a','a','a','a','a','a','a','a','b','c','c','c','c','c','c','c','c','c','c','c','d','e'),
('o','o','p','a','a','a','a','a','a','a','a','a','a','a','a','a','b','c','c','c','c','c','c','c','c','c','c','d','e','e'),
('o','o','o','p','a','a','a','a','a','a','a','a','a','a','a','a','b','c','c','c','c','c','c','c','c','c','d','e','e','e'),
('o','o','o','o','p','a','a','a','a','a','a','a','a','a','a','a','b','c','c','c','c','c','c','c','c','d','e','e','e','e'),
('o','o','o','o','o','p','a','a','a','a','a','a','a','a','a','a','b','c','c','c','c','c','c','c','d','e','e','e','e','e'),
('o','o','o','o','o','o','p','a','a','a','a','a','a','a','a','a','b','c','c','c','c','c','c','d','d','e','e','e','e','e'),
('o','o','o','o','o','o','o','p','a','a','a','a','a','a','a','a','b','c','c','c','c','c','c','d','d','e','e','e','e','e'),
('o','o','o','o','o','o','o','o','p','a','a','a','a','a','a','a','b','c','c','c','c','c','d','d','d','e','e','e','e','e'),
('o','o','o','o','o','o','o','o','o','p','a','a','a','a','a','a','b','c','c','c','c','c','c','d','e','e','e','e','e','e'),
('o','o','o','o','o','o','o','o','o','o','p','a','a','a','a','a','b','c','c','c','c','c','d','e','e','e','e','e','e','e'),
('o','o','o','o','o','o','o','o','o','o','o','p','a','a','a','a','b','c','c','c','c','d','e','e','e','e','e','e','e','e'),
('o','o','o','o','o','o','o','o','o','o','o','o','p','a','a','a','b','c','c','c','d','e','e','e','e','e','e','e','e','e'),
('o','o','o','o','o','o','o','o','o','o','o','o','o','p','a','a','b','c','c','d','e','e','e','e','e','e','e','e','e','e'),
('o','o','o','o','o','o','o','o','o','o','o','o','o','o','p','a','b','c','d','e','e','e','e','e','e','e','e','e','e','e'),
0607デフォルトの名無しさん
2007/04/02(月) 07:27:13('o','o','o','o','o','o','o','o','o','o','o','o','o','o','o','p','b','d','e','e','e','e','e','e','e','e','e','e','e','e'),
('n','n','n','n','n','n','n','n','n','n','n','n','n','n','n','n','z','f','f','f','f','f','f','f','f','f','f','f','f','f'),
('m','m','m','m','m','m','m','m','m','m','m','m','m','m','m','l','j','h','g','g','g','g','g','g','g','g','g','g','g','g'),
('m','m','m','m','m','m','m','m','m','m','m','m','m','m','l','k','j','i','h','g','g','g','g','g','g','g','g','g','g','g'),
('m','m','m','m','m','m','m','m','m','m','m','m','m','l','k','k','j','i','i','h','g','g','g','g','g','g','g','g','g','g'),
('m','m','m','m','m','m','m','m','m','m','m','m','l','k','k','k','j','i','i','i','h','g','g','g','g','g','g','g','g','g'),
('m','m','m','m','m','m','m','m','m','m','m','l','k','k','k','k','j','i','i','i','i','h','g','g','g','g','g','g','g','g'),
('m','m','m','m','m','m','m','m','m','m','l','k','k','k','k','k','j','i','i','i','i','i','h','g','g','g','g','g','g','g'),
('m','m','m','m','m','m','m','m','m','l','k','k','k','k','k','k','j','i','i','i','i','i','i','h','g','g','g','g','g','g'),
('m','m','m','m','m','m','m','m','l','k','k','k','k','k','k','k','j','i','i','i','i','i','i','i','h','g','g','g','g','g'),
('m','m','m','m','m','m','m','l','k','k','k','k','k','k','k','k','j','i','i','i','i','i','i','i','i','h','g','g','g','g'),
('m','m','m','m','m','m','l','k','k','k','k','k','k','k','k','k','j','i','i','i','i','i','i','i','i','i','h','g','g','g'),
('m','m','m','m','m','l','k','k','k','k','k','k','k','k','k','k','j','i','i','i','i','i','i','i','i','i','i','h','g','g'),
('m','m','m','m','l','k','k','k','k','k','k','k','k','k','k','k','j','i','i','i','i','i','i','i','i','i','i','i','h','g'),
('m','m','m','l','k','k','k','k','k','k','k','k','k','k','k','k','j','i','i','i','i','i','i','i','i','i','i','i','i','h'));
0608606
2007/04/02(月) 07:37:12基本的には>>590の言っているとおり。
・a,b,c…が定義されていない('a','b','c',…と間違えてる?)
・2次元配列で定義されているのに>>585は1次元配列
・要素数が違う(>>585の定義だと、31x31 のChar型配列)
ので、コンパイルが通らないと思われ。
0609デフォルトの名無しさん
2007/04/02(月) 07:57:20TTableの接続、追加、削除くらいの軽いものを作ってみたのですが、IDEの終了時に
「モジュールntdll.dllのアドレス77FCB8FF6でアドレス0000000000004に対する書き込み違反がおきました」
と、ダイアログが出るようになってしまいました。
コンパイルしたものはそのまま動きます。
このようなエラーが出るときは、なにが原因なのでしょうか?
OS:Win2000 SP3
Pentium 1.6
516MEM
Delphi 5.0 + update
よろしくお願いします。
0610デフォルトの名無しさん
2007/04/02(月) 08:28:53十分荒らしだよ
親切とバカは違う
0611デフォルトの名無しさん
2007/04/02(月) 09:16:15そういうのは良く起きる事なので
自分はプロジェクトファイルから、不要ファイルを削除する癖が付いた。
こうすると、なぜかその手のエラーが出難くなる。
具体的には DelDel.bat というファイルを作って 中身を
del /S *.dsk
del /S *.dsm
del /S *.dcu
del /S *.~*
del /S *.tds
みたいにして、IDEのツールに登録しておくと
0612デフォルトの名無しさん
2007/04/02(月) 10:07:22>自分はプロジェクトファイルから、不要ファイルを削除する癖が付いた。
あ、そうなんですか。
そういえばムダなファイルがあるな…
先輩の方があまり問題にしてないようなので、安心することとします。どうもです。
0613デフォルトの名無しさん
2007/04/02(月) 11:40:26Delphi7くらいから、Delphi2006に至るまで、ずっと発生している問題かな。
Del2007注文してみたけど、多分改善されてないかな。
0614デフォルトの名無しさん
2007/04/02(月) 12:24:34昨日コードギアのページでユーザー登録をして、
本当はver6の無償版のpersonalを押さなければいけないところをver7のほうを押してしまって、
次からver6のアンケートに答えてもアクティベーションキー付のメールが来ないのですが、(迷惑メールにもありませんでした)
どうすればいいでしょうか。
0615デフォルトの名無しさん
2007/04/02(月) 12:28:33> ver7のほうを押してしまって、
これは関係ない。
> メールが来ないのですが
現在申請ページがトラブル中で、メールは来ない。
CodeGear に電話して聞いてみるしかない。
0616デフォルトの名無しさん
2007/04/02(月) 12:30:09即レスありがとうございます。
ver7のメールはすぐに来たんで関係あるのかと思いました・・・。
まあ、トラブルが収まってからもう一度やります。ありがとうございます。
0617デフォルトの名無しさん
2007/04/02(月) 13:12:050618デフォルトの名無しさん
2007/04/02(月) 15:33:29t.Delimiter := ' '; t.DelimitedTextで見事にうまくいきました。
ありがとうございました。
0619デフォルトの名無しさん
2007/04/02(月) 15:36:10中心の角が大きいほうか小さいほうかどっちできるかわからん
対処法内ですか。
0620デフォルトの名無しさん
2007/04/02(月) 16:03:360621デフォルトの名無しさん
2007/04/02(月) 17:51:310622デフォルトの名無しさん
2007/04/02(月) 18:28:320623デフォルトの名無しさん
2007/04/02(月) 23:23:130624デフォルトの名無しさん
2007/04/02(月) 23:27:34Form1.WindowState := wsMaximized;
こういうの自分で調べるのも楽しいと思うんだけどな
0625623
2007/04/02(月) 23:27:37でできました。お騒がせしました。
0626デフォルトの名無しさん
2007/04/02(月) 23:32:14ただ、違いに気付かない可能性も高い。
0627デフォルトの名無しさん
2007/04/02(月) 23:53:47MSDNでPie()引くと、最初の径から2番目の方へ反時計回りに
描かれるとある(要するに角度の増える方向)。
TCanvas.Pieもたぶん同じだべ。
0628デフォルトの名無しさん
2007/04/03(火) 14:14:380629デフォルトの名無しさん
2007/04/03(火) 17:45:410630デフォルトの名無しさん
2007/04/03(火) 17:49:20少なくとも多少は自分で試したんだろ?
添削用のソースを出すように。
0631デフォルトの名無しさん
2007/04/03(火) 20:05:30どうしたらいいでしょうか?
0632デフォルトの名無しさん
2007/04/03(火) 20:06:58簡単な円グラフみたいのを書きたいんですが、CLXのpieみたいな
角度で扇形を書く方法はないでしょうか?
将来的に手書き風円グラフを作ってみたいので、
チャートとか使わずに書いてみたいのです。
0633デフォルトの名無しさん
2007/04/03(火) 20:17:13LB_SETHORIZONTALEXTENTでぐぐる。
0634598
2007/04/03(火) 21:55:34ありがとうございます。
メモリリークの心配を減らすために通常の作り方をやめて、
インスタンスをきっちり管理するフレームワークを作ってまして。
実行時型変数の実体化のタイミングだけよくわからないように
なってました。解決できてよかったです。
0635デフォルトの名無しさん
2007/04/04(水) 00:33:06プロジェクトにunitを追加し、ボタンとかを動的に作成すれば使えるのでしょうか?
0636デフォルトの名無しさん
2007/04/04(水) 01:06:42Yes
0637デフォルトの名無しさん
2007/04/04(水) 01:16:16みすってるよ
0638デフォルトの名無しさん
2007/04/04(水) 03:11:34優しい方、教えてください。
0639デフォルトの名無しさん
2007/04/04(水) 08:08:04{ Public 宣言 }
procedure MyProc(var a:integer;const b:integer);
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var a,b:integer;
begin
a:=1;
MyProc(a,b);
Label1.Caption:=IntToStr(b);
end;
Procedure MyProc(var a:integer;const b:integer);
b:=a+1;
end;
end.
MyProcっていう手続きで、bにa+1を代入したいのですが
MyProc(a,2)だとa:=a+2と同じようなことをしたい
これだとコンパイルできません
Myproc関数のどこを直せばいいんですかね?
0640デフォルトの名無しさん
2007/04/04(水) 08:11:130641デフォルトの名無しさん
2007/04/04(水) 08:21:36Tform1.をつけなきゃだめなんですか。。。
なれないと難しいですね^^;
0642デフォルトの名無しさん
2007/04/04(水) 09:34:31メソッドとたんなる手続きの違いがよくわかってないんだな。
0643デフォルトの名無しさん
2007/04/04(水) 10:28:16type
TForm1 = class(TForm)
private
{ Private 宣言 }
public
{ Public 宣言 }
procedure MyProc(var a:integer;const b:integer);
end;
ここで宣言したってことはTFormクラスのメンバー手続きとしてMyProcを宣言したことになる
ということは実装部は
procedure TForm1(クラス名).MyProc(var a:integer;const b:integer);
としないとダメなのは他のクラス作成の手順と同じ
Tform1.をつけたくないなら
{$R *.dfm}の下だけに
Procedure MyProc(var a:integer;const b:integer);
begin
b:=a+1;
end;
と先ず手続きを定義して
procedure TForm1.Button1Click(Sender: TObject);
var a,b:integer;
begin
a:=1;
MyProc(a,b);
Label1.Caption:=IntToStr(b);
end;
とすればOKだよ
0644デフォルトの名無しさん
2007/04/04(水) 10:34:250645デフォルトの名無しさん
2007/04/04(水) 10:35:16例えば function MySplit(const target: Integer) から Edit1.Textなどが見れないんです。
implementationより下に直接関数を書いてるだけなんですが、これがいけないんでしょうか?
0646デフォルトの名無しさん
2007/04/04(水) 10:36:57Procedure MyProc(var a:integer;const b:integer);
>>b:=a+1;
a:=b+1にしないと
constを書き換えようとしてるというエラーを吐くかと
0647デフォルトの名無しさん
2007/04/04(水) 10:42:26Edit1はForm1の所有物だから。
TForm1.MyfuncのようなForm1のfunctionからなら自由にアクセスできるが
TForm1とかつかない関数からアクセスする場合には、Form1.Edit1といったようにしてアクセスする必要がある。
0648デフォルトの名無しさん
2007/04/04(水) 10:51:11コンパイラーが吐いてるエラー通り未定儀だからです^^;
Edit.TextなどはTFromクラスのプロパティだから
関数内で使う場合は
クラス名.プロパティでつかわないといけないのは当たり前
自作関数内でEdit1.Textなどを参照したいなら
function MySplit(const target: Integer)
begin
Form1.Edit1.Text <<どのクラスのプロパティか明示する
end
とするか
function MySplit(const target: Integer; Edit: TEdit) 引数にクラス型を指定すれば
begin
edit.txt などと中で使えます
end
使う時に
MySplit(target.Edit1,)などとすればOK
0649デフォルトの名無しさん
2007/04/04(水) 13:13:4916進表示なら$数値で$FF=255ってやればいいんだけど
0650デフォルトの名無しさん
2007/04/04(水) 13:36:31簡単にやる方法はない筈
0651デフォルトの名無しさん
2007/04/04(水) 13:42:26function IntToOct(Value: Integer; Digits: Integer):string;
var i:Integer;
begin
Result:='';
for i:=0 to Digits -1 do begin
Result:=Char(Ord('0')+(Value and 7))+Result;
Value:= Value shr 3;
end;
end;
0652デフォルトの名無しさん
2007/04/04(水) 13:46:10どなたか心当たりはありませんか?
0653デフォルトの名無しさん
2007/04/04(水) 14:20:58そりゃ無理矢理やればそうできるけどさあw
stringだし
0655デフォルトの名無しさん
2007/04/04(水) 17:36:27ttp://www.wikihouse.com/DelphiVIP/index.php?%A5%B3%A5%E9%A5%E0%2FDelphi%A4%F2%A4%AA%A4%B7%A4%E3%A4%D9%A4%EA%A4%CB%A4%B7%A4%E8%A4%A6%A1%AA
0656デフォルトの名無しさん
2007/04/04(水) 19:27:33有難う御座います。
0657デフォルトの名無しさん
2007/04/04(水) 21:13:08printf("%d\n",65+'A')
みたいに
int型数値+char型みたいなことができるけど
デルファイじゃできないの?
0658デフォルトの名無しさん
2007/04/04(水) 21:17:140659ななしへたぐらま ◆XcB18Bks.Y
2007/04/04(水) 21:37:26リテラル定数と識別子の違いを理解するのはプログラミングの初歩ですから
きちんと教えたほうが良いでしょう.
昔のBASICなどだとPRINT Aと PRINT "A"の違いをいつの間にか認識することになりますが
VB世代の人たちには意識的に説明しないと駄目なんだと思います.
>>627
VCLのソース(例によってDelphi 5)を見たらそのままAPIのPieを呼び出していました.
>>631
垂直スクロールバーを表示させずに水平スクロールバーだけを表示させるということでしたら
Columnsに1以上を代入してください.
リストボックスコンポではColumnsの値が0だと縦スクロール,1以上だと横スクロールで
1だと横1段,2だと横2段,…という風になります.
>>654
別のやり方としてMySplitをTForm1のメソッドにする方法があります.
というか関数や手続きではなくメソッドもするのが基本です.
ほかのプログラムでも使い回せそうなものだけ関数や手続きにするとよいでしょう.
0660629
2007/04/04(水) 22:03:50procedure TForm1.Button2Click(Sender: TObject);
var
FileName : String;
wapp,wdoc: Variant;
w,h:real;
begin
FileName := 'C:\template.doc';
Wapp := CreateOleObject('Word.Application');
try
wapp.Documents.Open(FileName);
wdoc := Wapp.ActiveDocument;
wdoc.saveas('C:\test.doc');
dbImage1.Picture.SaveToFile('c:\test.bmp');
w := DBImage1.Picture.Width;
h := DBImage1.Picture.Height;
Wdoc.shapes.AddPicture('C:\test.bmp',top:=200,Left:=200,Width:=50,height :=h/w*50);
Wapp.Visible := true;
except
wapp.quit;
end;
end;
いろいろ試行錯誤していったんファイルに落としてからこんな感じで画像の挿入まではできたんですが、
top,leftに何を指定しても表の最初のセルに入ってしまいます。
表の指定セルか表の上から任意の位置に挿入する方法がありましたら教えてください。
あと、ファイルに落とさず直接画像を挿入する方法があればそれも教えてください。
0661ななしへたぐらま ◆XcB18Bks.Y
2007/04/04(水) 22:12:02明示的に型変換する必要があります.
文字から数値への変換はord関数,数値から文字への変換はchr関数を使います.
Delphiの先祖であるPascalではケアレスミスを防ぐという考えから数値型と文字型は厳格に区別されます.
なお関数といってもDelphiコンパイラはサブルーチンを呼び出すのではなく型キャストするだけなので速度上の問題はありません.
0662487
2007/04/04(水) 23:29:34例えば文字列型の変数を生成する場合、
任意でない名前の変数であれば Var S:String;
で済みますが、任意の名前の変数の場合は一体どうすればよいのやら
見当がつきません。
なにとぞご教授のほどをm(_ _)m
0663デフォルトの名無しさん
2007/04/04(水) 23:31:42http://pc11.2ch.net/test/read.cgi/tech/1168356029/l50
0664662です
2007/04/04(水) 23:32:30名前欄を間違えました。
本スレの487氏ではありません。
0665デフォルトの名無しさん
2007/04/04(水) 23:38:16VCLってお手本があるんだからユニット名、クラス名、メソッド名、プロパティ名を参考にすればよし。
何のための機能なのかが明確ならあとは英語の辞書引くだけだし。
0666ななしへたぐらま ◆XcB18Bks.Y
2007/04/05(木) 00:08:16『任意の名前の変数を生成する』って実行中にということですか?
実行時に生成できるのはコンポーネントであって変数ではありません.
設計時にコンポのNameプロパティを書き換えると対応する変数の名前も同じように変わりますが,
これは統合環境が自動的に対応する変数の名前を書き換えているだけです.
的はずれなエスパーレスだったらごめんなさい.
0667662
2007/04/05(木) 00:20:22そうでしたか、ありがとうございました。
お察しのとおり(と解釈したのですが)、プログラムの実行中に、
(例えばEdit)コンポーネントに'ABC'が入力されたされたならば、
var ABC : String;
という効果を顕す方法は?
という意味での質問でした。
拙い日本語で申し訳ございません。
0668610
2007/04/05(木) 00:23:04>リテラル定数と識別子の違いを理解するのはプログラミングの初歩ですから
>きちんと教えたほうが良いでしょう.
おまえさんにとって「きちんと教える」って事は
>>590に答えがあるのにベタベタ貼り付ける事なのか?
流し読みするならレスするな
0669デフォルトの名無しさん
2007/04/05(木) 00:50:15とりあえず死んでくれ
0670デフォルトの名無しさん
2007/04/05(木) 00:51:23俺は個人的には>>668に賛成
口調は悪いけどな
0671583
2007/04/05(木) 01:21:32遅レスだけどありがとう。
>>602
すみません。精進します。
↓で出来ました。
宣言
Listitem:TListitem;
(略)
中身(?
Listitem:= Listview1.Items.Add;
with ListItem do
(略)
0672デフォルトの名無しさん
2007/04/05(木) 01:42:55具体的には何をしたいのでしょう?
Delphiの変数を動的に生成したいというのなら無理ですが
自分でインタプリタを作りたいのであれば努力しだいです。
0673デフォルトの名無しさん
2007/04/05(木) 03:23:41よくある間違いだが説明が難しい。
0674デフォルトの名無しさん
2007/04/05(木) 03:24:390675デフォルトの名無しさん
2007/04/05(木) 05:17:550676デフォルトの名無しさん
2007/04/05(木) 05:39:08動的に変数を生成して何をするつもりなの?
変数はそもそも1つの名前で様々な「値」を格納するためのもの
「値」ごとに変数を作成するなら「値」そのものを使えば良くね?
0677デフォルトの名無しさん
2007/04/05(木) 08:25:09よしっ、わかった。俺エスパー。
連想配列を使うんだ。
Memo1.Lines.Values[Edit1.Text] := '文字';
s := Memo1.Lines.Values[Edit1.Text];
のように使える。
0678デフォルトの名無しさん
2007/04/05(木) 11:26:39回答とは違いますが、
「任意でない名前の変数」→「静的に定義した変数」
「任意の名前の変数」→「動的に変数名を変更する」
という表現をしたほうが、回答者が意図を理解しやすいです。
また、Delphiに限らず、動的に変数名を変更するのは
あまり一般的な方法ではありません。
何のために動的に変数名を変更したいのでしょうか?
そこを言っていただいたほうが、恐らく別の楽な方法を提示できると思います。
0679ななしへたぐらま ◆XcB18Bks.Y
2007/04/05(木) 14:34:39質問者は恐らくリテラル定数と識別子の違いをまだ理解していない状態だと思われたので
>>590では解決せず,具体例を見せてこの違いを理解してもらうのが良いと思ったのですが
「きちんと」という表現はまずかったと思います,すいません.
>>606-607は途中を(中略)とか書いて端折ればレスを大幅に短くすることはできたとは思いますけど,
荒らし呼ばわりはしなくてもよいのではないかと思います.
>>675
virtualとdynamicでは内部処理が違うだけでC++の仮想関数のように働きます.
http://support.borland.com/entry!default.jspa?categoryID=148&externalID=4350&printable=true
dynamic(動的メソッド)だとコードを小さくなるかわりに速度が犠牲になるようですが
普段はvirtual(仮想メソッド)だけ使えばよいのではないかと思います.
0680デフォルトの名無しさん
2007/04/05(木) 14:58:37dynamic相当構文はC++には無い
windowsのメッセージの仕掛けを巧く処理出来るように考えられたものだろう
virtualによる継承やinterfaceの実装は、そのメソッド名がキーになるが
dynamicではメッセージIDがキーになる
だからdynamicの場合別名にする事が可能だ
逆にdynamicの場合、そのメソッドを直接呼び出した場合、virtualとは動作が異なる
dynamicを仮想関数と呼ぶのはその点で誤解を招く
dynamic(動的メソッド)はPerform(Dispatch)による間接呼び出しに対して多態性を提供するもの
virtual (仮想メソッド)は、その名前を使ったメソッドの呼出しに対して多態性を提供するもの
こんなところでどうだろうか?
0681デフォルトの名無しさん
2007/04/05(木) 18:47:050682680
2007/04/05(木) 19:33:570683デフォルトの名無しさん
2007/04/05(木) 21:07:000684デフォルトの名無しさん
2007/04/05(木) 21:51:54それは単に特性に合わせて使い分けた結果だろ(^^;
virtual はメソッドのポインタのエントリを継承するたびにコピーする.
その結果メモリ消費量が多いけどテーブルを一つだけ見ればいいので速い.
virtual のメソッドテーブルは VMT(Virtual Method Table)と呼ばれる.
dynamic は親クラスのメソッドテーブルへのポインタを保持する.
その結果メモリ消費量は少ないけど、自分のクラスで定義されていないメソッドは親のテーブルにさかのぼって参照しないといけないので遅い.
dynamic のメソッドテーブルは DMT(Dynamic Method Table)と呼ばれる.
0685デフォルトの名無しさん
2007/04/05(木) 22:04:04dynamic = 遅い代わりに消費メモリが少ない virtual
まあ、空きメモリが1桁だった頃の遺物だ
0686662&668
2007/04/05(木) 23:26:10そもそもの目的というものは実はありませんでして、
大昔のふべ(CZ-8FB02)では(マシン語でルーチンを書かなければ)できなかったことが、
今時のプログラミング言語ならば出来るのかも、
と思い質問してしまいました。
「任意でない名前の変数の生成」というのは、かなり特殊なものである、
ということは理解できました。
レスを下さった皆さまに御礼申し上げます。
※668さんの指摘された事柄ではありますが、変数名の「変更」ではなく、
飽くまでも「生成」についての質問でしたので、
ここでは敢えて「任意でない名前の変数」との表記を
継続いたしました。
0687訂正です
2007/04/05(木) 23:28:47「668さん」 → 「678さん」
です。
0688デフォルトの名無しさん
2007/04/06(金) 01:14:33変数に対して何か誤解がありません?
コンパイル後のオブジェクトコードに変数は残りませんよ.
大半はスタックポインタからの相対アドレス、一部はレジスタでメモリには割り付けられません.
変数名が存在するのはソースコードまでですよ.
インタプリタ言語とかは変数テーブルを持っていますけどね.
0689672
2007/04/06(金) 01:45:26ひょっとしたら動的なメモリ割り当てのことかなとか?思ってたんですが、、、
>大昔のふべ(CZ-8FB02)では(マシン語でルーチンを書かなければ)できなかったことが、
ますます意味がわかりませんね
かつてHuBASICでもZ80でもばりばりプログラム書いてた身としては、
なんのことなのかものすごく気になりますw
0690デフォルトの名無しさん
2007/04/06(金) 12:29:58例えばフォームにボタンとラベルがあって、
vbのようにそのまま
procedre aaa(); //←自分で作った
begin
label.Caption := 'aaa';
end;
procedure TForm1.buttonClick(ry);
begin
aaa();
end;
とやろうとしたらaaaのほうでラベルを読み込んでくれませんでしたorz
なにか付け足すものがあるのでしょうか?
0691デフォルトの名無しさん
2007/04/06(金) 12:49:210692デフォルトの名無しさん
2007/04/06(金) 12:53:38procedre tform1.aaa();
begin
label.Caption := 'aaa';
end;
0693デフォルトの名無しさん
2007/04/06(金) 12:54:50目的ではなく手段だけ尋ねられているから、分かりにくいんですね。
処理中の変数の生成であれば、やはり「任意・・・」よりも「動的な変数の生成」
という表現のほうが、一般的には意図を把握しやすいと思います。
元も子もないのですが、仮に動的に変数名が生成されても、それを処理する部分で
結局つまづくのではないかと思いますが・・・("If" などでその変数名を指定出来ない)。
そもそも一般的な方法ではないので、あまりいい方法とは言えないと思います。
動的に変数名を指定し生成することは不可能ですが、ご存知のとおりSetLengthで
配列変数を動的に増やすことは可能です。
または、2次元配列で管理すれば、任意の値と動的な文字列を並列に保てます。
0694デフォルトの名無しさん
2007/04/06(金) 13:04:02できた!
SUGEEEEEEまじでありが�d!!
0695デフォルトの名無しさん
2007/04/06(金) 13:32:39リロードしてなかったよorz
0696デフォルトの名無しさん
2007/04/06(金) 14:48:450697ななしへたぐらま ◆XcB18Bks.Y
2007/04/06(金) 16:23:58昔のBASICはインタープリタで実行時にランタイムルーチンがソースコードを解釈しながら実行していましたので
実行時に変数名を参照したり変更したりできたわけですね.
しかしDelphiを含め,近年の開発ツールはコンパイラです.
つまりソースコードを完全なマシン語ルーチンに変換してから実行します.
(JavaとC#やVB.netの.net Frameworkのように架空のCPUのマシン語に変換しているものもあります)
そのためソースコードにある「変数」はメモリ領域になるかCPUのレジスタに化けます.
ソースコードにあった変数名は消滅して$0000D038みたいなメモリの番地か
EDXとかR7みたいなレジスタの名前が残っているだけで変更することもできません.
ある情報に名前を付けて管理する場合は
取り扱いたい情報に合わせてレコード型やクラス型を定義して使うか,
Delphiにはありませんが言語によっては配列の各要素に名前を付けたもの(連想配列)を使うこともできます.
(Delphiでも似たような処理はできると思います)
0698デフォルトの名無しさん
2007/04/06(金) 16:30:560699デフォルトの名無しさん
2007/04/06(金) 16:46:27インタプリタとコンパイラの違いで動的変数定義が出来ないのではない。
コンパイラがそういう仕様だからだよ。
0700デフォルトの名無しさん
2007/04/06(金) 17:21:50英語で書いてあるので意味不明。
0701デフォルトの名無しさん
2007/04/06(金) 17:27:04それスパムメールだぞ
無視すんのが一番
0702デフォルトの名無しさん
2007/04/06(金) 20:08:37PL/I のプリプロだけど こういう意味じゃないとは思うが
0703デフォルトの名無しさん
2007/04/06(金) 23:51:090704527
2007/04/07(土) 00:31:04大変亀レスで恐縮ですが、レスありがとうございました。
ソースを見てもコンポーネントの使い方がいまいち分からなかったので、
結局自作コンポーネントを作ってしまいました。
想定外の操作をすると何が起こるかわからないという危険な状態ですが、
一応自分で意図していた程度のことはできるようになりました。
本当にありがとうございました。
なんだか四角い車輪が出来たような気もしますが、
せっかく作ったのにもったいないので晒しておきます。
http://babelii.s19.xrea.com/soft/CommProcessCompo/CommProcessCompo001.zip
0705デフォルトの名無しさん
2007/04/07(土) 00:48:090706デフォルトの名無しさん
2007/04/07(土) 02:46:58PCharをプシャーと読んでいるのは俺だけですか?
0707デフォルトの名無しさん
2007/04/07(土) 02:48:360708デフォルトの名無しさん
2007/04/07(土) 03:29:180709デフォルトの名無しさん
2007/04/07(土) 07:12:23>一応自分で意図していた程度のことはできるようになりました。
そういうあぶない物を平気でうpするとは…
これがゆとry
0711デフォルトの名無しさん
2007/04/07(土) 08:51:570712527
2007/04/07(土) 10:49:01自分の言いたいことを説明するだけの文章力がないから誤魔化しているんだろうけど。
0713デフォルトの名無しさん
2007/04/07(土) 11:19:030714デフォルトの名無しさん
2007/04/07(土) 11:23:130715610
2007/04/07(土) 12:13:27そ う だ さ く ら を 見 に 行 こ う
0716デフォルトの名無しさん
2007/04/07(土) 12:44:400717デフォルトの名無しさん
2007/04/07(土) 13:11:05お前そうやって年中ここの住人やコテを煽ってるんだな
0718デフォルトの名無しさん
2007/04/07(土) 15:53:31>>712
ここは釣堀ですか?
0719527 ◆0ns.hcXrLI
2007/04/07(土) 17:04:41念のためにトリつけておきますね。
0720デフォルトの名無しさん
2007/04/08(日) 00:12:55postMessage(TargetWnd,WM_KEYUP,VK_ESCAPE,0);
これが、sendmessageでもESCが何ででしょう?
0721デフォルトの名無しさん
2007/04/08(日) 00:22:35上のだとESCが押されたことにならないのです。
他のF12とかならなるのですけれども。
0722デフォルトの名無しさん
2007/04/08(日) 00:54:380723デフォルトの名無しさん
2007/04/08(日) 01:24:200724デフォルトの名無しさん
2007/04/08(日) 01:52:020725デフォルトの名無しさん
2007/04/08(日) 01:52:540726デフォルトの名無しさん
2007/04/08(日) 02:05:310727デフォルトの名無しさん
2007/04/08(日) 02:38:05この度クレジット決済でスムーズにダウンロード売買が
できるサイトを立ち上げました。
つhttp//web-cart.jp/
※会員登録&商品のうp全て無料です!
クオリティの高い商品のうpをお待ちしてますw
0729デフォルトの名無しさん
2007/04/08(日) 15:03:58>文字から数値への変換はord関数,数値から文字への変換はchr関数を使います.
>Delphiの先祖であるPascalではケアレスミスを防ぐという考えから数値型と文字型は
>厳格に区別されます.なお関数といってもDelphiコンパイラはサブルーチンを呼び出す
>のではなく『型キャスト』するだけなので速度上の問題はありません.
型キャストだったんですね。知らなかった…
それで、VCLのどの辺で実装されてるのか知りたく思ったのですけれども
C:\Program Files\Borland\Delphi6\Source\Rtl\Win
C:\Program Files\Borland\Delphi6\Source\Vcl
の辺りを探せば良いでしょうか? Delphi6のperspnalだと無理ですか?
kylixの実装でも構いません。windows上で読めるsourceを探しています。
どうぞよろしくお願いします m(_ _)m
0730デフォルトの名無しさん
2007/04/08(日) 15:05:330731デフォルトの名無しさん
2007/04/08(日) 15:16:33Turbo Delphi ExplorerにはVCLソースついてるから
入れるだけ入れとけ。
0732デフォルトの名無しさん
2007/04/08(日) 15:18:141、ソースがpascalで書かれていて普通に読めるもの
2、ソースがasmで書かれている普通の関数 例 SysUtils.pasの多くの関数
3、System.pasに特殊な形で記載されてる関数
3-1 先頭 _が付いているが型情報などを付けてないだけの特殊な関数
3-2 _WriteXXXX のように補助関数があり、コンパイラが自動的に引数に応じて分解する関数
4、ソースは無く、コンパイラがその場で変換する
例 Ord Abs
のように別けられますが、4の場合はコンパイラそのものが処理しているので
どこにもそのソースはありません。 コンパイル結果として出て来るだけです
0733デフォルトの名無しさん
2007/04/08(日) 16:29:52TSplitterでサイズの変更をしているのですが、サイズ変更の設定を保持しないようにするにはどうしたらよいでしょうか?
常にデフォルト状態で起動したいんです。
よろしくお願いいたします。
0734デフォルトの名無しさん
2007/04/08(日) 16:35:05それは自分じゃないの?
0735デフォルトの名無しさん
2007/04/08(日) 16:42:060736デフォルトの名無しさん
2007/04/08(日) 18:22:39EditのOnEnteにButton1Clickを設定しても上手く動きません。実際に動かすと、フォーカスを得たときにイベントが発生しているようです。
どこが間違っているのでしょうか?Turbo Delphi 2006です。
0737デフォルトの名無しさん
2007/04/08(日) 18:31:04procedure TForm1.Button1Click(Sender: TObject);
begin
showmessage(edit1.Text);
end;
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if key=chr(vk_return) then button1.OnClick(self);
end;
0738729
2007/04/08(日) 18:41:09>4、ソースは無く、コンパイラがその場で変換する
よく考えたら、型キャストなのだから、関数を呼んでる訳がないですよね orz
>>731
インストールのほう大変そうなので5月の連休辺りに挑戦してみようと思います。
http://www.turboexplorer.com/jp/downloads BDNのアカウントを取得->インストールキーの入手
http://itpro.nikkeibp.co.jp/article/COLUMN/20061127/254990/?ST=develop&P=2 ファイルを三つ落す
http://itpro.nikkeibp.co.jp/article/COLUMN/20061127/254990/?ST=develop&P=3 モジュールを五つインストールする
ありがとうございました!助かりました!
0739デフォルトの名無しさん
2007/04/08(日) 20:32:10OnEnter ってエンターキーのことではないぞ。
こんな時普通は、Default プロパティを True にする。
0740デフォルトの名無しさん
2007/04/08(日) 20:56:21pythonのpickleに似てるような気がするけど。
0741デフォルトの名無しさん
2007/04/08(日) 22:56:070742デフォルトの名無しさん
2007/04/08(日) 22:58:23いちいちそんなレスしなくて結構です
0743デフォルトの名無しさん
2007/04/08(日) 23:12:33つまりさ、CなんかだとINIファイルを作るのが大変だったりするわけで、
そういう場合、設定をファイル化するのに簡単な方法が型付きファイル
設定用のレコード型を作ってさ、それを読み書きするのよ。
INIファイルにくらべると、設定ファイルはバイナリエディタでしか見れないというのがやっかいだな
0744デフォルトの名無しさん
2007/04/08(日) 23:23:000745デフォルトの名無しさん
2007/04/08(日) 23:28:49ストリームに対して構造体をそのサイズだけ writeするのと等価だから
そっちで書いた方がいいよ
0746デフォルトの名無しさん
2007/04/08(日) 23:47:07バイナリデータを読み書きする時たまに使うぐらい
レコード型の配列なんかを扱う場合にはまあ使える
TFileStreamとかTMemoryStreamを使ったほうが楽だけど
それらはファイル全体をメモリに読み込むのでメモリを多く使っちゃう
もっとも湯水のごとくメモリが使える今となっては大した問題じゃない
もはや過去の産物
0747デフォルトの名無しさん
2007/04/09(月) 00:30:10>それらはファイル全体をメモリに読み込むので
そんな事有りません。
0748デフォルトの名無しさん
2007/04/09(月) 01:00:31デル6パーソナルで、EXCEL関連を操作しようとしたらどういう方法がよいでしょうか?
0749デフォルトの名無しさん
2007/04/09(月) 01:46:130750デフォルトの名無しさん
2007/04/09(月) 01:50:59どうもです。
その線であたってみます!
0751お願いします
2007/04/09(月) 07:42:54最近Delphiを始めた初心者です。
RichEditに入力された文字列に検索をかけたくて、FindTextメソッドを試しているのですが、どうもうまくいきません。
RichEdit1に"This is a test."という文字列が入力されているとお考えください。
procedure TForm1.Button2Click(Sender: TObject);
var i: Integer;
begin
i := RichEdit1.FindText('test',0,Length(RichEdit1.Lines.Text),[]);
RichEdit1.SelStart := i;
RichEdit1.SelLength := 4;
end;
こんな具合にテストしているのですが、必ず文末の空白部分が選択されてしまいます。
This is a test.■
こんな具合です。
デバッグしてみると、FindTextを使っている行で、-1の値しか戻ってきていません。
つまり、検索された文字は存在しないものと認識されてしまいます。なぜ?
どなたかご教示ください。
もうちょっとで泣きそうでびびてばびでぶ。
0752デフォルトの名無しさん
2007/04/09(月) 07:44:16また、実際運用するとなると、何件くらいにとどめておくのが現実的なんでしょうか?
0753デフォルトの名無しさん
2007/04/09(月) 07:51:10すげー抽象的
0754デフォルトの名無しさん
2007/04/09(月) 07:55:28procedure TForm1.Btn1Click(Sender: TObject);
var i,len: Integer;
begin
RichEdit1.Lines.Text:='"This is a test."';
len:=Length(RichEdit1.Lines.Text);
i := RichEdit1.FindText('test',0,len,[]);
RichEdit1.SetFocus;
RichEdit1.SelStart := i;
RichEdit1.SelLength := 4;
end;
0755デフォルトの名無しさん
2007/04/09(月) 08:04:57フィールド数によって変わるんですか?
0756デフォルトの名無しさん
2007/04/09(月) 08:14:19EXCEL思い浮かべてみればいいと思うよ
0757デフォルトの名無しさん
2007/04/09(月) 08:36:17ファイルサイズ2Gが制限になるという事。
レコードサイズで除算すれば求まるだろう。
その他の細かい制限は
DBIMAXで始まる変数にあったように思う
0758デフォルトの名無しさん
2007/04/09(月) 10:01:48なるほど…
やっぱオラクルとかの勉強に切り替えたほうがいいみたいですね。
お勧めのDBを教えてもらっていいですか?
>>757
ありがとうございます。
0759デフォルトの名無しさん
2007/04/09(月) 10:13:100760デフォルトの名無しさん
2007/04/09(月) 11:19:330761デフォルトの名無しさん
2007/04/09(月) 14:47:01j:Integer;
Line : String;
j=0;
Line := 'a,b,c,d,e,f';
だとして、
gridstring1[0,j]に,で区切られた語を入れる
0 1
j |a ̄ ̄ ̄| ̄ ̄ ̄|
j+1|b ̄ ̄ ̄| ̄ ̄ ̄|
j+2|c ̄ ̄ ̄| ̄ ̄ ̄|
|  ̄ ̄ ̄| ̄ ̄ ̄|
という風に表示させたいのですがどうすればいいのでしょうか、
聞きすぎるのもよくないとは思いますが説明してあるサイトだけでもいいのでご存知でしたらよろしくお願いします。
0762デフォルトの名無しさん
2007/04/09(月) 15:16:420763デフォルトの名無しさん
2007/04/09(月) 15:20:100764デフォルトの名無しさん
2007/04/09(月) 16:29:21できました、ありがとう!
これで山を一つ越えた気がした・・・
>>763
それはまんまですねw
0765デフォルトの名無しさん
2007/04/09(月) 16:31:53あらゆるところに使われまくってるから理解していないと効率が悪すぎる。
0766お願いします
2007/04/09(月) 17:29:44レスありがとうございます。
>>754のprodedureの中身をそのままコピーしても同じ結果です。
文字コードか何かの関係でしょうか。
0767デフォルトの名無しさん
2007/04/09(月) 17:50:08FindText('text',・・・
だったりしてw
0768デフォルトの名無しさん
2007/04/09(月) 18:25:11同じ結果っていうのは
>必ず文末の空白部分が選択されてしまいます。
この症状のままってこと?
>>754は
procedure TForm1.Btn1Click(Sender: TObject);
になってるから
そのままコピペだけだとエラーなっちゃうはずだけど
まさかそこからじゃないよな?
>prodedure
を見て少し不安になったw
0769デフォルトの名無しさん
2007/04/09(月) 18:38:04どなたか>>720 721をおながいします
0770お願いします
2007/04/09(月) 19:18:23>この症状のままってこと?
はい。そうです。
>procedure TForm1.Btn1Click(Sender: TObject);
>になってるから
>そのままコピペだけだとエラーなっちゃうはずだけど
>まさかそこからじゃないよな?
中身をコピペしただけです。
コンパイルエラーはありません。
testとtextの間違いでもありません。
あと、半角と全角の間違いとかでもありません。
コーディングミスではなさそうなのですが。。。
ただ、英語バージョンなので、RichEditのフォントをPゴシックにしたり、
プロパティを多少いじりました。
そこら辺が問題なのでしょうか。
0771デフォルトの名無しさん
2007/04/09(月) 19:23:09> ただ、英語バージョンなので、RichEditのフォントをPゴシックにしたり、
> プロパティを多少いじりました。
> そこら辺が問題なのでしょうか。
デフォルトに戻して試してみればいいんじゃない?
0772デフォルトの名無しさん
2007/04/09(月) 22:59:35Delphi2005ユーザーの間では事実上のUpdate4「2005/09/13 非公式パッチ」
って今はもう手に入らないのでしょうか?
ググっても見つかりませんでした。
0773デフォルトの名無しさん
2007/04/09(月) 23:07:52普通にダウンロードできますが?
0774デフォルトの名無しさん
2007/04/09(月) 23:40:12Opera □\(.. )
0775お願いします
2007/04/10(火) 05:02:48ありがとうございます。
デフォルトに戻しても同じ結果でした。
そこで、Delphi for .Net から Delphi for Windows に切り替えて試したみたところ、何とうまくいきました。
これは.Netコンポーネントのバグなのでしょうか。
この点について情報をお持ちの方がいらっしゃいましたら、ご提供お願いします。
抜本的な解決には至りませんでしたが、アドバイスしてくれた皆さん、ありがとうございました。
また何かありましたら、よろしくお願いします。
0776デフォルトの名無しさん
2007/04/10(火) 07:04:44こんなコードで試してみたけど、ちゃんとESCも送れるようだよ。
相手が反応しないのだとしたら、相手の問題じゃないの?
procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char);
begin
memo1.Lines.Add(format(' %2.2X ',[ord(Key)]));
end;
procedure TForm1.Button1Click(Sender: TObject);
var TargetWnd:hwnd;
begin
TargetWnd:=Memo1.Handle;
postMessage(TargetWnd,WM_KEYDOWN,VK_ESCAPE,0);
postMessage(TargetWnd,WM_KEYUP,VK_ESCAPE,0);
end;
0777デフォルトの名無しさん
2007/04/10(火) 16:11:320778デフォルトの名無しさん
2007/04/10(火) 20:43:44ありがとうございます。もうちょっと色々試してみます。
0779デフォルトの名無しさん
2007/04/11(水) 00:46:29その上にラベル置いても下に隠れちゃうんだけどバグ?
ボタンとかは正常に手前に表示されるのに。
GBを背面に移動しても表示は変わらず。
0780デフォルトの名無しさん
2007/04/11(水) 03:56:36貼りなおしてみては? 貼る順番はだいじだよ。
0781デフォルトの名無しさん
2007/04/11(水) 07:50:35だから、Zオーダーは貼り付けた先と同じ
その上に別の窓を貼り付けたら当然隠れちゃうよ。
ラベルではなく StaticText ならTWinControl 継承だから 上に来る事も出来るよ
0782154
2007/04/11(水) 15:33:44>>162のプログラムで、コマンドプロンプトに渡したファイルが
クローズできていない?のか、プログラムからファイルを上書きしようとしたときに
EFCreateErrorが出ます。
回避するにはどうすればいいでしょうか?
>>159の部分は変わっていません。
0783デフォルトの名無しさん
2007/04/11(水) 17:53:020784デフォルトの名無しさん
2007/04/11(水) 19:38:58ディレクトリはあるよね?
0785デフォルトの名無しさん
2007/04/11(水) 19:42:43むか〜し(Delphi7だったか?)作ったデータベースプログラムの
プロジェクトファイルを開こうとしたら、
ネットワークの初期化に失敗しました。
「ファイルまたはディレクトリが存在しません。
ファイル:C:\PDOXUSR.NET
アクセスは拒否されました。」
などというメッセージが出てきました。
これって、Paradoxのファイル共有時に使う設定ファイルか何かだったような
記憶があるのですが、たしかにCドライブにそんなファイルはありません。
Delphi7のときは、インストールすると勝手にできていたような…。
いまどきParadoxファイルなんか使うなよ!ということなんでしょうか?
そういえば、SQLエクスプローラも付いてないみたいだし…。
参ってます。よろしくお願いします。
0786デフォルトの名無しさん
2007/04/11(水) 19:45:12そういう仕様上のことはBorlandに直接聞いた方が…
0787デフォルトの名無しさん
2007/04/11(水) 21:40:46プロジェクト内にActive=TrueなTTableコンポーネントがあったりして、それをローディングすると
ParadoxのDBを開こうとして、んでエラーになる、という流れなのでは?無視してプロジェクトを
開いてTTableコンポーネントを含むフォーム/データモジュールを保存して閉じる、というのは駄目?
0788デフォルトの名無しさん
2007/04/12(木) 08:00:090789デフォルトの名無しさん
2007/04/12(木) 08:31:21だとすると、まずPDFファイルを描画モジュールに分解するかビットマップ又はwmfに変換しないといけないけど、
その目処はついてるの?
0790デフォルトの名無しさん
2007/04/12(木) 12:20:13Delphiのソース公開されてるものってないですかね。
拡大鏡つきだとなおいいです。
0791デフォルトの名無しさん
2007/04/12(木) 13:18:150792デフォルトの名無しさん
2007/04/12(木) 14:22:31procedure TForm1.Timer1Timer(Sender: TObject);
var
pt: TPoint;
h: HDC;
c: TColor;
begin
GetCursorPos(pt);
h := GetDC(0);
with TCanvas.Create do
try
Handle := h;
c := Pixels[pt.x, pt.y];
finally free; ReleaseDC(0, h) end;
Color := c;
Edit1.Text := format('%6.6X', [c]);
end;
0793デフォルトの名無しさん
2007/04/12(木) 14:30:03procedure TForm1.Timer1Timer(Sender: TObject);
var
pt: TPoint;
h: HDC;
c: TColor;
x, y: Integer;
begin
GetCursorPos(pt);
h := GetDC(0);
with TCanvas.Create do
try
Handle := h;
for x := -16 to 16 do
for y := -16 to 16 do
begin
c := Pixels[pt.x+x, pt.y+y];
PaintBox1.Canvas.Brush.Color := c;
PaintBox1.Canvas.Rectangle(x * 5, y * 5, x * 5 + 5, y * 5 + 5);
end;
finally free;
ReleaseDC(0, h)
end;
end;
0794qwerty
2007/04/12(木) 17:21:25分かりません。 教えてください。
0795デフォルトの名無しさん
2007/04/12(木) 17:27:460796qwerty
2007/04/12(木) 17:48:262次方程式の解を求めるプログラムで使いたいんですよ........
0797デフォルトの名無しさん
2007/04/12(木) 17:53:13なんで2次方程式の解を求めたいんだ?
それも数値で求めるんじゃなく数式処理系の解を
宿題じゃなけりゃ仕事か?
0798デフォルトの名無しさん
2007/04/12(木) 17:54:420799デフォルトの名無しさん
2007/04/12(木) 17:56:220800デフォルトの名無しさん
2007/04/12(木) 17:56:540801デフォルトの名無しさん
2007/04/12(木) 18:50:49procedure TForm1.Button1Click(Sender: TObject);
var
n, a, b, k, i: Integer;
var
s: string;
label
loop;
begin
n := StrToInt(Trim(Edit1.Text));
a := 1;
b := n;
s := '';
loop:
for i := 2 to Trunc(sqrt(b)) do
begin
k := b div (i * i);
if k * i * i = b then
begin
a := a * i;
b := k;
s := s + IntToStr(i) + ' * ';
goto loop;
end;
end;
s := s + '√' + IntToStr(b);
Edit2.text := s;
end;
0802801
2007/04/12(木) 19:09:250803qwerty
2007/04/12(木) 19:51:050804デフォルトの名無しさん
2007/04/12(木) 19:54:39>>801で不満なの? どう不満?
0805デフォルトの名無しさん
2007/04/12(木) 20:10:26fStop, fGate: boolean;
procedure TForm1.Button1Click(Sender: TObject);
var a, b, k, i: Integer;
s: string;
label loop;
begin
if fGate then begin fStop := True; fGate := false; exit; end;
fGate := True;
while n>0 do begin
s := '√' + IntToStr(n) + ' = ';
a := 1; b := n;
loop:
for i := 2 to Trunc(sqrt(b)) do begin
k := b div (i * i);
if k * i * i = b then begin
a := a * i;
b := k;
s := s + IntToStr(i) + ' * ';
goto loop;
end;
end;
if a <> 1 then
if b = 1 then Memo1.Lines.Add(copy(s, 1, length(s) - 3))
else Memo1.Lines.Add(s + '√' + IntToStr(b));
inc(n);
if (n and $FF) = 0 then Application.ProcessMessages;
if fStop then break;
end;
fGate := false; fStop := false;
end;
0806デフォルトの名無しさん
2007/04/12(木) 20:22:220807デフォルトの名無しさん
2007/04/12(木) 21:04:040808デフォルトの名無しさん
2007/04/12(木) 21:09:47宿題かんけいは、
Pascalの宿題は俺にやらせろ!!Part2
http://pc11.2ch.net/test/read.cgi/tech/1136994325/
こっちにお願いね
0809デフォルトの名無しさん
2007/04/12(木) 21:12:29だって例えば5までいってたら5以下では割れないから
0810デフォルトの名無しさん
2007/04/12(木) 21:16:250811デフォルトの名無しさん
2007/04/12(木) 21:16:36goto文を使っているところとか。
0812デフォルトの名無しさん
2007/04/12(木) 21:33:41for i := 2 to Trunc(sqrt(b)) do begin
k := b div (i * i);
if k * i * i = b then begin
a := a * i;
b := k;
s := s + IntToStr(i) + ' * ';
goto loop;
end;
この部分
repeat
Flag:=True;
for i := 2 to Trunc(sqrt(b)) do begin
k := b div (i * i);
if k * i * i = b then begin
a := a * i;
b := k;
s := s + IntToStr(i) + ' * ';
Flag:=False;
end;
until Flag = True;
じゃダメなん?
0813デフォルトの名無しさん
2007/04/12(木) 21:50:33goto だと for ループをブレークして、なおかつリピート出来るからね
0814デフォルトの名無しさん
2007/04/12(木) 21:57:29Goto文は最後の手段
できるだけ使わない方が良い
0815デフォルトの名無しさん
2007/04/12(木) 22:10:57何で嫌われてるのかね?
おいらは使いまくってるよ
0816デフォルトの名無しさん
2007/04/12(木) 22:26:15goto が嫌いなら while にすれば >>809も簡単だ
procedure TForm1.Button1Click(Sender: TObject);
var
n, a, b, sqrt_b, k, i: Integer;
s: string;
begin
n := StrToInt(Trim(Edit1.Text));
a := 1;
b := n;
s := '';
sqrt_b := Trunc(sqrt(b));
i := 2;
while i <= sqrt_b do
begin
k := b div (i * i);
if k * i * i = b then
begin
a := a * i;
b := k;
s := s + IntToStr(i) + ' * ';
sqrt_b := Trunc(sqrt(b));
end
else
inc(i);
end;
s := s + '√' + IntToStr(b);
Edit2.text := s;
end;
0817デフォルトの名無しさん
2007/04/12(木) 22:51:51var
TBL: array[WORD] of WORD;
とテーブルを作って
>>816 の inc(i) を i := TBL[i];
素数飛ばしのテーブルは
procedure makeTBL;
var
i, j, Last: Integer;
label
skp;
begin
Last := 0;
for i := High(WORD) downto 1 do
begin
for j := 2 to Trunc(Sqrt(i)) do
if (i mod j) = 0 then
goto skp;
TBL[i] := Last;
Last := i;
skp:
end;
end;
0818デフォルトの名無しさん
2007/04/12(木) 23:17:49「使用許諾コードお問い合わせ窓口」へのE-Mail/FAXでのご質問書式
ttp://dn.codegear.com/article/33554
↑のテンプレ通りに書いてメールでコードをもらうことが出来ました。
以上、お知らせとして。
※パソナル6は↑しなくても起動出来るのは知ってるけど、やっぱり
ちゃんとすることはしないとね。
昨日メールして、今届いてました。ちゃんとコードも入力出来ました。
※私の場合はパソナル6なので、「ユーザーID」は書いてません。
0819デフォルトの名無しさん
2007/04/13(金) 01:06:27DelphiからExcelさんにお願いすればいいじゃないか
0820デフォルトの名無しさん
2007/04/13(金) 08:05:51>pdf って PDFファイルの事?
はい
>だとすると、まずPDFファイルを描画モジュールに分解するかビットマップ又はwmfに変換しないといけないけど、
>その目処はついてるの?
いいえ。
ただこれができれば帳票ツールほぼ不要だなと思いまして。
0821ミ,,゚Д゚彡 ◆A6VzDeLphI
2007/04/13(金) 09:12:310822デフォルトの名無しさん
2007/04/13(金) 11:41:13以下のコードだとSendでエラーが出ます。
procedure TForm1.FormCreate(Sender: TObject);
var
http: TWinHttpRequest;
begin
http := TWinHttpRequest.Create(self);
http.Open('GET','http://www.2ch.net',False);
http.Send('');
Memo1.Text := http.ResponseText;
end;
ですが以下のコードですと正常に動作します。
procedure TForm1.FormCreate(Sender: TObject);
var
http: IWinHttpRequest;
begin
http := CoWinHttpRequest.Create;
http.Open('GET','http://www.2ch.net',False);
http.Send('');
Memo1.Text := http.ResponseText;
end;
どちらのコードもCoInitializeは呼んでいます。
なぜ上記のコードだとエラーがでるのでしょうか?
0823デフォルトの名無しさん
2007/04/13(金) 13:32:13>>782
htmlファイルを編集しています。
perlプログラムでそれを解析し、解析結果を得ています。
しかしそのファイルをプログラム(htmlエディタです)から上書きしようとすると、エラーになります。
>>784
ディレクトリではなくファイルがあります。
0824823
2007/04/13(金) 13:34:580825823
2007/04/13(金) 13:50:06ファイルパスを""でくくっていて、それを作ろうとしたためできなかったようです。
ありがとうございました。
0826デフォルトの名無しさん
2007/04/13(金) 13:50:34植物[TAB]ナメコ|シメジ|エリンギ
色の名前[TAB]ff0000(赤)|00ff00(緑)|0000ff(青)
上記のような形式の辞書ファイル dict.dat を
listbox1に、魚、植物、色の名前
listbox2に、"|"で分けられた登録データを展開
listbox1 - listbox2
魚 - いわし
さんま
とびうお
こんな感じで読み込ませたいのですがどうすれば
良いでしょうか?よろしくお願いします。。。
0827デフォルトの名無しさん
2007/04/13(金) 13:59:260828デフォルトの名無しさん
2007/04/13(金) 14:04:16Stripはマイお気に入り関数
// 文字列sに含まれるdelimiterより左側の文字列をsから削除して戻り値にする
function Strip(var s: String; delimiter: String): String;
var
i: Integer;
begin
i := AnsiPos(delimiter, s);
if i = 0 then
begin
Result := s;
s := '';
end
else
begin
Result := Copy(s, 1, i-1);
s := Copy(s, i+Length(Delimiter), High(Integer));
end;
end;
var s, t: String;
s := '魚'+#9+'いわし|さんま|とびうお';
t := Strip(s, #9); // t = '魚'
t := Strip(s, '|'); // t = 'いわし'
t := Strip(s, '|'); // t = 'さんま'
t := Strip(s, '|'); // t = 'とびうお'
0829デフォルトの名無しさん
2007/04/13(金) 14:08:470830826
2007/04/13(金) 14:47:22procedure TForm1.Button1Click(Sender: TObject);
begin
s := '魚'+#9+'いわし|さんま|とびうお';
t := Strip(s, #9); // t = '魚'
listbox1.Items.Add(t);
listbox2.Items.Add(Strip(s, '|')); // 'いわし'
listbox2.Items.Add(Strip(s, '|')); // 'さんま'
listbox2.Items.Add(Strip(s, '|')); // 'とびうお'
end;
取り敢えずうまくlistboxの方に読み込むことができました
ありがとうございます!
それでもうひとつだけ質問をしたいのですけれども
for e in Strip(s, '|'): # pythonとかジェネレータで
listbox2.Items.Add(e);
while(Strip(s, '|') <> '' ) // delphiだと
…orz
要素が無くなるまで読み込むにはどう書いたら
いいでしょうか?基本的なことを何度も聞いて
しまってすみません。よろしくお願いします。
0831デフォルトの名無しさん
2007/04/13(金) 15:28:25begin
t := strip(s, '|');
if t = '' then break
...
0832デフォルトの名無しさん
2007/04/13(金) 15:33:16while trueは嫌なり
0833デフォルトの名無しさん
2007/04/13(金) 16:25:06「接続中」を表示させる事はできますか?
接続を試みる間に表示させたいのですが、
例えば
purocedure 接続ボタンclick(〜〜〜);
var (ry
begin
lbl1.Caption := '接続中';
接続処理
if 接続できていたら then
ShowMessage('接続できました');
end;
と書くと「接続できました」のメッセージと同時に表示されてしまいます。
いい方法がありましたらよろしくお願いします
0834デフォルトの名無しさん
2007/04/13(金) 16:39:00そんなに時間かかってたら誰もDB使わないとは考えられませんか?
0835デフォルトの名無しさん
2007/04/13(金) 17:44:17例としては接続成功のほうを書きましたが、実際に使いたいのは
ボタンを押してある程度時間がたって結局「接続失敗」が表示される場合です。
何も表示されないで画面が固まったままだと不安になりますからね。
0836デフォルトの名無しさん
2007/04/13(金) 17:49:26なんで逆の例を書くかな・・・
Formかbuttonのどっちだか忘れたけどリフレッシュしてみれ
0837デフォルトの名無しさん
2007/04/13(金) 19:21:10失敗したらフォームのメッセージ書き換えでいいんじゃ?
0838826
2007/04/13(金) 19:25:13ありがとうございます。上手くゆきました。
というかwhile 1: は基本中の基本 orz
>>832
そんなことないですよ?(何故か疑問形)
0839デフォルトの名無しさん
2007/04/13(金) 19:36:50OSを再インストールしようと思ってるのですが
現在登録してあるコンポーネントを新しい環境に一括で登録するようなツールって無いですか?
0840デフォルトの名無しさん
2007/04/13(金) 19:49:43おちついてその処理のアルゴリズムを考えてみるべし
0841デフォルトの名無しさん
2007/04/13(金) 20:06:240842デフォルトの名無しさん
2007/04/13(金) 21:44:01private
function A
function B
function C
end;
function THoge.C
var
func: function();//こういうの
begin
if flag then
func:=A
else
func:=B;
while〜
end;
Class内のfunctionでこういう事する方法あるですか?
0843デフォルトの名無しさん
2007/04/13(金) 22:21:020844デフォルトの名無しさん
2007/04/14(土) 00:25:34画面遷移を行いたいのですが、どうすればよろしいでしょうか?
例えば、1の画面で、「登録」「編集」というボタンがあり、
「登録」を選ぶと、登録画面になるという感じです。
登録画面の「戻る」ボタンで、元の1の画面に戻るというようなものなのですが、
これは、どのように作ればいいのでしょうか?
TNoteBook? TPageControl(←これはタブですよね)
こんな基本中の基本がわかりません。
どうかよろしくお願いします。
0845デフォルトの名無しさん
2007/04/14(土) 00:33:120846デフォルトの名無しさん
2007/04/14(土) 00:43:26FormCreateで
TabSheet1.Parent := Self;
TabSheet2.Parent := Self;
TabSheet3.Parent := Self;
PageControl1.Free; // もう用済み
TabSheet1.Visible := False;
TabSheet2.Visible := False;
TabSheet3.Visible := False;
とやって
1ページ目を表示する場合
TabSheet1.Visible := True;
2ページ目を表示する場合NextButton1Clickで
TabSheet1.Visible := False;
TabSheet2.Visible := True;
3ページ目を表示する場合NextButton2Clickで
TabSheet2.Visible := False;
TabSheet3.Visible := True;
とやるとそれっぽく見えるはず。
0847デフォルトの名無しさん
2007/04/14(土) 00:46:210848デフォルトの名無しさん
2007/04/14(土) 03:12:42ありがとうございました。
方向性すら見えなかったので、TPageControlを使ってのアドバイス、
とても有難かったです。がんばってやってみます。
ありがとうございました。
0849デフォルトの名無しさん
2007/04/14(土) 03:25:40遅くなってすみません、ありがとうございます!
明後日までプログラムいじれないのでその時に試してみますね
0850デフォルトの名無しさん
2007/04/14(土) 03:27:200851デフォルトの名無しさん
2007/04/14(土) 06:06:490852デフォルトの名無しさん
2007/04/14(土) 07:36:44Form1.Visible := False; //最初のフォームを見えなくする。
Form2.Visible := True; //次のフォームを表示する。
0853デフォルトの名無しさん
2007/04/14(土) 07:52:350854デフォルトの名無しさん
2007/04/14(土) 09:14:43途中の画面に戻ったりってことをやるとき、TFormを複数作って対処していたけど、
ちょっと変更があったりすると修正がやたら面倒なことになったりしてた。
こんなとき普通はTPageControlを使うのかなあ。
元質問者じゃないけどふと思った
0855デフォルトの名無しさん
2007/04/14(土) 09:31:32入力されたデータとかが画面毎に独立してるなら
複数フォーム作ればいいし、
画面は別々でもデータは1つにまとめておきたいなら
ページコントロール使えばいいし。
0856デフォルトの名無しさん
2007/04/14(土) 12:54:20俺は複数FormよりTPageControl派
0857デフォルトの名無しさん
2007/04/14(土) 13:37:350858デフォルトの名無しさん
2007/04/14(土) 13:39:25プロパティあるじゃん
0859デフォルトの名無しさん
2007/04/14(土) 13:41:280860デフォルトの名無しさん
2007/04/14(土) 13:46:120861デフォルトの名無しさん
2007/04/14(土) 14:13:43Visible プロパティで消せなくてしばらく悩んだ
0862デフォルトの名無しさん
2007/04/14(土) 14:15:52フォームにalClientで使いたいとき不恰好になる
0863デフォルトの名無しさん
2007/04/14(土) 14:16:08notebook
0864デフォルトの名無しさん
2007/04/14(土) 14:49:43意味ねー
0865デフォルトの名無しさん
2007/04/14(土) 15:12:380866デフォルトの名無しさん
2007/04/14(土) 15:17:460867デフォルトの名無しさん
2007/04/14(土) 15:23:160868デフォルトの名無しさん
2007/04/14(土) 16:14:05裏でタブを切り替えながら、順に表示したらいいじゃない。
簡単なコードで切り替えられるよ。
var
SaveCtrls: array of TControl;
SaveTab: TTabSheet;
procedure TForm2.ShowToForm1(no: Integer);
var i: Integer;
begin
for i := 0 to High(SaveCtrls) do SaveCtrls[i].Parent := SaveTab;
SaveTab := PageControl1.Pages[no];
SetLength(SaveCtrls, SaveTab.ControlCount);
with SaveTab do
for i := 0 to ControlCount - 1 do SaveCtrls[i] := Controls[i];
for i := 0 to High(SaveCtrls) do SaveCtrls[i].Parent := Form1;
end;
これでForm1に、Form2の指定したページが移動する。
0869デフォルトの名無しさん
2007/04/14(土) 17:51:371.TPageControlのStyleをFlat
2.TabPageのTabVisibleをfalse
コレでも駄目?
0870デフォルトの名無しさん
2007/04/14(土) 18:00:42alClientでは使えないが、ウィザードって大抵サイズ変更不可だし。
0871デフォルトの名無しさん
2007/04/14(土) 18:27:45for i := 0 to High(SaveCtrls) do SaveCtrls[i].Parent := Form1;
↓
for i := 0 to High(SaveCtrls) do SaveCtrls[i].Parent := Self;
として、 タブが消える分、サイズを合わせるために
procedure TForm1.FormCreate(Sender: TObject);
begin
ShowToForm1(0);
Height:= Height-PageControl1.TabHeight;
end;
とやったらソレっぽくなった
0872デフォルトの名無しさん
2007/04/14(土) 20:08:29>>147
標準のOpenGLは古くて足りないので、OpenGL12.pas探して使おう
GLSceneにでも入ってたか。
>>153
海外サイトを探そう
あと、OpenGLは、ネットでのDelphiのサンプルが少なく、
C++などの他の言語での使い方がそのまま参考になるので、Delphiをつけずに検索した方がよい。
もちろん、海外サイトな。
とっかかりなら、NeHeとかが参考になる。
>>176
商用ゲーム
>>358
参照カウンタ式をGCと呼ぶならそうだろう
>>464
想像するに、MMORPGのボット(不正な自動制御ロボット)
>>746
むしろ、TFileStreamはメモリにバッファしないために、メチャクチャ遅い
0873デフォルトの名無しさん
2007/04/14(土) 20:24:38ごめん、これでいけるっぽい
何で気付かなかったんだろう昔の俺
0874デフォルトの名無しさん
2007/04/14(土) 20:27:01ゲームでよくある、複数のファイルをひとまとめにするライブラリをイメージしています。
・汎用的にT Stream 形式でアクセス可能
・デバッグ用に、ファイルがある場合は、ファイルの方を優先的に読んでくれる
・zlibサポートなんかがあるとgood
・コマンドラインでバッチ的にアーカイブできる。
(できなくても、圧縮メソッドがあれば、簡単に自分で作れるので可)
検索しようにも、いい単語が思い浮かばない。
Delphi アーカイバだと違うのがで過ぎて困ってます。
0875デフォルトの名無しさん
2007/04/14(土) 20:57:31そういうのは、
ttp://www.dellapasqua.com/delphizlib/
とかから自分でDelphi用のzlibのライブラリをとってきて、
自分で実装するもんだよ
0876デフォルトの名無しさん
2007/04/14(土) 21:04:330877874
2007/04/14(土) 21:54:06いろいろ、検索してたんですけど、QuadrupleDのQDArcってのが、それっぽいです。
Project Quadruple D
http://karen.saiin.net/~hayase/dddd/
0878デフォルトの名無しさん
2007/04/14(土) 21:56:32検索はしたけど分からなかったので質問したのですが。。。
Class内では>>842のやりかたが出来ないし
Class functionやClass外のfunctionにするとTHogeの
ローカル変数もClass外に置くとかしないといけないし。。。
0879デフォルトの名無しさん
2007/04/14(土) 22:03:36TResourceStream でアクセス出来るし
DCC32.exeでアーカイブ出来るし UPXで圧縮も出来るし
"ファイル名.rc" のファイルを作って
名称 RCDATA "入れたいファイル名"
の行をズラズラと書くだけ
リソースだと他人に読まれてしまうのが嫌という場合は
http://pc.2ch.net/tech/kako/1009/10090/1009080085.html
Bin2Byte のように
バイナリを一度Delphiソースに変換してしまう。
0880デフォルトの名無しさん
2007/04/14(土) 22:09:10メソッドポインタ形を定義してやる
funciton だと帰り値が必要なので >>842の帰り値が integerだとすると
メソッドポインタ型は
type TMyFunction = function :Integer; of object;
引数があるなら
type TMyFunction = function (x:Integer) :Integer; of object;
のように
var func:TMyFUnction;
としてやれば func:=A; のように出来る
つまり、イベントと同だ。
0881デフォルトの名無しさん
2007/04/14(土) 22:17:53試したつもりだったけど、of object;付けたらエラー出なくなりました
ありがとう
0882デフォルトの名無しさん
2007/04/14(土) 22:39:29C++なんかよりずっと簡単にリソースを入れられるのに、
そこらへん、もっとアピールしたらいいのに、ヘルプに何も説明が無いのが悔しいね
>>879の "ファイル名.rc" はプロジェクトに入れるか
{$R 'ファイル名.res' 'ファイル名.rc'}
と、いう行を .DPRでも pasでもいいから入れてしまえばいい。
読み出しは、
var strm:TStream;
begin
strm:=TResourceStream.Create(0,'名称',RT_RCDATA);
try
Memo1.Lines.LoadFromStream(strm);
finally strm.Free; end;
と出来る。 名称は もちろん英字ね。
0883デフォルトの名無しさん
2007/04/14(土) 23:14:03TBitmapを継承してTBitmapExなるクラスをつくりました(白黒とかできるようにした)。
するとコンパイルは通るんですが、なにやら警告が出て
[警告]BitmapEx.pas(120)'Create'メソッドが基本型'TBitmap'の仮想メソッドを隠しました
無視しちゃっていいんですかね?(汗
出ないようにするにはどうすればいいんでしょうか?
0884デフォルトの名無しさん
2007/04/14(土) 23:15:57overrideしたのか?
ソース見せないのに答えられるかよ
0885デフォルトの名無しさん
2007/04/14(土) 23:47:14むしろこっちが意味不明。関係ないけど。
0886デフォルトの名無しさん
2007/04/14(土) 23:57:27DelphiってCreateをoverrideしましたっけ?
>>885
procedure Monocro;ってのを実行すると保持してる画像が白黒になるっつーものです。
0887デフォルトの名無しさん
2007/04/14(土) 23:58:59出ないようにするだけなら
自前のクラスのコンストラクタの宣言部にinheritedを付ける
constructor Create(AOwner: TComponent); inherited;
0888デフォルトの名無しさん
2007/04/14(土) 23:59:43警告を出さない方法は、
1、CreateEx とかの別名にする
普通はコレで問題ない
2、 定義で constructor Create; override; とする
どういう効果があるかは、
ヘルプで "メタクラス" や "コンストラクタとクラス参照"の事
0889デフォルトの名無しさん
2007/04/15(日) 00:02:440890デフォルトの名無しさん
2007/04/15(日) 00:02:55ENDが必要なところにINHERITEDがあります
というエラーが出てコンパイルできないです。
0891デフォルトの名無しさん
2007/04/15(日) 00:04:27>DelphiってCreateをoverrideしましたっけ?
その Tbitmap.Create が既に TGraphic.Create; virtual ; のoverrideなんだが
0892デフォルトの名無しさん
2007/04/15(日) 00:05:31あ、レス遅れました。
問題ない、とのことなので、まいっかー、と思ってます。
>>889
ま、後学のために・・
0893デフォルトの名無しさん
2007/04/15(日) 00:06:08inherited は親クラスの呼び出し
0894887
2007/04/15(日) 00:08:19inheritedじゃなくてreintroduceだった
constructor Create(AOwner: TComponent); reintroduce;
overrideとreintroduceの違いについては識者解説
0895デフォルトの名無しさん
2007/04/15(日) 00:08:47これでいけました。
[解決] ってことで、ありがとうございます・・
0896デフォルトの名無しさん
2007/04/15(日) 00:20:50古いバージョンではサポートされない
override クラス参照型による多態を使いたい場合
0897デフォルトの名無しさん
2007/04/15(日) 00:22:36> procedure Monocro;ってのを実行すると保持してる画像が白黒になるっつーものです
TBitmap.Monochromeプロパティというのがあるんだけど、それではダメなのかな?
0898デフォルトの名無しさん
2007/04/15(日) 02:14:30いや!、勉強のためにとりあえず継承して作ってみただけで、とくに使う予定のないクラスですよ。
もちろん、Monochromeプロパティってものの存在も知りませんでした。
斜陽の言語とかいわれてるようですが、Pascalのファンって意外と多いようですね。
0899844
2007/04/15(日) 02:37:37>>851さん、>>852さん、>>853さん、>>854さん、>>855さん、>>856さん、
ご教授、ありがとうございました。
TPageControlとFormを、仕様によって使い分けるんですね。
とてもよく理解できました。ありがとうございました。
0900デフォルトの名無しさん
2007/04/15(日) 08:28:06以下のビットマップが提供されていますが、この場合、馬番の15を以下のビットマップで変換して表すには、
どのようにしたら良いのでしょうか? よろしくお願いしますm(_ _)m
5byte=20bit
ビット 20 19 18 17 16 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01
馬番 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 - -
マスク = 0x80000
0901デフォルトの名無しさん
2007/04/15(日) 08:33:44馬番1→ビット20、馬番2→ビット19、馬番3→ビット18、以下同様・・・
という感じです。
0902デフォルトの名無しさん
2007/04/15(日) 09:03:12calc.exe で1ビットの計算ができますよ。
0903デフォルトの名無しさん
2007/04/15(日) 09:23:15なぜそういうデータの持ち方をしないといけないのかが想像付かなくて
的外れな回答をしそうで答えに詰まる。
0904デフォルトの名無しさん
2007/04/15(日) 09:48:03>>903
さっそくありがとうございます。
なんかpatにデータを送信するときに、馬番をこれを使って変換しなければ
ならないらしく、まったく分かっていないので、何でも書いていただけると助かります。
0905903
2007/04/15(日) 10:10:10TOrder = 1..20;
TOrders = set of TOrder;
procedure TForm1.Button1Click(Sender: TObject);
var
x: TOrders;
s: string;
o: TOrder;
begin
X := [];
Include(X, 15);
s := '';
for o := Low(TOrder) to High(TOrder) do
begin
if (o in X) then
s := s + Format('%d', [Integer(o)])+#13#10;
end;
ShowMessage(s);
ShowMessage( Format('0x%x', [Integer(X)]) );
end;
こんなこと考えてたけど、やっぱり的外れな気がする・・。
0906デフォルトの名無しさん
2007/04/15(日) 10:49:41そうすると 普通のビット表示とはズレてる
普通は 2^n つまり2のn乗のビット位置の事を ビットn という
だから ビット20は 21ビット目にあるので、5byte に収まらない
そしてマスク= 0x80000 =2^19 の事だから、これがマスクだとすれば
これはMSBを1として番号を振ったものだろうと予想する
つまり、上の ビット20から始まる値は 2^(20-m) のmの事だと予想
次の 馬番との表は 1->20 2->19 で Xの時 m = 20+1-X だろう?
だから馬番の15は
X:=15;
m := 20+1-X ;
bit:= 1 shl (20-m); // 2^n は 1 shl n と等価
そして、送信する5バイトの文字列とは IntToHex(bit,5)
さあ、どうだ?
0908デフォルトの名無しさん
2007/04/15(日) 12:25:220909デフォルトの名無しさん
2007/04/15(日) 13:03:46やねう一派はDelphiを使わなそうだけど
0910デフォルトの名無しさん
2007/04/15(日) 13:09:44JCLのコンテナを使ってみたいと思い、
とりあえずサンプルをコンパイルしてみたのですが、
jcl\examples\common\containers\performance\ContainerPerformance.dpr
のTJclVectorの所でコンパイルエラーになってしまいます。
TJclVectorはDelphi6では未対応なのでしょうか?
JCLのバージョンはV1.99です。
0911デフォルトの名無しさん
2007/04/15(日) 13:19:510912デフォルトの名無しさん
2007/04/15(日) 13:39:23販促の封筒着たけど、何が変わったのかさっぱり・・・
0913デフォルトの名無しさん
2007/04/15(日) 13:41:20多分、永久にないと思います。
C#やJavaのtemplateなら、そのうちにつくはず
0914デフォルトの名無しさん
2007/04/15(日) 14:32:27http://homepage1.nifty.com/ht_deko/tech005.html#27
0915デフォルトの名無しさん
2007/04/15(日) 14:33:20ttp://dn.codegear.com/jp/article/34409
でどうでしょう?
0916デフォルトの名無しさん
2007/04/15(日) 14:35:01・致命的な問題
Delphi で作成したアプリケーションをVista上で動作させるにあたり、
致命的な問題があります。Delphi で作成したアプリケーションをお持ちなら、
それを起動し[Alt]キーを押してみましょう。単に[Alt]キーを押すだけです。
この動作を行うだけで標準的なコントロールが消えてしまうのではないかと思います。
0917デフォルトの名無しさん
2007/04/15(日) 14:39:27その記事はクラスのオペレータオーバロードができることになってたり、
Delphi7にSnapBufferがないことになってたりといい加減だし、
2006じゃなくて7からの変更点だからなぁ・・・
0918デフォルトの名無しさん
2007/04/15(日) 15:36:36CドライブとDドライブが同一HDD上のパーティションなのか
別のHDD上のパーティションなのかを区別するにはどうしたらよいでしょうか?
0919デフォルトの名無しさん
2007/04/15(日) 16:20:37ありがとうございます。
ちょっと意図した結果と違うみたいですね…
>>906
ありがとうございます。
なんか非常に近い感じなんですが、、、
とりあえず変換された結果は
馬番1→18の順に
80000 40000 20000 10000 08000 04000 02000 01000 00800 00400
00200 00100 00080 00040 00020 00010 00008 00004
になるみたいなんですが…
0920デフォルトの名無しさん
2007/04/15(日) 16:34:48HKEY_LOCAL_MACHINE\System\MountedDevices\
でバイナリデータを比較したら、何とかなるのかもしれないね
0921デフォルトの名無しさん
2007/04/15(日) 16:38:53それなら、そのまま文字列を配列で持っていたらんじゃないの?
計算式は
馬番Xから
bit:= 1 shl (20-X);
IntToHex(bit,5)
0922デフォルトの名無しさん
2007/04/15(日) 17:04:02その計算式で単勝・複勝できました!ありがとうございます!
単勝・複勝で馬番が1つの場合は、これでOKだったんですが、馬連のように馬番が2つあるものは
以下のようなビットマップになっています。例えば馬連1-2の場合は、結果が800010000、
1-3の場合は800008000、ちょっととんで15-16のときは000200004となるみたいなんですが、
この場合は、どんな計算式になりますか? マスクについて調べてみたんですがちんぷんかんぷんで…(;´Д`)
9byte=36bit
ビット 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19
馬番1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
マスク = 0x80000
ビット 18 17 16 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01
馬番2 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
マスク = 0x20000
0923デフォルトの名無しさん
2007/04/15(日) 17:16:58その結果が出ればいいのなら
var x,y:Integer;
var bit:int64;
var s:string;
begin
for x:=1 to 18 do
for y:=1 to 18 do begin
bit:=(int64(1) shl (36-x)) or (int64(1) shl (18-y));
s:=format('x=%2d y=%2d ',[x,y]);
s:=s+IntToHex(bit,9);
Memo1.Lines.Add(s);
end;
0924デフォルトの名無しさん
2007/04/15(日) 17:20:41なるほど最初の4バイトが一致する場合は同一デバイスのようですね。
もうちょっと調べてみます。ありがとうございました。
0925デフォルトの名無しさん
2007/04/15(日) 18:02:41ばっちり解決しました!大感謝!ここ3日ずっと悩んでたので
すっきりです。みなさんありがとうございました。
0926デフォルトの名無しさん
2007/04/16(月) 10:13:41例を何個か出せばすぐに判るのだから
0927デフォルトの名無しさん
2007/04/16(月) 15:58:57Pagecontrolをクリックしてtab変えると、下のLabelに表示っていうような事を
やってみようと思ったのですが、この場合どこに記述するのがいいのですか?(´;ω;`)ウッ
OnClickとかでやってみたが変わらず・・・。
Delphi for PHPのスレがなかったので、こちらでスマソ・・・。
0928高島彩
2007/04/16(月) 16:25:210929デフォルトの名無しさん
2007/04/16(月) 17:10:57Pagecontrolの OnChange みたいだよ
ただし、これはJavaScriptだから Textは簡単だけどLabelに表示はやりかた判らん
0930デフォルトの名無しさん
2007/04/16(月) 17:20:07http://pc11.2ch.net/test/read.cgi/prog/1172118683/
0931デフォルトの名無しさん
2007/04/16(月) 18:41:35(例:123ならOK , abcならNG , 4.2ならNG)
を調べるのって可能ですか?
0932デフォルトの名無しさん
2007/04/16(月) 18:51:01except
end;
0933デフォルトの名無しさん
2007/04/16(月) 19:17:23var
S: string;
i, Code: integer;
begin
s := Edit1.Text;
Val(S, i, Code);
if Code <> 0 then
begin
// エラー
end;
みたいな手もあるが、余計な変数が必要だし
内部的にやってることは同じなので
i := StrToIntDef(Edit1.Text, -1);
if i < 0 then
begin
//エラー
end;
で、済ますかな
0934デフォルトの名無しさん
2007/04/16(月) 19:57:18Val手続きで(VCLリファレンスからまんまパクリ)
var
I: Integer;
Code: Integer;
begin
Val(Edit1.Text,I,Code);
if Code <> 0 then
begin
// Error
end
else
begin
// Success
end;
0935デフォルトの名無しさん
2007/04/16(月) 20:54:28あったような気がするのだけどヘルプで探しても出てこない・・
0936デフォルトの名無しさん
2007/04/16(月) 21:04:500937デフォルトの名無しさん
2007/04/16(月) 21:21:57ない
0938935
2007/04/16(月) 21:28:40調べ物中にTReg???ってクラスを見かけて今度利用しよう、って思った記憶があるんだけなぁ・・
>>936
>>937
ありがとうございました。
0939デフォルトの名無しさん
2007/04/16(月) 21:33:15__DATE__
__TIME__
に相当するものってDelphiにありますか?
0940デフォルトの名無しさん
2007/04/16(月) 21:44:14ビルド時の日付を入れたいというような目的なら
バージョン情報を利用してはどうだろうか?
0943デフォルトの名無しさん
2007/04/17(火) 04:16:39VBScript_RegExp_55_TLB
だよ。
もうちょっとよく探そう。
0944デフォルトの名無しさん
2007/04/17(火) 05:41:41Delphiのタイプライブラリインポータが貧弱なせいか
vbscript.dllから取り込むことができん。
dll内にTYPELIBは存在してるので
今度暇なときに自分でpasに落としてみるわ
0945デフォルトの名無しさん
2007/04/17(火) 06:45:320946デフォルトの名無しさん
2007/04/17(火) 07:47:51Delphi用は
TRegExpr Unicodeなら日本語
http://delwiki.info/?%A5%B3%A5%F3%A5%DD%A1%BC%A5%CD%A5%F3%A5%C8%2FTRegExpr
bmonkey's Delphi page
http://homepage1.nifty.com/bmonkey/delphi/delphi.html
dyaregexp
http://hp.vector.co.jp/authors/VA028375/junkbox/dyaregexp.html
BREGEXP.DLL Perl互換の正規表現エンジンDLLを呼び出す
http://www2.big.or.jp/~osamu/Delphi/MyLibrary.htm
0947927
2007/04/17(火) 11:28:44レスTHX。
JavaScriptでしか出来ないのか・・・。
「Tabを切り替えるごとに下に表示される文字が変わる」みたいなものを試そう
と思ったのだが・・・ (´・ω・`)ショボーン
OnChangeの後、document.writeとやってみたら、Pagecontrolも消えた・・・。
0948デフォルトの名無しさん
2007/04/17(火) 16:00:490949デフォルトの名無しさん
2007/04/17(火) 17:07:37THANKS!!
0950デフォルトの名無しさん
2007/04/17(火) 21:32:540951デフォルトの名無しさん
2007/04/17(火) 21:52:09ファイルをDLする方法がわかりません。
0952デフォルトの名無しさん
2007/04/17(火) 22:11:01URLDownLoadToFile
Creation College -WebApplication Labo-
http://gumina.sakura.ne.jp/CREATION/OLD/TECHNIC/WEBAP-2.htm
0953デフォルトの名無しさん
2007/04/17(火) 22:16:29どうもありがとうございました!
0954デフォルトの名無しさん
2007/04/17(火) 22:39:40これからDelphiを勉強しようと思っているのですが、
DelphiとC++Builderの違いについてよく分かりませんでした。
上記2つの違いは書き方が違うだけであって
実行速度等は同じなのでしょうか?
それとも根本的に異なる言語なのでしょうか?
私はC++も未修得のため
DelphiとC++Builderのどちらを勉強しようか迷っています。
どなたかご教授をお願い致します。
0955デフォルトの名無しさん
2007/04/17(火) 23:28:39形で実装されているため、最初のうちは文法以上の違いはないように見えるかもしれません。
趣味でお勉強するならとりあえず途方にくれることの少ないDelphiのほうがよいような気もしますが、
書籍で勉強しないと気がすまない質ならC++のほうがいいかもしれません。ってかこのスレで聞くなら
Delphiでおk。
0956デフォルトの名無しさん
2007/04/17(火) 23:42:110957デフォルトの名無しさん
2007/04/18(水) 00:00:29どんな用途を想定していたんだろう
目的は無いなんて言っていたが、何となく気になる
0958デフォルトの名無しさん
2007/04/18(水) 01:50:05DelphiはObject Pascal言語、C++BuilderはC++言語で記述します
言語は違っていても根幹で使用しているライブラリは同じです
C++ならではの使い方(組み込み系、デバイスドライバ開発)などをしない限りは
どちらを使っても差はさほどありません
実行速度で言えばプラットフォームがC++な分だけC++Builderが勝ります
遊びなら.NET Framework系の言語が良いと思います
仕事ならDelphi、学術的に扱うのならC++Builderが良いかと思います
0959デフォルトの名無しさん
2007/04/18(水) 01:58:48>実行速度で言えばプラットフォームがC++な分だけC++Builderが勝ります
そうか?
Borlandの場合、PascalもC++もそう変わらんと思うが。
無論、VC++の方が明らかに速い。
0960デフォルトの名無しさん
2007/04/18(水) 02:14:28しかしこのご時世なんだから実行速度なんてもう誤差の範囲かと
そんなにシビアに速度を求めるならまずはソースの見直し
次にWindows以外の環境に移行するw
0961デフォルトの名無しさん
2007/04/18(水) 04:18:170962デフォルトの名無しさん
2007/04/18(水) 08:06:020963デフォルトの名無しさん
2007/04/18(水) 08:14:050964デフォルトの名無しさん
2007/04/18(水) 08:17:360965デフォルトの名無しさん
2007/04/18(水) 08:58:40ttp://forums.belution.com/ja/vc/000/280/74.shtml
同じ問題で躓いてます orz
cs.Replace("\\n","\n"); の部分を
delphiだとどう書いたら良いでしょうか?
0966954
2007/04/18(水) 09:21:29とりあえずDelphiをやってみたいと思います。
たまに自作ツールを作るときはC#で開発をしていたのですが
ネットで開発言語について色々調べていたら
Delphiの評価が高かったので興味を持ちました。
それにしても本屋にいったらDelphiの書籍の
少なさに泣けた・・・。
よく参考にしているサイト等はありますか?
0967デフォルトの名無しさん
2007/04/18(水) 09:26:55// \デコードをする
function DecodeStr(const s:string):string;
var i:integer;
begin
Result:=''; i:=1;
while i<=length(s) do
begin
if s[i]='\' then
begin
inc(i);
case s[i] of
'x': try
Result:=Result+ char(StrToInt('$'+s[i+1]+s[i+2])) ;
inc(i,2);
except end;
'b': Result:=Result+#$08;
'a': Result:=Result+#$07;
'f': Result:=Result+#$0C;
'r': Result:=Result+#$0D;
't': Result:=Result+#$09;
'v': Result:=Result+#$0B;
'n': Result:=Result+#13+#10;
else Result:=Result+s[i];
end;
inc(i);
end else begin
Result:=Result+s[i];
inc(i);
end;
end;
end;
0968デフォルトの名無しさん
2007/04/18(水) 09:30:08C#はライブラリ検索型プログラミング
巨大な便利ライブラリを調べて組み合わせてコードを作る
Delphiは構築形プログラミング
基本的に不足する部分を自分で作って一人前
教科書はVCLソース
0969デフォルトの名無しさん
2007/04/18(水) 09:38:51'十n' とか混ざってるとおかしくならんか?
>>965
s := StringReplace(s, '\n', #13#10, rfReplaceAll);
0970デフォルトの名無しさん
2007/04/18(水) 09:52:11if s[i] in LeadBytes then
begin
Result := Result + copy(s, i, 2);
inc(i, 2);
end else
0971デフォルトの名無しさん
2007/04/18(水) 10:20:07俺も>>969の StringReplace に賛成。
加えて、何らかの事情で「\n」という表示をしたいときの回避を
別途考えておくとベストかと。「\_n」→「\n」とか。
s := StringReplace(s, '\n', #13#10, rfReplaceAll);
s := StringReplace(s, '\_n', '\n', rfReplaceAll);
0972デフォルトの名無しさん
2007/04/18(水) 10:31:300973デフォルトの名無しさん
2007/04/18(水) 10:44:29これは基本的にC言語スタイルのエスケープだから
\が入ってる場合は \\ となってる筈。
function EncodeStr(const s: string): string;
var i: integer;
begin
Result := '';
i := 1;
while i <= length(s) do
if s[i] in LeadBytes then
begin Result := Result + copy(s, i, 2); inc(i, 2);
end else begin
case s[i] of
#0..#8, #10..#12, #14..#31:
Result := Result + '\x' + IntToHex(ord(s[i]), 2);
#9: Result := Result + '\t';
#13: begin
if (i + 1 <= length(s)) and (s[i + 1] = #10) then
begin
inc(i);
Result := Result + '\n';
end else Result := Result + '\x' + IntToHex(ord(s[i]), 2);
end;
'\': Result := Result + '\\';
else Result := Result + s[i];
end;
inc(i);
end;
end;
0974高島彩
2007/04/18(水) 11:24:140975デフォルトの名無しさん
2007/04/18(水) 11:28:230977高島彩
2007/04/18(水) 12:00:29わかりません
0978デフォルトの名無しさん
2007/04/18(水) 12:06:15SubItemsなら 持ってるのは TListItem.SubItems だが
0979デフォルトの名無しさん
2007/04/18(水) 12:21:34くだすれDelphi(超初心者用)その41
Delphi(デルファイ)について、
他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を
勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが
お礼はDelphiの布教と初心者の救済をお願いします。
<前スレ>
くだすれDelphi(超初心者用)その40
http://pc11.2ch.net/test/read.cgi/tech/1172844367/
<過去スレ>
DelWiki避難所
http://delwiki.info/?Delphi+%B4%D8%CF%A2%A4%CE%B2%E1%B5%EE%A5%B9%A5%EC%A5%C3%A5%C9
0980デフォルトの名無しさん
2007/04/18(水) 12:24:16delphi7よりも軽い?
0981高島彩
2007/04/18(水) 12:43:09くだすれDelphi(超初心者用)その41
http://pc11.2ch.net/test/read.cgi/tech/1176867736/
0982デフォルトの名無しさん
2007/04/18(水) 12:55:08お疲れ様。
さて、残りのスレは、例によってM系列乱数の話でもするか
0983高島彩
2007/04/18(水) 12:57:35vsReportの仮想ListViewで左から2列目で下から2行目に入ってる値取り出す方法教えて
0984デフォルトの名無しさん
2007/04/18(水) 12:59:16無理
どうやってSubItemsに値をセットしているのかと
その基となる値を使っとけ
0985高島彩
2007/04/18(水) 13:02:050986高島彩
2007/04/18(水) 13:11:300987デフォルトの名無しさん
2007/04/18(水) 13:42:54一番左は ListView1.Items[no].Caption;
左から2番目
ListView1.Items[no].SubItems[0];
下から2行目だから
with ListView1 do
Caption:= Items[Items.Count- 2].SubItems[0];
0988高島彩
2007/04/18(水) 13:59:15ためしてみる
0989デフォルトの名無しさん
2007/04/18(水) 14:06:16delphi上で動かしてたら例外がどーのこーので止まってしまいますが
これを出ないようにすることは可能ですか?
一応Monazillaのとおりに
try
IdAntiFreeze1.Active := True;
IdHTTP1.Post(URL,contents);
IdAntiFreeze1.Active := False;
except
on E:EIdHTTPProtocolException do begin
if (E.ErrorCode = 302) then begin
//正常終了
end;
end
end;
こんな感じでやってるんですけど…
0990高島彩
2007/04/18(水) 14:22:500991高島彩
2007/04/18(水) 14:24:480992デフォルトの名無しさん
2007/04/18(水) 14:27:33それがItemsとかTListItem.SubItems。
で、仮想リストビューってのは自分で値を保持する変数なりリストなりを用意して、
描画時に「この値を表示して」とリストビューに指示する方式。
だから仮想リストビューの値のありかは、自分しか知らないはず。
だから984なんかは「無理。どうやってSubItemsに値をセットしているのかと。その基となる値を使っとけ」といってる。
俺も同感。
0993高島彩
2007/04/18(水) 14:36:19やっぱりTListから持ってくること出来ないですか
やりたいことは最終行のSubItems[0]にある値を数字に直して
次の行に入れるListItemのSubItem[0]と引き算して答えをSubItem[1]に入れたいの
高速じゃないとイヤです
0994デフォルトの名無しさん
2007/04/18(水) 14:38:100995高島彩
2007/04/18(水) 14:39:250996高島彩
2007/04/18(水) 14:41:21> Items プロパティを Count プロパティと一緒に使用すると,リスト内のすべてのオブジェクトを処理できます。
どうやるのよちっきしょう
0997高島彩
2007/04/18(水) 14:41:590998デフォルトの名無しさん
2007/04/18(水) 14:53:13数字に直して ー> StrToFloat( SubItems[0] )
高速じゃないとイヤです ⇒ TListBoxはwindowsコントロールだから遅い。 TStringGridにしたら?
0999デフォルトの名無しさん
2007/04/18(水) 14:54:08と、このアフォはごねているわけですよ。
1000高島彩
2007/04/18(水) 14:55:13とかいわれた
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。