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/?
0759753
垢版 |
2019/02/19(火) 16:58:58.81ID:kMKRA1xT
有り難うございます
おもしろい・・・
0760デフォルトの名無しさん
垢版 |
2019/02/19(火) 17:54:17.46ID:oJBYXncw
>>757
それだと

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

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

>>754の場合、数字が文字列の一部だった場合に正しくソートされないって問題があるけど
そういう場合のファイル名はあまり意味がないから気にしないようにしている
それと先頭が数字の場合は文字列の一部として扱ってる
0762デフォルトの名無しさん
垢版 |
2019/02/19(火) 19:34:05.73ID:oJBYXncw
自分の場合、壱弐参なんてのも数値として扱うようにしている(したい)からAPIだと望んだ結果を得られない
「数値もしくは数値に変換可能なもの」同士の比較の場合だけ整数として比較してる
0763デフォルトの名無しさん
垢版 |
2019/02/21(木) 17:17:10.52ID:2mlLSirQ
begin
  var
    i: Integer;
  i := 0;
end;
コードフォーマッタ使うとこうなってしまうのだけどvarのあとで改行しない設定ってどこ?
0765デフォルトの名無しさん
垢版 |
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.

たしかに恥ずかしい
0767デフォルトの名無しさん
垢版 |
2019/04/02(火) 23:02:52.38ID:Jpqx4ytb
ちょっと教えてほしいんですが、社内イントラネット環境で50台くらいのクライアントPCと
1台のサーバーで双方向に情報をやり取りするVCLフォームアプリを作りたいですが
Delphiだと何使って構築するのが良いのでしょうか?
上からの命令でDelphi使うことなって調べてみたんですが、検索するとDataSnapとか
RESTとかのキーワードが出てきますが自分の経験がDelphi7でストップしていて
現状についていけてません。よろしくおねがいします。
0768デフォルトの名無しさん
垢版 |
2019/04/03(水) 02:20:05.63ID:ZykPhSzn
>>767
情報のやり取りだけでは何とも言えんなー
それだけの要件だとIndyかWinsocksで通信したらええんちゃうってなる
0770デフォルトの名無しさん
垢版 |
2019/04/03(水) 06:04:14.50ID:Vd76zIcd
CのDLLは普通にDelphiでも使える。
つまりcurlとかも普通に選択肢になると思う。
0778デフォルトの名無しさん
垢版 |
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のファイル名を渡せないのもの当然なのですが、
なにかプログラム側でできる回避策はないでしょうか?
0779デフォルトの名無しさん
垢版 |
2019/05/06(月) 12:25:07.78ID:a/Eukqc8
>>778
使用しているdelphiのバージョンを書いてください。
delphi2009前か後かで回答が変わるかもしれないからです。

UnrarChechArchive関数の仕様に基づいて型キャストしてやれば良さそうな気がします。
例えばnull終端wide stringという仕様なら、渡すファイル名をまずPWideCharにキャストして、さらにPAnsiCharにキャスト。
0780デフォルトの名無しさん
垢版 |
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);

この型キャストでは残念ながら上手く行かないようです
0782デフォルトの名無しさん
垢版 |
2019/05/06(月) 20:48:15.87ID:WAQCiPA3
>>781
ナイスアドバイスです
GetShortPathNameで上手く行きました

おかげさまで幸せになれました
ありがとうございました
0783デフォルトの名無しさん
垢版 |
2019/05/10(金) 10:35:30.18ID:VUdPAgci
TDateTime datetime = VarToDateTime("令和元年5月10日9時10分15秒");
今はエラーが出るんだがそのうち対応されるのか?
0784デフォルトの名無しさん
垢版 |
2019/05/10(金) 20:47:06.76ID:bRXsPgWN
FormatDateTime('ge', Now);

レジストリに令和を加えてから上記を実行すると令1 って出るね
0786デフォルトの名無しさん
垢版 |
2019/05/12(日) 18:37:34.16ID:Kr8GnLfu
vsIconかつAutoArrangeのListViewで、両端のアイテムを選択した状態で左右キーを押すと、
エクスプローラーなら上下の列に移動しますが、DelphiのTListViewだと無反応です
これをエクスプローラーに準拠の動作をさせるにはどうすればよいのでしょうか?
0787786
垢版 |
2019/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;
0789デフォルトの名無しさん
垢版 |
2019/05/26(日) 19:04:45.15ID:Nlo0sxin
開発環境だと問題ないのですが
実行したいPCだと
「プロバイダーが見つかりません。正しくインストールされていない可能性があります。」と警告が出ます。
いくつかのDLLを使ってます。
どこから調べれば良いか???です。
開発環境は XE3 です。

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

困った・・・
0792デフォルトの名無しさん
垢版 |
2019/05/27(月) 06:55:38.20ID:+4vJq2r8
とりあえず、「動いている状態」ってのに戻してみたらどうかね?
それが再現できるなら話は簡単になる
0793デフォルトの名無しさん
垢版 |
2019/05/27(月) 09:20:16.88ID:ywThIruX
コメント感謝します
DLL参照の プロパティ値代入を1行追加してから症状が出るようになった気がするのですが(自信なし)
それをコメントアウトしても症状が消えません
開発環境では出ないので厄介です
Delphiが タイプライブラリを自動で追加したり とか しないですよね?
0794デフォルトの名無しさん
垢版 |
2019/05/27(月) 09:39:37.30ID:+4vJq2r8
そうじゃなくて、前の状態のファイルとかシステム一式をバックアップから取り出せないの?
自動でバックアップしながらじゃないとソフト開発は効率わるいよ。
0795デフォルトの名無しさん
垢版 |
2019/05/27(月) 11:28:59.51ID:ywThIruX
お付き合いホントに有り難うございます
開発環境と 実行環境が 1時間の移動距離にあるので
今現在出来てるテストが上記の書込でした
開発ファイル群は毎日のバックアップがあります
先ず、手元に現象を再現できる環境を構築しようと思ってます。

1度ビルドすると ソースの変更点をコメントアウトしても 元に戻らない
「何か」が有る可能性はあるのでしょうかね?
0798789
垢版 |
2019/05/27(月) 16:22:46.11ID:ywThIruX
コメント有り難うございます

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

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

原因がわかりません。
旧ソースをビルドし直してテストしてみます。
0799デフォルトの名無しさん
垢版 |
2019/05/27(月) 20:19:06.04ID:zpIi4cEd
データベースドライバが32bitか64bitなのかが開発環境と実行環境で違ってたら
そんなようなエラーが出たような気がするが
0800789
垢版 |
2019/05/27(月) 20:33:13.36ID:ywThIruX
>>799
コメント心から感謝します

警告メッセージをググると そんなことも書いてありました
只 当初は問題なく動作していたので 途中でドライバーが変わるようなことも考えにくいですよね
Delphiで書いた実行ファイル以外は一切環境を変えていませんので 謎です
0801デフォルトの名無しさん
垢版 |
2019/05/28(火) 00:25:44.07ID:M3HPfliA
32bit用ドライバ → system32 に入れる
64bit用ドライバ → wow64 に入れる

こういう勘違いをしてるアホは時々見かける
0803デフォルトの名無しさん
垢版 |
2019/05/28(火) 08:25:10.69ID:m8dRe03e
アプリのバージョンを表示するコードが上手く行かないんで悩んだがどうやらデバッグ版とリリース版でバージョン情報が共有されない仕様になったんだな
デバッグ版、リリース版でそれぞれバージョン情報をオプション設定しなきゃならないんで面倒くさいわー
デフォの文字コードも英語版になってるしなんかいろいろ使いにくい>10.3
0804デフォルトの名無しさん
垢版 |
2019/05/28(火) 09:12:35.07ID:WeI/rfn2
>>800
開発環境から実行した時に、モジュールのロードで始まる dll や bpl のロード情報を
コピペしてゆっくり眺めてみる
0805デフォルトの名無しさん
垢版 |
2019/05/29(水) 05:48:35.44ID:PLjjs/Q6
begin
TStringList.Create.Add('メモリリークした');
end;

このメモリリークの型、内容、ソースコードの場所を検出してくれるツールで
フリーかつDelphi10.3で使えるものって何があるますか?
0809デフォルトの名無しさん
垢版 |
2019/05/31(金) 11:36:16.19ID:wXpLEcKn
ところでandroidのメモリリークって
どうやって検出するの?
少なくとも標準のを書いておいても
今まで報告されたことないんだが
0810デフォルトの名無しさん
垢版 |
2019/06/04(火) 18:44:33.74ID:UGFk7I+U
> フリーかつDelphi10.3で使えるもの

バージョンアップについていけなくて大半の外部ツールやVCLは死亡中
有料ですら10.3に対応してないものが多い
0811デフォルトの名無しさん
垢版 |
2019/06/04(火) 22:27:56.89ID:2iRNEsdQ
Delphiって有志による外部ツールやVCLで成り立っている文化なのに
メーカーはなんでそのことを理解してないんだろうなあ
0812デフォルトの名無しさん
垢版 |
2019/06/05(水) 13:40:38.43ID:CzlXW3sk
バージョン表記自体もわかりにくいんだよな・・・
8からいきなり2005になったと思ったらDelphi 2010を最後にDelphi XEシリーズになってそのままいくのかと思ったらXE8でうちどめして今度はDelphi 10に
10から11〜とメジャーバージョン上がっていくかと思ったらマイナーバージョンがメジャーアップデート相当でなんか末尾に都市名つけはじめたし

Delphi 10 Seattle
Delphi 10.1 Berlin
Delphi 10.2 Tokyo
Delphi 10.3 Rio
0815デフォルトの名無しさん
垢版 |
2019/06/17(月) 18:50:44.65ID:mpJ2xeVG
RazorでVB.NET切られるかも知れないのね
まだDelphiの方がクロスプラットフォームで残るかも知れないね
0817デフォルトの名無しさん
垢版 |
2019/07/09(火) 19:56:00.97ID:tNo5ef94
質問、D6です
Clipboard関数
ANIS 半角アスキーテキスト(1行128バイト以下)をClipboard.AsTextで送らせます。
http://delfusa.main.jp/delfusafloor/archive/www.nifty.ne.jp_forum_fdelphi/faq/00058.htm
を参照しました。
uses節に 「Clipbrd」を追加
Clipboard.AsText := 'String変数';
これだと1秒ごとに送っているとすぐハングアップするので

AsTextより先にクリアさせるようにしてみました
Clipboard.Clear;
〜処理〜
Clipboard.AsText := 'String変数';

カウントさせてみると16回目ぐらいでハングアップしているようです。

上記の次ぎに
FormCreate内でClipboard.Create;
FormDestroy内最後にClipboard.Free;
を追加すると
79回目ぐらいで行ってハングアップします。

なにかスムーズにさせるコツみたいなのありますか?
0818デフォルトの名無しさん
垢版 |
2019/07/09(火) 20:16:45.77ID:cI7q65Pk
>>817
ハングアップ、って具体的にどうなってるの?
何かの勘違いじゃないの?

あとClipboard.CreateとClipboard.Freeは要らないと思う;
0819デフォルトの名無しさん
垢版 |
2019/07/09(火) 21:09:40.47ID:yicNQMua
>>817
ハングアップに対する回答ではないけど……
同じなのに入れ替える必要ないと思うので
if Clipboard.AsText <> 'String変数' then
入れた方がいいのでは?
0820デフォルトの名無しさん
垢版 |
2019/07/10(水) 08:29:24.86ID:SpAM0kMX
Lazarusで書き直してみるとかね。
D6ってユニコードAPIとかに対応してないと思うのでそれ関係じゃね?
0821デフォルトの名無しさん
垢版 |
2019/07/11(木) 16:01:27.35ID:s0u0iTmX
Excelが起動してるとクリップボードの扱いでトラブった覚えあるけど
そういう用途じゃないよね
0822デフォルトの名無しさん
垢版 |
2019/07/11(木) 18:36:12.29ID:T5uCpHez
>79回目ぐらいで行ってハングアップします。

ハングアップが具体的にどういう状況かわからんので考えるだけ無駄だと思う
0823デフォルトの名無しさん
垢版 |
2019/07/11(木) 21:28:58.78ID:LgH9l4aT
てかソース見ると単純にapi呼び出してるだけだから
それってDelphiの問題なのか?

テストプログラムを他のPCで実行してチェックしてみるとかした?
0824デフォルトの名無しさん
垢版 |
2019/07/12(金) 12:38:08.15ID:MoL5DIGp
Delphi6とDelphi7のclipbrd.pas比べてみたらFClipboardとかFClipboardWindowの解放処理が追加されてるな。ひどすw
0825817です
垢版 |
2019/07/12(金) 16:34:53.01ID:pm2ij2oX
各位レスありがとうございました
>>819 ソレ入れてみます。

ソースも晒そうかとしてましたが
どこでハングアップしてるのかダミー表示させてたどり着き

結局、
クリップボードの処理いれたら顕在化したという
別の部分がエンバグしていたオチでした orz

何かクリップボード使う作法でもあるのか?と思っていたのでQしたわけです。

AsTextより先にClipboard.Clear;
FormCreate内でClipboard.Create;
FormDestroy内最後にClipboard.Free;
結果これは不要でした。

以下↓レスを書きこむ直前に↑脱したので遅くなりました
>818さん
(SSDで入れ替えXPの開発環境デスクトップと実行パソコン XPノート&XPモバイルとは別です)
ハングアップの具体的
・作ってる物(送り側 高bps GPSデータ1秒更新)Clipboard.AsText := 'String変数'; のアプリが>817 の挙動で反応しなくなり操作を受け付けなくなる。
・受け手ソフト(昔のナビ地図ソフト、デフォCOM In 4800bps / オプ Clipboard を)は反映も止るが動作は続けている。
・作ってる物(実行ファイル)を終了させるには[タスクマネージャ]から[アプリケーション]でなく[プロセス]から該当イメージ名を選んで[プロセスの終了]を行わないと終わらなくなる。
0826デフォルトの名無しさん
垢版 |
2019/07/12(金) 20:44:56.01ID:Mt2Dum22
読み手に情報が伝わらない書き方だなあ
2、3年後に自分で読んでみるといいよ

まあ関心ないからどうでもいいけど
0828デフォルトの名無しさん
垢版 |
2019/07/14(日) 17:57:44.35ID:RQcMGpwy
>>827
他の環境(エディタ)だとちゃんと表示されるのに、って画像も提示してくれないと
そのフォントがそういうものなんだろ、としか思わない
0830デフォルトの名無しさん
垢版 |
2019/09/15(日) 07:02:41.90ID:2jRAVw8s
あるプロジェクトをまるごと新しいフォルダにコピーし
元のプロジェクトを温存したまま
新しいプロジェクトとして始めたいんですけど
IDEの機能として可能でしたっけ?
0833デフォルトの名無しさん
垢版 |
2019/09/21(土) 14:34:45.15ID:gfJmTKeO
勿論な事だけど絶対パスとか注意
0835デフォルトの名無しさん
垢版 |
2019/09/21(土) 15:50:53.96ID:ZIXe7ufx
あるプロジェクトをまるごと新しいフォルダにコピーし
元のプロジェクトを温存したまま
新しいプロジェクトとして始めてみろ
0836デフォルトの名無しさん
垢版 |
2019/09/21(土) 23:17:52.31ID:czYxzrrK
そうすると、新しいフォルダのソースをいじっているつもりが、元のソースを変更してしまう。
*.dskファイルは消すこと。
0838デフォルトの名無しさん
垢版 |
2019/09/22(日) 19:31:31.99ID:TKcBWrZD
丸っとコピーでプロジェクト系のファイルは修正すればいいよ
0839デフォルトの名無しさん
垢版 |
2019/09/22(日) 21:18:02.00ID:PEynJ+dQ
「プロジェクトのコピーを作成する」という機能が
発売20年以上経っても実装されてないとは信じられん
0840デフォルトの名無しさん
垢版 |
2019/09/23(月) 11:30:02.95ID:3qdqqJ07
pythonでスクリプトでも書けば一発
0843デフォルトの名無しさん
垢版 |
2019/09/25(水) 15:48:30.01ID:OW+fPjNy
いや、要るだろ普通に 別バージョンとか作りたいときに
*.dsk消せば済むことだけど標準機能であればそれに越したことはない

VSは使ったことないから知らん
0844デフォルトの名無しさん
垢版 |
2019/09/25(水) 16:33:22.57ID:VxOhHjIL
てか初心者がプロジェクトの別名保存を誤解して
大変なことになりそう

自分もそうだったけどね
0845デフォルトの名無しさん
垢版 |
2019/09/25(水) 22:08:28.34ID:cw/6a5eO
>>830
D6 D7 だけど、(絶対パスがなければ)できる。
普段はプロジェクトとソースを保存するときの「名前を付けて保存」で
デフォルトのセーブ先から別のドライブのフォルダに指定してる。
そうするとプロジェクト毎のソースがフォルダ別に整理できる。
同じ系統のプログラム作成はベース部分まで作っておいて保存、
新規フォルダにコピーでクローンしてスタート。

現プロジェクト中に「名前を付けて保存」で対象移動先にセーブしてみたらどうですか?
この際の注意点として、
プロジェクトの保存だけでは足りない、ソースなどの保存の2回保存作業が必要。
始動は移動先のプロジェクトを指定する。
その後は全保存の1回で使えてる。
試す前にコピーで戻せるようにはしておくことです。
0848デフォルトの名無しさん
垢版 |
2019/09/27(金) 07:51:52.34ID:rPuRGMpg
各ファイルの役割をきちんと覚えること。
それができなくてプログラマーとか笑うしかない。
変な自動機能があるとその基本を忘れがちになる。
0849デフォルトの名無しさん
垢版 |
2019/09/27(金) 08:17:47.22ID:KklKnzXk
デスクトップ保存なんてしないからdskなんてできたことないわ
便利なのかあれ
0851デフォルトの名無しさん
垢版 |
2019/09/27(金) 16:59:40.30ID:foryHhOm
今時使用言語は数個、開発環境も数種類さらにクラウドやら覚えることもりだくさん。

delphiしか触ってないなら、delphiの各ファイルの役割ぐらい覚えられるだろうが
0856848
垢版 |
2019/09/28(土) 08:02:41.58ID:xbQ4upm/
>>851
だからさ、覚えるとかそういうことじゃない。
各ファイルの役割をきちんと知らないと
プログラマー生命そのものがあやうくなるんだって。
話題の dsk ファイルのはまったく要らない子だってことを知るのもそのひとつ。
例えばオープンソースに dsk ファイル含めて公開しちゃうと
パス名から身バレしちゃったりするリスクもあるわけよ。
言語によらず、プログラマ名乗るならそういうのに敏感になれということ。
0857デフォルトの名無しさん
垢版 |
2019/09/28(土) 10:31:39.10ID:VM/fe2sP
MySQLやSQLiteをやろうとして挫折した人間です。

BDEというか、ParadoxのかわりにClientDatasetを使おうと思うんだけど、
設計時にDBコンポで表示できて便利だし、使ってる人いませんか?

.xmlファイルに書き出せるフィールドタイプに制限があるけど、それ以外は
TTableと同じように使える感じ
■ このスレッドは過去ログ倉庫に格納されています

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