Is there anyone on the official website who is willing to submit this?
Hi,everyone, Is there anyone on the official website who is willing to submit this? If you can submit, the development of D language is a good thing. "https://open.soft.360.cn/regist.php; "link.exe" and "optlink.exe" found the Trojan virus: - Type: "Trojan-HEUR/QVM19.1.A5B9.Malware.Gen" Description: Trojan is a malware disguised as a normal file that steals your account, password, and other private information. Scan Engine: Cloud Feature Engine File path: "...link.exe" File size: (230,472 bytes) Document fingerprint "(MD5)": "5c092ecec3788eb7f7df2673dcbd6f5c" Digital Signature: D Language Foundation Is the digital signature valid: valid Handling suggestions: quarantine files -- Does anyone know what is going on? Is there anyone on the official website who is willing to submit this? If you can submit, the development of D language is a good thing. "https://open.soft.360.cn/regist.php; Thank you.
Re: How to test that the IP port is reachable?
On Saturday, 6 April 2019 at 03:24:04 UTC, FrankLike wrote: Hi,everyone,... Do you have some better code than this? import std.stdio; import std.socket; void main() { testIPPort(); } bool testIPPort() { try { auto results = getAddressInfo("127.0.0.1",AddressInfoFlags.NUMERICHOST); auto sock = new Socket(results[0]); auto address = getAddress("127.0.0.1",8080); sock.connect(address[0]); writeln(address," connect ok"); return true; } catch(SocketException e) { return false; } } --- Thanks.
How to test that the IP port is reachable?
Hi,everyone, How to test that the IP port is reachable? In C,you can do this like that, what should I do in D? /* C Code*/ https://blog.csdn.net/zhangyingchuang/article/details/51957552 #include #include #include #include #include /* inet(3) functions */ #define bool int #define false 0 #define true 1 bool checkIPandPort(const char* ip, const char* port) { struct sockaddr_in addr; int fd = socket(AF_INET, SOCK_STREAM, 0); memset(, 0, sizeof(addr)); addr.sin_family = AF_INET; addr.sin_port = htons(atoi(port)); addr.sin_addr.s_addr = inet_addr(ip); if (connect(fd, (struct sockaddr *) , sizeof(struct sockaddr)) < 0) { printf("connect error \n"); return false; } return true; } -- But how to do it in D? Thanks.
Re: How can I express the type of a function in D?
On Wednesday, 30 January 2019 at 05:40:50 UTC, FrankLike wrote: On Wednesday, 30 January 2019 at 05:14:20 UTC, Sobaya wrote: I want to get a mangled name of a D function by `core.demangle.mangle`, but I'm in trouble because there are no ways to express a type of a function, which is used for a template argument of `mangle`. For example, it is wrong to use the type `int function(int,int)` to express the type of `int add(int,int)`. Because it expresses the type of a function POINTER, not just a function. The fuction name in a binary compiled this function is "_D3addFiiZi", but `mangle!(int function(int,int))("add")` returns "_D3addPFiiZi", which includes "P" meaning POINTER. How can I get the former one? Thanks. import std.stdio; import std.process:executeShell; import core.demangle; void main() { assert(mangle!(int function(int))("a.b") == "_D1a1bPFiZi"); executeShell("pause"); } CODE END// Yes,"_D1a1bPFiZi",which includes "P".
Re: How can I express the type of a function in D?
On Wednesday, 30 January 2019 at 05:14:20 UTC, Sobaya wrote: I want to get a mangled name of a D function by `core.demangle.mangle`, but I'm in trouble because there are no ways to express a type of a function, which is used for a template argument of `mangle`. For example, it is wrong to use the type `int function(int,int)` to express the type of `int add(int,int)`. Because it expresses the type of a function POINTER, not just a function. The fuction name in a binary compiled this function is "_D3addFiiZi", but `mangle!(int function(int,int))("add")` returns "_D3addPFiiZi", which includes "P" meaning POINTER. How can I get the former one? Thanks. import std.stdio; alias int* PINT; void main() { auto x= Add(1,2); writeln(x); writeln(); executeShell("pause"); } private PINT Add(int a,int b) { return cast(PINT)(a+b); } CODE END// It works ok.
Re: What is the alternative to the setlocale function of c in D? Thank you.
On Sunday, 27 January 2019 at 10:44:04 UTC, John Chapman wrote: On Sunday, 27 January 2019 at 06:14:15 UTC, FrankLike wrote: On Saturday, 26 January 2019 at 09:33:33 UTC, John Chapman wrote: What has that code got to do with setting the console's font? So you need to add more code to accomplish that. You don't need to set the font to achieve the goal, why not? This should work: const(char)[] toCodePage(const(char)[] s, uint codePage = 0) { import core.sys.windows.winnls, std.utf; foreach (char c; s) { if (c >= 0x80) { auto temp = s.toUTF16z(); char[] result; if ((result.length = WideCharToMultiByte(codePage, 0, temp, -1, null, 0, null, null)) != 0) WideCharToMultiByte(codePage, 0, temp, -1, result.ptr, cast(int)result.length, null, null); return result; } } return s; } void main() { import core.sys.windows.wincon, std.stdio; SetConsoleOutputCP(936); // Simplified Chinese codepage writeln("字符".toCodePage(936)); } Yes. extern(C) int setlocale(int,char*); static this() { import core.stdc.wchar_; import core.stdc.stdio; fwide(core.stdc.stdio.stdout,1); setlocale(0,cast(char*)"china"); } /// it's simple than yours,and don't need convert every string,why not work after D2.0.78.1?
Re: What is the alternative to the setlocale function of c in D? Thank you.
On Saturday, 26 January 2019 at 09:33:33 UTC, John Chapman wrote: What has that code got to do with setting the console's font? So you need to add more code to accomplish that. You don't need to set the font to achieve the goal, why not?
Re: What is the alternative to the setlocale function of c in D? Thank you.
On Friday, 25 January 2019 at 16:14:56 UTC, Kagamin wrote: also http://blogs.microsoft.co.il/pavely/2009/07/23/changing-console-fonts/ That's so much code than next code! / extern(C) int setlocale(int,char*); static this() { import core.stdc.wchar_; import core.stdc.stdio; fwide(core.stdc.stdio.stdout,1); setlocale(0,cast(char*)"china"); } / After D2.078.1,it's not work. why? thank you.
Re: What is the alternative to the setlocale function of c in D? Thank you.
On Friday, 25 January 2019 at 15:05:50 UTC, John Chapman wrote: On Friday, 25 January 2019 at 14:23:15 UTC, FrankLike wrote: I need to set the font by the code now, because I need to do the installer, can't let this installer set the properties on each computer? SetCurrentConsoleFontEx perhaps? https://docs.microsoft.com/en-us/windows/console/setcurrentconsolefontex That's so much code than next code. /// extern(C) int setlocale(int,char*); static this() { import core.stdc.wchar_; import core.stdc.stdio; fwide(core.stdc.stdio.stdout,1); setlocale(0,cast(char*)"china"); } /// But After D2.078.1,it's not work. Why? Thank you.
Re: What is the alternative to the setlocale function of c in D? Thank you.
On Friday, 25 January 2019 at 08:41:23 UTC, Kagamin wrote: Create a shortcut to cmd.exe and edit its properties. The console window itself has a system menu for this too. I known that. I need to set the font by the code now, because I need to do the installer, can't let this installer set the properties on each computer? Thank you.
Re: What is the alternative to the setlocale function of c in D? Thank you.
On Thursday, 24 January 2019 at 12:19:44 UTC, Kagamin wrote: Try workarounds here: https://issues.dlang.org/show_bug.cgi?id=1448 https://issues.dlang.org/show_bug.cgi?id=2742 How do I set the font? Please.
Re: What is the alternative to the setlocale function of c in D? Thank you.
On Thursday, 24 January 2019 at 12:19:44 UTC, Kagamin wrote: Try workarounds here: https://issues.dlang.org/show_bug.cgi?id=1448 https://issues.dlang.org/show_bug.cgi?id=2742 Ok,thank you. import std.stdio; import core.sys.windows.windows; import std.process:executeShell; extern(Windows) bool SetConsoleOutputCP(uint); void main() { SetConsoleOutputCP(65001); writeln("字符"); executeShell("pause"); }
Re: What is the alternative to the setlocale function of c in D? Thank you.
On Thursday, 24 January 2019 at 07:48:44 UTC, FrankLike wrote: Hi,everyone, for example: import std.stdio; import std.process:executeShell; extern(C) int setlocale(int,char*); static this() { import core.stdc.wchar_; import core.stdc.stdio; fwide(core.stdc.stdio.stdout,1); setlocale(0,cast(char*)"china"); } void main() { writeln("字符"); executeShell("pause"); } ///code end/ In D2.078.1 It can display Chinese characters correctly! But After D2.080 , but it can't be used now. Who can help me? Thank you.
What is the alternative to the setlocale function of c in D? Thank you.
Hi,everyone, for example: import std.stdio; import std.process:executeShell; extern(C) int setlocale(int,char*); static this() { import core.stdc.wchar_; import core.stdc.stdio; fwide(core.stdc.stdio.stdout,1); setlocale(0,cast(char*)"china"); } void main() { writeln("字符"); executeShell("pause"); } ///code end/ In D2.078.1 It works very ok. But After D2.080 ,It not works. Who can help me? Thank you.
Re: How to ensure string compatibility In D?
On Wednesday, 23 January 2019 at 14:12:09 UTC, Jonathan M Davis wrote: On Wednesday, January 23, 2019 5:42:55 AM MST FrankLike via std.conv.to will allow you to convert between string and wstring, but for calling C functions, you still need the strings to be zero-terminated unless the function specifically takes an argument indicating the number of characters in the string. Strings in D are not zero-terminated, so std.conv.to is not going to produce strings that work with C functions. std.conv.to and std.utf.toUTFz solve different problems. [...] Thank you.
Re: How to ensure string compatibility In D?
On Wednesday, 23 January 2019 at 10:44:51 UTC, Jonathan M Davis wrote: On Tuesday, January 22, 2019 2:49:00 PM MST bauss via Digitalmars-d-learn wrote: toUTFz is the generic solution. toStringz exists specifically Error: template std.utf.toUTFz cannot deduce function from argument types !()(string), candidates are: E:\D\DMD2\WINDOWS\BIN\..\..\src\phobos\std\utf.d(3070): std.utf.toUTFz(P) I have solved the problem in this way: import core.sys.windows.windows; import std.stdio; import std.string; import std.conv; void main() { autostrA_Z ="CD"w; auto type = GetDriveType(tos(to!wstring(strA_Z[0])~":\\")); writeln(to!wstring(strA_Z[0])~" is ",type); } private auto tos(T)(T str) { version (ANSI) { writeln("ANSI"); return cast(const(char)*)(str); } else { writeln("Unicode"); return cast(const(wchar)*)(str); } } Thanks.
Re: How to ensure string compatibility In D?
On Tuesday, 22 January 2019 at 21:49:00 UTC, bauss wrote: On Tuesday, 22 January 2019 at 19:14:43 UTC, Jonathan M Davis Is there a reason we cannot implement toStringz like: immutable(TChar)* toStringz(TChar = char)(scope const(TChar)[] s) @trusted pure nothrow; // Couldn't find a way to get the char type of a string, so couldn't make the following generic: immutable(char)* toStringz(return scope string s) @trusted pure nothrow; immutable(wchar)* toStringz(return scope wstring s) @trusted pure nothrow; immutable(dchar)* toStringz(return scope dstring s) @trusted pure nothrow; For example: ///start/// import core.sys.windows.windows; import std.stdio; import std.string; import std.conv; void main() { autostrA_Z ="CD"w; auto type = GetDriveType(tos(to!wstring(strA_Z[0])~":\\")); writeln(to!wstring(strA_Z[0])~" is ",type); } private auto tos(T)(T str) { version (ANSI) { writeln("ANSI"); return cast(const(char)*)(str); } else { writeln("Unicode"); return cast(const(wchar)*)(str); } } ///end/ It's work ok.
Re: How to ensure string compatibility In D?
On Tuesday, 22 January 2019 at 21:49:00 UTC, bauss wrote: On Tuesday, 22 January 2019 at 19:14:43 UTC, Jonathan M Davis Is there a reason we cannot implement toStringz like: immutable(TChar)* toStringz(TChar = char)(scope const(TChar)[] s) @trusted pure nothrow; // Couldn't find a way to get the char type of a string, so "core.sys.windows.windows.winbase",it's implementation is a good choice. couldn't make the following generic: immutable(char)* toStringz(return scope string s) @trusted pure nothrow; immutable(wchar)* toStringz(return scope wstring s) @trusted pure nothrow; immutable(dchar)* toStringz(return scope dstring s) @trusted pure nothrow; For example: /START// import core.sys.windows.windows; import std.stdio; import std.string; import std.conv; void main() { autostrA_Z ="CD"w; auto type = GetDriveType((to!wstring(strA_Z[0])~":\\"w).tos); writeln(to!wstring(strA_Z[0])~" is ",type); } private auto tos(wstring str) { version (ANSI) { writeln("ANSI"); return cast(const(char)*)(str); } else { writeln("Unicode"); return cast(const(wchar)*)(str); } } private auto tos(string str) { version (ANSI) { writeln("ANSI"); return cast(const(char)*)(str); } else { writeln("Unicode"); return cast(const(wchar)*)(str); } } /END// It's work ok.
Re: How to ensure string compatibility In D?
On Tuesday, 22 January 2019 at 16:18:17 UTC, Adam D. Ruppe wrote: Use "mystring"w, notice the w after the closing quote. Or toStringz is not work like c_str() in C++?
Re: How to ensure string compatibility In D?
On Tuesday, 22 January 2019 at 16:18:17 UTC, Adam D. Ruppe wrote: Use "mystring"w, notice the w after the closing quote. "GetDriveType" Function is auto work by "_T" in C++,but how to do in D?
Re: How to ensure string compatibility In D?
On Tuesday, 22 January 2019 at 16:13:57 UTC, FrankLike wrote: On Tuesday, 22 January 2019 at 14:07:48 UTC, Olivier Pisano wrote: Some error is in "core.sys.windows.windows"? Thank you.
Re: How to ensure string compatibility In D?
On Tuesday, 22 January 2019 at 14:07:48 UTC, Olivier Pisano wrote: On Tuesday, 22 January 2019 at 13:55:30 UTC, FrankLike wrote: In D, there is only Unicode. The language doesn't manipulate strings encoded in Windows local code-pages. For example: std::wstring strTest(_T("d://")); UINT nRes = ::GetDriveType(strTest.c_str()); It can work in C++. But: //here is work ok/// import std.stdio; import std.string; import std.conv; import win32.winbase; void main() { string strA_Z ="CD"; auto type = GetDriveType((to!string(strA_Z[0])~":\\").toStringz); writeln(to!string(strA_Z[0])~" is ",type); } //here is work error// import core.sys.windows.windows; import std.stdio; import std.string; import std.conv; void main() { string strA_Z ="CD"; auto type = GetDriveType((to!string(strA_Z[0])~":\\").toStringz); writeln(to!string(strA_Z[0])~" is ",type); } //---Error Info// slicea2.d(9): Error: function core.sys.windows.winbase.GetDriveTypeW(const(wchar )*) is not callable using argument types (immutable(char)*) slicea2.d(9):cannot pass argument toStringz(to(strA_Z[0]) ~ ":\\") of ty pe immutable(char)* to parameter const(wchar)* Some error is "core.sys.windows.windows"? Thank you.
How to ensure string compatibility In D?
Hi,everyone, In C++, _T can guarantee that when converting from ascii encoding type to unicode encoding type, the program does not need to be modified. What do I need to do in D? Thanks.
Re: Who can stop it ? Help me,thank you.
On Wednesday, 17 October 2018 at 13:50:03 UTC, Stanislav Blinov wrote: On Wednesday, 17 October 2018 at 13:48:04 UTC, FrankLike wrote: What can I do? Delete the bloatware that you downloaded. Where can get the new dmd or ldc2 that's no 'Trojan horse virus' ?
Who can stop it ? Help me,thank you.
Hi,teacher: I like D lang,when I download the soft from http://www.360totalsecurity.com/en/, but I find, the link.exe of dmd or ldc2,all have the ‘Trojan horse virus’. dmd.2.082.1.windows.7z:HEUR/QVM19.1.92C9.Malware.Gen file MD5:91ce2a59f06151902a1f3fc49e0a4752 ldc2-7e9db717-windows-x64.7z: HEUR/QVM202.0.92C9.Malware.Gen file MD5:9535728d583e950ea446599b2018cbbd It let me not to use them. What can I do? Help me. Thank you.
Re: How to compile C++ and D code, and linking them together on Windows,I will use c++ function In D? Thanks.
On Sunday, 25 February 2018 at 15:38:31 UTC, FrankLike wrote: Hi,everyone, How to compile C++ and D code, and linking them together on Windows ? I will use c++ function In D. I use vs2010 c++ on Windows, What should I do? For example: 1. create 2 files: C++.cpp D.d 2. I get the C++.obj fiel by vs2010. 3. I get the D.obj by dmd -c -m32mscoff Then how to link? use Dmd's link or VC's link? Now I use the VC's link,and dmd -c -m32mscoff.but get the error:phobos32mscoff.lib<...>:error LNK2001 Total 187 errors. Thanks. I've done it by myself. Through ‘LINK’ each *.obj from D or C++,if there is no problem,linking them together,add parameters:/NODEFAULTLIB:libcmt.lib ,and not use /LTCG. Ok.
Re: Help using lubeck on Windows
On Sunday, 25 February 2018 at 14:26:24 UTC, Arredondo wrote: On Friday, 23 February 2018 at 18:29:09 UTC, Ilya Yaroshenko wrote: full days now. All the .lib/.a files I have tried for BLAS and to do: dmd -L .\openblas.lib put the lib file in your code path. Error 42: Symbol Undefined _cblas_dgemm Error 42: Symbol Undefined _cblas_dger Error: linker exited with status 2
How to compile C++ and D code, and linking them together on Windows, I will use c++ function In D? Thanks.
Hi,everyone, How to compile C++ and D code, and linking them together on Windows ? I will use c++ function In D. I use vs2010 c++ on Windows, What should I do? For example: 1. create 2 files: C++.cpp D.d 2. I get the C++.obj fiel by vs2010. 3. I get the D.obj by dmd -c -m32mscoff Then how to link? use Dmd's link or VC's link? Now I use the VC's link,and dmd -c -m32mscoff.but get the error:phobos32mscoff.lib<...>:error LNK2001 Total 187 errors. Thanks.
Where can get the strsafe.d by strsafe.h ? Thanks.
Hi,everyone, Now,I use some code in strsafe.h,but where can get the strsafe.d ? Thanks.
Re: How to convert C macro to D? Thanks.
On Saturday, 24 February 2018 at 13:57:27 UTC, Adam D. Ruppe wrote: On Saturday, 24 February 2018 at 13:50:16 UTC, FrankLike wrote: #define IOCTL_NDIS_QUERY_GLOBAL_STATS _NDIS_CONTROL_CODE(0, METHOD_OUT_DIRECT) auto IOCTL_NDIS_QUERY_GLOBAL_STATS () { return _NDIS_CONTROL_CODE(0, METHOD_OUT_DIRECT); } Sorry. I look for 'IOCTL_DISK_GET_DRIVE_GEOMETRY' in core.sys.windows.winioctl.d,then I know : enum :DWORD IOCTL_NDIS_QUERY_GLOBAL_STATS = CTL_CODE_T!(FILE_DEVICE_PHYSICAL_NETCARD, 0, METHOD_OUT_DIRECT, FILE_ANY_ACCESS); It's ok. Thank you.
How to convert C macro to D? Thanks.
Hi,everyone, I can convert some simple C macros, but a bit more complicated will need your help. For example: #define _NDIS_CONTROL_CODE(request,method) \ CTL_CODE(FILE_DEVICE_PHYSICAL_NETCARD, request, method, FILE_ANY_ACCESS) #define IOCTL_NDIS_QUERY_GLOBAL_STATS _NDIS_CONTROL_CODE(0, METHOD_OUT_DIRECT) use alias or enum,how to do? Thanks.
Re: How to use strip or stripRight on char[len] ? Thanks.
On Thursday, 22 February 2018 at 18:02:11 UTC, Adam D. Ruppe wrote: You don't strip that at all, the function writes a zero-terminated string to the buffer. Thank you very much ! I forgot it.
Re: How to use strip or stripRight on char[len] ? Thanks.
On Thursday, 22 February 2018 at 16:59:40 UTC, Adam D. Ruppe wrote: On Thursday, 22 February 2018 at 16:55:14 UTC, FrankLike wrote: char[100] abc ="aabc"; auto abcaa = ((abc).dup).stripRight; try: auto abcaa = stripRight(abc[]) Now,I want to get the result: char[100] Path; writeln("will get path "); SHGetSpecialFolderPath(NULL,cast(char*)Path.ptr,CSIDL_DESKTOP,0); if use char[] Path; It not get the result. How to strip the Path? Thanks.
Re: How to use strip or stripRight on char[len] ? Thanks.
On Thursday, 22 February 2018 at 17:08:14 UTC, FrankLike wrote: On Thursday, 22 February 2018 at 16:59:40 UTC, Adam D. Ruppe wrote: On Thursday, 22 February 2018 at 16:55:14 UTC, FrankLike wrote: It is simply that these functions require a slice so it can resize it and you can't resize a static array. char[100] abc ="aabc"; char[] p = abc; string aa = to!string(p); string aaa = aa.stripRight; It get the same result too.
Re: How to use strip or stripRight on char[len] ? Thanks.
On Thursday, 22 February 2018 at 16:59:40 UTC, Adam D. Ruppe wrote: On Thursday, 22 February 2018 at 16:55:14 UTC, FrankLike wrote: It is simply that these functions require a slice so it can resize it and you can't resize a static array. char[100] abc ="aabc"; string aa = to!string(abc); string aaa = aa.stripRight; It get the same result.
How to use strip or stripRight on char[len] ? Thanks.
Hi,everyone, How to use strip or stripRight on char[len]? For example: string abcs ="aabc"; auto abcsaa = abcs.stripRight; writeln(abcsaa); writeln("---abcsaa--stripRight ok "); char[100] abc ="aabc"; auto abcaa = ((abc).dup).stripRight; writeln(abcaa); writeln("stripRight error- "); Where is error? Thanks.
Re: How to use Com object (it comes from other dll) in D? Thanks.
On Thursday, 22 February 2018 at 13:15:11 UTC, rikki cattermole wrote: On 23/02/2018 2:12 AM, FrankLike wrote: IShellLink* pLink; IPersistFile* ppf; Reminder classes in D are already references, no need for pointers to them. Ok,I delete the pointers ,It's ok! Thank you very much!
Re: How to use Com object (it comes from other dll) in D? Thanks.
On Thursday, 22 February 2018 at 13:15:11 UTC, rikki cattermole wrote: Reminder classes in D are already references, no need for pointers to them. Thank you,but get the same error. [D CODE] if(lpszLnkFileDir is null) return; HRESULT hr; IShellLink pLink; IPersistFile ppf; hr = CoCreateInstance(CLSID_ShellLink,NULL, CLSCTX_INPROC_SERVER,IID_IShellLinkA,pLink);//cast(PVOID*) DisplayInfoWork("CoCreateInstance "); if(FAILED(hr)) { DisplayInfoWork("FAILED(hr) "); return ; } DisplayInfoWork(" pLink is "~pLink.to!string); DisplayInfoWork("will QueryInterface hr is "~hr.to!string); DisplayInfoWork(IID_IPersistFile.to!string); hr = pLink.QueryInterface(IID_IPersistFile, ppf);// err <- DisplayInfoWork("pLink.QueryInterface "); ---log info-- CoCreateInstance pLink is 5E9954 will QueryInterface hr is 0 const(GUID)(267, 0, 0, [192, 0, 0, 0, 0, 0, 0, 70]) Access Violation ---end Thanks.
How to use Com object (it comes from other dll) in D? Thanks.
Hi,everyone, I want use the Com object (it comes from other dll) in D,but the core.sys.windows.objidl:QueryInterface Fuction not work. For example: import core.sys.windows.windef; import core.sys.windows.basetyps; import core.sys.windows.uuid; import core.sys.windows.com; import core.sys.windows.objbase:CoInitialize,CoUninitialize,CoCreateInstance; import core.sys.windows.objidl;//:QueryInterface import core.sys.windows.shlobj;//:IShellLink import core.sys.windows.unknwn; if(lpszLnkFileDir is null) return; HRESULT hr; IShellLink* pLink; IPersistFile* ppf; hr = CoCreateInstance(_ShellLink,NULL, CLSCTX_INPROC_SERVER,_IShellLinkA,cast(PVOID*));//cast(PVOID*) writeln("CoCreateInstance "); if(FAILED(hr)) { writeln("FAILED(hr) "); return ; } writeln(" pLink is "~pLink.to!string); writeln("will QueryInterface hr is "~hr.to!string); writeln(IID_IPersistFile.to!string); hr = pLink.QueryInterface(_IPersistFile, cast(PVOID*));// err <- writeln("pLink.QueryInterface "); - It stops in 'hr = pLink.QueryInterface(_IPersistFile, cast(PVOID*));' But the same c++ code is ok. Who can help me? Thanks.
Re: How to convert hex string to string or ubytes? Thanks.
On Monday, 5 February 2018 at 10:04:10 UTC, Seb wrote: On Monday, 5 February 2018 at 08:41:43 UTC, FrankLike wrote: auto input = cast(string)hexString(hash); Use toHexString to get the string: Sorry,'hexString(hash)' is my clerical error. Thank you.I got the answer "no array".
Re: How to convert hex string to string or ubytes? Thanks.
On Monday, 5 February 2018 at 09:45:11 UTC, tetyys wrote: On Monday, 5 February 2018 at 08:41:43 UTC, FrankLike wrote: Casting unknown bytes to string or char is unsafe, and obviously some bytes can be invalid UTF8 sequences. Thank you.I got my error.
Re: How to convert hex string to string or ubytes? Thanks.
On Monday, 5 February 2018 at 06:12:22 UTC, H. S. Teoh wrote: On Mon, Feb 05, 2018 at 05:48:00AM +, FrankLike via auto input = "48656c6c6f20776f726c6421"; auto str = input.chunks(2) .map!(digits => cast(char) digits.to!ubyte(16)) .array; But,if the input come from here: import std.digest.md; auto hash =md5Of("Some Words"); auto input = cast(string)hexString(hash); auto str = input.chunks(2) .map!(digits => cast(char) digits.to!ubyte(16)) .array; Then get an error: core.exception.UnicodeException@src\rt\util\utf.d(292):invalid UTF-8 sequence -- 0x0041B8E6 0x00419530 0x0040796F Thanks.
Re: How to convert hex string to string or ubytes? Thanks.
On Monday, 5 February 2018 at 06:12:22 UTC, H. S. Teoh wrote: On Mon, Feb 05, 2018 at 05:48:00AM +, FrankLike via auto input = "48656c6c6f20776f726c6421"; auto str = input.chunks(2) .map!(digits => cast(char) digits.to!ubyte(16)) .array; But,if the input come from here: import std.digest.md; auto hash =md5Of("Some Words"); auto input = hexString(hash); auto str = input.chunks(2) .map!(digits => cast(char) digits.to!ubyte(16)) .array; Then get an error: core.exception.UnicodeException@src\rt\util\utf.d(292):invalid UTF-8 sequence -- 0x0041B8E6 0x00419530 0x0040796F Thanks.
Re: How to convert hex string to string or ubytes? Thanks.
On Monday, 5 February 2018 at 06:12:22 UTC, H. S. Teoh wrote: On Mon, Feb 05, 2018 at 05:48:00AM +, FrankLike via assert(str == "Hello world!"); Thanks.very good!
How to convert hex string to string or ubytes? Thanks.
Now,I can get the string from hex string in compile time,but how to get it in run time? How to get it in run time? Thanks.
Re: Where can get the Number Convert module?Thanks.
On Sunday, 14 January 2018 at 03:49:05 UTC, Jonathan M Davis wrote: I get the result "1000" from byte[] byteData =[0,0,0,8]; Thank you very much. Good to hear. On a side note, I would point out that you almost certainly want to be using ubyte and not byte. byte is signed, whereas ubyte is unsigned. So, if you want to represent bytes of memory rather than an integral value between 1 and 127, then you want ubyte. - Jonathan M Davis Thank you.
Re: Where can get the Number Convert module?Thanks.
On Sunday, 14 January 2018 at 03:28:28 UTC, FrankLike wrote: On Sunday, 14 January 2018 at 03:09:40 UTC, Jonathan M Davis wrote: On Sunday, January 14, 2018 02:41:39 FrankLike via Digitalmars-d-learn wrote: [...] I'd suggest looking at [...] I get the result "1000" from ubyte[] byteData =[0,0,0,8]; Thank you very much.
Re: Where can get the Number Convert module?Thanks.
On Sunday, 14 January 2018 at 03:09:40 UTC, Jonathan M Davis wrote: On Sunday, January 14, 2018 02:41:39 FrankLike via Digitalmars-d-learn wrote: [...] I'd suggest looking at [...] I get the result "1000" from byte[] byteData =[0,0,0,8]; Thank you very much.
Re: Where can get the Number Convert module?Thanks.
On Sunday, 14 January 2018 at 02:41:39 UTC, FrankLike wrote: On Sunday, 14 January 2018 at 02:03:39 UTC, Jonathan M Davis wrote: Well, I'm not quite sure what you mean, but if you mean that Sorry,Such as byte[] byteData =[8,0,0,0]; to convert, at last,get the string bit :"100".or get the BitArray. Thanks.
Re: Where can get the Number Convert module?Thanks.
On Sunday, 14 January 2018 at 02:03:39 UTC, Jonathan M Davis wrote: Well, I'm not quite sure what you mean, but if you mean that Such as byte[] byteData =[0,0,0,8]; to convert, at last,get the string bit :"100".or get the BitArray. Thanks.
Where can get the Number Convert module?Thanks.
Hi,everyone, I need some help on 'Number Convert module' in D,such as byte[] type to BinaryDigit. Where can get the module? Thanks.
Re: Write native GUI applications for Windows
On Monday, 18 December 2017 at 07:55:25 UTC, Andrey wrote: Hello! I have a question about creating native GUI applications for Windows 7 or/and Windows 10. Hi,here is a very good native d gui lib,it's name is "dgui": https://github.com/FrankLIKE/DguiT/ I fork and modify ,let it work on DMD2.077 for win7 or win10. It can make the x64 lib. You can try it. Injoy it. Frank.
How to Exec Store Procedure For MySql in D? Thanks
Hi,everyone: Now,I find that I can't exec Store Procedure For MySql in D. use mySql-d,mySql-native,or ddbc. I want to get a SqlResult. I think that it's the time to fix the bug! Who can help me? Thank you! Frank
Whether there is a same module likt C#'s "Windows.Storage" NameSpace?
Hi,everyone, Whether there is a module, like C#'s "Windows.Storage" NameSpace, you can operate the Android phone or ios phone, you can open the phone's folder on windows7? Thank you . Frank.
How to set the Path to access the phone on windows?
Hi,everyone: I want to access the phone on Windows7,but get a error: std.file.FileException@std\file.d(3368):\\computer\myPhone\SDCard\myfiles: 0x0041c112 0x0043E601 The error is only on Windows7,it's ok on linux,I doubt it's not a error with file.d,maybe a error on Path on Windows. Who can help me? Thank you. Frank.
Re: Must I compile on the target architecture?
On Friday, 25 December 2015 at 12:43:05 UTC, Jakob Jenkov wrote: Hi, just a quick question: If I write a program in D and I use Windows for development but want it to run on Linux, do I have to copy the source code to the target Linux machine and compile it there, to make an executable for that machine? What is the standard process for cross platform compilation? GDC is best for cross platform compilation,download it from gdcproject.org.
Re: How to config the GDC on linux target for ARM linux?
On Monday, 28 December 2015 at 13:17:04 UTC, FrankLike wrote: About the first error ("...module wiringPi is in file 'wiringPi.d' which cannot be read...") - are you sure that the dfiles are in "./wiringPi/WiringPi/"? The compiler reports that it can't find them there. You can try copying the WiringPi dfiles in the same folder as "my.d". About the second error - you need to verify that aa.so actually has those symbols that the linker reports as "undefined reference". You can do this with readlelf or nm. For more info see here:http://stackoverflow.com/questions/1237575/how-do-i-find-out-what-all-symbols-are-exported-from-a-shared-object Thank you,but can you tell me that what is right way to use GDC on linux,such as d refer a c lib. for eacample: a.d refer x.h x.c how do you build it by GDC? what's your steps? How to config the GDC for the third part c libaries and d files,such as PATH. Thank you,waiting for your answer.
Re: How to config the GDC on linux target for ARM linux?
I've gotten the answer: use the difference 'gcc' for c code. ---For x86_64: #! /bin/sh dfiles="max31855.d max5322.d mcp23008.d mcp23016.d mcp23016reg.d mcp23017.d mcp23s08.d mcp23s17.d mcp23x08.d mcp23x0817.d mcp3002.d mcp3004.d mcp3422.d mcp4802.d pcf8574.d pcf8591.d sn3218.d softPwm.d softServo.d softTone.d sr595.d wiringPi.d wiringPiI2C.d wiringPiSPI.d wiringSerial.d wiringShift.d wpiExtensions.d" ofiles="drcSerial.o max31855.o max5322.o mcp23008.o mcp23016.o mcp23017.o mcp23s08.o mcp23s17.o mcp3002.o mcp3004.o mcp3422.o mcp4802.o pcf8574.o pcf8591.o piHiPri.o piThread.o sn3218.o softPwm.o softServo.o softTone.o sr595.o wiringPi.o wiringPiI2C.o wiringPiSPI.o wiringSerial.o wiringShift.o wpiExtensions.o" gcc -c *.c -m64 /opt/x86_64-pc-linux-gnu/bin/x86_64-linux-gnu-gdc -o my my.d $ofiles -I$dfiles For ARM: #! /bin/sh cfiles="wiringPi.c max31855.c max5322.c mcp23008.c mcp23016.c mcp23017.c mcp23s08.c mcp23s17.c mcp3002.c mcp3004.c mcp3422.c mcp4802.c pcf8574.c pcf8591.c sn3218.c softPwm.c softServo.c softTone.c sr595.c wiringPiI2C.c wiringPiSPI.c wiringSerial.c wiringShift.c wpiExtensions.c" dfiles="max31855.d max5322.d mcp23008.d mcp23016.d mcp23016reg.d mcp23017.d mcp23s08.d mcp23s17.d mcp23x08.d mcp23x0817.d mcp3002.d mcp3004.d mcp3422.d mcp4802.d pcf8574.d pcf8591.d sn3218.d softPwm.d softServo.d softTone.d sr595.d wiringPi.d wiringPiI2C.d wiringPiSPI.d wiringSerial.d wiringShift.d wpiExtensions.d" ofiles="drcSerial.o max31855.o max5322.o mcp23008.o mcp23016.o mcp23017.o mcp23s08.o mcp23s17.o mcp3002.o mcp3004.o mcp3422.o mcp4802.o pcf8574.o pcf8591.o piHiPri.o piThread.o sn3218.o softPwm.o softServo.o softTone.o sr595.o wiringPi.o wiringPiI2C.o wiringPiSPI.o wiringSerial.o wiringShift.o wpiExtensions.o" /opt/arm-unknown-linux-gnueabihf/bin/arm-unknown-linux-gnueabihf-gcc -marm -c $cfiles /opt/arm-unknown-linux-gnueabihf/bin/arm-unknown-linux-gnueabihf-gdc -o my my.d $ofiles -I$dfiles
Re: How to use GDC to get .a file on Linux?
On Sunday, 27 December 2015 at 17:19:26 UTC, Mike Parker wrote: On Sunday, 27 December 2015 at 15:19:21 UTC, FrankLike wrote: Hi, Now I need get the .a file on Linux,target system is ARM. If you use gcc ,you will use the 'ar' to get .a file, but how to do by GDC ? And how to get the execute file by .a file and .d file? Thank you. Just use ar on the generated object files the same way you would if you were using gcc. Thank you,but the error is not ok.maybe some PATH is error,I don't how to set.
Re: How to config the GDC on linux target for ARM linux?
About the first error ("...module wiringPi is in file 'wiringPi.d' which cannot be read...") - are you sure that the dfiles are in "./wiringPi/WiringPi/"? The compiler reports that it can't find them there. You can try copying the WiringPi dfiles in the same folder as "my.d". About the second error - you need to verify that aa.so actually has those symbols that the linker reports as "undefined reference". You can do this with readlelf or nm. For more info see here:http://stackoverflow.com/questions/1237575/how-do-i-find-out-what-all-symbols-are-exported-from-a-shared-object Thank you,but can you tell me that what is right way to use GDC on linux,such as d refer a c lib. for eacample: a.d refer x.h x.c how do you build it by GDC? what's your steps? How to config the GDC for the thirty c lib and d files. Thank you,waiting for your answer.
Re: How to use GDC to get .a file on Linux?
Answer is here: http://forum.dlang.org/thread/txvntyahlaewutzzw...@forum.dlang.org
Re: GDC build wiringPi for 'Raspberry Pi',here is error info
Answer is here: http://forum.dlang.org/thread/txvntyahlaewutzzw...@forum.dlang.org
Re: How to config the GDC on linux target for ARM linux?
On Monday, 28 December 2015 at 15:23:19 UTC, FrankLike wrote: New Answer: I've gotten the answer: use the difference 'gcc' for c code. ---For x86_64: #! /bin/sh dfiles="max31855.d max5322.d mcp23008.d mcp23016.d mcp23016reg.d mcp23017.d mcp23s08.d mcp23s17.d mcp23x08.d mcp23x0817.d mcp3002.d mcp3004.d mcp3422.d mcp4802.d pcf8574.d pcf8591.d sn3218.d softPwm.d softServo.d softTone.d sr595.d wiringPi.d wiringPiI2C.d wiringPiSPI.d wiringSerial.d wiringShift.d wpiExtensions.d" ofiles="drcSerial.o max31855.o max5322.o mcp23008.o mcp23016.o mcp23017.o mcp23s08.o mcp23s17.o mcp3002.o mcp3004.o mcp3422.o mcp4802.o pcf8574.o pcf8591.o piHiPri.o piThread.o sn3218.o softPwm.o softServo.o softTone.o sr595.o wiringPi.o wiringPiI2C.o wiringPiSPI.o wiringSerial.o wiringShift.o wpiExtensions.o" gcc -c *.c -m64 /opt/x86_64-pc-linux-gnu/bin/x86_64-linux-gnu-gdc -o my my.d $ofiles -I$dfiles For ARM(add -I.): #! /bin/sh cfiles="wiringPi.c max31855.c max5322.c mcp23008.c mcp23016.c mcp23017.c mcp23s08.c mcp23s17.c mcp3002.c mcp3004.c mcp3422.c mcp4802.c pcf8574.c pcf8591.c sn3218.c softPwm.c softServo.c softTone.c sr595.c wiringPiI2C.c wiringPiSPI.c wiringSerial.c wiringShift.c wpiExtensions.c" dfiles="max31855.d max5322.d mcp23008.d mcp23016.d mcp23016reg.d mcp23017.d mcp23s08.d mcp23s17.d mcp23x08.d mcp23x0817.d mcp3002.d mcp3004.d mcp3422.d mcp4802.d pcf8574.d pcf8591.d sn3218.d softPwm.d softServo.d softTone.d sr595.d wiringPi.d wiringPiI2C.d wiringPiSPI.d wiringSerial.d wiringShift.d wpiExtensions.d" ofiles="drcSerial.o max31855.o max5322.o mcp23008.o mcp23016.o mcp23017.o mcp23s08.o mcp23s17.o mcp3002.o mcp3004.o mcp3422.o mcp4802.o pcf8574.o pcf8591.o piHiPri.o piThread.o sn3218.o softPwm.o softServo.o softTone.o sr595.o wiringPi.o wiringPiI2C.o wiringPiSPI.o wiringSerial.o wiringShift.o wpiExtensions.o" /opt/arm-unknown-linux-gnueabihf/bin/arm-unknown-linux-gnueabihf-gcc -marm -c $cfiles -I. /opt/arm-unknown-linux-gnueabihf/bin/arm-unknown-linux-gnueabihf-gdc -o my my.d $ofiles -I$dfiles
Re: How to use GDC to get .a file on Linux?
On Sunday, 27 December 2015 at 15:24:17 UTC, tcak wrote: On Sunday, 27 December 2015 at 15:19:21 UTC, FrankLike wrote: Hi, Now I need get the .a file on Linux,target system is ARM. If you use gcc ,you will use the 'ar' to get .a file, but how to do by GDC ? And how to get the execute file by .a file and .d file? Thank you. I couldn't have understood your question very well, but some information is here. You create .a static library file with "-lib" flag while compiling. Yesterday I did it. dmd mylib.d -lib This will generate mylib.a. You can later use this static library while compiling another d code. dmd main.d mylib.a Pass the .a file directly as it is another source. I have never tried these with GDC, but I don't think it is much different at all. Now I will target file to ARM linux,and dmd can't get the file for ARM.
How to use GDC to get .a file on Linux?
Hi, Now I need get the .a file on Linux,target system is ARM. If you use gcc ,you will use the 'ar' to get .a file, but how to do by GDC ? And how to get the execute file by .a file and .d file? Thank you.
How to config the GDC on linux target for ARM linux?
Now I build a project for ARM linux on ubuntu 15.04 ,but build error. I download the 'wiringPi' from http://wiringPi.com,convert the *.h to *.d.then build the 'aa.so' file: #! /bin/sh dfiles="max31855.d max5322.d mcp23008.d mcp23016.d mcp23016reg.d mcp23017.d mcp23s08.d mcp23s17.d mcp23x08.d mcp23x0817.d mcp3002.d mcp3004.d mcp3422.d mcp4802.d pcf8574.d pcf8591.d sn3218.d softPwm.d softServo.d softTone.d sr595.d wiringPi.d wiringPiI2C.d wiringPiSPI.d wiringSerial.d wiringShift.d wpiExtensions.d" ofiles="drcSerial.o max31855.o max5322.o mcp23008.o mcp23016.o mcp23017.o mcp23s08.o mcp23s17.o mcp3002.o mcp3004.o mcp3422.o mcp4802.o pcf8574.o pcf8591.o piHiPri.o piThead.o sn3218.o softPwm.o softServo.o softTone.o sr595.o wiringPi.o wiringPiI2C.o wiringPiSPI.o wiringSerial.o wiringShift.o wpiExtensions.o" /opt/arm-unknown-linux-gnueabihf/bin/arm-linux-gnueabihf-gdc -o aa.so $ofiels $dfiles -shared ---my.d import wiringPi; import std.stdio; void main() { writeln("start"); wiringPiSetup(); pinMode(0,OUTPUT); while(1) { digitalWrite(0,HIGH); delay(500); digitalWrite(0,LOW); delay(500); } return; } -build the my execute file /opt/arm-unknown-linux-gnueabihf/bin/arm-linux-gnueabihf-gdc -o my my.d aa.so -I./wiringPi/WiringPi/ -now get the error: my.d:1:8: error: module wiringPi is in file 'wiringPi.d' which cannot be read import wiringPi; ^ import path[0] = /opt/arm-unknown-linux-gnueabihf/lib/gcc/arm-unknown-linux-gnueabihf/5.2.0/include/d -I copy the *.d to /opt/arm-unknown-linux-gnueabihf/lib/gcc/arm-unknown-linux-gnueabihf/5.2.0/include/d it's ok ,but where is the file for config? -get another error: /tmp/cc7M1B9I.o: In function `_Dmain': my.d:(.text+0x60): undefined reference to `wiringPiSetup' my.d:(.text+0x6c): undefined reference to `pinMode' my.d:(.text+0x84): undefined reference to `digitalWrite' my.d:(.text+0x8c): undefined reference to `delay' my.d:(.text+0x98): undefined reference to `digitalWrite' my.d:(.text+0xa0): undefined reference to `delay' collect2: error: ld returned 1 exit status -end I'm not known the GDC config file ,and maybe I use the error build . Who can help me? thank you.
How to use GDC for 'Raspberry Pi' on Linux x86_64?
Hi,everyone, I've download the arm-unknown-linux-gnueabi and arm-unknown-linux-gnueabihf,which is I must to use on ' Raspberry Pi'? Now,I've chosen the arm-unknown-linux-gnueabihf.That's ok? I've made the hello.d,and made the hello. The file 'hello' can be used on 'Raspberry Pi'? Now I'm not having the 'Raspberry Pi'. Thank you.
GCD build wiringPi for 'Raspberry Pi',here is error info
Hi,everyone,I build wiringPi for 'Raspberry Pi'.(http://wiringpi.com/) Here is error info: ---gdcbuild #! /bin/sh dfiles="max31855.d max5322.d mcp23008.d mcp23016.d mcp23016reg.d mcp23017.d mcp23s08.d mcp23s17.d mcp23x08.d mcp23x0817.d mcp3002.d mcp3004.d mcp3422.d mcp4802.d pcf8574.d pcf8591.d sn3218.d softPwm.d softServo.d softTone.d sr595.d wiringPi.d wiringPiI2C.d wiringPiSPI.d wiringSerial.d wiringShift.d wpiExtensions.d" ofiles="drcSerial.o max31855.o max5322.o mcp23008.o mcp23016.o mcp23017.o mcp23s08.o mcp23s17.o mcp3002.o mcp3004.o mcp3422.o mcp4802.o pcf8574.o pcf8591.o piHiPri.o piThead.o sn3218.o softPwm.o softServo.o softTone.o sr595.o wiringPi.o wiringPiI2C.o wiringPiSPI.o wiringSerial.o wiringShift.o wpiExtensions.o" /opt/arm-unknown-linux-gnueabihf/bin/arm-linux-gnueabihf-gdc -o aa.so $ofiels $dfiles -shared sudo ./gdcbuild /opt/arm-unknown-linux-gnueabihf/bin/../lib/gcc/arm-unknown-linux-gnueabihf/5.2.0/../../../../arm-unknown-linux-gnueabihf/bin/ld: /opt/arm-unknown-linux-gnueabihf/bin/../lib/gcc/arm-unknown-linux-gnueabihf/5.2.0/../../../../arm-unknown-linux-gnueabihf/lib/libgphobos2.a(lifetime.o)(.text+0x30): R_ARM_TLS_LE32 relocation not permitted in shared object /opt/arm-unknown-linux-gnueabihf/bin/../lib/gcc/arm-unknown-linux-gnueabihf/5.2.0/../../../../arm-unknown-linux-gnueabihf/bin/ld: /opt/arm-unknown-linux-gnueabihf/bin/../lib/gcc/arm-unknown-linux-gnueabihf/5.2.0/../../../../arm-unknown-linux-gnueabihf/lib/libgphobos2.a(lifetime.o)(.text+0x2e0): R_ARM_TLS_LE32 relocation not permitted in shared object /opt/arm-unknown-linux-gnueabihf/bin/../lib/gcc/arm-unknown-linux-gnueabihf/5.2.0/../../../../arm-unknown-linux-gnueabihf/bin/ld: /opt/arm-unknown-linux-gnueabihf/bin/../lib/gcc/arm-unknown-linux-gnueabihf/5.2.0/../../../../arm-unknown-linux-gnueabihf/lib/libgphobos2.a(lifetime.o)(.text+0x3f0): R_ARM_TLS_LE32 relocation not permitted in shared object /opt/arm-unknown-linux-gnueabihf/bin/../lib/gcc/arm-unknown-linux-gnueabihf/5.2.0/../../../../arm-unknown-linux-gnueabihf/bin/ld: /opt/arm-unknown-linux-gnueabihf/bin/../lib/gcc/arm-unknown-linux-gnueabihf/5.2.0/../../../../arm-unknown-linux-gnueabihf/lib/libgphobos2.a(lifetime.o)(.text+0x488): R_ARM_TLS_LE32 relocation not permitted in shared object /opt/arm-unknown-linux-gnueabihf/bin/../lib/gcc/arm-unknown-linux-gnueabihf/5.2.0/../../../../arm-unknown-linux-gnueabihf/bin/ld: /opt/arm-unknown-linux-gnueabihf/bin/../lib/gcc/arm-unknown-linux-gnueabihf/5.2.0/../../../../arm-unknown-linux-gnueabihf/lib/libgphobos2.a(tlsgc.o)(.text+0x28): R_ARM_TLS_LE32 relocation not permitted in shared object /opt/arm-unknown-linux-gnueabihf/bin/../lib/gcc/arm-unknown-linux-gnueabihf/5.2.0/../../../../arm-unknown-linux-gnueabihf/bin/ld: /opt/arm-unknown-linux-gnueabihf/bin/../lib/gcc/arm-unknown-linux-gnueabihf/5.2.0/../../../../arm-unknown-linux-gnueabihf/lib/libgphobos2.a(deh.o)(.text+0x158): R_ARM_TLS_LE32 relocation not permitted in shared object /opt/arm-unknown-linux-gnueabihf/bin/../lib/gcc/arm-unknown-linux-gnueabihf/5.2.0/../../../../arm-unknown-linux-gnueabihf/bin/ld: /opt/arm-unknown-linux-gnueabihf/bin/../lib/gcc/arm-unknown-linux-gnueabihf/5.2.0/../../../../arm-unknown-linux-gnueabihf/lib/libgphobos2.a(deh.o)(.text+0x22c): R_ARM_TLS_LE32 relocation not permitted in shared object /opt/arm-unknown-linux-gnueabihf/bin/../lib/gcc/arm-unknown-linux-gnueabihf/5.2.0/../../../../arm-unknown-linux-gnueabihf/bin/ld: /opt/arm-unknown-linux-gnueabihf/bin/../lib/gcc/arm-unknown-linux-gnueabihf/5.2.0/../../../../arm-unknown-linux-gnueabihf/lib/libgphobos2.a(deh.o)(.text+0x7e0): R_ARM_TLS_LE32 relocation not permitted in shared object /opt/arm-unknown-linux-gnueabihf/bin/../lib/gcc/arm-unknown-linux-gnueabihf/5.2.0/../../../../arm-unknown-linux-gnueabihf/bin/ld: /opt/arm-unknown-linux-gnueabihf/bin/../lib/gcc/arm-unknown-linux-gnueabihf/5.2.0/../../../../arm-unknown-linux-gnueabihf/lib/libgphobos2.a(thread.o)(.text+0x4c): R_ARM_TLS_LE32 relocation not permitted in shared object /opt/arm-unknown-linux-gnueabihf/bin/../lib/gcc/arm-unknown-linux-gnueabihf/5.2.0/../../../../arm-unknown-linux-gnueabihf/bin/ld: /opt/arm-unknown-linux-gnueabihf/bin/../lib/gcc/arm-unknown-linux-gnueabihf/5.2.0/../../../../arm-unknown-linux-gnueabihf/lib/libgphobos2.a(thread.o)(.text+0x50): R_ARM_TLS_LE32 relocation not permitted in shared object /opt/arm-unknown-linux-gnueabihf/bin/../lib/gcc/arm-unknown-linux-gnueabihf/5.2.0/../../../../arm-unknown-linux-gnueabihf/bin/ld: /opt/arm-unknown-linux-gnueabihf/bin/../lib/gcc/arm-unknown-linux-gnueabihf/5.2.0/../../../../arm-unknown-linux-gnueabihf/lib/libgphobos2.a(thread.o)(.text+0x3b8): R_ARM_TLS_LE32 relocation not permitted in shared object /opt/arm-unknown-linux-gnueabihf/bin/../lib/gcc/arm-unknown-linux-gnueabihf/5.2.0/../../../../arm-unknown-linux-gnueabihf/bin/ld:
GDC build wiringPi for 'Raspberry Pi',here is error info
Hi,everyone,I build wiringPi for 'Raspberry Pi' by GDC (arm-unknown-linux-gnueabihf2.066.1).('wiringPi' download by http://wiringpi.com/) Here is error info: ---gdcbuild #! /bin/sh dfiles="max31855.d max5322.d mcp23008.d mcp23016.d mcp23016reg.d mcp23017.d mcp23s08.d mcp23s17.d mcp23x08.d mcp23x0817.d mcp3002.d mcp3004.d mcp3422.d mcp4802.d pcf8574.d pcf8591.d sn3218.d softPwm.d softServo.d softTone.d sr595.d wiringPi.d wiringPiI2C.d wiringPiSPI.d wiringSerial.d wiringShift.d wpiExtensions.d" ofiles="drcSerial.o max31855.o max5322.o mcp23008.o mcp23016.o mcp23017.o mcp23s08.o mcp23s17.o mcp3002.o mcp3004.o mcp3422.o mcp4802.o pcf8574.o pcf8591.o piHiPri.o piThead.o sn3218.o softPwm.o softServo.o softTone.o sr595.o wiringPi.o wiringPiI2C.o wiringPiSPI.o wiringSerial.o wiringShift.o wpiExtensions.o" /opt/arm-unknown-linux-gnueabihf/bin/arm-linux-gnueabihf-gdc -o aa.so $ofiels $dfiles -shared sudo ./gdcbuild /opt/arm-unknown-linux-gnueabihf/bin/../lib/gcc/arm-unknown-linux-gnueabihf/5.2.0/../../../../arm-unknown-linux-gnueabihf/bin/ld: /opt/arm-unknown-linux-gnueabihf/bin/../lib/gcc/arm-unknown-linux-gnueabihf/5.2.0/../../../../arm-unknown-linux-gnueabihf/lib/libgphobos2.a(lifetime.o)(.text+0x30): R_ARM_TLS_LE32 relocation not permitted in shared object /opt/arm-unknown-linux-gnueabihf/bin/../lib/gcc/arm-unknown-linux-gnueabihf/5.2.0/../../../../arm-unknown-linux-gnueabihf/bin/ld: /opt/arm-unknown-linux-gnueabihf/bin/../lib/gcc/arm-unknown-linux-gnueabihf/5.2.0/../../../../arm-unknown-linux-gnueabihf/lib/libgphobos2.a(lifetime.o)(.text+0x2e0): R_ARM_TLS_LE32 relocation not permitted in shared object /opt/arm-unknown-linux-gnueabihf/bin/../lib/gcc/arm-unknown-linux-gnueabihf/5.2.0/../../../../arm-unknown-linux-gnueabihf/bin/ld: /opt/arm-unknown-linux-gnueabihf/bin/../lib/gcc/arm-unknown-linux-gnueabihf/5.2.0/../../../../arm-unknown-linux-gnueabihf/lib/libgphobos2.a(lifetime.o)(.text+0x3f0): R_ARM_TLS_LE32 relocation not permitted in shared object /opt/arm-unknown-linux-gnueabihf/bin/../lib/gcc/arm-unknown-linux-gnueabihf/5.2.0/../../../../arm-unknown-linux-gnueabihf/bin/ld: /opt/arm-unknown-linux-gnueabihf/bin/../lib/gcc/arm-unknown-linux-gnueabihf/5.2.0/../../../../arm-unknown-linux-gnueabihf/lib/libgphobos2.a(lifetime.o)(.text+0x488): R_ARM_TLS_LE32 relocation not permitted in shared object /opt/arm-unknown-linux-gnueabihf/bin/../lib/gcc/arm-unknown-linux-gnueabihf/5.2.0/../../../../arm-unknown-linux-gnueabihf/bin/ld: /opt/arm-unknown-linux-gnueabihf/bin/../lib/gcc/arm-unknown-linux-gnueabihf/5.2.0/../../../../arm-unknown-linux-gnueabihf/lib/libgphobos2.a(tlsgc.o)(.text+0x28): R_ARM_TLS_LE32 relocation not permitted in shared object /opt/arm-unknown-linux-gnueabihf/bin/../lib/gcc/arm-unknown-linux-gnueabihf/5.2.0/../../../../arm-unknown-linux-gnueabihf/bin/ld: /opt/arm-unknown-linux-gnueabihf/bin/../lib/gcc/arm-unknown-linux-gnueabihf/5.2.0/../../../../arm-unknown-linux-gnueabihf/lib/libgphobos2.a(deh.o)(.text+0x158): R_ARM_TLS_LE32 relocation not permitted in shared object /opt/arm-unknown-linux-gnueabihf/bin/../lib/gcc/arm-unknown-linux-gnueabihf/5.2.0/../../../../arm-unknown-linux-gnueabihf/bin/ld: /opt/arm-unknown-linux-gnueabihf/bin/../lib/gcc/arm-unknown-linux-gnueabihf/5.2.0/../../../../arm-unknown-linux-gnueabihf/lib/libgphobos2.a(deh.o)(.text+0x22c): R_ARM_TLS_LE32 relocation not permitted in shared object /opt/arm-unknown-linux-gnueabihf/bin/../lib/gcc/arm-unknown-linux-gnueabihf/5.2.0/../../../../arm-unknown-linux-gnueabihf/bin/ld: /opt/arm-unknown-linux-gnueabihf/bin/../lib/gcc/arm-unknown-linux-gnueabihf/5.2.0/../../../../arm-unknown-linux-gnueabihf/lib/libgphobos2.a(deh.o)(.text+0x7e0): R_ARM_TLS_LE32 relocation not permitted in shared object /opt/arm-unknown-linux-gnueabihf/bin/../lib/gcc/arm-unknown-linux-gnueabihf/5.2.0/../../../../arm-unknown-linux-gnueabihf/bin/ld: /opt/arm-unknown-linux-gnueabihf/bin/../lib/gcc/arm-unknown-linux-gnueabihf/5.2.0/../../../../arm-unknown-linux-gnueabihf/lib/libgphobos2.a(thread.o)(.text+0x4c): R_ARM_TLS_LE32 relocation not permitted in shared object /opt/arm-unknown-linux-gnueabihf/bin/../lib/gcc/arm-unknown-linux-gnueabihf/5.2.0/../../../../arm-unknown-linux-gnueabihf/bin/ld: /opt/arm-unknown-linux-gnueabihf/bin/../lib/gcc/arm-unknown-linux-gnueabihf/5.2.0/../../../../arm-unknown-linux-gnueabihf/lib/libgphobos2.a(thread.o)(.text+0x50): R_ARM_TLS_LE32 relocation not permitted in shared object /opt/arm-unknown-linux-gnueabihf/bin/../lib/gcc/arm-unknown-linux-gnueabihf/5.2.0/../../../../arm-unknown-linux-gnueabihf/bin/ld: /opt/arm-unknown-linux-gnueabihf/bin/../lib/gcc/arm-unknown-linux-gnueabihf/5.2.0/../../../../arm-unknown-linux-gnueabihf/lib/libgphobos2.a(thread.o)(.text+0x3b8): R_ARM_TLS_LE32 relocation not permitted in shared object /opt/arm-unknown-linux-gnueabihf/bin/../lib/gcc/arm-unknown-linux-gnueabihf/5.2.0/../../../../arm-unknown-linux-gnueabihf/bin/ld:
Re: Let dmd or ldc be easy to setup on Ubuntu
On Tuesday, 22 December 2015 at 14:37:21 UTC, Rikki Cattermole wrote: I'm confused. The commands listed e.g. $ sudo wget http://netcologne.dl.sourceforge.net/project/d-apt/files/d-apt.list -O /etc/apt/sources.list.d/d-apt.list $ sudo apt-get update && sudo apt-get -y --allow-unauthenticated install --reinstall d-apt-keyring && sudo apt-get update Should work. If it does not, please post output. Sorry, it works,but can't get any useful info.
Re: Let dmd or ldc be easy to setup on Ubuntu
On Tuesday, 22 December 2015 at 15:08:20 UTC, FrankLike wrote: On Tuesday, 22 December 2015 at 14:37:21 UTC, Rikki Cattermole wrote: I'm confused. The commands listed e.g. $ sudo wget http://netcologne.dl.sourceforge.net/project/d-apt/files/d-apt.list -O /etc/apt/sources.list.d/d-apt.list $ sudo apt-get update && sudo apt-get -y --allow-unauthenticated install --reinstall d-apt-keyring && sudo apt-get update Should work. If it does not, please post output. Sorry, it works,but can't get any useful info. sudo apt-get install dmd ← it's error. Now I setup by double click the 'dmd_2.069.2-0-amd64.deb' file,and setup it. then sudo apt-get install dub it's ok.
Let dmd or ldc be easy to setup on Ubuntu
Now,we can't setup dmd or ldc like this: sudo apt-get install dmd sudo apt-get install ldc2 If I set 'The Installation Source' is : deb http://downloads.dlang.org/releases/2015/ main But it's error,why? Thank you.
Re: Let dmd or ldc be easy to setup on Ubuntu
On Tuesday, 22 December 2015 at 14:11:29 UTC, Rikki Cattermole wrote: On 23/12/15 3:09 AM, FrankLike wrote: Now,we can't setup dmd or ldc like this: sudo apt-get install dmd sudo apt-get install ldc2 If I set 'The Installation Source' is : deb http://downloads.dlang.org/releases/2015/ main But it's error,why? Thank you. dlang.org does not host a apt repository. There is one on sourceforge for just this however. http://d-apt.sourceforge.net/ deb http://d-apt.sourceforge.net/ trusty main 'The Installation Source' is ok,but in Terminal it's error. Do you have some detail about 'The Installation Source' for dmd or ldc? Thank you.
Re: How to use Fiber?
On Wednesday, 25 February 2015 at 14:47:37 UTC, Dejan Lekic wrote: On the Articles page on D Wiki ( http://wiki.dlang.org/Articles ) you have this link: http://octarineparrot.com/article/view/getting-more-fiber-in-your-diet It is probably the best article about using fibers in D that I have seen so far. Thank you,I mean concurrency. I've get answer by book 'programming in D'.
How to use Fiber?
There is a int[] ,how to use the Fiber execute it ? Such as : import std.stdio; import core.thread; class DerivedFiber : Fiber { this() { super( run ); } private : void run() { printf( Derived fiber running.\n ); faa(); } } int[] v; void ftread() { DerivedFiber work = new DerivedFiber(); writeln( will call ); work.call(); writeln( stop call ); } void faa() { writeln( start ); //Fiber.yield(); writeln( start yield ); foreach(c;v) { writeln( current n is ,c ); } } void main() { int n=1; while(n=10_001) { v~=n; n+=5000; } printf( Execution returned to calling context.\n ); ftread(); } -end I dont's think it's a good work. How about you? Thank you.
Re: Deprecation process documented?
On Tuesday, 24 February 2015 at 07:49:55 UTC, Jacob Carlborg wrote: Can you help me about 'Concurrency in D'? Thank you. http://forum.dlang.org/thread/dugsyhsswoovgywpl...@forum.dlang.org Some people think rust is better ,but I think D is better. But I don't know that how to use 'Concurrency in D',Can you help me ? Thank you.
Need help with concurrency
Hello,everyone,what is a better way with concurrency? http://forum.dlang.org/thread/urqxiaairpnrjggqd...@forum.dlang.org Thank you.
Re: How to write asia characters on console?
On Sunday, 8 February 2015 at 05:57:31 UTC, Lave Zhang wrote: Hi, My first D program is like this: --- import std.stdio; void main(string[] args) { dstring s1 = hello你好d; writeln(s1); } --- But the output is not correct(and my console codepage is 936): C:\D\dmd2\samples\ddmd hello.d -offilename hello.exe C:\D\dmd2\samples\dhello.exe hello浣犲ソ thanks. add such code is better than use 'chcp 65001' for exe's consumer. extern(C) int setlocale(int, char*); static this() { import core.stdc.wchar_; fwide(core.stdc.stdio.stdout, 1); setlocale(0, cast(char*)china); } --- module cnsetlocale; import std.stdio; extern(C) int setlocale(int, char*); static this() { import core.stdc.wchar_; fwide(core.stdc.stdio.stdout, 1); setlocale(0, cast(char*)china); } void main() { printf(a!!\n); writefln(%s,hello,中文!!); string msg=你好!!; string msg1=去看电影吗?; string msg2=是吗?; a(msg2); writefln(the string is %s \n %s %s and %s,msg,msg1,msg2,你要去哪儿玩?); writeln(公园?, 电影院?); readln; } void a(string msg2) { writefln(the string is %s,msg2); } dmd hello //only such simple 'printf' is error,but for consumer is better,because they don't need change any things,so don't use the 'printf' function . If only test for yourself,you can add such codes for your main : import std.process; executeShell(chcp 65001); then,change the Font to 'Lucida Console' after 'dmd hello' ( if you don't want use 65001,then open cmd,chcp 936 ,and change the Font to '宋体') ok.
Do you have a better way to remove element from a array?
Now I can remove element from a array: module removeOne; import std.stdio; import std.array; import std.algorithm; void main() { int[] aa =[1,2,3,4,5]; aa = aa[0..2] ~aa[3..$]; writeln(aa); //ok remove(aa,1); writeln(aa);//get error result } You will found the error result,why? Thank you.
Re: Do you have a better way to remove element from a array?
On Thursday, 5 February 2015 at 13:29:30 UTC, Tobias Pankrath wrote: Works as designed: http://dlang.org/phobos/std_algorithm.html#.remove Thank you. aa = remove(aa,1);//ok but how to remove one item? such as aa.remove(2) ?
Re: Do you have a better way to remove element from a array?
On Thursday, 5 February 2015 at 14:09:10 UTC, bearophile wrote: Tobias Pankrath: Works as designed: http://dlang.org/phobos/std_algorithm.html#.remove Unfortunately it's one of the worst designed functions of Phobos: https://issues.dlang.org/show_bug.cgi?id=10959 Bye, bearophile Yes,A.remove(item) or A.removeAt(index) They is better than now.
Re: Do you have a better way to remove element from a array?
On Thursday, 5 February 2015 at 14:09:10 UTC, bearophile wrote: Yes,A.remove(item) or A.removeAt(index) They are better than now.
Re: Visual D prematurely closes the console
On Monday, 2 February 2015 at 22:58:06 UTC, Dennis Ritchie wrote: On Monday, 2 February 2015 at 22:14:36 UTC, Ali Çehreli wrote: http://stackoverflow.com/questions/454681/how-to-keep-the-console-window-open-in-visual-c Not helped: http://i.imgur.com/4EG84YK.png Use monoD do a hello world ,you will get the answer.
Re: dco how to specify Jpath?
On Friday, 9 January 2015 at 16:40:37 UTC, FrankLike wrote: https://github.com/FrankLIKE/dco you can use dco by local.ini( create it by dco -ini ),config your info into local.ini. modify the ';dflag=' to 'dflags=-JyourPath' Thank you.
Re: Why do the same work about 'IndexOfAny' and 'indexOf' function?
On Friday, 9 January 2015 at 15:57:21 UTC, ketmar via Digitalmars-d-learn wrote: On Fri, 09 Jan 2015 15:36:21 + FrankLike via Digitalmars-d-learn digitalmars-d-learn@puremagic.com wrote: On Friday, 9 January 2015 at 14:03:21 UTC, ketmar via Digitalmars-d-learn wrote: On Fri, 09 Jan 2015 13:54:00 + Robert burner Schadek via Digitalmars-d-learn digitalmars-d-learn@puremagic.com wrote: On Friday, 9 January 2015 at 13:25:17 UTC, ketmar via Digitalmars-d-learn wrote: if you *really* concerned with speed here, you'd better consider using regular expressions. as regular expression can be precompiled and then search for multiple words with only one pass over the source string. i believe that std.regex will use variation of Thomson algorithm for regular expressions when it is able to do so. IMO that is not sound advice. Creating the state machine and running will be more costly than using canFind or indexOf how basically only compare char by char. If speed is really need use strstr and look if it uses sse to compare multiple chars at a time. Anyway benchmark and then benchmark some more. std.regex can use CTFE to compile regular expressions (yet it sometimes slower than non-CTFE variant), and i mean that we compile regexp before doing alot of searches, not before each single search. if you have alot of words to match or alot of strings to check, regexp can give a huge boost. sure, it all depends of code patterns. import std.regex; auto ctr = ctRegex!(`(home|office|sea|plane)`); auto c2 = !matchFirst(He is in the sea., ctr).empty; -- Test by auto r = benchmark!(f0,f1, f2, f3,f4,f5)(10_); Result is : filter is 42ms 85us findAmong is 37ms 268us foreach indexOf is 37ms 841us canFind is 13ms canFind indexOf is 39ms 455us ctRegex is 138ms 1. stop doing captures in regexp, this will speedup the comparison. 2. your sample is very artificial. i was talking about alot more keywords and alot longer strings. sorry, i wasn't told that clear enough. Yes. regex doing 'a lot more keywords and a lot longer strings' will be better. Thank you.
Re: Why do the same work about 'IndexOfAny' and 'indexOf' function?
On Friday, 9 January 2015 at 14:03:21 UTC, ketmar via Digitalmars-d-learn wrote: On Fri, 09 Jan 2015 13:54:00 + Robert burner Schadek via Digitalmars-d-learn digitalmars-d-learn@puremagic.com wrote: On Friday, 9 January 2015 at 13:25:17 UTC, ketmar via Digitalmars-d-learn wrote: if you *really* concerned with speed here, you'd better consider using regular expressions. as regular expression can be precompiled and then search for multiple words with only one pass over the source string. i believe that std.regex will use variation of Thomson algorithm for regular expressions when it is able to do so. IMO that is not sound advice. Creating the state machine and running will be more costly than using canFind or indexOf how basically only compare char by char. If speed is really need use strstr and look if it uses sse to compare multiple chars at a time. Anyway benchmark and then benchmark some more. std.regex can use CTFE to compile regular expressions (yet it sometimes slower than non-CTFE variant), and i mean that we compile regexp before doing alot of searches, not before each single search. if you have alot of words to match or alot of strings to check, regexp can give a huge boost. sure, it all depends of code patterns. import std.regex; auto ctr = ctRegex!(`(home|office|sea|plane)`); auto c2 = !matchFirst(He is in the sea., ctr).empty; -- Test by auto r = benchmark!(f0,f1, f2, f3,f4,f5)(10_); Result is : filter is 42ms 85us findAmong is 37ms 268us foreach indexOf is 37ms 841us canFind is 13ms canFind indexOf is 39ms 455us ctRegex is 138ms
Re: Why do the same work about 'IndexOfAny' and 'indexOf' function?
iday, 9 January 2015 at 07:41:07 UTC, ketmar via Digitalmars-d-learn wrote: On Fri, 09 Jan 2015 07:10:14 + FrankLike via Digitalmars-d-learn digitalmars-d-learn@puremagic.com wrote: On Thursday, 8 January 2015 at 15:15:59 UTC, Robert burner Schadek wrote: use canFind like such: bool a = canFind(strs,s) = 1; let the compiler figger out what the types of the parameter are. canFind is work for such as : bool x = canFind([exe,lib,a,dll],a ); but can't work for canFind([exe,lib,a,dll],hello.lib); So I very want to let the function 'indexOfAny' do the same work. Thank you. Frank be creative! ;-) import std.algorithm, std.stdio; void main () { string fname = hello.exe; import std.path : extension; if (findAmong([fname.extension], [.exe, .lib, .a, .dll]).length) { writeln(got it!); } else { writeln(alas...); } } note the dots in extension list. yet you can do it even easier: import std.algorithm, std.stdio; void main () { string fname = hello.exe; import std.path : extension; if ([.exe, .lib, .a, .dll].canFind(fname.extension)) { writeln(got it!); } else { writeln(alas...); } } as you obviously interested in extension here -- check only that part! ;-) Sorry,it's only a example .Thank you work hard,but it's not what I want. 'indexOfAny ' function should do this work. ”he is at home ,[home,office,”sea,plane], in C#,IndexOfAny can do it,what about in D? I know findAmong can do it,but use two function . Thank you.
Re: dco how to specify Jpath?
On Sunday, 21 December 2014 at 07:43:14 UTC, FrankLike wrote: On Thursday, 20 November 2014 at 10:48:17 UTC, Suliman wrote: I am playing with dco. And it's look very helpful for tiny projects. I can't understand is it's possible to add to dco.ini Jpath? I am talking about something like: dflags=-JD:\code\d\App1\source\ but when I am trying to compile code with dco it's can't find import. I looked at source code and it's look like it's do not support dflags... https://github.com/FrankLIKE/dco/tree/master/source In dco.ini importPath= -I..\\source // modity it to your source In dco 0.1.0,you can get the 'local.ini' by 'dco -ini'. You can config project in local.
Re: Why do the same work about 'IndexOfAny' and 'indexOf' function?
be creative! ;-) import std.algorithm, std.stdio; void main () { string s = he is at plane; if (findAmong!((string a, string b) = b.canFind(a))([s], [home, office, sea, plane]).length) { writeln(got it!); } else { writeln(alas...); } } or: import std.algorithm, std.stdio; void main () { string s = he is at home; if ([home, office, sea, plane].canFind!((a, string b) = b.canFind(a))(s)) { writeln(got it!); } else { writeln(alas...); } } The code is the best,and it's better than indexOfAny in C#: import std.algorithm, std.stdio; void main () { auto places = [ home, office, sea,plane]; auto strWhere = He is in the sea.; auto where = places.canFind!(a = strWhere.canFind(a)); writeln(Result is ,where); }
Re: Why do the same work about 'IndexOfAny' and 'indexOf' function?
On Friday, 9 January 2015 at 10:02:53 UTC, ketmar via Digitalmars-d-learn wrote: import std.algorithm, std.stdio; void main () { string s = he is at home; if ([home, office, sea, plane].canFind!((a, string b) = b.canFind(a))(s)) { writeln(got it!); } else { writeln(alas...); } } Thank you. The code is the best,and it's better than indexOfAny in C#: /* places.canFind!(a = strWhere.canFind(a)); */ By auto r = benchmark!(f0,f1, f2, f3,f4)(10_); Result is : filter is 42ms 85us findAmong is 37ms 268us foreach indexOf is 37ms 841us canFind is 13ms canFind indexOf is 39ms 455us ---5 functions-- import std.stdio, std.algorithm,std.string; auto places = [ home, office, sea,plane]; auto strWhere = He is in the sea.; void main() { auto where = places.filter!(a = strWhere.indexOf(a) != -1); writeln(0 Result is ,where); auto where1 = findAmong(places,strWhere); writeln(1 Result is ,where1); string where2; foreach(a;places) { if(strWhere.indexOf(a) !=-1) { where2 = a; break; } } writeln(2 Result is ,where2); auto where3 = places.canFind!(a = strWhere.canFind(a)); writeln(3 Result is ,where3); auto where4 = places.canFind!(a = strWhere.indexOf(a) != -1); writeln(4 Result is ,where4); } Frank
Re: Why do the same work about 'IndexOfAny' and 'indexOf' function?
On Thursday, 8 January 2015 at 15:15:59 UTC, Robert burner Schadek wrote: use canFind like such: bool a = canFind(strs,s) = 1; let the compiler figger out what the types of the parameter are. canFind is work for such as : bool x = canFind([exe,lib,a,dll],a ); but can't work for canFind([exe,lib,a,dll],hello.lib); So I very want to let the function 'indexOfAny' do the same work. Thank you. Frank
Re: How to prevent sensitive information is displayed when the extension 'exe' is modified to 'txt' on windows?
On Thursday, 8 January 2015 at 10:11:38 UTC, Danny wrote: Hi, sigh, so I have to annoy you with the truth... On Tuesday, 6 January 2015 at 17:15:28 UTC, FrankLike wrote: How to prevent sensitive information is displayed when the extension 'exe' is modified to 'txt' on windows? By not putting it in in the first place. Everything else is no good in the end. Encryption, xoring, everything is almost useless for that purpose. If you build a exe ,such as which can get Data from DataBase,when you modify the exe's extension to 'txt', and you open it by notepad.exe (on windows),you will find the info,it's important for me,so how to stop the info to display ? Do you mean find the password? (I don't see that field in your example) Remove the password field and let the operating system care of auth forwarding to the database server. Then create all the users on your database and make sure to set their permissions right. That way, your computer and the database server will negotiate whether they let the user in and it's their problem. I always do it like that. Also, that way, you already have existing permission management tools (in the dbms). If you don't want to grant them permission on the table, don't. Create a view with the harmless info and grant them permission to that. Likewise, if you want to completely abstract it away, create stored procedures in the database as the interface for your app and grant them only permission to execute them. Trusted_Connection=Yes\ Well, now I don't see what the problem you are trying to solve is. You are doing as outlined above already. So what is the problem you are trying to solve? 'Trusted_Connection=Yes' is for local DB(127.0.0.1) ,but for network ,must have the username and password. I have known how to do,but thank you.
Re: Why do the same work about 'IndexOfAny' and 'indexOf' function?
On Wednesday, 7 January 2015 at 17:08:55 UTC, H. S. Teoh via Digitalmars-d-learn wrote: Try this: http://dlang.org/phobos-prerelease/std_algorithm#.findAmong T You mean ? The result is not that I want to get! ---test.d-- import std.stdio, std.algorithm,std.string; auto ext =[exe,lib,a,dll]; auto strs = hello.exe; void main() { auto b = findAmong(ext,strs); writeln(b is ,b); } -result- b is [exe,lib,a,dll] note: 1. I only want to find the given string 'hello.exe' whether to include any a string in the [exe,lib,a,dll]. 2. I think the 'indexOfAny' function of string.d do the same work with 'indexOf',This is not as it should be. Frank
Re: Why do the same work about 'IndexOfAny' and 'indexOf' function?
On Wednesday, 7 January 2015 at 17:08:55 UTC, H. S. Teoh via Digitalmars-d-learn wrote: Try this: http://dlang.org/phobos-prerelease/std_algorithm#.findAmong T Thank you,it can work. but it's not what I want. ---test.d-- import std.stdio, std.algorithm,std.string; auto ext =[exe,lib,a,dll]; auto strs = hello.dll; void main() { auto b = findAmong(ext,strs); writeln(b is ,b); } -result- b is [dll] I think if 'indexOfAny' function of string.d do the work ,it should be ok. such as : auto b = hello.dll.indexOfAny([exe,lib,a,dll]); writeln(b is ,b); The result should be 'true',if it can work. Can you suggest 'phobos' to update 'indexOfAny' fuction? Thank you. Frank
Re: How to prevent sensitive information is displayed when the extension 'exe' is modified to 'txt' on windows?
On Wednesday, 7 January 2015 at 11:00:54 UTC, Laeeth Isharc wrote: What you want is some kind of code obfuscation. The easiest thing for you is to use exe compression. It is not going to stop a dedicated attacker, but ordinary people will not be able to extract any information from it. And I guess as an alternative to the utility you linked to, you could use D's ability to run code at compile time to encrypt your sensitive literals during compilation and then decrypt them on program startup. Thank you,but it's not easy to do,can you show me some detail?
Re: Why do the same work about 'IndexOfAny' and 'indexOf' function?
On Wednesday, 7 January 2015 at 15:11:57 UTC, John Colvin wrote: On Wednesday, 7 January 2015 at 14:54:51 UTC, FrankLike wrote: I want to know whether the string strs contains 'exe','dll','a','lib',in c#, I can do : int index = indexofany(strs,[exe,dll,a,lib]); but in D: I must to do like this: findStr(strs,[exe,lib,dll,a])) bool findStr(string strIn,string[] strFind) { bool bFind = false; foreach(str;strFind) { if(strIn.indexOf(str) !=-1) { bFind = true; break; } } return bFind; } phobos 's string.d can add this some function to let the indexOfAny to better? Thank you. Frank std.algorithm.canFind will do what you want, including telling you which of [exe,lib,dll,a] was found. If you need to know where in strs it was found as well, you can use std.algorithm.find Sorry, 'std.algorithm.find' do this work:Finds an individual element in an input range,and it's Parameters: InputRange haystack The range searched in. Element needle The element searched for. But now I want to know in a string (like hello.exe or hello.a,or hello.dll or hello.lib ) whether contains any of them: [exe,dll,a,lib]. My function 'findStr' works fine. If the string.d's function 'indexOfAny' do this work,it will happy.(but now 'IndexOfAny' and 'indexOf' do the same work) . Thank you.
Why do the same work about 'IndexOfAny' and 'indexOf' function?
I want to know whether the string strs contains 'exe','dll','a','lib',in c#, I can do : int index = indexofany(strs,[exe,dll,a,lib]); but in D: I must to do like this: findStr(strs,[exe,lib,dll,a])) bool findStr(string strIn,string[] strFind) { bool bFind = false; foreach(str;strFind) { if(strIn.indexOf(str) !=-1) { bFind = true; break; } } return bFind; } phobos 's string.d can add this some function to let the indexOfAny to better? Thank you. Frank
Re: Why do the same work about 'IndexOfAny' and 'indexOf' function?
std.algorithm.find has several overloads, one of which takes multiple needles. The same is true for std.algorithm.canFind Quoting from the relevant std.algorithm.find overload docs: Finds two or more needles into a haystack. string strs =hello.exe; string[] s =[lib,exe,a,dll]; auto a = canFind!(string,string[])(strs,s); writeln(a is ,a); string strsb =hello.; auto b = canFind!(string,string[])(strsb,s); writeln(b is ,b); Get error: does not match template declaration canFind(alias pred = a ==b) you can test it. Thank you.
Re: How to prevent sensitive information is displayed when the extension 'exe' is modified to 'txt' on windows?
I would keep the encryption inside a template to prevent users from assigning it to a variable without triggering CTFE. Why would that be a problem? Because the plain text will be in the object file. http://dpaste.dzfl.pl/95b17fff42c6 Take a look at the object file and you will find “Sailor Moon” in it - which is what we wanted to avoid in the first place. I'd prefer the API that prevents something like that. Yes.
Re: How to prevent sensitive information is displayed when the extension 'exe' is modified to 'txt' on windows?
How about: http://dpaste.dzfl.pl/706ab2db9ce1 Thanks.