X



くだすれDelphi(超初心者用)その57 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
垢版 |
2016/10/13(木) 13:21:54.84ID:7i5E+q2+
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/?
0006デフォルトの名無しさん
垢版 |
2016/10/15(土) 08:01:16.21ID:Wck8f7HF
>>4
今はAnsiStringなら>5でOK。
ShortStringだとstraaaa[0]に長さが入ってるので
@straaa だけだと PChar と互換性ないから
0008デフォルトの名無しさん
垢版 |
2016/10/17(月) 22:03:38.40ID:u9f1SlFV
有料版買えばandroidで動くプログラムをDelphiで作れるの?
Indyみたいなhttpコンポーネントって使えるのだろうか?
0009デフォルトの名無しさん
垢版 |
2016/10/17(月) 22:24:59.98ID:DkHWfezI
>有料版買えばandroidで動くプログラムをDelphiで作れるの?
モバイルパック?だかなんだかを買わないといけないんじゃねぇか?
Starterでモバイルパックつかえなきゃ、Pro版も買わないといけんと。
>Indyみたいなhttpコンポーネントって使えるのだろうか?
Indy使わなくても最新のにはhttpのクライアントライブラリ含まれてるからそれ使えば?
0010デフォルトの名無しさん
垢版 |
2016/10/17(月) 22:41:43.85ID:PmRH05Ee
cとかc++のenumって、Delphiの列挙型ということでいい?
集合とは違うんだよね?
0014デフォルトの名無しさん
垢版 |
2016/10/22(土) 10:30:31.92ID:VBuj+teK
tabsheetの色を変えられるようにしたんだけど、clBtnFaceを指定しても白くなるんですけど何故でしょうか?
他の色は反映されます。
Delphi10.1Berlinを使っています。
0015デフォルトの名無しさん
垢版 |
2016/10/22(土) 10:35:27.82ID:VBuj+teK
バカみたいな質問をしてしまいました。
clBtnFace以外は反映されるのでプログラム的には間違いはないと思います。
clBtnFaceだけ弾かれる理由ってあるんでしょうか?
0017デフォルトの名無しさん
垢版 |
2016/10/22(土) 11:01:18.05ID:AS0AO2zF
>>15
勘だけと、システムカラーだからOSのテーマカラーが優先されて使われてるんじゃないのかな?
0018デフォルトの名無しさん
垢版 |
2016/10/22(土) 11:34:02.15ID:VBuj+teK
ありがとうございます。
と言ってもどうしていいか分からないのでパネル貼ります。w
0019デフォルトの名無しさん
垢版 |
2016/10/23(日) 10:04:04.33ID:FT6Wwhog
昔Del7で作ったExcelを操作するプログラムを、Berlinで作り直したいんだけど今だとFirerDacを使うんですか?
取り敢えずやりたいことは、xlsxをcsvに変換したいだけなので簡単な方法があったら教えて下さい。
0021デフォルトの名無しさん
垢版 |
2016/10/23(日) 13:40:03.44ID:MP5NXD0l
今まで Delphi 7 で作っていましたが、Delphi 10.1 に移行することにしました。

そこで、10.1のListViewの挙動について質問です。
D7では、以下のコードで ListItem の一行の背景全てが綺麗に塗りつぶされていましたが、
10.1では Caption と SubItems[0]、そして SubItems間で 2pixel の白い区切り線のようなものが出来てしまいます。
回避方法をご存知の人は教えて下さい。

procedure TForm1.ListView1CustomDrawItem(Sender: TCustomListView;
Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
if Not Odd(Item.Index) then
begin
with ListView1.Canvas do
begin
Brush.Style := bsSolid;
Brush.Color := clLime;
end;
end;
end;
0023デフォルトの名無しさん
垢版 |
2016/10/23(日) 15:14:16.61ID:MP5NXD0l
>>22
GridLines は False です。
試しに True にしても同じように 2pixel の区切り線が出ます。
他の人の環境では出ないのでしょうか?
0025デフォルトの名無しさん
垢版 |
2016/10/23(日) 16:44:38.74ID:kZkGsd/R
ちょっと教えてください

CD-ROMドライブのデバイス名(「EX-DVD04K」とか)と
ドライブ名(「D」とか)の一覧を得たいんですが
それぞれ別の方法で取得できるんですが、
複数のCDドライブがあると、対応が分かりません(EX-DVD04K = D)。

たぶんAPIを使うことにあると思います。

似た質問はあったんですが、回答がない...
ttp://okwave.jp/qa/q1942763.html
003019
垢版 |
2016/10/24(月) 11:23:45.88ID:V1HEhUaE
>>20
ありがとうございます。

delphiは久々なのでググりまくってる最中なんですが
Excelのコンポーネントとか有ったと思うんだけど今は無くなった?
悩んでてもしょうがないのでXRAYさんのサイト見ながらやってみます。
003219
垢版 |
2016/10/24(月) 12:20:49.82ID:V1HEhUaE
>>31
>Excelのタイプライブラリ取り込めばおk
おぉ、そんなのありましたね。
一気に進めそうです。
ありがとうございます。
003319
垢版 |
2016/10/25(火) 23:13:37.93ID:PC8b9+iO
oleコンテナだけでExcelのブックを表示できました。
昔とは違うんですね。
ただ、Excel本体も立ち上がってくるのですが、Excelは立ち上げずにブックを弄るにはどうしたらいいでしょうか?
003619
垢版 |
2016/10/26(水) 00:18:32.99ID:5VsTRTiY
>>34
ありがとうございます。
試してみます。
0041デフォルトの名無しさん
垢版 |
2016/10/30(日) 03:41:18.12ID:5WyC57Kn
>>40
「デフォルトレイアウト」から「クラシック(ドッキングなし)」に変えたら
Delphi7のような画面レイアウトになるけど、お望みの回答かどうかはわからない。
0042デフォルトの名無しさん
垢版 |
2016/10/30(日) 08:46:34.99ID:GMyWViLu
丸が幾つか描かれているbitmapがあるとして特定の丸の色を変えたいと思い、
丸の上にshapeの丸を置いて対応しました。
このbitmap上の丸とshapeをきっちり対応させる方法ってないですか?
bitmapの大きさ変えたりスクロールさせた時にshapeも追従させたいのですが。
004442
垢版 |
2016/10/30(日) 13:14:20.67ID:VzVr3D3G
>>43
説明不足ですみません。
ビットマップの画像ファイルを貼り付けた状態と言うことでした。
0045デフォルトの名無しさん
垢版 |
2016/10/30(日) 15:20:00.36ID:+fHRwEF9
>>44
じゃ、ビットマップ内の円を直接塗りつぶすのがいいよ?

モグラ叩き(?)みたいに動的に表示するんだったら
1) Bitmap0にオリジナルをロードしておいて
2) Bitmap1に都度コピーして任意の円を塗りつぶす
3) そんで最終的にPaintBoxのCanvasにコピーする
4) これを繰り返す

Shapeを使う必然性があるんだったら別だけどね
004642
垢版 |
2016/10/31(月) 20:22:37.53ID:I4hSi9OL
>>45
ありがとう!!
出来ました、
0047デフォルトの名無しさん
垢版 |
2016/11/01(火) 14:44:48.26ID:aPCKG/Vh
Delphi10のインストーラーが一瞬立ち上がってすぐ終了してしまうのですが原因がわかる方いませんか?
サポートサイトを見てもレジストリを触る事しか見当たりません。
どなたかよろしくお願いします。
0049デフォルトの名無しさん
垢版 |
2016/11/01(火) 17:44:57.98ID:wawt2m9n
まずはdependencywalkerとか
あとウィルスチェックソフト止めるとか
ファイアウォール開いてみるとか
0052デフォルトの名無しさん
垢版 |
2016/11/03(木) 13:26:56.03ID:2mKhPyDG
符号付きのダブルワードとか言うデータを扱う事になったんだけど、普通に数値が相手から送られて来ると思ったら
16Bit毎に分かれて、しかも、-だと65535とか-が付かない値が送られてくるんだけどプロの人はどうやってるの?

ググったら変換の考え方は分かったんだけど、プログラムをどう書けば良いかわからん。

Delphiって16進数とかに変換すると文字列になるでしょ?
文字列をどうやれば計算に使えるの?
0053デフォルトの名無しさん
垢版 |
2016/11/03(木) 13:32:53.30ID:6FeMk1RE
16bitでわかれるって
65535,65535
っていう意味?
だったら
0xffff,0xffff
で1dwordだから
リトルエンディアンなら
(dword)((a[0]<<16) | a[1])
で済むはず
0055デフォルトの名無しさん
垢版 |
2016/11/03(木) 13:41:15.66ID:2mKhPyDG
早速、ありがとうございます!!
式の意味がわからないw
調べ倒します。

65535,65535に分かれるんですが、-の時には両方2の補数がナンタラカンタラ変換された10進数が送られてきます。

また、分からないことがあったら宜しくお願いします。
0056デフォルトの名無しさん
垢版 |
2016/11/03(木) 16:09:43.66ID:nO9s2Og+
SmallInt変数に代入すればいいんじゃない?

var
si: SmallInt;

si := StrToInt('$' + Edit1.Text); // 16進数の文字列
si := StrToInt(Edit1.Text); // 10進数の文字列
Edit2.Text := IntToStr(si);

...こう云うことじゃないの?
0057デフォルトの名無しさん
垢版 |
2016/11/03(木) 16:20:54.86ID:KRq5Cur1
こういうあほと仕事したくないな
005853
垢版 |
2016/11/03(木) 18:24:42.65ID:2mKhPyDG
やってみたらあっさりできました。
右や左にシフトさせるだけで、マイナスも簡単に処理できました。
2の補数とかそういうことはDelphiが内部で勝手にやってくれるという認識でOK?
10進数のまま処理ができるのは他の言語でも一緒?
0059デフォルトの名無しさん
垢版 |
2016/11/03(木) 18:32:31.39ID:Vzj8eJlj
>Delphiが内部で勝手にやってくれる

その認識はおかしい

「Delphiは何もしない」が正しい
006053
垢版 |
2016/11/03(木) 19:10:20.41ID:2mKhPyDG
>>59
そうなんですか?
プログラムとして読み取る時は上位の16bitを
a:=a shl 16;
で左にシフトさせて
c:=a + b;
で、cにダブルワードの数値がマイナス値も含めて正しく入ったのでdelphiが勝手に処理してるのかなと思いました。
プログラムとしてはこれでOKですか?
0063デフォルトの名無しさん
垢版 |
2016/11/03(木) 19:44:23.50ID:ieIIzjtH
DWORDというかWORDが符号なし整数値やろ
BYTEはunsigned char
WORDはunsigned short
DWORDはunsigned long
UINTはunsigned int
いずれも符号なし整数
0064デフォルトの名無しさん
垢版 |
2016/11/03(木) 20:02:43.66ID:URbOgVYK
DWORDは符号なしだけど
送られてくるデータはDWORDだけど符号を扱うっつってんだから
普通に中身はintだろ
intにキャストすれば万事OK
0065デフォルトの名無しさん
垢版 |
2016/11/03(木) 21:13:18.27ID:iYejUQc8
曖昧すぎるんだ

>普通に数値が相手から送られて来ると思ったら
>16Bit毎に分かれて、しかも、-だと65535とか-が付かない値が送られてくるんだけど
0066デフォルトの名無しさん
垢版 |
2016/11/05(土) 12:52:45.83ID:edcXpxnV
>>60
同じ数値型変数でも a の型を変えてビット数や符号付きかどうかが変わると結果も変わる。
006753
垢版 |
2016/11/06(日) 00:10:46.65ID:EC/gao/y
>>66
仰る意味が分かりました。
符号付き16BitのデータをLongに入れるとマイナスが判断されず16Bitのプラス値が入る。
Smallintに入れるとマイナスを認識する。
と言う事で、扱うデータにあった型の変数に代入する、
もしくはデータの符号の位置が変数の左端に入るように
シフトさせるとプラマイを勝手に判断してくれると言う事で良いでしょか?
0068デフォルトの名無しさん
垢版 |
2016/11/06(日) 04:28:48.06ID:nNdE2u+1
>>67
勝手に、というか、歴史的なものでもあるんだが、そもそもコンピュータは符号について考慮できない。
というのはビットのON/OFFしかないからだ。かといって計算ではマイナスの値も考慮する必要がある。
ということで色々あって、結局今のコンピュータでは高速に計算する場合はこういう手法を使うことになった。
(低速になってもいいが精度が必要な場合にBCDにするとか、他の方法もあるがちょっとそれは置いておく)。

1. 0/1が表せるビットを束ねてまとめて2進数として大きな数値も表せるようにする。
2. 0の時は全てのビットが0になる。
3. 0の状態で1を引いた時、つまり-1は全ビットが1になる。
4. 更に1引いた場合は符号なし整数の時と同じ計算で1を引く。
5. 1番上のビットが1の場合はその値はマイナス、0の場合はプラス。

なので例えば8bit符号付整数は -128 〜 127 までが表せるが、-128の時は2進だと 10000000 になっている。
127 は 01111111 になっている。

画面に10進数に変換して出す場合はまず最上位ビットを見て1ならばマイナス記号を出しプラスならば何も出さない。
次に最上位ビットが1ならば全ビットを反転させた後に1を足す(符号をマイナスからプラスに変換する)。
その後10で割った余りを数字の文字に変換して出し10で割るというのを0になるまで繰り返すが、これだと
逆順になるので再帰処理にするかバッファに入れておいて逆順に出すか少しテクニックが必要。
0069デフォルトの名無しさん
垢版 |
2016/11/06(日) 09:03:20.09ID:j4rRKkND
コンピューター工学
ASM
2の補数
・・・・いろいろ学ばないと分からないかも
一番いいのは痛い目食わないと覚えられないかも
趣味なら?
0071デフォルトの名無しさん
垢版 |
2016/11/07(月) 02:58:59.60ID:k8MgRjfU
じゃあおまえが書けよ
0072デフォルトの名無しさん
垢版 |
2016/11/07(月) 07:51:58.89ID:MiZ0k8Uw
わしもそう思う
しかし、理解すべきは、型の互換性や代入の互換性についての処理系の決め事であって、
動作原理やらは趣味の領域。
0073デフォルトの名無しさん
垢版 |
2016/11/07(月) 11:31:55.07ID:VvMqHJ76
変数の宣言で符号有り、無しのどちらの宣言しても
キャストでどうとでもなるから、くよくよするな
var
i : LongInt;

キャストで
LongWord(i)
出来るから
0075デフォルトの名無しさん
垢版 |
2016/11/09(水) 15:53:32.11ID:i2gLSeC7
D7のクイックレポートで質問です
現在単純な一覧を作っているのですが、罫線で全体の外枠を太く、明細行の仕切りを細く描きたいと思っています
Bandのフレームを外枠にして明細行は左右だけフレームで描き、下部にQrshapeを置いてやってみたのですが
その明細行がページの最終行かどうか判断する方法がわからず
外枠の下を印刷できません
各ページの行数は不定です
何かいい方法は無いでしょうか


もう一つ、グループで小計を印刷したいのですが、その際小計行は太線で囲みたいと思います
小計行はグループフッターで印刷し四方をフレームで囲ってみたところ明細行のShapeとフレームが重なって
小計行の上の線だけ少し太く印刷されてしまいました
うまいやり方は無いでしょうか

よろしくお願いします
0076デフォルトの名無しさん
垢版 |
2016/11/09(水) 16:14:12.62ID:i2gLSeC7
済みませんもう一点ありました
グループではなくページの小計を印刷したいのですが、ページフッターだと明細行と離れて印刷されてしまいます
何かいい方法は無いでしょうか
0077デフォルトの名無しさん
垢版 |
2016/11/18(金) 05:32:26.95ID:mITFokzs
仮想のイーサネットインターフェース(NIC)の作り方って知りませんか?
linuxだと簡単にできるらしいけど、windowsでできるコンポとかコマンドとかないのかな?
0078デフォルトの名無しさん
垢版 |
2016/11/18(金) 16:27:06.42ID:vbdBJsNN
softetherみたいなの?
0079デフォルトの名無しさん
垢版 |
2016/11/18(金) 17:38:12.72ID:mITFokzs
そういうのいじってみたい
仮想NICというかループバックていうのはMS純正でできるのが分かった
0082デフォルトの名無しさん
垢版 |
2016/11/20(日) 12:33:25.79ID:omU4WGo2
canvasやcaptionを持ってないコントロール上に文字描こうと思ったら、LABELを被せるのが一番簡単?
0084デフォルトの名無しさん
垢版 |
2016/11/21(月) 02:06:39.96ID:9bjfwpvu
動的に沢山作ったコントロールの破棄方法を教えて下さい。
作っ時にTLISTに入れておいて、破棄する時にリストから引っ張り出してfreeでいいですか?
0089デフォルトの名無しさん
垢版 |
2016/11/22(火) 11:23:52.32ID:J8mgYJIF
16万かー 高すぎる
昔の4万位ならまた買いたいと思っていたのに、これじゃ無理だわ
C#ならタダだから、こっちで我慢する
0090デフォルトの名無しさん
垢版 |
2016/11/22(火) 13:02:30.45ID:d73nUv9a
すごく初歩な事だと思うんだけど、フォームを最大にした状態でコントロールを配置するにはどうしたら良いですか?
0092デフォルトの名無しさん
垢版 |
2016/11/22(火) 16:00:58.51ID:d73nUv9a
フォームデザイナは消せない?
フォームデザイナの中で少なからずスクロールさせるのがうざくて。
0095デフォルトの名無しさん
垢版 |
2016/11/22(火) 18:10:29.79ID:kKFxgFqP
コンポーネントパレットのコンポーネントをダブルクリックすればいいんじゃね。
0096デフォルトの名無しさん
垢版 |
2016/11/22(火) 18:15:01.08ID:jjDYJ6Bv
最大化した状態を想定してコントロールを配置したい?
...ということでもなよね
0098デフォルトの名無しさん
垢版 |
2016/11/22(火) 20:54:34.84ID:1EZz+VvR
フォームのサイズに追随するように作るから
わざわざ最大化で考えたりしない
0099デフォルトの名無しさん
垢版 |
2016/11/22(火) 21:23:29.12ID:jjDYJ6Bv
>>97
自分だけが使うんだったら、最大化を想定して
コントロールの絶対位置を決めることもありだけどね

でも、どのような環境で使われるか分からない場合
フォームの最大化への対応は結構難しいと思う

まあコントロールのAlignでフォームサイズに
追随するだけでいいなら簡単だけど...
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況