Delphi(デルファイ)について、他のスレッドでは書き込めない超低レベル、もしくは
質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが、
お礼はDelphiの布教と初心者の救済をお願いします。
■Delphi XE6 Professional/Enterprise/Ultimate/Architect エディション(トライアル版有)
64bit Windows、Mac OS XからiOS、Androidのアプリも開発可能。ライブラリのソースコード付き。アカデミックライセンス有り。
旧バージョン(XE6/5/4/3/2/XE/2010/2009/2007/Delphi 7)のライセンス取得とダウンロードが可能。(アカデミック不可)
ttp://www.embarcadero.com/jp/products/delphi
■Delphi XE6 Starter エディション
個人/5人以下の企業・組織向け。年間売上1000US$以内の商用開発可。
(※)Delphi、Visual Studio等の有償/無償の開発ツールユーザーが対象。インストール確認は特に行わない。
ttp://www.embarcadero.com/jp/products/delphi/starter
■Embarcadero RAD Studio XE6 (Delphi、C++Builder、HTML5 Builder等を含むビジュアル開発スイート)
ttp://www.embarcadero.com/jp/products/rad-studio
<前スレ>
くだすれDelphi(超初心者用)その56
http://echo.2ch.net/test/read.cgi/tech/1405783063/
<過去スレ>
DelWiki (Delphi 関連の過去スレッド)※行方不明
ttp://delwiki.info/?
くだすれDelphi(超初心者用)その57 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2016/10/13(木) 13:21:54.84ID:7i5E+q2+2016/11/21(月) 06:45:32.74ID:6Naumri0
TObjectListに入れておけば、リストをクリアするだけでOK
2016/11/21(月) 08:34:01.10ID:3YAs2dXK
2016/11/21(月) 08:43:29.76ID:sE1stBxO
>>85
ありがとうございます!
ありがとうございます!
2016/11/21(月) 23:48:31.13ID:eSdu1Qd7
>>86
ありがとう!入れてみてすんなりスマホアプリ作れたら買おうっと
ありがとう!入れてみてすんなりスマホアプリ作れたら買おうっと
2016/11/22(火) 11:23:52.32ID:J8mgYJIF
16万かー 高すぎる
昔の4万位ならまた買いたいと思っていたのに、これじゃ無理だわ
C#ならタダだから、こっちで我慢する
昔の4万位ならまた買いたいと思っていたのに、これじゃ無理だわ
C#ならタダだから、こっちで我慢する
2016/11/22(火) 13:02:30.45ID:d73nUv9a
すごく初歩な事だと思うんだけど、フォームを最大にした状態でコントロールを配置するにはどうしたら良いですか?
2016/11/22(火) 13:11:22.55ID:qW+6ZAFd
えっ?
2016/11/22(火) 16:00:58.51ID:d73nUv9a
フォームデザイナは消せない?
フォームデザイナの中で少なからずスクロールさせるのがうざくて。
フォームデザイナの中で少なからずスクロールさせるのがうざくて。
2016/11/22(火) 16:20:11.79ID:Pvp5yOqg
もっと大きいディスプレイを使う
2016/11/22(火) 17:14:24.12ID:d73nUv9a
えっ?そう言う事じゃないw
2016/11/22(火) 18:10:29.79ID:kKFxgFqP
コンポーネントパレットのコンポーネントをダブルクリックすればいいんじゃね。
2016/11/22(火) 18:15:01.08ID:jjDYJ6Bv
最大化した状態を想定してコントロールを配置したい?
...ということでもなよね
...ということでもなよね
2016/11/22(火) 20:43:49.84ID:d73nUv9a
2016/11/22(火) 20:54:34.84ID:1EZz+VvR
フォームのサイズに追随するように作るから
わざわざ最大化で考えたりしない
わざわざ最大化で考えたりしない
2016/11/22(火) 21:23:29.12ID:jjDYJ6Bv
>>97
自分だけが使うんだったら、最大化を想定して
コントロールの絶対位置を決めることもありだけどね
でも、どのような環境で使われるか分からない場合
フォームの最大化への対応は結構難しいと思う
まあコントロールのAlignでフォームサイズに
追随するだけでいいなら簡単だけど...
自分だけが使うんだったら、最大化を想定して
コントロールの絶対位置を決めることもありだけどね
でも、どのような環境で使われるか分からない場合
フォームの最大化への対応は結構難しいと思う
まあコントロールのAlignでフォームサイズに
追随するだけでいいなら簡単だけど...
100デフォルトの名無しさん
2016/11/22(火) 22:15:22.90ID:d73nUv9a101デフォルトの名無しさん
2016/11/22(火) 23:16:57.50ID:qW+6ZAFd ふーん
102デフォルトの名無しさん
2016/11/23(水) 13:06:18.51ID:tPiPFLaf >>100
4Kディスプレイを買うのかな?
4Kディスプレイを買うのかな?
103デフォルトの名無しさん
2016/11/23(水) 13:16:56.95ID:wddBimUU 4Kディスプレイはプログラミングする上で非常に作業性が高まって
生産能力が跳ね上がるからアリだな
たくさんの資料と開くのはマルチディスプレイでも出来なくないけど
4Kディスプレイは縦が長いのが素晴らしい
一つ問題があるとしたら
自分のソフトを4Kディスプレイで最大化したら
描画が追い付かなくなってカクカクになるという事実に気づいてしまうこと
ただし、MS謹製のエクスプローラでもカクカクになるぐらいなので
本当の意味で4K対応のソフトはそんなに多くないし
気にしなくてもよいのかもしれんが、どーなんだろ
アンチエイリアスのかかった文字の描画がとにかく遅い
1FPSぐらいになって操作困難だ
生産能力が跳ね上がるからアリだな
たくさんの資料と開くのはマルチディスプレイでも出来なくないけど
4Kディスプレイは縦が長いのが素晴らしい
一つ問題があるとしたら
自分のソフトを4Kディスプレイで最大化したら
描画が追い付かなくなってカクカクになるという事実に気づいてしまうこと
ただし、MS謹製のエクスプローラでもカクカクになるぐらいなので
本当の意味で4K対応のソフトはそんなに多くないし
気にしなくてもよいのかもしれんが、どーなんだろ
アンチエイリアスのかかった文字の描画がとにかく遅い
1FPSぐらいになって操作困難だ
104デフォルトの名無しさん
2016/11/23(水) 14:35:16.76ID:XEgR0M7V k-ブルが糞なんじゃね
105デフォルトの名無しさん
2016/11/24(木) 21:31:04.24ID:EbGC2MML サブスクリプションって、アップデート2をインスコすれば
勝手にライセンス適用してくれるの?
勝手にライセンス適用してくれるの?
106デフォルトの名無しさん
2016/11/26(土) 08:53:16.82ID:SyGP2pYs フォームに入力した数値を保存する方法を教えてください。
107デフォルトの名無しさん
2016/11/26(土) 10:20:52.50ID:RLaeAJYk >>106
フォーム(上のエディットコンポ)に入力した数値を(ファイルに)保存する方法ということかしら?
簡単な一例。
フォームにエディットコンポEdit1とボタンButton1があるとしてボタンを押したらエディットコンポに入力されたテキスト(数値でなくても同じ)をファイルに保存する。
procedure TForm1.Button1Click(Sender: TObject);
var
sl: TStringList;
begin
sl := TStringList.Create;
try
// 入力された文字列を取り出し(数値だろうと扱いは文字列)、文字列リストに追加
sl.add(Edit1.Text);
// 文字列リストの内容をファイルに保存(ここでは実行ファイルと同じフォルダーにした)
sl.SaveToFile(ChangeFileExt(Application.ExeName, '.txt'));
finally
sl.Free;
end;
end;
フォーム(上のエディットコンポ)に入力した数値を(ファイルに)保存する方法ということかしら?
簡単な一例。
フォームにエディットコンポEdit1とボタンButton1があるとしてボタンを押したらエディットコンポに入力されたテキスト(数値でなくても同じ)をファイルに保存する。
procedure TForm1.Button1Click(Sender: TObject);
var
sl: TStringList;
begin
sl := TStringList.Create;
try
// 入力された文字列を取り出し(数値だろうと扱いは文字列)、文字列リストに追加
sl.add(Edit1.Text);
// 文字列リストの内容をファイルに保存(ここでは実行ファイルと同じフォルダーにした)
sl.SaveToFile(ChangeFileExt(Application.ExeName, '.txt'));
finally
sl.Free;
end;
end;
108デフォルトの名無しさん
2016/11/26(土) 10:35:43.40ID:SyGP2pYs ありがとうございます。
ちょっとやってみます。
ちょっとやってみます。
109デフォルトの名無しさん
2016/11/26(土) 23:59:22.61ID:+C/v9Yiv TFile使ったら1行で書けるかも
110デフォルトの名無しさん
2016/11/27(日) 21:47:18.22ID:G948Ts5Y TEdit.Lines自体がTStringsだからSaveToFile持ってるんじゃなかったかな
111107
2016/11/27(日) 22:12:21.76ID:Vd8hDN3e 昔のDelphiしかないので最近のはわかりません、あしからず。
昔のでもメモコンポならLines.SaveToFile(ファイル名)できますね。
昔のでもメモコンポならLines.SaveToFile(ファイル名)できますね。
112デフォルトの名無しさん
2016/11/28(月) 01:18:24.55ID:uacaeDTN TEditにLinesプロパティってなくね?
113デフォルトの名無しさん
2016/11/28(月) 13:10:31.06ID:/4N3P5Kl TEditにはLinesはないね
もともと1行編集ボックスだからね
TEditの内容を保存するんだったら
TStringList.に読み込んでSaveToFile()を使うか
TFile.WriteAllText()を使うかだね
まあ後者のほうが簡単だけど
もともと1行編集ボックスだからね
TEditの内容を保存するんだったら
TStringList.に読み込んでSaveToFile()を使うか
TFile.WriteAllText()を使うかだね
まあ後者のほうが簡単だけど
114デフォルトの名無しさん
2016/11/28(月) 22:30:06.28ID:4Blidc3O TFileってのは最近できたのか
TFileStreamとは別物なんだな?
TFileStreamとは別物なんだな?
115デフォルトの名無しさん
2016/11/29(火) 05:29:51.70ID:W5POPsuB TFile はDelphi2010からだって
TFileStreamとは別物
http://docwiki.embarcadero.com/Libraries/Seattle/en/System.IOUtils.TFile
System.IOUtils自体が2010からの追加らしい
TFileStreamとは別物
http://docwiki.embarcadero.com/Libraries/Seattle/en/System.IOUtils.TFile
System.IOUtils自体が2010からの追加らしい
116デフォルトの名無しさん
2016/11/29(火) 11:14:31.26ID:Ln/aQe4r パスワードがかかっているExcelファイルを開ける時にパスワードを入れる方法を教えて下さい。
delphi からパスワード無しファイルを操作する事は出来ています。
delphi からパスワード無しファイルを操作する事は出来ています。
117デフォルトの名無しさん
2016/11/30(水) 09:51:10.70ID:YyN+WuPe >>116
どういうやりかたで
「delphi からパスワード無しファイルを操作する事は出来ています。」
ができているのかしらんけど
OLEオートメーションを使っているなら、
xlApp.Workbooks.Open(FileName, UpdateLinks, ReadOnly, Format,
Password, WriteResPassword, IgnoreReadOnlyRecommended, Origin,
Delimiter, Editable, Notify, Converter, AddToMRU)
excelを持ってないなら
?FlexCel for VCL / FireMonkey
を使うとか
どういうやりかたで
「delphi からパスワード無しファイルを操作する事は出来ています。」
ができているのかしらんけど
OLEオートメーションを使っているなら、
xlApp.Workbooks.Open(FileName, UpdateLinks, ReadOnly, Format,
Password, WriteResPassword, IgnoreReadOnlyRecommended, Origin,
Delimiter, Editable, Notify, Converter, AddToMRU)
excelを持ってないなら
?FlexCel for VCL / FireMonkey
を使うとか
118デフォルトの名無しさん
2016/12/01(木) 19:46:00.26ID:D32vS8+n D6の使用許諾コードって今でも都連だね 知らなかったわ
119デフォルトの名無しさん
2016/12/02(金) 19:55:58.69ID:DITubkqg なぜに今さらD6?
新しいの無料になってなかったっけ
新しいの無料になってなかったっけ
120デフォルトの名無しさん
2016/12/02(金) 23:02:38.10ID:p/xrLFXH RXバグだらけで使いづらいよ
121デフォルトの名無しさん
2016/12/02(金) 23:39:57.49ID:LMsZph5A 具体的にどんなバグ?
122デフォルトの名無しさん
2016/12/03(土) 09:26:01.40ID:lQCz0lUj ボタンの色の変更ってTButtonから派生させて改造しないとダメ?
123デフォルトの名無しさん
2016/12/04(日) 00:23:15.66ID:VbxK6ZGr 結局どんなバグがあったんだろう
124デフォルトの名無しさん
2016/12/04(日) 00:50:42.52ID:Zv4y5DXv125デフォルトの名無しさん
2016/12/04(日) 01:14:11.69ID:VbxK6ZGr WindowsのバグとRadStudioになんの関係が?
126デフォルトの名無しさん
2016/12/04(日) 20:23:52.39ID:DHDwgClI 7以降アップデートしてないんだけど
すると良いことある?
すると良いことある?
127デフォルトの名無しさん
2016/12/05(月) 16:25:17.26ID:dF177W8B 人に依る
128デフォルトの名無しさん
2016/12/05(月) 20:51:09.49ID:u75Tu5Z4 ユニコード対応がなんたらうんたら
129デフォルトの名無しさん
2016/12/05(月) 22:36:44.05ID:Yjl942ym Delphi2.0 の高速コンパイルは素晴らしかった
130デフォルトの名無しさん
2016/12/05(月) 22:44:55.05ID:FaC7RcWw131デフォルトの名無しさん
2016/12/05(月) 23:11:20.14ID:3xjBziHl 新機能使わなきゃそりゃあってもしょうがないけど、
さすがに7からならアップグレードすりゃ色んな新機能がわんさかだと思うよ。
古い新機能ではUnicodeから始まってWin64bit対応やOSX対応、ジェネリックやら
Vistaとかの新コントール。
http://docwiki.embarcadero.com/RADStudio/Berlin/ja/%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8
から新機能のページだけを過去のバージョンにさかのぼってみていけばいい。
さすがに7からならアップグレードすりゃ色んな新機能がわんさかだと思うよ。
古い新機能ではUnicodeから始まってWin64bit対応やOSX対応、ジェネリックやら
Vistaとかの新コントール。
http://docwiki.embarcadero.com/RADStudio/Berlin/ja/%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8
から新機能のページだけを過去のバージョンにさかのぼってみていけばいい。
132デフォルトの名無しさん
2016/12/06(火) 00:07:34.75ID:cx3pcX82 コードエディタの進化は効率アップにもなるしやっぱ良いよ
133デフォルトの名無しさん
2016/12/06(火) 18:04:09.67ID:GBHXmuqR Editへの入力時のキーバッファをキャンセルする方法を教えて下さい。
今、バーコード入力するソフトを書いているのですが、担当者をComboboxで選択していないと
EditをクリアしてShowMessageを表示するつもりです。
EditをクリアしてMessageを出す事自体は出来ているのですが、バーコードから送られるデータの
最後にCRがついてきて(バーコードリーダーが付けてきます。)、多分このCRがShowMessageに
送られてShowMessageが勝手に消えてしまうようなのです。
イベントはKeyPressを使っています。
Windows7 Delphi10.1の環境です。
よろしくお願いします
今、バーコード入力するソフトを書いているのですが、担当者をComboboxで選択していないと
EditをクリアしてShowMessageを表示するつもりです。
EditをクリアしてMessageを出す事自体は出来ているのですが、バーコードから送られるデータの
最後にCRがついてきて(バーコードリーダーが付けてきます。)、多分このCRがShowMessageに
送られてShowMessageが勝手に消えてしまうようなのです。
イベントはKeyPressを使っています。
Windows7 Delphi10.1の環境です。
よろしくお願いします
134デフォルトの名無しさん
2016/12/06(火) 18:16:56.25ID:B1jaM3TV 何がききたいのかようわからん。
135デフォルトの名無しさん
2016/12/06(火) 18:24:00.95ID:B1jaM3TV 「Editへの入力時のキーバッファをキャンセルする方法を教えて下さい。」
後ろにごちゃごちゃよくわからん説明が書いてあるけどこれが聞きたいの?
単に入力された文字をキャンセルならKeyPressのイベントでKeyパラメータに
Key := #00とか代入すればいいんじゃなかったっけ?
if Key = 'A' then
Key := #00;
すりゃ、Aの文字が入力できなくる
このことじゃなかったらもっと適格に書いてくれんとわからん。
後ろにごちゃごちゃよくわからん説明が書いてあるけどこれが聞きたいの?
単に入力された文字をキャンセルならKeyPressのイベントでKeyパラメータに
Key := #00とか代入すればいいんじゃなかったっけ?
if Key = 'A' then
Key := #00;
すりゃ、Aの文字が入力できなくる
このことじゃなかったらもっと適格に書いてくれんとわからん。
136デフォルトの名無しさん
2016/12/06(火) 19:02:50.65ID:GBHXmuqR ありがとうございます。
バーコードから送られてくる文字を全てキャンセルしたいのです。
一文字ずつチェックするのではなく、一気に送られて来た文字を消す方法はありませんか?
宜しくお願いします。
バーコードから送られてくる文字を全てキャンセルしたいのです。
一文字ずつチェックするのではなく、一気に送られて来た文字を消す方法はありませんか?
宜しくお願いします。
137デフォルトの名無しさん
2016/12/06(火) 19:18:11.18ID:BLWAVjyu138デフォルトの名無しさん
2016/12/06(火) 20:03:14.51ID:4bwuxuwQ こんなんじゃだめなの?
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = VK_RETURN then begin
ShowMessage('Enter!');
Edit1.Clear;
end;
end;
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = VK_RETURN then begin
ShowMessage('Enter!');
Edit1.Clear;
end;
end;
139デフォルトの名無しさん
2016/12/06(火) 20:26:28.30ID:GBHXmuqR ありがとうございます。
出来ました。
条件に合わなかったら入力したらいけないと変な思い込みをしてました。
助かりました。
出来ました。
条件に合わなかったら入力したらいけないと変な思い込みをしてました。
助かりました。
140デフォルトの名無しさん
2016/12/07(水) 09:03:33.62ID:gTqL7Hsg キーバッファw
141デフォルトの名無しさん
2016/12/07(水) 09:09:12.00ID:fnsUACzH えっ?
142デフォルトの名無しさん
2016/12/07(水) 09:47:59.67ID:7C3MKHBs ラジオボタンって大きくならない?
143デフォルトの名無しさん
2016/12/07(水) 16:09:50.00ID:1k8Mb6um できません。
大きなラジオボタンの絵を描くならできます(ちょっと気持ち悪いので注意)。
procedure TForm1.FormPaint(Sender: TObject);
begin
DrawFrameControl(Canvas.Handle, ClientRect, DFC_BUTTON, DFCS_BUTTONRADIO or DFCS_CHECKED);
end;
procedure TForm1.FormResize(Sender: TObject);
begin
Invalidate; // フォームの再描画をWindowsに促す。
end;
大きなラジオボタンの絵を描くならできます(ちょっと気持ち悪いので注意)。
procedure TForm1.FormPaint(Sender: TObject);
begin
DrawFrameControl(Canvas.Handle, ClientRect, DFC_BUTTON, DFCS_BUTTONRADIO or DFCS_CHECKED);
end;
procedure TForm1.FormResize(Sender: TObject);
begin
Invalidate; // フォームの再描画をWindowsに促す。
end;
144デフォルトの名無しさん
2016/12/08(木) 15:42:09.36ID:G/Oz9Gxc Berlin update2 のFireMonkeyで
Listbox.Items.Exchangeメソッドが動作しないXE2では動くのに
Listbox.Items.Exchangeメソッドが動作しないXE2では動くのに
145デフォルトの名無しさん
2016/12/09(金) 16:34:59.90ID:G3AX0Oay お前が悪い
146デフォルトの名無しさん
2016/12/10(土) 23:22:51.23ID:KMGjeMy/ 質問です
147デフォルトの名無しさん
2016/12/10(土) 23:33:56.35ID:KMGjeMy/ 関連付けされてるファイルを起動するのは ShellExecute でできますが
例えば abc.csv ファイルを .txt で関連付けされてるアプリケーションで
開く簡単な方法はあるでしょうか
例えば abc.csv ファイルを .txt で関連付けされてるアプリケーションで
開く簡単な方法はあるでしょうか
148デフォルトの名無しさん
2016/12/11(日) 06:10:35.77ID:RsXQTiEs ”
Delphi(デルファイ)について、他のスレッドでは書き込めない超低レベル、もしくは
質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが、
お礼はDelphiの布教と初心者の救済をお願いします。
”
Delphi(デルファイ)について、他のスレッドでは書き込めない超低レベル、もしくは
質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが、
お礼はDelphiの布教と初心者の救済をお願いします。
”
149デフォルトの名無しさん
2016/12/11(日) 12:45:00.53ID:DKctrae4150デフォルトの名無しさん
2016/12/11(日) 16:52:57.05ID:uXWnPaTO 拡張子に関連付けされた実行ファイル名の取得
http://mrxray.on.coocan.jp/Delphi/plSamples/480_GetFullExePath.htm
http://mrxray.on.coocan.jp/Delphi/plSamples/480_GetFullExePath.htm
151デフォルトの名無しさん
2016/12/11(日) 18:44:37.29ID:IZotsPxu152デフォルトの名無しさん
2016/12/12(月) 14:28:19.03ID:JuHHFpqe 私はFindExecutable APIで拡張子".txt"のダミーのファイル名を渡して…というところまで考えていたのですが、そのものずばりなAPIがあるのですね。
153デフォルトの名無しさん
2016/12/15(木) 11:41:17.48ID:KMS/yunp Cのライブラリで
const char *ss[] = {"abc", "def", "xyz", NULL};
を引数として要求するAPIがあるのですがDelphiからは
どうやって定義すればよいでしょう?
const char *ss[] = {"abc", "def", "xyz", NULL};
を引数として要求するAPIがあるのですがDelphiからは
どうやって定義すればよいでしょう?
154デフォルトの名無しさん
2016/12/15(木) 12:42:40.01ID:jYtTego3 ポインタのポインタ
155デフォルトの名無しさん
2016/12/15(木) 21:30:43.84ID:esnvxFap array of PChar
156デフォルトの名無しさん
2016/12/16(金) 08:13:11.02ID:khJxMTBU157デフォルトの名無しさん
2016/12/16(金) 13:53:20.44ID:bP8vH7ub IntArray: array[0..99, 0..99] of Integer;
AI :IntArray;
P :Pointer;
Fs :TFileStream;
i,j :Integer;
for i := 0 to 99 do
for j := 0 to 99-1 do
AI[i,j] := Random(1000)+50;
Fs.Write(AI[0,0], SizeOf(Integer)*L );
Fs.Write(AI, SizeOf(Integer)*L ); ………(#)
のどちらでも OK ですが、これは AI[0,0] と AI のアドレスが同じというだけで
AI[0,0] = AI
ではないのですから、(#)の記述は AI という '配列名' はポインタのように感じられます。しかし、
P := AI;
とするとコンパイラに怒られます。Delphi の '静的配列名' はポインタではないのしょうか。
AI :IntArray;
P :Pointer;
Fs :TFileStream;
i,j :Integer;
for i := 0 to 99 do
for j := 0 to 99-1 do
AI[i,j] := Random(1000)+50;
Fs.Write(AI[0,0], SizeOf(Integer)*L );
Fs.Write(AI, SizeOf(Integer)*L ); ………(#)
のどちらでも OK ですが、これは AI[0,0] と AI のアドレスが同じというだけで
AI[0,0] = AI
ではないのですから、(#)の記述は AI という '配列名' はポインタのように感じられます。しかし、
P := AI;
とするとコンパイラに怒られます。Delphi の '静的配列名' はポインタではないのしょうか。
158デフォルトの名無しさん
2016/12/16(金) 13:58:41.71ID:n8JQ6xp/ Fs.Writeの引数の型宣言みろ
159デフォルトの名無しさん
2016/12/16(金) 14:20:04.02ID:bP8vH7ub 引数は型なしパラメータだから、実際にはパラメータのアドレスが Fs.Write に渡され、
そのアドレスが処理対象になる。つまりそこに必要なサイズのメモリ領域が正しく確保さ
れていれば、その領域がどのような型なのかは関係ないということか。
結局 Delphi の '静的配列名' はポインタではないんだね。
そのアドレスが処理対象になる。つまりそこに必要なサイズのメモリ領域が正しく確保さ
れていれば、その領域がどのような型なのかは関係ないということか。
結局 Delphi の '静的配列名' はポインタではないんだね。
160デフォルトの名無しさん
2016/12/16(金) 14:32:37.28ID:HmHblg1G P := Pointer(AI);
161153
2016/12/16(金) 16:08:44.84ID:khJxMTBU 後に誰かの参考になるかもしれないので少し詳しく書いておきます。
Cで作成されたDLL内の関数の.hファイルの定義が
void hoge(const char **hage);
となっていて、
const char *ss[] = {"abc", "def", "xyz", NULL};
hoge(ss);
という使用例が書かれてたところ、
procedure hoge(hage: array of PAnsiChar); cdecl; external 'kage.dll';
hoge(['abc', 'def', 'xyz', nil]);
で上手く動作しました。ペコリ。
Cで作成されたDLL内の関数の.hファイルの定義が
void hoge(const char **hage);
となっていて、
const char *ss[] = {"abc", "def", "xyz", NULL};
hoge(ss);
という使用例が書かれてたところ、
procedure hoge(hage: array of PAnsiChar); cdecl; external 'kage.dll';
hoge(['abc', 'def', 'xyz', nil]);
で上手く動作しました。ペコリ。
162デフォルトの名無しさん
2016/12/16(金) 16:14:50.71ID:n8JQ6xp/ さんざん概出
164デフォルトの名無しさん
2016/12/18(日) 18:39:46.50ID:SM4ZDbUW TreeView をデザイン時にフォームに貼り付けてできたアプリを終了するとき
TreeView の各ノードが保持するデータ(TreeView1.Items[n].data が保持しているデータ)
も自動的に廃棄されるのですか?
TreeView の各ノードが保持するデータ(TreeView1.Items[n].data が保持しているデータ)
も自動的に廃棄されるのですか?
165デフォルトの名無しさん
2016/12/18(日) 18:51:06.13ID:U6l2OwGO >>164
TTreeNode::Data が保持するデータはプログラマが明示的に破棄しないとダメ。
TTreeNode::Data が保持するデータはプログラマが明示的に破棄しないとダメ。
166デフォルトの名無しさん
2016/12/18(日) 20:05:19.93ID:SM4ZDbUW >>165
ありがとう。
以下のような感じでいいのですかな?
//TNodeData は TreeNode.Data が保持するデータのクラス
//+----------- FormDestroy ------------+
procedure TForm1.FormDestroy(Sender: TObject);
i: Integer;
begin
with TreeView1 do
for i = 0 to Items.Count - 1 do
TNodeData(Items[i].Data).Free;
//TreeView1.Items.Clear; 不要
end;
あるいは TreeView のOnDeletion を使って
//+-------------- TreeViewDeletion --------------+
procedure Form1.TreeView1Deletion(Sender: TObject; Node: TTreeNode);
begin
if Assigned(Node.Data) then
TNodeData(Node.Data).Free;
end;
ありがとう。
以下のような感じでいいのですかな?
//TNodeData は TreeNode.Data が保持するデータのクラス
//+----------- FormDestroy ------------+
procedure TForm1.FormDestroy(Sender: TObject);
i: Integer;
begin
with TreeView1 do
for i = 0 to Items.Count - 1 do
TNodeData(Items[i].Data).Free;
//TreeView1.Items.Clear; 不要
end;
あるいは TreeView のOnDeletion を使って
//+-------------- TreeViewDeletion --------------+
procedure Form1.TreeView1Deletion(Sender: TObject; Node: TTreeNode);
begin
if Assigned(Node.Data) then
TNodeData(Node.Data).Free;
end;
167デフォルトの名無しさん
2016/12/18(日) 20:17:52.63ID:U6l2OwGO >>166
そんな感じ。
そんな感じ。
168デフォルトの名無しさん
2016/12/20(火) 23:16:00.88ID:ifPrFvUo スレッドを使ったプログラムで、スレッド内にある未使用の変数をコメントアウトしたら、
終了する時にアクセスバイオレーションが出るんだけど、こんな事ってあるの?
プライベートに宣言してあるからメインとかが絡んでる事は無いのだけど。
終了する時にアクセスバイオレーションが出るんだけど、こんな事ってあるの?
プライベートに宣言してあるからメインとかが絡んでる事は無いのだけど。
169デフォルトの名無しさん
2016/12/20(火) 23:35:38.32ID:qjg7YQIs コメントアウトされた変数が確保していたメモリ域のおかげで
偶然アクセス違反が発生しない状態になってるとかじゃね?
要はコメントアウトしていなくてもコーディングミスで不正なメモリアクセスしている状態なのかも
偶然アクセス違反が発生しない状態になってるとかじゃね?
要はコメントアウトしていなくてもコーディングミスで不正なメモリアクセスしている状態なのかも
170デフォルトの名無しさん
2016/12/20(火) 23:43:04.81ID:ifPrFvUo こんな時間にありがとう!
そんな事があり得るんですか。
難しいなぁ。
そんな事があり得るんですか。
難しいなぁ。
171デフォルトの名無しさん
2016/12/21(水) 12:39:12.66ID:kCrlwcjM あり得るというより一番多いパターンだったり
172デフォルトの名無しさん
2016/12/21(水) 14:28:11.26ID:yxrWTbmA 「参照」とポインタの話か? 慣れるまで結構厄介だからな。
173デフォルトの名無しさん
2016/12/21(水) 17:50:14.49ID:69vl5rId ちょっと教えてください
自分自身(実行ファイル)を再起動する方法を教えてください
ちなみに二重起動を禁止したアプリでです
できれば再起動用の別アプリを使用しないのが理想的です...
自分自身(実行ファイル)を再起動する方法を教えてください
ちなみに二重起動を禁止したアプリでです
できれば再起動用の別アプリを使用しないのが理想的です...
174デフォルトの名無しさん
2016/12/21(水) 18:38:54.87ID:3rWlzZt5 >>173
自分自身が起動するときだけ二重起動許可して起動確認できたら自分を閉じる
自分自身が起動するときだけ二重起動許可して起動確認できたら自分を閉じる
175デフォルトの名無しさん
2016/12/21(水) 21:13:47.15ID:69vl5rId >>174
ありがとうございます。
やはりその方向ですか。
リスタート後に最初のインスタンスのiniファイルを読み込みたいで
Mutexのチェックの前に最初のインスタンスの終了を待つ処理が
必要かなと漠然と考えていたんですが...
簡単でスマートな方法はないんですね
ありがとうございます。
やはりその方向ですか。
リスタート後に最初のインスタンスのiniファイルを読み込みたいで
Mutexのチェックの前に最初のインスタンスの終了を待つ処理が
必要かなと漠然と考えていたんですが...
簡単でスマートな方法はないんですね
176デフォルトの名無しさん
2016/12/21(水) 21:25:28.28ID:GvkBvmPc >>175
自分(プロセスA)が自分(プロセスB)を起動するときに、コマンドラインで /restart というようなコマンドを渡す。
プロセスBは /restart ってコマンドを受け取ったら、Mutexの所有権を得るまで待機する。(再起動処理)
プロセスAはMutexの所有権を開放する。
/restartを受け取らなかった場合は、Mutexの所有権を得られなかった場合は終了する。(二重起動防止)
自分(プロセスA)が自分(プロセスB)を起動するときに、コマンドラインで /restart というようなコマンドを渡す。
プロセスBは /restart ってコマンドを受け取ったら、Mutexの所有権を得るまで待機する。(再起動処理)
プロセスAはMutexの所有権を開放する。
/restartを受け取らなかった場合は、Mutexの所有権を得られなかった場合は終了する。(二重起動防止)
177デフォルトの名無しさん
2016/12/21(水) 23:03:33.63ID:V2gs4HSo178デフォルトの名無しさん
2016/12/22(木) 20:53:24.89ID:GbxNFxpQ よろしくお願いします。
『レコード型Aを利用する、クラスA』を自作したとします。
そして、『このクラスAとほとんど同じ機能を持つが、レコード型Bを利用する、別のクラス』を作りたいとします。
この場合、どう記述するのが効率良いでしょうか。
例えば、よくサンプルで見る、TListのItemにレコード型のポインタを使ってデータを入れる場合。
type
// レコード型A
PTRecA = ^TRecA;
TRecA = record
// 略
end;
// レコード型B
PTRecB = ^TRecB;
TRecB = record
// 略
end;
// クラスA・・・レコード型Aを利用
TClassA = class(TList)
procedure SetItem(Rec: TRecA);
function GetItems(Index: Integer): TRecA;
end;
// クラスB・・・レコード型Bを利用
TClassB = class(TList)
procedure SetItem(Rec: TRecB);
function GetItems(Index: Integer): TRecB;
end;
上記の様に、クラスAとクラスBで似た様なコードの重複が多い場合、
クラスの定義をもっと効率良く記述できる方法があれば教えていただきたいです。
『レコード型Aを利用する、クラスA』を自作したとします。
そして、『このクラスAとほとんど同じ機能を持つが、レコード型Bを利用する、別のクラス』を作りたいとします。
この場合、どう記述するのが効率良いでしょうか。
例えば、よくサンプルで見る、TListのItemにレコード型のポインタを使ってデータを入れる場合。
type
// レコード型A
PTRecA = ^TRecA;
TRecA = record
// 略
end;
// レコード型B
PTRecB = ^TRecB;
TRecB = record
// 略
end;
// クラスA・・・レコード型Aを利用
TClassA = class(TList)
procedure SetItem(Rec: TRecA);
function GetItems(Index: Integer): TRecA;
end;
// クラスB・・・レコード型Bを利用
TClassB = class(TList)
procedure SetItem(Rec: TRecB);
function GetItems(Index: Integer): TRecB;
end;
上記の様に、クラスAとクラスBで似た様なコードの重複が多い場合、
クラスの定義をもっと効率良く記述できる方法があれば教えていただきたいです。
179デフォルトの名無しさん
2016/12/22(木) 20:58:35.19ID:T2mCxqBZ delphi ジェネリックスでググる
180デフォルトの名無しさん
2016/12/24(土) 05:08:06.07ID:dJj6Jdn2 クラスの継承を使えないか?
レコードのほうに「違い」を押し込んでクラスにして継承して、クラスは共用とできないか?
そもそもクラスとレコードに分ける必要があるのか?
などなど
レコードのほうに「違い」を押し込んでクラスにして継承して、クラスは共用とできないか?
そもそもクラスとレコードに分ける必要があるのか?
などなど
181デフォルトの名無しさん
2016/12/24(土) 16:48:03.74ID:NvTs06qg レコード型をクラスのメンバとしてポインタで管理して
そのポインタの実体を操作する仮想メソッドなどを作る。
そのポインタの実体を操作する仮想メソッドなどを作る。
182デフォルトの名無しさん
2016/12/24(土) 23:24:23.58ID:SRluPO+r firemonkeyを使ってandroid向けのゲームを作り始めましたが
いきなり躓いて困ってます。
ゲームループのスレッドを作って描画を行っていますが
TBitmapがスレッドセーフでないため描画処理が正常に行えません。
firemonkeyでゲームを作る場合はメインスレッドのみで作るのでしょうか。
いきなり躓いて困ってます。
ゲームループのスレッドを作って描画を行っていますが
TBitmapがスレッドセーフでないため描画処理が正常に行えません。
firemonkeyでゲームを作る場合はメインスレッドのみで作るのでしょうか。
183デフォルトの名無しさん
2016/12/25(日) 02:11:22.91ID:dFY2jBPw lockしてもダメ?
184デフォルトの名無しさん
2016/12/25(日) 09:12:26.41ID:LRNNB7e/ DrawGridのセルの色を取得する方法を教えて下さい。
どのセルに何色を塗ったか記憶しているのですか、
もっと簡単に知る方法があると思い質問させてもらいました。
宜しくお願いします。
どのセルに何色を塗ったか記憶しているのですか、
もっと簡単に知る方法があると思い質問させてもらいました。
宜しくお願いします。
185デフォルトの名無しさん
2016/12/25(日) 09:56:13.82ID:HB1HITh4 >>182
スレッド側でBitmap描画してからSynchronize使ってメインスレッドのBitmapに転送すれ
スレッド側でBitmap描画してからSynchronize使ってメインスレッドのBitmapに転送すれ
■ このスレッドは過去ログ倉庫に格納されています
