Is there anyone on the official website who is willing to submit this?

2019-06-04 Thread FrankLike via Digitalmars-d-learn

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?

2019-04-05 Thread FrankLike via Digitalmars-d-learn

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?

2019-04-05 Thread FrankLike via Digitalmars-d-learn

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?

2019-01-29 Thread FrankLike via Digitalmars-d-learn

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?

2019-01-29 Thread FrankLike via Digitalmars-d-learn

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.

2019-01-27 Thread FrankLike via Digitalmars-d-learn

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.

2019-01-26 Thread FrankLike via Digitalmars-d-learn

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.

2019-01-25 Thread FrankLike via Digitalmars-d-learn

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.

2019-01-25 Thread FrankLike via Digitalmars-d-learn

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.

2019-01-25 Thread FrankLike via Digitalmars-d-learn

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.

2019-01-24 Thread FrankLike via Digitalmars-d-learn

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.

2019-01-24 Thread FrankLike via Digitalmars-d-learn

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.

2019-01-24 Thread FrankLike via Digitalmars-d-learn

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.

2019-01-23 Thread FrankLike via Digitalmars-d-learn

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?

2019-01-23 Thread FrankLike via Digitalmars-d-learn
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?

2019-01-23 Thread FrankLike via Digitalmars-d-learn
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?

2019-01-22 Thread FrankLike via Digitalmars-d-learn

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?

2019-01-22 Thread FrankLike via Digitalmars-d-learn

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?

2019-01-22 Thread FrankLike via Digitalmars-d-learn

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?

2019-01-22 Thread FrankLike via Digitalmars-d-learn

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?

2019-01-22 Thread FrankLike via Digitalmars-d-learn

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?

2019-01-22 Thread FrankLike via Digitalmars-d-learn

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?

2019-01-22 Thread FrankLike via Digitalmars-d-learn

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.

2018-10-17 Thread FrankLike via Digitalmars-d-learn
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.

2018-10-17 Thread FrankLike via Digitalmars-d-learn

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.

2018-02-25 Thread FrankLike via Digitalmars-d-learn

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

2018-02-25 Thread FrankLike via Digitalmars-d-learn

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.

2018-02-25 Thread FrankLike via Digitalmars-d-learn

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.

2018-02-24 Thread FrankLike via Digitalmars-d-learn

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.

2018-02-24 Thread FrankLike via Digitalmars-d-learn
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.

2018-02-24 Thread FrankLike via Digitalmars-d-learn

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.

2018-02-22 Thread FrankLike via Digitalmars-d-learn
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.

2018-02-22 Thread FrankLike via Digitalmars-d-learn
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.

2018-02-22 Thread FrankLike via Digitalmars-d-learn

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.

2018-02-22 Thread FrankLike via Digitalmars-d-learn
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.

2018-02-22 Thread FrankLike via Digitalmars-d-learn

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.

2018-02-22 Thread FrankLike via Digitalmars-d-learn
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.

2018-02-22 Thread FrankLike via Digitalmars-d-learn
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.

2018-02-22 Thread FrankLike via Digitalmars-d-learn

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.

2018-02-05 Thread FrankLike via Digitalmars-d-learn

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.

2018-02-05 Thread FrankLike via Digitalmars-d-learn

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.

2018-02-05 Thread FrankLike via Digitalmars-d-learn

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.

2018-02-04 Thread FrankLike via Digitalmars-d-learn

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.

2018-02-04 Thread FrankLike via Digitalmars-d-learn

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.

2018-02-04 Thread FrankLike via Digitalmars-d-learn
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.

2018-01-14 Thread FrankLike via Digitalmars-d-learn
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.

2018-01-13 Thread FrankLike via Digitalmars-d-learn

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.

2018-01-13 Thread FrankLike via Digitalmars-d-learn
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.

2018-01-13 Thread FrankLike via Digitalmars-d-learn

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.

2018-01-13 Thread FrankLike via Digitalmars-d-learn
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.

2018-01-13 Thread FrankLike via Digitalmars-d-learn

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

2017-12-21 Thread FrankLike via Digitalmars-d-learn

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

2017-02-01 Thread FrankLike via Digitalmars-d-learn

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?

2016-03-05 Thread FrankLike via Digitalmars-d-learn

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?

2016-03-02 Thread FrankLike via Digitalmars-d-learn

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?

2015-12-28 Thread FrankLike via Digitalmars-d-learn

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?

2015-12-28 Thread FrankLike via Digitalmars-d-learn

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?

2015-12-28 Thread FrankLike via Digitalmars-d-learn

 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?

2015-12-28 Thread FrankLike via Digitalmars-d-learn

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?

2015-12-28 Thread FrankLike via Digitalmars-d-learn
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?

2015-12-28 Thread FrankLike via Digitalmars-d-learn

Answer is here:
http://forum.dlang.org/thread/txvntyahlaewutzzw...@forum.dlang.org




Re: GDC build wiringPi for 'Raspberry Pi',here is error info

2015-12-28 Thread FrankLike via Digitalmars-d-learn

Answer is here:
http://forum.dlang.org/thread/txvntyahlaewutzzw...@forum.dlang.org


Re: How to config the GDC on linux target for ARM linux?

2015-12-28 Thread FrankLike via Digitalmars-d-learn

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?

2015-12-27 Thread FrankLike via Digitalmars-d-learn

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?

2015-12-27 Thread FrankLike via Digitalmars-d-learn

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?

2015-12-27 Thread FrankLike via Digitalmars-d-learn
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?

2015-12-26 Thread FrankLike via Digitalmars-d-learn

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

2015-12-26 Thread FrankLike via Digitalmars-d-learn
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

2015-12-26 Thread FrankLike via Digitalmars-d-learn
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

2015-12-22 Thread FrankLike via Digitalmars-d-learn
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

2015-12-22 Thread FrankLike via Digitalmars-d-learn

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

2015-12-22 Thread FrankLike via Digitalmars-d-learn

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

2015-12-22 Thread FrankLike via Digitalmars-d-learn
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?

2015-02-25 Thread FrankLike via Digitalmars-d-learn

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?

2015-02-24 Thread FrankLike via Digitalmars-d-learn

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?

2015-02-24 Thread FrankLike via Digitalmars-d-learn
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

2015-02-24 Thread FrankLike via Digitalmars-d-learn

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?

2015-02-12 Thread FrankLike via Digitalmars-d-learn

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?

2015-02-05 Thread FrankLike via Digitalmars-d-learn

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?

2015-02-05 Thread FrankLike via Digitalmars-d-learn
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?

2015-02-05 Thread FrankLike via Digitalmars-d-learn

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?

2015-02-05 Thread FrankLike via Digitalmars-d-learn

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

2015-02-02 Thread FrankLike via Digitalmars-d-learn

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?

2015-02-01 Thread FrankLike via Digitalmars-d-learn

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?

2015-01-09 Thread FrankLike via Digitalmars-d-learn
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?

2015-01-09 Thread FrankLike via Digitalmars-d-learn
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?

2015-01-09 Thread FrankLike via Digitalmars-d-learn
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?

2015-01-09 Thread FrankLike via Digitalmars-d-learn

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?

2015-01-09 Thread FrankLike via Digitalmars-d-learn



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?

2015-01-09 Thread FrankLike via Digitalmars-d-learn
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?

2015-01-08 Thread FrankLike via Digitalmars-d-learn
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?

2015-01-08 Thread FrankLike via Digitalmars-d-learn

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?

2015-01-08 Thread FrankLike via Digitalmars-d-learn
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?

2015-01-08 Thread FrankLike via Digitalmars-d-learn
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?

2015-01-07 Thread FrankLike via Digitalmars-d-learn

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?

2015-01-07 Thread FrankLike via Digitalmars-d-learn

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?

2015-01-07 Thread FrankLike via Digitalmars-d-learn
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?

2015-01-07 Thread FrankLike via Digitalmars-d-learn


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?

2015-01-07 Thread FrankLike via Digitalmars-d-learn


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?

2015-01-07 Thread FrankLike via Digitalmars-d-learn



How about:
http://dpaste.dzfl.pl/706ab2db9ce1


Thanks.


  1   2   >