◎正当な理由による書き込みの削除について:      生島英之とみられる方へ:

くだすれDelphi(超初心者用)その57 [無断転載禁止]©2ch.net ->画像>4枚


動画、画像抽出 || この掲示板へ 類似スレ 掲示板一覧 人気スレ 動画人気順

このスレへの固定リンク: http://5chb.net/r/tech/1476332514/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。

601デフォルトの名無しさん2018/08/27(月) 23:33:36.63ID:1pvUgZqM
回答有り難うございます。
とっても参考になりました。

ユーザー別なら %appdata%\appname\
ユーザー共通なら %ProgramData%\appname\

って感じで 良いみたいですね。

602デフォルトの名無しさん2018/08/28(火) 12:13:22.36ID:e0zrlbVu
確かプラットフォームごとのパスを取得する関数が用意されてたような

603デフォルトの名無しさん2018/08/28(火) 16:21:16.43ID:6kEMX7h9
iniファイル便利か

604デフォルトの名無しさん2018/08/28(火) 18:16:29.63ID:3sF2+X9S
>>603
PCが壊れたとき等、環境移行はローテクの方が・・

605デフォルトの名無しさん2018/08/28(火) 19:10:27.83ID:pa8Xm38g
レジストリなんか使わない。
XMLなんか使わない。
やっぱりINIがいい。

606デフォルトの名無しさん2018/08/28(火) 20:53:25.15ID:yUJd0FCJ
「プロジェクトから削除」で削除したunit2,unit3って結局生きてる?
unit1で参照してるからコンパイルしたらエラーが出ると思ったら何も出なかった。
プロジェクトの削除ってどう言うこと?

607デフォルトの名無しさん2018/08/28(火) 21:09:44.56ID:dFKNKLFU
そもそも
システムと連携でもしない限り
レジストリ使う必要が無いと思うんだが
自動的に何も考えずにレジストリ使ってるのが多いと思う

608デフォルトの名無しさん2018/08/28(火) 21:21:58.23ID:mAx5yIVS
>>606
プロジェクトツリーから削除されるだけで参照は自分で削除しないといけないよ

6096062018/08/28(火) 22:07:01.20ID:yUJd0FCJ
>>608
有難う

610デフォルトの名無しさん2018/08/29(水) 07:06:43.69ID:0P3/EBfJ
(アン)インストーラが付属しないツールで
設定をレジトリとかexeフォルダ以外のフォルダに保存したりとか
何考えてるのか分からないのもあるからな

611デフォルトの名無しさん2018/08/29(水) 19:36:02.35ID:2f70+wG1
>>598 >>601
Win8.1以降でiniファイルは取り扱いが難儀になったので
TIniFileでも拡張子を別のものにすると素直に使える。
例えば .env とか
.ini でトラブルになる挙動としては
管理者権限でプログラムを動かすとiniは書き出せるけどD&Dできなかったり
ユーザー権限で動かすとiniが書き込み変更できなくてエラーになったりする。

612デフォルトの名無しさん2018/08/29(水) 20:50:27.29ID:CUO+ntMd
インストールフォルダ自体がドキュメントフォルダ強制とかもあるな

613デフォルトの名無しさん2018/08/30(木) 10:16:05.96ID:S/vwwZyF
>>611
virtualstoreに入ってしまったものを
間違って元のディレクトリ名で見に行くと

「書き込み変更できなくてエラーになったり」

するね

6146112018/08/30(木) 16:00:49.78ID:xpekrfIC
>>613 >>598
こんな感じでやってます。
env : 「environment 環境」の略を当ててます。

procedure TForm1.SaveSettings;
var
Log_IniFile: TIniFile;
ia : Integer;
begin
Log_IniFile := TIniFile.Create(ChangeFileExt(Application.ExeName, '.env')); // .env ← .ini
try
// [window]
Log_IniFile.WriteString('window', 'x0', IntToStr(Form1.Left));
Log_IniFile.WriteString('window', 'y0', IntToStr(Form1.Top));
// [〜〜]
finally
Log_IniFile.Free;
end;
end;

615デフォルトの名無しさん2018/08/30(木) 16:39:09.31ID:h4Uebctf
WriteInteger使えよww

616デフォルトの名無しさん2018/08/30(木) 17:54:05.37ID:xpekrfIC
レジストリを汚しまくるのは好かん!

617デフォルトの名無しさん2018/08/30(木) 18:00:59.87ID:RB/Vojpj
>>616
ほんそれ

618デフォルトの名無しさん2018/09/04(火) 04:53:47.13ID:cIgTW3mD
スレッドオブジェクトで外部機器と通信するコンポーネント(自分で取り込んだactivexです)を使いたいのですが、
フォームがないのでcreateの引数って何にしたら良いでしょうか?
サブのフォームをvisible:= falseにして、そこに配置した方が良いでしょうか?

619デフォルトの名無しさん2018/09/04(火) 07:40:32.69ID:Iud04UXg
引数はnilでok
必要ならparentを指定する

620デフォルトの名無しさん2018/09/04(火) 20:59:53.37ID:cIgTW3mD
>>619
有難うございました。

621デフォルトの名無しさん2018/09/06(木) 20:32:48.73ID:b7skbySG
十数年ぶりにコード書いてます。

Delphi7 のソースを XE3 で書き直そうとしてますが ???です。
XE3は 買ったきり手つかずだったものを初めて使ってます。

ShortDateFormat、LongDateFormat、ShortDayNames が未定義の識別子エラーとなります。

uses には SysUtils が有ります。
どんな原因が有り得ますでしょうか?

挫けそうですw

622デフォルトの名無しさん2018/09/06(木) 20:59:54.36ID:Y0pbPBaL
単純な変数から変更されているので、
FormatSettings.ShortDateFormat
のようにしてみてくだされ。

623デフォルトの名無しさん2018/09/06(木) 21:14:09.34ID:b7skbySG
速攻でスゲー! 解決しました!

HELP の ”親” ってのを 見なきゃイケなかったのね
有り難うございます。

それにしてもHELP が いちいちHTMLソースが表示されて
”制限されたコンテンツの表示” ってクリックしなきゃなのは しんどい・・・

6246182018/09/07(金) 13:31:35.10ID:nbZaHp3Y
618です。
マルチスレッドで自分で取り込んだActiveXコントロールを使えるようにはなったのですが
不定期にEAccess Violationが出るので調べたら、このコントロールはSTA モデルとなっていました。
自分にはActiveXの知識があまりなくマルチスレッドで使用するにはCOM 関数のCoMarshalInterThreadInterfaceInStream,
CoGetInterfaceAndReleaseStream を使うのかな?ということまではわかりました。
ただ、参考にしたサイトには「インタフェースポインタを他のアパートメントに渡す場合,インタフェースポインタをマーシャリング
する必要があります。」と書いてありましたが理解できていません。
多分、各スレッドでCreateするのではなく1つのコントロールを各スレッドで使い回すのかなと思っています。
Delphiではどうするのか、とっかかりだけでも教えてください。
よろしくお願いします。

625デフォルトの名無しさん2018/09/08(土) 10:16:41.02ID:7h/1w/8o
C#にしたら

626デフォルトの名無しさん2018/09/08(土) 12:26:23.76ID:3pZBr9hd
そのまんまでしょうに。アパートメントをまたぐ場合はマーシャリングしなきゃいけない。
http://eternalwindows.jp/com/apartment/apartment02.html
で、CoMarshalInterThreadInterfaceInStreamでIStreamのバイトストリームに変換する。
で、そのストリームをアパートメントの異なる別スレッドに渡してそこでバイトストリームから元のオブジェクトに戻す。

コントロールのスレッドモデルより、各スレッドをどう初期化しかかがまず重要。
Comを使うときは各スレッドでCoInitialize(Ex)を呼ばなきゃいけんが、それでスレッドのアパートメントを指定する。

https://docs.microsoft.com/en-us/windows/desktop/com/processes--threads--and-apartments
読めば書いてある

627デフォルトの名無しさん2018/09/08(土) 18:32:14.22ID:ifS5zDmq
>>597
未だに見つけられていない

DeDe 3.50.02 Build 1619 for Windows
http://www.softpedia.com/get/Programming/Debuggers-Decompilers-Dissasemblers/DeDe.shtml

Delphi製のバイナリを解析する方法
http://peryaudo.hatenablog.com/entry/20110105/1294209734
>DeDeのprojectタブを使うと、
>ディスアセンブルされたx86のコードをコメントでくくっただけのpasとデコンパイルされたdfmをファイルに落とせる。

x86コードを直接見てもワケワカメ

628デフォルトの名無しさん2018/09/13(木) 10:48:16.02ID:TILqF4on
FireMonkeyのStringGridでマウスカーソル直下のセルの特定の仕方を教えてください。
マウスの座標は取得できています。
よろしくお願いします。

629デフォルトの名無しさん2018/09/13(木) 15:53:14.96ID:D2+vOfIF
CellByPoint

6306282018/09/14(金) 00:13:42.04ID:h30gDWV5
ありがとうございました。
一応は取得できるのですが、セル内のマウスカーソルの場所によって、セルが特定できたり
できなかったりという感じです。
また、列の位置は左端なら本来は0だと思うのですが1が返ってきます。
行は先頭行が16と返ってきます。
MousePos := Screen.MousePos;
StringGrid1.CellByPoint(MousePos.X,dMousePos.Y,ColNo,RowNo);
上記のようなプログラムですが、マウスの位置の取得方法が間違っているのでしょうか?

631デフォルトの名無しさん2018/09/14(金) 07:11:59.92ID:N3zUYsZd
onMouseMoveでテストしてみて

632デフォルトの名無しさん2018/09/14(金) 08:18:00.14ID:sVVlCHCP
ローカル座標に変換する必要あんでね?

633デフォルトの名無しさん2018/09/14(金) 12:20:56.93ID:rsfS0hy3
>>630
>MousePos := Screen.MousePos;
この段階でマウス座標はスクリーン座標(スクリーンの左上を起点とする座標)なので
クライアント座標(この場合、StringGrid1の左上を起点とする座標に変換しないとダメだよ
VCLならStringGridにScreenToClientというメソッドがあるんだけど
FireMonkeyのことはよく知らんけど似たような(もしくは同名の)メソッドがあるんじゃないかな

634デフォルトの名無しさん2018/09/14(金) 19:36:31.47ID:KQxf0S5x
てかコントロール上のマウス位置から何なしようってときに
スクリーン座標が出てくる訳が分からない

6356282018/09/14(金) 20:55:44.40ID:QxWxbdYR
皆さん、ありがとうございます。
まだ、解決できていないのですがまずはお礼まで。
ローカル座標はScreenToClientと同じ名前のものがあったので使ってみたのですが
うまくいきませんでした。
VCLの方だときちんとカーソル下のセルを正確に取得できるのに。
FireMonkey難しい。

636デフォルトの名無しさん2018/09/14(金) 21:57:04.38ID:KQxf0S5x
こんなんじゃだめなの?
TForm1 = class(TForm)
private
{ private 宣言 }
procedure StringGrid1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Single);

implementation
procedure TForm1.FormCreate(Sender: TObject);
begin
StringGrid1.OnMouseMove := StringGrid1MouseMove;
end;

procedure TForm1.StringGrid1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Single);
var ACol, ARow: integer;
begin
if StringGrid1.CellByPoint(X, Y, ACol, ARow) then
Edit1.Text := Format('Col:%d, Row:%d', [ACol, ARow]);
end;

カーソル下のセルを正確に取得できてるよ

637デフォルトの名無しさん2018/09/14(金) 23:50:03.06ID:QxWxbdYR
>>636
ありがとうございます。
やりたいことができました。
>>631
ヒントもらっていたのに申し訳ありません。

あくまでもコントロール上の座標を取らないといけないということですね。
ScreenToClientはアプリのウィンド上の座標と言うことで良いでしょうか?

638デフォルトの名無しさん2018/09/15(土) 00:17:48.45ID:8rxpHkWL
なんで未だにデルファイなんかやっとるんやおまいら?

639デフォルトの名無しさん2018/09/15(土) 06:26:34.02ID:mxfFGWip
いろいろな言語使えるけどDelphiがベストだと思うから

640デフォルトの名無しさん2018/09/15(土) 06:42:36.21ID:3TWFaDlw
>>638
てかそんな話はエンバカスレでどうぞ

641デフォルトの名無しさん2018/09/15(土) 11:07:16.52ID:AVfR6YnT
Delphiは討たれる

642デフォルトの名無しさん2018/09/15(土) 17:32:12.84ID:AkXmtK9p

643デフォルトの名無しさん2018/09/16(日) 10:48:44.14ID:e3KaLVno
SKRegExpの作者はどこに行ったの?

644デフォルトの名無しさん2018/09/26(水) 11:44:44.46ID:Ov2EA3Ui
今頃デルファイの10.2.3をインストールしようと思うんですが、サイトに書いてあるように一旦10.2をアンインストールしないとまずいですか?
一旦アンインストールした場合サードパーティーのコンポーネントはやはり再インストールしないとダメですか?
10.2.3をインストールしたら復活するとかは無いですかね?

645デフォルトの名無しさん2018/09/26(水) 13:25:05.76ID:WoZunzir
>>644
別のプログラムとしてインストールされるからTokyo用のコンポーネントは再インストール必須
別に10.2を残してても共存はできる

646デフォルトの名無しさん2018/09/26(水) 15:05:08.27ID:Ov2EA3Ui
なんか共存できんかった

647デフォルトの名無しさん2018/09/26(水) 17:59:31.37ID:7bJbQB0s
同居出来ないってCPB CEでも入ってるのか?

648デフォルトの名無しさん2018/09/26(水) 19:21:31.24ID:ANIjlW8h
BerlinとTokyoは共存できるけどToky同士は共存できなかったはず
10.2から10.2.3は設定データなどを残してアンインストール、インストールで普通に移行できたよ
CDイメージからのインストールの場合だけどね

Webインストールの場合はそれができないんだったっけ

649デフォルトの名無しさん2018/09/26(水) 19:58:22.59ID:V9O91uO9
サードパーティのコントロールが消えるのが嫌でアンインストールせずやってしまった。orz

650デフォルトの名無しさん2018/09/28(金) 08:42:20.23ID:CK9JalNS
ツールパレットにはコンポーネントのアイコンがきちんと表示されているんだけど、フォームに配置するとアイコンが見えない位小さくなってしまうんだけどなんで?

651デフォルトの名無しさん2018/09/28(金) 18:27:10.70ID:L/CPkr5D
>>650
老眼かい?
他人にはあんたの見て思ってる物が大きいか小さいかなんてエスパーでもないから分らない。
画面キャプチャーでもして画像貼れ

652デフォルトの名無しさん2018/09/28(金) 20:17:23.17ID:CK9JalNS
そうか、ご苦労

653デフォルトの名無しさん2018/09/29(土) 04:51:42.90ID:61Ke5MR1
フォームにアイコンだけ表示されるやつは
OnCreateで手動で追加する形でずっとやってるから
どうでもいいは

654デフォルトの名無しさん2018/09/29(土) 06:17:50.02ID:SaDPGrJG
>>650
4Kモニターを使っているのかい?

655デフォルトの名無しさん2018/09/29(土) 20:55:31.30ID:nJOGxOxE
そして
ふてくされて二度と来ないコミュ障であった

656デフォルトの名無しさん2018/09/30(日) 05:42:12.80ID:OYYkxayT
かわいそう・・・

657デフォルトの名無しさん2018/09/30(日) 16:24:03.95ID:sVuwBfqE
意外とみんな覗いてんな

658デフォルトの名無しさん2018/10/03(水) 20:49:10.84ID:T89/Qa9b
モニタにもっと顔を近づけるんだよ きっと見れるよ

659デフォルトの名無しさん2018/10/04(木) 10:29:39.99ID:FXVBuQxV
モニタよモニタよモニタさん

660デフォルトの名無しさん2018/10/06(土) 09:18:43.15ID:ruQOvniH
マルチデバイスのソフトを初めて作ろうと思っています。
コントロールの配置に関して質問なのですが、とりあえずPC用かスマフォ用を作ってその後、
各デバイス用に配置しなおして再コンパイルする手順でいいでしょうか?

661デフォルトの名無しさん2018/10/06(土) 12:13:05.71ID:Z2kGgnGa
まずalignの使い方かな

662デフォルトの名無しさん2018/10/06(土) 15:33:22.97ID:dM0Hntxh
>>660
FireUI

6636602018/10/07(日) 08:57:42.83ID:XyZZDpel
有難うございます。
調べて勉強します。

664デフォルトの名無しさん2018/10/13(土) 18:12:13.98ID:3G3/hyQa
何かウェルカムページを開きたびに
セキュリティ警告が出るんだが

665デフォルトの名無しさん2018/10/13(土) 22:28:09.39ID:19TuI9Cj
>>664
SSL証明書が期限切れたから更新あうるまで待ってってMCさんが

666デフォルトの名無しさん2018/10/13(土) 23:05:26.94ID:ApCV8gEF
>>665
なるほど

今日はvclとfmxアプリ間のメッセージングのテストやってて
切り替えるたんびにダイアログが何度も出てイヤんなる

667デフォルトの名無しさん2018/10/17(水) 17:24:01.23ID:GbCGuExa
ブラウザのタイトルを取得したいんですけど、

WebBrowser1.Document.Titleだと、
'TWebBrowser' は 'Document' という名前のメンバを含んでいません

WebBrowser1.OLEObject.Document.Titleだと、
'TWebBrowser' は 'OLEObject' という名前のメンバを含んでいません

ってなるんです。
usesに何か足りませんか?

uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.StdCtrls,
FMX.Edit, FMX.Controls.Presentation, FMX.WebBrowser;

Delphi 10.2 Community Edition

668デフォルトの名無しさん2018/10/17(水) 17:49:10.11ID:GbCGuExa
解決しました。
VLCじゃやないやつで作ろうとしてたみたいです!

669デフォルトの名無しさん2018/11/06(火) 12:05:36.75ID:FnkVAeUe
FMXでLabelのバックカラーの変更って出来ない?
今はPanelの色を変えて、その上に貼り付けてるんだけど。

670デフォルトの名無しさん2018/11/06(火) 15:03:32.51ID:lO/IgrxW
>>669
labelのスタイルに背景ってないからムリじゃないかな

あとpanelよりtlayoutの上にtrectangleのせて
さらにlabelはったほうが柔軟性が高い

671デフォルトの名無しさん2018/11/06(火) 16:08:30.30ID:xJl/nUxi
>>670
TRectangle、オブジェクトエクスプローラからなら子に色んな物入れられるよ
(要するにTRectangleがTLayoutのように使える)

672デフォルトの名無しさん2018/11/06(火) 18:54:34.08ID:O/iOsvOA
>>669
XE5までの知識しかないが、
TStyleBook割り当てて、そっちで対応するんじゃなかったかな?

673デフォルトの名無しさん2018/11/06(火) 19:14:26.53ID:lO/IgrxW
>>671
ホントだ

TPopupなんかもHelpじゃ実行時にParentを操作して
コントロールを乗っけるって書いてあって
使い勝手が悪いと感じてたんだけど
同じ方法で設計時にコントロールを配置できたりするんだよな

6746692018/11/06(火) 22:06:13.74ID:FnkVAeUe
皆さん、ありがとうございました。
Rectangleって楽ですね。
もう一つ教えて下さい。
panddingとかmarginsを設定して0に元に戻すと隣のコントロールと隙間が空いたままになるのは自分だけ?

6756692018/11/06(火) 22:08:56.05ID:hsnGAH6F
訂正です。
panddingとかmarginsを設定して実行。
その後、全部0に戻して実行しても隙間が空いたままです。

676デフォルトの名無しさん2018/11/07(水) 12:11:35.51ID:wV9cKqqT
>>675
fmxのmarginはちょっとバグってる気がする

その例と同じかどうか分からないけど
複数のspeedbuttonをalignをleftにして並べて
ボタンのmarginを一度設定すると
marginを解除しても
ボタンの左半分くらいがマウスに反応しなくなる

いろいろやってると何かのきっかけで正常になったりする

677デフォルトの名無しさん2018/11/07(水) 12:24:36.39ID:wV9cKqqT
上にスタイルの話があるけど
スタイルで背景色を変えたら
Windows10以外では適用されてなかった

コンパイルのしかたかなぁ

最近公開したソフトで
ユーザに指摘されて初めて気づいたよ

6786692018/11/08(木) 21:49:27.80ID:+35zDuDi
結局プログラムで指定すれば配置されるので我慢します

679デフォルトの名無しさん2018/11/15(木) 21:17:33.28ID:T3q1kNSY
fmxでのフォームの最小化と復帰だけど
コードだけでで問題なく動作する?

WindowState := TWindowState.wsMinimize;
WindowState := TWindowState.wsNormal;
でできるはずなんだけどね
何かうまく機能したりしなかったり

680デフォルトの名無しさん2018/11/20(火) 09:18:03.84ID:7wJBb/wv
本棚からDelphi7体験版が出てきたのでインストールしようとしたら、
ライセンス取得のところでエラーが出て使用することができません。
今更ながら、使うことは不可能なのでしょうか?

DelphiXEで非Unicodeのソースが作れればそれでも構わないのですが。

681デフォルトの名無しさん2018/11/20(火) 22:24:15.58ID:yy/MaTgl
今ならフリーのDelphiありますよ

682デフォルトの名無しさん2018/11/20(火) 22:25:24.56ID:yy/MaTgl
すみません非Unicodeと限定されている意味がわからないので現行のものではダメなのかも知れませんね

683デフォルトの名無しさん2018/11/21(水) 01:49:20.19ID:LolYlRS5
使用許諾コードがメールで送られてくる登録フォームならある
今でも機能してるのか知らんけど
http://support.embarcadero.com/jp/install/product

684デフォルトの名無しさん2018/11/23(金) 08:08:59.67ID:aknsIo8R
>>683
良くサイトを見たら、体験版の承認キーの発行は終了しているみたいです。
せっかく教えていただいたのにすみません。

685デフォルトの名無しさん2018/11/24(土) 01:36:16.72ID:e4CBxpxl
FMXをタッチパネルついてるWindows10で動作させるとTListViewとかが勝手にタッチパネル用のスタイルになるのどうにかならんかなぁ
Scrollbarが表示されない上にタッチパネル操作になるから操作が統一できない・・・
デバイス自体を無効にしたらタッチパネルじゃないスタイルで動作するけどなんだかなー

686デフォルトの名無しさん2018/11/25(日) 11:17:43.53ID:x9MDawPF
ListBoxの項目にFocusを付与したいのですが、3,4日うまくいかず困っています。
クリック以外の方法でListBoxにFocusを付与する方法というのはありますか?

687デフォルトの名無しさん2018/11/25(日) 21:01:29.45ID:4hnmy7r/
ListBox1.ItemIndex:=3;
ListBox1.SetFocus;
ってこと?
なんか以前にもこんな質問あったような気がするが

688デフォルトの名無しさん2018/11/26(月) 13:46:48.38ID:gMNgG1vk
>>687
どうもです。
ただ、マウスクリックするとFocusが出ますが、ListBoxの他の所をクリックすると消えちゃうんですよね…。

689デフォルトの名無しさん2018/11/27(火) 01:04:25.95ID:uHJWsmxJ
>>688
そりゃそうだ
他のフォーカスを持つ所をクリックすればフォーカス移る

何がしたいのかわからない
「ウィンドウ ハンドルを持つコンポーネント」の意味を理解してますか?
例えばここ http://delfusa.main.jp/delfusafloor/archive/VA009712_take/delphi/kabeapp.htm

ListBox以外にフォーカス動かしたくないんなら
他の全てをフォーカスを持たないSpeedButtonとかメニューやツールバーとかにするしかない
或いは他を Enabled:=Falseにするとか

690デフォルトの名無しさん2018/11/27(火) 09:44:39.76ID:/9xlS8t7
こんな物を作っていました。
http://www1.axfc.net/u/3946835.zip?key=123456
既知の不具合
下手にいじると簡単にバックグラウンドプロセスに行ってしまう。

Focusについてですが、このアプリはFocusが残る物をベースに作りました。
新しく作り直した物がListboxをクリックすると一瞬だけFocusが表示されるのですが
すぐ消えてしまうと言うよく分からない現象が起きていました。

よろしかったらご評価いただければ幸いです。

もう我流は辞めてTurboDelphi〜を参考書に勉強したいと思います。

691デフォルトの名無しさん2018/11/27(火) 09:53:17.62ID:/9xlS8t7
大事なことを忘れていました。

このアプリはエクスプローラ上で.wavファイルを選択し「送る」もしくはアイコンでD&Dすると再生を始めます。
またアプリを起動して、エクスプローラからフォームに直接D&Dすると曲を演奏します。

よろしくお願いいたします。

692デフォルトの名無しさん2018/11/27(火) 12:16:28.81ID:e3+VQ8Az
例のお方か
まだやってたのはちょっとビックリ

693デフォルトの名無しさん2018/11/27(火) 15:00:40.58ID:/9xlS8t7
そうですよ。まだやってました。石の上にも3年と言う言葉もありますし
おかげさまで、プログラミング技法の第一巻の半分くらいまでは理解できるようになりました。
今度はちゃんと基礎からやり直したいと思います。

あげたファイルはアルファー版ほどの出来ですが、今の知識で作った物です。
ご興味がありましたら、ご評価をよろしくお願いいたします。

694デフォルトの名無しさん2018/11/27(火) 20:14:14.72ID:NOmVen+G
>>685
確かにスクロールバーが通常は非表示だけど
そんなに違いがあったっけ?

自分としてはマウスホイールでスクロールしてるときも
スクロールバーが非表示なのがあれだけど

695デフォルトの名無しさん2018/11/27(火) 20:24:03.07ID:B1T5LoxP
>>694
マウスでドラッグしたらスクロールできたり(タッチパネル式だからマウスでスクロールバー操作するのとは逆の動きする)、スクロールバーが表示されてるときにクリックしても反応なかったり
OS側で常にスクロールバー表示しても非表示とか

レガシーな入力デバイスが主なプラットホームでは切り替えられるようにしといて欲しい・・・

696デフォルトの名無しさん2018/11/27(火) 22:24:05.07ID:NOmVen+G
>>695
てかいま自分が作ってるfmxアプリをwindowsタブレットで動かしてみると
listviewとかのタッチでのスクロールには少し違和感があるね
android上とは明らかに違う操作感だ

697デフォルトの名無しさん2018/11/27(火) 22:44:39.21ID:uHJWsmxJ
>>690
ごめん俺687と689を書いた者だけど自分の勉強以外で人のソース読むほど時間はないんだ
と書きながらも流し読みだけでもしようかと開いてみたら
「404 Not Foundファイルが見つかりません」

>新しく作り直した
と書かれているがそれは今までのソースのつぎはぎコピペではなく自分で理解しながら書き起こしたものですか?
それならば不具合が出たとしても何をググって調べればいいかわかると思います

プログラミング技法って昔持ってた記憶があるけど一度通読したあと埃かぶってたまま引っ越しの時に捨てたくらいいまいちな本だった記憶
自分はやっぱり最初は「はじめてのDelphi」が一番わかりやすかったし
「Delphiオブジェクト指向プログラミング」でVCL読むようになって
「インサイドDelphi」とか「シェルプログラミング入門」が楽しく読めるようになった

そうです私もおじさんです

698デフォルトの名無しさん2018/11/27(火) 22:49:52.31ID:NOmVen+G
>>690
何をしたいのか分からないよ?
focusって言葉がそもそも違うんじゃない?

もし何らかの理由で本当にlistboxにfocusを与えたまま
維持したいんだけど、できないんだったら
他のコントロールがfocusを奪ってるんでしょ

それを調べたらいいんじゃない?

699デフォルトの名無しさん2018/11/27(火) 23:04:45.17ID:NOmVen+G
>>697
自分なんか「おじさん」じゃなくて
60過ぎのジイサンだよ

と言ってもdelphi歴は短いけどね
今はfmxにハマってる

700デフォルトの名無しさん2018/11/28(水) 07:11:14.22ID:cOVA6pyZ
ListBoxってフォーカスの有無で外観が変わったっけ?
フォーカスがなくなって困ることってある?

701デフォルトの名無しさん2018/11/28(水) 18:42:27.35ID:6Wq1ldCo
ご評価していただいた皆様ありがとうございます。
このソフトを作るときは、巻き戻し・プログレスバー移動自由自在・リモコン対応
を目標に作り始めましたが、どれ一つも実現できませんでした。
MCIを使っての巻き戻しは、テープ系なら可能みたいですがMpegではデバイスが対応していないので無理。プログレスバーでの移動はどんなに大変なのかは、DelphiでDVDプレイヤーを作った方のサイトがあるのでそちらを参照してください。
大本のVolume制御以外は自分で実装しましたが、新しく別プロジェクトを作って試作してめどが立ってから導入しましたが、何故か思ったように動かず。
前半はMCIに翻弄され後半はインターフェースに苦しみ、メディアプレイヤーはもう少し修行を重ねてから、作りたいと思います。
愚痴めいた内容ですみません。

色々アドバイスをしてくれた皆様、特に質問を投げかけたときに、コマンドを一言つぶやいていただいた方、自分で使い方を調べることで理解が進みました。
スレ汚し失礼しました。

702デフォルトの名無しさん2018/11/28(水) 18:45:05.85ID:KTh/kflZ
3行で頼む

703デフォルトの名無しさん2018/11/28(水) 19:03:58.25ID:6Wq1ldCo
教えてくれた皆さんありがとう
つかれた
mp3再生君にはかないませんでした。

こんな感じで

704デフォルトの名無しさん2018/11/28(水) 19:51:39.78ID:N0ilq15o
>>702
おまえ1行じゃねえか

705デフォルトの名無しさん2018/11/28(水) 19:52:09.33ID:9Dt+AyzE

706デフォルトの名無しさん2018/11/28(水) 21:12:16.13ID:6Wq1ldCo
そうでした。
Object Pascal言語ガイドを少し腰を据えて読んで理解したいと思います。

707デフォルトの名無しさん2018/11/28(水) 21:32:01.67ID:m6jgQPaC
前も言ったような気がするけど
fmxのコントロールのカスタムスタイルって
Windowsだと10でしか有効にならなくない?

設定した背景色とか8.1や7じゃ消えてるし

708デフォルトの名無しさん2018/11/28(水) 22:21:14.73ID:KTh/kflZ
>>707
Windowsのバージョンで別々に設定できる反面、Windows10専用で設定されてるのに気付かないと別の環境では変な表示になっちゃうよね

709デフォルトの名無しさん2018/11/28(水) 23:14:08.68ID:DuRogDXc
MCI君をいじると擁護する単発が現れるのももう恒例行事になってきた。

710デフォルトの名無しさん2018/11/28(水) 23:46:29.77ID:WWqTncYq
え?誰が擁護してる?

711デフォルトの名無しさん2018/11/29(木) 00:17:09.19ID:3U/+XJ1L
ほらね

712デフォルトの名無しさん2018/11/29(木) 08:37:13.44ID:J6L5KB/r
>>708
そうなんだ

確かに「ターゲットプラットフォームの
バージョンごとにネイティブ」って書いてあるね

Windows 10 Desktop用に作ってあったとして
新たに8用と7用も作ってやらないとならないのか

こりゃちょっと大変な作業だ

713デフォルトの名無しさん2018/11/29(木) 15:25:33.53ID:yQEZusSx
>>712
デフォルトスタイルに設定するか、スタイルを保存して各プラットホームにマージしたらそんなに手間でもないよ

714デフォルトの名無しさん2018/11/29(木) 21:26:39.87ID:w2wW1sYB
>>713
ありがとう
マージできるんだ

何もわからないで始めたのがマズかった

715デフォルトの名無しさん2018/12/05(水) 10:09:27.51ID:mTCdLhw6
DelphiXEを使ってます。
エクスプローラからプロジェクトファイルをダブルクリックしてDelphiが起動するのですが、
さらにもう一つ同じ操作で起動すると、先に起動したIDEのプロジェクトグループに追加され
てしまいます。2つ目のプロジェクトを別のIDE画面で起動したいのですが、そのような設定
があるのでしょうか?

716デフォルトの名無しさん2018/12/06(木) 13:52:27.48ID:DDjonqa2
無い
そういうものと思うしかない

717デフォルトの名無しさん2018/12/07(金) 09:21:09.18ID:2Avy4w/h
>>715
スタートメニューから起動してプロジェクトロードするしかない
レジストリをいじれば出来るかもしれないけど

718デフォルトの名無しさん2018/12/08(土) 09:28:52.05ID:p9Ru1ius
Rioの各デスクトップレイアウトを変更した後
それを保存する項目がメニューから消えたみたいですが?

719デフォルトの名無しさん2018/12/08(土) 13:38:29.09ID:NwPO1Ie0

720デフォルトの名無しさん2018/12/08(土) 17:06:57.94ID:p9Ru1ius
>>719
ありがとうございました
できました

このボタンが関係するのかなとも思いましたが
Hintも非表示でスルーしてました

721デフォルトの名無しさん2018/12/12(水) 22:30:39.97ID:MSpbLBgR
エンタープライズコネクターのインストール方法教えて下さい。
ダウンロードしてsetup.exeを実行してパスを通すの?

722デフォルトの名無しさん2018/12/13(木) 09:33:41.92ID:+QyQFfQj
ちょっと教えてください

fmxのカスタムスタイル変更でコントロールの背景を変更するとき
Windows 10 Desktopstyle.pngとかWindows 7style.pngとか利用しますが
これってどこにあるの?

この画像を修正したいいんですがドライブの中を検索しても見つかりません

723デフォルトの名無しさん2018/12/13(木) 11:47:04.04ID:YCEJ54t4
Delphi10.3 Community Edition 入れてみた
オブジェクトインスペクタのイベントTabが開かないんだけど
俺だけ?
Delphi10.23 Community Editionでは問題なく選択できる

724デフォルトの名無しさん2018/12/13(木) 16:31:21.26ID:vV5HNjFS
10.23とかなり新しいから修正あったんだろ

725デフォルトの名無しさん2018/12/13(木) 18:38:58.45ID:YCEJ54t4
'イベント'の文字の所をクリックすると いけた
TABの色と右側空白の色が同じだったので、空白をクリックしていただけだったw

726デフォルトの名無しさん2018/12/13(木) 19:43:45.07ID:w3f+OOI4
クリックしてイベントTabを開けない方が難しいと思うw

727デフォルトの名無しさん2018/12/15(土) 02:19:47.94ID:bDhDTHwp
10.3でPostMessageを使ったメソッド、イベントハンドラ呼び出しの
標準のラッパーみたいのありますか

Call(Button1Click, [Sender]);

的な使い方ができるもの

728デフォルトの名無しさん2018/12/21(金) 18:01:03.17ID:cky1I29u
AndroidアプリのためにFMX.MEMOを使って
簡単なテキストエディタを作ろうと思ったが
いざAndroid上で動かすと、漢字入力の際
変換中の文字列の色が変化せずに困っている

普通は入力中の文字、文節の区切り、カーソル位置で
色が変わったり下線が表示されるが、周りの文字と同じままで
どこが入力中で、どこが文節の区切りなのか分からない
何か設定が足りないんだろうか?
(IMEはGoogle日本語入力です)

729デフォルトの名無しさん2018/12/22(土) 08:55:33.68ID:NdThNIsr
まあバグだろうね。欧米人はIMEとか使わないから

730デフォルトの名無しさん2019/01/20(日) 15:49:29.87ID:qfpRHOuf
D7 です。
それなりに以前の機器の古いバイナリデータの日時情報が 8 byte(64bit) Hex で記録されているのですが、
日付TDateTime型 に入れる式をどなたか分りませんでしょうか?

この形式のような気配なのですが
http://madia.world.coocan.jp/vb/vb_bbs2/200602/200602_06020084.html
>Windowsは、「1601年1月1日 00:00:00からの100ナノ秒単位の経過数」です。

実データ値
0x88D24B060812D480 : 2015/04/22 11:24:29 付近
0x88D24B0608AB6B00 : 次の変化 : 差分 int 10000000 = Hex 0x989680
 ↓
0x88D24B0628429380 : 2015/04/22 11:25:23 付近 : 最終

// UNIX 系の変換はこのような感じでやってたのですが
var
i64 : Int64;
la : Longword;
TextStr : String;
ULDateTime : TDateTime;
begin
i64 := StrToInt64('$' + Edit_Unix64bitDateTime.Text);
la := i64 div 1000;
ULDateTime := UnixToDateTime(la);
TextStr := FormatDateTime('YYYY/MM/DD HH:MM:SS',ULDateTime);
UNIX 系でのミリ秒含めでもなさそうでちょっとお手あげです。

731デフォルトの名無しさん2019/01/20(日) 18:16:00.16ID:pkTQkmr2
64bitの符号付きかね?

符号無しでも試してみれば?

7327312019/01/20(日) 18:33:56.63ID:pkTQkmr2
整数型は、符号付き・符号無しのどちらか?
リトルエンディアン・ビッグエンディアンのどちらか?

そのサイトのソースコードを見ると、
unsigned long low, high;
unsigned は、符号無し

val[0〜3]がlow、[4〜7]がhigh、
0123_4567 が、low_high だから、ミドル(PDP)エンディアンか?

1234_ABCD を、ABCD_1234 にしているのか?

Wikipedia の「エンディアン」を参照して!

733デフォルトの名無しさん2019/01/20(日) 20:11:56.51ID:KDWvqb8v
D7から10.3comに変更してAndroidアプリでも作ろうかと気軽にチャレンジしたら
すげー苦労してる・・・
プロパティ名が微妙に違うしStringGridとかListviewみたいになってるし
ダイアログとかも面倒くせー

734デフォルトの名無しさん2019/01/20(日) 20:13:41.94ID:KDWvqb8v
すまんエン馬鹿スレと間違えた メッセージが分かりづれーよJane

7357302019/01/21(月) 09:36:20.23ID:a6ON0eDT
詳細書き直し
古い規格データの機器からのバイナリデータ。
目的:古いデータを今の形式にする為。
日時部分を Delphi D7 で扱える ULDateTime : TDateTime; に入れたい。
問題点:時間部分の変換が分らない。

データブロックを構成する他の部分データ部分はリトルエンディアンで構成されている。

バイナリエディタで見ると不明で残る日時データ部分が8バイトの羅列。
 [0][1][2][3][4][5][6][7]
(1) "80 D4 12 08 06 4B D2 88"

データの変る区切りで (2)つ目の変化
(2) "00 6B AB 08 06 4B D2 88"

時間が進むごとに
[0] 側から加算されていく、よってこの部分もリトルエンディアンで構成。
1分に満たない時間変化で4バイト目も変っていく為 32bitではない。

736デフォルトの名無しさん2019/01/21(月) 09:40:36.46ID:p/5Zwz2x
Link先はUnix系だからこれでいけるようだけど違うみたいね

function bswap64(i: int64): int64;
begin
result := (i and $ff00000000000000) shr 56 or (i and $ff000000000000) shr 40 or
(i and $ff0000000000) shr 24 or (i and $ff00000000) shr 8 or
(i and $ff000000) shl 8 or (i and $ff0000) shl 24 or
(i and $ff00) shl 40 or (i and $ff) shl 56;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
i64 : Int64;
d: double;
la: cardinal;
s : String;
dt : TDateTime;
begin
i64 := StrToInt64('$' + '6082D42A5A38C601');
i64 := bswap64(i64);
d := i64 * 1.0e-7;
d := d - 11644473600;

d := d /(24*60*60) + UnixDateDelta;
dt := FloatToDateTime(d);

// la := Trunc(d);
// dt := UnixToDateTime(la);

Edit2.Text := FormatDateTime('YYYY/MM/DD HH:MM:SS', dt);
end;

7377302019/01/21(月) 09:56:47.94ID:/4Ne5b0H
パソコンで続きを書こうとしたらホスト規制の文字が出る
>736 考えてみます

7387362019/01/22(火) 07:57:49.66ID:wlBx3Xs7
Q : 整数型は、符号付き・符号無しのどちらか?
A : いっさい不明

全差分 54秒 ほどの間に 1529 個ほどのデータ
時間文字の違いを抜き出し
time 1> 0x88D24B060812D480 : 2015/04/22 11:24:29 付近
time 2> 0x88D24B0608AB6B00
 〜
time end-1> 0x88D24B0627A9FD00
time end> 0x88D24B0628429380 : 2015/04/22 11:25:23 付近

2進数、8進数、10進数、16進数相互変換ツール
h ttp:〜(この〜〜は規制がどうたらこーたら表示)
符号なし10進数化で差分を求めると 10000000
これが1秒の更新と一致。

新展開
"00 40 E4 47 02 22 C1 08" : 終了段未計測の値、(データ無し)
0x08C1220247E44000
符号なし で変換 630822816000000000 ググるといくつも何かがHit
Calendar のどうたらこーたら英文一杯

739デフォルトの名無しさん2019/01/22(火) 20:50:24.33ID:zgLYWjKa
>>738
time2の値を0xffffffffffffffff-1(=0x7fffffffffffffff)でbit andを取ると、
0x8d24b0628429380

この値を.NET frameworkのDateTime型に渡してインスタンス化したところ、

2015/04/22 11:25:23
となり一致した。

.NET frameworkのDateTime型は、100nsecの分解能をもつグレゴリオ歴0001年1月1日 00:00:00からの経過時間

またほかの考察から、1sec=10000000であり、ちょうど100nsecの分解能とも一致している。

740デフォルトの名無しさん2019/01/22(火) 20:52:09.44ID:zgLYWjKa
>>738
データ点数1529は、
1529 = 54 * 28 + 1
なので、28Hzのクロックシグナルでログを取っているものと予想される

741デフォルトの名無しさん2019/01/22(火) 22:15:27.13ID:zgLYWjKa
>>738
日時の表現が.NET frameworkのDateTime互換と仮定すると、

>>739 では上位1bitを捨てたけど、実際には2bit捨てるのが正しい。

この2bitが何物かといえば、
時刻の種類を示すbit flagで、指定なし(0), utc(1), local(2)

例示された値の上位2bitは0b10(=2)なので、ローカルタイムだったのだろうと推測される。

7427362019/01/23(水) 06:54:24.00ID:BnZEIkIf
>>739-741
ありがとうございます。
まとめるとこのような感じで上手くいくようです。

7437362019/01/23(水) 06:56:58.78ID:BnZEIkIf
.NET frameworkのDateTime互換型と仮定 → (.Net型 非対応) Delphi TDateTime型

対象 : 0x88D24B0628429380 : 2015/04/22 11:25:23 付近
符号なしで推移

2000年1月1日 00:00:00 基準値 0x08C1220247E44000
差分
16進数 = 80112903E05E5380
10進数 = 9228202208084775808
02進数 = 1000000000010001001010010000001111100000010111100101001110000000
.NET frameworkのDateTime型は、100nsecの分解能をもつグレゴリオ歴0001年1月1日 00:00:00からの経過時間
時刻の種類を示すbit flagで、指定なし(0), utc(1), local(2)
値の上位2bitは0b10(=2)なので、ローカルタイム
上位2bit捨てる

2000/01/01 00:00:00 以降だけと仮定(計測機器データなので過去は無し)
1000000000010001001010010000001111100000010111100101001110000000
 00000000010001001010010000001111100000010111100101001110000000 = 4830171230000000 = 0x112903E05E5380

4830171230000000 / 10000 ms = 483017123000 {切捨て}

483017123000 (ms)
/1000 = 483017123 ...0 (ms)
/60 = 8050285 ...23 (sec)
/60 = 134171 ...25 (min)
/24 = 5590 ...11 (hour)
2000年1月1日 から 5590 日のローカルタイム経過日

7447362019/01/23(水) 07:02:27.05ID:BnZEIkIf
.NET frameworkのDateTime互換型と仮定 → (.Net 非対応) Delphi TDateTime型
検証中
uses
// (略)
DateUtils,Math;

procedure TForm1.Button_Hex64Bit2000CalendarClick(Sender: TObject);
var
i64 : Int64;
// (略)
TextStr : String;
ULDateTime : TDateTime;
begin
i64 := StrToInt64('$' + Edit_Hex64BitDotNfDateTime.Text);
i64 := i64 - $08C1220247E44000;
TextStr := IntToHex(i64,16);

Memo1.Lines.Add(TextStr);
// Hex 16bit 文字→ 2bit String に変換
// 上位2bit 文字 で utc(1)00, local(2)10 を判定後削除
// i64 := 残りを 10進数数値に変換
// i64 := Trunc(i64/10000); // ミリ秒単位化

i64 := 483017123000; // (仮入れ)
ULDateTime := StrToDateTime('2000/01/01 00:00:00.000');
ULDateTime := IncMilliSecond(ULDateTime,i64);
TextStr := FormatDateTime('YYYY/MM/DD HH:MM:SS.ZZZ',ULDateTime);
Memo1.Lines.Add(TextStr);
end;
結果 : 2015/04/22 11:25:23.000
一致しました。

745736 関数化2019/01/24(木) 06:22:34.57ID:+IgQLcoJ
関数化したものを分けて書こうとすると
Sorry, you have been blocked
You are unable to access 5ch.net

>744 変更
i64 := i64 - $08C1220247E44000;
// Int64 → 2bit String に変換
TextStr := Int64ToBin(i64,False); // 他者さんの参照外部関数を改変
// 上位2bit 文字 で utc(1)00, local(2)10 を判定後削除
// 上位ゴミ'0'削除

// i64 := 残りを 10進数数値に変換

746736 関数化2019/01/24(木) 06:38:11.74ID:+IgQLcoJ
function DotNf64bitHexToDateTimeStr(Str8bytesHex : String; Flg,MS : Boolean) : String; // 8 Bytes Hex , Flg check , ms on(True/False)off
(省略 >744冒頭部分近似)
// i64 := 残りを 10進数数値に変換
ib := 0; // 頭"i"Int
ea := 0; // 頭"e"Extended
ilen := Length(TextStr);
for ia := ilen downto 1 do
begin
iBin := StrToIntDef(TextStr[ia],0);
ea := ea + ((power(2,ib)) * iBin);
ib := ib + 1;
end;
i64 := Trunc(ea / 10000); // ミリ秒単位化
ULDateTime := StrToDateTime(DateTimeStr);
ULDateTime := IncMilliSecond(ULDateTime,i64);
if MS then DateTimeStr := FormatDateTime('YYYY/MM/DD HH:MM:SS.ZZZ',ULDateTime);
if MS = False then DateTimeStr := FormatDateTime('YYYY/MM/DD HH:MM:SS',ULDateTime);
end;
if Flg then DateTimeStr := UL + DateTimeStr;
DotNf64bitHexToDateTimeStr := DateTimeStr;
end;
end.

747736 関数化2019/01/25(金) 06:18:32.24ID:/nan/z+i
補足

i64 := StrToInt64('$' + Str8bytesHex);
// Int64 → 2bit String に変換 'Int64ToBin' で検索先
// 上位2bit 文字 で utc(1)01, local(2)10 を判定
i64 := i64 - $08C1220247E44000;
// Int64 → 2bit String に変換
// 上位ゴミ'0'削除
// i64 := 残りを 10進数数値に変換

流れをこうしないと年日時の結果は同じでも
指定なし(0) 上位2bit 文字 '00' の場合
差し引き結果から'01'のutc判別となってしまう。

748デフォルトの名無しさん2019/01/26(土) 12:43:51.03ID:V7Vc5iY/
DocWikiの内容をzipファイルか何かで一括ダウンロードする方法あったら教えてください

749デフォルトの名無しさん2019/02/10(日) 07:14:24.28ID:RF523CmO
古いD6をまだ使っているが、エディタは VScode にDelphi extension入れて
使っている
デバッグはD6のIDEでやるしかないけど、両方立ち上げておけば
まあ使えますね

750デフォルトの名無しさん2019/02/10(日) 10:26:35.22ID:3PGMldSJ
俺もD6で、秀丸でコーディングしていたが、VSodeに切り替えてみようかな。
VSCodeは他の言語で使ってるので。

751デフォルトの名無しさん2019/02/10(日) 18:01:50.44ID:RF523CmO
VScodeの注意点: 別PCのファイルを開くと、変更が反映されない事象あり
自動保存されるけど、書きなおしたやつをまた開くと直っているように見えるのに、
実際は直ってないとか。 意味不明

752デフォルトの名無しさん2019/02/10(日) 20:08:43.74ID:RF523CmO
>>751 あっちとこっちで同時にファイル開いてたせいみたい

753デフォルトの名無しさん2019/02/17(日) 19:49:40.12ID:mFe1BbW0
別に今必要な事じゃないんだけど
エクスプローラーのファイル名で並べたら

ファイル1
ファイル2
・・
ファイル10

って並ぶでしょ。 これどんなロジックなんだろ
スマートな方法が思いつかないし興味ある

754デフォルトの名無しさん2019/02/17(日) 21:28:00.77ID:8qqWbI4p
自分は自作ソフトで似たようなことやってるけど
1文字単位での比較で数値同士の比較の場合に、その先の数値じゃなくなる前まで読んで整数にして比較ってしてる
小数点以下は1文字単位での比較として扱うので整数にしない

ただ 第11話 最終話 のような場合のロジックが面倒

755デフォルトの名無しさん2019/02/19(火) 06:54:39.26ID:9UQztg+8
VisualStudioでDelphi使えないかなぁ

756デフォルトの名無しさん2019/02/19(火) 08:12:14.24ID:BDyhgoG4
Delphi Community EditionとC++Builder Community Editionは同時にインストールできないんだな。

757デフォルトの名無しさん2019/02/19(火) 09:38:23.94ID:5KoJ2HbW
>>753
例えばこういうのは?
ファイル名文字列をバイト単位で数値化して加算
f0 = 0x65 + 0x30 = 101 + 48 = 149
f1 = 150
f2 = 151
f01 = 0x65 + 0x30 + 0x31 = 198
数値化した値で降順ソート

つまり
格納されてるファイル名を文字ではなく文字コードの数値合計でソート

758デフォルトの名無しさん2019/02/19(火) 09:58:03.22ID:5KoJ2HbW
補足
f01 = 0f1 = 1f0 になってしまうので
f(filename)文字列の桁数 len:=length(f) で文字列制限を設けて
for i:=1 to len do
if i<10 then a:=a+Ord(f[i])*10 else a:=a+Ord(f[i]);
適当処理

7597532019/02/19(火) 16:58:58.81ID:kMKRA1xT
有り難うございます
おもしろい・・・

760デフォルトの名無しさん2019/02/19(火) 17:54:17.46ID:oJBYXncw
>>757
それだと

abcd5.txt
bbcd1.txt
というファイルがあった場合に

bbcd1.txt
abcd5.txt
という並び順になっちゃうんじゃね?
あくまで"文字列"+"数値" というファイル名に対して"文字列"で比較し、"文字列"が同一なら"数値"で比較する必要があると思うが

>>754の場合、数字が文字列の一部だった場合に正しくソートされないって問題があるけど
そういう場合のファイル名はあまり意味がないから気にしないようにしている
それと先頭が数字の場合は文字列の一部として扱ってる

761デフォルトの名無しさん2019/02/19(火) 19:07:51.51ID:0tdxPmy7
StrCmpLogicalW

762デフォルトの名無しさん2019/02/19(火) 19:34:05.73ID:oJBYXncw
自分の場合、壱弐参なんてのも数値として扱うようにしている(したい)からAPIだと望んだ結果を得られない
「数値もしくは数値に変換可能なもの」同士の比較の場合だけ整数として比較してる

763デフォルトの名無しさん2019/02/21(木) 17:17:10.52ID:2mlLSirQ
begin
  var
    i: Integer;
  i := 0;
end;
コードフォーマッタ使うとこうなってしまうのだけどvarのあとで改行しない設定ってどこ?

764デフォルトの名無しさん2019/03/12(火) 15:37:42.39ID:G73gvPJk

765デフォルトの名無しさん2019/03/12(火) 16:19:08.39ID:8KtfShI4
Sorry, my bad. My memory is confused. But, so what?
I mean, the fact is you humiliate Linus and Kernighan in such a way that they never know such a thing as you said.

たしかに恥ずかしい

766デフォルトの名無しさん2019/03/14(木) 12:21:21.05ID:w5DEurD7
結局なんだったのアレ?

767デフォルトの名無しさん2019/04/02(火) 23:02:52.38ID:Jpqx4ytb
ちょっと教えてほしいんですが、社内イントラネット環境で50台くらいのクライアントPCと
1台のサーバーで双方向に情報をやり取りするVCLフォームアプリを作りたいですが
Delphiだと何使って構築するのが良いのでしょうか?
上からの命令でDelphi使うことなって調べてみたんですが、検索するとDataSnapとか
RESTとかのキーワードが出てきますが自分の経験がDelphi7でストップしていて
現状についていけてません。よろしくおねがいします。

768デフォルトの名無しさん2019/04/03(水) 02:20:05.63ID:ZykPhSzn
>>767
情報のやり取りだけでは何とも言えんなー
それだけの要件だとIndyかWinsocksで通信したらええんちゃうってなる

769デフォルトの名無しさん2019/04/03(水) 05:47:42.38ID:qbGQvqkC
ふつーにIISで鯖立てて、httpでやりあえばよくね?

770デフォルトの名無しさん2019/04/03(水) 06:04:14.50ID:Vd76zIcd
CのDLLは普通にDelphiでも使える。
つまりcurlとかも普通に選択肢になると思う。

771デフォルトの名無しさん2019/04/03(水) 09:22:36.44ID:CI6gl4VO
なんでDelphiが指定されたんだろう?
今まで使ってた訳じゃないのに

772デフォルトの名無しさん2019/04/04(木) 06:32:46.99ID:HLoaCcLX
ネィティブ系だと実質C++かDelphiかの選択肢しかなくね?

773デフォルトの名無しさん2019/04/04(木) 19:27:06.29ID:GNoSo19c
そだねー

774デフォルトの名無しさん2019/04/12(金) 06:11:32.75ID:MYAmm+z/
>>767
Firebird + Apache + SOAP

775デフォルトの名無しさん2019/04/12(金) 06:17:57.84ID:MYAmm+z/
>>753
[Delphi]Windows XPの規則(自然順ソート・natural sort・natural ordering)ででファイル名をソートする
https://www.gesource.jp/weblog/?p=5947

776デフォルトの名無しさん2019/04/26(金) 08:30:46.09ID:l06kgRZY
>>767
https://www.embarcadero.com/jp/products/delphi/starter
Community Editionで使えるか試してみ

777デフォルトの名無しさん2019/04/26(金) 08:31:55.46ID:l06kgRZY
>>774
DBはPostgreSQLかMariaDB

778デフォルトの名無しさん2019/05/06(月) 11:11:11.14ID:WAQCiPA3
UnZIP32.DLLとかUnRAR32.DLLでRARファイルの操作する場合の質問です
例えば

BOOL WINAPI UnrarCheckArchive(LPCSTR szFileName,const int iMode);

と定義されてるUnrarCheckArchive関数をDelphiで定義すると

UnrarCheckArchive: function(szFileName: LPCSTR; const iMode: integer): Boolean; stdcall;

こんな感じなって通常はこれで問題ないのですが、
Unicode文字(バ、ガなどの濁音とか)が混じってるファイル名の場合上手く行きません

szFileNameがLPCSTRだからAnsiString扱いなのでUnicodeのファイル名を渡せないのもの当然なのですが、
なにかプログラム側でできる回避策はないでしょうか?

779デフォルトの名無しさん2019/05/06(月) 12:25:07.78ID:a/Eukqc8
>>778
使用しているdelphiのバージョンを書いてください。
delphi2009前か後かで回答が変わるかもしれないからです。

UnrarChechArchive関数の仕様に基づいて型キャストしてやれば良さそうな気がします。
例えばnull終端wide stringという仕様なら、渡すファイル名をまずPWideCharにキャストして、さらにPAnsiCharにキャスト。

780デフォルトの名無しさん2019/05/06(月) 13:23:28.45ID:WAQCiPA3
>>779
レスありがとうございます
使用してるDelphiは2010です

>UnrarChechArchive関数の仕様
szFileNameはLPCSTRなので32bit系のDLLではnull終端のAnsiChar配列(のポインタ)になってると思います


>渡すファイル名をまずPWideCharにキャストして、さらにPAnsiCharにキャスト。
var
Path : string;
UnrarCheckArchive(PAnsiChar(PWideChar(Path)), 0);

この型キャストでは残念ながら上手く行かないようです

781デフォルトの名無しさん2019/05/06(月) 20:04:43.46ID:6T4so0Ox
LongFileNameをShortFileNameに変換すると
幸せになれる

782デフォルトの名無しさん2019/05/06(月) 20:48:15.87ID:WAQCiPA3
>>781
ナイスアドバイスです
GetShortPathNameで上手く行きました

おかげさまで幸せになれました
ありがとうございました

783デフォルトの名無しさん2019/05/10(金) 10:35:30.18ID:VUdPAgci
TDateTime datetime = VarToDateTime("令和元年5月10日9時10分15秒");
今はエラーが出るんだがそのうち対応されるのか?

784デフォルトの名無しさん2019/05/10(金) 20:47:06.76ID:bRXsPgWN
FormatDateTime('ge', Now);

レジストリに令和を加えてから上記を実行すると令1 って出るね

785デフォルトの名無しさん2019/05/11(土) 03:08:09.14ID:KNhq3FbT
いずれWindowsアップデートで対応するらしい
https://support.microsoft.com/ja-jp/help/4469068/summary-of-new-japanese-era-updates-kb4469068

コマンドプロンプトでこれを実行するとレジストリに追加される
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Nls\Calendars\Japanese\Eras /v "2019 05 01" /t REG_SZ /d "令和_令_Reiwa_R"

786デフォルトの名無しさん2019/05/12(日) 18:37:34.16ID:Kr8GnLfu
vsIconかつAutoArrangeのListViewで、両端のアイテムを選択した状態で左右キーを押すと、
エクスプローラーなら上下の列に移動しますが、DelphiのTListViewだと無反応です
これをエクスプローラーに準拠の動作をさせるにはどうすればよいのでしょうか?

7877862019/05/15(水) 06:10:55.25ID:jY9AnPp4
自己レスです
通常方向キーなどはVCL側で処理されてOnKeyPress、OnKeyDownなどではトラップできないので、Windowsメッセージを直接トラップすることでエクスプローラー準拠にできました

procedure WMKEYDOWN( var Msg : TWMKEYDOWN ); message CM_CHILDKEY;

procedure TForm1.WMKEYDOWN(var Msg: TWMKEYDOWN);
begin
case Msg.CharCode of
VK_LEFT :
左端か判別して左端なら上の列の右端に移動してResult := 0;
VK_RIGHT :
右端か判別して右端なら下の列の左端に移動してResult := 0;
end;
inherited;
end;

788デフォルトの名無しさん2019/05/15(水) 06:39:29.51ID:jY9AnPp4
訂正

Result := 1;でした

789デフォルトの名無しさん2019/05/26(日) 19:04:45.15ID:Nlo0sxin
開発環境だと問題ないのですが
実行したいPCだと
「プロバイダーが見つかりません。正しくインストールされていない可能性があります。」と警告が出ます。
いくつかのDLLを使ってます。
どこから調べれば良いか???です。
開発環境は XE3 です。

何かヒントでもありませんか?

790デフォルトの名無しさん2019/05/26(日) 20:54:01.76ID:zVm0Vl5m
>>789
メッセージググればそのまま出てくるけどVBA関連では?
こことか
https://ameblo.jp/realsystems/entry-11946216560.html

791デフォルトの名無しさん2019/05/26(日) 21:22:58.51ID:Nlo0sxin
有り難うございます
警告メッセージは最初にググったのですが ピンとくる書込は見つけられませんでした
VBAは使ってないし・・
開発環境 Win7 x64 、実行環境 Win10 x64 です。
当初はそんな警告出てなかったのですが デバッグしてるうちに出るようになりました

困った・・・

792デフォルトの名無しさん2019/05/27(月) 06:55:38.20ID:+4vJq2r8
とりあえず、「動いている状態」ってのに戻してみたらどうかね?
それが再現できるなら話は簡単になる

793デフォルトの名無しさん2019/05/27(月) 09:20:16.88ID:ywThIruX
コメント感謝します
DLL参照の プロパティ値代入を1行追加してから症状が出るようになった気がするのですが(自信なし)
それをコメントアウトしても症状が消えません
開発環境では出ないので厄介です
Delphiが タイプライブラリを自動で追加したり とか しないですよね?

794デフォルトの名無しさん2019/05/27(月) 09:39:37.30ID:+4vJq2r8
そうじゃなくて、前の状態のファイルとかシステム一式をバックアップから取り出せないの?
自動でバックアップしながらじゃないとソフト開発は効率わるいよ。

795デフォルトの名無しさん2019/05/27(月) 11:28:59.51ID:ywThIruX
お付き合いホントに有り難うございます
開発環境と 実行環境が 1時間の移動距離にあるので
今現在出来てるテストが上記の書込でした
開発ファイル群は毎日のバックアップがあります
先ず、手元に現象を再現できる環境を構築しようと思ってます。

1度ビルドすると ソースの変更点をコメントアウトしても 元に戻らない
「何か」が有る可能性はあるのでしょうかね?

796デフォルトの名無しさん2019/05/27(月) 12:32:39.96ID:9qF1YjML
どうせADOとかOLE DBとかそっちの問題だろ?

797デフォルトの名無しさん2019/05/27(月) 13:08:16.22ID:AYKzEEPJ
>>795
四の五の言ってないでデータベースドライバ入れろ

7987892019/05/27(月) 16:22:46.11ID:ywThIruX
コメント有り難うございます

データベースドライバは入っています
入れ直すということでしょうか?

先の警告メッセージが出たあとOKを押すと 一見正常に動作しているように見えます。
そもそも警告が出始める前は 一通り正常に動作していました。

原因がわかりません。
旧ソースをビルドし直してテストしてみます。

799デフォルトの名無しさん2019/05/27(月) 20:19:06.04ID:zpIi4cEd
データベースドライバが32bitか64bitなのかが開発環境と実行環境で違ってたら
そんなようなエラーが出たような気がするが

8007892019/05/27(月) 20:33:13.36ID:ywThIruX
>>799
コメント心から感謝します

警告メッセージをググると そんなことも書いてありました
只 当初は問題なく動作していたので 途中でドライバーが変わるようなことも考えにくいですよね
Delphiで書いた実行ファイル以外は一切環境を変えていませんので 謎です


lud20200626182136ca

レス:1-200 201-400 401-600 601-800 801-1000 ALL

このスレへの固定リンク: http://5chb.net/r/tech/1476332514/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。

TOPへ TOPへ  

このエントリをはてなブックマークに追加現在登録者数177 ブックマークへ


全掲示板一覧 この掲示板へ 人気スレ | Youtube 動画 >50 >100 >200 >300 >500 >1000枚 新着画像

 ↓「くだすれDelphi(超初心者用)その57 [無断転載禁止]©2ch.net ->画像>4枚 」を見た人も見ています:
くだすれDelphi(超初心者用)その56
くだすれDelphi(超初心者用)その54
くだすれDelphi(超初心者用)その60【Embarcadero】
くだすれDelphi(超初心者用)その59【Embarcadero】
くだすれDelphi(超初心者用)その58【Embarcadero】
くだすれFORTRAN(超初心者用)その7
くだすれPython(超初心者用) その37
くだすれPython(超初心者用) その34
くだすれPython(超初心者用) その40
くだすれPython(超初心者用) その32
くだすれPython(超初心者用) その29
くだすれPython(超初心者用) その39
くだすれPython(超初心者用) その35
くだすれjavascript(超初心者用) その1
くだすれPython(超初心者用) その51【まず1嫁】
くだすれPython(超初心者用) その47【Ruby禁止】
くだすれPython(超初心者用) その44【Ruby禁止】
くだすれPython(超初心者用) その42【Ruby禁止】
くだすれPython(超初心者用) その45【Ruby禁止】
くだすれPython(超初心者用) その50【まず1嫁】
【まず1嫁】くだすれPython(超初心者用) その60
【まず1嫁】くだすれPython(超初心者用) その57
くだすれPython(超初心者用) その46【Ruby禁止】
くだすれPython(超初心者用) その41【Ruby禁止】
UWSC初心者用スレ2
Diablo2 超ドQ!初心者用スレ
俺、パチ初心者用質問スレ11本目
ふらっと C#,C♯,C#(初心者用) Part138
ふらっと C#,C♯,C#(初心者用) Part132
ふらっとC#,C♯,C#(初心者用) Part88
【初心者用】マイニング情報交換スレ34
ふらっと C#,C♯,C#(初心者用) Part155
ふらっと C#,C♯,C#(初心者用) Part153
ふらっと C#,C♯,C#(初心者用) Part148
【初心者用】マイニング情報交換スレ27
ふらっと C#,C♯,C#(初心者用) Part149
ふらっと C#,C♯,C#(初心者用) Part159
ふらっと C#,C♯,C#(初心者用) Part119
【初心者用】マイニング情報交換スレ19
【初心者用】マイニング情報交換スレ56
【初心者用】マイニング情報交換スレ62
【初心者用】マイニング情報交換スレ49
ふらっと C#,C♯,C#(初心者用) Part139
ふらっと C#,C♯,C#(初心者用) Part135
ふらっと C#,C♯,C#(初心者用) Part140
ふらっと C#,C♯,C#(初心者用) Part129
ふらっと C#,C♯,C#(初心者用) Part134
ふらっと C#,C♯,C#(初心者用) Part145
ふらっと C#,C♯,C#(初心者用) Part141
ふらっと C#,C♯,C#(初心者用) Part134
Webサイト制作初心者用質問スレ part250
Webサイト制作初心者用質問スレ part249
【第五人格】IdentityV 初心者用スレ 29
■初心者用リモートデスクトップ専用すれっど■
[初心者用]スマブラXアイテム無しタイマンスレ
【初心者用】マイニング情報交換スレ7 [無断転載禁止]
【初心者用】マイニング情報交換スレ3 [無断転載禁止]
【初心者用】マイニング情報交換スレ15 [無断転載禁止]
【初心者用】パズル&ドラゴンズ【パズドラ】★116&copy;2ch.net [無断転載禁止]
ふらっと C#,C♯,C#(初心者用) Part161 (78)
冬山初心者スレ その57
冬山初心者スレ その50
06:30:26 up 2:13, 4 users, load average: 77.75, 55.60, 53.87

in 0.41191291809082 sec @0.41191291809082@0b7 on 091119