D言語 Part34©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
call と get と set を実装して dispatch する目論見だったんですが PyObject だと get と call の区別が微妙なんです DWT(https://github.com/d-widget-toolkit/dwt )を試しているのですが Drag and Drop のサンプル(snippetxx.d)が全く見つからないので SWT(http://www.eclipse.org/swt/snippets/#dnd )を取ってきて試すも cannot cast expression event.data of type object.Object to string のコンパイルエラー、cast じゃダメなので何がしかの変換が必要らしい で、DWT の Drag and Drop はこんな感じで 動かしてるよ〜という情報をお持ちの方おしえてくださいませm(_ _)m 2.069.2でDelimited Strings内にASCII以外があると怒られるよぅ q"EOS 日本語 ← Error: character 0xa5 is not a valid token EOS" 2.069の文字列処理で日本語入ってるときの挙動が変わって往生した >>324 とりあえず呼び出し側で auto fuga = hoge.unknownmethodcall([]); と auto fuga = hoge.unknownproperty; で区別することにしたらうまく別けられました ところが今度は hoge.unknownproperty = hage; で代入しようと hoge class 内で void opDispatch(string propertyname, T)(T arg){ } と setter を定義したのですが hoge.unknownmethodcall([]); の方まで setter に奪われるようになってしまいました getterのopDispatchの戻り値を構造体でラップするとか。 http://dpaste.dzfl.pl/e089dbd99093 ああテンプレートで呼び分けるんじゃなくて 全部まとめて一ヶ所で受けて if で分けるんですね 参考になります ありがとうございます import std.process; で pipeProcess とか spawnProcess とか使えるのは判ったのですが windows で win32api の CreateProcessAsUser とか CreateProcessWithLogonW に相当することが実行可能なモジュールはありますか? 標準では最低限のAPIしかないので 自分でポーティングするか拾ってくるかしましょう linuxで7zip.soのbindingを書こうとしています。7zipのC++側のIUnknownが struct IUnknown { STDMETHOD(QueryInterface) (REFIID iid, void **outObject) PURE; STDMETHOD_(ULONG, AddRef)() PURE; STDMETHOD_(ULONG, Release)() PURE; #ifndef _WIN32 virtual ~IUnknown() {} #endif }; このように宣言されているのですが、Dのinterfaceでデストラクタを宣言できなくて困っています。 超その場しのぎとして、DのIUnknownの宣言のReleaseの後にダミーのメソッドを、 ・2個追加することでC++で実装されたinterfaceをDから呼び出すことが、 ・1個追加することでDで実装されたinterfaceをC++から呼び出すことが、 それぞれできたのですが、とてもまともな解決策とは思えません。 どうすべきでしょうか。 winじゃなくてlinuxでやりたいみたいよ 一晩寝たら 空のデストラクタなんていらなかったんや って気づくかもしれない >>337-339 クソして寝ましたが、仮に空(とはいえvirtual)のデストラクタがまるで無意味だったとしても、 bindingの体をとっているのでp7zip側のコードを変えるのはちょっと。 むしろvtblのズレが336程度の単純さならばソレで行くかと。 気になるのはDから呼ぶ場合とC++から呼ぶ場合の非対称性ですが、こういうもんなんですか? C++ネイティブの呼び出しっていつから「ちゃんと」できるようになったんですか?(小声) あ、非対称っていうのは勘違いだったかもごめ。 http://dpaste.dzfl.pl/4e7956f36a47 これで解決や!どうもありがとう! >>341 WindowsでCOMを使った7zipのbindingはもっとすんなりいきましたよ。 自分のクラス(Fuga)を定義していて string へ変換するときに Fuga f("hage"); string hoge = f; みたいな書き方をしたいのですが どんなメソッドを作っておけば良いのですか? Fuga f = new Fuga("hage"); string hoge = f; です class Fuga { private string s_; this(string s) { s_ = s; } alias s_ this; } alias s_ this; とは驚きですが Fuga f = new Fuga("123"); int i = f; としたときでも i に 123 が入るようになりますか? 条件後出しですみません ちなみに Fuga f = new Fuga("123"); string s = f; // なら s = "123"; と同じ int i = f; // なら i = 123; と同じ という意味です これも alias だけで出来てしまうんでしょうか? そういうのはたいてい変数に移して終わりじゃなくて、その先があるでしょ 例えば関数に渡すならその関数をテンプレートでうまくまとめるのが D流 単に出力するだけなら writeln(f) ここを参考に http://www.kmonos.net/alang/wnd/topics/winapi.ja.html Win32API を使って drag & drop を実装してみたところ case WM_DROPFILES: の中で HDROP dr = cast(HDROP)wp; TCHAR[] buf = new TCHAR[MAX_PATH]; int l = DragQueryFile(dr, 0, buf.ptr, buf.length); if(l < buf.length) buf[l] = 0; string bs = to!string(buf[0..l]); version(Unicode){ writefln("0: %s", to!string(bs.toMBSz())); string name = bs; }else{ writefln("0: %s", bs); string name = fromMBSz(bs.toStringz()); } writefln("1: %s", name); とすると drag & drop したファイル名が 「森鷗(環境依存文字2)外(環境依存文字3)る.ext」 のとき 最後の name の表示が -version=Unicode したときとしないときで結果が違います toMBSz と fromMBSz とで不可逆なのは判るのですが MBSz -> UTF8 するときも結果が違うのは何故でしょうか? (ただし表示は違うのですが同じファイルが対象になってちゃんと動作します) >>351 Multiple AliasThisを使えば可能 もちろんコンストラクタ内で変換して保持とかする必要はあるけど ……なので実装されるのを楽しみに待っててくれよな! >>353 SHIFT-JISに含まれてない文字だから仕方ないとおもわれ。 DragQueryFileAの方ではかわりに 63(ASCIIのハテナマーク)が送られてきてる。 A付関数のことなんて早く忘れるんだ! string valueOf(){ return s_; } int valueOf(){ return to!int(s_); } alias valueOf this; >>356 不思議なのは *A バージョンの方でも正常に動作してるって所なんだよね 上は Utf16->Utf8->SJIS で余計な変換してるからじゃないの >>358 A版の内部処理でことごとく文字化けしてるから 文字化けしたファイル名がマッチするせい >>360 わたしもそう思ったんですが 出来上がった hoge.7z ファイルの中の ファイル名は文字化けしておらず正常なんです >>361 ?が1文字マッチのワイルドカードってのは関係してない? あれ、戻り値だけ違う関数ってオーバーロードできたっけ? 宣言はできるけど使えない 左辺値から型推論とかしてくれると嬉しいんだけどね T valueOf(T)(){ return to!T(s_); } これもうまくいかんな 明示cast必須になるけど T opCast(T)(){ return s_.to!T; } alias hoge this; しなくてよくなるからありがたいね Advent Calendar面白かったよ。 書いた人たち乙です。 冬休み中にAdventCalendarゆっくり読む 楽しみだなあ。書いた人たち乙〜。 https://github.com/D-Programming-Language/dlang.org/commit/77324039087e9283f40244195857c2f9fd4712eb#diff-59280080f58c2ff747f066c5b0b2fcebL423 - $(LI As a first programming language - Basic or Java is more suitable + $(LI As a first programming language - Python or JavaScript is more suitable 時代の流れを感じる Basicの方が初めてのプログラミングには良いと思うんだがなぁ まあ妥当と思う。Basicって括りがざっぱだけど、 (N-88とかそういう)BASIC → まあやらんでええやろ。行番号とか。ねえ? VB → PowerShellが出てシリスボミ感がある。 Python → 個人的にはtkinterの存在がでかい。 JavaScript → すぐ遊べる。すぐ自慢できる(←重要 あとは英才教育的な観点からならプログラミンとか? 時代は Elixir ですよ D でもいいけど すぐ自慢できるのは Python だろ std.experimental.yeslolitanotouch 64bitのWin32対応DLL作りたいんだけど? あれ途中で切れた。 dmd -m64 -shared mydll.d dll.d mydll.def >>384 それぞれ書かれた時期が違うんじゃまいか DMD で単純な x64 バイナリを作るところまでは行けてるんでしょ? Win32 DLL も作れるんでしょ? x64 で Win32 App と結合できるかって話でしょ? 出来ないと思うけど ブリッジ役のDLLも用意して64<-->32間をプロセス間通信でうんたらかんたら >>336 > DのIUnknownの宣言のReleaseの後にダミーのメソッドを、 > ・2個追加することでC++で実装されたinterfaceをDから呼び出すことが、 > ・1個追加することでDで実装されたinterfaceをC++から呼び出すことが、 > それぞれできたのですが、とてもまともな解決策とは思えません。 https://issues.dlang.org/show_bug.cgi?id=15589#comment_text_0 やっぱりダミーを追加するしかないらしい わぁ!どうもありがとう!まだ書きかけ&お粗末ですが、その時の成果物です。 https://github.com/garlic-flavor/D7z ツッコミ/プルリクお待ちしております。m(_ _)m いつのまにか公式が改装してた なんかすごくプログラミング言語の公式ページっぽい /r/programming 見てるとほぼ毎日Dの記事があって、ついに時代がきたか感がある scope(exit)はスコープ抜けるときに実行されるけどさ、 呼び出し元のスコープ抜けるときに実行されるような処理を書く方法って存在しないのかな 例えば foo(){ hoge(); } で、hoge()の定義内に書いてfoo()の最後に実行されるようなやつ 部品化の概念を否定するその硬派な姿勢、俺は評価するよ >>394-396 scoped型をhogeが返せばいいんじゃね、って思ったけど もうscoped型って無くなったんだっけ? std.datetime.measureTime がそんなんだったような。 core.sys.windowsのナカミがおきかわっとるー\(・∀・)/ もしかしてdmcって64bitのコンパイルオプションないの? ないっしょ 16bit ならまだあるかもしれない それに optlink まで含めると 32 ですら騙し騙し使ってる状況 今さらだけどD用のお勧めのGUIライブラリある? マルチプラットフォームで。 自分でメンテする気があれば正直どれでもいいし そうじゃなければ D でGUIなんて考えないほうがいい LDCからEmscripten通してHTML5にでも変換したほうがいいんじゃない?(適当) 時代は io.js + Electron ですねわかります ぜんぜんわからない D普及のために、できるだけわかりやすく情報を提供してください。切に望みます Cのインタフェースがていきょうされていれば、利用できる これが鍵なんだろうけど、初心者むけではない わからんわからんわからんわからんわからんわからんわからんわからん 自分は何がしたいのか、何ができなかったのか 情報がなければ答えようもなかろう >>408 DlangUI、結構良さそう 使ったことある人いたら感想聞きたい >>408 dクス やっぱDWTが定番かー DlangUI、最初のmixinが美しくないなぁ・・・・・・(笑) >>409 あれ、Dの利点あんまりないですやん>< DでwrapしたPythonObjectでwxPython使ったら意外と便利だったな DFLがマルチプラットフォームになれば文句ないんだがなぁ どうしてもマルチプラットフォームが必要なら HTML5 でどうにかする方が現実的 もう仕様固まってきて大きな動きないのにサードパーティのライブラリが整備されないのは Dが今まで積んできた業かな ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.4 2024/05/19 Walang Kapalit ★ | Donguri System Team 5ちゃんねる