2chで解決したDelphi質問をFAQ収集するスレ
■ このスレッドは過去ログ倉庫に格納されています
0001DELG
NGNGしかも技術版ないで解決したものってどこにも
ログとって無いし。
0002デフォルトの名無しさん
NGNG= = = = = = =
Q.ツールメニューにエクスプローラを登録し、編集中のプロジェクを開く
A. http://piza2.2ch.net/tech/kako/1001/10010/1001039863.html
>>206
Q. コンパイルに必要な全ファイルを知りたい
A. http://piza2.2ch.net/tech/kako/1001/10010/1001039863.html
>>8
Q. 画像ファイルをドラッグ&ドロップすると、その画像が表示されるようなプログラム作りたい
A. http://piza2.2ch.net/tech/kako/1001/10010/1001039863.html
>>47
Q. 実行ファイルの末尾についているデータを読み出したい
A. http://piza2.2ch.net/tech/kako/1001/10010/1001039863.html
>>107 >>131 >>133 >>144-146
Q. 自分自身を削除したい
A. http://piza2.2ch.net/tech/kako/1001/10010/1001039863.html
>>108 >>125 >>138
Q. 起動中プログラムの実行ファイルを知りたい
A. http://piza2.2ch.net/tech/kako/1001/10010/1001039863.html
>>148
0003デフォルトの名無しさん
NGNGA. http://piza2.2ch.net/tech/kako/1001/10010/1001039863.html
>>346
Q. Char 型配列をゼロで初期化したい
A. http://piza2.2ch.net/test/read.cgi/tech/999482946/130
http://piza2.2ch.net/test/read.cgi/tech/999482946/144
Q. アーカイバを作りたい
A. http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=999663627
Q. vbのcall命令みたいな物は? 質問詳細→http://piza2.2ch.net/test/read.cgi/tech/999482946/182
A. http://piza2.2ch.net/test/read.cgi/tech/999482946/183
Q. OpenDialog 系で、ファイルタイプで選んだ拡張子に応じて、上書き確認メッセージを出したい -> 質問詳細 http://piza2.2ch.net/test/read.cgi/tech/999482946/12
A. http://piza2.2ch.net/test/read.cgi/tech/999482946/50
Q. Label の Caption 変更時のちらつきをなくしたい
A. http://piza2.2ch.net/test/read.cgi/tech/999482946/47
Q.『ボーランドのナンセンスでないライセンス規定』および制限付保証 ... このタイトルはジョークですか
A ナウなヤングにバカウケだと思ったんでしょう
Q. Delphi6 の dfm ファイルに下位互換性を持たせたい
A.
http://piza2.2ch.net/test/read.cgi/tech/999482946/559
>これか!DFM ファイルの形式が今までのと同じになるね。
>[HKEY_CURRENT_USER\Software\Borland\Delphi\6.0\FileFormat]
>"DFMFormat"=dword:00000000
Q. 文字列が整数に変換可能かどうか調べたい
A. http://piza2.2ch.net/test/read.cgi/tech/999482946/232
Q. Del6のShellListView で、特定の拡張子をもったファイルのみを表示させたい
A. http://piza2.2ch.net/test/read.cgi/tech/999482946/522-523
Q. ShellTreeView で、指定したフォルダを展開し、スクロール院したい
A. http://piza2.2ch.net/test/read.cgi/tech/999482946/550-5513
0004デフォルトの名無しさん
NGNGうざすぎ。
0005Delフサギコ
NGNG∧,,∧ / ̄
@,,,ミ,,゚Д゚彡 < こっちの方がいいかもね。
⊂,,,,,,,,,つつ. \_
いちいち
★解決した問題はこちらへ★
といわれるのはMLっぽくて萎え
0006デフォルトの名無しさん
NGNG激しく同意。
けど、こういうスレも欲しいかな、と思ったりもしないではない。
0007デフォルトの名無しさん
NGNG0008デフォルトの名無しさん
NGNG(おもな目的はMLの役に立つ情報を編集となってるし)
http://kova.cside2.jp/bbs/cyclamen.cgi?log=faqtip
にしましょう。しましょう。しましょう。
0009デフォルトの名無しさん
NGNG0010デフォルトの名無しさん
NGNG0011デフォルトの名無しさん
NGNGA. ツール→ツールの設定で以下のように設定する
[プログラム]
C:\WINDOWS\Explorer.exe
[作業フォルダ]
C:\WINDOWS
[実行時引数に]
"/n", "/e", $PATH($EXENAME)
を指定する。これで、現在開いているプロジェクトのフォルダがあらかじめ開いた状態で、
マイコンピュータではない、普通のエクスプローラ(ツリービュー付き)が起動する。
0012デフォルトの名無しさん
NGNGA. コンパイルオプションのリンクタブの[マップファイル(詳細)]
にしてコンパイルして出来る XXX.map ファイルを見ればよい。
M=ファイル名
みたいな感じでリンクしたユニットが出る
Line numbers for なんとかって感じで コンパイルしたユニットや 最後にリソースファイルも出る
0013デフォルトの名無しさん
NGNGA.
members.jcom.home.ne.jp/buin2gou/
かめさん(ロマンスファイラー)の作者のサイトの「デルファイ謎FAQ集」に、
EXEファイルにデータを埋め込んで取り出す方法が紹介されている。
{ 以下のプログラムをコンパイルして実行ファイルを作成し、
バイナリエディタで末尾に適当なデータを加えます。
EXEを実行してボタンを押すと、メモに16進データが
表示されます。}
procedure ReadMySelf(Data:TStream);
var
i:Integer;
Buf:array [0..3] of Byte;
Exe:TMemoryStream;
DataSize, ExeSize:Cardinal;
begin
Exe := TMemoryStream.Create;
try
{ Exe 読み込み}
Exe.LoadFromFile( ParamStr(0) );
{ ファイルサイズ }
Exe.Position := $34C;
Exe.ReadBuffer(Buf, SizeOf(Buf) );
ExeSize := 0;
for i:=High( Buf ) downto 0 do
ExeSize := ExeSize * 256 + Buf[i];
DataSize := Exe.Size - ExeSize;
{ ポインタを移動 }
Exe.Position := ExeSize;
{ データ部をコピー }
Data.Position:=0;
if DataSize > 0 then
Data.CopyFrom( Exe, DataSize );
{ ポジションをリセット }
Data.Position := 0;
finally
Exe.Free;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
s:string;
i:integer;
buf:byte;
data:TMemoryStream;
begin
data := TMemoryStream.create;
ReadMySelf( Data );
caption:=inttostr( Data.Size );
for i:=0 to Data.Size-1 do
begin
Data.Read(Buf,1);
s:=s+IntToHex( Buf, 2 )+' ';
if i mod 16 = 15 then
s := s + #13;
end;
Memo1.Lines.Text:=s;
end;
0014デフォルトの名無しさん
NGNGA.
{以下の手続きを実行後、アプリを終了すると全てが削除される}
procedure KillMySelf;
var
Exename,Batname,Linkname:string;
begin
{ 実行ファイル名 }
Exename := ExtractShortPathName( ParamStr(0) );
{ バッチファイル名 }
Batname := ChangeFileExt( Exename, '.BAT' );
{ バッチファイルのショートカット }
Linkname := ChangeFileExt( Exename, '' );
{ バッチファイルを作成 }
with TStringList.Create do
begin
Add( ':TOP' );
Add( '@DEL '+Exename );
Add( 'IF EXIST '+ Exename +' GOTO TOP' );
Add( '@DEL ' + LinkName );
Add( '@DEL ' + BatName );
SaveToFile( Batname );
Free;
end;
{ バッチファイルを起動 }
WinExec( PChar( BatName ) , SW_HIDE );
end;
0015デフォルトの名無しさん
NGNGA. TLHelp32を使う。
homepage1.nifty.com/beny/tips/other10.html を参照のこと。
0016デフォルトの名無しさん
NGNGS. レジストリに以下のキーを追加すると旧Delphi と同じ形式で
dfm が保存されるようになる。
[HKEY_CURRENT_USER\Software\Borland\Delphi\6.0\FileFormat]
"DFMFormat"=dword:00000000
0017デフォルトの名無しさん
NGNGA.
program Project1;
uses
Forms,
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {Form2};
{$R *.res}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2);
Application.Run;
end.
起動パラメータ(ParamStr)で
このCreateFormの順番を変更してみてください。
最初にCreateFormされたものがMainFormになります。
0018デフォルトの名無しさん
NGNG2ch で「過去ログを検索しなさい」ってのだけはやめてくれよ
0019デフォルトの名無しさん
NGNGA. 右クリックされた時に左クリックのメッセージを送ります。
ListBoxのMouseDownイベントに以下のコードを書いてみてください。
procedure TForm1.ListBox1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if [ssRight] = Shift then
begin
ListBox1.Perform(WM_LBUTTONDOWN, MK_LBUTTON , Makelong(X, Y));
ListBox1.Perform(WM_LBUTTONUP, MK_LBUTTON , Makelong(X, Y));
end;
end;
0020デフォルトの名無しさん
NGNGA. AddFolderイベントを使います
//uses StrUtilsを追加
procedure TForm1.ShellListView1AddFolder(Sender: TObject;
AFolder: TShellFolder; var CanAdd: Boolean);
var
Ext: string;
begin
//フォルダは表示する
if AFolder.IsFolder then Exit;
Ext := ExtractFileExt( AFolder.PathName );
CanAdd := AnsiMatchText( Ext, ['.jpg', '.jpeg', '.bmp' ] );
end;
0021Delフサギコ
NGNGそんでもってMLに参加していない人の方が少ないような...
∧,,∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
ミ,,゚Д゚彡 < ま・いっかー
ミ つ且~~ \___________
〜ミ,,,,,, ,,ミ 18-19のFAQ書いてみましたよ
>>18
同意。
0022デフォルトの名無しさん
NGNGん、どゆ意味?
0023Delフサギコ
NGNG電 | 番号マチガエターヨ
|∧,,∧
柱 ミ,,゚Д゚彡 <19と20の投稿してみたって事でした
⊂ ミ
|, ,,ミ
|∪
, ' , ; ' ;
0024デフォルトの名無しさん
NGNG0025デフォルトの名無しさん
NGNG0026デフォルトの名無しさん
NGNGA. ポインタを取得し、それを利用しましょう。
Scanline プロパティが遅いのは、GDIFlush API を呼び出したりと
いろいろコストがかかる処理しているからだね。
俺は ScanLine から次のラインへのオフセットを計算して
以後それを使って高速化している。
var
ScanLinePtr0: Pointer;
ScanLineOffset: Longint;
Y: Longint;
P: Pointer;
begin
{ 画像の任意のラインのポインタを計算するための準備 }
ScanLinePtr0 := Bitmap.ScanLine[0];
if Bitmap.Height>1 then
ScanLineOffset := Integer(Bitmap.ScanLine[1])-Integer(Bitmap.ScanLine[0])
else
ScanLineOffset := 0;
{ 各ラインのポインタを求める }
for Y:=0 to Bitmap.Height-1 do
begin
P := Pointer(Integer(ScanLinePtr0)+ScanLineOffset*Y);
// 取得したポインタPを使ってとりあえず何かしよう
end;
end;
0027デフォルトの名無しさん
NGNG0028デフォルトの名無しさん
NGNG0029デフォルトの名無しさん
NGNG低レベルなアニオタ (自称芸術家・モーツァルティアン・藁)
おおもりよしはる
http://www9.big.or.jp/~yoshioh/
このサイトをよあに@同人板とその仲間達とともに潰してくれる人募集中
0030デフォルトの名無しさん
NGNG0031デフォルトの名無しさん
NGNGOnMouseDownかOnMouseUpで位置からパネルを算出、それにより該当処理、でどうよ?
uses
CommCtrl;
function WhichPanels(SB:TStatusbar;x,y:integer):integer;
var
i:integer;
r:TRect;
pt: TPoint;
begin
result := -1;
pt := Point(x,y);
for i := 0 to SB.Panels.Count-1 do begin
SendMessage(SB.Handle,SB_GETRECT,i,LPARAM(@r));
if PtInRect(r,pt) then result := i;
end;
end;
procedure TForm1.StatusBar1MouseUp(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
ret:integer;
begin
ret := WhichPanels(Statusbar1,X,Y);
if ret <> -1 then
Label1.Caption := 'You Clicked Panels of '+IntToStr(ret);
end;
0032デフォルトの名無しさん
NGNGfunction wsprintf(var Output ; Format: PChar): Integer;
cdecl; varargs; external user32 name 'wsprintfA';
procedure TForm1.FormCreate(Sender: TObject);
var s:string;
begin
setlength(s,1000);
wsprintf(pchar(s)^,'%5d %5d', 1,100);
Caption:=PChar(s);
end;
0033デフォルトの名無しさん
NGNG意味ねー
0034デフォルトの名無しさん
NGNGサイトだと飽きたら終わり。
スレだと、だれでも書き込める。
0035デフォルトの名無しさん
NGNG飽きるんならやるな
0036デフォルトの名無しさん
NGNGじゃ、sageでやるから許して。
0038デフォルトの名無しさん
NGNG何ですね?
あー気持ち悪い。
0039デフォルトの名無しさん
NGNG0040デフォルトの名無しさん
NGNGこっちでやれ、どうせMLの奴 2chも見てるだろ
http://www2.big.or.jp/~osamu/Delphi/Tips/
■ このスレッドは過去ログ倉庫に格納されています